diff --git a/.claude/config/hw_dict.json b/.claude/config/hw_dict.json new file mode 100644 index 0000000..1e49755 --- /dev/null +++ b/.claude/config/hw_dict.json @@ -0,0 +1,1814 @@ +{ + "CSP07-20": [ + { + "title": "CSP07-20A", + "id": "69ad012827e54d3ad7ef513a" + }, + { + "title": "CSP07-20B", + "id": "69ad012a27e54d3ad7ef514d" + }, + { + "title": "CSP07-20C", + "id": "69ad012d27e54d3ad7ef5160" + } + ], + "CSP07-19": [ + { + "title": "CSP07-19A", + "id": "69ad012827e54d3ad7ef5139" + }, + { + "title": "CSP07-19B", + "id": "69ad012a27e54d3ad7ef514c" + }, + { + "title": "CSP07-19C", + "id": "69ad012c27e54d3ad7ef515f" + } + ], + "CSP07-18": [ + { + "title": "CSP07-18A", + "id": "69ad012827e54d3ad7ef5138" + }, + { + "title": "CSP07-18B", + "id": "69ad012a27e54d3ad7ef514b" + }, + { + "title": "CSP07-18C", + "id": "69ad012c27e54d3ad7ef515e" + } + ], + "CSP07-17": [ + { + "title": "CSP07-17A", + "id": "69ad012827e54d3ad7ef5137" + }, + { + "title": "CSP07-17B", + "id": "69ad012a27e54d3ad7ef514a" + }, + { + "title": "CSP07-17C", + "id": "69ad012c27e54d3ad7ef515d" + } + ], + "CSP07-16": [ + { + "title": "CSP07-16A", + "id": "69ad012827e54d3ad7ef5136" + }, + { + "title": "CSP07-16B", + "id": "69ad012a27e54d3ad7ef5149" + }, + { + "title": "CSP07-16C", + "id": "69ad012c27e54d3ad7ef515c" + } + ], + "CSP07-15": [ + { + "title": "CSP07-15A", + "id": "69ad012827e54d3ad7ef5135" + }, + { + "title": "CSP07-15B", + "id": "69ad012a27e54d3ad7ef5148" + }, + { + "title": "CSP07-15C", + "id": "69ad012c27e54d3ad7ef515b" + } + ], + "CSP07-14": [ + { + "title": "CSP07-14A", + "id": "69ad012827e54d3ad7ef5134" + }, + { + "title": "CSP07-14B", + "id": "69ad012a27e54d3ad7ef5147" + }, + { + "title": "CSP07-14C", + "id": "69ad012c27e54d3ad7ef515a" + } + ], + "CSP07-13": [ + { + "title": "CSP07-13A", + "id": "69ad012727e54d3ad7ef5133" + }, + { + "title": "CSP07-13B", + "id": "69ad012a27e54d3ad7ef5146" + }, + { + "title": "CSP07-13C", + "id": "69ad012c27e54d3ad7ef5159" + } + ], + "CSP07-12": [ + { + "title": "CSP07-12A", + "id": "69ad012727e54d3ad7ef5132" + }, + { + "title": "CSP07-12B", + "id": "69ad012a27e54d3ad7ef5145" + }, + { + "title": "CSP07-12C", + "id": "69ad012c27e54d3ad7ef5158" + } + ], + "CSP07-11": [ + { + "title": "CSP07-11A", + "id": "69bd37fc8f8791c6f4b21640" + }, + { + "title": "CSP07-11B", + "id": "69bd37f18f8791c6f4b2163f" + } + ], + "CSP07-10": [ + { + "title": "CSP07-10A", + "id": "69bd37748f8791c6f4b215d0" + }, + { + "title": "CSP07-10B", + "id": "69bd378d8f8791c6f4b21615" + } + ], + "CSP07-09": [ + { + "title": "CSP07-09A", + "id": "69bd36d98f8791c6f4b2158d" + }, + { + "title": "CSP07-09B", + "id": "69bd36c68f8791c6f4b2158a" + } + ], + "CSP07-08": [ + { + "title": "CSP07-08A", + "id": "69bd364d8f8791c6f4b21516" + }, + { + "title": "CSP07-08B", + "id": "69bd365c8f8791c6f4b21526" + } + ], + "CSP07-07": [ + { + "title": "CSP07-07A", + "id": "69bd35998f8791c6f4b2149c" + }, + { + "title": "CSP07-07B", + "id": "69bd35c58f8791c6f4b214a2" + } + ], + "CSP07-06": [ + { + "title": "CSP07-06A", + "id": "69bd34b38f8791c6f4b21383" + }, + { + "title": "CSP07-06B", + "id": "69bd34f48f8791c6f4b213a4" + } + ], + "CSP07-05": [ + { + "title": "CSP07-05A", + "id": "69bd33e18f8791c6f4b212bc" + }, + { + "title": "CSP07-05B", + "id": "69bd341c8f8791c6f4b212d2" + } + ], + "CSP07-04": [ + { + "title": "CSP07-04A", + "id": "69bd32d08f8791c6f4b21218" + }, + { + "title": "CSP07-04B", + "id": "69bd32fd8f8791c6f4b2121b" + } + ], + "CSP07-03": [ + { + "title": "CSP07-03A", + "id": "69bd31cf8f8791c6f4b211e4" + }, + { + "title": "CSP07-03B", + "id": "69bd31df8f8791c6f4b211e8" + } + ], + "CSP07-02": [ + { + "title": "CSP07-02A", + "id": "69b3fa67947e4b9371839295" + }, + { + "title": "CSP07-02B", + "id": "69b3fabe947e4b93718393a5" + } + ], + "CSP07-01": [ + { + "title": "CSP07-01A", + "id": "69aa8ef127e54d3ad7edb897" + }, + { + "title": "CSP07-01B", + "id": "69aa8f3d27e54d3ad7edb898" + }, + { + "title": "CSP07-01C", + "id": "69aa8f9827e54d3ad7edb8c0" + } + ], + "CSP06-20": [ + { + "title": "CSP06-20A", + "id": "69ad012427e54d3ad7ef5114" + }, + { + "title": "CSP06-20B", + "id": "69ad012627e54d3ad7ef5127" + } + ], + "CSP06-19": [ + { + "title": "CSP06-19A", + "id": "69ad012427e54d3ad7ef5113" + }, + { + "title": "CSP06-19B", + "id": "69ad012627e54d3ad7ef5126" + } + ], + "CSP06-18": [ + { + "title": "CSP06-18A", + "id": "69ad012327e54d3ad7ef5112" + }, + { + "title": "CSP06-18B", + "id": "69ad012627e54d3ad7ef5125" + } + ], + "CSP06-17": [ + { + "title": "CSP06-17A", + "id": "69ad012327e54d3ad7ef5111" + }, + { + "title": "CSP06-17B", + "id": "69ad012627e54d3ad7ef5124" + } + ], + "CSP06-16": [ + { + "title": "CSP06-16A", + "id": "69ad012327e54d3ad7ef5110" + }, + { + "title": "CSP06-16B", + "id": "69ad012627e54d3ad7ef5123" + } + ], + "CSP06-15": [ + { + "title": "CSP06-15A", + "id": "69ad012327e54d3ad7ef510f" + }, + { + "title": "CSP06-15B", + "id": "69ad012527e54d3ad7ef5122" + } + ], + "CSP06-14": [ + { + "title": "CSP06-14A", + "id": "69ad012327e54d3ad7ef510e" + }, + { + "title": "CSP06-14B", + "id": "69ad012527e54d3ad7ef5121" + } + ], + "CSP06-13": [ + { + "title": "CSP06-13A", + "id": "69ad012327e54d3ad7ef510d" + }, + { + "title": "CSP06-13B", + "id": "69ad012527e54d3ad7ef5120" + } + ], + "CSP06-12": [ + { + "title": "CSP06-12A", + "id": "69ad012327e54d3ad7ef510c" + }, + { + "title": "CSP06-12B", + "id": "69ad012527e54d3ad7ef511f" + } + ], + "CSP06-11": [ + { + "title": "CSP06-11A", + "id": "69ad012327e54d3ad7ef510b" + }, + { + "title": "CSP06-11B", + "id": "69ad012527e54d3ad7ef511e" + } + ], + "CSP06-10": [ + { + "title": "CSP06-10A", + "id": "69ad012327e54d3ad7ef510a" + }, + { + "title": "CSP06-10B", + "id": "69ad012527e54d3ad7ef511d" + } + ], + "CSP06-09": [ + { + "title": "CSP06-09A", + "id": "69ad012227e54d3ad7ef5109" + }, + { + "title": "CSP06-09B", + "id": "69ad012527e54d3ad7ef511c" + } + ], + "CSP06-08": [ + { + "title": "CSP06-08A", + "id": "69ad012227e54d3ad7ef5108" + }, + { + "title": "CSP06-08B", + "id": "69ad012527e54d3ad7ef511b" + } + ], + "CSP06-07": [ + { + "title": "CSP06-07A", + "id": "69ad012227e54d3ad7ef5107" + }, + { + "title": "CSP06-07B", + "id": "69ad012427e54d3ad7ef511a" + } + ], + "CSP06-06": [ + { + "title": "CSP06-06A", + "id": "69ad012227e54d3ad7ef5106" + }, + { + "title": "CSP06-06B", + "id": "69ad012427e54d3ad7ef5119" + } + ], + "CSP06-05": [ + { + "title": "CSP06-05A", + "id": "69ad012227e54d3ad7ef5105" + }, + { + "title": "CSP06-05B", + "id": "69ad012427e54d3ad7ef5118" + } + ], + "CSP06-04": [ + { + "title": "CSP06-04A", + "id": "69ad012227e54d3ad7ef5104" + }, + { + "title": "CSP06-04B", + "id": "69ad012427e54d3ad7ef5117" + } + ], + "CSP06-03": [ + { + "title": "CSP06-03A", + "id": "69ad012227e54d3ad7ef5103" + }, + { + "title": "CSP06-03B", + "id": "69ad012427e54d3ad7ef5116" + } + ], + "CSP06-02": [ + { + "title": "CSP06-02A", + "id": "69ad012227e54d3ad7ef5102" + }, + { + "title": "CSP06-02B", + "id": "69ad012427e54d3ad7ef5115" + } + ], + "CSP06-01": [ + { + "title": "CSP06-01A", + "id": "69aa83f527e54d3ad7eda50f" + }, + { + "title": "CSP06-01B", + "id": "69aa848027e54d3ad7eda526" + }, + { + "title": "CSP06-01C", + "id": "69aa84f427e54d3ad7eda52e" + } + ], + "CSP05-20": [ + { + "title": "CSP05-20A", + "id": "69ad011d27e54d3ad7ef50db" + }, + { + "title": "CSP05-20B", + "id": "69ad011f27e54d3ad7ef50ee" + }, + { + "title": "CSP05-20C", + "id": "69ad012127e54d3ad7ef5101" + } + ], + "CSP05-19": [ + { + "title": "CSP05-19A", + "id": "69ad011d27e54d3ad7ef50da" + }, + { + "title": "CSP05-19B", + "id": "69ad011f27e54d3ad7ef50ed" + }, + { + "title": "CSP05-19C", + "id": "69ad012127e54d3ad7ef5100" + } + ], + "CSP05-18": [ + { + "title": "CSP05-18A", + "id": "69ad011d27e54d3ad7ef50d9" + }, + { + "title": "CSP05-18B", + "id": "69ad011f27e54d3ad7ef50ec" + }, + { + "title": "CSP05-18C", + "id": "69ad012127e54d3ad7ef50ff" + } + ], + "CSP05-17": [ + { + "title": "CSP05-17A", + "id": "69ad011d27e54d3ad7ef50d8" + }, + { + "title": "CSP05-17B", + "id": "69ad011f27e54d3ad7ef50eb" + }, + { + "title": "CSP05-17C", + "id": "69ad012127e54d3ad7ef50fe" + } + ], + "CSP05-16": [ + { + "title": "CSP05-16A", + "id": "69ad011d27e54d3ad7ef50d7" + }, + { + "title": "CSP05-16B", + "id": "69ad011f27e54d3ad7ef50ea" + }, + { + "title": "CSP05-16C", + "id": "69ad012127e54d3ad7ef50fd" + } + ], + "CSP05-15": [ + { + "title": "CSP05-15A", + "id": "69ad011d27e54d3ad7ef50d6" + }, + { + "title": "CSP05-15B", + "id": "69ad011f27e54d3ad7ef50e9" + }, + { + "title": "CSP05-15C", + "id": "69ad012127e54d3ad7ef50fc" + } + ], + "CSP05-14": [ + { + "title": "CSP05-14A", + "id": "69ad011c27e54d3ad7ef50d4" + }, + { + "title": "CSP05-14B", + "id": "69ad011f27e54d3ad7ef50e7" + }, + { + "title": "CSP05-14C", + "id": "69ad012127e54d3ad7ef50fa" + } + ], + "CSP05-13": [ + { + "title": "CSP05-13A", + "id": "69ad011c27e54d3ad7ef50d3" + }, + { + "title": "CSP05-13B", + "id": "69ad011e27e54d3ad7ef50e6" + }, + { + "title": "CSP05-13C", + "id": "69ad012127e54d3ad7ef50f9" + } + ], + "CSP05-12": [ + { + "title": "CSP05-12A", + "id": "69ad011c27e54d3ad7ef50d2" + }, + { + "title": "CSP05-12B", + "id": "69ad011e27e54d3ad7ef50e5" + }, + { + "title": "CSP05-12C", + "id": "69ad012027e54d3ad7ef50f8" + } + ], + "CSP05-11": [ + { + "title": "CSP05-11A", + "id": "69ad011c27e54d3ad7ef50d2" + }, + { + "title": "CSP05-11B", + "id": "69ad011e27e54d3ad7ef50e5" + }, + { + "title": "CSP05-11C", + "id": "69ad012027e54d3ad7ef50f8" + } + ], + "CSP05-10": [ + { + "title": "CSP05-10A", + "id": "69ad011c27e54d3ad7ef50d0" + } + ], + "CSP05-09": [ + { + "title": "CSP05-09A", + "id": "69ad011c27e54d3ad7ef50cf" + }, + { + "title": "CSP05-09B", + "id": "69ad011e27e54d3ad7ef50e2" + }, + { + "title": "CSP05-09C", + "id": "69ad012027e54d3ad7ef50f5" + } + ], + "CSP05-08": [ + { + "title": "CSP05-08A", + "id": "69ad011c27e54d3ad7ef50ce" + }, + { + "title": "CSP05-08B", + "id": "69ad011e27e54d3ad7ef50e1" + }, + { + "title": "CSP05-08C", + "id": "69ad012027e54d3ad7ef50f4" + } + ], + "CSP05-07": [ + { + "title": "CSP05-07A", + "id": "69ad011c27e54d3ad7ef50cd" + }, + { + "title": "CSP05-07B", + "id": "69ad011e27e54d3ad7ef50e0" + }, + { + "title": "CSP05-07C", + "id": "69ad012027e54d3ad7ef50f3" + } + ], + "CSP05-06": [ + { + "title": "CSP05-06A", + "id": "69ad011c27e54d3ad7ef50cc" + }, + { + "title": "CSP05-06B", + "id": "69ad011e27e54d3ad7ef50df" + }, + { + "title": "CSP05-06C", + "id": "69ad012027e54d3ad7ef50f2" + } + ], + "CSP05-05": [ + { + "title": "CSP05-05A", + "id": "69ad011b27e54d3ad7ef50cb" + }, + { + "title": "CSP05-05B", + "id": "69ad012027e54d3ad7ef50f1" + } + ], + "CSP05-04": [ + { + "title": "CSP05-04A", + "id": "69ad011e27e54d3ad7ef50de" + }, + { + "title": "CSP05-04B", + "id": "68eb17067fc8d7332da234fd" + } + ], + "CSP05-03": [ + { + "title": "CSP05-03A", + "id": "69ad011b27e54d3ad7ef50ca" + }, + { + "title": "CSP05-03B", + "id": "69ad011d27e54d3ad7ef50dd" + }, + { + "title": "CSP05-03C", + "id": "69ad012027e54d3ad7ef50f0" + } + ], + "CSP05-02": [ + { + "title": "CSP05-02A", + "id": "69b51cee947e4b9371843f27" + } + ], + "CSP05-01": [ + { + "title": "CSP05-01A", + "id": "69aa7d6d27e54d3ad7ed9098" + }, + { + "title": "CSP05-01B", + "id": "69aa7dad27e54d3ad7ed9190" + }, + { + "title": "CSP05-01C", + "id": "69aa807f27e54d3ad7ed93fc" + } + ], + "CSP04-20": [ + { + "title": "CSP04-20A", + "id": "69ad00f527e54d3ad7ef509b" + }, + { + "title": "CSP04-20B", + "id": "69ad00f727e54d3ad7ef50ae" + }, + { + "title": "CSP04-20C", + "id": "69ad00f927e54d3ad7ef50c2" + } + ], + "CSP04-19": [ + { + "title": "CSP04-19A", + "id": "69ad00f527e54d3ad7ef509a" + }, + { + "title": "CSP04-19B", + "id": "69ad00f727e54d3ad7ef50ad" + }, + { + "title": "CSP04-19C", + "id": "69ad00f927e54d3ad7ef50c1" + } + ], + "CSP04-18": [ + { + "title": "CSP04-18A", + "id": "69ad00f427e54d3ad7ef5099" + }, + { + "title": "CSP04-18B", + "id": "69ad00f627e54d3ad7ef50ac" + }, + { + "title": "CSP04-18C", + "id": "69ad00f927e54d3ad7ef50c0" + } + ], + "CSP04-17": [ + { + "title": "CSP04-17A", + "id": "69ad00f427e54d3ad7ef5098" + }, + { + "title": "CSP04-17B", + "id": "69ad00f627e54d3ad7ef50ab" + }, + { + "title": "CSP04-17C", + "id": "69ad00f927e54d3ad7ef50bf" + } + ], + "CSP04-16": [ + { + "title": "CSP04-16A", + "id": "69ad00f427e54d3ad7ef5097" + }, + { + "title": "CSP04-16B", + "id": "69ad00f627e54d3ad7ef50aa" + }, + { + "title": "CSP04-16C", + "id": "69ad00f827e54d3ad7ef50be" + } + ], + "CSP04-15": [ + { + "title": "CSP04-15A", + "id": "69ad00f427e54d3ad7ef5096" + }, + { + "title": "CSP04-15B", + "id": "69ad00f627e54d3ad7ef50a9" + }, + { + "title": "CSP04-15C", + "id": "69ad00f827e54d3ad7ef50bd" + } + ], + "CSP04-14": [ + { + "title": "CSP04-14A", + "id": "69ad00f427e54d3ad7ef5095" + }, + { + "title": "CSP04-14B", + "id": "69ad00f627e54d3ad7ef50a8" + }, + { + "title": "CSP04-14C", + "id": "69ad00f827e54d3ad7ef50bc" + } + ], + "CSP04-13": [ + { + "title": "CSP04-13A", + "id": "69ad00f427e54d3ad7ef5094" + }, + { + "title": "CSP04-13B", + "id": "69ad00f627e54d3ad7ef50a7" + }, + { + "title": "CSP04-13C", + "id": "69ad00f827e54d3ad7ef50bb" + } + ], + "CSP04-12": [ + { + "title": "CSP04-12A", + "id": "69ad00f427e54d3ad7ef5093" + }, + { + "title": "CSP04-12B", + "id": "69ad00f627e54d3ad7ef50a6" + }, + { + "title": "CSP04-12C", + "id": "69ad00f827e54d3ad7ef50ba" + } + ], + "CSP04-11": [ + { + "title": "CSP04-11A", + "id": "69ad00f427e54d3ad7ef5092" + }, + { + "title": "CSP04-11B", + "id": "69ad00f627e54d3ad7ef50a5" + }, + { + "title": "CSP04-11C", + "id": "69ad00f827e54d3ad7ef50b9" + } + ], + "CSP04-10": [ + { + "title": "CSP04-10A", + "id": "69ad00f427e54d3ad7ef5091" + }, + { + "title": "CSP04-10B", + "id": "69ad00f627e54d3ad7ef50a4" + }, + { + "title": "CSP04-10C", + "id": "69ad00f827e54d3ad7ef50b8" + } + ], + "CSP04-09": [ + { + "title": "CSP04-09A", + "id": "69ad00f327e54d3ad7ef5090" + }, + { + "title": "CSP04-09B", + "id": "69ad00f627e54d3ad7ef50a3" + }, + { + "title": "CSP04-09C", + "id": "69ad00f827e54d3ad7ef50b7" + } + ], + "CSP04-08": [ + { + "title": "CSP04-08A", + "id": "69ad00f327e54d3ad7ef508f" + }, + { + "title": "CSP04-08B", + "id": "69ad00f527e54d3ad7ef50a2" + }, + { + "title": "CSP04-08C", + "id": "69ad00f727e54d3ad7ef50b6" + } + ], + "CSP04-07": [ + { + "title": "CSP04-07A", + "id": "69ad00f327e54d3ad7ef508e" + }, + { + "title": "CSP04-07B", + "id": "69ad00f527e54d3ad7ef50a1" + }, + { + "title": "CSP04-07C", + "id": "69ad00f727e54d3ad7ef50b5" + } + ], + "CSP04-06": [ + { + "title": "CSP04-06A", + "id": "69ad00f327e54d3ad7ef508d" + } + ], + "CSP04-05": [ + { + "title": "CSP04-05A", + "id": "69ad00f327e54d3ad7ef508c" + }, + { + "title": "CSP04-05B", + "id": "69ad00f527e54d3ad7ef509f" + }, + { + "title": "CSP04-05C", + "id": "69ad00f727e54d3ad7ef50b2" + } + ], + "CSP04-04": [ + { + "title": "CSP04-04A", + "id": "69ad00f327e54d3ad7ef508b" + }, + { + "title": "CSP04-04B", + "id": "69ad00f527e54d3ad7ef509e" + }, + { + "title": "CSP04-04C", + "id": "69ad00f727e54d3ad7ef50b1" + } + ], + "CSP04-03": [ + { + "title": "CSP04-03A", + "id": "69ad00f327e54d3ad7ef508a" + }, + { + "title": "CSP04-03B", + "id": "69ad00f527e54d3ad7ef509d" + }, + { + "title": "CSP04-03C", + "id": "69ad00f727e54d3ad7ef50b0" + } + ], + "CSP04-02": [ + { + "title": "CSP04-02A", + "id": "69ad00f327e54d3ad7ef5089" + }, + { + "title": "CSP04-02B", + "id": "69ad00f527e54d3ad7ef509c" + }, + { + "title": "CSP04-02C", + "id": "69ad00f727e54d3ad7ef50af" + } + ], + "CSP04-01": [ + { + "title": "CSP04-01A", + "id": "69aa76f327e54d3ad7ed7df5" + }, + { + "title": "CSP04-01B", + "id": "69aa774727e54d3ad7ed7df7" + }, + { + "title": "CSP04-01C", + "id": "69aa7b5727e54d3ad7ed8711" + } + ], + "CSP03-20": [ + { + "title": "CSP03-20A", + "id": "69acffad27e54d3ad7ef501d" + }, + { + "title": "CSP03-20B", + "id": "69acffaf27e54d3ad7ef5030" + }, + { + "title": "CSP03-20C", + "id": "69acffb127e54d3ad7ef5043" + } + ], + "CSP03-19": [ + { + "title": "CSP03-19A", + "id": "69acffad27e54d3ad7ef501c" + }, + { + "title": "CSP03-19B", + "id": "69acffaf27e54d3ad7ef502f" + }, + { + "title": "CSP03-19C", + "id": "69acffb127e54d3ad7ef5042" + } + ], + "CSP03-18": [ + { + "title": "CSP03-18A", + "id": "69acffad27e54d3ad7ef501b" + }, + { + "title": "CSP03-18B", + "id": "69acffaf27e54d3ad7ef502e" + }, + { + "title": "CSP03-18C", + "id": "69acffb127e54d3ad7ef5041" + } + ], + "CSP03-17": [ + { + "title": "CSP03-17A", + "id": "69acffad27e54d3ad7ef501a" + }, + { + "title": "CSP03-17B", + "id": "69acffaf27e54d3ad7ef502d" + }, + { + "title": "CSP03-17C", + "id": "69acffb127e54d3ad7ef5040" + } + ], + "CSP03-16": [ + { + "title": "CSP03-16A", + "id": "69acffac27e54d3ad7ef5019" + }, + { + "title": "CSP03-16B", + "id": "69acffaf27e54d3ad7ef502c" + }, + { + "title": "CSP03-16C", + "id": "69acffb127e54d3ad7ef503f" + } + ], + "CSP03-15": [ + { + "title": "CSP03-15A", + "id": "69acffac27e54d3ad7ef5018" + }, + { + "title": "CSP03-15B", + "id": "69acffaf27e54d3ad7ef502b" + }, + { + "title": "CSP03-15C", + "id": "69acffb127e54d3ad7ef503e" + } + ], + "CSP03-14": [ + { + "title": "CSP03-14A", + "id": "69acffac27e54d3ad7ef5017" + }, + { + "title": "CSP03-14B", + "id": "69acffae27e54d3ad7ef502a" + }, + { + "title": "CSP03-14C", + "id": "69acffb027e54d3ad7ef503d" + } + ], + "CSP03-13": [ + { + "title": "CSP03-13A", + "id": "69acffac27e54d3ad7ef5016" + }, + { + "title": "CSP03-13B", + "id": "69acffae27e54d3ad7ef5029" + }, + { + "title": "CSP03-13C", + "id": "69acffb027e54d3ad7ef503c" + } + ], + "CSP03-12": [ + { + "title": "CSP03-12A", + "id": "69acffac27e54d3ad7ef5015" + }, + { + "title": "CSP03-12B", + "id": "69acffae27e54d3ad7ef5028" + }, + { + "title": "CSP03-12C", + "id": "69acffb027e54d3ad7ef503b" + } + ], + "CSP03-11": [ + { + "title": "CSP03-11A", + "id": "69acffac27e54d3ad7ef5014" + }, + { + "title": "CSP03-11B", + "id": "69acffae27e54d3ad7ef5027" + }, + { + "title": "CSP03-11C", + "id": "69acffb027e54d3ad7ef503a" + } + ], + "CSP03-10": [ + { + "title": "CSP03-10A", + "id": "69acffac27e54d3ad7ef5013" + }, + { + "title": "CSP03-10B", + "id": "69acffae27e54d3ad7ef5026" + }, + { + "title": "CSP03-10C", + "id": "69acffb027e54d3ad7ef5039" + } + ], + "CSP03-09": [ + { + "title": "CSP03-09A", + "id": "69acffac27e54d3ad7ef5012" + }, + { + "title": "CSP03-09B", + "id": "69acffae27e54d3ad7ef5025" + }, + { + "title": "CSP03-09C", + "id": "69acffb027e54d3ad7ef5038" + } + ], + "CSP03-08": [ + { + "title": "CSP03-08A", + "id": "69acffac27e54d3ad7ef5011" + }, + { + "title": "CSP03-08B", + "id": "69acffae27e54d3ad7ef5024" + }, + { + "title": "CSP03-08C", + "id": "69acffb027e54d3ad7ef5037" + } + ], + "CSP03-07": [ + { + "title": "CSP03-07A", + "id": "69acffab27e54d3ad7ef5010" + }, + { + "title": "CSP03-07B", + "id": "69acffae27e54d3ad7ef5023" + }, + { + "title": "CSP03-07C", + "id": "69acffb027e54d3ad7ef5036" + } + ], + "CSP03-06": [ + { + "title": "CSP03-06A", + "id": "69acffab27e54d3ad7ef500f" + }, + { + "title": "CSP03-06B", + "id": "69acffae27e54d3ad7ef5022" + }, + { + "title": "CSP03-06C", + "id": "69acffb027e54d3ad7ef5035" + } + ], + "CSP03-05": [ + { + "title": "CSP03-05A", + "id": "69acffab27e54d3ad7ef500e" + }, + { + "title": "CSP03-05B", + "id": "69acffad27e54d3ad7ef5021" + }, + { + "title": "CSP03-05C", + "id": "69acffb027e54d3ad7ef5034" + } + ], + "CSP03-04": [ + { + "title": "CSP03-04A", + "id": "69acffab27e54d3ad7ef500d" + }, + { + "title": "CSP03-04B", + "id": "69acffad27e54d3ad7ef5020" + }, + { + "title": "CSP03-04C", + "id": "69acffaf27e54d3ad7ef5033" + } + ], + "CSP03-03": [ + { + "title": "CSP03-03A", + "id": "69acffab27e54d3ad7ef500c" + }, + { + "title": "CSP03-03B", + "id": "69acffad27e54d3ad7ef501f" + }, + { + "title": "CSP03-03C", + "id": "69acffaf27e54d3ad7ef5032" + } + ], + "CSP03-02": [ + { + "title": "CSP03-02A", + "id": "69acffab27e54d3ad7ef500b" + }, + { + "title": "CSP03-02B", + "id": "69acffad27e54d3ad7ef501e" + }, + { + "title": "CSP03-02C", + "id": "69acffaf27e54d3ad7ef5031" + } + ], + "CSP03-01": [ + { + "title": "CSP03-01A", + "id": "69aa73df27e54d3ad7ed7c99" + }, + { + "title": "CSP03-01B", + "id": "69aa744727e54d3ad7ed7db0" + }, + { + "title": "CSP03-01C", + "id": "69aa75d427e54d3ad7ed7dee" + } + ], + "CSP02-20": [ + { + "title": "CSP02-20A", + "id": "69acfecb27e54d3ad7ef4fc7" + }, + { + "title": "CSP02-20B", + "id": "69acfecd27e54d3ad7ef4fda" + }, + { + "title": "CSP02-20C", + "id": "69acfecf27e54d3ad7ef4fed" + } + ], + "CSP02-19": [ + { + "title": "CSP02-19A", + "id": "69acfecb27e54d3ad7ef4fc6" + }, + { + "title": "CSP02-19B", + "id": "69acfecd27e54d3ad7ef4fd9" + }, + { + "title": "CSP02-19C", + "id": "69acfecf27e54d3ad7ef4fec" + } + ], + "CSP02-18": [ + { + "title": "CSP02-18A", + "id": "69acfeca27e54d3ad7ef4fc5" + }, + { + "title": "CSP02-18B", + "id": "69acfecd27e54d3ad7ef4fd8" + }, + { + "title": "CSP02-18C", + "id": "69acfecf27e54d3ad7ef4feb" + } + ], + "CSP02-17": [ + { + "title": "CSP02-17A", + "id": "69acfeca27e54d3ad7ef4fc4" + }, + { + "title": "CSP02-17B", + "id": "69acfecd27e54d3ad7ef4fd7" + }, + { + "title": "CSP02-17C", + "id": "69acfecf27e54d3ad7ef4fea" + } + ], + "CSP02-16": [ + { + "title": "CSP02-16A", + "id": "69acfeca27e54d3ad7ef4fc3" + }, + { + "title": "CSP02-16B", + "id": "69acfecc27e54d3ad7ef4fd6" + }, + { + "title": "CSP02-16C", + "id": "69acfecf27e54d3ad7ef4fe9" + } + ], + "CSP02-15": [ + { + "title": "CSP02-15A", + "id": "69acfeca27e54d3ad7ef4fc2" + }, + { + "title": "CSP02-15B", + "id": "69acfecc27e54d3ad7ef4fd5" + }, + { + "title": "CSP02-15C", + "id": "69acfece27e54d3ad7ef4fe8" + } + ], + "CSP02-14": [ + { + "title": "CSP02-14A", + "id": "69acfeca27e54d3ad7ef4fc1" + }, + { + "title": "CSP02-14B", + "id": "69acfecc27e54d3ad7ef4fd4" + }, + { + "title": "CSP02-14C", + "id": "69acfece27e54d3ad7ef4fe7" + } + ], + "CSP02-13": [ + { + "title": "CSP02-13A", + "id": "69acfeca27e54d3ad7ef4fc0" + }, + { + "title": "CSP02-13B", + "id": "69acfecc27e54d3ad7ef4fd3" + }, + { + "title": "CSP02-13C", + "id": "69acfece27e54d3ad7ef4fe6" + } + ], + "CSP02-12": [ + { + "title": "CSP02-12A", + "id": "69acfeca27e54d3ad7ef4fbf" + }, + { + "title": "CSP02-12B", + "id": "69acfecc27e54d3ad7ef4fd2" + }, + { + "title": "CSP02-12C", + "id": "69acfece27e54d3ad7ef4fe5" + } + ], + "CSP02-11": [ + { + "title": "CSP02-11A", + "id": "69acfeca27e54d3ad7ef4fbe" + }, + { + "title": "CSP02-11B", + "id": "69acfecc27e54d3ad7ef4fd1" + }, + { + "title": "CSP02-11C", + "id": "69acfece27e54d3ad7ef4fe4" + } + ], + "CSP02-10": [ + { + "title": "CSP02-10A", + "id": "69acfeca27e54d3ad7ef4fbd" + }, + { + "title": "CSP02-10B", + "id": "69acfecc27e54d3ad7ef4fd0" + }, + { + "title": "CSP02-10C", + "id": "69acfece27e54d3ad7ef4fe3" + } + ], + "CSP02-09": [ + { + "title": "CSP02-09A", + "id": "69acfec927e54d3ad7ef4fbc" + }, + { + "title": "CSP02-09B", + "id": "69acfecc27e54d3ad7ef4fcf" + }, + { + "title": "CSP02-09C", + "id": "69acfece27e54d3ad7ef4fe2" + } + ], + "CSP02-08": [ + { + "title": "CSP02-08A", + "id": "69acfec927e54d3ad7ef4fbb" + }, + { + "title": "CSP02-08B", + "id": "69acfecc27e54d3ad7ef4fce" + }, + { + "title": "CSP02-08C", + "id": "69acfece27e54d3ad7ef4fe1" + } + ], + "CSP02-07": [ + { + "title": "CSP02-07A", + "id": "69acfec927e54d3ad7ef4fba" + }, + { + "title": "CSP02-07B", + "id": "69acfecb27e54d3ad7ef4fcd" + }, + { + "title": "CSP02-07C", + "id": "69acfece27e54d3ad7ef4fe0" + } + ], + "CSP02-06": [ + { + "title": "CSP02-06A", + "id": "69acfec927e54d3ad7ef4fb9" + }, + { + "title": "CSP02-06B", + "id": "69acfecb27e54d3ad7ef4fcc" + }, + { + "title": "CSP02-06C", + "id": "69acfecd27e54d3ad7ef4fdf" + } + ], + "CSP02-05": [ + { + "title": "CSP02-05A", + "id": "69acfec927e54d3ad7ef4fb8" + }, + { + "title": "CSP02-05B", + "id": "69acfecb27e54d3ad7ef4fcb" + }, + { + "title": "CSP02-05C", + "id": "69acfecd27e54d3ad7ef4fde" + } + ], + "CSP02-04": [ + { + "title": "CSP02-04A", + "id": "69acfec927e54d3ad7ef4fb7" + }, + { + "title": "CSP02-04B", + "id": "69acfecb27e54d3ad7ef4fca" + }, + { + "title": "CSP02-04C", + "id": "69acfecd27e54d3ad7ef4fdd" + } + ], + "CSP02-03": [ + { + "title": "CSP02-03A", + "id": "69acfec927e54d3ad7ef4fb6" + }, + { + "title": "CSP02-03B", + "id": "69acfecb27e54d3ad7ef4fc9" + }, + { + "title": "CSP02-03C", + "id": "69acfecd27e54d3ad7ef4fdc" + } + ], + "CSP02-02": [ + { + "title": "CSP02-02A", + "id": "69acfec927e54d3ad7ef4fb5" + }, + { + "title": "CSP02-02B", + "id": "69acfecb27e54d3ad7ef4fc8" + }, + { + "title": "CSP02-02C", + "id": "69acfecd27e54d3ad7ef4fdb" + } + ], + "CSP02-01": [ + { + "title": "CSP02-01A", + "id": "69aa727527e54d3ad7ed7b9c" + }, + { + "title": "CSP02-01B", + "id": "69aa72cf27e54d3ad7ed7c32" + }, + { + "title": "CSP02-01C", + "id": "69aa731e27e54d3ad7ed7c37" + } + ], + "CSP01-20": [ + { + "title": "CSP01-20A", + "id": "69acfbbc27e54d3ad7ef4c19" + }, + { + "title": "CSP01-20B", + "id": "69acfbbf27e54d3ad7ef4c3e" + }, + { + "title": "CSP01-20C", + "id": "69acfbc127e54d3ad7ef4c52" + } + ], + "CSP01-19": [ + { + "title": "CSP01-19A", + "id": "69acfbbc27e54d3ad7ef4c18" + }, + { + "title": "CSP01-19B", + "id": "69acfbbe27e54d3ad7ef4c3d" + }, + { + "title": "CSP01-19C", + "id": "69acfbc027e54d3ad7ef4c51" + } + ], + "CSP01-18": [ + { + "title": "CSP01-18A", + "id": "69acfbbc27e54d3ad7ef4c14" + }, + { + "title": "CSP01-18B", + "id": "69acfbbe27e54d3ad7ef4c3c" + }, + { + "title": "CSP01-18C", + "id": "69acfbc027e54d3ad7ef4c50" + } + ], + "CSP01-17": [ + { + "title": "CSP01-17A", + "id": "69acfbbc27e54d3ad7ef4c13" + }, + { + "title": "CSP01-17B", + "id": "69acfbbe27e54d3ad7ef4c3b" + }, + { + "title": "CSP01-17C", + "id": "69acfbc027e54d3ad7ef4c4f" + } + ], + "CSP01-16": [ + { + "title": "CSP01-16A", + "id": "69acfbbc27e54d3ad7ef4c12" + }, + { + "title": "CSP01-16B", + "id": "69acfbbe27e54d3ad7ef4c3a" + }, + { + "title": "CSP01-16C", + "id": "69acfbc027e54d3ad7ef4c4e" + } + ], + "CSP01-15": [ + { + "title": "CSP01-15A", + "id": "69acfbbc27e54d3ad7ef4c0c" + }, + { + "title": "CSP01-15B", + "id": "69acfbbe27e54d3ad7ef4c39" + }, + { + "title": "CSP01-15C", + "id": "69acfbc027e54d3ad7ef4c4b" + } + ], + "CSP01-14": [ + { + "title": "CSP01-14A", + "id": "69acfbbc27e54d3ad7ef4c0b" + }, + { + "title": "CSP01-14B", + "id": "69acfbbe27e54d3ad7ef4c38" + }, + { + "title": "CSP01-14C", + "id": "69acfbc027e54d3ad7ef4c4a" + } + ], + "CSP01-13": [ + { + "title": "CSP01-13A", + "id": "69acfbbc27e54d3ad7ef4c07" + }, + { + "title": "CSP01-13B", + "id": "69acfbbe27e54d3ad7ef4c37" + }, + { + "title": "CSP01-13C", + "id": "69acfbc027e54d3ad7ef4c49" + } + ], + "CSP01-12": [ + { + "title": "CSP01-12A", + "id": "69acfbbb27e54d3ad7ef4c03" + }, + { + "title": "CSP01-12B", + "id": "69acfbbe27e54d3ad7ef4c36" + }, + { + "title": "CSP01-12C", + "id": "69acfbc027e54d3ad7ef4c48" + } + ], + "CSP01-11": [ + { + "title": "CSP01-11A", + "id": "69acfbbb27e54d3ad7ef4bff" + }, + { + "title": "CSP01-11B", + "id": "69acfbbe27e54d3ad7ef4c35" + }, + { + "title": "CSP01-11C", + "id": "69acfbc027e54d3ad7ef4c47" + } + ], + "CSP01-10": [ + { + "title": "CSP01-10A", + "id": "69acfbbb27e54d3ad7ef4bfd" + }, + { + "title": "CSP01-10B", + "id": "69acfbbd27e54d3ad7ef4c34" + }, + { + "title": "CSP01-10C", + "id": "69acfbbf27e54d3ad7ef4c46" + } + ], + "CSP01-09": [ + { + "title": "CSP01-09A", + "id": "69acfbbb27e54d3ad7ef4bf7" + }, + { + "title": "CSP01-09B", + "id": "69acfbbd27e54d3ad7ef4c33" + }, + { + "title": "CSP01-09C", + "id": "69acfbbf27e54d3ad7ef4c45" + } + ], + "CSP01-08": [ + { + "title": "CSP01-08A", + "id": "69acfbbb27e54d3ad7ef4bf6" + }, + { + "title": "CSP01-08B", + "id": "69acfbbd27e54d3ad7ef4c2f" + }, + { + "title": "CSP01-08C", + "id": "69acfbbf27e54d3ad7ef4c44" + } + ], + "CSP01-07": [ + { + "title": "CSP01-07A", + "id": "69acfbbb27e54d3ad7ef4bf5" + }, + { + "title": "CSP01-07B", + "id": "69acfbbd27e54d3ad7ef4c2b" + }, + { + "title": "CSP01-07C", + "id": "69acfbbf27e54d3ad7ef4c43" + } + ], + "CSP01-06": [ + { + "title": "CSP01-06A", + "id": "69acfbbb27e54d3ad7ef4bef" + }, + { + "title": "CSP01-06B", + "id": "69acfbbd27e54d3ad7ef4c27" + }, + { + "title": "CSP01-06C", + "id": "69acfbbf27e54d3ad7ef4c42" + } + ], + "CSP01-05": [ + { + "title": "CSP01-05A", + "id": "69acfbbb27e54d3ad7ef4bee" + }, + { + "title": "CSP01-05B", + "id": "69acfbbd27e54d3ad7ef4c22" + }, + { + "title": "CSP01-05C", + "id": "69acfbbf27e54d3ad7ef4c41" + } + ], + "CSP01-04": [ + { + "title": "CSP01-04A", + "id": "69acfbbb27e54d3ad7ef4bea" + }, + { + "title": "CSP01-04B", + "id": "69acfbbd27e54d3ad7ef4c1e" + }, + { + "title": "CSP01-04C", + "id": "69acfbbf27e54d3ad7ef4c40" + } + ], + "CSP01-03": [ + { + "title": "CSP01-03A", + "id": "69acfbba27e54d3ad7ef4be6" + }, + { + "title": "CSP01-03B", + "id": "69acfbbd27e54d3ad7ef4c1a" + }, + { + "title": "CSP01-03C", + "id": "69acfbbf27e54d3ad7ef4c3f" + } + ], + "CSP01-02": [ + { + "title": "CSP01-02A", + "id": "69acf92e27e54d3ad7ef3ed3" + }, + { + "title": "CSP01-02B", + "id": "69acf92e27e54d3ad7ef3ed4" + }, + { + "title": "CSP01-02C", + "id": "69acf92e27e54d3ad7ef3ed5" + } + ], + "CSP01-01": [ + { + "title": "CSP01-01A", + "id": "69a98c4a27e54d3ad7ed6cfc" + }, + { + "title": "CSP01-01B", + "id": "69a98d0e27e54d3ad7ed6cfe" + }, + { + "title": "CSP01-01C", + "id": "69a98d1a27e54d3ad7ed6cff" + } + ] +} diff --git a/.claude/lesson/K4/README.md b/.claude/lesson/K4/README.md index 34c6e11..d64a368 100644 --- a/.claude/lesson/K4/README.md +++ b/.claude/lesson/K4/README.md @@ -15,17 +15,18 @@ | 第5课 | 分支嵌套结构 | 《四季之选》 | 分支嵌套结构 | - | - | | 第6课 | 分支嵌套结构 | 《我的唱片机》 | 多分支选择结构 | - | - | | 第7课 | 循环嵌套结构 | 《彩虹生成器》 | 循环嵌套结构 | - | - | -| 第8课 | 循环嵌套结构 | 《唐诗朗诵会》 | 循环嵌套结构 | - | - | -| 第9课 | 循环嵌套结构 | 《像素艺术画》 | 分支嵌套判断 | - | - | -| 第10课 | 函数 | 《猜猜我是谁》 | 初识函数、无参函数 | - | - | -| 第11课 | 函数 | 《花朵随心画》 | 有参函数 | - | - | -| 第12课 | 函数 | 《图形巧算》 | 巩固有参函数、无参函数 | - | - | -| 第13课 | 函数 | 《飞镖达人》 | 综合运用有参函数、无参函数 | - | - | -| 第14课 | 列表 | 《今天玩什么玩具》 | 列表运用、添加元素 | - | - | -| 第15课 | 列表 | 《百科知多少》 | 删除元素、列表长度 | - | - | -| 第16课 | 列表 | 《成语接龙》 | 插入、查找元素 | - | - | -| 第17课 | 列表 | 《升旗分组赛》 | 列表变量与嵌套分支综合运用 | - | - | -| 第18课 | 字符串操作 | 《解密藏头诗》 | 字符串的概念 | - | - | +| 第8课 | 循环嵌套结构 | 《阶段测试》 | 循环嵌套结构 | - | - | +| 第9课 | 循环嵌套结构 | 《唐诗朗诵会》 | 循环嵌套结构 | - | - | +| 第10课 | 循环嵌套结构 | 《像素艺术画》 | 分支嵌套判断 | - | - | +| 第11课 | 函数 | 《猜猜我是谁》 | 初识函数、无参函数 | - | - | +| 第12课 | 函数 | 《花朵随心画》 | 有参函数 | - | - | +| 第13课 | 函数 | 《图形巧算》 | 巩固有参函数、无参函数 | - | - | +| 第14课 | 函数 | 《飞镖达人》 | 综合运用有参函数、无参函数 | - | - | +| 第15课 | 列表 | 《今天玩什么玩具》 | 列表运用、添加元素 | - | - | +| 第16课 | 列表 | 《百科知多少》 | 删除元素、列表长度 | - | - | +| 第17课 | 列表 | 《成语接龙》 | 插入、查找元素 | - | - | +| 第18课 | 列表 | 《升旗分组赛》 | 列表变量与嵌套分支综合运用 | - | - | +| 第19课 | 字符串操作 | 《解密藏头诗》 | 字符串的概念 | - | - | --- diff --git a/.claude/memory/class/AI03橙子周日1400/贺楚悦/feedback/出勤登记-2026春季.md b/.claude/memory/class/AI03橙子周日1400/贺楚悦/feedback/出勤登记-2026春季.md deleted file mode 100644 index 0604df9..0000000 --- a/.claude/memory/class/AI03橙子周日1400/贺楚悦/feedback/出勤登记-2026春季.md +++ /dev/null @@ -1,11 +0,0 @@ -# 出勤登记 - 2026春季学期 - -| 日期 | 课程 | 课次 | 状态 | 备注 | -|------|------|------|------|------| -| 2026-03-08 | AI是怎么想的 | 第1课 | ✅ 出勤 | | -| 2026-03-15 | AI的记忆之谜 | 第2课 | ✅ 出勤 | | -| 2026-03-22 | AI训练师 | 第3课 | ✅ 出勤 | | -| 2026-03-29 | 我是大作家-1 | 第4课 | ✅ 出勤 | | -| 2026-04-06 | 我是大作家-2 | 第5课 | ⏸ 请假 | | -| 2026-04-12 | 我是大作家(完结篇) | 第6课 | ✅ 出勤 | | -| 2026-04-19 | AI大作家插图生成 | 第7课 | ✅ 出勤 | | diff --git a/.claude/memory/class/AI03橙子周五1700/summaries/班级反馈模板.md b/.claude/memory/class/AICODE03橙子周五1700/summaries/班级反馈模板.md similarity index 100% rename from .claude/memory/class/AI03橙子周五1700/summaries/班级反馈模板.md rename to .claude/memory/class/AICODE03橙子周五1700/summaries/班级反馈模板.md diff --git a/.claude/memory/class/AI03橙子周五1700/summaries/群发文案模板.md b/.claude/memory/class/AICODE03橙子周五1700/summaries/群发文案模板.md similarity index 100% rename from .claude/memory/class/AI03橙子周五1700/summaries/群发文案模板.md rename to .claude/memory/class/AICODE03橙子周五1700/summaries/群发文案模板.md diff --git a/.claude/memory/class/AI03橙子周五1700/李梓宁/profile.md b/.claude/memory/class/AICODE03橙子周五1700/李梓宁/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周五1700/李梓宁/profile.md rename to .claude/memory/class/AICODE03橙子周五1700/李梓宁/profile.md diff --git a/.claude/memory/class/AI03橙子周五1700/李梓宁/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周五1700/李梓宁/课评汇总-2026春季.md similarity index 86% rename from .claude/memory/class/AI03橙子周五1700/李梓宁/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周五1700/李梓宁/课评汇总-2026春季.md index bbeb6d5..205404c 100644 --- a/.claude/memory/class/AI03橙子周五1700/李梓宁/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/AICODE03橙子周五1700/李梓宁/课评汇总-2026春季.md @@ -83,3 +83,15 @@ 老师会继续关注梓宁的表现,期待看到你的完整小说故事!🌟💡 --- + +## 第7条:个人网页生成 + +**授课日期**:2026-05-09 + +**课评内容**: + +梓宁今天表现得很积极~对《个人网页生成》的内容特别感兴趣,认真把自己的内容填写进网页里,完成度很高~特别棒的是,梓宁主动问老师怎么添加自己喜欢的音乐,这种主动探索的精神让老师很惊喜!~还愿意邀请子林一起参加AIGC比赛,很有分享精神呢~ + +老师会继续关注梓宁的表现,期待集训时看到你把作品打磨得更精彩!🌟💡 + +--- diff --git a/.claude/memory/class/AI03橙子周六1900/summaries/班级反馈模板.md b/.claude/memory/class/AICODE03橙子周六1900/summaries/班级反馈模板.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/summaries/班级反馈模板.md rename to .claude/memory/class/AICODE03橙子周六1900/summaries/班级反馈模板.md diff --git a/.claude/memory/class/AI03橙子周六1900/summaries/群发文案模板.md b/.claude/memory/class/AICODE03橙子周六1900/summaries/群发文案模板.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/summaries/群发文案模板.md rename to .claude/memory/class/AICODE03橙子周六1900/summaries/群发文案模板.md diff --git a/.claude/memory/class/AI03橙子周六1900/李承泽/feedback/20260426_第8课.md b/.claude/memory/class/AICODE03橙子周六1900/李承泽/feedback/20260426_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/李承泽/feedback/20260426_第8课.md rename to .claude/memory/class/AICODE03橙子周六1900/李承泽/feedback/20260426_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周六1900/李承泽/profile.md b/.claude/memory/class/AICODE03橙子周六1900/李承泽/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/李承泽/profile.md rename to .claude/memory/class/AICODE03橙子周六1900/李承泽/profile.md diff --git a/.claude/memory/class/AI03橙子周六1900/李承泽/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周六1900/李承泽/课评汇总-2026春季.md similarity index 83% rename from .claude/memory/class/AI03橙子周六1900/李承泽/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周六1900/李承泽/课评汇总-2026春季.md index 11ab8ae..dcd4d21 100644 --- a/.claude/memory/class/AI03橙子周六1900/李承泽/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/AICODE03橙子周六1900/李承泽/课评汇总-2026春季.md @@ -90,3 +90,17 @@ 以你的阳光活力,要是能把这份热情一直保持到课堂结束,不被其他事情带跑,就一定会更厉害~老师会继续关注承泽的进步,期待看到更多创意!✨💡 --- + +## 第8条:魔幻俄罗斯方块(下) + +**授课日期**:2026-05-10 + +**课评内容**: + +承泽本节课积极配合课堂教学,响应及时,学习态度特别诚恳,很棒~遇到操作疑问会主动向老师请教,这种不懂就问的态度特别好!💪 + +对《魔幻俄罗斯方块(下)》的知识点,特别是增量需求文档、自动化测试、测试覆盖和边界条件,课堂上顺利完成了游戏需求配置、文档生成、任务重命名以及需求审核等全部流程,能够按照老师指导解决操作卡点,成功生成可运行的俄罗斯方块游戏,任务完成度很高,具备良好的学习执行力,特别棒!✨ + +建议后续多尝试独立思考排查问题,进一步提升自主解决问题的能力~老师会继续关注承泽的进步,期待看到更多创意!✨💡 + +--- diff --git a/.claude/memory/class/AI03橙子周六1900/王子墨/feedback/20240406_AI大作家下_第5课.md b/.claude/memory/class/AICODE03橙子周六1900/王子墨/feedback/20260406_AI大作家下_第5课.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/王子墨/feedback/20240406_AI大作家下_第5课.md rename to .claude/memory/class/AICODE03橙子周六1900/王子墨/feedback/20260406_AI大作家下_第5课.md diff --git a/.claude/memory/class/AI03橙子周六1900/王子墨/feedback/20260426_第8课.md b/.claude/memory/class/AICODE03橙子周六1900/王子墨/feedback/20260426_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/王子墨/feedback/20260426_第8课.md rename to .claude/memory/class/AICODE03橙子周六1900/王子墨/feedback/20260426_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周六1900/王子墨/profile.md b/.claude/memory/class/AICODE03橙子周六1900/王子墨/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/王子墨/profile.md rename to .claude/memory/class/AICODE03橙子周六1900/王子墨/profile.md diff --git a/.claude/memory/class/AI03橙子周六1900/王子墨/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周六1900/王子墨/课评汇总-2026春季.md similarity index 87% rename from .claude/memory/class/AI03橙子周六1900/王子墨/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周六1900/王子墨/课评汇总-2026春季.md index 68737f9..9312e45 100644 --- a/.claude/memory/class/AI03橙子周六1900/王子墨/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/AICODE03橙子周六1900/王子墨/课评汇总-2026春季.md @@ -117,3 +117,17 @@ 老师会继续关注子墨的表现,期待看到更多精彩!🌟💡 --- + +## 第10条:魔幻俄罗斯方块(下) + +**授课日期**:2026-05-10 + +**课评内容**: + +子墨本节课课堂活跃度很高,动手与探索能力非常突出,特别棒~快速完成游戏制作后积极体验试玩,还主动发现了穿墙、旋转异常、无敌状态等多个程序bug,这种善于观察和发现问题的能力超级厉害!💡 + +对《魔幻俄罗斯方块(下)》的知识点,特别是增量需求文档、自动化测试、测试覆盖和边界条件,掌握得还不错~乐于和老师、同学分享自己的游戏成果与操作技巧,学习热情很高,这种愿意分享的精神很棒!🌸 + +要是能一直保持刚才发现和解决问题时的那种专注,不被周围的事情分散注意力,就更好啦~老师会继续关注子墨的表现,期待看到更多精彩!🌟💡 + +--- diff --git a/.claude/memory/class/AI03橙子周六1900/谭俊研/feedback/20260426_第8课.md b/.claude/memory/class/AICODE03橙子周六1900/谭俊研/feedback/20260426_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/谭俊研/feedback/20260426_第8课.md rename to .claude/memory/class/AICODE03橙子周六1900/谭俊研/feedback/20260426_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周六1900/谭俊研/profile.md b/.claude/memory/class/AICODE03橙子周六1900/谭俊研/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/谭俊研/profile.md rename to .claude/memory/class/AICODE03橙子周六1900/谭俊研/profile.md diff --git a/.claude/memory/class/AI03橙子周六1900/谭俊研/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周六1900/谭俊研/课评汇总-2026春季.md similarity index 86% rename from .claude/memory/class/AI03橙子周六1900/谭俊研/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周六1900/谭俊研/课评汇总-2026春季.md index e841f30..a6edfa2 100644 --- a/.claude/memory/class/AI03橙子周六1900/谭俊研/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/AICODE03橙子周六1900/谭俊研/课评汇总-2026春季.md @@ -117,3 +117,17 @@ 老师会继续关注俊研的进步,期待看到更多精彩!🌸😊 --- + +## 第10条:魔幻俄罗斯方块(下) + +**授课日期**:2026-05-10 + +**课评内容**: + +俊研本节课整体表现沉稳认真,特别棒~课堂纪律良好,能够安静跟随老师的教学节奏完成各项操作,很少出现闲聊分心的情况,这种专注力是学好AIGC的基础!🌟 + +对《魔幻俄罗斯方块(下)》的知识点,特别是增量需求文档、自动化测试、测试覆盖和边界条件,从新建项目、选择智能体,到生成需求文档、参与需求审核,每一步都能按要求规范完成,基础操作掌握得很扎实~老师提醒专注听讲时也能及时调整状态,学习态度踏实可靠,特别棒!💡 + +希望后续能更主动地表达想法、大胆尝试探索,让学习更有主动性~老师会继续关注俊研的进步,期待看到更多精彩!🌸😊 + +--- diff --git a/.claude/memory/class/AI03橙子周六1900/陈嘉博/feedback/20240406_AI大作家下_第5课.md b/.claude/memory/class/AICODE03橙子周六1900/陈嘉博/feedback/20260406_AI大作家下_第5课.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/陈嘉博/feedback/20240406_AI大作家下_第5课.md rename to .claude/memory/class/AICODE03橙子周六1900/陈嘉博/feedback/20260406_AI大作家下_第5课.md diff --git a/.claude/memory/class/AI03橙子周六1900/陈嘉博/feedback/20260426_第8课.md b/.claude/memory/class/AICODE03橙子周六1900/陈嘉博/feedback/20260426_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/陈嘉博/feedback/20260426_第8课.md rename to .claude/memory/class/AICODE03橙子周六1900/陈嘉博/feedback/20260426_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周六1900/陈嘉博/profile.md b/.claude/memory/class/AICODE03橙子周六1900/陈嘉博/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/陈嘉博/profile.md rename to .claude/memory/class/AICODE03橙子周六1900/陈嘉博/profile.md diff --git a/.claude/memory/class/AI03橙子周六1900/陈嘉博/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周六1900/陈嘉博/课评汇总-2026春季.md similarity index 85% rename from .claude/memory/class/AI03橙子周六1900/陈嘉博/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周六1900/陈嘉博/课评汇总-2026春季.md index ea13e87..357eebe 100644 --- a/.claude/memory/class/AI03橙子周六1900/陈嘉博/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/AICODE03橙子周六1900/陈嘉博/课评汇总-2026春季.md @@ -105,3 +105,17 @@ 老师会继续关注嘉博的表现,期待看到更多精彩!🌟💡 --- + +## 第9条:魔幻俄罗斯方块(下) + +**授课日期**:2026-05-10 + +**课评内容**: + +嘉博本节课表现超棒~是课堂上最积极、效率最高的同学之一,每次老师布置任务都能快速响应、率先完成,无论是作品上传还是游戏测试都做得又快又好,学习态度认真、执行力特别强!💪 + +对《魔幻俄罗斯方块(下)》的知识点,特别是增量需求文档、自动化测试、测试覆盖和边界条件,掌握得很扎实~课堂上能安静专注地完成各项操作,主动配合老师的教学安排,还积极参与后续的比赛沟通,展现出很强的上进心与规则意识,特别棒!✨ + +希望你继续保持这份高效与认真,在AI编程学习中不断探索,做出更完善的作品~老师会继续关注嘉博的表现,期待看到更多精彩!🌟💡 + +--- diff --git a/.claude/memory/class/AI03橙子周六1900/黄彦棋/feedback/20260426_第8课.md b/.claude/memory/class/AICODE03橙子周六1900/黄彦棋/feedback/20260426_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/黄彦棋/feedback/20260426_第8课.md rename to .claude/memory/class/AICODE03橙子周六1900/黄彦棋/feedback/20260426_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周六1900/黄彦棋/profile.md b/.claude/memory/class/AICODE03橙子周六1900/黄彦棋/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/黄彦棋/profile.md rename to .claude/memory/class/AICODE03橙子周六1900/黄彦棋/profile.md diff --git a/.claude/memory/class/AI03橙子周六1900/黄彦棋/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周六1900/黄彦棋/课评汇总-2026春季.md similarity index 100% rename from .claude/memory/class/AI03橙子周六1900/黄彦棋/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周六1900/黄彦棋/课评汇总-2026春季.md diff --git a/.claude/memory/class/AI03橙子周日0845/summaries/班级反馈模板.md b/.claude/memory/class/AICODE03橙子周日0845/summaries/班级反馈模板.md similarity index 100% rename from .claude/memory/class/AI03橙子周日0845/summaries/班级反馈模板.md rename to .claude/memory/class/AICODE03橙子周日0845/summaries/班级反馈模板.md diff --git a/.claude/memory/class/AI03橙子周日0845/summaries/群发文案模板.md b/.claude/memory/class/AICODE03橙子周日0845/summaries/群发文案模板.md similarity index 100% rename from .claude/memory/class/AI03橙子周日0845/summaries/群发文案模板.md rename to .claude/memory/class/AICODE03橙子周日0845/summaries/群发文案模板.md diff --git a/.claude/memory/class/AI03橙子周日0845/卢皓霖/feedback/20260427_第8课.md b/.claude/memory/class/AICODE03橙子周日0845/卢皓霖/feedback/20260427_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周日0845/卢皓霖/feedback/20260427_第8课.md rename to .claude/memory/class/AICODE03橙子周日0845/卢皓霖/feedback/20260427_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周日0845/卢皓霖/profile.md b/.claude/memory/class/AICODE03橙子周日0845/卢皓霖/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周日0845/卢皓霖/profile.md rename to .claude/memory/class/AICODE03橙子周日0845/卢皓霖/profile.md diff --git a/.claude/memory/class/AI03橙子周日0845/卢皓霖/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周日0845/卢皓霖/课评汇总-2026春季.md similarity index 86% rename from .claude/memory/class/AI03橙子周日0845/卢皓霖/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周日0845/卢皓霖/课评汇总-2026春季.md index 6115507..ffd937c 100644 --- a/.claude/memory/class/AI03橙子周日0845/卢皓霖/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/AICODE03橙子周日0845/卢皓霖/课评汇总-2026春季.md @@ -104,3 +104,15 @@ 老师会继续关注皓霖的表现,期待看到更多进步!🌟💪 --- + +## 第9条:魔幻俄罗斯方块(下) + +**授课日期**:2026-05-11 + +**课评内容**: + +皓霖本节课学习积极性很高,特别棒~对《魔幻俄罗斯方块(下)》的知识点,特别是增量需求文档、自动化测试、测试覆盖和边界条件,有一定了解~在体验俄罗斯方块时积极发现游戏中的问题并及时和老师沟通,动手实践能力很强!能够跟上老师节奏完成需求重命名、审核任务创建等操作,也愿意配合老师上传作品、参与游戏优化,整体参与度很好~ + +要是上课的时候能更好地保持专注,减少分心闲聊,把发现的 bug 认真整理优化,学习的严谨性就更好啦~老师会继续关注皓霖的表现,期待看到更多精彩!🌟💡 + +--- diff --git a/.claude/memory/class/AI03橙子周日0845/朱浩铭/feedback/20260427_第8课.md b/.claude/memory/class/AICODE03橙子周日0845/朱浩铭/feedback/20260427_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周日0845/朱浩铭/feedback/20260427_第8课.md rename to .claude/memory/class/AICODE03橙子周日0845/朱浩铭/feedback/20260427_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周日0845/朱浩铭/profile.md b/.claude/memory/class/AICODE03橙子周日0845/朱浩铭/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周日0845/朱浩铭/profile.md rename to .claude/memory/class/AICODE03橙子周日0845/朱浩铭/profile.md diff --git a/.claude/memory/class/AI03橙子周日0845/朱浩铭/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周日0845/朱浩铭/课评汇总-2026春季.md similarity index 84% rename from .claude/memory/class/AI03橙子周日0845/朱浩铭/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周日0845/朱浩铭/课评汇总-2026春季.md index e81f011..3455770 100644 --- a/.claude/memory/class/AI03橙子周日0845/朱浩铭/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/AICODE03橙子周日0845/朱浩铭/课评汇总-2026春季.md @@ -90,3 +90,15 @@ 要是课堂上能再安静专注一点,把更多精力放在作品上,效果一定会更棒~老师会继续关注浩铭的表现,期待看到更多精彩!🌟💡 --- + +## 第8条:魔幻俄罗斯方块(下) + +**授课日期**:2026-05-11 + +**课评内容**: + +浩铭本节课整体表现乖巧配合,很棒~对《魔幻俄罗斯方块(下)》的知识点,特别是增量需求文档、自动化测试、测试覆盖和边界条件,有一定了解~能够跟随老师完成需求审核、文件上传、游戏体验等课堂任务,遇到操作疑问会主动向老师请教,学习态度诚恳~在体验俄罗斯方块时积极参与测试,主动发现游戏操作中的问题,具备基本的问题感知能力~ + +希望你后续更勇敢地表达自己的思路,主动尝试优化作品,进一步提升独立思考与动手解决问题的能力~老师会继续关注浩铭的表现,期待看到更多精彩!🌟💡 + +--- diff --git a/.claude/memory/class/AI03橙子周日0845/杨翊弘/feedback/20260427_第8课.md b/.claude/memory/class/AICODE03橙子周日0845/杨翊弘/feedback/20260427_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周日0845/杨翊弘/feedback/20260427_第8课.md rename to .claude/memory/class/AICODE03橙子周日0845/杨翊弘/feedback/20260427_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周日0845/杨翊弘/profile.md b/.claude/memory/class/AICODE03橙子周日0845/杨翊弘/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周日0845/杨翊弘/profile.md rename to .claude/memory/class/AICODE03橙子周日0845/杨翊弘/profile.md diff --git a/.claude/memory/class/AI03橙子周日0845/杨翊弘/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周日0845/杨翊弘/课评汇总-2026春季.md similarity index 100% rename from .claude/memory/class/AI03橙子周日0845/杨翊弘/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周日0845/杨翊弘/课评汇总-2026春季.md diff --git a/.claude/memory/class/AI03橙子周日0845/黄俊博/feedback/20260427_第8课.md b/.claude/memory/class/AICODE03橙子周日0845/黄俊博/feedback/20260427_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周日0845/黄俊博/feedback/20260427_第8课.md rename to .claude/memory/class/AICODE03橙子周日0845/黄俊博/feedback/20260427_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周日0845/黄俊博/profile.md b/.claude/memory/class/AICODE03橙子周日0845/黄俊博/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周日0845/黄俊博/profile.md rename to .claude/memory/class/AICODE03橙子周日0845/黄俊博/profile.md diff --git a/.claude/memory/class/AI03橙子周日0845/黄俊博/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周日0845/黄俊博/课评汇总-2026春季.md similarity index 100% rename from .claude/memory/class/AI03橙子周日0845/黄俊博/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周日0845/黄俊博/课评汇总-2026春季.md diff --git a/.claude/memory/class/AI03橙子周日1400/summaries/班级反馈模板.md b/.claude/memory/class/AICODE03橙子周日1400/summaries/班级反馈模板.md similarity index 100% rename from .claude/memory/class/AI03橙子周日1400/summaries/班级反馈模板.md rename to .claude/memory/class/AICODE03橙子周日1400/summaries/班级反馈模板.md diff --git a/.claude/memory/class/AI03橙子周日1400/summaries/群发文案模板.md b/.claude/memory/class/AICODE03橙子周日1400/summaries/群发文案模板.md similarity index 100% rename from .claude/memory/class/AI03橙子周日1400/summaries/群发文案模板.md rename to .claude/memory/class/AICODE03橙子周日1400/summaries/群发文案模板.md diff --git a/.claude/memory/class/AI03橙子周日1400/余浩宸/feedback/20260427_第8课.md b/.claude/memory/class/AICODE03橙子周日1400/余浩宸/feedback/20260427_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周日1400/余浩宸/feedback/20260427_第8课.md rename to .claude/memory/class/AICODE03橙子周日1400/余浩宸/feedback/20260427_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周日1400/余浩宸/profile.md b/.claude/memory/class/AICODE03橙子周日1400/余浩宸/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周日1400/余浩宸/profile.md rename to .claude/memory/class/AICODE03橙子周日1400/余浩宸/profile.md diff --git a/.claude/memory/class/AI03橙子周日1400/余浩宸/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周日1400/余浩宸/课评汇总-2026春季.md similarity index 87% rename from .claude/memory/class/AI03橙子周日1400/余浩宸/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周日1400/余浩宸/课评汇总-2026春季.md index 363b7ff..cbfc25a 100644 --- a/.claude/memory/class/AI03橙子周日1400/余浩宸/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/AICODE03橙子周日1400/余浩宸/课评汇总-2026春季.md @@ -104,3 +104,15 @@ 老师会继续关注浩宸的学习状态,期待看到更多进步!🌟💪 --- + +## 第9条:魔幻俄罗斯方块(下) + +**授课日期**:2026-05-11 + +**课评内容**: + +浩宸今天后期表现不错~对《魔幻俄罗斯方块(下)》的知识点,特别是增量需求文档、自动化测试、测试覆盖和边界条件,有一定了解~虽然上课期间偶尔会分心,被老师提醒后有所收敛,后续也按照要求上传了俄罗斯方块的需求文档,能够完成课堂任务,跟上教学进度~四年级的男子汉,敢不敢挑战一下,下节课一开始就全神贯注,把专注力放在学习上,完成任务后再放松? + +老师相信你有这个能力,继续加油~老师会继续关注浩宸的学习状态,期待看到更多进步!🌟💪 + +--- diff --git a/.claude/memory/class/AI03橙子周日1400/吴浩睿/feedback/20260427_第8课.md b/.claude/memory/class/AICODE03橙子周日1400/吴浩睿/feedback/20260427_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周日1400/吴浩睿/feedback/20260427_第8课.md rename to .claude/memory/class/AICODE03橙子周日1400/吴浩睿/feedback/20260427_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周日1400/吴浩睿/profile.md b/.claude/memory/class/AICODE03橙子周日1400/吴浩睿/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周日1400/吴浩睿/profile.md rename to .claude/memory/class/AICODE03橙子周日1400/吴浩睿/profile.md diff --git a/.claude/memory/class/AI03橙子周日1400/吴浩睿/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周日1400/吴浩睿/课评汇总-2026春季.md similarity index 84% rename from .claude/memory/class/AI03橙子周日1400/吴浩睿/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周日1400/吴浩睿/课评汇总-2026春季.md index a6683a8..66b967a 100644 --- a/.claude/memory/class/AI03橙子周日1400/吴浩睿/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/AICODE03橙子周日1400/吴浩睿/课评汇总-2026春季.md @@ -90,3 +90,15 @@ 老师会继续关注浩睿的表现,期待看到更多创意!✨💡 --- + +## 第8条:魔幻俄罗斯方块(下) + +**授课日期**:2026-05-11 + +**课评内容**: + +浩睿今天表现超棒!课堂上积极参与互动,动手积极性很高~对《魔幻俄罗斯方块(下)》的知识点,特别是增量需求文档、自动化测试、测试覆盖和边界条件,有一定了解~主动尝试操作电脑完成俄罗斯方块项目,多次向老师反馈操作进度与遇到的问题,比如生成的俄罗斯方块碰到边界会变颜色,观察特别细致~还认真跟着老师的步骤新建文件夹、处理需求文档,这种主动探索和认真执行的态度特别棒~ + +继续保持这份积极好学的热情,你会越来越厉害的~老师会继续关注浩睿的表现,期待看到更多创意!✨💡 + +--- diff --git a/.claude/memory/class/AICODE03橙子周日1400/张玉辰/profile.md b/.claude/memory/class/AICODE03橙子周日1400/张玉辰/profile.md new file mode 100644 index 0000000..5b3be07 --- /dev/null +++ b/.claude/memory/class/AICODE03橙子周日1400/张玉辰/profile.md @@ -0,0 +1,103 @@ +# 学生画像 — 张玉辰 + +> 创建日期:2026-05-06 +> 最后更新:2026-05-06 +> 班级:周日下午1400AI03班 + +--- + +## 📋 基本信息 + +| 项目 | 内容 | +|------|------| +| 姓名 | 张玉辰 | +| 年级 | 待补充 | +| 年龄 | 待补充 | +| 性别 | 待补充 | +| 就读课程 | □ Kitten □ AIGC ✓ AI | +| 入学时间 | 待补充 | + +--- + +## 🎯 用户画像类型 + +**主要类型**:待评估 + +**具体表现**: +- 待补充 + +**推荐评语风格**:待确定 + +--- + +## 👤 性格特征 + +**性格关键词**:待补充 + +**性格描述**: +- **性格倾向**:待补充 +- **社交表现**:待补充 +- **情绪特点**:待补充 + +--- + +## 📚 学习状态 + +**学习阶段**:待评估 + +**课堂表现**: +- **听课状态**:待补充 +- **提问情况**:待补充 +- **完成任务情况**:待补充 + +**作业/作品情况**: +- 完成质量:待评估 +- 提交情况:待评估 +- 风格特点:待评估 + +--- + +## 💪 能力评估 + +| 能力维度 | 评分(1-5) | 说明 | +|----------|-----------|------| +| 逻辑思维 | ⭐☆☆☆☆ (待评估) | 待补充 | +| 学习接受 | ⭐☆☆☆☆ (待评估) | 待补充 | +| 作品完成 | ⭐☆☆☆☆ (待评估) | 待补充 | +| 创意表达 | ⭐☆☆☆☆ (待评估) | 待补充 | +| 打字速度 | ⭐☆☆☆☆ (待评估) | 待补充 | + +**优势能力**:待补充 +**待提升能力**:待补充 + +--- + +## 🎨 应对策略 + +**沟通方式**:待补充 + +**评语风格选择**:待补充 + +**激励机制**:待补充 + +**注意事项**:待补充 + +--- + +## 📝 典型评语示例 + +待补充 + +--- + +## 📈 成长记录 + +### 2026-05-06(画像创建) +- **初始评估**:新增学生,待后续观察评估 +- **评语风格**:待确定 +- **关注重点**:待确定 +- **能力短板**:待确定 + +--- + +*持续更新,见证成长* \ No newline at end of file diff --git a/.claude/memory/class/AI03橙子周日1400/张玉辰/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周日1400/张玉辰/课评汇总-2026春季.md similarity index 100% rename from .claude/memory/class/AI03橙子周日1400/张玉辰/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周日1400/张玉辰/课评汇总-2026春季.md diff --git a/.claude/memory/class/AICODE03橙子周日1400/曾乐凯/profile.md b/.claude/memory/class/AICODE03橙子周日1400/曾乐凯/profile.md new file mode 100644 index 0000000..9a765fc --- /dev/null +++ b/.claude/memory/class/AICODE03橙子周日1400/曾乐凯/profile.md @@ -0,0 +1,103 @@ +# 学生画像 — 曾乐凯 + +> 创建日期:2026-05-06 +> 最后更新:2026-05-06 +> 班级:周日下午1400AI03班 + +--- + +## 📋 基本信息 + +| 项目 | 内容 | +|------|------| +| 姓名 | 曾乐凯 | +| 年级 | 待补充 | +| 年龄 | 待补充 | +| 性别 | 待补充 | +| 就读课程 | □ Kitten □ AIGC ✓ AI | +| 入学时间 | 待补充 | + +--- + +## 🎯 用户画像类型 + +**主要类型**:待评估 + +**具体表现**: +- 待补充 + +**推荐评语风格**:待确定 + +--- + +## 👤 性格特征 + +**性格关键词**:待补充 + +**性格描述**: +- **性格倾向**:待补充 +- **社交表现**:待补充 +- **情绪特点**:待补充 + +--- + +## 📚 学习状态 + +**学习阶段**:待评估 + +**课堂表现**: +- **听课状态**:待补充 +- **提问情况**:待补充 +- **完成任务情况**:待补充 + +**作业/作品情况**: +- 完成质量:待评估 +- 提交情况:待评估 +- 风格特点:待评估 + +--- + +## 💪 能力评估 + +| 能力维度 | 评分(1-5) | 说明 | +|----------|-----------|------| +| 逻辑思维 | ⭐☆☆☆☆ (待评估) | 待补充 | +| 学习接受 | ⭐☆☆☆☆ (待评估) | 待补充 | +| 作品完成 | ⭐☆☆☆☆ (待评估) | 待补充 | +| 创意表达 | ⭐☆☆☆☆ (待评估) | 待补充 | +| 打字速度 | ⭐☆☆☆☆ (待评估) | 待补充 | + +**优势能力**:待补充 +**待提升能力**:待补充 + +--- + +## 🎨 应对策略 + +**沟通方式**:待补充 + +**评语风格选择**:待补充 + +**激励机制**:待补充 + +**注意事项**:待补充 + +--- + +## 📝 典型评语示例 + +待补充 + +--- + +## 📈 成长记录 + +### 2026-05-06(画像创建) +- **初始评估**:新增学生,待后续观察评估 +- **评语风格**:待确定 +- **关注重点**:待确定 +- **能力短板**:待确定 + +--- + +*持续更新,见证成长* \ No newline at end of file diff --git a/.claude/memory/class/AICODE03橙子周日1400/曾乐凯/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周日1400/曾乐凯/课评汇总-2026春季.md new file mode 100644 index 0000000..e684255 --- /dev/null +++ b/.claude/memory/class/AICODE03橙子周日1400/曾乐凯/课评汇总-2026春季.md @@ -0,0 +1,16 @@ +# 曾乐凯 课评汇总(2026春季) + +**班级**:周日下午1400AI03班 +**学生**:曾乐凯 + +--- + +## 待补充课评 + +**授课日期**:待补充 + +**课评内容**: +待补充 + +--- +*每次课后添加新的课评* \ No newline at end of file diff --git a/.claude/memory/class/AI03橙子周日1400/林俊宇/feedback/20260427_第8课.md b/.claude/memory/class/AICODE03橙子周日1400/林俊宇/feedback/20260427_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周日1400/林俊宇/feedback/20260427_第8课.md rename to .claude/memory/class/AICODE03橙子周日1400/林俊宇/feedback/20260427_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周日1400/林俊宇/profile.md b/.claude/memory/class/AICODE03橙子周日1400/林俊宇/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周日1400/林俊宇/profile.md rename to .claude/memory/class/AICODE03橙子周日1400/林俊宇/profile.md diff --git a/.claude/memory/class/AI03橙子周日1400/林俊宇/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周日1400/林俊宇/课评汇总-2026春季.md similarity index 85% rename from .claude/memory/class/AI03橙子周日1400/林俊宇/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周日1400/林俊宇/课评汇总-2026春季.md index a3801f7..eb5f2a2 100644 --- a/.claude/memory/class/AI03橙子周日1400/林俊宇/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/AICODE03橙子周日1400/林俊宇/课评汇总-2026春季.md @@ -88,3 +88,15 @@ 老师会继续关注俊宇的表现,期待看到更多惊喜!🎯✨ --- + +## 第8条:魔幻俄罗斯方块(下) + +**授课日期**:2026-05-11 + +**课评内容**: + +俊宇今天表现超棒!课堂上专注度很好~对《魔幻俄罗斯方块(下)》的知识点,特别是增量需求文档、自动化测试、测试覆盖和边界条件,有一定了解~操作电脑时遇到按上键方块一直变化的问题,及时向老师反馈,认真参与需求文档的选择题作答,全程遵守课堂纪律,积极配合老师完成每一步操作,还因为表现好获得了老师的积分奖励,特别厉害~ + +继续保持这份专注和积极的学习态度,你会越来越出色的~老师会继续关注俊宇的表现,期待看到更多精彩!🌟💡 + +--- diff --git a/.claude/memory/class/AI03橙子周日1400/贺楚悦/feedback/20260427_第8课.md b/.claude/memory/class/AICODE03橙子周日1400/贺楚悦/feedback/20260427_AICODE03-08.md similarity index 100% rename from .claude/memory/class/AI03橙子周日1400/贺楚悦/feedback/20260427_第8课.md rename to .claude/memory/class/AICODE03橙子周日1400/贺楚悦/feedback/20260427_AICODE03-08.md diff --git a/.claude/memory/class/AI03橙子周日1400/贺楚悦/profile.md b/.claude/memory/class/AICODE03橙子周日1400/贺楚悦/profile.md similarity index 100% rename from .claude/memory/class/AI03橙子周日1400/贺楚悦/profile.md rename to .claude/memory/class/AICODE03橙子周日1400/贺楚悦/profile.md diff --git a/.claude/memory/class/AI03橙子周日1400/贺楚悦/feedback/课评汇总-2026春季.md b/.claude/memory/class/AICODE03橙子周日1400/贺楚悦/课评汇总-2026春季.md similarity index 84% rename from .claude/memory/class/AI03橙子周日1400/贺楚悦/feedback/课评汇总-2026春季.md rename to .claude/memory/class/AICODE03橙子周日1400/贺楚悦/课评汇总-2026春季.md index 76bf028..7797bd1 100644 --- a/.claude/memory/class/AI03橙子周日1400/贺楚悦/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/AICODE03橙子周日1400/贺楚悦/课评汇总-2026春季.md @@ -88,3 +88,15 @@ 老师会继续关注楚悦的进步,期待看到更多精彩!🌸😊 --- + +## 第8条:魔幻俄罗斯方块(下) + +**授课日期**:2026-05-11 + +**课评内容**: + +楚悦今天表现很棒!全程跟着老师的教学节奏操作,特别认真~对《魔幻俄罗斯方块(下)》的知识点,特别是增量需求文档、自动化测试、测试覆盖和边界条件,有一定了解~在生成俄罗斯方块程序时,虽然出现了方块显示异常的问题,但没有放弃,耐心听老师讲解修改方法,配合完成需求文档审核与修正,这种遇到困难不放弃的态度特别珍贵~课堂纪律良好,一直保持专注~ + +继续保持这份认真踏实的学习态度,你会越来越优秀的~老师会继续关注楚悦的进步,期待看到更多精彩!🌸😊 + +--- diff --git a/.claude/memory/class/CSP03橙子周六0830/杨林轩/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周六0830/杨林轩/课评汇总-2026春季.md similarity index 80% rename from .claude/memory/class/CSP03橙子周六0830/杨林轩/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周六0830/杨林轩/课评汇总-2026春季.md index 6478255..6b2846f 100644 --- a/.claude/memory/class/CSP03橙子周六0830/杨林轩/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/CSP03橙子周六0830/杨林轩/课评汇总-2026春季.md @@ -122,3 +122,35 @@ 加油呀!💪✨ --- + +## 第10条:模拟算法 + +**授课日期**:2026-05-10 + +**课评内容**: + +家长好,本周学习的内容是《模拟算法》: +1. 掌握模拟算法的特征识别 +2. 学会题目要求的模拟实现 +3. 掌握过程模拟的基本方法 +4. 学会模拟中的边界处理 +5. 理解模拟算法与枚举的结合 + +林轩上课偶尔会分心,被老师发现看视频、闲聊,受到批评并被提醒扣金币。虽有纪律问题,但在讲解模拟算法、发牌公式时能跟上思路,在老师引导下参与题目分析,后续也尝试完成编程任务,整体能完成课堂基本要求。希望林轩能够更加自律,上课专注听讲,把精力集中在学习上,理解为什么这么写,不只是抄完就好~ + +## 【OJ做题数据】 + +**完成情况**: 1/3 (共5次提交) + +| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 | +|------|------|----------|----------|----------| +| CSP03-10A | ✅ 通过 | 5 | 多次尝试后通过 | — | +| CSP03-10B | ⬜ 未提交 | 0 | 未提交 | — | +| CSP03-10C | ⬜ 未提交 | 0 | 未提交 | — | + +**📊 分析**: 完成1题,A题通过但提交次数较多,B/C题未提交,建议课后继续完成。 +**错误分布**: 答案错误若干次。 + +加油呀!💪✨ + +--- diff --git a/.claude/memory/class/CSP03橙子周六0830/欧俊宇/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周六0830/欧俊宇/课评汇总-2026春季.md similarity index 80% rename from .claude/memory/class/CSP03橙子周六0830/欧俊宇/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周六0830/欧俊宇/课评汇总-2026春季.md index ea2690f..f2242f8 100644 --- a/.claude/memory/class/CSP03橙子周六0830/欧俊宇/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/CSP03橙子周六0830/欧俊宇/课评汇总-2026春季.md @@ -120,3 +120,36 @@ 加油呀!💪✨ --- + +## 第10条:模拟算法 + +**授课日期**:2026-05-10 + +**课评内容**: + +家长好,本周学习的内容是《模拟算法》: +1. 掌握模拟算法的特征识别 +2. 学会题目要求的模拟实现 +3. 掌握过程模拟的基本方法 +4. 学会模拟中的边界处理 +5. 理解模拟算法与枚举的结合 + +俊宇上课专注度较高,紧跟老师讲解模拟算法、发牌逻辑、机器人移动等知识点,能主动回应老师提问,还在讲解机器人移动题目时积极分享思路,主动配合老师上台讲题,遇到代码报错会及时反馈,认真完成编程练习,全程遵守课堂纪律,积极参与互动。希望俊宇继续保持这种积极的学习态度,在理解为什么这么写的基础上,尝试挑战更有深度的内容。 + +## 【OJ做题数据】 + +**完成情况**: 1/3 (共11次提交) + +| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 | +|------|------|----------|----------|----------| +| CSP03-10A | ✅ 通过 | 11 | 耐心调试 | WA×7 | +| CSP03-10B | ⬜ 未提交 | 0 | 未提交 | — | +| CSP03-10C | ⬜ 未提交 | 0 | 未提交 | — | + +**📊 分析**: 完成1题,A题通过但提交次数较多,B/C题未提交,建议课后继续完成。 +**错误分布**: 答案错误7次。 + +加油呀!💪✨ + +--- +claude diff --git a/.claude/memory/class/CSP03橙子周六0830/汪子杰/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周六0830/汪子杰/课评汇总-2026春季.md similarity index 80% rename from .claude/memory/class/CSP03橙子周六0830/汪子杰/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周六0830/汪子杰/课评汇总-2026春季.md index d93201f..a8a404e 100644 --- a/.claude/memory/class/CSP03橙子周六0830/汪子杰/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/CSP03橙子周六0830/汪子杰/课评汇总-2026春季.md @@ -120,3 +120,35 @@ 加油呀!💪✨ --- + +## 第10条:模拟算法 + +**授课日期**:2026-05-10 + +**课评内容**: + +家长好,本周学习的内容是《模拟算法》: +1. 掌握模拟算法的特征识别 +2. 学会题目要求的模拟实现 +3. 掌握过程模拟的基本方法 +4. 学会模拟中的边界处理 +5. 理解模拟算法与枚举的结合 + +子杰听课专注且反应灵敏,是课堂上思路最快的学生之一;在老师讲解代码时,能快速指出代码错误,比如变量初始化错误、循环条件写错等,逻辑思维敏锐;积极参与课堂互动,紧跟老师讲解节奏,快速理解模拟算法、加强for循环等知识点,还会和同学交流解题思路,学习效率高。希望子杰继续保持这种高效的学习状态,在理解为什么这么写的基础上,把细节处理得更到位。 + +## 【OJ做题数据】 + +**完成情况**: 1/3 (共7次提交) + +| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 | +|------|------|----------|----------|----------| +| CSP03-10A | ✅ 通过 | 7 | 耐心调试 | WA×3 | +| CSP03-10B | ⬜ 未提交 | 0 | 未提交 | — | +| CSP03-10C | ⬜ 未提交 | 0 | 未提交 | — | + +**📊 分析**: 完成1题,A题通过但提交次数较多,B/C题未提交,建议课后继续完成。 +**错误分布**: 答案错误3次。 + +加油呀!💪✨ + +--- diff --git a/.claude/memory/class/CSP03橙子周六0830/谢明泓/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周六0830/谢明泓/课评汇总-2026春季.md similarity index 77% rename from .claude/memory/class/CSP03橙子周六0830/谢明泓/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周六0830/谢明泓/课评汇总-2026春季.md index d6b290f..1c06a10 100644 --- a/.claude/memory/class/CSP03橙子周六0830/谢明泓/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/CSP03橙子周六0830/谢明泓/课评汇总-2026春季.md @@ -118,3 +118,35 @@ 加油呀!💪✨ --- + +## 第10条:模拟算法 + +**授课日期**:2026-05-10 + +**课评内容**: + +家长好,本周学习的内容是《模拟算法》: +1. 掌握模拟算法的特征识别 +2. 学会题目要求的模拟实现 +3. 掌握过程模拟的基本方法 +4. 学会模拟中的边界处理 +5. 理解模拟算法与枚举的结合 + +明泓严格遵守课堂纪律,上课不打闹、不闲聊,全程专注听讲模拟发牌、机器人网格移动、代码调试等内容;按老师要求一步步完成操作练习,认真理解每一步逻辑,紧跟课堂节奏;学习状态稳定,态度端正,全程认真跟进,积极配合老师的教学安排,踏实完成练习。希望明泓继续保持这种认真的学习态度,在理解为什么这么写的基础上,尝试挑战更有深度的内容。 + +## 【OJ做题数据】 + +**完成情况**: 1/3 (共5次提交) + +| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 | +|------|------|----------|----------|----------| +| CSP03-10A | ✅ 通过 | 5 | 多次尝试后通过 | WA×1 | +| CSP03-10B | ⬜ 未提交 | 0 | 未提交 | — | +| CSP03-10C | ⬜ 未提交 | 0 | 未提交 | — | + +**📊 分析**: 完成1题,A题通过但提交次数较多,B/C题未提交,建议课后继续完成。 +**错误分布**: 答案错误1次。 + +加油呀!💪✨ + +--- diff --git a/.claude/memory/class/CSP03橙子周六0830/谭锦程/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周六0830/谭锦程/课评汇总-2026春季.md similarity index 82% rename from .claude/memory/class/CSP03橙子周六0830/谭锦程/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周六0830/谭锦程/课评汇总-2026春季.md index 44eb2d7..603c706 100644 --- a/.claude/memory/class/CSP03橙子周六0830/谭锦程/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/CSP03橙子周六0830/谭锦程/课评汇总-2026春季.md @@ -122,3 +122,35 @@ 加油呀!💪✨ --- + +## 第10条:模拟算法 + +**授课日期**:2026-05-10 + +**课评内容**: + +家长好,本周学习的内容是《模拟算法》: +1. 掌握模拟算法的特征识别 +2. 学会题目要求的模拟实现 +3. 掌握过程模拟的基本方法 +4. 学会模拟中的边界处理 +5. 理解模拟算法与枚举的结合 + +锦程课堂上较为活跃,会和同学讨论题目、分享代码思路,还主动在群里发送编程答案供同学参考,能跟上老师的编程教学步骤,参与模拟算法、机器人移动等题目练习,偶尔会闲聊,但能及时回到课堂,认真完成编程操作。希望锦程在保持活跃的同时,更加专注听讲,理解为什么这么写,不只是抄完就好~ + +## 【OJ做题数据】 + +**完成情况**: 1/3 (共9次提交) + +| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 | +|------|------|----------|----------|----------| +| CSP03-10A | ✅ 通过 | 9 | 耐心调试 | WA×5 | +| CSP03-10B | ⬜ 未提交 | 0 | 未提交 | — | +| CSP03-10C | ⬜ 未提交 | 0 | 未提交 | — | + +**📊 分析**: 完成1题,A题通过但提交次数较多,B/C题未提交,建议课后继续完成。 +**错误分布**: 答案错误5次。 + +加油呀!💪✨ + +--- diff --git a/.claude/memory/class/CSP03橙子周六1400/廖梓琪/communication/20260507_课时与续课沟通.md b/.claude/memory/class/CSP03橙子周六1400/廖梓琪/communication/20260507_课时与续课沟通.md new file mode 100644 index 0000000..1e5757d --- /dev/null +++ b/.claude/memory/class/CSP03橙子周六1400/廖梓琪/communication/20260507_课时与续课沟通.md @@ -0,0 +1,158 @@ +# 家长沟通记录 - 廖梓琪 + +> 沟通日期:2026-05-07 +> 沟通对象:廖梓琪爸爸 +> 沟通类型:课时查询 + 续课意向确认 + +--- + +## 📋 沟通背景 + +- **起因**:五一调休后本周六学校上课,需调整本周(5月第2周)的上课时间 +- **涉及课次**:CSP03班第9-10课(枚举算法) + +--- + +## 💬 完整沟通记录 + +### 5月6日(周二) + +**12:04 老师主动告知** +> 梓琪爸爸,本周周六学校要上课,然后我们的上课时间调整一下: +> +> 时间1:本周日10:30-12:30 +> 时间2:本周日16:00-18:00 +> +> 可以选择一个时间发给我,时间都不行的话,和我联系可以调整到其他老师的班级 + +**16:12 家长回复** +> 这两个时间都不好,因为梓琪星期日下午2点就要坐校车回学校,看星期六有哪些时间可以上[抱拳] + +**17:02 老师回复** +> 周六下午4:30-6:30 + +**18:06 家长回复** +> 嗯,我再想想吧,现在还剩多少课时 + +**18:37 老师回复** +> 我问一下前台,梓琪爸爸 + +**19:58 老师告知课时情况** +> 梓琪只剩下0.5课时了 + +**21:01 家长明确表态** +> 哦,没课时了,这上课的时间也不怎么样,那先不上了[抱拳] + +**21:18 老师回复** +> 好的[抱拳] + +### 5月7日(周三) + +**15:13 老师再次确认续课意向** +> 梓琪爸爸,那梓琪下周周六还和俊宇一起来学习嘛[坏笑] + +**17:36 家长最终回复** +> 只剩0.5课时,不去了 + +--- + +## 🎯 关键信息提取 + +| 项目 | 内容 | +|------|------| +| **剩余课时** | 0.5课时(已不足一次完整课) | +| **家长态度** | 明确表示暂时不上课,无续课意向 | +| **核心原因** | ① 课时即将耗尽 ② 时间调整不满意 ③ 无明确续课意愿 | +| **学生状态** | 近期进步显著,理解力强,正处于提升关键期 | + +--- + +## 📊 学生当前情况回顾 + +### 学习状态(截至第7课,4月18日) +- **进步情况**:4月后状态在线,表现积极,理解力很强,课堂反应不错 +- **最近一次出勤**:4月18日第7课(字符串处理),状态不错 +- **请假记录**:4月25日第8课(字符串小测与复习)请假,错过了小测 +- **待提升**:动手练习积极性、字符串函数记忆、专注力稳定性 +- **关键期**:正处于从"跟上节奏"到"熟练掌握"的提升关键期 + +### 错失与中断风险 +- 已错过:第8课字符串小测与复习(重要的知识点巩固环节) +- 即将错过:枚举算法(C++算法学习的重要基础) +- 学生进步势头良好,第7课状态在线,但第8课已请假中断一次 +- 初二是编程竞赛准备的黄金期,连续中断会影响学习进度和知识连贯性 +- 字符串是C++学习的核心内容,错过小测和复习可能导致知识断层 + +--- + +## 🔍 沟通分析 + +### 家长心理分析 +1. **对时间调整不满**:"这上课的时间也不怎么样" - 明显流露出对调课安排的不满意 +2. **课时耗尽为直接原因**:"只剩0.5课时,不去了" - 课时不足是明确的终止信号 +3. **续课意愿低**:两次沟通都明确表示不上课,没有询问续费或其他安排 + +### 可能的深层原因 +- 对调课安排不满意,产生负面情绪 +- 可能对课程效果或性价比有疑虑(未明确表达) +- 初二学业压力大,可能在权衡优先级 +- 可能有其他学习安排或经济因素考虑 + +--- + +## 📝 后续跟进建议 + +### 短期(本周内) +1. **❌ 暂时不再主动联系**:家长已明确表态,过度追问可能引起反感 +2. **✅ 记录备案**:保存本次沟通记录,标记为"暂停学习"状态 +3. **✅ 关注班级群动态**:观察家长是否在群内发言或有其他互动 + +### 中期(1-2周后) +1. **⭕ 可在朋友圈分享班级学习动态**:展示其他同学的进步和课程成果(不私聊打扰) +2. **⭕ 如有新班开课或优惠活动**:可在群内统一通知,不单独发消息 + +### 长期(1个月后或期末) +1. **⭕ 发送期末总结或阶段性学习建议**:以关心学生成长为出发点,不带销售目的 +2. **⭕ 如有合适的比赛或活动**:可礼貌性邀请,保持弱连接 + +### 沟通原则 + +**Betty老师传授的挽留策略(未使用,仅供后续参考):** +> 1. **轻松开场**:先开玩笑一样问"只是这周不上了吗?" +> 2. **如果明确表示以后都不来了**: +> - 反馈优秀的方面(重点肯定) +> - 温和提待提升的方面(少说点) +> - 把考级和比赛规划说一下,展示学习价值 +> - 最后说"坚持了这么久,至少把这个学期坚持完之类的" + +**本次沟通原则**: +- **尊重选择**:家长已两次明确表态,不强行挽留,避免引起反感 +- **保持专业**:即便不续课,也保持良好的专业形象 +- **留有余地**:不关闭沟通大门,欢迎随时回来 +- **关注成长**:以学生利益为出发点,而非单纯的续课 +- **时机选择**:本次未使用挽留策略,因为家长态度已非常明确,避免适得其反 + +--- + +## 💡 反思与改进 + +### 本次沟通中的亮点 +1. 主动告知调课信息,提供多个时间选项 +2. 及时查询并告知课时情况 +3. 尝试再次确认续课意向,尽到提醒责任 + +### 可改进之处 +1. **⏳ 课时预警机制**:在学生剩余2-3课时时就应该提前提醒家长,而不是只剩0.5课时才告知 +2. **⏳ 调课预案准备**:遇到调课时,应提前准备更多时间选项,或提前告知可能的调整 +3. **⏳ 续课沟通时机**:应在学生状态最好、进步最明显时自然提及续课,而非课时耗尽时 + +--- + +## 📌 学生出勤状态更新 + +- **本周(第9-10课,枚举算法)**:⏸ 请假/不上课(因课时耗尽) +- **后续状态**:待观察,暂不安排课程 + +--- + +*沟通记录已归档,持续关注学生动态* diff --git a/.claude/memory/class/CSP03橙子周六1400/廖梓琪/communication/沟通汇总-2026春季.md b/.claude/memory/class/CSP03橙子周六1400/廖梓琪/communication/沟通汇总-2026春季.md new file mode 100644 index 0000000..b06ff86 --- /dev/null +++ b/.claude/memory/class/CSP03橙子周六1400/廖梓琪/communication/沟通汇总-2026春季.md @@ -0,0 +1,61 @@ +# 家长沟通汇总 - 廖梓琪 + +> 学生:廖梓琪 +> 班级:橙子周六1400CSP03班 +> 统计周期:2026春季学期 + +--- + +## 📊 沟通统计 + +| 统计项 | 数量 | +|--------|------| +| **总沟通次数 | 1次 | +| **问题类型分布** | | +| - 课时与续课 | 1次 | +| - 请假补课 | 0次 | +| - 课程咨询 | 0次 | +| - 政策相关 | 0次 | +| - 学习建议 | 0次 | +| - 其他问题 | 0次 | + +--- + +## 📋 沟通记录列表 + +| 日期 | 问题类型 | 沟通对象 | 核心内容 | 处理结果 | 跟进状态 | +|------|----------|----------|----------|----------|----------| +| 2026-05-07 | 课时与续课 | 爸爸 | 五一调休后时间调整不满意,课时仅剩0.5课时,家长表示暂不上课 | 已记录,尊重家长选择 | ⏳ 待观察 | + +--- + +## 🎯 关键问题汇总 + +### 1. 续课意向 - 2026-05-07 +**问题**:课时即将耗尽,调课安排引起家长不满,明确表示暂不上课 +**处理**:尊重家长选择,不强行推销,保持弱连接 +**后续**:待观察,通过班级群互动,合适时机展示课程价值 +**备注**:学生正处于进步关键期,中断可惜 + +--- + +## 📈 学生情况说明 + +廖梓琪同学本学期进步非常明显,从3月初的"态度散漫、专注度极低",到4月后"状态在线、表现积极、理解力很强",是本学期进步最大的学生之一。 + +**当前学习状态**: +- ✅ 理解力强,知识点吸收快 +- ✅ 小测表现不错,字符串相关知识掌握良好 +- ✅ 能跟上课堂节奏,学习积极性明显提升 +- ⚠️ 动手练习积极性待提升 +- ⚠️ 专注力稳定性待加强 + +**当前状态:⏸ 暂停学习(课时耗尽) + +--- + +*持续关注,欢迎随时回来!🌟 + +--- + +*沟通汇总持续更新中 diff --git a/.claude/memory/class/CSP03橙子周六1400/廖梓琪/profile.md b/.claude/memory/class/CSP03橙子周六1400/廖梓琪/profile.md index d4c660c..1bc3e2b 100644 --- a/.claude/memory/class/CSP03橙子周六1400/廖梓琪/profile.md +++ b/.claude/memory/class/CSP03橙子周六1400/廖梓琪/profile.md @@ -160,9 +160,9 @@ - **引导**:督促认真听课,继续保持状态;督促认真完成笔记,把知识点手写整理到笔记本上 ### 2026-04-25(第8课 字符串小测与复习) -- **进步**:小测表现不错,字符串数组声明、find()函数、字符数组下标掌握得很好,理解力很强 -- **问题**:其他字符串函数记忆不够,输入时容易混淆字符数组和字符串数组的用法 -- **引导**:督促回家好好复习,认真整理笔记,重点区分字符数组和字符串数组的不同用法,多动手练习 +- **状态**:⏸ 请假,未上课 +- **说明**:错过了字符串小测与复习,这是重要的知识点巩固环节 +- **后续建议**:如果回来上课,需要安排时间补上字符串小测,重点复习字符串相关知识点 --- diff --git a/.claude/memory/class/CSP03橙子周六1400/廖梓琪/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周六1400/廖梓琪/课评汇总-2026春季.md similarity index 100% rename from .claude/memory/class/CSP03橙子周六1400/廖梓琪/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周六1400/廖梓琪/课评汇总-2026春季.md diff --git a/.claude/memory/class/CSP03橙子周六1400/张雨禾/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周六1400/张雨禾/课评汇总-2026春季.md similarity index 79% rename from .claude/memory/class/CSP03橙子周六1400/张雨禾/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周六1400/张雨禾/课评汇总-2026春季.md index 348209b..f2f66f8 100644 --- a/.claude/memory/class/CSP03橙子周六1400/张雨禾/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/CSP03橙子周六1400/张雨禾/课评汇总-2026春季.md @@ -67,4 +67,36 @@ 雨禾对本节课的枚举算法掌握得很不错!本节课的难度相较于上节课有所放缓,雨禾学习得也更加从容,能够独立完成所有题目,表现非常好,老师为你感到骄傲! 希望雨禾回去之后继续保持认真的学习态度,每天花10-15分钟复习巩固本节课的枚举算法知识点,养成及时复习的好习惯,减少知识点遗忘。做题的时候可以多检查几遍,慢慢养成细心的习惯,减少不必要的失误。继续加油,你一定会越来越优秀的! 加油呀!💪✨ +--- + +## 第10条:模拟算法 + +**授课日期**:2026-05-10 + +**课评内容**: + +家长好,本周学习的内容是《模拟算法》: +1. 掌握模拟算法的特征识别 +2. 学会题目要求的模拟实现 +3. 掌握过程模拟的基本方法 +4. 学会模拟中的边界处理 +5. 理解模拟算法与枚举的结合 + +雨禾本节课参与度很高,在老师讲解机器人移动方向时,主动回答问题,明确指出向上、向下、向左、向右对应的坐标变化,紧跟逻辑思考;在代码讲解环节能跟上节奏,积极回应老师的提问。课间参与积分兑换、奶茶兑换的讨论,遵守课堂纪律,整体配合度高,还会和老师确认代码输出顺序、坐标规则等细节。 + +## 【OJ做题数据】 + +**完成情况**: 1/3 (共7次提交) + +| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 | +|------|------|----------|----------|----------| +| CSP03-10A | ✅ 通过 | 7 | 耐心调试 | CE×2, WA×1 | +| CSP03-10B | ⬜ 未提交 | 0 | 未提交 | — | +| CSP03-10C | ⬜ 未提交 | 0 | 未提交 | — | + +**📊 分析**: 完成1题,A题通过,B/C题未提交,建议课后继续完成。 +**错误分布**: CE 2次, WA 1次。 + +加油呀!💪✨ + --- \ No newline at end of file diff --git a/.claude/memory/class/CSP03橙子周六1400/苏俊宇/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周六1400/苏俊宇/课评汇总-2026春季.md similarity index 77% rename from .claude/memory/class/CSP03橙子周六1400/苏俊宇/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周六1400/苏俊宇/课评汇总-2026春季.md index 3d27bdb..766ce5e 100644 --- a/.claude/memory/class/CSP03橙子周六1400/苏俊宇/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/CSP03橙子周六1400/苏俊宇/课评汇总-2026春季.md @@ -66,5 +66,36 @@ 5. 学会枚举法的代码实现,能够将枚举思想转化为程序代码 俊宇本节课表现很好!本节课的难度较上节课有所放缓,俊宇学习也变得更加自信,能够自己尝试着把这些代码通过自己的理解表达出来,这点进步非常大,老师为你感到高兴! 你的数学基础很好,逻辑思维能力很强,这对学习编程是非常大的优势。希望你继续保持这种积极的学习状态,课后多花点时间动手练习,把理解的思路转化为实际的代码,慢慢提升代码实现能力。只要坚持练习,你的编程能力一定会越来越强的! +加油呀!💪✨ +--- + +## 第10条:模拟算法 + +**授课日期**:2026-05-10 + +**课评内容**: + +家长好,本周学习的内容是《模拟算法》: +1. 掌握模拟算法的特征识别 +2. 学会题目要求的模拟实现 +3. 掌握过程模拟的基本方法 +4. 学会模拟中的边界处理 +5. 理解模拟算法与枚举的结合 + +俊宇课堂上积极思考编程逻辑,在模拟发牌、机器人移动等题目中主动参与规律推导,能准确回答老师提出的方向判断、边界判定问题,紧跟教学节奏完成代码编写,认真倾听讲解并及时调整操作,专注度高,积极配合课堂互动。希望俊宇继续保持这种积极的学习状态,课后记得把B、C题也完成,把理解的思路转化为实际的代码,慢慢提升代码实现能力。 + +## 【OJ做题数据】 + +**完成情况**: 1/3 (共12次提交) + +| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 | +|------|------|----------|----------|----------| +| CSP03-10A | ✅ 通过 | 12 | 耐心调试 | CE×6, UNKNOWN×2 | +| CSP03-10B | ⬜ 未提交 | 0 | 未提交 | — | +| CSP03-10C | ⬜ 未提交 | 0 | 未提交 | — | + +**📊 分析**: 完成1题,A题通过但提交次数较多,主要是编译错误,B/C题未提交,建议课后继续完成。 +**错误分布**: 编译错误6次,其他错误2次。 + 加油呀!💪✨ --- \ No newline at end of file diff --git a/.claude/memory/class/CSP03橙子周六1400/郑子煜/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周六1400/郑子煜/课评汇总-2026春季.md similarity index 100% rename from .claude/memory/class/CSP03橙子周六1400/郑子煜/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周六1400/郑子煜/课评汇总-2026春季.md diff --git a/.claude/memory/class/CSP03橙子周六1400/魏铭轩/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周六1400/魏铭轩/课评汇总-2026春季.md similarity index 77% rename from .claude/memory/class/CSP03橙子周六1400/魏铭轩/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周六1400/魏铭轩/课评汇总-2026春季.md index e6eb9f5..d8b275d 100644 --- a/.claude/memory/class/CSP03橙子周六1400/魏铭轩/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/CSP03橙子周六1400/魏铭轩/课评汇总-2026春季.md @@ -66,4 +66,36 @@ 铭轩本节课的状态越来越好!能够服从老师的安排,紧跟着老师的节奏完成所有题目,学习积极性很高,老师看到了你的持续进步,非常欣慰! 以你的聪明程度,只要继续保持这种认真的学习状态,课后多花点时间复习巩固本节课的枚举算法知识点,多做练习,一定能把这些知识掌握得很扎实。遇到问题的时候可以多尝试独立调试,慢慢提升自己解决问题的能力,你会越来越优秀的! 加油呀!💪✨ +--- + +## 第10条:模拟算法 + +**授课日期**:2026-05-10 + +**课评内容**: + +家长好,本周学习的内容是《模拟算法》: +1. 掌握模拟算法的特征识别 +2. 学会题目要求的模拟实现 +3. 掌握过程模拟的基本方法 +4. 学会模拟中的边界处理 +5. 理解模拟算法与枚举的结合 + +铭轩本节课头脑反应很快,思维特别活跃,上课能一直跟着老师的节奏走,老师讲的内容都能跟上,还会主动用模仿、接话的方式参与课堂,气氛带动能力很强,对课堂内容有兴趣、愿意投入。虽然偶尔话比较多、喜欢模仿老师说话,需要稍微提醒课堂纪律,但整体学习态度是积极的,听课专注度不错,愿意跟着互动,是个很有活力、反应机灵的孩子。 + +## 【OJ做题数据】 + +**完成情况**: 1/3 (共6次提交) + +| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 | +|------|------|----------|----------|----------| +| CSP03-10A | ✅ 通过 | 6 | 多次尝试后通过 | CE×2 | +| CSP03-10B | ⬜ 未提交 | 0 | 未提交 | — | +| CSP03-10C | ⬜ 未提交 | 0 | 未提交 | — | + +**📊 分析**: 完成1题,A题通过,B/C题未提交,建议课后继续完成。 +**错误分布**: CE 2次。 + +加油呀!💪✨ + --- \ No newline at end of file diff --git a/.claude/memory/class/CSP03橙子周日1030/卢华琛/feedback/20260427_第8课.md b/.claude/memory/class/CSP03橙子周日1030/卢华琛/feedback/20260427_CSP03-08.md similarity index 100% rename from .claude/memory/class/CSP03橙子周日1030/卢华琛/feedback/20260427_第8课.md rename to .claude/memory/class/CSP03橙子周日1030/卢华琛/feedback/20260427_CSP03-08.md diff --git a/.claude/memory/class/CSP03橙子周日1030/卢华琛/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周日1030/卢华琛/课评汇总-2026春季.md similarity index 79% rename from .claude/memory/class/CSP03橙子周日1030/卢华琛/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周日1030/卢华琛/课评汇总-2026春季.md index f709914..2531c8e 100644 --- a/.claude/memory/class/CSP03橙子周日1030/卢华琛/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/CSP03橙子周日1030/卢华琛/课评汇总-2026春季.md @@ -110,3 +110,35 @@ 加油呀!💪✨ --- + +## 第7条:模拟算法 + +**授课日期**:2026-05-11 + +**课评内容**: + +家长好,本周学习的内容是《模拟算法》: +1. 掌握模拟算法的特征识别 +2. 学会题目要求的模拟实现 +3. 掌握过程模拟的基本方法 +4. 学会模拟中的边界处理 +5. 理解模拟算法与枚举的结合 + +华琛能够跟着老师完成编程学习,参与机器人移动、蜗牛爬井等题目练习,但上课偶尔会注意力不集中、走神发呆;被老师提醒后能迅速回归课堂,继续跟进操作;较少主动发言和提问,能完成基础操作,但专注度需要加强,整体能遵守课堂纪律,不扰乱课堂。 + +## 【OJ做题数据】 + +**完成情况**: 1/3 (共9次提交) + +| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 | +|------|------|----------|----------|----------| +| CSP03-10A | ✅ 通过 | 9 | 耐心调试 | CE×3, WA×2 | +| CSP03-10B | ⬜ 未提交 | 0 | 未提交 | — | +| CSP03-10C | ⬜ 未提交 | 0 | 未提交 | — | + +**📊 分析**: 完成1题,A题通过,B/C题未提交,建议课后继续完成。 +**错误分布**: CE 3次, WA 2次。 + +加油呀!💪✨ + +--- diff --git a/.claude/memory/class/CSP03橙子周日1030/唐钎宸/feedback/20260427_第8课.md b/.claude/memory/class/CSP03橙子周日1030/唐钎宸/feedback/20260427_CSP03-08.md similarity index 100% rename from .claude/memory/class/CSP03橙子周日1030/唐钎宸/feedback/20260427_第8课.md rename to .claude/memory/class/CSP03橙子周日1030/唐钎宸/feedback/20260427_CSP03-08.md diff --git a/.claude/memory/class/CSP03橙子周日1030/唐钎宸/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周日1030/唐钎宸/课评汇总-2026春季.md similarity index 77% rename from .claude/memory/class/CSP03橙子周日1030/唐钎宸/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周日1030/唐钎宸/课评汇总-2026春季.md index f62d9ca..9233713 100644 --- a/.claude/memory/class/CSP03橙子周日1030/唐钎宸/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/CSP03橙子周日1030/唐钎宸/课评汇总-2026春季.md @@ -103,3 +103,35 @@ 加油呀!💪✨ --- + +## 第7条:模拟算法 + +**授课日期**:2026-05-11 + +**课评内容**: + +家长好,本周学习的内容是《模拟算法》: +1. 掌握模拟算法的特征识别 +2. 学会题目要求的模拟实现 +3. 掌握过程模拟的基本方法 +4. 学会模拟中的边界处理 +5. 理解模拟算法与枚举的结合 + +钎宸本节课整体表现比较安静,课堂上很少主动发言、提问,一直坐在后排默默上课,整体行为规矩、不吵闹、不打扰别人,能够正常跟上课堂流程。学习状态比较平稳,没有特别突出的表现,也没有出现违纪情况,整体表现中等,希望后续能更主动一点,多参与互动。 + +## 【OJ做题数据】 + +**完成情况**: 1/3 (共8次提交) + +| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 | +|------|------|----------|----------|----------| +| CSP03-10A | ✅ 通过 | 8 | 耐心调试 | CE×2, WA×2 | +| CSP03-10B | ⬜ 未提交 | 0 | 未提交 | — | +| CSP03-10C | ⬜ 未提交 | 0 | 未提交 | — | + +**📊 分析**: 完成1题,A题通过,B/C题未提交,建议课后继续完成。 +**错误分布**: CE 2次, WA 2次。 + +加油呀!💪✨ + +--- diff --git a/.claude/memory/class/CSP03橙子周日1030/王佳琳/feedback/20260427_第8课.md b/.claude/memory/class/CSP03橙子周日1030/王佳琳/feedback/20260427_CSP03-08.md similarity index 100% rename from .claude/memory/class/CSP03橙子周日1030/王佳琳/feedback/20260427_第8课.md rename to .claude/memory/class/CSP03橙子周日1030/王佳琳/feedback/20260427_CSP03-08.md diff --git a/.claude/memory/class/CSP03橙子周日1030/王佳琳/feedback/课评汇总-2026春季.md b/.claude/memory/class/CSP03橙子周日1030/王佳琳/课评汇总-2026春季.md similarity index 76% rename from .claude/memory/class/CSP03橙子周日1030/王佳琳/feedback/课评汇总-2026春季.md rename to .claude/memory/class/CSP03橙子周日1030/王佳琳/课评汇总-2026春季.md index 64eba44..d2a4799 100644 --- a/.claude/memory/class/CSP03橙子周日1030/王佳琳/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/CSP03橙子周日1030/王佳琳/课评汇总-2026春季.md @@ -103,3 +103,35 @@ 加油呀!💪✨ --- + +## 第10条:模拟算法 + +**授课日期**:2026-05-11 + +**课评内容**: + +家长好,本周学习的内容是《模拟算法》: +1. 掌握模拟算法的特征识别 +2. 学会题目要求的模拟实现 +3. 掌握过程模拟的基本方法 +4. 学会模拟中的边界处理 +5. 理解模拟算法与枚举的结合 + +佳琳学习非常主动,全程紧跟老师写代码,积极参与蜗牛爬井、机器人移动等题目的练习;多次主动找老师检查代码,自己发现并提出括号缺失、变量未定义、坐标判断错误等问题,会主动询问错误原因;对编程逻辑有疑问会立刻提出,敢于表达自己的困惑,学习热情高,但在代码书写细节上容易粗心。 + +## 【OJ做题数据】 + +**完成情况**: 1/3 (共14次提交) + +| 题目 | 状态 | 提交次数 | 思考模式 | 错误类型 | +|------|------|----------|----------|----------| +| CSP03-10A | ✅ 通过 | 14 | 耐心调试 | CE×5, UNKNOWN×1, WA×4 | +| CSP03-10B | ⬜ 未提交 | 0 | 未提交 | — | +| CSP03-10C | ⬜ 未提交 | 0 | 未提交 | — | + +**📊 分析**: 完成1题,A题通过,B/C题未提交,建议课后继续完成。 +**错误分布**: CE 5次, UNKNOWN 1次, WA 4次。 + +加油呀!💪✨ + +--- diff --git a/.claude/memory/class/K4橙子周五1900/彭煜腾/feedback/课评汇总-2026春季.md b/.claude/memory/class/K4橙子周五1900/彭煜腾/课评汇总-2026春季.md similarity index 100% rename from .claude/memory/class/K4橙子周五1900/彭煜腾/feedback/课评汇总-2026春季.md rename to .claude/memory/class/K4橙子周五1900/彭煜腾/课评汇总-2026春季.md diff --git a/.claude/memory/class/K4橙子周五1900/王晨语/feedback/课评汇总-2026春季.md b/.claude/memory/class/K4橙子周五1900/王晨语/课评汇总-2026春季.md similarity index 89% rename from .claude/memory/class/K4橙子周五1900/王晨语/feedback/课评汇总-2026春季.md rename to .claude/memory/class/K4橙子周五1900/王晨语/课评汇总-2026春季.md index 9b83d2e..c73028e 100644 --- a/.claude/memory/class/K4橙子周五1900/王晨语/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/K4橙子周五1900/王晨语/课评汇总-2026春季.md @@ -177,3 +177,22 @@ 继续加油哦!老师很期待看到你下一个有创意的作品!🌟😊 --- + +## 第10条:像素艺术画 + +**授课日期**:2026-05-09 + +**课评内容**: + +家长好,本周学习的内容是《像素艺术画》: +1. 复习掌握循环嵌套结构的应用原理 +2. 理解分支嵌套结构的条件判断逻辑 +3. 通过像素艺术画项目掌握网格坐标的计算方法 +4. 学习鼠标交互事件的处理(高亮、点击变色) +5. 培养空间思维能力和逻辑推理能力 + +晨语上课积极努力、敢于提问,虽然一开始对"设置"和"增加"坐标的区别不太理解,但他主动向老师请教,在反复讲解后快速开窍。他耐心跟着老师一步步搭建代码,认真区分固定坐标与移动坐标的使用场景,遇到问题不放弃,慢慢完善自己的像素画作品,全程坚持跟上课堂节奏,编程逻辑越来越清晰,进步十分明显。 + +继续加油哦!老师很期待看到你下一个有创意的作品!🌟😊 + +--- diff --git a/.claude/memory/class/K4橙子周五1900/郭艺嘉/feedback/课评汇总-2026春季.md b/.claude/memory/class/K4橙子周五1900/郭艺嘉/课评汇总-2026春季.md similarity index 89% rename from .claude/memory/class/K4橙子周五1900/郭艺嘉/feedback/课评汇总-2026春季.md rename to .claude/memory/class/K4橙子周五1900/郭艺嘉/课评汇总-2026春季.md index 66dd9ff..598cd54 100644 --- a/.claude/memory/class/K4橙子周五1900/郭艺嘉/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/K4橙子周五1900/郭艺嘉/课评汇总-2026春季.md @@ -181,3 +181,22 @@ 继续加油哦!老师会继续关注艺嘉的表现,期待看到你更棒的作品!🌟💪 --- + +## 第10条:像素艺术画 + +**授课日期**:2026-05-09 + +**课评内容**: + +家长好,本周学习的内容是《像素艺术画》: +1. 复习掌握循环嵌套结构的应用原理 +2. 理解分支嵌套结构的条件判断逻辑 +3. 通过像素艺术画项目掌握网格坐标的计算方法 +4. 学习鼠标交互事件的处理(高亮、点击变色) +5. 培养空间思维能力和逻辑推理能力 + +艺嘉在本节课思维活跃、反应极快,课堂参与度非常高。老师讲解像素画网格绘制时,他第一时间发现代码中Y坐标应该增加-80的关键问题,快速理解循环嵌套逻辑;在鼠标高亮、点击变色环节,他能准确判断积木摆放位置,动手能力强,完成速度快,还能主动分享思路,多次为同学做出示范,全程专注投入,学习效果很棒。 + +继续加油哦!期待看到你更棒的作品!🌟 + +--- diff --git a/.claude/memory/class/K4橙子周五1900/陈圆振/feedback/课评汇总-2026春季.md b/.claude/memory/class/K4橙子周五1900/陈圆振/课评汇总-2026春季.md similarity index 90% rename from .claude/memory/class/K4橙子周五1900/陈圆振/feedback/课评汇总-2026春季.md rename to .claude/memory/class/K4橙子周五1900/陈圆振/课评汇总-2026春季.md index f84fff7..4f9d141 100644 --- a/.claude/memory/class/K4橙子周五1900/陈圆振/feedback/课评汇总-2026春季.md +++ b/.claude/memory/class/K4橙子周五1900/陈圆振/课评汇总-2026春季.md @@ -175,3 +175,22 @@ 继续加油哦!相信你会把程序做得更完整! --- + +## 第10条:像素艺术画 + +**授课日期**:2026-05-09 + +**课评内容**: + +家长好,本周学习的内容是《像素艺术画》: +1. 复习掌握循环嵌套结构的应用原理 +2. 理解分支嵌套结构的条件判断逻辑 +3. 通过像素艺术画项目掌握网格坐标的计算方法 +4. 学习鼠标交互事件的处理(高亮、点击变色) +5. 培养空间思维能力和逻辑推理能力 + +圆振这节课表现很棒,他能清晰区分外层循环控制9行、内层循环控制12列,准确掌握X、Y坐标用法;面对老师提问,他能从容回答循环控制逻辑,对知识点理解扎实稳固。全程紧跟老师步骤,不急躁、不走神,一步一步完成编程任务,学习态度稳重可靠。 + +继续加油哦!相信你会把程序做得更完整! + +--- diff --git a/.claude/memory/class/K4橙子周日1900/梁境城/feedback/课评汇总-2026春季.md b/.claude/memory/class/K4橙子周日1900/梁境城/课评汇总-2026春季.md similarity index 100% rename from .claude/memory/class/K4橙子周日1900/梁境城/feedback/课评汇总-2026春季.md rename to .claude/memory/class/K4橙子周日1900/梁境城/课评汇总-2026春季.md diff --git a/.claude/memory/class/K4橙子周日1900/钟嘉逸/feedback/课评汇总-2026春季.md b/.claude/memory/class/K4橙子周日1900/钟嘉逸/课评汇总-2026春季.md similarity index 100% rename from .claude/memory/class/K4橙子周日1900/钟嘉逸/feedback/课评汇总-2026春季.md rename to .claude/memory/class/K4橙子周日1900/钟嘉逸/课评汇总-2026春季.md diff --git a/.claude/memory/class/橙子体验课/洋洋/profile.md b/.claude/memory/class/橙子体验课/洋洋/profile.md new file mode 100644 index 0000000..a5654da --- /dev/null +++ b/.claude/memory/class/橙子体验课/洋洋/profile.md @@ -0,0 +1,134 @@ +# 学生画像 — 洋洋 + +> 创建日期:2026-05-13 +> 最后更新:2026-05-13 + +--- + +## 📋 基本信息 + +| 项目 | 内容 | +|------|------| +| 姓名 | 洋洋 | +| 年级 | | +| 年龄 | | +| 性别 | | +| 就读课程 | ☑ AIGC | +| 入学时间 | 2026-04 | + +--- + +## 🎯 用户画像类型 + +**主要类型**:潜力待挖型 +- □ 内向谨慎型 +- □ 信心不足型 +- □ 新手入门型 +- □ 聪明浮躁型 +- ☑ 潜力待挖型 +- □ 容易满足型 + +**推荐评语风格**:☑ 鼓励型 □ 激励型 + +--- + +## 👤 性格特征 + +**性格关键词**:【待补充】 + +**性格描述**: +- 性格倾向:【待补充】 +- 社交表现:【待补充】 +- 情绪特点:【待补充】 + +--- + +## 📚 学习状态 + +**学习阶段**:刚入门 + +**课堂表现**: +- 听课状态:【待补充】 +- 提问情况:【待补充】 +- 完成任务情况:【待补充】 + +**作业/作品情况**: +- 完成质量:【待补充】 +- 提交情况:【待补充】 +- 风格特点:【待补充】 + +--- + +## 💪 能力评估 + +| 能力维度 | 评分(1-5) | 说明 | +|----------|-----------|------| +| 逻辑思维 | ⭐⭐⭐☆☆ | | +| 代码能力 | ⭐☆☆☆☆ | 刚接触编程 | +| 创意表达 | ⭐⭐⭐☆☆ | | +| 调试能力 | ⭐☆☆☆☆ | 刚接触编程 | +| 学习专注 | ⭐⭐⭐☆☆ | | + +--- + +## 🎨 应对策略 + +**沟通方式**: +- 温和鼓励,耐心引导 + +**评语风格选择**: +- 主要风格:鼓励型 +- 辅助风格:体验课转化型 + +**激励机制**: +- 夸奖创意和进步,展示作品成果 + +**注意事项**: +- 多鼓励,培养兴趣为主 + +--- +## 👨‍👩‍👧 家校沟通信息 + +**家长类型**: +- □ 成就导向型(关注成绩和排名) +- □ 发展导向型(关注能力和成长) +- □ 配合导向型(关注如何配合) +- ☑ 综合型(以上都有) + +**家长期望**: +- 【待补充】 + +**家庭学习环境**: +- 【待补充】 + +**家校沟通偏好**: +- 【待补充】 + +**家庭教育配合**: +- 【待补充】 + +--- + +## 📝 成长记录 + +### 2026-04-06 +- **记录**:参加AIGC体验课 +- **评语风格**:体验课转化型 +- **家长反馈**:【待补充】 + +--- + +## 📈 家长期望达成情况 + +### 已达成 +- 对编程产生兴趣 + +### 需要关注 +- 【待补充】 + +### 长期目标 +- 【待补充】 + +--- + +*持续更新,见证成长* \ No newline at end of file diff --git a/.claude/memory/class/体验课橙子/洋洋/feedback/课评汇总-2026春季.md b/.claude/memory/class/橙子体验课/洋洋/课评汇总-2026春季.md similarity index 100% rename from .claude/memory/class/体验课橙子/洋洋/feedback/课评汇总-2026春季.md rename to .claude/memory/class/橙子体验课/洋洋/课评汇总-2026春季.md diff --git a/.claude/memory/oj/analysis/CSP03-09_student_analysis.json b/.claude/memory/oj/analysis/CSP03-09_student_analysis.json new file mode 100644 index 0000000..afa8480 --- /dev/null +++ b/.claude/memory/oj/analysis/CSP03-09_student_analysis.json @@ -0,0 +1,287 @@ +{ + "course": "CSP03-09", + "title": "CSP03第9次课", + "date": "2026-05-06", + "class": "橙子周六0830CSP03班", + "students": [ + { + "name": "杨林轩", + "problems": { + "CSP03-09A": { + "label": "CSP03-09A", + "attempts": 12, + "solved": true, + "pattern": "耐心调试", + "errors": { + "WA": 6 + }, + "submit_times": [ + "2026-05-01T09:08:24", + "2026-05-01T09:19:42", + "2026-05-01T09:34:27", + "2026-05-01T09:38:18", + "2026-05-01T09:58:06", + "2026-05-01T10:00:19", + "2026-05-01T10:02:49", + "2026-05-01T10:03:57", + "2026-05-01T10:13:34", + "2026-05-01T10:37:23", + "2026-05-01T10:41:03", + "2026-05-01T10:43:08" + ] + }, + "CSP03-09B": { + "label": "CSP03-09B", + "attempts": 4, + "solved": true, + "pattern": "多次尝试后通过", + "errors": {}, + "submit_times": [ + "2026-05-01T11:04:50", + "2026-05-01T11:05:22", + "2026-05-01T11:11:33", + "2026-05-01T11:16:01" + ] + }, + "CSP03-09C": { + "label": "CSP03-09C", + "attempts": 0, + "solved": false, + "pattern": "未提交", + "errors": {}, + "submit_times": [] + } + }, + "total_solved": 2, + "total_attempts": 16, + "total_errors": { + "WA": 6 + }, + "patterns": [], + "completion": "2/3" + }, + { + "name": "欧俊宇", + "problems": { + "CSP03-09A": { + "label": "CSP03-09A", + "attempts": 13, + "solved": true, + "pattern": "耐心调试", + "errors": { + "WA": 2, + "CE": 3 + }, + "submit_times": [ + "2026-05-01T09:07:42", + "2026-05-01T09:10:23", + "2026-05-01T09:11:12", + "2026-05-01T09:14:01", + "2026-05-01T09:15:41", + "2026-05-01T09:16:22", + "2026-05-01T09:34:27", + "2026-05-01T10:04:16", + "2026-05-01T10:08:59", + "2026-05-01T10:15:12", + "2026-05-01T10:38:18", + "2026-05-01T10:41:22", + "2026-05-01T10:48:13" + ] + }, + "CSP03-09B": { + "label": "CSP03-09B", + "attempts": 8, + "solved": true, + "pattern": "耐心调试", + "errors": { + "WA": 5 + }, + "submit_times": [ + "2026-05-01T11:27:02", + "2026-05-01T11:28:03", + "2026-05-01T11:32:13", + "2026-05-01T11:34:45", + "2026-05-01T11:43:39", + "2026-05-01T11:47:10", + "2026-05-01T11:47:37", + "2026-05-01T11:50:49" + ] + }, + "CSP03-09C": { + "label": "CSP03-09C", + "attempts": 0, + "solved": false, + "pattern": "未提交", + "errors": {}, + "submit_times": [] + } + }, + "total_solved": 2, + "total_attempts": 21, + "total_errors": { + "WA": 7, + "CE": 3 + }, + "patterns": [], + "completion": "2/3" + }, + { + "name": "汪子杰", + "problems": { + "CSP03-09A": { + "label": "CSP03-09A", + "attempts": 9, + "solved": true, + "pattern": "耐心调试", + "errors": { + "WA": 3 + }, + "submit_times": [ + "2026-05-01T09:09:32", + "2026-05-01T09:13:35", + "2026-05-01T09:14:32", + "2026-05-01T09:17:20", + "2026-05-01T09:22:50", + "2026-05-01T10:07:19", + "2026-05-01T10:13:00", + "2026-05-01T10:14:12", + "2026-05-03T11:10:38" + ] + }, + "CSP03-09B": { + "label": "CSP03-09B", + "attempts": 3, + "solved": true, + "pattern": "调试改进", + "errors": { + "WA": 1 + }, + "submit_times": [ + "2026-05-03T11:17:06", + "2026-05-03T11:27:43", + "2026-05-03T18:20:11" + ] + }, + "CSP03-09C": { + "label": "CSP03-09C", + "attempts": 0, + "solved": false, + "pattern": "未提交", + "errors": {}, + "submit_times": [] + } + }, + "total_solved": 2, + "total_attempts": 12, + "total_errors": { + "WA": 4 + }, + "patterns": [], + "completion": "2/3" + }, + { + "name": "谢明泓", + "problems": { + "CSP03-09A": { + "label": "CSP03-09A", + "attempts": 5, + "solved": true, + "pattern": "多次尝试后通过", + "errors": {}, + "submit_times": [ + "2026-05-05T10:46:21", + "2026-05-05T11:03:53", + "2026-05-05T11:11:09", + "2026-05-05T11:46:32", + "2026-05-05T12:04:05" + ] + }, + "CSP03-09B": { + "label": "CSP03-09B", + "attempts": 1, + "solved": true, + "pattern": "一气呵成", + "errors": {}, + "submit_times": [ + "2026-05-05T12:32:20" + ] + }, + "CSP03-09C": { + "label": "CSP03-09C", + "attempts": 0, + "solved": false, + "pattern": "未提交", + "errors": {}, + "submit_times": [] + } + }, + "total_solved": 2, + "total_attempts": 6, + "total_errors": {}, + "patterns": [], + "completion": "2/3" + }, + { + "name": "谭锦程", + "problems": { + "CSP03-09A": { + "label": "CSP03-09A", + "attempts": 10, + "solved": true, + "pattern": "耐心调试", + "errors": { + "CE": 3, + "WA": 1 + }, + "submit_times": [ + "2026-05-01T09:08:43", + "2026-05-01T09:19:48", + "2026-05-01T09:29:08", + "2026-05-01T09:29:24", + "2026-05-01T09:29:54", + "2026-05-01T09:31:10", + "2026-05-01T10:06:17", + "2026-05-01T10:08:39", + "2026-05-01T10:13:34", + "2026-05-01T10:29:39" + ] + }, + "CSP03-09B": { + "label": "CSP03-09B", + "attempts": 4, + "solved": true, + "pattern": "多次尝试后通过", + "errors": {}, + "submit_times": [ + "2026-05-01T11:01:44", + "2026-05-01T11:06:32", + "2026-05-01T11:07:01", + "2026-05-01T11:09:34" + ] + }, + "CSP03-09C": { + "label": "CSP03-09C", + "attempts": 2, + "solved": true, + "pattern": "调试改进", + "errors": { + "WA": 1 + }, + "submit_times": [ + "2026-05-05T15:49:03", + "2026-05-05T15:50:32" + ] + } + }, + "total_solved": 3, + "total_attempts": 16, + "total_errors": { + "CE": 3, + "WA": 2 + }, + "patterns": [], + "completion": "3/3" + } + ], + "generated_at": "2026-05-06T14:56:16.733917" +} \ No newline at end of file diff --git a/.claude/memory/oj/analysis/CSP03-10_student_analysis.json b/.claude/memory/oj/analysis/CSP03-10_student_analysis.json new file mode 100644 index 0000000..df7f5dd --- /dev/null +++ b/.claude/memory/oj/analysis/CSP03-10_student_analysis.json @@ -0,0 +1,74 @@ +{ + "course": "CSP03-10", + "title": "模拟算法", + "date": "2026-05-10", + "class": "橙子CSP03合并", + "students": [ + { + "name": "杨林轩", + "problems": { + "CSP0309A1 银行叫号模拟": { + "label": "CSP0309A1 银行叫号模拟", + "raw_label": "CSP0309A1", + "attempts": 1, + "solved": true, + "pattern": "一气呵成", + "errors": {}, + "submit_times": [ + "2026-05-10T16:21:24" + ] + }, + "CSP0309A2 模拟发牌": { + "label": "CSP0309A2 模拟发牌", + "raw_label": "CSP0309A2", + "attempts": 1, + "solved": true, + "pattern": "一气呵成", + "errors": {}, + "submit_times": [ + "2026-05-10T16:54:17" + ] + }, + "CSP0309A3 蜗牛爬竿": { + "label": "CSP0309A3 蜗牛爬竿", + "raw_label": "CSP0309A3", + "attempts": 1, + "solved": true, + "pattern": "一气呵成", + "errors": {}, + "submit_times": [ + "2026-05-10T17:18:13" + ] + }, + "CSP0309A4 模拟走迷宫": { + "label": "CSP0309A4 模拟走迷宫", + "raw_label": "CSP0309A4", + "attempts": 1, + "solved": true, + "pattern": "一气呵成", + "errors": {}, + "submit_times": [ + "2026-05-10T18:00:18" + ] + }, + "CSP0309A5 模拟击鼓传花": { + "label": "CSP0309A5 模拟击鼓传花", + "raw_label": "CSP0309A5", + "attempts": 1, + "solved": true, + "pattern": "一气呵成", + "errors": {}, + "submit_times": [ + "2026-05-10T18:26:58" + ] + } + }, + "total_solved": 5, + "total_attempts": 5, + "total_errors": {}, + "patterns": [], + "completion": "5/5" + } + ], + "generated_at": "2026-05-10T20:54:55.781377" +} \ No newline at end of file diff --git a/.claude/rules/AIGC.md b/.claude/rules/AIGC.md index 94aca44..bbe49ef 100644 --- a/.claude/rules/AIGC.md +++ b/.claude/rules/AIGC.md @@ -34,9 +34,9 @@ --- -## 📌 温暖鼓励型(AI03班专属风格) +## 📌 温暖鼓励型(AICODE03班专属风格) -> **适用对象**:AI03班全体学生 +> **适用对象**:AICODE03班全体学生 > **语气特点**:温暖、亲切、鼓励、具体细节、表情符号 ### 风格特征 @@ -147,7 +147,7 @@ 3. 建议用"我们可以" - 拉近距离,建立伙伴关系 4. 避免"但是" - 用"同时"、"下一步"等过渡词 -**温暖鼓励型(AI03班风格)**: +**温暖鼓励型(AICODE03班风格)**: 1. 描述具体行为 - "一字一字打字"、"和AI聊了一节课"、"大声回答问题" 2. 提及具体知识点 - "角色设置+限制条件+输出格式"、"系统提示词优化" 3. 提及学生感兴趣的项目 - "恐怖故事大王"等 diff --git a/.claude/rules/oj_data.md b/.claude/rules/oj_data.md new file mode 100644 index 0000000..c29e73b --- /dev/null +++ b/.claude/rules/oj_data.md @@ -0,0 +1,107 @@ +# OJ数据获取规则 + +> 本文件定义了OJ数据获取和分析的技术规范。 + +## OJ系统信息 + +- **平台**: Hydro OJ +- **地址**: https://oj.qonnwolf.com +- **认证方式**: Cookie登录(POST `/login`,`uname` + `password`) +- **凭据来源**: `.env` 文件中的 `OJ_USERNAME` 和 `OJ_PASSWORD` + +## OJ课程结构 + +``` +课程 (course) → 课次 (period) → 作业包 (homework) → 题目 (problem) +``` + +- 课程ID示例:`6975984d71e15346c9e8fdc2` +- 课次ID示例:`69aa50c127e54d3ad7ed7ab7`(HTML中 `period-card` 的 `data-id`) +- 作业包ID示例:`69ad011c27e54d3ad7ef50d0`(homework系统的ID) + +## ⚠️ 重要规则 + +1. **OJ课次编号 ≠ 大纲编号**:OJ可能跳过或重排课次,必须按**标题匹配** +2. **只查A包(课堂练习)**:CSP03班OJ数据**只查询A作业包**,不查B/C包 +3. **A包包含多道具体题目**:每个A包通常包含3~5道具体题目(如`CSP0309A1 银行叫号模拟`、`CSP0309A2 模拟发牌`等),需在OJ板块中按具体题目列出 +4. **`hw_dict.json` 可能不准确**:如果配置的ID无数据,需要从课程页面重新查找 + +## 数据获取方式 + +### 方式1: 运行脚本(推荐,自动获取A包具体题目) + +```bash +python scripts/update_feedback_with_oj.py \ + --course CSP03-<课次编号> \ + --title "<课程名称>" \ + --class-name "<班级目录名>" \ + --date \ + --students "学生1,学生2,学生3" +``` + +脚本执行流程: +1. 从 `hw_dict.json` 加载A作业包ID(自动过滤B/C包) +2. 访问 `/homework/{hw_id}` 获取A包中的具体题目列表(如`银行叫号模拟`、`模拟发牌`等) +3. 抓取A包提交记录,按**具体题目**分析每个学生的完成情况 +4. 输出包含具体题目名称的OJ数据Markdown板块 + +### 方式2: 手动从作业页面获取 + +```python +import httpx, re +from pathlib import Path + +env = {} +for line in Path('.env').read_text(encoding='utf-8').split('\n'): + if '=' in line and not line.startswith('#'): + k, v = line.split('=', 1) + env[k] = v + +client = httpx.Client(base_url=env['OJ_BASE_URL'], follow_redirects=True) +client.post('/login', json={"uname": env['OJ_USERNAME'], "password": env['OJ_PASSWORD']}) + +# 获取A作业包中的具体题目列表 +hw_id = "69acffac27e54d3ad7ef5013" # CSP03-10A +r = client.get(f'/homework/{hw_id}') +problems = re.findall(r'href="/p/([^"?]+)\?tid=' + hw_id + r'"[^>]*>([^<]+)(?: |\s)*([^<]*)', r.text) +# 返回: [("CSP0309A1", "CSP0309A1", "银行叫号模拟"), ...] +``` + +## ��业ID映射 + +作业ID存储在 `config/hw_dict.json`,格式为: + +```json +{ + "CSP05-03": [ + {"title": "CSP05-03A", "id": "69ad011b27e54d3ad7ef50ca"}, + {"title": "CSP05-03B", "id": "69ad011d27e54d3ad7ef50dd"}, + {"title": "CSP05-03C", "id": "69ad012027e54d3ad7ef50f0"} + ] +} +``` + +A/B/C分别对应:课堂练习 / 课后作业 / 拓展练习 + +## 提交记录解析 + +从 `/record?tid={homework_id}&page={page}` 或 `/record?p={problem_id}&page={page}` 页面解析HTML获取: +- 学生ID和姓名 +- 题目ID和标题 +- 判题状态(Accepted→AC, Wrong Answer→WA, 等) +- 提交时间 + +## 分析指标 + +对每个学生每题生成: +- **完成状态**: 是否AC +- **提交次数**: 总提交数 +- **思考模式**: 一气呵成/调试改进/多次尝试/耐心调试/遇到困难 +- **错误分布**: WA/CE/RE/TLE各几次 + +## 完成率统计规则 + +- 完成率 = AC的题目数 / 总题目数 +- 总题目数以OJ实际为准(不固定) +- 如果只有1个作业包,统计该包内所有题目的完成情况 +- 如果有多个作业包,分别统计每类(课堂练习/课后作业/拓展练习)的完成情况 diff --git a/.claude/settings.local.json b/.claude/settings.local.json index cd504a3..51b3647 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -46,7 +46,13 @@ "Bash(curl *)", "Bash(python *)", "Bash(node index.js 2026-04-24 2026-04-26)", - "Bash(node *)" + "Bash(node *)", + "Bash(mv \"E:/cc/2code/ClassFeedback/.claude/memory/class/AI03橙子周六1900/黄浩\" \"E:/cc/2code/ClassFeedback/回收站/\")", + "Bash(mv \"E:/cc/2code/ClassFeedback/.claude/memory/class/AI03橙子周六1900/钟嘉鑫\" \"E:/cc/2code/ClassFeedback/回收站/\")", + "Bash(echo '| 2026-05-04 | 我的个人主页(下) | 第9课 | ✅ 出勤 |')", + "Bash(echo '| 2026-05-11 | 魔幻俄罗斯方块(下) | 第10课 | ✅ 出勤 |')", + "Bash(python3 *)", + "Bash(xargs dirname)" ] } } diff --git a/.claude/skills/AI03周报生成/skill.md b/.claude/skills/AI03周报生成/skill.md deleted file mode 100644 index bf1747e..0000000 --- a/.claude/skills/AI03周报生成/skill.md +++ /dev/null @@ -1,251 +0,0 @@ ---- -name: AI03周报生成 -description: 根据AI03班级(周五下午1700AI03班、周六晚上1900AI03班、周日早上0845AI03班、周日下午1400AI03班)的课评反馈自动生成教学周报。提供 /周报、/检查、/优化 命令。 -type: skill ---- - -# AI03 周报生成器 - -你是 AI03 课程周报助手,专门协助老师根据课评反馈生成教学周报。 - -## 命令 - -| 命令 | 别名 | 功能 | -|-----|------|------| -| `/周报` | `/gen`, `/report` | 根据本周课评生成教学周报 | -| `/检查` | `/check`, `/validate` | 检查周报格式是否完整 | -| `/优化` | `/opt`, `/improve` | 优化周报内容质量 | - -## AI03 班级信息 - -| 班级 | 学生名单 | -|------|----------| -| 周五下午1700AI03班 | 李梓宁 | -| 周六晚上1900AI03班 | 陈嘉博、王子墨、谭俊研、黄彦棋、黄浩、李承泽、钟嘉鑫 | -| 周日早上0845AI03班 | 卢皓霖、黄俊博、朱浩铭、杨翊弘 | -| 周日下午1400AI03班 | 余浩宸、贺楚悦、吴浩睿、林俊宇 | - -## 工作流程 - -### /周报 流程 - -1. 询问所属班级(如未提供) -2. 询问日期范围(如未提供,默认本周) -3. 自动读取该班级所有学生的课评反馈文件 -4. 汇总生成教学周报 -5. 输出完整周报 + 保存建议 - -**课评文件路径**:`.claude/memory/class/[班级]/[姓名]/feedback/` - -### 周报结构 - -```markdown -# AI 03橙子 教学周报_第X周 - -## 本周课程概况 - -- **课程主题**:{本周课程主题} -- **知识点**:{知识点列表} -- **班级**:AI03班(共{X}个班级,{Y}名学生) - ---- - -## 各班级表现汇总 - -### {班级名称}({人数}人) - -| 学生姓名 | 表现亮点 | 需要关注 | -|---------|---------|----------| -| {姓名} | {亮点简述} | {如有} | - -**整体评价**:{班级整体表现} - ---- - -## 学生表现亮点 - -### 积极参与 -- {学生姓名}:{具体表现} - -### 创意表现 -- {学生姓名}:{创意亮点} - -### 进步明显 -- {学生姓名}:{进步方面} - ---- - -## 需要关注的学生 - -| 学生姓名 | 班级 | 关注原因 | 建议措施 | -|---------|------|---------|----------| -| {姓名} | {班级} | {原因} | {措施} | - ---- - -## 本周教学反思 - -- **课程难度**:{评价} -- **学生接受度**:{评价} -- **改进方向**:{建议} - ---- - -## 下周教学计划 - -1. {计划内容1} -2. {计划内容2} -3. {计划内容3} - ---- - -*生成时间:{YYYY-MM-DD}* -``` - -### /检查 流程 - -1. 接收周报内容 -2. 检查是否包含以下必需部分: - - 本周课程概况 - - 各班级表现汇总 - - 学生表现亮点 - - 需要关注的学生 - - 本周教学反思 - - 下周教学计划 -3. 输出检查结果 - -### /优化 流程 - -1. 分析现有周报内容 -2. 针对以下方面优化: - - 补充具体学生表现案例 - - 完善教学反思内容 - - 细化下周教学计划 -3. 输出优化后的版本 - -## 课评解析指南 - -### 解析课评文件获取以下信息: - -**基本信息**: -- 课程名称 -- 日期 -- 学生姓名 -- 班级 - -**表现评价**: -- 掌握程度(有一定了解/深入理解/很好的掌握) -- 课堂互动(积极/认真听讲/专注/开小差) -- 具体行为(一字一字打字、大声回答、主动探索等) - -**亮点识别**: -- 创意表现(训练特殊AI、主动挑战、有趣提问) -- 学习态度(认真、专注、融入快) -- 技能掌握(打字速度、Prompt理解) - -**需关注信号**: -- 专注力下降 -- 开小差 -- 掌握程度待提高 - -## 输出示例 - -```markdown -# AI03教学周报_第4周_2026-03-28 - -## 本周课程概况 - -- **课程主题**:AI是怎么想的 -- **知识点**: - 1. Token和概率预测 - 2. AI的思考方式 - 3. 与AI对话技巧 -- **班级**:AI03班(共4个班级,16名学生) - ---- - -## 各班级表现汇总 - -### 周五下午1700AI03班(1人) - -| 学生姓名 | 表现亮点 | 需要关注 | -|---------|---------|----------| -| 李梓宁 | 打字速度快,主动探索日本故事 | 无 | - -**整体评价**:梓宁今天表现很棒~对Token和概率预测的知识点有一定了解,特别有探索精神! - -### 周六晚上1900AI03班(7人) - -| 学生姓名 | 表现亮点 | 需要关注 | -|---------|---------|----------| -| 陈嘉博 | ... | ... | -| 王子墨 | ... | ... | - -**整体评价**:... - ---- - -## 学生表现亮点 - -### 积极参与 -- 李梓宁:自己一字一字地和AI聊,去了解日本的故事 - -### 创意表现 -- 李梓宁:主动用AI问答查自己感兴趣的内容 - -### 进步明显 -- (暂无) - ---- - -## 需要关注的学生 - -| 学生姓名 | 班级 | 关注原因 | 建议措施 | -|---------|------|---------|----------| -| 暂无 | - | - | - | - ---- - -## 本周教学反思 - -- **课程难度**:适中,学生对AI思考方式表现出浓厚兴趣 -- **学生接受度**:良好,大部分学生能主动与AI对话 -- **改进方向**:可以增加更多互动环节,让学生更多分享探索成果 - ---- - -## 下周教学计划 - -1. 继续深入AI对话技巧训练 -2. 引入更复杂的Prompt优化方法 -3. 安排学生分享各自的AI探索成果 - ---- - -*生成时间:2026-03-28* -``` - -## 质量检查清单 - -生成/检查后,确认以下项: - -- [ ] 包含所有4个AI03班级 -- [ ] 每个学生都有简要评价 -- [ ] 提取了具体表现亮点 -- [ ] 识别了需要关注的学生 -- [ ] 包含教学反思内容 -- [ ] 下周计划具体可行 -- [ ] 使用 Markdown 格式,标题层级正确 - -## 使用技巧 - -**解析课评时**: -1. 注意提取学生的具体行为描述 -2. 识别课评中的表情符号和语气词,判断学生状态 -3. 关注"要是...就更好啦"这类建议性语句 - -**生成周报时**: -1. 用表格汇总学生表现更清晰 -2. 亮点部分按类别分类(参与、创意、进步) -3. 教学反思要基于实际课堂情况 -4. 下周计划要具体可操作 diff --git a/.claude/skills/AI03周报生成/橙子-第四周周报-2026-03-29.md b/.claude/skills/AI03周报生成/橙子-第四周周报-2026-03-29.md deleted file mode 100644 index e0316dd..0000000 --- a/.claude/skills/AI03周报生成/橙子-第四周周报-2026-03-29.md +++ /dev/null @@ -1,122 +0,0 @@ -# AI 03橙子 第四周周报 - -## 本周课程概况 - -- **课程主题**:AI大作家(上) -- **知识点**: - 1. 认识 Trae IDE Builder 模式 - 2. Markdown 魔法符号(#标题、-列表、**加粗) - 3. 三步设计故事(选类型、造主角、选地点) - 4. 用AI生成故事开头 -- **班级**:AI03班(共3个班级,15名学生) - ---- - -## 各班级表现汇总 - -### 周六晚上1900AI03班(7人) - -| 学生姓名 | 表现亮点 | 需要关注 | -|---------|---------|----------| -| 陈嘉博 | 跟着老师节奏完成三个部分,构思清晰;反英雄角色设计有创意;被选中参加机器人画图比赛 | 打字速度慢 | -| 王子墨 | 见识到AI的强大,感知力强;玫瑰红狼故事专业有创意 | 纪律较差,不爱打字,开小差 | -| 李承泽 | 勇敢朗读故事获掌声;有军事专业感的故事创作 | 前半段未跟节奏,后调整完成 | -| 黄浩 | 安静探索生成整部鬼故事;金筛法金字塔故事有神秘感 | 表现平稳,需发现优势 | -| 谭俊研 | 安静踏实跟随节奏;"野男人"凶宅故事反差设定有趣 | 打字慢但能耐心完成 | -| 黄彦棋 | 状态明显变好,遥遥领先;月球基地科幻故事有创意 | 保持细心,避免粗心 | -| 钟嘉鑫 | 展示"飞毛腿"活泼可爱;猪猪侠战斗故事紧张感强 | 自律不足,易看视频 | - -**整体评价**:大部分学生能跟着老师节奏完成三步设计,部分学生展现出色的故事构思能力。需继续关注王子墨的课堂纪律,以及嘉博打字速度的提升。 - ---- - -### 周日早上0845AI03班(4人) - -| 学生姓名 | 表现亮点 | 需要关注 | -|---------|---------|----------| -| 黄俊博 | 专注认真,主动用AI生成规则怪谈;对知识点掌握好 | 效率可提升 | -| 卢皓霖 | 状态回升,游戏次数下降;愿意调整故事类型 | 专注力和打字速度 | -| 朱浩铭 | 非常积极,玩AI很开心;巫师故事29条规则设定完整 | 课堂纪律 | -| 杨翊弘 | 请假 | - | - -**整体评价**:班级整体表现积极向上。皓霖状态明显回升值得肯定,浩铭的积极性和俊博的主动探索精神都很棒。下周期待全员到齐。 - ---- - -### 周日下午1400AI03班(4人) - -| 学生姓名 | 表现亮点 | 需要关注 | -|---------|---------|----------| -| 林俊宇 | 完整记录知识点,耐心细致;五六七武侠故事大纲完整 | 专注力可提升 | -| 余浩宸 | 断断续续坚持完成;dreem我的世界能力者故事有游戏融合感 | 专注力,自律 | -| 贺楚悦 | 及时跟上节奏,完成大纲;格蕾丝心理惊悚故事主题深刻 | 继续投入 | -| 吴浩睿 | 一直紧跟步伐,逻辑清晰;小帅恐怖悬疑故事有反转深度 | 保持好学态度 | - -**整体评价**:全班都能完成故事大纲,大部分学生明白了"先设计再写作"的流程。楚悦和浩睿表现稳定,浩宸虽有断续但坚持完成很棒。 - ---- - -## 学生表现亮点 - -### 积极参与 -- **钟嘉鑫**:一进教室就展示"飞毛腿",活泼开朗带动课堂气氛 -- **朱浩铭**:整节课充满活力,玩AI玩得很开心 -- **吴浩睿**:一直紧跟老师步伐,遥遥领先 -- **李承泽**:勇敢朗读故事获得同学掌声 - -### 创意表现 -- **陈嘉博**:反英雄杀手角色设计张力十足,"每天杀1人"限制设定有策略性 -- **王子墨**:玫瑰红狼金字塔大战,军事+诡异氛围融合有创意 -- **朱浩铭**:巫师故事29条规则设定完整,RPG探索感强 -- **林俊宇**:五六七武侠故事四章结构完整,悬疑反转巧妙 - -### 进步明显 -- **卢皓霖**:状态明显回升,游戏次数大幅下降,值得肯定 -- **黄彦棋**:状态越来越好,紧跟节奏成为班级标杆 -- **余浩宸**:虽然断断续续,但坚持完成小说框架 - ---- - -## 需要关注的学生 - -| 学生姓名 | 班级 | 关注原因 | 建议措施 | -|---------|------|---------|----------| -| 王子墨 | 周六晚上 | 纪律较差,不爱打字,开小差 | 请家长配合提醒,设定打字挑战目标 | -| 余浩宸 | 周日下午 | 专注力不足,容易断断续续 | 设定明确任务目标,完成后可适当放松 | -| 卢皓霖 | 周日早上 | 游戏次数虽有下降但仍有 | 继续正向鼓励,巩固状态回升成果 | - ---- - -## 故事创作特别说明 - -本周课程重点是**故事世界观设计**,部分学生在角色设定和故事类型上进行了**推翻重来**: - -- **卢皓霖**:从恐怖诡异故事调整为更适合自己的故事类型 -- **林俊宇**:完整构思五六七武侠故事,展现出色的世界观设计能力 -- **李承泽**:军事题材故事融入游戏元素,还原度高 - -**从下周开始**,学生们将正式进入**AI辅助写作阶段**,把设计好的故事框架用AI生成完整章节。需要关注学生对AI生成内容的理解和修改能力。 - ---- - -## 本周教学反思 - -- **课程难度**:适中,学生能理解三步设计法并完成故事框架 -- **学生接受度**:良好,大部分学生能跟着节奏完成,AI工具使用逐渐熟练 -- **改进方向**: - 1. 对故事类型反复调整的学生,给予更多肯定,鼓励坚持完成 - 2. 加强课堂纪律管理,尤其是活泼班级 - 3. 适当增加打字练习环节,提升整体效率 - ---- - -## 下周教学计划 - -1. **AI辅助写作**:指导学生用AI把故事框架扩展为完整章节 -2. **迭代修改训练**:学习如何用Prompt调整AI生成的内容 -3. **课堂纪律强化**:对开小差学生设定明确的任务目标和奖励机制 -4. **个人展示环节**:安排学生分享自己的故事创意 - ---- - -*穹狼科创 · AI 03橙子 · 第四周* diff --git a/.claude/skills/出勤记录/README.md b/.claude/skills/出勤记录/README.md deleted file mode 100644 index 65bc3c8..0000000 --- a/.claude/skills/出勤记录/README.md +++ /dev/null @@ -1,180 +0,0 @@ ---- -name: 出勤记录 -description: 查询和管理学生出勤情况,支持按学生姓名、班级、时间范围查询 ---- - -# 📊 出勤记录查询系统 - -## 功能说明 -本技能用于查询学生出勤情况,生成出勤报表。 - -## 🎯 核心逻辑 - -### 出勤记录文件位置 -``` -.claude/memory/class/[班级]/[学生姓名]/feedback/出勤登记-2026春季.md -``` - -### 出勤记录状态说明 -- **✅ 出勤**:学生正常上课 -- **⏸ 请假**:学生请假 -- **❌ 未上课**:学生未上课 - -## 📋 使用方法 - -### 方式1:查询某个学生 -``` -/出勤记录 陈嘉博 -``` -输出:陈嘉博本学期的所有出勤记录和出勤率统计 - -### 方式2:查询某个班级 -``` -/出勤记录 周六晚上1900AI03班 -``` -输出:该班级所有学生的出勤汇总表 - -### 方式3:查询指定月份 -``` -/出勤记录 陈嘉博 4月 -``` -输出:该学生4月份的出勤情况 - -### 方式4:查询全部 -``` -/出勤记录 -``` -输出:所有班级所有学生的出勤汇总 - -### 方式5:查询班级最近N节课出勤率 ⭐新增 -``` -/出勤记录 周六晚上1900AI03班 前3节课 -``` -输出:该班级从本周起往回数3节课的出勤情况 -- 例如:本周是第6课,则统计第4、5、6课的出勤情况 - -``` -/出勤记录 周六晚上1900AI03班 前4节课 -``` -输出:该班级从本周起往回数4节课的出勤情况 -- 例如:本周是第6课,则统计第3、4、5、6课的出勤情况 - -## 📊 输出格式 - -### 个人出勤记录 -``` -👤 学生:陈嘉博 -🏫 班级:周六晚上1900AI03班 -📅 学期:2026春季 - -| 日期 | 课程 | 课次 | 状态 | 备注 | -|------|------|------|------|------| -| 2026-04-06 | AI大作家下 | 第5课 | ✅ 出勤 | 已生成课评 | -| 2026-03-30 | AI大作家上 | 第4课 | ❌ 缺勤 | 病假 | -| 2026-03-23 | AI训练师 | 第3课 | ✅ 出勤 | 已生成课评 | - -📊 统计: -- 应出勤:5次 -- 实际出勤:4次 -- 缺勤:1次 -- 出勤率:80% -``` - -### 班级汇总表 -``` -📋 班级:周六晚上1900AI03班 -📅 学期:2026春季 - -| 学生姓名 | 应出勤 | 实际出勤 | 缺勤 | 出勤率 | -|----------|--------|----------|------|--------| -| 陈嘉博 | 5 | 4 | 1 | 80% | -| 谭俊研 | 5 | 5 | 0 | 100% | -| 李承泽 | 5 | 5 | 0 | 100% | -| 王子墨 | 5 | 4 | 1 | 80% | - -📊 班级总出勤率:90% -``` - -### 班级最近N节课出勤率表 ⭐新增 - -``` -📋 班级:周六晚上1900AI03班 -📊 统计范围:最近3节课(第4课-第6课) - -| 学生姓名 | 应出勤 | 实际出勤 | 缺勤 | 出勤率 | 缺勤课次 | -|----------|--------|----------|------|--------|----------| -| 陈嘉博 | 3 | 3 | 0 | 100% | - | -| 谭俊研 | 3 | 2 | 1 | 67% | 第5课 | -| 李承泽 | 3 | 3 | 0 | 100% | - | -| 王子墨 | 3 | 3 | 0 | 100% | - | -| 黄彦棋 | 3 | 1 | 2 | 33% | 第4,6课 | - -📊 班级最近3节课平均出勤率:75% (12/16人次) -⚠️ 需关注学生:谭俊研、黄彦棋 -``` - -## 🔧 实现步骤 - -当用户调用 `/出勤记录` 时: - -1. **解析参数** - - 读取用户输入的学生姓名、班级、时间范围 - - 如果参数包含"前N节课"(如"前3节课"、"前4节课"),标记为最近N节课查询模式 - - 确定查询范围 - -2. **定位文件夹** - - 根据班级名称定位到 `.claude/memory/class/[班级]/` - - 如果指定学生,再定位到具体学生文件夹 - -3. **读取出勤文件** - - 查找每个学生文件夹下的 `出勤登记-2026春季.md` - - 如果文件不存在,显示"暂无出勤记录" - -4. **解析表格数据** - - 提取表格中的每一行数据 - - 如果有日期筛选条件,筛选指定月份的记录 - - **如果是最近N节课查询**: - - 先从所有记录中找到最大课次(当前课次) - - 计算查询范围:当前课次-(N-1) 到 当前课次 - - 只保留该范围内的记录(如当前第6课,"前3节课"保留第4、5、6课) - - 记录每位学生的缺勤课次 - -5. **生成报表** - - 统计出勤、缺勤次数 - - 计算出勤率 - - **最近N节课查询特有统计**: - - 计算班级平均出勤率 - - 列出需关注学生(出勤率低于100%的学生) - - 显示每位学生的具体缺勤课次 - - 按格式输出报表 - -6. **返回结果** - - 显示清晰易读的出勤报表 - -## 💡 技巧提示 - -### 快速筛选 -- 可以用 "4月"、"3月" 等月份名称快速筛选 -- 可以用 "2026-04-06" 这样的具体日期查询单次出勤 -- 可以用 "前3节课"、"前4节课" 查询班级前N节课出勤情况 - -### 最近N节课查询使用场景 -- **阶段性检查**:了解学生最近3-4节课的出勤趋势 -- **重点关注**:找出近期缺勤或出勤率低的学生的具体缺勤课次 -- **动态跟踪**:每周更新,掌握最新出勤情况 - -**示例**: -- 本周是第6课,`前3节课` 查询的是第4、5、6课 -- 本周是第6课,`前4节课` 查询的是第3、4、5、6课 - -### 异常处理 -- 如果学生文件夹不存在,提示"该学生不在系统中" -- 如果出勤文件不存在,提示"该学生暂无出勤记录" -- 如果表格格式错误,提示"出勤记录文件格式有误" - -### 扩展功能 -未来可以添加: -- 导出Excel功能 -- 月度出勤对比 -- 缺勤原因统计 -- 出勤趋势图 diff --git a/.claude/skills/出勤记录/skill.md b/.claude/skills/出勤记录/skill.md deleted file mode 100644 index 663e848..0000000 --- a/.claude/skills/出勤记录/skill.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -name: 出勤记录 -description: 查询和管理学生出勤情况,支持按学生姓名、班级、时间范围查询 ---- - -# 出勤记录 Skill - -本技能用于查询和管理学生出勤情况。 - -## 使用方式 - -``` -/出勤记录 [学生姓名] [班级] [时间范围] -``` - -**参数说明**: -- `学生姓名`:可选,指定查询的学生 -- `班级`:可选,指定查询的班级 -- `时间范围`:可选,支持以下格式: - - 月份:如 "4月"、"2026-04" - - 最近N节课:如 "前3节课"、"前4节课"(从本周起往回数) - -## 示例 - -1. 查询某个学生本学期出勤: - ``` - /出勤记录 陈嘉博 - ``` - -2. 查询某个班级本月出勤: - ``` - /出勤记录 周六晚上1900AI03班 - ``` - -3. 查询某个学生指定月份出勤: - ``` - /出勤记录 陈嘉博 4月 - ``` - -4. 查询所有学生本学期出勤: - ``` - /出勤记录 - ``` - -5. 查询某个班级最近3节课出勤率(从本周起往回数): - ``` - /出勤记录 周六晚上1900AI03班 前3节课 - ``` - 例如:本周是第6课,则统计第4、5、6课的出勤情况 - -## 执行逻辑 - -1. 读取 `.claude/memory/class/` 下所有班级文件夹 -2. 根据参数筛选班级和学生 -3. 在学生的 `feedback/出勤登记-2026春季.md` 文件中查询出勤记录 -4. 统计出勤率、缺勤次数 -5. 生成清晰的出勤报表 - -### 查询前N节课出勤率逻辑(从本周起往回数) - -当用户输入包含"前3节课"、"前4节课"等关键词时: - -1. **确定当前课次**:从出勤记录中找到最大的课次号(如第6课) -2. **识别课次范围**:提取数字N,确定查询范围为:当前课次 - (N-1) 到 当前课次 - - 例如:本周是第6课,查询"前3节课" = 第4、5、6课 - - 例如:本周是第6课,查询"前4节课" = 第3、4、5、6课 -3. **筛选记录**:只统计课次在范围内的出勤记录 -4. **计算出勤率**:按学生统计这N节课的出勤率 -5. **生成报表**:输出班级前N节课出勤汇总表,包含: - - 每位学生前N节课的出勤次数 - - 每位学生的出勤率 - - 班级整体前N节课的平均出勤率 - - 缺勤学生名单提醒 diff --git a/.claude/skills/教学日程查询/README.md b/.claude/skills/教学日程查询/README.md deleted file mode 100644 index cf8a688..0000000 --- a/.claude/skills/教学日程查询/README.md +++ /dev/null @@ -1,145 +0,0 @@ -# 教学日程查询 Skill 使用说明 - -## 功能概述 -本技能**直接调用公司API获取实时教学排课数据**,支持查询指定日期或时间段的课程安排,自动生成功能完整的互动网页,帮助老师快速查询授课安排,查看学生名单和出勤情况,支持单天查询和任意时间段查询两种模式。 - -## 环境配置 -### 1. 依赖安装 -首次使用前需要安装技能依赖: -```bash -cd .claude/skills/教学日程查询 -npm install -``` - -### 2. API配置 -确保项目根目录下的 `.env` 文件包含正确的API配置: -```env -# 公司API地址 -API_BASE_URL=https://api.qonnwolf.com/api/v1 -# API认证令牌 -AUTHORIZATION=Bearer your_token_here -# 默认查询的老师姓名 -EMPLOYEE_NAME=橙子(程城) -``` - -## 快速开始 -### 1. 调用技能 -在Claude Code对话中输入,支持多种日期格式: -``` -# 方式1:查询单天 -/教学日程查询 # 查询当天日程 -/教学日程查询 2026-04-28 # 标准格式 -/教学日程查询 2026/04/28 # 斜杠格式 -/教学日程查询 20260428 # 纯数字格式 -/教学日程查询 4月28日 # 中文格式 -/教学日程查询 04-28 # 短格式(默认当前年份) - -# 方式2:查询时间段 -/教学日程查询 2026-04-01 2026-04-30 # 查询4月整个月的日程 -/教学日程查询 4月24日 4月26日 # 中文格式时间段 -/教学日程查询 20260422 20260428 # 纯数字格式时间段 -``` - -### 2. 查看结果 -技能执行完成后会返回网页链接,点击链接即可打开互动网页查看详细信息。 - -## 网页功能说明 -### 顶部功能区 -- **日期范围显示**:显示当前查询的日期范围和总天数 -- **搜索框**:输入日期、班级名称或学生姓名进行全局快速搜索 -- **导出按钮**:点击导出整个时间段的课表为Excel文件 -- **视图切换**:支持「按日期」和「按班级」两种视图模式一键切换 - -### 统计面板 -- 展示查询范围内的总天数、总课程数、总学生人次 -- 汇总出勤人次、缺勤人次,直观展示整体出勤情况 - -### 课表展示区 -#### 按日期视图(默认) -- 按日期分组展示,每天的课程独立排列 -- 日期头部粘性定位,滚动时始终可见 -- 每个日期组显示当日的课程数量、学生人次和出勤统计 -- 课程按时间顺序排列,每个课程以卡片形式展示 -- 卡片显示:班级名称、授课时间、授课老师、学生人数、出勤统计 -- 点击卡片展开查看该班级的详细学生名单 - -#### 按班级视图 -- 按班级分组展示,同一个班级的所有课程集中排列 -- 每个班级组显示课程次数和时间范围 -- 方便查看同一个班级在整个时间段内的所有上课情况 - -### 学生名单 -- 表格展示学生姓名和出勤状态 -- 出勤状态标识: - - ✅ 出勤:正常上课 - - ⏸ 请假:已请假 - - ❌ 缺勤:未上课 -- 支持按出勤状态筛选学生 - -### 导出功能 -导出的Excel文件包含以下信息: -- 课程日期 -- 班级名称 -- 授课时间 -- 授课老师 -- 教室 -- 学生姓名 -- 出勤状态 -- 备注信息 -* 时间段查询会导出所有日期的完整数据,自动按日期排序 - -## 目录结构 -``` -教学日程查询/ -├── index.js # 主程序文件,处理API调用和网页生成 -├── package.json # 依赖配置文件 -├── skill.md # Claude技能定义文件 -├── template.html # 网页模板文件 -└── README.md # 使用说明文档 -``` - -## 输出目录 -生成的文件保存在: -``` -# 单天查询 -.claude/output/teaching-schedule/2026-04-28/ -├── schedule.html # 互动网页 -└── schedule.json # 原始API数据 - -# 时间段查询 -.claude/output/teaching-schedule/2026-04-01_2026-04-30/ -├── schedule.html # 互动网页 -└── schedule.json # 原始API数据(包含多天的完整数据) -``` - -## 常见问题 -### Q: API调用失败提示认证失败? -A: 请检查项目根目录下 `.env` 文件中的 `AUTHORIZATION` 配置是否正确,令牌是否过期。 - -### Q: API调用失败提示网络错误? -A: 请检查网络连接是否正常,是否能够访问公司API地址,或者稍后重试。如果问题持续存在,请联系技术支持。 - -### Q: 为什么没有数据? -A: 可能是查询的日期没有排课,或者API返回数据为空。可以尝试查询其他日期,或者检查 `EMPLOYEE_NAME` 配置是否正确。 - -### Q: 导出的Excel文件打不开? -A: 请确保使用支持.xlsx格式的办公软件打开,如Microsoft Excel、WPS等。 - -### Q: 可以查询其他老师的课表吗? -A: 可以修改 `.env` 文件中的 `EMPLOYEE_NAME` 配置为要查询的老师姓名,支持模糊匹配。 - -## 更新日志 -### v1.1.0 (2026-04-28) -- ✨ 新增时间段查询功能,支持查询任意起止日期范围内的所有日程 -- ✨ 新增双视图展示模式:按日期视图、按班级视图,一键切换 -- ✨ 升级统计面板,展示总天数、总课程数、总学生人次等汇总信息 -- ✨ 搜索功能升级,支持按日期、班级、学生姓名全局搜索 -- ✨ 导出功能升级,支持导出整个时间段的完整数据 -- ✨ 优化界面设计,日期分组头部支持粘性定位,滚动浏览更方便 -- ♻️ 重构数据处理逻辑,支持多天数据的合并和展示 - -### v1.0.0 (2026-04-28) -- 初始版本发布 -- 支持基础的单天日程查询功能 -- 支持搜索、筛选、导出Excel功能 -- 响应式界面设计 diff --git a/.claude/skills/教学日程查询/index.js b/.claude/skills/教学日程查询/index.js deleted file mode 100644 index c985f88..0000000 --- a/.claude/skills/教学日程查询/index.js +++ /dev/null @@ -1,222 +0,0 @@ -#!/usr/bin/env node - -const fs = require('fs'); -const path = require('path'); -const axios = require('axios'); -require('dotenv').config({ path: path.join(__dirname, '../../../.env') }); - -// API配置 -const API_BASE_URL = process.env.API_BASE_URL || 'https://api.qonnwolf.com/api/v1'; -const AUTHORIZATION = process.env.AUTHORIZATION || ''; -const TEACHER_NAME = process.env.EMPLOYEE_NAME || '橙子(程城)'; - -// 日期处理工具函数 -function formatDate(date) { - const year = date.getFullYear(); - const month = String(date.getMonth() + 1).padStart(2, '0'); - const day = String(date.getDate()).padStart(2, '0'); - return `${year}-${month}-${day}`; -} - -function parseDate(dateStr) { - // 支持多种日期格式:2026-04-24、2026/04/24、20260424、04-24、4月24日等 - dateStr = dateStr.replace(/年|月/g, '-').replace(/日/g, ''); - - // 如果是短日期,默认使用当前年份 - if (/^\d{1,2}-\d{1,2}$/.test(dateStr)) { - const currentYear = new Date().getFullYear(); - dateStr = `${currentYear}-${dateStr}`; - } - - // 处理纯数字格式 - if (/^\d{8}$/.test(dateStr)) { - dateStr = `${dateStr.slice(0, 4)}-${dateStr.slice(4, 6)}-${dateStr.slice(6, 8)}`; - } - - // 替换斜杠为横杠 - dateStr = dateStr.replace(/\//g, '-'); - - const date = new Date(dateStr); - if (isNaN(date.getTime())) { - throw new Error(`无效的日期格式:${dateStr},请使用YYYY-MM-DD格式`); - } - return date; -} - -function getDateRange(startDateStr, endDateStr) { - const startDate = parseDate(startDateStr); - const endDate = endDateStr ? parseDate(endDateStr) : startDate; - - if (startDate > endDate) { - throw new Error('开始日期不能晚于结束日期'); - } - - const dates = []; - const currentDate = new Date(startDate); - while (currentDate <= endDate) { - dates.push(formatDate(currentDate)); - currentDate.setDate(currentDate.getDate() + 1); - } - return dates; -} - -// 调用API获取单天数据 -async function fetchSchedule(date) { - try { - console.log(`正在获取 ${date} 的教学日程数据...`); - const response = await axios.get(`${API_BASE_URL}/reports/teaching-schedule`, { - headers: { - 'Authorization': AUTHORIZATION - }, - params: { - teaching_date: date, - teacher_name: TEACHER_NAME - } - }); - - if (response.data.code !== 0) { - throw new Error(`API返回错误:${response.data.message}`); - } - - const data = response.data.data; - return { - teaching_date: date, - items: data.items.map(item => ({ - class_id: item.class_id, - class_name: item.class_name, - start_time: item.teaching_time_period.split('-')[0].trim(), - end_time: item.teaching_time_period.split('-')[1].trim(), - teacher_name: item.teacher_name, - classroom: item.school_name, - students: item.student_names.map(name => { - // 先默认都是出勤,后续可以根据实际出勤数据调整 - return { - student_name: name, - attendance_status: '✅ 出勤', - remark: '' - }; - }) - })) - }; - } catch (error) { - console.error(`获取 ${date} 数据失败:`, error.message); - throw error; - } -} - -// 批量获取日期范围内的数据 -async function fetchScheduleRange(dates) { - const scheduleData = []; - for (const date of dates) { - const data = await fetchSchedule(date); - scheduleData.push(data); - } - return scheduleData; -} - -// 生成HTML文件 -function generateHTML(scheduleData, startDate, endDate) { - // 读取模板文件 - const templatePath = path.join(__dirname, 'template.html'); - let template = fs.readFileSync(templatePath, 'utf-8'); - - // 生成日期范围显示文本 - const dateRangeText = startDate === endDate ? startDate : `${startDate} 至 ${endDate}`; - const updateTime = formatDate(new Date()) + ' ' + new Date().toTimeString().slice(0, 5); - - // 替换模板中的占位符 - template = template.replace(/{{dateRange}}/g, dateRangeText); - template = template.replace(/{{updateTime}}/g, updateTime); - template = template.replace(/{{totalDays}}/g, scheduleData.length); - template = template.replace(/const scheduleData = {{scheduleData}};/, `const scheduleData = ${JSON.stringify(scheduleData, null, 2)};`); - - // 确保输出目录存在 - const outputDir = path.join(__dirname, `../../../output/teaching-schedule/${dateRangeText.replace(/ 至 /g, '_')}`); - if (!fs.existsSync(outputDir)) { - fs.mkdirSync(outputDir, { recursive: true }); - } - - // 写入HTML文件 - const htmlPath = path.join(outputDir, 'schedule.html'); - fs.writeFileSync(htmlPath, template, 'utf-8'); - - // 写入JSON数据文件 - const jsonPath = path.join(outputDir, 'schedule.json'); - fs.writeFileSync(jsonPath, JSON.stringify(scheduleData, null, 2), 'utf-8'); - - return { - htmlPath, - jsonPath, - outputDir, - dateRangeText - }; -} - -// 主函数 -async function main() { - try { - // 解析命令行参数 - const args = process.argv.slice(2); - let startDateStr, endDateStr; - - if (args.length === 0) { - // 默认查询今天 - const today = new Date(); - startDateStr = formatDate(today); - endDateStr = startDateStr; - } else if (args.length === 1) { - // 查询单天 - startDateStr = args[0]; - endDateStr = startDateStr; - } else { - // 查询时间段 - startDateStr = args[0]; - endDateStr = args[1]; - } - - // 获取日期范围 - const dates = getDateRange(startDateStr, endDateStr); - const startDate = dates[0]; - const endDate = dates[dates.length - 1]; - - console.log(`查询日期范围:${startDate} 至 ${endDate}`); - console.log(`共 ${dates.length} 天`); - - // 获取数据 - const scheduleData = await fetchScheduleRange(dates); - - // 统计信息 - const totalClasses = scheduleData.reduce((sum, day) => sum + day.items.length, 0); - const totalStudents = scheduleData.reduce((sum, day) => { - return sum + day.items.reduce((daySum, cls) => daySum + cls.students.length, 0); - }, 0); - - console.log(`查询完成:共 ${totalClasses} 节课,${totalStudents} 人次`); - - // 生成HTML - const result = generateHTML(scheduleData, startDate, endDate); - - console.log(''); - console.log('✅ 教学日程生成成功!'); - console.log('📁 输出目录:', result.outputDir); - console.log('📄 网页文件:', result.htmlPath); - console.log('📊 数据文件:', result.jsonPath); - console.log(''); - console.log('直接打开schedule.html文件即可查看教学日程!'); - - } catch (error) { - console.error('❌ 生成失败:', error.message); - process.exit(1); - } -} - -// 运行主函数 -if (require.main === module) { - main(); -} - -module.exports = { - fetchSchedule, - fetchScheduleRange, - generateHTML -}; diff --git a/.claude/skills/教学日程查询/node_modules/.package-lock.json b/.claude/skills/教学日程查询/node_modules/.package-lock.json deleted file mode 100644 index af78ab7..0000000 --- a/.claude/skills/教学日程查询/node_modules/.package-lock.json +++ /dev/null @@ -1,302 +0,0 @@ -{ - "name": "teaching-schedule-query", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/axios": { - "version": "1.15.2", - "resolved": "https://registry.npmmirror.com/axios/-/axios-1.15.2.tgz", - "integrity": "sha512-wLrXxPtcrPTsNlJmKjkPnNPK2Ihe0hn0wGSaTEiHRPxwjvJwT3hKmXF4dpqxmPO9SoNb2FsYXj/xEo0gHN+D5A==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.11", - "form-data": "^4.0.5", - "proxy-from-env": "^2.1.0" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/follow-redirects": { - "version": "1.16.0", - "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.16.0.tgz", - "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/proxy-from-env": { - "version": "2.1.0", - "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-2.1.0.tgz", - "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - } - } -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/LICENSE b/.claude/skills/教学日程查询/node_modules/asynckit/LICENSE deleted file mode 100644 index c9eca5d..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 Alex Indigo - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/README.md b/.claude/skills/教学日程查询/node_modules/asynckit/README.md deleted file mode 100644 index ddcc7e6..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/README.md +++ /dev/null @@ -1,233 +0,0 @@ -# asynckit [![NPM Module](https://img.shields.io/npm/v/asynckit.svg?style=flat)](https://www.npmjs.com/package/asynckit) - -Minimal async jobs utility library, with streams support. - -[![PhantomJS Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=browser&style=flat)](https://travis-ci.org/alexindigo/asynckit) -[![Linux Build](https://img.shields.io/travis/alexindigo/asynckit/v0.4.0.svg?label=linux:0.12-6.x&style=flat)](https://travis-ci.org/alexindigo/asynckit) -[![Windows Build](https://img.shields.io/appveyor/ci/alexindigo/asynckit/v0.4.0.svg?label=windows:0.12-6.x&style=flat)](https://ci.appveyor.com/project/alexindigo/asynckit) - -[![Coverage Status](https://img.shields.io/coveralls/alexindigo/asynckit/v0.4.0.svg?label=code+coverage&style=flat)](https://coveralls.io/github/alexindigo/asynckit?branch=master) -[![Dependency Status](https://img.shields.io/david/alexindigo/asynckit/v0.4.0.svg?style=flat)](https://david-dm.org/alexindigo/asynckit) -[![bitHound Overall Score](https://www.bithound.io/github/alexindigo/asynckit/badges/score.svg)](https://www.bithound.io/github/alexindigo/asynckit) - - - -AsyncKit provides harness for `parallel` and `serial` iterators over list of items represented by arrays or objects. -Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (`ascending` and `descending`) and custom sort helpers also supported, via `asynckit.serialOrdered` method. - -It ensures async operations to keep behavior more stable and prevent `Maximum call stack size exceeded` errors, from sync iterators. - -| compression | size | -| :----------------- | -------: | -| asynckit.js | 12.34 kB | -| asynckit.min.js | 4.11 kB | -| asynckit.min.js.gz | 1.47 kB | - - -## Install - -```sh -$ npm install --save asynckit -``` - -## Examples - -### Parallel Jobs - -Runs iterator over provided array in parallel. Stores output in the `result` array, -on the matching positions. In unlikely event of an error from one of the jobs, -will terminate rest of the active jobs (if abort function is provided) -and return error along with salvaged data to the main callback function. - -#### Input Array - -```javascript -var parallel = require('asynckit').parallel - , assert = require('assert') - ; - -var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] - , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] - , target = [] - ; - -parallel(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); -}); - -// async job accepts one element from the array -// and a callback function -function asyncJob(item, cb) -{ - // different delays (in ms) per item - var delay = item * 25; - - // pretend different jobs take different time to finish - // and not in consequential order - var timeoutId = setTimeout(function() { - target.push(item); - cb(null, item * 2); - }, delay); - - // allow to cancel "leftover" jobs upon error - // return function, invoking of which will abort this job - return clearTimeout.bind(null, timeoutId); -} -``` - -More examples could be found in [test/test-parallel-array.js](test/test-parallel-array.js). - -#### Input Object - -Also it supports named jobs, listed via object. - -```javascript -var parallel = require('asynckit/parallel') - , assert = require('assert') - ; - -var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } - , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } - , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ] - , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ] - , target = [] - , keys = [] - ; - -parallel(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); - assert.deepEqual(keys, expectedKeys); -}); - -// supports full value, key, callback (shortcut) interface -function asyncJob(item, key, cb) -{ - // different delays (in ms) per item - var delay = item * 25; - - // pretend different jobs take different time to finish - // and not in consequential order - var timeoutId = setTimeout(function() { - keys.push(key); - target.push(item); - cb(null, item * 2); - }, delay); - - // allow to cancel "leftover" jobs upon error - // return function, invoking of which will abort this job - return clearTimeout.bind(null, timeoutId); -} -``` - -More examples could be found in [test/test-parallel-object.js](test/test-parallel-object.js). - -### Serial Jobs - -Runs iterator over provided array sequentially. Stores output in the `result` array, -on the matching positions. In unlikely event of an error from one of the jobs, -will not proceed to the rest of the items in the list -and return error along with salvaged data to the main callback function. - -#### Input Array - -```javascript -var serial = require('asynckit/serial') - , assert = require('assert') - ; - -var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] - , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] - , target = [] - ; - -serial(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); -}); - -// extended interface (item, key, callback) -// also supported for arrays -function asyncJob(item, key, cb) -{ - target.push(key); - - // it will be automatically made async - // even it iterator "returns" in the same event loop - cb(null, item * 2); -} -``` - -More examples could be found in [test/test-serial-array.js](test/test-serial-array.js). - -#### Input Object - -Also it supports named jobs, listed via object. - -```javascript -var serial = require('asynckit').serial - , assert = require('assert') - ; - -var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ] - , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ] - , target = [] - ; - -var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 } - , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 } - , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ] - , target = [] - ; - - -serial(source, asyncJob, function(err, result) -{ - assert.deepEqual(result, expectedResult); - assert.deepEqual(target, expectedTarget); -}); - -// shortcut interface (item, callback) -// works for object as well as for the arrays -function asyncJob(item, cb) -{ - target.push(item); - - // it will be automatically made async - // even it iterator "returns" in the same event loop - cb(null, item * 2); -} -``` - -More examples could be found in [test/test-serial-object.js](test/test-serial-object.js). - -_Note: Since _object_ is an _unordered_ collection of properties, -it may produce unexpected results with sequential iterations. -Whenever order of the jobs' execution is important please use `serialOrdered` method._ - -### Ordered Serial Iterations - -TBD - -For example [compare-property](compare-property) package. - -### Streaming interface - -TBD - -## Want to Know More? - -More examples can be found in [test folder](test/). - -Or open an [issue](https://github.com/alexindigo/asynckit/issues) with questions and/or suggestions. - -## License - -AsyncKit is licensed under the MIT license. diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/bench.js b/.claude/skills/教学日程查询/node_modules/asynckit/bench.js deleted file mode 100644 index c612f1a..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/bench.js +++ /dev/null @@ -1,76 +0,0 @@ -/* eslint no-console: "off" */ - -var asynckit = require('./') - , async = require('async') - , assert = require('assert') - , expected = 0 - ; - -var Benchmark = require('benchmark'); -var suite = new Benchmark.Suite; - -var source = []; -for (var z = 1; z < 100; z++) -{ - source.push(z); - expected += z; -} - -suite -// add tests - -.add('async.map', function(deferred) -{ - var total = 0; - - async.map(source, - function(i, cb) - { - setImmediate(function() - { - total += i; - cb(null, total); - }); - }, - function(err, result) - { - assert.ifError(err); - assert.equal(result[result.length - 1], expected); - deferred.resolve(); - }); -}, {'defer': true}) - - -.add('asynckit.parallel', function(deferred) -{ - var total = 0; - - asynckit.parallel(source, - function(i, cb) - { - setImmediate(function() - { - total += i; - cb(null, total); - }); - }, - function(err, result) - { - assert.ifError(err); - assert.equal(result[result.length - 1], expected); - deferred.resolve(); - }); -}, {'defer': true}) - - -// add listeners -.on('cycle', function(ev) -{ - console.log(String(ev.target)); -}) -.on('complete', function() -{ - console.log('Fastest is ' + this.filter('fastest').map('name')); -}) -// run async -.run({ 'async': true }); diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/index.js b/.claude/skills/教学日程查询/node_modules/asynckit/index.js deleted file mode 100644 index 455f945..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = -{ - parallel : require('./parallel.js'), - serial : require('./serial.js'), - serialOrdered : require('./serialOrdered.js') -}; diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/lib/abort.js b/.claude/skills/教学日程查询/node_modules/asynckit/lib/abort.js deleted file mode 100644 index 114367e..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/lib/abort.js +++ /dev/null @@ -1,29 +0,0 @@ -// API -module.exports = abort; - -/** - * Aborts leftover active jobs - * - * @param {object} state - current state object - */ -function abort(state) -{ - Object.keys(state.jobs).forEach(clean.bind(state)); - - // reset leftover jobs - state.jobs = {}; -} - -/** - * Cleans up leftover job by invoking abort function for the provided job id - * - * @this state - * @param {string|number} key - job id to abort - */ -function clean(key) -{ - if (typeof this.jobs[key] == 'function') - { - this.jobs[key](); - } -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/lib/async.js b/.claude/skills/教学日程查询/node_modules/asynckit/lib/async.js deleted file mode 100644 index 7f1288a..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/lib/async.js +++ /dev/null @@ -1,34 +0,0 @@ -var defer = require('./defer.js'); - -// API -module.exports = async; - -/** - * Runs provided callback asynchronously - * even if callback itself is not - * - * @param {function} callback - callback to invoke - * @returns {function} - augmented callback - */ -function async(callback) -{ - var isAsync = false; - - // check if async happened - defer(function() { isAsync = true; }); - - return function async_callback(err, result) - { - if (isAsync) - { - callback(err, result); - } - else - { - defer(function nextTick_callback() - { - callback(err, result); - }); - } - }; -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/lib/defer.js b/.claude/skills/教学日程查询/node_modules/asynckit/lib/defer.js deleted file mode 100644 index b67110c..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/lib/defer.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = defer; - -/** - * Runs provided function on next iteration of the event loop - * - * @param {function} fn - function to run - */ -function defer(fn) -{ - var nextTick = typeof setImmediate == 'function' - ? setImmediate - : ( - typeof process == 'object' && typeof process.nextTick == 'function' - ? process.nextTick - : null - ); - - if (nextTick) - { - nextTick(fn); - } - else - { - setTimeout(fn, 0); - } -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/lib/iterate.js b/.claude/skills/教学日程查询/node_modules/asynckit/lib/iterate.js deleted file mode 100644 index 5d2839a..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/lib/iterate.js +++ /dev/null @@ -1,75 +0,0 @@ -var async = require('./async.js') - , abort = require('./abort.js') - ; - -// API -module.exports = iterate; - -/** - * Iterates over each job object - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {object} state - current job status - * @param {function} callback - invoked when all elements processed - */ -function iterate(list, iterator, state, callback) -{ - // store current index - var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; - - state.jobs[key] = runJob(iterator, key, list[key], function(error, output) - { - // don't repeat yourself - // skip secondary callbacks - if (!(key in state.jobs)) - { - return; - } - - // clean up jobs - delete state.jobs[key]; - - if (error) - { - // don't process rest of the results - // stop still active jobs - // and reset the list - abort(state); - } - else - { - state.results[key] = output; - } - - // return salvaged results - callback(error, state.results); - }); -} - -/** - * Runs iterator over provided job element - * - * @param {function} iterator - iterator to invoke - * @param {string|number} key - key/index of the element in the list of jobs - * @param {mixed} item - job description - * @param {function} callback - invoked after iterator is done with the job - * @returns {function|mixed} - job abort function or something else - */ -function runJob(iterator, key, item, callback) -{ - var aborter; - - // allow shortcut if iterator expects only two arguments - if (iterator.length == 2) - { - aborter = iterator(item, async(callback)); - } - // otherwise go with full three arguments - else - { - aborter = iterator(item, key, async(callback)); - } - - return aborter; -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/lib/readable_asynckit.js b/.claude/skills/教学日程查询/node_modules/asynckit/lib/readable_asynckit.js deleted file mode 100644 index 78ad240..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/lib/readable_asynckit.js +++ /dev/null @@ -1,91 +0,0 @@ -var streamify = require('./streamify.js') - , defer = require('./defer.js') - ; - -// API -module.exports = ReadableAsyncKit; - -/** - * Base constructor for all streams - * used to hold properties/methods - */ -function ReadableAsyncKit() -{ - ReadableAsyncKit.super_.apply(this, arguments); - - // list of active jobs - this.jobs = {}; - - // add stream methods - this.destroy = destroy; - this._start = _start; - this._read = _read; -} - -/** - * Destroys readable stream, - * by aborting outstanding jobs - * - * @returns {void} - */ -function destroy() -{ - if (this.destroyed) - { - return; - } - - this.destroyed = true; - - if (typeof this.terminator == 'function') - { - this.terminator(); - } -} - -/** - * Starts provided jobs in async manner - * - * @private - */ -function _start() -{ - // first argument – runner function - var runner = arguments[0] - // take away first argument - , args = Array.prototype.slice.call(arguments, 1) - // second argument - input data - , input = args[0] - // last argument - result callback - , endCb = streamify.callback.call(this, args[args.length - 1]) - ; - - args[args.length - 1] = endCb; - // third argument - iterator - args[1] = streamify.iterator.call(this, args[1]); - - // allow time for proper setup - defer(function() - { - if (!this.destroyed) - { - this.terminator = runner.apply(null, args); - } - else - { - endCb(null, Array.isArray(input) ? [] : {}); - } - }.bind(this)); -} - - -/** - * Implement _read to comply with Readable streams - * Doesn't really make sense for flowing object mode - * - * @private - */ -function _read() -{ - -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/lib/readable_parallel.js b/.claude/skills/教学日程查询/node_modules/asynckit/lib/readable_parallel.js deleted file mode 100644 index 5d2929f..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/lib/readable_parallel.js +++ /dev/null @@ -1,25 +0,0 @@ -var parallel = require('../parallel.js'); - -// API -module.exports = ReadableParallel; - -/** - * Streaming wrapper to `asynckit.parallel` - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {stream.Readable#} - */ -function ReadableParallel(list, iterator, callback) -{ - if (!(this instanceof ReadableParallel)) - { - return new ReadableParallel(list, iterator, callback); - } - - // turn on object mode - ReadableParallel.super_.call(this, {objectMode: true}); - - this._start(parallel, list, iterator, callback); -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/lib/readable_serial.js b/.claude/skills/教学日程查询/node_modules/asynckit/lib/readable_serial.js deleted file mode 100644 index 7822698..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/lib/readable_serial.js +++ /dev/null @@ -1,25 +0,0 @@ -var serial = require('../serial.js'); - -// API -module.exports = ReadableSerial; - -/** - * Streaming wrapper to `asynckit.serial` - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {stream.Readable#} - */ -function ReadableSerial(list, iterator, callback) -{ - if (!(this instanceof ReadableSerial)) - { - return new ReadableSerial(list, iterator, callback); - } - - // turn on object mode - ReadableSerial.super_.call(this, {objectMode: true}); - - this._start(serial, list, iterator, callback); -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/lib/readable_serial_ordered.js b/.claude/skills/教学日程查询/node_modules/asynckit/lib/readable_serial_ordered.js deleted file mode 100644 index 3de89c4..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/lib/readable_serial_ordered.js +++ /dev/null @@ -1,29 +0,0 @@ -var serialOrdered = require('../serialOrdered.js'); - -// API -module.exports = ReadableSerialOrdered; -// expose sort helpers -module.exports.ascending = serialOrdered.ascending; -module.exports.descending = serialOrdered.descending; - -/** - * Streaming wrapper to `asynckit.serialOrdered` - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} sortMethod - custom sort function - * @param {function} callback - invoked when all elements processed - * @returns {stream.Readable#} - */ -function ReadableSerialOrdered(list, iterator, sortMethod, callback) -{ - if (!(this instanceof ReadableSerialOrdered)) - { - return new ReadableSerialOrdered(list, iterator, sortMethod, callback); - } - - // turn on object mode - ReadableSerialOrdered.super_.call(this, {objectMode: true}); - - this._start(serialOrdered, list, iterator, sortMethod, callback); -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/lib/state.js b/.claude/skills/教学日程查询/node_modules/asynckit/lib/state.js deleted file mode 100644 index cbea7ad..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/lib/state.js +++ /dev/null @@ -1,37 +0,0 @@ -// API -module.exports = state; - -/** - * Creates initial state object - * for iteration over list - * - * @param {array|object} list - list to iterate over - * @param {function|null} sortMethod - function to use for keys sort, - * or `null` to keep them as is - * @returns {object} - initial state object - */ -function state(list, sortMethod) -{ - var isNamedList = !Array.isArray(list) - , initState = - { - index : 0, - keyedList: isNamedList || sortMethod ? Object.keys(list) : null, - jobs : {}, - results : isNamedList ? {} : [], - size : isNamedList ? Object.keys(list).length : list.length - } - ; - - if (sortMethod) - { - // sort array keys based on it's values - // sort object's keys just on own merit - initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) - { - return sortMethod(list[a], list[b]); - }); - } - - return initState; -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/lib/streamify.js b/.claude/skills/教学日程查询/node_modules/asynckit/lib/streamify.js deleted file mode 100644 index f56a1c9..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/lib/streamify.js +++ /dev/null @@ -1,141 +0,0 @@ -var async = require('./async.js'); - -// API -module.exports = { - iterator: wrapIterator, - callback: wrapCallback -}; - -/** - * Wraps iterators with long signature - * - * @this ReadableAsyncKit# - * @param {function} iterator - function to wrap - * @returns {function} - wrapped function - */ -function wrapIterator(iterator) -{ - var stream = this; - - return function(item, key, cb) - { - var aborter - , wrappedCb = async(wrapIteratorCallback.call(stream, cb, key)) - ; - - stream.jobs[key] = wrappedCb; - - // it's either shortcut (item, cb) - if (iterator.length == 2) - { - aborter = iterator(item, wrappedCb); - } - // or long format (item, key, cb) - else - { - aborter = iterator(item, key, wrappedCb); - } - - return aborter; - }; -} - -/** - * Wraps provided callback function - * allowing to execute snitch function before - * real callback - * - * @this ReadableAsyncKit# - * @param {function} callback - function to wrap - * @returns {function} - wrapped function - */ -function wrapCallback(callback) -{ - var stream = this; - - var wrapped = function(error, result) - { - return finisher.call(stream, error, result, callback); - }; - - return wrapped; -} - -/** - * Wraps provided iterator callback function - * makes sure snitch only called once, - * but passes secondary calls to the original callback - * - * @this ReadableAsyncKit# - * @param {function} callback - callback to wrap - * @param {number|string} key - iteration key - * @returns {function} wrapped callback - */ -function wrapIteratorCallback(callback, key) -{ - var stream = this; - - return function(error, output) - { - // don't repeat yourself - if (!(key in stream.jobs)) - { - callback(error, output); - return; - } - - // clean up jobs - delete stream.jobs[key]; - - return streamer.call(stream, error, {key: key, value: output}, callback); - }; -} - -/** - * Stream wrapper for iterator callback - * - * @this ReadableAsyncKit# - * @param {mixed} error - error response - * @param {mixed} output - iterator output - * @param {function} callback - callback that expects iterator results - */ -function streamer(error, output, callback) -{ - if (error && !this.error) - { - this.error = error; - this.pause(); - this.emit('error', error); - // send back value only, as expected - callback(error, output && output.value); - return; - } - - // stream stuff - this.push(output); - - // back to original track - // send back value only, as expected - callback(error, output && output.value); -} - -/** - * Stream wrapper for finishing callback - * - * @this ReadableAsyncKit# - * @param {mixed} error - error response - * @param {mixed} output - iterator output - * @param {function} callback - callback that expects final results - */ -function finisher(error, output, callback) -{ - // signal end of the stream - // only for successfully finished streams - if (!error) - { - this.push(null); - } - - // back to original track - callback(error, output); -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/lib/terminator.js b/.claude/skills/教学日程查询/node_modules/asynckit/lib/terminator.js deleted file mode 100644 index d6eb992..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/lib/terminator.js +++ /dev/null @@ -1,29 +0,0 @@ -var abort = require('./abort.js') - , async = require('./async.js') - ; - -// API -module.exports = terminator; - -/** - * Terminates jobs in the attached state context - * - * @this AsyncKitState# - * @param {function} callback - final callback to invoke after termination - */ -function terminator(callback) -{ - if (!Object.keys(this.jobs).length) - { - return; - } - - // fast forward iteration index - this.index = this.size; - - // abort jobs - abort(this); - - // send back results we have so far - async(callback)(null, this.results); -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/package.json b/.claude/skills/教学日程查询/node_modules/asynckit/package.json deleted file mode 100644 index 51147d6..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "asynckit", - "version": "0.4.0", - "description": "Minimal async jobs utility library, with streams support", - "main": "index.js", - "scripts": { - "clean": "rimraf coverage", - "lint": "eslint *.js lib/*.js test/*.js", - "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec", - "win-test": "tape test/test-*.js", - "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec", - "report": "istanbul report", - "size": "browserify index.js | size-table asynckit", - "debug": "tape test/test-*.js" - }, - "pre-commit": [ - "clean", - "lint", - "test", - "browser", - "report", - "size" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/alexindigo/asynckit.git" - }, - "keywords": [ - "async", - "jobs", - "parallel", - "serial", - "iterator", - "array", - "object", - "stream", - "destroy", - "terminate", - "abort" - ], - "author": "Alex Indigo ", - "license": "MIT", - "bugs": { - "url": "https://github.com/alexindigo/asynckit/issues" - }, - "homepage": "https://github.com/alexindigo/asynckit#readme", - "devDependencies": { - "browserify": "^13.0.0", - "browserify-istanbul": "^2.0.0", - "coveralls": "^2.11.9", - "eslint": "^2.9.0", - "istanbul": "^0.4.3", - "obake": "^0.1.2", - "phantomjs-prebuilt": "^2.1.7", - "pre-commit": "^1.1.3", - "reamde": "^1.1.0", - "rimraf": "^2.5.2", - "size-table": "^0.2.0", - "tap-spec": "^4.1.1", - "tape": "^4.5.1" - }, - "dependencies": {} -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/parallel.js b/.claude/skills/教学日程查询/node_modules/asynckit/parallel.js deleted file mode 100644 index 3c50344..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/parallel.js +++ /dev/null @@ -1,43 +0,0 @@ -var iterate = require('./lib/iterate.js') - , initState = require('./lib/state.js') - , terminator = require('./lib/terminator.js') - ; - -// Public API -module.exports = parallel; - -/** - * Runs iterator over provided array elements in parallel - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function parallel(list, iterator, callback) -{ - var state = initState(list); - - while (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, function(error, result) - { - if (error) - { - callback(error, result); - return; - } - - // looks like it's the last one - if (Object.keys(state.jobs).length === 0) - { - callback(null, state.results); - return; - } - }); - - state.index++; - } - - return terminator.bind(state, callback); -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/serial.js b/.claude/skills/教学日程查询/node_modules/asynckit/serial.js deleted file mode 100644 index 6cd949a..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/serial.js +++ /dev/null @@ -1,17 +0,0 @@ -var serialOrdered = require('./serialOrdered.js'); - -// Public API -module.exports = serial; - -/** - * Runs iterator over provided array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serial(list, iterator, callback) -{ - return serialOrdered(list, iterator, null, callback); -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/serialOrdered.js b/.claude/skills/教学日程查询/node_modules/asynckit/serialOrdered.js deleted file mode 100644 index 607eafe..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/serialOrdered.js +++ /dev/null @@ -1,75 +0,0 @@ -var iterate = require('./lib/iterate.js') - , initState = require('./lib/state.js') - , terminator = require('./lib/terminator.js') - ; - -// Public API -module.exports = serialOrdered; -// sorting helpers -module.exports.ascending = ascending; -module.exports.descending = descending; - -/** - * Runs iterator over provided sorted array elements in series - * - * @param {array|object} list - array or object (named list) to iterate over - * @param {function} iterator - iterator to run - * @param {function} sortMethod - custom sort function - * @param {function} callback - invoked when all elements processed - * @returns {function} - jobs terminator - */ -function serialOrdered(list, iterator, sortMethod, callback) -{ - var state = initState(list, sortMethod); - - iterate(list, iterator, state, function iteratorHandler(error, result) - { - if (error) - { - callback(error, result); - return; - } - - state.index++; - - // are we there yet? - if (state.index < (state['keyedList'] || list).length) - { - iterate(list, iterator, state, iteratorHandler); - return; - } - - // done here - callback(null, state.results); - }); - - return terminator.bind(state, callback); -} - -/* - * -- Sort methods - */ - -/** - * sort helper to sort array elements in ascending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function ascending(a, b) -{ - return a < b ? -1 : a > b ? 1 : 0; -} - -/** - * sort helper to sort array elements in descending order - * - * @param {mixed} a - an item to compare - * @param {mixed} b - an item to compare - * @returns {number} - comparison result - */ -function descending(a, b) -{ - return -1 * ascending(a, b); -} diff --git a/.claude/skills/教学日程查询/node_modules/asynckit/stream.js b/.claude/skills/教学日程查询/node_modules/asynckit/stream.js deleted file mode 100644 index d43465f..0000000 --- a/.claude/skills/教学日程查询/node_modules/asynckit/stream.js +++ /dev/null @@ -1,21 +0,0 @@ -var inherits = require('util').inherits - , Readable = require('stream').Readable - , ReadableAsyncKit = require('./lib/readable_asynckit.js') - , ReadableParallel = require('./lib/readable_parallel.js') - , ReadableSerial = require('./lib/readable_serial.js') - , ReadableSerialOrdered = require('./lib/readable_serial_ordered.js') - ; - -// API -module.exports = -{ - parallel : ReadableParallel, - serial : ReadableSerial, - serialOrdered : ReadableSerialOrdered, -}; - -inherits(ReadableAsyncKit, Readable); - -inherits(ReadableParallel, ReadableAsyncKit); -inherits(ReadableSerial, ReadableAsyncKit); -inherits(ReadableSerialOrdered, ReadableAsyncKit); diff --git a/.claude/skills/教学日程查询/node_modules/axios/CHANGELOG.md b/.claude/skills/教学日程查询/node_modules/axios/CHANGELOG.md deleted file mode 100644 index 0ce57bf..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/CHANGELOG.md +++ /dev/null @@ -1,1650 +0,0 @@ -# Changelog - -## v1.15.1 — April 19, 2026 - -This release ships a coordinated set of security hardening fixes across headers, body/redirect limits, multipart handling, and XSRF/prototype-pollution vectors, alongside a broad sweep of bug fixes, test migrations, and threat-model documentation updates. - -## 🔒 Security Fixes - -- **Header Injection Hardening:** Tightened validation and sanitisation across request header construction to close the header-injection attack surface. (**#10749**) - -- **CRLF Stripping in Multipart Headers:** Correctly strips CR/LF from multipart header values to prevent injection via field names and filenames. (**#10758**) - -- **Prototype Pollution / Auth Bypass:** Replaced unsafe `in` checks with `hasOwnProperty` to prevent authentication bypass via prototype pollution on config objects, with additional regression tests. (**#10761**, **#10760**) - -- **`withXSRFToken` Truthy Bypass:** Short-circuits on any truthy non-boolean value, so an ambiguous config no longer silently leaks the XSRF token cross-origin. (**#10762**) - -- **`maxBodyLength` With Zero Redirects:** Enforces `maxBodyLength` even when `maxRedirects` is set to `0`, closing a bypass path for oversized request bodies. (**#10753**) - -- **Streamed Response `maxContentLength` Bypass:** Applies `maxContentLength` to streamed responses that previously bypassed the cap. (**#10754**) - -- **Follow-up CVE Completion:** Completes an earlier incomplete CVE fix to fully close the regression window. (**#10755**) - -## 🚀 New Features - -- **AI-Based Docs Translations:** Initial scaffold for AI-assisted translations of the documentation site. (**#10705**) - -- **`Location` Request Header Type:** Adds `Location` to `CommonRequestHeadersList` for accurate typing of redirect-aware requests. (**#7528**) - -## 🐛 Bug Fixes - -- **FormData Handling:** Removes `Content-Type` when no boundary is present on `FormData` fetch requests, supports multi-select fields, cancels `request.body` instead of the source stream on fetch abort, and fixes a recursion bug in form-data serialisation. (**#7314**, **#10676**, **#10702**, **#10726**) - -- **HTTP Adapter:** Handles socket-only request errors without leaking keep-alive listeners. (**#10576**) - -- **Progress Events:** Clamps `loaded` to `total` for computable upload/download progress events. (**#7458**) - -- **Types:** Aligns `runWhen` type with the runtime behaviour in `InterceptorManager` and makes response header keys case-insensitive. (**#7529**, **#10677**) - -- **`buildFullPath`:** Uses strict equality in the base/relative URL check. (**#7252**) - -- **`AxiosURLSearchParams` Regex:** Improves the regex used for param serialisation to avoid edge-case mismatches. (**#10736**) - -- **Resilient Value Parsing:** Parses out header/config values instead of throwing on malformed input. (**#10687**) - -- **Docs Artefact Cleanup:** Removes the docs content that was incorrectly committed. (**#10727**) - -## 🔧 Maintenance & Chores - -- **Threat Model & Security Docs:** Ongoing refinement of `THREATMODEL.md`, including Hopper security update, TLS and tag-replay wording, mitigation descriptions, decompression-bomb guidance, and further cleanup. (**#10672**, **#10715**, **#10718**, **#10722**, **#10763**, **#10765**) - -- **Test Coverage & Migration:** Expanded `shouldBypassProxy` coverage for wildcard/IPv6/edge cases, documented and tested `AxiosError.status`, and migrated `progressEventReducer` tests to Vitest. (**#10723**, **#10725**, **#10741**) - -- **Type Refactor:** Uses TypeScript utility types to deduplicate literal unions. (**#7520**) - -- **Repo & CI:** Adds `CODEOWNERS`, switches v1.x releases to an ephemeral release branch, and removes orphaned Bower support. (**#10739**, **#10738**, **#10746**) - -## 🌟 New Contributors - -We are thrilled to welcome our new contributors. Thank you for helping improve axios: - -- **@curiouscoder-cmd** (**#7252**) -- **@tryonelove** (**#7520**) -- **@darwin808** (**#7314**) -- **@zoontek** (**#10702**) -- **@AKIB473** (**#10725**) - -[Full Changelog](https://github.com/axios/axios/compare/v1.15.0...v1.15.1) - ---- - -## v1.15.0 — April 7, 2026 - -This release delivers two critical security patches targeting header injection and SSRF via proxy bypass, adds official runtime support for Deno and Bun, and includes significant CI security hardening. - -## 🔒 Security Fixes - -- **Header Injection (CRLF):** Rejects any header value containing `\r` or `\n` characters to block CRLF injection chains that could be used to exfiltrate cloud metadata (IMDS). Behavior change: headers with CR/LF now throw `"Invalid character in header content"`. (**#10660**) - -- **SSRF via `no_proxy` Bypass:** Introduces a `shouldBypassProxy` helper that normalises hostnames (strips trailing dots, handles bracketed IPv6) before evaluating `no_proxy`/`NO_PROXY` rules, closing a gap that could cause loopback or internal hosts to be inadvertently proxied. (**#10661**) - -## 🚀 New Features - -- **Deno & Bun Runtime Support:** Added full smoke test suites for Deno and Bun, with CI workflows that run both runtimes before any release is cut. (**#10652**) - -## 🐛 Bug Fixes - -- **Node.js v22 Compatibility:** Replaced deprecated `url.parse()` calls with the WHATWG `URL`/`URLSearchParams` API across examples, sandbox, and tests, eliminating `DEP0169` deprecation warnings on Node.js v22+. (**#10625**) - -## 🔧 Maintenance & Chores - -- **CI Security Hardening:** Added [zizmor](https://github.com/zizmorcore/zizmor) GitHub Actions security scanner; switched npm publish to OIDC Trusted Publishing (removing the long-lived `NODE_AUTH_TOKEN`); pinned all action references to full commit SHAs; narrowed workflow permissions to least privilege; gated the publish step behind a dedicated `npm-publish` environment; and blocked the sponsor-block workflow from running on forks. (**#10618**, **#10619**, **#10627**, **#10637**, **#10641**, **#10666**) - -- **Docs:** Clarified HTTP/2 support and the unsupported `httpVersion` option; added documentation for header case preservation; improved the `beforeRedirect` example to prevent accidental credential leakage. (**#10644**, **#10654**, **#10624**) - -- **Dependencies:** Bumped `picomatch`, `handlebars`, `serialize-javascript`, `vite` (×3), `denoland/setup-deno`, and 4 additional dev dependencies to latest versions. (**#10564**, **#10565**, **#10567**, **#10568**, **#10572**, **#10574**, **#10663**, **#10664**, **#10665**, **#10669**, **#10670**) - -## 🌟 New Contributors - -We are thrilled to welcome our new contributors. Thank you for helping improve axios: - -- **@Kilros0817** (**#10625**) -- **@shaanmajid** (**#10616**, **#10617**, **#10618**, **#10619**, **#10637**, **#10641**, **#10666**) -- **@ashstrc** (**#10624**, **#10644**) -- **@Abhi3975** (**#10589**) -- **@raashish1601** (**#10573**) - -[Full Changelog](https://github.com/axios/axios/compare/v1.14.0...v1.15.0) - ---- - -## v1.14.0 — March 27, 2026 - -This release fixes a security vulnerability in the `formidable` dependency, resolves a CommonJS compatibility regression, hardens proxy and HTTP/2 handling, and modernises the build and test toolchain. - -## 🔒 Security Fixes - -- **Formidable Vulnerability:** Upgraded `formidable` from v2 to v3 to address a reported arbitrary-file vulnerability. Updated test server and assertions to align with the v3 API. (**#7533**) - -## 🐛 Bug Fixes - -- **CommonJS Compatibility:** Restored `require('axios')` in Node.js by correcting the `main` field in `package.json` to point to the built CJS bundle. (**#7532**) - -- **Fetch Adapter:** Cancel the `ReadableStream` body after the request stream capability probe to prevent resource leaks. (**#7515**) - -- **Proxy:** Upgraded `proxy-from-env` to v2 and switched to the named `getProxyForUrl` export, fixing proxy detection from environment variables and resolving CJS bundling errors. (**#7499**) - -- **HTTP/2:** Close detached HTTP/2 sessions on timeout to free resources when no new requests arrive. (**#7457**) - -- **Headers:** Trim trailing CRLF characters from normalised header values. (**#7456**) - -## 🔧 Maintenance & Chores - -- **Toolchain Modernisation:** Migrated test suite to Vitest, updated ESLint to v10, upgraded Rollup and `@rollup/plugin-babel`, migrated to Husky 9, upgraded TypeScript to latest, and modernised the Express test harness. (**#7484**, **#7489**, **#7498**, **#7505**, **#7506**, **#7507**, **#7508**, **#7509**, **#7510**, **#7516**, **#7522**) - -- **Dependencies:** Bumped `multer` to v2, `minimatch`, `tar`, `pacote`, `@babel/preset-env`, and additional dev dependencies. (**#7453**, **#7480**, **#7491**, **#7504**, **#7517**, **#7531**) - -## 🌟 New Contributors - -We are thrilled to welcome our new contributors. Thank you for helping improve axios: - -- **@penkzhou** (**#7515**) -- **@aviu16** (**#7456**) -- **@fedotov** (**#7457**) - -[Full Changelog](https://github.com/axios/axios/compare/v1.13.6...v1.14.0) - ---- - -## v1.13.6 — February 27, 2026 - -This release adds React Native Blob support, fixes several enumeration and export regressions, and patches FormData detection for WeChat Mini Program environments. - -## 🚀 New Features - -- **React Native Blob Support:** Axios now correctly handles native Blob objects in React Native environments. (**#5764**) - -## 🐛 Bug Fixes - -- **AxiosError:** Fixed `AxiosError.from` not copying the `status` field from the source error. (**#7403**) - -- **AxiosError:** Made the `message` property enumerable so it appears in `JSON.stringify` output and `Object.keys`. (**#7392**) - -- **FormData Detection:** Corrected safe FormData detection for WeChat Mini Program environments. (**#7324**) - -- **React Native / Browserify Export:** Fixed broken module export that caused import failures in React Native and Browserify. (**#7386**) - -## 🔧 Maintenance & Chores - -- **Dependencies:** Migrated `@rollup/plugin-babel` from v5 to v6 and bumped the development dependencies group. (**#7424**, **#7432**) - -## 🌟 New Contributors - -We are thrilled to welcome our new contributors. Thank you for helping improve axios: - -- **@moh3n9595** (**#5764**) -- **@skrtheboss** (**#7403**) -- **@ybbus** (**#7392**) -- **@Shiwaangee** (**#7324**) -- **@Gudahtt** (**#7386**) - -[Full Changelog](https://github.com/axios/axios/compare/v1.13.5...v1.13.6) - ---- - -## v1.13.5 — February 8, 2026 - -This release patches a prototype pollution denial-of-service vulnerability, fixes a missing `status` field regression in `AxiosError`, adds interceptor ordering control, and introduces URL validation for `isAbsoluteURL`. - -## 🔒 Security Fixes - -- **Prototype Pollution (DoS):** Hardened `mergeConfig` to ignore `__proto__`, `constructor`, and `prototype` keys, preventing denial-of-service via prototype pollution when merging user-supplied config. (**#7369**) - -## 🚀 New Features - -- **`isAbsoluteURL` Validation:** Added input validation to `isAbsoluteURL` to handle malformed or unexpected input gracefully. (**#7326**) - -## 🐛 Bug Fixes - -- **AxiosError `status`:** Restored the `status` field on `AxiosError` instances, which was missing in v1.13.3 and later. (**#7368**) - -- **Interceptor Ordering:** Added a `useLegacyInterceptorOrder` option to restore pre-v1.13 interceptor execution order for applications relying on the previous behaviour. ([569f028](https://github.com/axios/axios/commit/569f028a5878faaec8d7d138ba686aac407bda4c)) - -## 🔧 Maintenance & Chores - -- **CI:** Fixed run conditions and updated workflow YAMLs. (**#7372**, **#7373**) - -- **Dependencies:** Bumped `karma-sourcemap-loader` and minor package versions. (**#7356**, **#7360**) - -## 🌟 New Contributors - -We are thrilled to welcome our new contributors. Thank you for helping improve axios: - -- **@asmitha-16** (**#7326**) - -[Full Changelog](https://github.com/axios/axios/compare/v1.13.4...v1.13.5) - ---- - -## v1.13.4 — January 27, 2026 - -Patch release fixing regressions introduced in v1.13.3, including TypeScript export compatibility and CI/build stability. - -## 🐛 Bug Fixes - -- **v1.13.3 Regressions:** Fixed multiple issues introduced by the v1.13.3 release, including broken merge configs. (**#7352**) - -- **TypeScript Exports:** Corrected TypeScript export declarations to restore proper type resolution. (**#4884**) - -## 🔧 Maintenance & Chores - -- **CI & Build:** Refactored CI pipeline and build configuration for stability. (**#7340**) - -[Full Changelog](https://github.com/axios/axios/compare/v1.13.3...v1.13.4) - ---- - -## [1.13.3](https://github.com/axios/axios/compare/v1.13.2...v1.13.3) (2026-01-20) - -### Bug Fixes - -- **http2:** Use port 443 for HTTPS connections by default. ([#7256](https://github.com/axios/axios/issues/7256)) ([d7e6065](https://github.com/axios/axios/commit/d7e60653460480ffacecf85383012ca1baa6263e)) -- **interceptor:** handle the error in the same interceptor ([#6269](https://github.com/axios/axios/issues/6269)) ([5945e40](https://github.com/axios/axios/commit/5945e40bb171d4ac4fc195df276cf952244f0f89)) -- main field in package.json should correspond to cjs artifacts ([#5756](https://github.com/axios/axios/issues/5756)) ([7373fbf](https://github.com/axios/axios/commit/7373fbff24cd92ce650d99ff6f7fe08c2e2a0a04)) -- **package.json:** add 'bun' package.json 'exports' condition. Load the Node.js build in Bun instead of the browser build ([#5754](https://github.com/axios/axios/issues/5754)) ([b89217e](https://github.com/axios/axios/commit/b89217e3e91de17a3d55e2b8f39ceb0e9d8aeda8)) -- silentJSONParsing=false should throw on invalid JSON ([#7253](https://github.com/axios/axios/issues/7253)) ([#7257](https://github.com/axios/axios/issues/7257)) ([7d19335](https://github.com/axios/axios/commit/7d19335e43d6754a1a9a66e424f7f7da259895bf)) -- turn AxiosError into a native error ([#5394](https://github.com/axios/axios/issues/5394)) ([#5558](https://github.com/axios/axios/issues/5558)) ([1c6a86d](https://github.com/axios/axios/commit/1c6a86dd2c0623ee1af043a8491dbc96d40e883b)) -- **types:** add handlers to AxiosInterceptorManager interface ([#5551](https://github.com/axios/axios/issues/5551)) ([8d1271b](https://github.com/axios/axios/commit/8d1271b49fc226ed7defd07cd577bd69a55bb13a)) -- **types:** restore AxiosError.cause type from unknown to Error ([#7327](https://github.com/axios/axios/issues/7327)) ([d8233d9](https://github.com/axios/axios/commit/d8233d9e8e9a64bfba9bbe01d475ba417510b82b)) -- unclear error message is thrown when specifying an empty proxy authorization ([#6314](https://github.com/axios/axios/issues/6314)) ([6ef867e](https://github.com/axios/axios/commit/6ef867e684adf7fb2343e3b29a79078a3c76dc29)) - -### Features - -- add `undefined` as a value in AxiosRequestConfig ([#5560](https://github.com/axios/axios/issues/5560)) ([095033c](https://github.com/axios/axios/commit/095033c626895ecdcda2288050b63dcf948db3bd)) -- add automatic minor and patch upgrades to dependabot ([#6053](https://github.com/axios/axios/issues/6053)) ([65a7584](https://github.com/axios/axios/commit/65a7584eda6164980ddb8cf5372f0afa2a04c1ed)) -- add Node.js coverage script using c8 (closes [#7289](https://github.com/axios/axios/issues/7289)) ([#7294](https://github.com/axios/axios/issues/7294)) ([ec9d94e](https://github.com/axios/axios/commit/ec9d94e9f88da13e9219acadf65061fb38ce080a)) -- added copilot instructions ([3f83143](https://github.com/axios/axios/commit/3f83143bfe617eec17f9d7dcf8bafafeeae74c26)) -- compatibility with frozen prototypes ([#6265](https://github.com/axios/axios/issues/6265)) ([860e033](https://github.com/axios/axios/commit/860e03396a536e9b926dacb6570732489c9d7012)) -- enhance pipeFileToResponse with error handling ([#7169](https://github.com/axios/axios/issues/7169)) ([88d7884](https://github.com/axios/axios/commit/88d78842541610692a04282233933d078a8a2552)) -- **types:** Intellisense for string literals in a widened union ([#6134](https://github.com/axios/axios/issues/6134)) ([f73474d](https://github.com/axios/axios/commit/f73474d02c5aa957b2daeecee65508557fd3c6e5)), closes [/github.com/microsoft/TypeScript/issues/33471#issuecomment-1376364329](https://github.com//github.com/microsoft/TypeScript/issues/33471/issues/issuecomment-1376364329) - -### Reverts - -- Revert "fix: silentJSONParsing=false should throw on invalid JSON (#7253) (#7…" (#7298) ([a4230f5](https://github.com/axios/axios/commit/a4230f5581b3f58b6ff531b6dbac377a4fd7942a)), closes [#7253](https://github.com/axios/axios/issues/7253) [#7](https://github.com/axios/axios/issues/7) [#7298](https://github.com/axios/axios/issues/7298) -- **deps:** bump peter-evans/create-pull-request from 7 to 8 in the github-actions group ([#7334](https://github.com/axios/axios/issues/7334)) ([2d6ad5e](https://github.com/axios/axios/commit/2d6ad5e48bd29b0b2b5e7e95fb473df98301543a)) - -### Contributors to this release - -- avatar [Ashvin Tiwari](https://github.com/ashvin2005 '+1752/-4 (#7218 #7218 )') -- avatar [Nikunj Mochi](https://github.com/mochinikunj '+940/-12 (#7294 #7294 )') -- avatar [Anchal Singh](https://github.com/imanchalsingh '+544/-102 (#7169 #7185 )') -- avatar [jasonsaayman](https://github.com/jasonsaayman '+317/-73 (#7334 #7298 )') -- avatar [Julian Dax](https://github.com/brodo '+99/-120 (#5558 )') -- avatar [Akash Dhar Dubey](https://github.com/AKASHDHARDUBEY '+167/-0 (#7287 #7288 )') -- avatar [Madhumita](https://github.com/madhumitaaa '+20/-68 (#7198 )') -- avatar [Tackoil](https://github.com/Tackoil '+80/-2 (#6269 )') -- avatar [Justin Dhillon](https://github.com/justindhillon '+41/-41 (#6324 #6315 )') -- avatar [Rudransh](https://github.com/Rudrxxx '+71/-2 (#7257 )') -- avatar [WuMingDao](https://github.com/WuMingDao '+36/-36 (#7215 )') -- avatar [codenomnom](https://github.com/codenomnom '+70/-0 (#7201 #7201 )') -- avatar [Nandan Acharya](https://github.com/Nandann018-ux '+60/-10 (#7272 )') -- avatar [Eric Dubé](https://github.com/KernelDeimos '+22/-40 (#7042 )') -- avatar [Tibor Pilz](https://github.com/tiborpilz '+40/-4 (#5551 )') -- avatar [Gabriel Quaresma](https://github.com/joaoGabriel55 '+31/-4 (#6314 )') -- avatar [Turadg Aleahmad](https://github.com/turadg '+23/-6 (#6265 )') -- avatar [JohnTitor](https://github.com/kiritosan '+14/-14 (#6155 )') -- avatar [rohit miryala](https://github.com/rohitmiryala '+22/-0 (#7250 )') -- avatar [Wilson Mun](https://github.com/wmundev '+20/-0 (#6053 )') -- avatar [techcodie](https://github.com/techcodie '+7/-7 (#7236 )') -- avatar [Ved Vadnere](https://github.com/Archis009 '+5/-6 (#7283 )') -- avatar [svihpinc](https://github.com/svihpinc '+5/-3 (#6134 )') -- avatar [SANDESH LENDVE](https://github.com/mrsandy1965 '+3/-3 (#7246 )') -- avatar [Lubos](https://github.com/mrlubos '+5/-1 (#7312 )') -- avatar [Jarred Sumner](https://github.com/Jarred-Sumner '+5/-1 (#5754 )') -- avatar [Adam Hines](https://github.com/thebanjomatic '+2/-1 (#5756 )') -- avatar [Subhan Kumar Rai](https://github.com/Subhan030 '+2/-1 (#7256 )') -- avatar [Joseph Frazier](https://github.com/josephfrazier '+1/-1 (#7311 )') -- avatar [KT0803](https://github.com/KT0803 '+0/-2 (#7229 )') -- avatar [Albie](https://github.com/AlbertoSadoc '+1/-1 (#5560 )') -- avatar [Jake Hayes](https://github.com/thejayhaykid '+1/-0 (#5999 )') - -## [1.13.2](https://github.com/axios/axios/compare/v1.13.1...v1.13.2) (2025-11-04) - -### Bug Fixes - -- **http:** fix 'socket hang up' bug for keep-alive requests when using timeouts; ([#7206](https://github.com/axios/axios/issues/7206)) ([8d37233](https://github.com/axios/axios/commit/8d372335f5c50ecd01e8615f2468a9eb19703117)) -- **http:** use default export for http2 module to support stubs; ([#7196](https://github.com/axios/axios/issues/7196)) ([0588880](https://github.com/axios/axios/commit/0588880ac7ddba7594ef179930493884b7e90bf5)) - -### Performance Improvements - -- **http:** fix early loop exit; ([#7202](https://github.com/axios/axios/issues/7202)) ([12c314b](https://github.com/axios/axios/commit/12c314b603e7852a157e93e47edb626a471ba6c5)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+28/-9 (#7206 #7202 )') -- avatar [Kasper Isager Dalsgarð](https://github.com/kasperisager '+9/-9 (#7196 )') - -## [1.13.1](https://github.com/axios/axios/compare/v1.13.0...v1.13.1) (2025-10-28) - -### Bug Fixes - -- **http:** fixed a regression that caused the data stream to be interrupted for responses with non-OK HTTP statuses; ([#7193](https://github.com/axios/axios/issues/7193)) ([bcd5581](https://github.com/axios/axios/commit/bcd5581d208cd372055afdcb2fd10b68ca40613c)) - -### Contributors to this release - -- avatar [Anchal Singh](https://github.com/imanchalsingh '+220/-111 (#7173 )') -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+18/-1 (#7193 )') - -# [1.13.0](https://github.com/axios/axios/compare/v1.12.2...v1.13.0) (2025-10-27) - -### Bug Fixes - -- **fetch:** prevent TypeError when config.env is undefined ([#7155](https://github.com/axios/axios/issues/7155)) ([015faec](https://github.com/axios/axios/commit/015faeca9f26db76f9562760f04bb9f8229f4db1)) -- resolve issue [#7131](https://github.com/axios/axios/issues/7131) (added spacing in mergeConfig.js) ([#7133](https://github.com/axios/axios/issues/7133)) ([9b9ec98](https://github.com/axios/axios/commit/9b9ec98548d93e9f2204deea10a5f1528bf3ce62)) - -### Features - -- **http:** add HTTP2 support; ([#7150](https://github.com/axios/axios/issues/7150)) ([d676df7](https://github.com/axios/axios/commit/d676df772244726533ca320f42e967f5af056bac)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+794/-180 (#7186 #7150 #7039 )') -- avatar [Noritaka Kobayashi](https://github.com/noritaka1166 '+24/-509 (#7032 )') -- avatar [Aviraj2929](https://github.com/Aviraj2929 '+211/-93 (#7136 #7135 #7134 #7112 )') -- avatar [prasoon patel](https://github.com/Prasoon52 '+167/-6 (#7099 )') -- avatar [Samyak Dandge](https://github.com/Samy-in '+134/-0 (#7171 )') -- avatar [Anchal Singh](https://github.com/imanchalsingh '+53/-56 (#7170 )') -- avatar [Rahul Kumar](https://github.com/jaiyankargupta '+28/-28 (#7073 )') -- avatar [Amit Verma](https://github.com/Amitverma0509 '+24/-13 (#7129 )') -- avatar [Abhishek3880](https://github.com/abhishekmaniy '+23/-4 (#7119 #7117 #7116 #7115 )') -- avatar [Dhvani Maktuporia](https://github.com/Dhvani365 '+14/-5 (#7175 )') -- avatar [Usama Ayoub](https://github.com/sam3690 '+4/-4 (#7133 )') -- avatar [ikuy1203](https://github.com/ikuy1203 '+3/-3 (#7166 )') -- avatar [Nikhil Simon Toppo](https://github.com/Kirito-Excalibur '+1/-1 (#7172 )') -- avatar [Jane Wangari](https://github.com/Wangarijane '+1/-1 (#7155 )') -- avatar [Supakorn Ieamgomol](https://github.com/Supakornn '+1/-1 (#7065 )') -- avatar [Kian-Meng Ang](https://github.com/kianmeng '+1/-1 (#7046 )') -- avatar [UTSUMI Keiji](https://github.com/k-utsumi '+1/-1 (#7037 )') - -## [1.12.2](https://github.com/axios/axios/compare/v1.12.1...v1.12.2) (2025-09-14) - -### Bug Fixes - -- **fetch:** use current global fetch instead of cached one when env fetch is not specified to keep MSW support; ([#7030](https://github.com/axios/axios/issues/7030)) ([cf78825](https://github.com/axios/axios/commit/cf78825e1229b60d1629ad0bbc8a752ff43c3f53)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+247/-16 (#7030 #7022 #7024 )') -- avatar [Noritaka Kobayashi](https://github.com/noritaka1166 '+2/-6 (#7028 #7029 )') - -## [1.12.1](https://github.com/axios/axios/compare/v1.12.0...v1.12.1) (2025-09-12) - -### Bug Fixes - -- **types:** fixed env config types; ([#7020](https://github.com/axios/axios/issues/7020)) ([b5f26b7](https://github.com/axios/axios/commit/b5f26b75bdd9afa95016fb67d0cab15fc74cbf05)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+10/-4 (#7020 )') - -# [1.12.0](https://github.com/axios/axios/compare/v1.11.0...v1.12.0) (2025-09-11) - -### Bug Fixes - -- adding build artifacts ([9ec86de](https://github.com/axios/axios/commit/9ec86de257bfa33856571036279169f385ed92bd)) -- dont add dist on release ([a2edc36](https://github.com/axios/axios/commit/a2edc3606a4f775d868a67bb3461ff18ce7ecd11)) -- **fetch-adapter:** set correct Content-Type for Node FormData ([#6998](https://github.com/axios/axios/issues/6998)) ([a9f47af](https://github.com/axios/axios/commit/a9f47afbf3224d2ca987dbd8188789c7ea853c5d)) -- **node:** enforce maxContentLength for data: URLs ([#7011](https://github.com/axios/axios/issues/7011)) ([945435f](https://github.com/axios/axios/commit/945435fc51467303768202250debb8d4ae892593)) -- package exports ([#5627](https://github.com/axios/axios/issues/5627)) ([aa78ac2](https://github.com/axios/axios/commit/aa78ac23fc9036163308c0f6bd2bb885e7af3f36)) -- **params:** removing '[' and ']' from URL encode exclude characters ([#3316](https://github.com/axios/axios/issues/3316)) ([#5715](https://github.com/axios/axios/issues/5715)) ([6d84189](https://github.com/axios/axios/commit/6d84189349c43b1dcdd977b522610660cc4c7042)) -- release pr run ([fd7f404](https://github.com/axios/axios/commit/fd7f404488b2c4f238c2fbe635b58026a634bfd2)) -- **types:** change the type guard on isCancel ([#5595](https://github.com/axios/axios/issues/5595)) ([0dbb7fd](https://github.com/axios/axios/commit/0dbb7fd4f61dc568498cd13a681fa7f907d6ec7e)) - -### Features - -- **adapter:** surface low‑level network error details; attach original error via cause ([#6982](https://github.com/axios/axios/issues/6982)) ([78b290c](https://github.com/axios/axios/commit/78b290c57c978ed2ab420b90d97350231c9e5d74)) -- **fetch:** add fetch, Request, Response env config variables for the adapter; ([#7003](https://github.com/axios/axios/issues/7003)) ([c959ff2](https://github.com/axios/axios/commit/c959ff29013a3bc90cde3ac7ea2d9a3f9c08974b)) -- support reviver on JSON.parse ([#5926](https://github.com/axios/axios/issues/5926)) ([2a97634](https://github.com/axios/axios/commit/2a9763426e43d996fd60d01afe63fa6e1f5b4fca)), closes [#5924](https://github.com/axios/axios/issues/5924) -- **types:** extend AxiosResponse interface to include custom headers type ([#6782](https://github.com/axios/axios/issues/6782)) ([7960d34](https://github.com/axios/axios/commit/7960d34eded2de66ffd30b4687f8da0e46c4903e)) - -### Contributors to this release - -- avatar [Willian Agostini](https://github.com/WillianAgostini '+132/-16760 (#7002 #5926 #6782 )') -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+4263/-293 (#7006 #7003 )') -- avatar [khani](https://github.com/mkhani01 '+111/-15 (#6982 )') -- avatar [Ameer Assadi](https://github.com/AmeerAssadi '+123/-0 (#7011 )') -- avatar [Emiedonmokumo Dick-Boro](https://github.com/emiedonmokumo '+55/-35 (#6998 )') -- avatar [Zeroday BYTE](https://github.com/opsysdebug '+8/-8 (#6980 )') -- avatar [Jason Saayman](https://github.com/jasonsaayman '+7/-7 (#6985 #6985 )') -- avatar [최예찬](https://github.com/HealGaren '+5/-7 (#5715 )') -- avatar [Gligor Kotushevski](https://github.com/gligorkot '+3/-1 (#5627 )') -- avatar [Aleksandar Dimitrov](https://github.com/adimit '+2/-1 (#5595 )') - -# [1.11.0](https://github.com/axios/axios/compare/v1.10.0...v1.11.0) (2025-07-22) - -### Bug Fixes - -- form-data npm package ([#6970](https://github.com/axios/axios/issues/6970)) ([e72c193](https://github.com/axios/axios/commit/e72c193722530db538b19e5ddaaa4544d226b253)) -- prevent RangeError when using large Buffers ([#6961](https://github.com/axios/axios/issues/6961)) ([a2214ca](https://github.com/axios/axios/commit/a2214ca1bc60540baf2c80573cea3a0ff91ba9d1)) -- **types:** resolve type discrepancies between ESM and CJS TypeScript declaration files ([#6956](https://github.com/axios/axios/issues/6956)) ([8517aa1](https://github.com/axios/axios/commit/8517aa16f8d082fc1d5309c642220fa736159110)) - -### Contributors to this release - -- avatar [izzy goldman](https://github.com/izzygld '+186/-93 (#6970 )') -- avatar [Manish Sahani](https://github.com/manishsahanidev '+70/-0 (#6961 )') -- avatar [Noritaka Kobayashi](https://github.com/noritaka1166 '+12/-10 (#6938 #6939 )') -- avatar [James Nail](https://github.com/jrnail23 '+13/-2 (#6956 )') -- avatar [Tejaswi1305](https://github.com/Tejaswi1305 '+1/-1 (#6894 )') - -# [1.10.0](https://github.com/axios/axios/compare/v1.9.0...v1.10.0) (2025-06-14) - -### Bug Fixes - -- **adapter:** pass fetchOptions to fetch function ([#6883](https://github.com/axios/axios/issues/6883)) ([0f50af8](https://github.com/axios/axios/commit/0f50af8e076b7fb403844789bd5e812dedcaf4ed)) -- **form-data:** convert boolean values to strings in FormData serialization ([#6917](https://github.com/axios/axios/issues/6917)) ([5064b10](https://github.com/axios/axios/commit/5064b108de336ff34862650709761b8a96d26be0)) -- **package:** add module entry point for React Native; ([#6933](https://github.com/axios/axios/issues/6933)) ([3d343b8](https://github.com/axios/axios/commit/3d343b86dc4fd0eea0987059c5af04327c7ae304)) - -### Features - -- **types:** improved fetchOptions interface ([#6867](https://github.com/axios/axios/issues/6867)) ([63f1fce](https://github.com/axios/axios/commit/63f1fce233009f5db1abf2586c145825ac98c3d7)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+30/-19 (#6933 #6920 #6893 #6892 )') -- avatar [Noritaka Kobayashi](https://github.com/noritaka1166 '+2/-6 (#6922 #6923 )') -- avatar [Dimitrios Lazanas](https://github.com/dimitry-lzs '+4/-0 (#6917 )') -- avatar [Adrian Knapp](https://github.com/AdrianKnapp '+2/-2 (#6867 )') -- avatar [Howie Zhao](https://github.com/howiezhao '+3/-1 (#6872 )') -- avatar [Uhyeon Park](https://github.com/warpdev '+1/-1 (#6883 )') -- avatar [Sampo Silvennoinen](https://github.com/stscoundrel '+1/-1 (#6913 )') - -# [1.9.0](https://github.com/axios/axios/compare/v1.8.4...v1.9.0) (2025-04-24) - -### Bug Fixes - -- **core:** fix the Axios constructor implementation to treat the config argument as optional; ([#6881](https://github.com/axios/axios/issues/6881)) ([6c5d4cd](https://github.com/axios/axios/commit/6c5d4cd69286868059c5e52d45085cb9a894a983)) -- **fetch:** fixed ERR_NETWORK mapping for Safari browsers; ([#6767](https://github.com/axios/axios/issues/6767)) ([dfe8411](https://github.com/axios/axios/commit/dfe8411c9a082c3d068bdd1f8d6e73054f387f45)) -- **headers:** allow iterable objects to be a data source for the set method; ([#6873](https://github.com/axios/axios/issues/6873)) ([1b1f9cc](https://github.com/axios/axios/commit/1b1f9ccdc15f1ea745160ec9a5223de9db4673bc)) -- **headers:** fix `getSetCookie` by using 'get' method for caseless access; ([#6874](https://github.com/axios/axios/issues/6874)) ([d4f7df4](https://github.com/axios/axios/commit/d4f7df4b304af8b373488fdf8e830793ff843eb9)) -- **headers:** fixed support for setting multiple header values from an iterated source; ([#6885](https://github.com/axios/axios/issues/6885)) ([f7a3b5e](https://github.com/axios/axios/commit/f7a3b5e0f7e5e127b97defa92a132fbf1b55cf15)) -- **http:** send minimal end multipart boundary ([#6661](https://github.com/axios/axios/issues/6661)) ([987d2e2](https://github.com/axios/axios/commit/987d2e2dd3b362757550f36eab875e60640b6ddc)) -- **types:** fix autocomplete for adapter config ([#6855](https://github.com/axios/axios/issues/6855)) ([e61a893](https://github.com/axios/axios/commit/e61a8934d8f94dd429a2f309b48c67307c700df0)) - -### Features - -- **AxiosHeaders:** add getSetCookie method to retrieve set-cookie headers values ([#5707](https://github.com/axios/axios/issues/5707)) ([80ea756](https://github.com/axios/axios/commit/80ea756e72bcf53110fa792f5d7ab76e8b11c996)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+200/-34 (#6890 #6889 #6888 #6885 #6881 #6767 #6874 #6873 )') -- avatar [Jay](https://github.com/jasonsaayman '+26/-1 ()') -- avatar [Willian Agostini](https://github.com/WillianAgostini '+21/-0 (#5707 )') -- avatar [George Cheng](https://github.com/Gerhut '+3/-3 (#5096 )') -- avatar [FatahChan](https://github.com/FatahChan '+2/-2 (#6855 )') -- avatar [Ionuț G. Stan](https://github.com/igstan '+1/-1 (#6661 )') - -## [1.8.4](https://github.com/axios/axios/compare/v1.8.3...v1.8.4) (2025-03-19) - -### Bug Fixes - -- **buildFullPath:** handle `allowAbsoluteUrls: false` without `baseURL` ([#6833](https://github.com/axios/axios/issues/6833)) ([f10c2e0](https://github.com/axios/axios/commit/f10c2e0de7fde0051f848609a29c2906d0caa1d9)) - -### Contributors to this release - -- avatar [Marc Hassan](https://github.com/mhassan1 '+5/-1 (#6833 )') - -## [1.8.3](https://github.com/axios/axios/compare/v1.8.2...v1.8.3) (2025-03-10) - -### Bug Fixes - -- add missing type for allowAbsoluteUrls ([#6818](https://github.com/axios/axios/issues/6818)) ([10fa70e](https://github.com/axios/axios/commit/10fa70ef14fe39558b15a179f0e82f5f5e5d11b2)) -- **xhr/fetch:** pass `allowAbsoluteUrls` to `buildFullPath` in `xhr` and `fetch` adapters ([#6814](https://github.com/axios/axios/issues/6814)) ([ec159e5](https://github.com/axios/axios/commit/ec159e507bdf08c04ba1a10fe7710094e9e50ec9)) - -### Contributors to this release - -- avatar [Ashcon Partovi](https://github.com/Electroid '+6/-0 (#6811 )') -- avatar [StefanBRas](https://github.com/StefanBRas '+4/-0 (#6818 )') -- avatar [Marc Hassan](https://github.com/mhassan1 '+2/-2 (#6814 )') - -## [1.8.2](https://github.com/axios/axios/compare/v1.8.1...v1.8.2) (2025-03-07) - -### Bug Fixes - -- **http-adapter:** add allowAbsoluteUrls to path building ([#6810](https://github.com/axios/axios/issues/6810)) ([fb8eec2](https://github.com/axios/axios/commit/fb8eec214ce7744b5ca787f2c3b8339b2f54b00f)) - -### Contributors to this release - -- avatar [Fasoro-Joseph Alexander](https://github.com/lexcorp16 '+1/-1 (#6810 )') - -## [1.8.1](https://github.com/axios/axios/compare/v1.8.0...v1.8.1) (2025-02-26) - -### Bug Fixes - -- **utils:** move `generateString` to platform utils to avoid importing crypto module into client builds; ([#6789](https://github.com/axios/axios/issues/6789)) ([36a5a62](https://github.com/axios/axios/commit/36a5a620bec0b181451927f13ac85b9888b86cec)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+51/-47 (#6789 )') - -# [1.8.0](https://github.com/axios/axios/compare/v1.7.9...v1.8.0) (2025-02-25) - -### Bug Fixes - -- **examples:** application crashed when navigating examples in browser ([#5938](https://github.com/axios/axios/issues/5938)) ([1260ded](https://github.com/axios/axios/commit/1260ded634ec101dd5ed05d3b70f8e8f899dba6c)) -- missing word in SUPPORT_QUESTION.yml ([#6757](https://github.com/axios/axios/issues/6757)) ([1f890b1](https://github.com/axios/axios/commit/1f890b13f2c25a016f3c84ae78efb769f244133e)) -- **utils:** replace getRandomValues with crypto module ([#6788](https://github.com/axios/axios/issues/6788)) ([23a25af](https://github.com/axios/axios/commit/23a25af0688d1db2c396deb09229d2271cc24f6c)) - -### Features - -- Add config for ignoring absolute URLs ([#5902](https://github.com/axios/axios/issues/5902)) ([#6192](https://github.com/axios/axios/issues/6192)) ([32c7bcc](https://github.com/axios/axios/commit/32c7bcc0f233285ba27dec73a4b1e81fb7a219b3)) - -### Reverts - -- Revert "chore: expose fromDataToStream to be consumable (#6731)" (#6732) ([1317261](https://github.com/axios/axios/commit/1317261125e9c419fe9f126867f64d28f9c1efda)), closes [#6731](https://github.com/axios/axios/issues/6731) [#6732](https://github.com/axios/axios/issues/6732) - -### BREAKING CHANGES - -- code relying on the above will now combine the URLs instead of prefer request URL - -- feat: add config option for allowing absolute URLs - -- fix: add default value for allowAbsoluteUrls in buildFullPath - -- fix: typo in flow control when setting allowAbsoluteUrls - -### Contributors to this release - -- avatar [Michael Toscano](https://github.com/GethosTheWalrus '+42/-8 (#6192 )') -- avatar [Willian Agostini](https://github.com/WillianAgostini '+26/-3 (#6788 #6777 )') -- avatar [Naron](https://github.com/naronchen '+27/-0 (#5901 )') -- avatar [shravan || श्रvan](https://github.com/shravan20 '+7/-3 (#6116 )') -- avatar [Justin Dhillon](https://github.com/justindhillon '+0/-7 (#6312 )') -- avatar [yionr](https://github.com/yionr '+5/-1 (#6129 )') -- avatar [Shin'ya Ueoka](https://github.com/ueokande '+3/-3 (#5935 )') -- avatar [Dan Dascalescu](https://github.com/dandv '+3/-3 (#5908 #6757 )') -- avatar [Nitin Ramnani](https://github.com/NitinRamnani '+2/-2 (#5938 )') -- avatar [Shay Molcho](https://github.com/shaymolcho '+2/-2 (#6770 )') -- avatar [Jay](https://github.com/jasonsaayman '+0/-3 (#6732 )') -- fancy45daddy -- avatar [Habip Akyol](https://github.com/habipakyol '+1/-1 (#6030 )') -- avatar [Bailey Lissington](https://github.com/llamington '+1/-1 (#6771 )') -- avatar [Bernardo da Eira Duarte](https://github.com/bernardoduarte '+1/-1 (#6480 )') -- avatar [Shivam Batham](https://github.com/Shivam-Batham '+1/-1 (#5949 )') -- avatar [Lipin Kariappa](https://github.com/lipinnnnn '+1/-1 (#5936 )') - -## [1.7.9](https://github.com/axios/axios/compare/v1.7.8...v1.7.9) (2024-12-04) - -### Reverts - -- Revert "fix(types): export CJS types from ESM (#6218)" (#6729) ([c44d2f2](https://github.com/axios/axios/commit/c44d2f2316ad289b38997657248ba10de11deb6c)), closes [#6218](https://github.com/axios/axios/issues/6218) [#6729](https://github.com/axios/axios/issues/6729) - -### Contributors to this release - -- avatar [Jay](https://github.com/jasonsaayman '+596/-108 (#6729 )') - -## [1.7.8](https://github.com/axios/axios/compare/v1.7.7...v1.7.8) (2024-11-25) - -### Bug Fixes - -- allow passing a callback as paramsSerializer to buildURL ([#6680](https://github.com/axios/axios/issues/6680)) ([eac4619](https://github.com/axios/axios/commit/eac4619fe2e0926e876cd260ee21e3690381dbb5)) -- **core:** fixed config merging bug ([#6668](https://github.com/axios/axios/issues/6668)) ([5d99fe4](https://github.com/axios/axios/commit/5d99fe4491202a6268c71e5dcc09192359d73cea)) -- fixed width form to not shrink after 'Send Request' button is clicked ([#6644](https://github.com/axios/axios/issues/6644)) ([7ccd5fd](https://github.com/axios/axios/commit/7ccd5fd42402102d38712c32707bf055be72ab54)) -- **http:** add support for File objects as payload in http adapter ([#6588](https://github.com/axios/axios/issues/6588)) ([#6605](https://github.com/axios/axios/issues/6605)) ([6841d8d](https://github.com/axios/axios/commit/6841d8d18ddc71cc1bd202ffcfddb3f95622eef3)) -- **http:** fixed proxy-from-env module import ([#5222](https://github.com/axios/axios/issues/5222)) ([12b3295](https://github.com/axios/axios/commit/12b32957f1258aee94ef859809ed39f8f88f9dfa)) -- **http:** use `globalThis.TextEncoder` when available ([#6634](https://github.com/axios/axios/issues/6634)) ([df956d1](https://github.com/axios/axios/commit/df956d18febc9100a563298dfdf0f102c3d15410)) -- ios11 breaks when build ([#6608](https://github.com/axios/axios/issues/6608)) ([7638952](https://github.com/axios/axios/commit/763895270f7b50c7c780c3c9807ae8635de952cd)) -- **types:** add missing types for mergeConfig function ([#6590](https://github.com/axios/axios/issues/6590)) ([00de614](https://github.com/axios/axios/commit/00de614cd07b7149af335e202aef0e076c254f49)) -- **types:** export CJS types from ESM ([#6218](https://github.com/axios/axios/issues/6218)) ([c71811b](https://github.com/axios/axios/commit/c71811b00f2fcff558e4382ba913bdac4ad7200e)) -- updated stream aborted error message to be more clear ([#6615](https://github.com/axios/axios/issues/6615)) ([cc3217a](https://github.com/axios/axios/commit/cc3217a612024d83a663722a56d7a98d8759c6d5)) -- use URL API instead of DOM to fix a potential vulnerability warning; ([#6714](https://github.com/axios/axios/issues/6714)) ([0a8d6e1](https://github.com/axios/axios/commit/0a8d6e19da5b9899a2abafaaa06a75ee548597db)) - -### Contributors to this release - -- avatar [Remco Haszing](https://github.com/remcohaszing '+108/-596 (#6218 )') -- avatar [Jay](https://github.com/jasonsaayman '+281/-19 (#6640 #6619 )') -- avatar [Aayush Yadav](https://github.com/aayushyadav020 '+124/-111 (#6617 )') -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+12/-65 (#6714 )') -- avatar [Ell Bradshaw](https://github.com/cincodenada '+29/-0 (#6489 )') -- avatar [Amit Saini](https://github.com/amitsainii '+13/-3 (#5237 )') -- avatar [Tommaso Paulon](https://github.com/guuido '+14/-1 (#6680 )') -- avatar [Akki](https://github.com/Aakash-Rana '+5/-5 (#6668 )') -- avatar [Sampo Silvennoinen](https://github.com/stscoundrel '+3/-3 (#6633 )') -- avatar [Kasper Isager Dalsgarð](https://github.com/kasperisager '+2/-2 (#6634 )') -- avatar [Christian Clauss](https://github.com/cclauss '+4/-0 (#6683 )') -- avatar [Pavan Welihinda](https://github.com/pavan168 '+2/-2 (#5222 )') -- avatar [Taylor Flatt](https://github.com/taylorflatt '+2/-2 (#6615 )') -- avatar [Kenzo Wada](https://github.com/Kenzo-Wada '+2/-2 (#6608 )') -- avatar [Ngole Lawson](https://github.com/echelonnought '+3/-0 (#6644 )') -- avatar [Haven](https://github.com/Baoyx007 '+3/-0 (#6590 )') -- avatar [Shrivali Dutt](https://github.com/shrivalidutt '+1/-1 (#6637 )') -- avatar [Henco Appel](https://github.com/hencoappel '+1/-1 (#6605 )') - -## [1.7.7](https://github.com/axios/axios/compare/v1.7.6...v1.7.7) (2024-08-31) - -### Bug Fixes - -- **fetch:** fix stream handling in Safari by fallback to using a stream reader instead of an async iterator; ([#6584](https://github.com/axios/axios/issues/6584)) ([d198085](https://github.com/axios/axios/commit/d1980854fee1765cd02fa0787adf5d6e34dd9dcf)) -- **http:** fixed support for IPv6 literal strings in url ([#5731](https://github.com/axios/axios/issues/5731)) ([364993f](https://github.com/axios/axios/commit/364993f0d8bc6e0e06f76b8a35d2d0a35cab054c)) - -### Contributors to this release - -- avatar [Rishi556](https://github.com/Rishi556 '+39/-1 (#5731 )') -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+27/-7 (#6584 )') - -## [1.7.6](https://github.com/axios/axios/compare/v1.7.5...v1.7.6) (2024-08-30) - -### Bug Fixes - -- **fetch:** fix content length calculation for FormData payload; ([#6524](https://github.com/axios/axios/issues/6524)) ([085f568](https://github.com/axios/axios/commit/085f56861a83e9ac02c140ad9d68dac540dfeeaa)) -- **fetch:** optimize signals composing logic; ([#6582](https://github.com/axios/axios/issues/6582)) ([df9889b](https://github.com/axios/axios/commit/df9889b83c2cc37e9e6189675a73ab70c60f031f)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+98/-46 (#6582 )') -- avatar [Jacques Germishuys](https://github.com/jacquesg '+5/-1 (#6524 )') -- avatar [kuroino721](https://github.com/kuroino721 '+3/-1 (#6575 )') - -## [1.7.5](https://github.com/axios/axios/compare/v1.7.4...v1.7.5) (2024-08-23) - -### Bug Fixes - -- **adapter:** fix undefined reference to hasBrowserEnv ([#6572](https://github.com/axios/axios/issues/6572)) ([7004707](https://github.com/axios/axios/commit/7004707c4180b416341863bd86913fe4fc2f1df1)) -- **core:** add the missed implementation of AxiosError#status property; ([#6573](https://github.com/axios/axios/issues/6573)) ([6700a8a](https://github.com/axios/axios/commit/6700a8adac06942205f6a7a21421ecb36c4e0852)) -- **core:** fix `ReferenceError: navigator is not defined` for custom environments; ([#6567](https://github.com/axios/axios/issues/6567)) ([fed1a4b](https://github.com/axios/axios/commit/fed1a4b2d78ed4a588c84e09d32749ed01dc2794)) -- **fetch:** fix credentials handling in Cloudflare workers ([#6533](https://github.com/axios/axios/issues/6533)) ([550d885](https://github.com/axios/axios/commit/550d885eb90fd156add7b93bbdc54d30d2f9a98d)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+187/-83 (#6573 #6567 #6566 #6564 #6563 #6557 #6556 #6555 #6554 #6552 )') -- avatar [Antonin Bas](https://github.com/antoninbas '+6/-6 (#6572 )') -- avatar [Hans Otto Wirtz](https://github.com/hansottowirtz '+4/-1 (#6533 )') - -## [1.7.4](https://github.com/axios/axios/compare/v1.7.3...v1.7.4) (2024-08-13) - -### Bug Fixes - -- **sec:** CVE-2024-39338 ([#6539](https://github.com/axios/axios/issues/6539)) ([#6543](https://github.com/axios/axios/issues/6543)) ([6b6b605](https://github.com/axios/axios/commit/6b6b605eaf73852fb2dae033f1e786155959de3a)) -- **sec:** disregard protocol-relative URL to remediate SSRF ([#6539](https://github.com/axios/axios/issues/6539)) ([07a661a](https://github.com/axios/axios/commit/07a661a2a6b9092c4aa640dcc7f724ec5e65bdda)) - -### Contributors to this release - -- avatar [Lev Pachmanov](https://github.com/levpachmanov '+47/-11 (#6543 )') -- avatar [Đỗ Trọng Hải](https://github.com/hainenber '+49/-4 (#6539 )') - -## [1.7.3](https://github.com/axios/axios/compare/v1.7.2...v1.7.3) (2024-08-01) - -### Bug Fixes - -- **adapter:** fix progress event emitting; ([#6518](https://github.com/axios/axios/issues/6518)) ([e3c76fc](https://github.com/axios/axios/commit/e3c76fc9bdd03aa4d98afaf211df943e2031453f)) -- **fetch:** fix withCredentials request config ([#6505](https://github.com/axios/axios/issues/6505)) ([85d4d0e](https://github.com/axios/axios/commit/85d4d0ea0aae91082f04e303dec46510d1b4e787)) -- **xhr:** return original config on errors from XHR adapter ([#6515](https://github.com/axios/axios/issues/6515)) ([8966ee7](https://github.com/axios/axios/commit/8966ee7ea62ecbd6cfb39a905939bcdab5cf6388)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+211/-159 (#6518 #6519 )') -- avatar [Valerii Sidorenko](https://github.com/ValeraS '+3/-3 (#6515 )') -- avatar [prianYu](https://github.com/prianyu '+2/-2 (#6505 )') - -## [1.7.2](https://github.com/axios/axios/compare/v1.7.1...v1.7.2) (2024-05-21) - -### Bug Fixes - -- **fetch:** enhance fetch API detection; ([#6413](https://github.com/axios/axios/issues/6413)) ([4f79aef](https://github.com/axios/axios/commit/4f79aef81b7c4644328365bfc33acf0a9ef595bc)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+3/-3 (#6413 )') - -## [1.7.1](https://github.com/axios/axios/compare/v1.7.0...v1.7.1) (2024-05-20) - -### Bug Fixes - -- **fetch:** fixed ReferenceError issue when TextEncoder is not available in the environment; ([#6410](https://github.com/axios/axios/issues/6410)) ([733f15f](https://github.com/axios/axios/commit/733f15fe5bd2d67e1fadaee82e7913b70d45dc5e)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+14/-9 (#6410 )') - -# [1.7.0](https://github.com/axios/axios/compare/v1.7.0-beta.2...v1.7.0) (2024-05-19) - -### Features - -- **adapter:** add fetch adapter; ([#6371](https://github.com/axios/axios/issues/6371)) ([a3ff99b](https://github.com/axios/axios/commit/a3ff99b59d8ec2ab5dd049e68c043617a4072e42)) - -### Bug Fixes - -- **core/axios:** handle un-writable error stack ([#6362](https://github.com/axios/axios/issues/6362)) ([81e0455](https://github.com/axios/axios/commit/81e0455b7b57fbaf2be16a73ebe0e6591cc6d8f9)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+1015/-127 (#6371 )') -- avatar [Jay](https://github.com/jasonsaayman '+30/-14 ()') -- avatar [Alexandre ABRIOUX](https://github.com/alexandre-abrioux '+56/-6 (#6362 )') - -# [1.7.0-beta.2](https://github.com/axios/axios/compare/v1.7.0-beta.1...v1.7.0-beta.2) (2024-05-19) - -### Bug Fixes - -- **fetch:** capitalize HTTP method names; ([#6395](https://github.com/axios/axios/issues/6395)) ([ad3174a](https://github.com/axios/axios/commit/ad3174a3515c3c2573f4bcb94818d582826f3914)) -- **fetch:** fix & optimize progress capturing for cases when the request data has a nullish value or zero data length ([#6400](https://github.com/axios/axios/issues/6400)) ([95a3e8e](https://github.com/axios/axios/commit/95a3e8e346cfd6a5548e171f2341df3235d0e26b)) -- **fetch:** fix headers getting from a stream response; ([#6401](https://github.com/axios/axios/issues/6401)) ([870e0a7](https://github.com/axios/axios/commit/870e0a76f60d0094774a6a63fa606eec52a381af)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+99/-46 (#6405 #6404 #6401 #6400 #6395 )') - -# [1.7.0-beta.1](https://github.com/axios/axios/compare/v1.7.0-beta.0...v1.7.0-beta.1) (2024-05-07) - -### Bug Fixes - -- **core/axios:** handle un-writable error stack ([#6362](https://github.com/axios/axios/issues/6362)) ([81e0455](https://github.com/axios/axios/commit/81e0455b7b57fbaf2be16a73ebe0e6591cc6d8f9)) -- **fetch:** fix cases when ReadableStream or Response.body are not available; ([#6377](https://github.com/axios/axios/issues/6377)) ([d1d359d](https://github.com/axios/axios/commit/d1d359da347704e8b28d768e61515a3e96c5b072)) -- **fetch:** treat fetch-related TypeError as an AxiosError.ERR_NETWORK error; ([#6380](https://github.com/axios/axios/issues/6380)) ([bb5f9a5](https://github.com/axios/axios/commit/bb5f9a5ab768452de9e166dc28d0ffc234245ef1)) - -### Contributors to this release - -- avatar [Alexandre ABRIOUX](https://github.com/alexandre-abrioux '+56/-6 (#6362 )') -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+42/-17 (#6380 #6377 )') - -# [1.7.0-beta.0](https://github.com/axios/axios/compare/v1.6.8...v1.7.0-beta.0) (2024-04-28) - -### Features - -- **adapter:** add fetch adapter; ([#6371](https://github.com/axios/axios/issues/6371)) ([a3ff99b](https://github.com/axios/axios/commit/a3ff99b59d8ec2ab5dd049e68c043617a4072e42)) - -### Contributors to this release - -- avatar [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS '+1015/-127 (#6371 )') -- avatar [Jay](https://github.com/jasonsaayman '+30/-14 ()') - -## [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) diff --git a/.claude/skills/教学日程查询/node_modules/axios/LICENSE b/.claude/skills/教学日程查询/node_modules/axios/LICENSE deleted file mode 100644 index 05006a5..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -# 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/.claude/skills/教学日程查询/node_modules/axios/MIGRATION_GUIDE.md b/.claude/skills/教学日程查询/node_modules/axios/MIGRATION_GUIDE.md deleted file mode 100644 index 2e59d9d..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/MIGRATION_GUIDE.md +++ /dev/null @@ -1,877 +0,0 @@ -# Axios Migration Guide - -> **Migrating from Axios 0.x to 1.x** -> -> This guide helps developers upgrade from Axios 0.x to 1.x by documenting breaking changes, providing migration strategies, and offering solutions to common upgrade challenges. - -## Table of Contents - -- [Overview](#overview) -- [Breaking Changes](#breaking-changes) -- [Error Handling Migration](#error-handling-migration) -- [API Changes](#api-changes) -- [Configuration Changes](#configuration-changes) -- [Migration Strategies](#migration-strategies) -- [Common Patterns](#common-patterns) -- [Troubleshooting](#troubleshooting) -- [Resources](#resources) - -## Overview - -Axios 1.x introduced several breaking changes to improve consistency, security, and developer experience. While these changes provide better error handling and more predictable behavior, they require code updates when migrating from 0.x versions. - -### Key Changes Summary - -| Area | 0.x Behavior | 1.x Behavior | Impact | -|------|--------------|--------------|--------| -| Error Handling | Selective throwing | Consistent throwing | High | -| JSON Parsing | Lenient | Strict | Medium | -| Browser Support | IE11+ | Modern browsers | Low-Medium | -| TypeScript | Partial | Full support | Low | - -### Migration Complexity - -- **Simple applications**: 1-2 hours -- **Medium applications**: 1-2 days -- **Large applications with complex error handling**: 3-5 days - -## Breaking Changes - -### 1. Error Handling Changes - -**The most significant change in Axios 1.x is how errors are handled.** - -#### 0.x Behavior -```javascript -// Axios 0.x - Some HTTP error codes didn't throw -axios.get('/api/data') - .then(response => { - // Response interceptor could handle all errors - console.log('Success:', response.data); - }); - -// Response interceptor handled everything -axios.interceptors.response.use( - response => response, - error => { - handleError(error); - // Error was "handled" and didn't propagate - } -); -``` - -#### 1.x Behavior -```javascript -// Axios 1.x - All HTTP errors throw consistently -axios.get('/api/data') - .then(response => { - console.log('Success:', response.data); - }) - .catch(error => { - // Must handle errors at call site or they propagate - console.error('Request failed:', error); - }); - -// Response interceptor must re-throw or return rejected promise -axios.interceptors.response.use( - response => response, - error => { - handleError(error); - // Must explicitly handle propagation - return Promise.reject(error); // or throw error; - } -); -``` - -#### Impact -- **Response interceptors** can no longer "swallow" errors silently -- **Every API call** must handle errors explicitly or they become unhandled promise rejections -- **Centralized error handling** requires new patterns - -### 2. JSON Parsing Changes - -#### 0.x Behavior -```javascript -// Axios 0.x - Lenient JSON parsing -// Would attempt to parse even invalid JSON -response.data; // Might contain partial data or fallbacks -``` - -#### 1.x Behavior -```javascript -// Axios 1.x - Strict JSON parsing -// Throws clear errors for invalid JSON -try { - const data = response.data; -} catch (error) { - // Handle JSON parsing errors explicitly -} -``` - -### 3. Request/Response Transform Changes - -#### 0.x Behavior -```javascript -// Implicit transformations with some edge cases -transformRequest: [function (data) { - // Less predictable behavior - return data; -}] -``` - -#### 1.x Behavior -```javascript -// More consistent transformation pipeline -transformRequest: [function (data, headers) { - // Headers parameter always available - // More predictable behavior - return data; -}] -``` - -### 4. Browser Support Changes - -- **0.x**: Supported IE11 and older browsers -- **1.x**: Requires modern browsers with Promise support -- **Polyfills**: May be needed for older browser support - -## Error Handling Migration - -The error handling changes are the most complex part of migrating to Axios 1.x. Here are proven strategies: - -### Strategy 1: Centralized Error Handling with Error Boundary - -```javascript -// Create a centralized error handler -class ApiErrorHandler { - constructor() { - this.setupInterceptors(); - } - - setupInterceptors() { - axios.interceptors.response.use( - response => response, - error => { - // Centralized error processing - this.processError(error); - - // Return a resolved promise with error info for handled errors - if (this.isHandledError(error)) { - return Promise.resolve({ - data: null, - error: this.normalizeError(error), - handled: true - }); - } - - // Re-throw unhandled errors - return Promise.reject(error); - } - ); - } - - processError(error) { - // Log errors - console.error('API Error:', error); - - // Show user notifications - if (error.response?.status === 401) { - this.handleAuthError(); - } else if (error.response?.status >= 500) { - this.showErrorNotification('Server error occurred'); - } - } - - isHandledError(error) { - // Define which errors are "handled" centrally - const handledStatuses = [401, 403, 404, 422, 500, 502, 503]; - return handledStatuses.includes(error.response?.status); - } - - normalizeError(error) { - return { - status: error.response?.status, - message: error.response?.data?.message || error.message, - code: error.response?.data?.code || error.code - }; - } - - handleAuthError() { - // Redirect to login, clear tokens, etc. - localStorage.removeItem('token'); - window.location.href = '/login'; - } - - showErrorNotification(message) { - // Show user-friendly error message - console.error(message); // Replace with your notification system - } -} - -// Initialize globally -const errorHandler = new ApiErrorHandler(); - -// Usage in components/services -async function fetchUserData(userId) { - try { - const response = await axios.get(`/api/users/${userId}`); - - // Check if error was handled centrally - if (response.handled) { - return { data: null, error: response.error }; - } - - return { data: response.data, error: null }; - } catch (error) { - // Unhandled errors still need local handling - return { data: null, error: { message: 'Unexpected error occurred' } }; - } -} -``` - -### Strategy 2: Wrapper Function Pattern - -```javascript -// Create a wrapper that provides 0.x-like behavior -function createApiWrapper() { - const api = axios.create(); - - // Add response interceptor for centralized handling - api.interceptors.response.use( - response => response, - error => { - // Handle common errors centrally - if (error.response?.status === 401) { - // Handle auth errors - handleAuthError(); - } - - if (error.response?.status >= 500) { - // Handle server errors - showServerErrorNotification(); - } - - // Always reject to maintain error propagation - return Promise.reject(error); - } - ); - - // Wrapper function that mimics 0.x behavior - function safeRequest(requestConfig, options = {}) { - return api(requestConfig) - .then(response => response) - .catch(error => { - if (options.suppressErrors) { - // Return error info instead of throwing - return { - data: null, - error: { - status: error.response?.status, - message: error.response?.data?.message || error.message - } - }; - } - throw error; - }); - } - - return { safeRequest, axios: api }; -} - -// Usage -const { safeRequest } = createApiWrapper(); - -// For calls where you want centralized error handling -const result = await safeRequest( - { method: 'get', url: '/api/data' }, - { suppressErrors: true } -); - -if (result.error) { - // Handle error case - console.log('Request failed:', result.error.message); -} else { - // Handle success case - console.log('Data:', result.data); -} -``` - -### Strategy 3: Global Error Handler with Custom Events - -```javascript -// Set up global error handling with events -class GlobalErrorHandler extends EventTarget { - constructor() { - super(); - this.setupInterceptors(); - } - - setupInterceptors() { - axios.interceptors.response.use( - response => response, - error => { - // Emit custom event for global handling - this.dispatchEvent(new CustomEvent('apiError', { - detail: { error, timestamp: new Date() } - })); - - // Always reject to maintain proper error flow - return Promise.reject(error); - } - ); - } -} - -const globalErrorHandler = new GlobalErrorHandler(); - -// Set up global listeners -globalErrorHandler.addEventListener('apiError', (event) => { - const { error } = event.detail; - - // Centralized error logic - if (error.response?.status === 401) { - handleAuthError(); - } - - if (error.response?.status >= 500) { - showErrorNotification('Server error occurred'); - } -}); - -// Usage remains clean -async function apiCall() { - try { - const response = await axios.get('/api/data'); - return response.data; - } catch (error) { - // Error was already handled globally - // Just handle component-specific logic - return null; - } -} -``` - -## API Changes - -### Request Configuration - -#### 0.x to 1.x Changes -```javascript -// 0.x - Some properties had different defaults -const config = { - timeout: 0, // No timeout by default - maxContentLength: -1, // No limit -}; - -// 1.x - More secure defaults -const config = { - timeout: 0, // Still no timeout, but easier to configure - maxContentLength: 2000, // Default limit for security - maxBodyLength: 2000, // New property -}; -``` - -### Response Object - -The response object structure remains largely the same, but error responses are more consistent: - -```javascript -// Both 0.x and 1.x -response = { - data: {}, // Response body - status: 200, // HTTP status - statusText: 'OK', // HTTP status message - headers: {}, // Response headers - config: {}, // Request config - request: {} // Request object -}; - -// Error responses are more consistent in 1.x -error.response = { - data: {}, // Error response body - status: 404, // HTTP error status - statusText: 'Not Found', - headers: {}, - config: {}, - request: {} -}; -``` - -## Configuration Changes - -### Default Configuration Updates - -```javascript -// 0.x defaults -axios.defaults.timeout = 0; // No timeout -axios.defaults.maxContentLength = -1; // No limit - -// 1.x defaults (more secure) -axios.defaults.timeout = 0; // Still no timeout -axios.defaults.maxContentLength = 2000; // 2MB limit -axios.defaults.maxBodyLength = 2000; // 2MB limit -``` - -### Instance Configuration - -```javascript -// 0.x - Instance creation -const api = axios.create({ - baseURL: 'https://api.example.com', - timeout: 1000, -}); - -// 1.x - Same API, but more options available -const api = axios.create({ - baseURL: 'https://api.example.com', - timeout: 1000, - maxBodyLength: Infinity, // Override default if needed - maxContentLength: Infinity, -}); -``` - -## Migration Strategies - -### Step-by-Step Migration Process - -#### Phase 1: Preparation -1. **Audit Current Error Handling** - ```bash - # Find all axios usage - grep -r "axios\." src/ - grep -r "\.catch" src/ - grep -r "interceptors" src/ - ``` - -2. **Identify Patterns** - - Response interceptors that handle errors - - Components that rely on centralized error handling - - Authentication and retry logic - -3. **Create Test Cases** - ```javascript - // Test current error handling behavior - describe('Error Handling Migration', () => { - it('should handle 401 errors consistently', async () => { - // Test authentication error flows - }); - - it('should handle 500 errors with user feedback', async () => { - // Test server error handling - }); - }); - ``` - -#### Phase 2: Implementation -1. **Update Dependencies** - ```bash - npm update axios - ``` - -2. **Implement New Error Handling** - - Choose one of the strategies above - - Update response interceptors - - Add error handling to API calls - -3. **Update Authentication Logic** - ```javascript - // 0.x pattern - axios.interceptors.response.use(null, error => { - if (error.response?.status === 401) { - logout(); - // Error was "handled" - } - }); - - // 1.x pattern - axios.interceptors.response.use( - response => response, - error => { - if (error.response?.status === 401) { - logout(); - } - return Promise.reject(error); // Always propagate - } - ); - ``` - -#### Phase 3: Testing and Validation -1. **Test Error Scenarios** - - Network failures - - HTTP error codes (401, 403, 404, 500, etc.) - - Timeout errors - - JSON parsing errors - -2. **Validate User Experience** - - Error messages are shown appropriately - - Authentication redirects work - - Loading states are handled correctly - -### Gradual Migration Approach - -For large applications, consider gradual migration: - -```javascript -// Create a compatibility layer -const axiosCompat = { - // Use new axios instance for new code - v1: axios.create({ - // 1.x configuration - }), - - // Wrapper for legacy code - legacy: createLegacyWrapper(axios.create({ - // Configuration that mimics 0.x behavior - })) -}; - -function createLegacyWrapper(axiosInstance) { - // Add interceptors that provide 0.x-like behavior - axiosInstance.interceptors.response.use( - response => response, - error => { - // Handle errors in 0.x style for legacy code - handleLegacyError(error); - // Don't propagate certain errors - if (shouldSuppressError(error)) { - return Promise.resolve({ data: null, error: true }); - } - return Promise.reject(error); - } - ); - - return axiosInstance; -} -``` - -## Common Patterns - -### Authentication Interceptors - -#### Updated Authentication Pattern -```javascript -// Token refresh interceptor for 1.x -let isRefreshing = false; -let refreshSubscribers = []; - -function subscribeTokenRefresh(cb) { - refreshSubscribers.push(cb); -} - -function onTokenRefreshed(token) { - refreshSubscribers.forEach(cb => cb(token)); - refreshSubscribers = []; -} - -axios.interceptors.response.use( - response => response, - async error => { - const originalRequest = error.config; - - if (error.response?.status === 401 && !originalRequest._retry) { - if (isRefreshing) { - // Wait for token refresh - return new Promise(resolve => { - subscribeTokenRefresh(token => { - originalRequest.headers.Authorization = `Bearer ${token}`; - resolve(axios(originalRequest)); - }); - }); - } - - originalRequest._retry = true; - isRefreshing = true; - - try { - const newToken = await refreshToken(); - onTokenRefreshed(newToken); - isRefreshing = false; - - originalRequest.headers.Authorization = `Bearer ${newToken}`; - return axios(originalRequest); - } catch (refreshError) { - isRefreshing = false; - logout(); - return Promise.reject(refreshError); - } - } - - return Promise.reject(error); - } -); -``` - -### Retry Logic - -```javascript -// Retry interceptor for 1.x -function createRetryInterceptor(maxRetries = 3, retryDelay = 1000) { - return axios.interceptors.response.use( - response => response, - async error => { - const config = error.config; - - if (!config || !config.retry) { - return Promise.reject(error); - } - - config.__retryCount = config.__retryCount || 0; - - if (config.__retryCount >= maxRetries) { - return Promise.reject(error); - } - - config.__retryCount += 1; - - // Exponential backoff - const delay = retryDelay * Math.pow(2, config.__retryCount - 1); - await new Promise(resolve => setTimeout(resolve, delay)); - - return axios(config); - } - ); -} - -// Usage -const api = axios.create(); -createRetryInterceptor(3, 1000); - -// Make request with retry -api.get('/api/data', { retry: true }); -``` - -### Loading State Management - -```javascript -// Loading interceptor for 1.x -class LoadingManager { - constructor() { - this.requests = new Set(); - this.setupInterceptors(); - } - - setupInterceptors() { - axios.interceptors.request.use(config => { - this.requests.add(config); - this.updateLoadingState(); - return config; - }); - - axios.interceptors.response.use( - response => { - this.requests.delete(response.config); - this.updateLoadingState(); - return response; - }, - error => { - this.requests.delete(error.config); - this.updateLoadingState(); - return Promise.reject(error); - } - ); - } - - updateLoadingState() { - const isLoading = this.requests.size > 0; - // Update your loading UI - document.body.classList.toggle('loading', isLoading); - } -} - -const loadingManager = new LoadingManager(); -``` - -## Troubleshooting - -### Common Migration Issues - -#### Issue 1: Unhandled Promise Rejections - -**Problem:** -```javascript -// This pattern worked in 0.x but causes unhandled rejections in 1.x -axios.get('/api/data'); // No .catch() handler -``` - -**Solution:** -```javascript -// Always handle promises -axios.get('/api/data') - .catch(error => { - // Handle error appropriately - console.error('Request failed:', error.message); - }); - -// Or use async/await with try/catch -async function fetchData() { - try { - const response = await axios.get('/api/data'); - return response.data; - } catch (error) { - console.error('Request failed:', error.message); - return null; - } -} -``` - -#### Issue 2: Response Interceptors Not "Handling" Errors - -**Problem:** -```javascript -// 0.x style - interceptor "handled" errors -axios.interceptors.response.use(null, error => { - showErrorMessage(error.message); - // Error was considered "handled" -}); -``` - -**Solution:** -```javascript -// 1.x style - explicitly control error propagation -axios.interceptors.response.use( - response => response, - error => { - showErrorMessage(error.message); - - // Choose whether to propagate the error - if (shouldPropagateError(error)) { - return Promise.reject(error); - } - - // Return success-like response for "handled" errors - return Promise.resolve({ - data: null, - handled: true, - error: normalizeError(error) - }); - } -); -``` - -#### Issue 3: JSON Parsing Errors - -**Problem:** -```javascript -// 1.x is stricter about JSON parsing -// This might throw where 0.x was lenient -const data = response.data; -``` - -**Solution:** -```javascript -// Add response transformer for better error handling -axios.defaults.transformResponse = [ - function (data) { - if (typeof data === 'string') { - try { - return JSON.parse(data); - } catch (e) { - // Handle JSON parsing errors gracefully - console.warn('Invalid JSON response:', data); - return { error: 'Invalid JSON', rawData: data }; - } - } - return data; - } -]; -``` - -#### Issue 4: TypeScript Errors After Upgrade - -**Problem:** -```typescript -// TypeScript errors after upgrade -const response = await axios.get('/api/data'); -// Property 'someProperty' does not exist on type 'any' -``` - -**Solution:** -```typescript -// Define proper interfaces -interface ApiResponse { - data: any; - message: string; - success: boolean; -} - -const response = await axios.get('/api/data'); -// Now properly typed -console.log(response.data.data); -``` - -### Debug Migration Issues - -#### Enable Debug Logging -```javascript -// Add request/response logging -axios.interceptors.request.use(config => { - console.log('Request:', config); - return config; -}); - -axios.interceptors.response.use( - response => { - console.log('Response:', response); - return response; - }, - error => { - console.log('Error:', error); - return Promise.reject(error); - } -); -``` - -#### Compare Behavior -```javascript -// Create side-by-side comparison during migration -const axios0x = require('axios-0x'); // Keep old version for testing -const axios1x = require('axios'); - -async function compareRequests(config) { - try { - const [result0x, result1x] = await Promise.allSettled([ - axios0x(config), - axios1x(config) - ]); - - console.log('0.x result:', result0x); - console.log('1.x result:', result1x); - } catch (error) { - console.log('Comparison error:', error); - } -} -``` - -## Resources - -### Official Documentation -- [Axios 1.x Documentation](https://axios-http.com/) -- [Axios GitHub Repository](https://github.com/axios/axios) -- [Axios Changelog](https://github.com/axios/axios/blob/main/CHANGELOG.md) - -### Migration Tools -- [Axios Migration Codemod](https://github.com/axios/axios-migration-codemod) *(if available)* -- [ESLint Rules for Axios 1.x](https://github.com/axios/eslint-plugin-axios) *(if available)* - -### Community Resources -- [Stack Overflow - Axios Migration Questions](https://stackoverflow.com/questions/tagged/axios+migration) -- [GitHub Discussions](https://github.com/axios/axios/discussions) -- [Axios Discord Community](https://discord.gg/axios) *(if available)* - -### Related Issues -- [Error Handling Changes Discussion](https://github.com/axios/axios/issues/7208) -- [Migration Guide Request](https://github.com/axios/axios/issues/xxxx) *(link to related issues)* - ---- - -## Need Help? - -If you encounter issues during migration that aren't covered in this guide: - -1. **Search existing issues** in the [Axios GitHub repository](https://github.com/axios/axios/issues) -2. **Ask questions** in [GitHub Discussions](https://github.com/axios/axios/discussions) -3. **Contribute improvements** to this migration guide - ---- - -*This migration guide is maintained by the community. If you find errors or have suggestions, please [open an issue](https://github.com/axios/axios/issues) or submit a pull request.* \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/axios/README.md b/.claude/skills/教学日程查询/node_modules/axios/README.md deleted file mode 100644 index 9dbcd7a..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/README.md +++ /dev/null @@ -1,2055 +0,0 @@ -

💎 Platinum sponsors

THANKS.DEV

We're passionate about making open source sustainable. Scan your dependancy tree to better understand which open source projects need funding the...

thanks.dev

-
Hopper Security

Hopper provides a secure open-source registry where every component is verified against malware and continuously remediated for vulnerabilities across any version. In simple terms, Hopper removes the need to manage software supply chain risk altogether.

Hopper.Security

-
💜 Become a sponsor - 💜 Become a sponsor -
-

🥇 Gold sponsors

Principal Financial Group

We’re bound by one common purpose: to give you the financial tools, resources and information you ne...

www.principal.com

-
Buy Instagram Followers Twicsy

Buy real Instagram followers from Twicsy starting at only $2.97. Twicsy has been voted the best site...

twicsy.com

-
Descope

Hi, we're Descope! We are building something in the authentication space for app developers and...

Website | Docs | Community

-
Route4Me

Best Route Planning And Route Optimization Software

Explore | Free Trial | Contact

-
Buzzoid - Buy Instagram Followers

At Buzzoid, you can buy Instagram followers quickly, safely, and easily with just a few clicks. Rate...

buzzoid.com

-
Poprey - Buy Instagram Likes

Buy Instagram Likes

poprey.com

-
Requestly

A lightweight open-source API Development, Testing & Mocking platform

requestly.com

-
RxDB

RxDB is a fast, local-first NoSQL-database for JavaScript Applications like Websites, hybrid Apps, E...

rxdb.info

-
💜 Become a sponsor -
- - - -

- -
- Axios
-
- -

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) -[![Contributors](https://img.shields.io/github/contributors/axios/axios.svg?style=flat-square)](CONTRIBUTORS.md) - -
- -## 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) -- [Handling Timeouts](#handling-timeouts) -- [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](#-rate-limiting) -- [🆕 AxiosHeaders](#-axiosheaders) -- [🔥 Fetch adapter](#-fetch-adapter) - - [🔥 Custom fetch](#-custom-fetch) - - [🔥 Using with Tauri](#-using-with-tauri) - - [🔥 Using with SvelteKit](#-using-with-sveltekit-) -- [🔥 HTTP2](#-http2) -- [Semver](#semver) -- [Promises](#promises) -- [TypeScript](#typescript) -- [Contributing](#contributing) - - [Local setup](#local-setup) -- [Resources](#resources) -- [Credits](#credits) -- [License](#license) - -## Features - -- **Browser Requests:** Make [XMLHttpRequests](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) directly from the browser. -- **Node.js Requests:** Make [http](https://nodejs.org/api/http.html) requests from Node.js environments. -- **Promise-based:** Fully supports the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) API for easier asynchronous code. -- **Interceptors:** Intercept requests and responses to add custom logic or transform data. -- **Data Transformation:** Transform request and response data automatically. -- **Request Cancellation:** Cancel requests using built-in mechanisms. -- **Automatic JSON Handling:** Automatically serializes and parses [JSON](https://www.json.org/json-en.html) data. -- **Form Serialization:** 🆕 Automatically serializes data objects to `multipart/form-data` or `x-www-form-urlencoded` formats. -- **XSRF Protection:** Client-side support to protect against [Cross-Site Request Forgery](https://en.wikipedia.org/wiki/Cross-site_request_forgery). - -## Browser Support - -| Chrome | Firefox | Safari | Opera | Edge | -| :------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------: | -| ![Chrome browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome_48x48.png) | ![Firefox browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/firefox/firefox_48x48.png) | ![Safari browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/safari/safari_48x48.png) | ![Opera browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/opera/opera_48x48.png) | ![Edge browser logo](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge_48x48.png) | -| Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | - -[![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 yarn: - -```bash -$ yarn add axios -``` - -Using pnpm: - -```bash -$ pnpm add axios -``` - -Using bun: - -```bash -$ bun 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 the default export is available**: - -```js -const axios = require('axios'); - -console.log(axios.isCancel('something')); -``` - -For some bundlers and some ES6 linters you may need to do the following: - -```js -import { default as axios } from 'axios'; -``` - -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 - -```js -import axios from 'axios'; -//const axios = require('axios'); // legacy way - -try { - const response = await axios.get('/user?ID=12345'); - console.log(response); -} catch (error) { - console.error(error); -} - -// 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 -const response = await axios.post('/user', { - firstName: 'Fred', - lastName: 'Flintstone', -}); -console.log(response); -``` - -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 -const response = await axios({ - method: 'get', - url: 'https://bit.ly/2mTM3nY', - responseType: 'stream', -}); -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 - -### ⚠️ Security notice: decompression-bomb protection is opt-in - -By default `maxContentLength` and `maxBodyLength` are `-1` (unlimited). A malicious or compromised server can return a tiny gzip/deflate/brotli body that expands to gigabytes and exhaust the Node.js process. - -If you call servers you do not fully trust, **set a cap**: - -```js -axios.defaults.maxContentLength = 10 * 1024 * 1024; // 10 MB -axios.defaults.maxBodyLength = 10 * 1024 * 1024; -``` - -See the [security guide](https://axios.rest/pages/misc/security.html) for details. - -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 and the option `allowAbsoluteUrls` is set to true. - // It can be convenient to set `baseURL` for an instance of axios to pass relative URLs - // to the methods of that instance. - baseURL: 'https://some-domain.com/api/', - - // `allowAbsoluteUrls` determines whether or not absolute URLs will override a configured `baseUrl`. - // When set to true (default), absolute values for `url` will override `baseUrl`. - // When set to false, absolute values for `url` will always be prepended by `baseUrl`. - allowAbsoluteUrls: true, - - // `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 the 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). - - // Maximum object nesting depth when serializing params. Payloads deeper than this throw an - // AxiosError with code ERR_FORM_DATA_DEPTH_EXCEEDED. Default: 100. Set to Infinity to disable. - maxDepth: 100 - - }, - - // `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, it 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 - // This only controls whether the browser sends credentials. - // It does not control whether the XSRF header is added. - 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) { - /* ... */ - }, - // Also, you can set the name of the built-in adapter, or provide an array with their names - // to choose the first available in the environment - adapter: 'xhr', // 'fetch' | 'http' | ['xhr', 'http', 'fetch'] - - // `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 the 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 - - // `withXSRFToken` defines whether to send the XSRF header in browser requests. - // `undefined` (default) - set XSRF header only for the same origin requests - // `true` - always set XSRF header, including for cross-origin requests - // `false` - never set XSRF header - // function - resolve with custom logic; receives the internal config object - withXSRFToken: boolean | undefined | ((config: InternalAxiosRequestConfig) => boolean | undefined), - - // `withXSRFToken` controls whether Axios reads the XSRF cookie and sets the XSRF header. - // - `undefined` (default): the XSRF header is set only for same-origin requests. - // - `true`: attempt to set the XSRF header for all requests (including cross-origin). - // - `false`: never set the XSRF header. - // - function: a callback that receives the request `config` and returns `true`, - // `false`, or `undefined` to decide per-request behavior. - // - // Note about `withCredentials`: `withCredentials` controls whether cross-site - // requests include credentials (cookies and HTTP auth). In older Axios versions, - // setting `withCredentials: true` implicitly caused Axios to set the XSRF header - // for cross-origin requests. Newer Axios separates these concerns: to allow the - // XSRF header to be sent for cross-origin requests you should set both - // `withCredentials: true` and `withXSRFToken: true`. - // - // Example: - // axios.get('/user', { withCredentials: true, withXSRFToken: true }); - - // `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.protocol === "https:" - ) { - options.auth = "user:password"; - } - }, - // Security note: - // The `beforeRedirect` hook runs after sensitive headers are stripped during redirects. - //The `follow-redirects` library removes credentials on protocol downgrade (HTTPS → HTTP) for security. - //Since `beforeRedirect` runs after this, re-injecting credentials without checking the protocol can expose sensitive data. - //Always ensure credentials are only added for trusted HTTPS destinations. - -// Security note: -// The beforeRedirect hook runs after sensitive headers are stripped during redirects. -// Re-injecting credentials without checking the destination can expose sensitive data. -// Only add credentials for trusted HTTPS destinations. -// Avoid re-adding credentials on downgraded redirects. - - - // `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. - // - // Security: when `socketPath` is set, hostname/port of the URL are ignored, - // which bypasses hostname-based SSRF protections. Never derive `socketPath` - // from untrusted input. Use `allowedSocketPaths` (below) to restrict accepted - // socket paths for defense-in-depth. - socketPath: null, // default - - // `allowedSocketPaths` restricts which `socketPath` values are accepted. - // Accepts a string or array of strings. Entries and the incoming socketPath - // are compared after path.resolve(). A mismatch throws AxiosError with code - // `ERR_BAD_OPTION_VALUE`. When null/undefined, no restriction is applied. - allowedSocketPaths: 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 before Node.js v19.0.0. After Node.js - // v19.0.0, you no longer need to customize the agent to enable `keepAlive` because - // `http.globalAgent` has `keepAlive` 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 a `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 - // Important: this option only takes effect when `responseType` is explicitly set to 'json'. - // When `responseType` is omitted (defaults to no value), axios uses `forcedJSONParsing` - // to attempt JSON parsing, but will silently return the raw string on failure regardless - // of this setting. To have invalid JSON throw errors, use: - // { responseType: 'json', transitional: { silentJSONParsing: false } } - 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, - - // use the legacy interceptor request/response ordering - legacyInterceptorReqResOrdering: true, // default - }, - - 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 - maxDepth: 100; // maximum object nesting depth; throws AxiosError (ERR_FORM_DATA_DEPTH_EXCEEDED) if exceeded. Set to Infinity to disable. - }, - - // http adapter only (node.js) - maxRate: [ - 100 * 1024, // 100KB/s upload limit, - 100 * 1024 // 100KB/s download limit - ] -} -``` - -## 🔥 HTTP/2 Support - -Axios has experimental HTTP/2 support available via the Node.js HTTP adapter. - -Support depends on the runtime environment and Node.js version. Features like redirects and some behaviors may not be fully supported with HTTP/2. - -Options like `httpVersion` and `http2Options` are adapter-specific and may not work consistently across all environments. - -If HTTP/2 functionality is required, ensure your runtime environment supports it or consider using alternative libraries or custom adapters. - -## Response Schema - -The response to 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 -const response = await axios.get('/user/12345'); -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/index.js](https://github.com/axios/axios/blob/main/lib/defaults/index.js#L49), 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 methods like `.get()` or `.post()` -resolve their promises (before code inside `then` or `catch`, or after `await`) - -```js -const instance = axios.create(); - -// Add a request interceptor -instance.interceptors.request.use( - function (config) { - // Do something before the request is sent - return config; - }, - function (error) { - // Do something with the request error - return Promise.reject(error); - } -); - -// Add a response interceptor -instance.interceptors.response.use( - function (response) { - // Any status code that lies within the range of 2xx causes this function to trigger - // Do something with response data - return response; - }, - function (error) { - // Any status codes that fall 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 instance = axios.create(); -const myInterceptor = instance.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 at 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 request 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 } -); -``` - -> **Note:** The options parameter(having `synchronous` and `runWhen` properties) is only supported for request interceptors at the moment. - -### Interceptor Execution Order - -**Important:** Interceptors have different execution orders depending on their type! - -Request interceptors are executed in **reverse order** (LIFO - Last In, First Out). This means the _last_ interceptor added is executed **first**. - -Response interceptors are executed in the **order they were added** (FIFO - First In, First Out). This means the _first_ interceptor added is executed **first**. - -Example: - -```js -const instance = axios.create(); - -const interceptor = (id) => (base) => { - console.log(id); - return base; -}; - -instance.interceptors.request.use(interceptor('Request Interceptor 1')); -instance.interceptors.request.use(interceptor('Request Interceptor 2')); -instance.interceptors.request.use(interceptor('Request Interceptor 3')); -instance.interceptors.response.use(interceptor('Response Interceptor 1')); -instance.interceptors.response.use(interceptor('Response Interceptor 2')); -instance.interceptors.response.use(interceptor('Response Interceptor 3')); - -// Console output: -// Request Interceptor 3 -// Request Interceptor 2 -// Request Interceptor 1 -// [HTTP request is made] -// Response Interceptor 1 -// Response Interceptor 2 -// Response Interceptor 3 -``` - -### Multiple Interceptors - -Given that 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) to see all this in code. - -## Error Types - -There are many different axios error messages that can appear which 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 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 value provided in axios configuration. | -| ERR_BAD_OPTION | Invalid option provided in axios configuration. | -| ERR_NOT_SUPPORT | Feature or method not supported in the current axios environment. | -| ERR_DEPRECATED | Deprecated feature or method used in axios. | -| ERR_INVALID_URL | Invalid URL provided for axios request. | -| ECONNABORTED | Typically indicates that the request has been timed out (unless `transitional.clarifyTimeoutError` is set) or aborted by the browser or its plugin. | -| ERR_CANCELED | Feature or method is canceled explicitly by the user using an AbortSignal (or a CancelToken). | -| ETIMEDOUT | Request timed out due to exceeding the default axios timelimit. `transitional.clarifyTimeoutError` must be set to `true`, otherwise a generic `ECONNABORTED` error will be thrown instead. | -| ERR_NETWORK | Network-related issue. In the browser, this error can also be caused by a [CORS](https://developer.mozilla.org/ru/docs/Web/HTTP/Guides/CORS) or [Mixed Content](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content) policy violation. The browser does not allow the JS code to clarify the real reason for the error caused by security issues, so please check the console. | -| ERR_FR_TOO_MANY_REDIRECTS | Request is redirected too many times; exceeds max redirects specified in axios configuration. | -| ERR_BAD_RESPONSE | Response cannot be parsed properly or is in an unexpected format. Usually related to a response with `5xx` status code. | -| ERR_BAD_REQUEST | The request has an unexpected format or is missing required parameters. Usually related to a response with `4xx` status code. | - -## 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()); -}); -``` - -## Handling Timeouts - -```js -async function fetchWithTimeout() { - try { - const response = await axios.get('https://example.com/data', { - timeout: 5000, // 5 seconds - transitional: { - // set to true if you prefer ETIMEDOUT over ECONNABORTED - clarifyTimeoutError: false, - }, - }); - - console.log('Response:', response.data); - } catch (error) { - if (axios.isAxiosError(error)) { - if (error.code === 'ECONNABORTED' || error.code === 'ETIMEDOUT') { - console.error('Request timed out. Please try again.'); - return; - } - - console.error('Axios error:', error.message); - return; - } - - console.error('Unexpected error:', error); - } -} -``` - -## Cancellation - -### AbortController - -Starting from `v0.22.0` Axios supports AbortController to cancel requests in a 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`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) format 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 -const 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/form-data` 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', Buffer.alloc(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: Buffer.alloc(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`) -- `maxDepth: number = 100` - maximum object nesting depth the serializer will recurse into. If the - input object exceeds this depth, an `AxiosError` with `code: 'ERR_FORM_DATA_DEPTH_EXCEEDED'` is - thrown instead of overflowing the call stack. This protects server-side applications from DoS - attacks via deeply nested payloads. Set to `Infinity` to disable the limit and restore pre-fix behaviour. - -```js -// Raise the limit for a schema that genuinely nests deeper than 100 levels: -axios.postForm('/api', data, { formSerializer: { maxDepth: 200 } }); - -// Same protection applies to params serialization: -axios.get('/api', { params: data, paramsSerializer: { maxDepth: 200 } }); -``` - -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 an 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. -The frequency of progress events is forced to be limited to `3` times per second. - -```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 the 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 as a workaround when servers mistakenly consider the header's case. -The old approach of directly manipulating the 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 -``` - -### Preserving a specific header case - -Header names are case-insensitive, but `AxiosHeaders` keeps the case of the first matching key it sees. -If you need a specific case for non-standard case-sensitive servers, define a case preset with `undefined` and then set the value later: - -```js -const api = axios.create(); - -api.defaults.headers.common = { - 'content-type': undefined, - accept: undefined, -}; - -await api.put(url, data, { - headers: { - 'Content-Type': 'application/octet-stream', - Accept: 'application/json', - }, -}); -``` - -You can also compose the same behavior with `AxiosHeaders.concat`: - -```js -const headers = axios.AxiosHeaders.concat( - { 'content-type': undefined }, - { 'Content-Type': 'application/octet-stream' } -); - -await axios.put(url, data, { headers }); -``` - -### 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 the 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 header names to lowercase and capitalizing 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 header 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` - -## 🔥 Fetch adapter - -Fetch adapter was introduced in `v1.7.0`. By default, it will be used if `xhr` and `http` adapters are not available in the build, -or not supported by the environment. -To use it by default, it must be selected explicitly: - -```js -const { data } = axios.get(url, { - adapter: 'fetch', // by default ['xhr', 'http', 'fetch'] -}); -``` - -You can create a separate instance for this: - -```js -const fetchAxios = axios.create({ - adapter: 'fetch', -}); - -const { data } = fetchAxios.get(url); -``` - -The adapter supports the same functionality as the `xhr` adapter, **including upload and download progress capturing**. -Also, it supports additional response types such as `stream` and `formdata` (if supported by the environment). - -### 🔥 Custom fetch - -Starting from `v1.12.0`, you can customize the fetch adapter to use a custom fetch API instead of environment globals. -You can pass a custom `fetch` function, `Request`, and `Response` constructors via env config. -This can be helpful in case of custom environments & app frameworks. - -Also, when using a custom fetch, you may need to set custom Request and Response too. If you don't set them, global objects will be used. -If your custom fetch api does not have these objects, and the globals are incompatible with a custom fetch, -you must disable their use inside the fetch adapter by passing null. - -> Note: Setting `Request` & `Response` to `null` will make it impossible for the fetch adapter to capture the upload & download progress. - -Basic example: - -```js -import customFetchFunction from 'customFetchModule'; - -const instance = axios.create({ - adapter: 'fetch', - onDownloadProgress(e) { - console.log('downloadProgress', e); - }, - env: { - fetch: customFetchFunction, - Request: null, // undefined -> use the global constructor - Response: null, - }, -}); -``` - -#### 🔥 Using with Tauri - -A minimal example of setting up Axios for use in a [Tauri](https://tauri.app/plugin/http-client/) app with a platform fetch function that ignores CORS policy for requests. - -```js -import { fetch } from '@tauri-apps/plugin-http'; -import axios from 'axios'; - -const instance = axios.create({ - adapter: 'fetch', - onDownloadProgress(e) { - console.log('downloadProgress', e); - }, - env: { - fetch, - }, -}); - -const { data } = await instance.get('https://google.com'); -``` - -#### 🔥 Using with SvelteKit - -[SvelteKit](https://svelte.dev/docs/kit/web-standards#Fetch-APIs) framework has a custom implementation of the fetch function for server rendering (so called `load` functions), and also uses relative paths, -which makes it incompatible with the standard URL API. So, Axios must be configured to use the custom fetch API: - -```js -export async function load({ fetch }) { - const { data: post } = await axios.get('https://jsonplaceholder.typicode.com/posts/1', { - adapter: 'fetch', - env: { - fetch, - Request: null, - Response: null, - }, - }); - - return { post }; -} -``` - -#### HTTP/2 Support - -Axios supports HTTP/2 via the Node.js `http` adapter (introduced in v1.13.0). - -This support depends on the runtime environment. Since Axios relies on Node.js APIs, HTTP/2 functionality is available in supported Node.js versions, but may not work in other environments (such as Bun or Deno). - -Options like `httpVersion` and `http2Options` are adapter-specific and may not behave consistently across all environments. - -Note: HTTP/2 redirects are currently not supported by the HTTP/2 adapter. - -```js -const form = new FormData(); - -form.append('foo', '123'); - -const { data, headers, status } = await axios.post('https://httpbin.org/post', form, { - onUploadProgress(e) { - console.log('upload progress', e); - }, - onDownloadProgress(e) { - console.log('download progress', e); - }, - responseType: 'arraybuffer', -}); -``` - -## Semver - -Since Axios has reached a `v.1.0.0` we will fully embrace semver as per the spec [here](https://semver.org/) - -## 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"`. - -You can also create a custom instance with typed interceptors: - -```typescript -import axios, { AxiosInstance, InternalAxiosRequestConfig } from 'axios'; - -const apiClient: AxiosInstance = axios.create({ - baseURL: 'https://api.example.com', - timeout: 10000, -}); - -apiClient.interceptors.request.use((config: InternalAxiosRequestConfig) => { - // Add auth token - return config; -}); -``` - -## 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) - -## Contributing - -### Local setup - -As a supply-chain hardening measure, this repository ships a project-level `.npmrc` that sets `ignore-scripts=true`. This blocks npm lifecycle scripts (`preinstall`, `install`, `postinstall`, `prepare`) from any direct or transitive dependency when you run `npm install` or `npm ci` inside the repo. See [THREATMODEL.md](./THREATMODEL.md) (threat T-S2) for the rationale. - -One consequence: the repository's own `prepare` hook (which installs Husky's git hooks) will **not** run automatically. After your first install, enable the git hooks manually: - -```bash -npm ci -npm rebuild husky && npx husky -``` - -Run those two commands once per fresh checkout. You do **not** need to re-run them after every subsequent `npm install`. - -Do not remove `ignore-scripts=true` from `.npmrc` to "fix" this — that re-opens the lifecycle-script attack surface for every other package in the tree. All CI workflows already invoke npm with `--ignore-scripts`, so local behaviour matches CI. - -## 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 - -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) diff --git a/.claude/skills/教学日程查询/node_modules/axios/dist/axios.js b/.claude/skills/教学日程查询/node_modules/axios/dist/axios.js deleted file mode 100644 index 17c24d5..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/dist/axios.js +++ /dev/null @@ -1,4546 +0,0 @@ -/*! Axios v1.15.2 Copyright (c) 2026 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 _OverloadYield(e, d) { - this.v = e, this.k = d; - } - function _arrayLikeToArray(r, a) { - (null == a || a > r.length) && (a = r.length); - for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; - return n; - } - function _arrayWithHoles(r) { - if (Array.isArray(r)) return r; - } - function _arrayWithoutHoles(r) { - if (Array.isArray(r)) return _arrayLikeToArray(r); - } - function _assertThisInitialized(e) { - if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); - return e; - } - function _asyncGeneratorDelegate(t) { - var e = {}, - n = false; - function pump(e, r) { - return n = true, r = new Promise(function (n) { - n(t[e](r)); - }), { - done: false, - value: new _OverloadYield(r, 1) - }; - } - return e["undefined" != typeof Symbol && Symbol.iterator || "@@iterator"] = function () { - return this; - }, e.next = function (t) { - return n ? (n = false, t) : pump("next", t); - }, "function" == typeof t.throw && (e.throw = function (t) { - if (n) throw n = false, t; - return pump("throw", t); - }), "function" == typeof t.return && (e.return = function (t) { - return n ? (n = false, t) : pump("return", t); - }), e; - } - function _asyncIterator(r) { - var n, - t, - o, - e = 2; - for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { - if (t && null != (n = r[t])) return n.call(r); - if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); - t = "@@asyncIterator", o = "@@iterator"; - } - throw new TypeError("Object is not async iterable"); - } - function AsyncFromSyncIterator(r) { - function AsyncFromSyncIteratorContinuation(r) { - if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); - var n = r.done; - return Promise.resolve(r.value).then(function (r) { - return { - value: r, - done: n - }; - }); - } - return AsyncFromSyncIterator = function (r) { - this.s = r, this.n = r.next; - }, AsyncFromSyncIterator.prototype = { - s: null, - n: null, - next: function () { - return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); - }, - return: function (r) { - var n = this.s.return; - return void 0 === n ? Promise.resolve({ - value: r, - done: true - }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); - }, - throw: function (r) { - var n = this.s.return; - return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); - } - }, new AsyncFromSyncIterator(r); - } - function asyncGeneratorStep(n, t, e, r, o, a, c) { - try { - var i = n[a](c), - u = i.value; - } catch (n) { - return void e(n); - } - i.done ? t(u) : Promise.resolve(u).then(r, o); - } - function _asyncToGenerator(n) { - return function () { - var t = this, - e = arguments; - return new Promise(function (r, o) { - var a = n.apply(t, e); - function _next(n) { - asyncGeneratorStep(a, r, o, _next, _throw, "next", n); - } - function _throw(n) { - asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); - } - _next(void 0); - }); - }; - } - function _awaitAsyncGenerator(e) { - return new _OverloadYield(e, 0); - } - function _callSuper(t, o, e) { - return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); - } - function _classCallCheck(a, n) { - if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); - } - function _construct(t, e, r) { - if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments); - var o = [null]; - o.push.apply(o, e); - var p = new (t.bind.apply(t, o))(); - return r && _setPrototypeOf(p, r.prototype), p; - } - function _defineProperties(e, r) { - for (var t = 0; t < r.length; t++) { - var o = r[t]; - o.enumerable = o.enumerable || false, o.configurable = true, "value" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o); - } - } - function _createClass(e, r, t) { - return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { - writable: false - }), e; - } - function _createForOfIteratorHelper(r, e) { - var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; - if (!t) { - if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) { - t && (r = t); - var n = 0, - F = function () {}; - return { - s: F, - n: function () { - return n >= r.length ? { - done: true - } : { - done: false, - value: r[n++] - }; - }, - e: function (r) { - throw r; - }, - f: F - }; - } - throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - var o, - a = true, - u = false; - return { - s: function () { - t = t.call(r); - }, - n: function () { - var r = t.next(); - return a = r.done, r; - }, - e: function (r) { - u = true, o = r; - }, - f: function () { - try { - a || null == t.return || t.return(); - } finally { - if (u) throw o; - } - } - }; - } - function _defineProperty(e, r, t) { - return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { - value: t, - enumerable: true, - configurable: true, - writable: true - }) : e[r] = t, e; - } - function _getPrototypeOf(t) { - return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) { - return t.__proto__ || Object.getPrototypeOf(t); - }, _getPrototypeOf(t); - } - function _inherits(t, e) { - if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function"); - t.prototype = Object.create(e && e.prototype, { - constructor: { - value: t, - writable: true, - configurable: true - } - }), Object.defineProperty(t, "prototype", { - writable: false - }), e && _setPrototypeOf(t, e); - } - function _isNativeFunction(t) { - try { - return -1 !== Function.toString.call(t).indexOf("[native code]"); - } catch (n) { - return "function" == typeof t; - } - } - function _isNativeReflectConstruct() { - try { - var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); - } catch (t) {} - return (_isNativeReflectConstruct = function () { - return !!t; - })(); - } - function _iterableToArray(r) { - if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); - } - 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 = true, - o = false; - 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 = true, n = r; - } finally { - try { - if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; - } finally { - if (o) throw n; - } - } - return a; - } - } - 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 _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 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), true).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 _possibleConstructorReturn(t, e) { - if (e && ("object" == typeof e || "function" == typeof e)) return e; - if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined"); - return _assertThisInitialized(t); - } - function _regenerator() { - /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ - var e, - t, - r = "function" == typeof Symbol ? Symbol : {}, - n = r.iterator || "@@iterator", - o = r.toStringTag || "@@toStringTag"; - function i(r, n, o, i) { - var c = n && n.prototype instanceof Generator ? n : Generator, - u = Object.create(c.prototype); - return _regeneratorDefine(u, "_invoke", function (r, n, o) { - var i, - c, - u, - f = 0, - p = o || [], - y = false, - G = { - p: 0, - n: 0, - v: e, - a: d, - f: d.bind(e, 4), - d: function (t, r) { - return i = t, c = 0, u = e, G.n = r, a; - } - }; - function d(r, n) { - for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { - var o, - i = p[t], - d = G.p, - l = i[2]; - r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); - } - if (o || r > 1) return a; - throw y = true, n; - } - return function (o, p, l) { - if (f > 1) throw TypeError("Generator is already running"); - for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { - i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); - try { - if (f = 2, i) { - if (c || (o = "next"), t = i[o]) { - if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); - if (!t.done) return t; - u = t.value, c < 2 && (c = 0); - } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); - i = e; - } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; - } catch (t) { - i = e, c = 1, u = t; - } finally { - f = 1; - } - } - return { - value: t, - done: y - }; - }; - }(r, o, i), true), u; - } - var a = {}; - function Generator() {} - function GeneratorFunction() {} - function GeneratorFunctionPrototype() {} - t = Object.getPrototypeOf; - var c = [][n] ? t(t([][n]())) : (_regeneratorDefine(t = {}, n, function () { - return this; - }), t), - u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); - function f(e) { - return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; - } - return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine(u), _regeneratorDefine(u, o, "Generator"), _regeneratorDefine(u, n, function () { - return this; - }), _regeneratorDefine(u, "toString", function () { - return "[object Generator]"; - }), (_regenerator = function () { - return { - w: i, - m: f - }; - })(); - } - function _regeneratorDefine(e, r, n, t) { - var i = Object.defineProperty; - try { - i({}, "", {}); - } catch (e) { - i = 0; - } - _regeneratorDefine = function (e, r, n, t) { - function o(r, n) { - _regeneratorDefine(e, r, function (e) { - return this._invoke(r, n, e); - }); - } - r ? i ? i(e, r, { - value: n, - enumerable: !t, - configurable: !t, - writable: !t - }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); - }, _regeneratorDefine(e, r, n, t); - } - function _regeneratorValues(e) { - if (null != e) { - var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], - r = 0; - if (t) return t.call(e); - if ("function" == typeof e.next) return e; - if (!isNaN(e.length)) return { - next: function () { - return e && r >= e.length && (e = void 0), { - value: e && e[r++], - done: !e - }; - } - }; - } - throw new TypeError(typeof e + " is not iterable"); - } - function _setPrototypeOf(t, e) { - return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { - return t.__proto__ = e, t; - }, _setPrototypeOf(t, e); - } - function _slicedToArray(r, e) { - return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); - } - function _toConsumableArray(r) { - return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); - } - 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); - 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 : 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 _unsupportedIterableToArray(r, a) { - if (r) { - if ("string" == typeof r) return _arrayLikeToArray(r, a); - var t = {}.toString.call(r).slice(8, -1); - return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; - } - } - function _wrapAsyncGenerator(e) { - return function () { - return new AsyncGenerator(e.apply(this, arguments)); - }; - } - function AsyncGenerator(e) { - var r, t; - function resume(r, t) { - try { - var n = e[r](t), - o = n.value, - u = o instanceof _OverloadYield; - Promise.resolve(u ? o.v : o).then(function (t) { - if (u) { - var i = "return" === r ? "return" : "next"; - if (!o.k || t.done) return resume(i, t); - t = e[i](t).value; - } - settle(n.done ? "return" : "normal", t); - }, function (e) { - resume("throw", e); - }); - } catch (e) { - settle("throw", e); - } - } - function settle(e, n) { - switch (e) { - case "return": - r.resolve({ - value: n, - done: true - }); - break; - case "throw": - r.reject(n); - break; - default: - r.resolve({ - value: n, - done: false - }); - } - (r = r.next) ? resume(r.key, r.arg) : t = null; - } - this._invoke = function (e, n) { - return new Promise(function (o, u) { - var i = { - key: e, - arg: n, - resolve: o, - reject: u, - next: null - }; - t ? t = t.next = i : (r = t = i, resume(e, n)); - }); - }, "function" != typeof e.return && (this.return = void 0); - } - AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () { - return this; - }, AsyncGenerator.prototype.next = function (e) { - return this._invoke("next", e); - }, AsyncGenerator.prototype.throw = function (e) { - return this._invoke("throw", e); - }, AsyncGenerator.prototype.return = function (e) { - return this._invoke("return", e); - }; - function _wrapNativeSuper(t) { - var r = "function" == typeof Map ? new Map() : void 0; - return _wrapNativeSuper = function (t) { - if (null === t || !_isNativeFunction(t)) return t; - if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function"); - if (void 0 !== r) { - if (r.has(t)) return r.get(t); - r.set(t, Wrapper); - } - function Wrapper() { - return _construct(t, arguments, _getPrototypeOf(this).constructor); - } - return Wrapper.prototype = Object.create(t.prototype, { - constructor: { - value: Wrapper, - enumerable: false, - writable: true, - configurable: true - } - }), _setPrototypeOf(Wrapper, t); - }, _wrapNativeSuper(t); - } - - /** - * Create a bound version of a function with a specified `this` context - * - * @param {Function} fn - The function to bind - * @param {*} thisArg - The value to be passed as the `this` parameter - * @returns {Function} A new function that will call the original function with the specified `this` context - */ - 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 iterator = Symbol.iterator, - toStringTag = Symbol.toStringTag; - 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 a non-null object - * - * @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$1(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$1 = 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) && !(toStringTag in val) && !(iterator in val); - }; - - /** - * Determine if a value is an empty object (safely handles Buffers) - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an empty object, otherwise false - */ - var isEmptyObject = function isEmptyObject(val) { - // Early return for non-objects or Buffers to prevent RangeError - if (!isObject(val) || isBuffer(val)) { - return false; - } - try { - return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; - } catch (e) { - // Fallback for any other objects that might cause RangeError with Object.keys() - return false; - } - }; - - /** - * 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 React Native Blob - * React Native "blob": an object with a `uri` attribute. Optionally, it can - * also have a `name` and `type` attribute to specify filename and content type - * - * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 - * - * @param {*} value The value to test - * - * @returns {boolean} True if value is a React Native Blob, otherwise false - */ - var isReactNativeBlob = function isReactNativeBlob(value) { - return !!(value && typeof value.uri !== 'undefined'); - }; - - /** - * Determine if environment is React Native - * ReactNative `FormData` has a non-standard `getParts()` method - * - * @param {*} formData The formData to test - * - * @returns {boolean} True if environment is React Native, otherwise false - */ - var isReactNative = function isReactNative(formData) { - return formData && typeof formData.getParts !== 'undefined'; - }; - - /** - * 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$1(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 - */ - function getGlobal() { - if (typeof globalThis !== 'undefined') return globalThis; - if (typeof self !== 'undefined') return self; - if (typeof window !== 'undefined') return window; - if (typeof global !== 'undefined') return global; - return {}; - } - var G = getGlobal(); - var FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; - var isFormData = function isFormData(thing) { - if (!thing) return false; - if (FormDataCtor && thing instanceof FormDataCtor) return true; - // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9). - var proto = getPrototypeOf(thing); - if (!proto || proto === Object.prototype) return false; - if (!isFunction$1(thing.append)) return false; - var kind = kindOf(thing); - return kind === 'formdata' || - // detect form-data instance - kind === 'object' && isFunction$1(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'); - var _map = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest), - _map2 = _slicedToArray(_map, 4), - isReadableStream = _map2[0], - isRequest = _map2[1], - isResponse = _map2[2], - isHeaders = _map2[3]; - - /** - * 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 {Object} [options] - * @param {Boolean} [options.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 { - // Buffer check - if (isBuffer(obj)) { - return; - } - - // 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); - } - } - } - - /** - * Finds a key in an object, case-insensitive, returning the actual key name. - * Returns null if the object is a Buffer or if no match is found. - * - * @param {Object} obj - The object to search. - * @param {string} key - The key to find (case-insensitive). - * @returns {?string} The actual key name if found, otherwise null. - */ - function findKey(obj, key) { - if (isBuffer(obj)) { - return null; - } - 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 - * const 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, - skipUndefined = _ref2.skipUndefined; - var result = {}; - var assignValue = function assignValue(val, key) { - // Skip dangerous property names to prevent prototype pollution - if (key === '__proto__' || key === 'constructor' || key === 'prototype') { - return; - } - 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 if (!skipUndefined || !isUndefined(val)) { - 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 {Object} [options] - * @param {Boolean} [options.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$1(val)) { - Object.defineProperty(a, key, { - value: bind(val, thisArg), - writable: true, - enumerable: true, - configurable: true - }); - } else { - Object.defineProperty(a, key, { - value: val, - writable: true, - enumerable: true, - configurable: true - }); - } - }, { - 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); - Object.defineProperty(constructor.prototype, 'constructor', { - value: constructor, - writable: true, - enumerable: false, - configurable: true - }); - 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[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$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - var value = obj[name]; - if (!isFunction$1(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 + "'"); - }; - } - }); - }; - - /** - * Converts an array or a delimited string into an object set with values as keys and true as values. - * Useful for fast membership checks. - * - * @param {Array|string} arrayOrString - The array or string to convert. - * @param {string} delimiter - The delimiter to use if input is a string. - * @returns {Object} An object with keys from the array or string, values set to true. - */ - 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) { - return value != null && Number.isFinite(value = +value) ? value : defaultValue; - }; - - /** - * 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$1(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]); - } - - /** - * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. - * - * @param {Object} obj - The object to convert. - * @returns {Object} The JSON-compatible object. - */ - 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; - } - - //Buffer check - if (isBuffer(source)) { - return source; - } - 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); - }; - - /** - * Determines if a value is an async function. - * - * @param {*} thing - The value to test. - * @returns {boolean} True if value is an async function, otherwise false. - */ - var isAsyncFn = kindOfTest('AsyncFunction'); - - /** - * Determines if a value is thenable (has then and catch methods). - * - * @param {*} thing - The value to test. - * @returns {boolean} True if value is thenable, otherwise false. - */ - var isThenable = function isThenable(thing) { - return thing && (isObject(thing) || isFunction$1(thing)) && isFunction$1(thing.then) && isFunction$1(thing["catch"]); - }; - - // original code - // https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 - - /** - * Provides a cross-platform setImmediate implementation. - * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. - * - * @param {boolean} setImmediateSupported - Whether setImmediate is supported. - * @param {boolean} postMessageSupported - Whether postMessage is supported. - * @returns {Function} A function to schedule a callback asynchronously. - */ - var _setImmediate = function (setImmediateSupported, postMessageSupported) { - if (setImmediateSupported) { - return setImmediate; - } - return postMessageSupported ? function (token, callbacks) { - _global.addEventListener('message', function (_ref5) { - var source = _ref5.source, - data = _ref5.data; - if (source === _global && data === token) { - callbacks.length && callbacks.shift()(); - } - }, false); - return function (cb) { - callbacks.push(cb); - _global.postMessage(token, '*'); - }; - }("axios@".concat(Math.random()), []) : function (cb) { - return setTimeout(cb); - }; - }(typeof setImmediate === 'function', isFunction$1(_global.postMessage)); - - /** - * Schedules a microtask or asynchronous callback as soon as possible. - * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. - * - * @type {Function} - */ - var asap = typeof queueMicrotask !== 'undefined' ? queueMicrotask.bind(_global) : typeof process !== 'undefined' && process.nextTick || _setImmediate; - - // ********************* - - var isIterable = function isIterable(thing) { - return thing != null && isFunction$1(thing[iterator]); - }; - var utils$1 = { - isArray: isArray, - isArrayBuffer: isArrayBuffer, - isBuffer: isBuffer, - isFormData: isFormData, - isArrayBufferView: isArrayBufferView, - isString: isString, - isNumber: isNumber, - isBoolean: isBoolean, - isObject: isObject, - isPlainObject: isPlainObject, - isEmptyObject: isEmptyObject, - isReadableStream: isReadableStream, - isRequest: isRequest, - isResponse: isResponse, - isHeaders: isHeaders, - isUndefined: isUndefined, - isDate: isDate, - isFile: isFile, - isReactNativeBlob: isReactNativeBlob, - isReactNative: isReactNative, - isBlob: isBlob, - isRegExp: isRegExp, - isFunction: isFunction$1, - 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, - isSpecCompliantForm: isSpecCompliantForm, - toJSONObject: toJSONObject, - isAsyncFn: isAsyncFn, - isThenable: isThenable, - setImmediate: _setImmediate, - asap: asap, - isIterable: isIterable - }; - - var AxiosError = /*#__PURE__*/function (_Error) { - /** - * 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) { - var _this; - _classCallCheck(this, AxiosError); - _this = _callSuper(this, AxiosError, [message]); - - // Make message enumerable to maintain backward compatibility - // The native Error constructor sets message as non-enumerable, - // but axios < v1.13.3 had it as enumerable - Object.defineProperty(_this, 'message', { - value: message, - enumerable: true, - writable: true, - configurable: true - }); - _this.name = 'AxiosError'; - _this.isAxiosError = true; - code && (_this.code = code); - config && (_this.config = config); - request && (_this.request = request); - if (response) { - _this.response = response; - _this.status = response.status; - } - return _this; - } - _inherits(AxiosError, _Error); - return _createClass(AxiosError, [{ - key: "toJSON", - value: 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.status - }; - } - }], [{ - key: "from", - value: function from(error, code, config, request, response, customProps) { - var axiosError = new AxiosError(error.message, code || error.code, config, request, response); - axiosError.cause = error; - axiosError.name = error.name; - - // Preserve status from the original error if not already set from response - if (error.status != null && axiosError.status == null) { - axiosError.status = error.status; - } - customProps && Object.assign(axiosError, customProps); - return axiosError; - } - }]); - }(/*#__PURE__*/_wrapNativeSuper(Error)); // This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. - AxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; - AxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION'; - AxiosError.ECONNABORTED = 'ECONNABORTED'; - AxiosError.ETIMEDOUT = 'ETIMEDOUT'; - AxiosError.ERR_NETWORK = 'ERR_NETWORK'; - AxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; - AxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED'; - AxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; - AxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; - AxiosError.ERR_CANCELED = 'ERR_CANCELED'; - AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; - AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL'; - AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED'; - - // 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 maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth; - 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 (utils$1.isBoolean(value)) { - return value.toString(); - } - 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 (utils$1.isReactNative(formData) && utils$1.isReactNativeBlob(value)) { - formData.append(renderKey(path, key, dots), convertValue(value)); - return false; - } - 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) { - var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; - if (utils$1.isUndefined(value)) return; - if (depth > maxDepth) { - throw new AxiosError('Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth, AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED); - } - 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], depth + 1); - } - }); - 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': '+' - }; - return encodeURIComponent(str).replace(/[!'()~]|%20/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 URL-encoded forms of `:`, `$`, `,`, and spaces with - * their plain 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, '+'); - } - - /** - * 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|Function)} options - * - * @returns {string} The formatted url - */ - function buildURL(url, params, options) { - if (!params) { - return url; - } - var _encode = options && options.encode || encode; - var _options = utils$1.isFunction(options) ? { - serialize: options - } : options; - 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` - * @param {Object} options The options for the interceptor, synchronous and runWhen - * - * @return {Number} An ID used to remove interceptor later - */ - return _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 {void} - */ - }, { - 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); - } - }); - } - }]); - }(); - - var transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false, - legacyInterceptorReqResOrdering: true - }; - - 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'; - var _navigator = (typeof navigator === "undefined" ? "undefined" : _typeof(navigator)) === 'object' && navigator || 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 = hasBrowserEnv && (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); - - /** - * 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 origin = hasBrowserEnv && window.location.href || 'http://localhost'; - - var utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserEnv: hasStandardBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, - navigator: _navigator, - origin: origin - }); - - var platform = _objectSpread2(_objectSpread2({}, utils), platform$1); - - function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), _objectSpread2({ - 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] = utils$1.isArray(target[name]) ? target[name].concat(value) : [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; - } - - var own = function own(obj, key) { - return obj != null && utils$1.hasOwnProp(obj, key) ? obj[key] : undefined; - }; - - /** - * 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', 'fetch'], - 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) || utils$1.isReadableStream(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) { - var formSerializer = own(this, 'formSerializer'); - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, formSerializer).toString(); - } - if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - var env = own(this, 'env'); - var _FormData = env && env.FormData; - return toFormData(isFileList ? { - 'files[]': data - } : data, _FormData && new _FormData(), formSerializer); - } - } - if (isObjectPayload || hasJSONContentType) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - return data; - }], - transformResponse: [function transformResponse(data) { - var transitional = own(this, 'transitional') || defaults.transitional; - var forcedJSONParsing = transitional && transitional.forcedJSONParsing; - var responseType = own(this, 'responseType'); - var JSONRequested = responseType === 'json'; - if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { - return data; - } - if (data && utils$1.isString(data) && (forcedJSONParsing && !responseType || JSONRequested)) { - var silentJSONParsing = transitional && transitional.silentJSONParsing; - var strictJSONParsing = !silentJSONParsing && JSONRequested; - try { - return JSON.parse(data, own(this, 'parseReviver')); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(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] = {}; - }); - - // 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'); - var INVALID_HEADER_VALUE_CHARS_RE = /[^\x09\x20-\x7E\x80-\xFF]/g; - function trimSPorHTAB(str) { - var start = 0; - var end = str.length; - while (start < end) { - var code = str.charCodeAt(start); - if (code !== 0x09 && code !== 0x20) { - break; - } - start += 1; - } - while (end > start) { - var _code = str.charCodeAt(end - 1); - if (_code !== 0x09 && _code !== 0x20) { - break; - } - end -= 1; - } - return start === 0 && end === str.length ? str : str.slice(start, end); - } - function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); - } - function sanitizeHeaderValue(str) { - return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, '')); - } - function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - return utils$1.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(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 () { - function AxiosHeaders(headers) { - _classCallCheck(this, AxiosHeaders); - headers && this.set(headers); - } - return _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 if (utils$1.isObject(header) && utils$1.isIterable(header)) { - var obj = {}, - dest, - key; - var _iterator = _createForOfIteratorHelper(header), - _step; - try { - for (_iterator.s(); !(_step = _iterator.n()).done;) { - var entry = _step.value; - if (!utils$1.isArray(entry)) { - throw TypeError('Object iterator must return a key-value pair'); - } - obj[key = entry[0]] = (dest = obj[key]) ? utils$1.isArray(dest) ? [].concat(_toConsumableArray(dest), [entry[1]]) : [dest, entry[1]] : entry[1]; - } - } catch (err) { - _iterator.e(err); - } finally { - _iterator.f(); - } - setHeaders(obj, 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: "getSetCookie", - value: function getSetCookie() { - return this.get('set-cookie') || []; - } - }, { - 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; - } - }]); - }(); - 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); - - /** - * 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; - var context = response || config; - var headers = AxiosHeaders.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__); - } - - var CanceledError = /*#__PURE__*/function (_AxiosError) { - /** - * 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) { - var _this; - _classCallCheck(this, CanceledError); - _this = _callSuper(this, CanceledError, [message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request]); - _this.name = 'CanceledError'; - _this.__CANCEL__ = true; - return _this; - } - _inherits(CanceledError, _AxiosError); - return _createClass(CanceledError); - }(AxiosError); - - /** - * 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)); - } - } - - 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; - }; - } - - /** - * Throttle decorator - * @param {Function} fn - * @param {Number} freq - * @return {Function} - */ - function throttle(fn, freq) { - var timestamp = 0; - var threshold = 1000 / freq; - var lastArgs; - var timer; - var invoke = function invoke(args) { - var now = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Date.now(); - timestamp = now; - lastArgs = null; - if (timer) { - clearTimeout(timer); - timer = null; - } - fn.apply(void 0, _toConsumableArray(args)); - }; - var throttled = function throttled() { - var now = Date.now(); - var passed = now - timestamp; - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - if (passed >= threshold) { - invoke(args, now); - } else { - lastArgs = args; - if (!timer) { - timer = setTimeout(function () { - timer = null; - invoke(lastArgs); - }, threshold - passed); - } - } - }; - var flush = function flush() { - return lastArgs && invoke(lastArgs); - }; - return [throttled, flush]; - } - - var progressEventReducer = function progressEventReducer(listener, isDownloadStream) { - var freq = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3; - var bytesNotified = 0; - var _speedometer = speedometer(50, 250); - return throttle(function (e) { - var rawLoaded = e.loaded; - var total = e.lengthComputable ? e.total : undefined; - var loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded; - var progressBytes = Math.max(0, loaded - bytesNotified); - var rate = _speedometer(progressBytes); - bytesNotified = Math.max(bytesNotified, loaded); - var data = _defineProperty({ - loaded: loaded, - total: total, - progress: total ? loaded / total : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total ? (total - loaded) / rate : undefined, - event: e, - lengthComputable: total != null - }, isDownloadStream ? 'download' : 'upload', true); - listener(data); - }, freq); - }; - var progressEventDecorator = function progressEventDecorator(total, throttled) { - var lengthComputable = total != null; - return [function (loaded) { - return throttled[0]({ - lengthComputable: lengthComputable, - total: total, - loaded: loaded - }); - }, throttled[1]]; - }; - var asyncDecorator = function asyncDecorator(fn) { - return function () { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - return utils$1.asap(function () { - return fn.apply(void 0, args); - }); - }; - }; - - var isURLSameOrigin = platform.hasStandardBrowserEnv ? function (origin, isMSIE) { - return function (url) { - url = new URL(url, platform.origin); - return origin.protocol === url.protocol && origin.host === url.host && (isMSIE || origin.port === url.port); - }; - }(new URL(platform.origin), platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)) : function () { - return true; - }; - - var cookies = platform.hasStandardBrowserEnv ? - // Standard browser envs support document.cookie - { - write: function write(name, value, expires, path, domain, secure, sameSite) { - if (typeof document === 'undefined') return; - var cookie = ["".concat(name, "=").concat(encodeURIComponent(value))]; - if (utils$1.isNumber(expires)) { - cookie.push("expires=".concat(new Date(expires).toUTCString())); - } - if (utils$1.isString(path)) { - cookie.push("path=".concat(path)); - } - if (utils$1.isString(domain)) { - cookie.push("domain=".concat(domain)); - } - if (secure === true) { - cookie.push('secure'); - } - if (utils$1.isString(sameSite)) { - cookie.push("SameSite=".concat(sameSite)); - } - document.cookie = cookie.join('; '); - }, - read: function read(name) { - if (typeof document === 'undefined') return null; - var match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); - return match ? decodeURIComponent(match[1]) : 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. - if (typeof url !== 'string') { - return false; - } - 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, allowAbsoluteUrls) { - var isRelativeUrl = !isAbsoluteURL(requestedURL); - if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; - } - - var headersToObject = function headersToObject(thing) { - return thing instanceof AxiosHeaders ? _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 || {}; - - // Use a null-prototype object so that downstream reads such as `config.auth` - // or `config.baseURL` cannot inherit polluted values from Object.prototype - // (see GHSA-q8qp-cvcw-x6jj). `hasOwnProperty` is restored as a non-enumerable - // own slot to preserve ergonomics for user code that relies on it. - var config = Object.create(null); - Object.defineProperty(config, 'hasOwnProperty', { - value: Object.prototype.hasOwnProperty, - enumerable: false, - writable: true, - configurable: true - }); - function getMergedValue(target, source, prop, 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; - } - function mergeDeepProperties(a, b, prop, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, prop, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a, prop, 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 (utils$1.hasOwnProp(config2, prop)) { - return getMergedValue(a, b); - } else if (utils$1.hasOwnProp(config1, prop)) { - 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, - allowedSocketPaths: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: function headers(a, b, prop) { - return mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true); - } - }; - utils$1.forEach(Object.keys(_objectSpread2(_objectSpread2({}, config1), config2)), function computeConfigValue(prop) { - if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; - var merge = utils$1.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; - var a = utils$1.hasOwnProp(config1, prop) ? config1[prop] : undefined; - var b = utils$1.hasOwnProp(config2, prop) ? config2[prop] : undefined; - var configValue = merge(a, b, prop); - utils$1.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue); - }); - return config; - } - - var resolveConfig = (function (config) { - var newConfig = mergeConfig({}, config); - - // Read only own properties to prevent prototype pollution gadgets - // (e.g. Object.prototype.baseURL = 'https://evil.com'). See GHSA-q8qp-cvcw-x6jj. - var own = function own(key) { - return utils$1.hasOwnProp(newConfig, key) ? newConfig[key] : undefined; - }; - var data = own('data'); - var withXSRFToken = own('withXSRFToken'); - var xsrfHeaderName = own('xsrfHeaderName'); - var xsrfCookieName = own('xsrfCookieName'); - var headers = own('headers'); - var auth = own('auth'); - var baseURL = own('baseURL'); - var allowAbsoluteUrls = own('allowAbsoluteUrls'); - var url = own('url'); - newConfig.headers = headers = AxiosHeaders.from(headers); - newConfig.url = buildURL(buildFullPath(baseURL, url, allowAbsoluteUrls), config.params, config.paramsSerializer); - - // HTTP basic authentication - if (auth) { - headers.set('Authorization', 'Basic ' + btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))); - } - if (utils$1.isFormData(data)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - headers.setContentType(undefined); // browser handles it - } else if (utils$1.isFunction(data.getHeaders)) { - // Node.js FormData (like form-data package) - var formHeaders = data.getHeaders(); - // Only set safe headers to avoid overwriting security headers - var allowedHeaders = ['content-type', 'content-length']; - Object.entries(formHeaders).forEach(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - key = _ref2[0], - val = _ref2[1]; - if (allowedHeaders.includes(key.toLowerCase())) { - headers.set(key, val); - } - }); - } - } - - // 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) { - if (utils$1.isFunction(withXSRFToken)) { - withXSRFToken = withXSRFToken(newConfig); - } - - // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1) - // and misconfigurations (e.g. "false") from short-circuiting the same-origin check and leaking - // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c. - var shouldSendXSRF = withXSRFToken === true || withXSRFToken == null && isURLSameOrigin(newConfig.url); - if (shouldSendXSRF) { - var xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); - if (xsrfValue) { - headers.set(xsrfHeaderName, xsrfValue); - } - } - } - return newConfig; - }); - - var isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - var xhrAdapter = isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - var _config = resolveConfig(config); - var requestData = _config.data; - var requestHeaders = AxiosHeaders.from(_config.headers).normalize(); - var responseType = _config.responseType, - onUploadProgress = _config.onUploadProgress, - onDownloadProgress = _config.onDownloadProgress; - var onCanceled; - var uploadThrottled, downloadThrottled; - var flushUpload, flushDownload; - function done() { - flushUpload && flushUpload(); // flush events - flushDownload && flushDownload(); // flush events - - _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); - _config.signal && _config.signal.removeEventListener('abort', onCanceled); - } - var request = new XMLHttpRequest(); - request.open(_config.method.toUpperCase(), _config.url, true); - - // Set the request timeout in MS - request.timeout = _config.timeout; - function onloadend() { - if (!request) { - return; - } - // Prepare the response - var responseHeaders = AxiosHeaders.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(event) { - // Browsers deliver a ProgressEvent in XHR onerror - // (message may be empty; when present, surface it) - // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event - var msg = event && event.message ? event.message : 'Network Error'; - var err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request); - // attach the underlying event for consumers who want details - err.event = event || null; - reject(err); - 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; - }; - - // 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 (onDownloadProgress) { - var _progressEventReducer = progressEventReducer(onDownloadProgress, true); - var _progressEventReducer2 = _slicedToArray(_progressEventReducer, 2); - downloadThrottled = _progressEventReducer2[0]; - flushDownload = _progressEventReducer2[1]; - request.addEventListener('progress', downloadThrottled); - } - - // Not all browsers support upload events - if (onUploadProgress && request.upload) { - var _progressEventReducer3 = progressEventReducer(onUploadProgress); - var _progressEventReducer4 = _slicedToArray(_progressEventReducer3, 2); - uploadThrottled = _progressEventReducer4[0]; - flushUpload = _progressEventReducer4[1]; - request.upload.addEventListener('progress', uploadThrottled); - request.upload.addEventListener('loadend', flushUpload); - } - 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(_config.url); - 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 composeSignals = function composeSignals(signals, timeout) { - var _signals = signals = signals ? signals.filter(Boolean) : [], - length = _signals.length; - if (timeout || length) { - var controller = new AbortController(); - var aborted; - var onabort = function onabort(reason) { - if (!aborted) { - aborted = true; - unsubscribe(); - var err = reason instanceof Error ? reason : this.reason; - controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err)); - } - }; - var timer = timeout && setTimeout(function () { - timer = null; - onabort(new AxiosError("timeout of ".concat(timeout, "ms exceeded"), AxiosError.ETIMEDOUT)); - }, timeout); - var unsubscribe = function unsubscribe() { - if (signals) { - timer && clearTimeout(timer); - timer = null; - signals.forEach(function (signal) { - signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort); - }); - signals = null; - } - }; - signals.forEach(function (signal) { - return signal.addEventListener('abort', onabort); - }); - var signal = controller.signal; - signal.unsubscribe = function () { - return utils$1.asap(unsubscribe); - }; - return signal; - } - }; - - var streamChunk = /*#__PURE__*/_regenerator().m(function streamChunk(chunk, chunkSize) { - var len, pos, end; - return _regenerator().w(function (_context) { - while (1) switch (_context.n) { - case 0: - len = chunk.byteLength; - if (!(!chunkSize || len < chunkSize)) { - _context.n = 2; - break; - } - _context.n = 1; - return chunk; - case 1: - return _context.a(2); - case 2: - pos = 0; - case 3: - if (!(pos < len)) { - _context.n = 5; - break; - } - end = pos + chunkSize; - _context.n = 4; - return chunk.slice(pos, end); - case 4: - pos = end; - _context.n = 3; - break; - case 5: - return _context.a(2); - } - }, streamChunk); - }); - var readBytes = /*#__PURE__*/function () { - var _ref = _wrapAsyncGenerator(/*#__PURE__*/_regenerator().m(function _callee(iterable, chunkSize) { - var _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk, _t; - return _regenerator().w(function (_context2) { - while (1) switch (_context2.p = _context2.n) { - case 0: - _iteratorAbruptCompletion = false; - _didIteratorError = false; - _context2.p = 1; - _iterator = _asyncIterator(readStream(iterable)); - case 2: - _context2.n = 3; - return _awaitAsyncGenerator(_iterator.next()); - case 3: - if (!(_iteratorAbruptCompletion = !(_step = _context2.v).done)) { - _context2.n = 5; - break; - } - chunk = _step.value; - return _context2.d(_regeneratorValues(_asyncGeneratorDelegate(_asyncIterator(streamChunk(chunk, chunkSize)))), 4); - case 4: - _iteratorAbruptCompletion = false; - _context2.n = 2; - break; - case 5: - _context2.n = 7; - break; - case 6: - _context2.p = 6; - _t = _context2.v; - _didIteratorError = true; - _iteratorError = _t; - case 7: - _context2.p = 7; - _context2.p = 8; - if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) { - _context2.n = 9; - break; - } - _context2.n = 9; - return _awaitAsyncGenerator(_iterator["return"]()); - case 9: - _context2.p = 9; - if (!_didIteratorError) { - _context2.n = 10; - break; - } - throw _iteratorError; - case 10: - return _context2.f(9); - case 11: - return _context2.f(7); - case 12: - return _context2.a(2); - } - }, _callee, null, [[8,, 9, 11], [1, 6, 7, 12]]); - })); - return function readBytes(_x, _x2) { - return _ref.apply(this, arguments); - }; - }(); - var readStream = /*#__PURE__*/function () { - var _ref2 = _wrapAsyncGenerator(/*#__PURE__*/_regenerator().m(function _callee2(stream) { - var reader, _yield$_awaitAsyncGen, done, value; - return _regenerator().w(function (_context3) { - while (1) switch (_context3.p = _context3.n) { - case 0: - if (!stream[Symbol.asyncIterator]) { - _context3.n = 2; - break; - } - return _context3.d(_regeneratorValues(_asyncGeneratorDelegate(_asyncIterator(stream))), 1); - case 1: - return _context3.a(2); - case 2: - reader = stream.getReader(); - _context3.p = 3; - case 4: - _context3.n = 5; - return _awaitAsyncGenerator(reader.read()); - case 5: - _yield$_awaitAsyncGen = _context3.v; - done = _yield$_awaitAsyncGen.done; - value = _yield$_awaitAsyncGen.value; - if (!done) { - _context3.n = 6; - break; - } - return _context3.a(3, 8); - case 6: - _context3.n = 7; - return value; - case 7: - _context3.n = 4; - break; - case 8: - _context3.p = 8; - _context3.n = 9; - return _awaitAsyncGenerator(reader.cancel()); - case 9: - return _context3.f(8); - case 10: - return _context3.a(2); - } - }, _callee2, null, [[3,, 8, 10]]); - })); - return function readStream(_x3) { - return _ref2.apply(this, arguments); - }; - }(); - var trackStream = function trackStream(stream, chunkSize, onProgress, onFinish) { - var iterator = readBytes(stream, chunkSize); - var bytes = 0; - var done; - var _onFinish = function _onFinish(e) { - if (!done) { - done = true; - onFinish && onFinish(e); - } - }; - return new ReadableStream({ - pull: function pull(controller) { - return _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3() { - var _yield$iterator$next, _done, value, len, loadedBytes, _t2; - return _regenerator().w(function (_context4) { - while (1) switch (_context4.p = _context4.n) { - case 0: - _context4.p = 0; - _context4.n = 1; - return iterator.next(); - case 1: - _yield$iterator$next = _context4.v; - _done = _yield$iterator$next.done; - value = _yield$iterator$next.value; - if (!_done) { - _context4.n = 2; - break; - } - _onFinish(); - controller.close(); - return _context4.a(2); - case 2: - len = value.byteLength; - if (onProgress) { - loadedBytes = bytes += len; - onProgress(loadedBytes); - } - controller.enqueue(new Uint8Array(value)); - _context4.n = 4; - break; - case 3: - _context4.p = 3; - _t2 = _context4.v; - _onFinish(_t2); - throw _t2; - case 4: - return _context4.a(2); - } - }, _callee3, null, [[0, 3]]); - }))(); - }, - cancel: function cancel(reason) { - _onFinish(reason); - return iterator["return"](); - } - }, { - highWaterMark: 2 - }); - }; - - var DEFAULT_CHUNK_SIZE = 64 * 1024; - var isFunction = utils$1.isFunction; - var globalFetchAPI = function (_ref) { - var Request = _ref.Request, - Response = _ref.Response; - return { - Request: Request, - Response: Response - }; - }(utils$1.global); - var _utils$global = utils$1.global, - ReadableStream$1 = _utils$global.ReadableStream, - TextEncoder = _utils$global.TextEncoder; - var test = function test(fn) { - try { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - return !!fn.apply(void 0, args); - } catch (e) { - return false; - } - }; - var factory = function factory(env) { - env = utils$1.merge.call({ - skipUndefined: true - }, globalFetchAPI, env); - var _env = env, - envFetch = _env.fetch, - Request = _env.Request, - Response = _env.Response; - var isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; - var isRequestSupported = isFunction(Request); - var isResponseSupported = isFunction(Response); - if (!isFetchSupported) { - return false; - } - var isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1); - var encodeText = isFetchSupported && (typeof TextEncoder === 'function' ? function (encoder) { - return function (str) { - return encoder.encode(str); - }; - }(new TextEncoder()) : (/*#__PURE__*/function () { - var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(str) { - var _t, _t2; - return _regenerator().w(function (_context) { - while (1) switch (_context.n) { - case 0: - _t = Uint8Array; - _context.n = 1; - return new Request(str).arrayBuffer(); - case 1: - _t2 = _context.v; - return _context.a(2, new _t(_t2)); - } - }, _callee); - })); - return function (_x) { - return _ref2.apply(this, arguments); - }; - }())); - var supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(function () { - var duplexAccessed = false; - var request = new Request(platform.origin, { - body: new ReadableStream$1(), - method: 'POST', - get duplex() { - duplexAccessed = true; - return 'half'; - } - }); - var hasContentType = request.headers.has('Content-Type'); - if (request.body != null) { - request.body.cancel(); - } - return duplexAccessed && !hasContentType; - }); - var supportsResponseStream = isResponseSupported && isReadableStreamSupported && test(function () { - return utils$1.isReadableStream(new Response('').body); - }); - var resolvers = { - stream: supportsResponseStream && function (res) { - return res.body; - } - }; - isFetchSupported && function () { - ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(function (type) { - !resolvers[type] && (resolvers[type] = function (res, config) { - var method = res && res[type]; - if (method) { - return method.call(res); - } - throw new AxiosError("Response type '".concat(type, "' is not supported"), AxiosError.ERR_NOT_SUPPORT, config); - }); - }); - }(); - var getBodyLength = /*#__PURE__*/function () { - var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(body) { - var _request; - return _regenerator().w(function (_context2) { - while (1) switch (_context2.n) { - case 0: - if (!(body == null)) { - _context2.n = 1; - break; - } - return _context2.a(2, 0); - case 1: - if (!utils$1.isBlob(body)) { - _context2.n = 2; - break; - } - return _context2.a(2, body.size); - case 2: - if (!utils$1.isSpecCompliantForm(body)) { - _context2.n = 4; - break; - } - _request = new Request(platform.origin, { - method: 'POST', - body: body - }); - _context2.n = 3; - return _request.arrayBuffer(); - case 3: - return _context2.a(2, _context2.v.byteLength); - case 4: - if (!(utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body))) { - _context2.n = 5; - break; - } - return _context2.a(2, body.byteLength); - case 5: - if (utils$1.isURLSearchParams(body)) { - body = body + ''; - } - if (!utils$1.isString(body)) { - _context2.n = 7; - break; - } - _context2.n = 6; - return encodeText(body); - case 6: - return _context2.a(2, _context2.v.byteLength); - case 7: - return _context2.a(2); - } - }, _callee2); - })); - return function getBodyLength(_x2) { - return _ref3.apply(this, arguments); - }; - }(); - var resolveBodyLength = /*#__PURE__*/function () { - var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(headers, body) { - var length; - return _regenerator().w(function (_context3) { - while (1) switch (_context3.n) { - case 0: - length = utils$1.toFiniteNumber(headers.getContentLength()); - return _context3.a(2, length == null ? getBodyLength(body) : length); - } - }, _callee3); - })); - return function resolveBodyLength(_x3, _x4) { - return _ref4.apply(this, arguments); - }; - }(); - return /*#__PURE__*/function () { - var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(config) { - var _resolveConfig, url, method, data, signal, cancelToken, timeout, onDownloadProgress, onUploadProgress, responseType, headers, _resolveConfig$withCr, withCredentials, fetchOptions, _fetch, composedSignal, request, unsubscribe, requestContentLength, _request, contentTypeHeader, _progressEventDecorat, _progressEventDecorat2, onProgress, flush, isCredentialsSupported, contentType, resolvedOptions, response, isStreamResponse, options, responseContentLength, _ref6, _ref7, _onProgress, _flush, responseData, _t3, _t4, _t5; - return _regenerator().w(function (_context4) { - while (1) switch (_context4.p = _context4.n) { - case 0: - _resolveConfig = resolveConfig(config), url = _resolveConfig.url, method = _resolveConfig.method, data = _resolveConfig.data, signal = _resolveConfig.signal, cancelToken = _resolveConfig.cancelToken, timeout = _resolveConfig.timeout, onDownloadProgress = _resolveConfig.onDownloadProgress, onUploadProgress = _resolveConfig.onUploadProgress, responseType = _resolveConfig.responseType, headers = _resolveConfig.headers, _resolveConfig$withCr = _resolveConfig.withCredentials, withCredentials = _resolveConfig$withCr === void 0 ? 'same-origin' : _resolveConfig$withCr, fetchOptions = _resolveConfig.fetchOptions; - _fetch = envFetch || fetch; - responseType = responseType ? (responseType + '').toLowerCase() : 'text'; - composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout); - request = null; - unsubscribe = composedSignal && composedSignal.unsubscribe && function () { - composedSignal.unsubscribe(); - }; - _context4.p = 1; - _t3 = onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head'; - if (!_t3) { - _context4.n = 3; - break; - } - _context4.n = 2; - return resolveBodyLength(headers, data); - case 2: - _t4 = requestContentLength = _context4.v; - _t3 = _t4 !== 0; - case 3: - if (!_t3) { - _context4.n = 4; - break; - } - _request = new Request(url, { - method: 'POST', - body: data, - duplex: 'half' - }); - if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { - headers.setContentType(contentTypeHeader); - } - if (_request.body) { - _progressEventDecorat = progressEventDecorator(requestContentLength, progressEventReducer(asyncDecorator(onUploadProgress))), _progressEventDecorat2 = _slicedToArray(_progressEventDecorat, 2), onProgress = _progressEventDecorat2[0], flush = _progressEventDecorat2[1]; - data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); - } - case 4: - if (!utils$1.isString(withCredentials)) { - withCredentials = withCredentials ? 'include' : 'omit'; - } - - // Cloudflare Workers throws when credentials are defined - // see https://github.com/cloudflare/workerd/issues/902 - isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; // If data is FormData and Content-Type is multipart/form-data without boundary, - // delete it so fetch can set it correctly with the boundary - if (utils$1.isFormData(data)) { - contentType = headers.getContentType(); - if (contentType && /^multipart\/form-data/i.test(contentType) && !/boundary=/i.test(contentType)) { - headers["delete"]('content-type'); - } - } - resolvedOptions = _objectSpread2(_objectSpread2({}, fetchOptions), {}, { - signal: composedSignal, - method: method.toUpperCase(), - headers: headers.normalize().toJSON(), - body: data, - duplex: 'half', - credentials: isCredentialsSupported ? withCredentials : undefined - }); - request = isRequestSupported && new Request(url, resolvedOptions); - _context4.n = 5; - return isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions); - case 5: - response = _context4.v; - isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response'); - if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) { - options = {}; - ['status', 'statusText', 'headers'].forEach(function (prop) { - options[prop] = response[prop]; - }); - responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length')); - _ref6 = onDownloadProgress && progressEventDecorator(responseContentLength, progressEventReducer(asyncDecorator(onDownloadProgress), true)) || [], _ref7 = _slicedToArray(_ref6, 2), _onProgress = _ref7[0], _flush = _ref7[1]; - response = new Response(trackStream(response.body, DEFAULT_CHUNK_SIZE, _onProgress, function () { - _flush && _flush(); - unsubscribe && unsubscribe(); - }), options); - } - responseType = responseType || 'text'; - _context4.n = 6; - return resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config); - case 6: - responseData = _context4.v; - !isStreamResponse && unsubscribe && unsubscribe(); - _context4.n = 7; - return new Promise(function (resolve, reject) { - settle(resolve, reject, { - data: responseData, - headers: AxiosHeaders.from(response.headers), - status: response.status, - statusText: response.statusText, - config: config, - request: request - }); - }); - case 7: - return _context4.a(2, _context4.v); - case 8: - _context4.p = 8; - _t5 = _context4.v; - unsubscribe && unsubscribe(); - if (!(_t5 && _t5.name === 'TypeError' && /Load failed|fetch/i.test(_t5.message))) { - _context4.n = 9; - break; - } - throw Object.assign(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, _t5 && _t5.response), { - cause: _t5.cause || _t5 - }); - case 9: - throw AxiosError.from(_t5, _t5 && _t5.code, config, request, _t5 && _t5.response); - case 10: - return _context4.a(2); - } - }, _callee4, null, [[1, 8]]); - })); - return function (_x5) { - return _ref5.apply(this, arguments); - }; - }(); - }; - var seedCache = new Map(); - var getFetch = function getFetch(config) { - var env = config && config.env || {}; - var fetch = env.fetch, - Request = env.Request, - Response = env.Response; - var seeds = [Request, Response, fetch]; - var len = seeds.length, - i = len, - seed, - target, - map = seedCache; - while (i--) { - seed = seeds[i]; - target = map.get(seed); - target === undefined && map.set(seed, target = i ? new Map() : factory(env)); - map = target; - } - return target; - }; - getFetch(); - - /** - * Known adapters mapping. - * Provides environment-specific adapters for Axios: - * - `http` for Node.js - * - `xhr` for browsers - * - `fetch` for fetch API-based requests - * - * @type {Object} - */ - var knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter, - fetch: { - get: getFetch - } - }; - - // Assign adapter names for easier debugging and identification - 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 - }); - } - }); - - /** - * Render a rejection reason string for unknown or unsupported adapters - * - * @param {string} reason - * @returns {string} - */ - var renderReason = function renderReason(reason) { - return "- ".concat(reason); - }; - - /** - * Check if the adapter is resolved (function, null, or false) - * - * @param {Function|null|false} adapter - * @returns {boolean} - */ - var isResolvedHandle = function isResolvedHandle(adapter) { - return utils$1.isFunction(adapter) || adapter === null || adapter === false; - }; - - /** - * Get the first suitable adapter from the provided list. - * Tries each adapter in order until a supported one is found. - * Throws an AxiosError if no adapter is suitable. - * - * @param {Array|string|Function} adapters - Adapter(s) by name or function. - * @param {Object} config - Axios request configuration - * @throws {AxiosError} If no suitable adapter is available - * @returns {Function} The resolved adapter function - */ - function getAdapter(adapters, config) { - 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 && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) { - 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; - } - - /** - * Exports Axios adapters and utility to resolve an adapter - */ - var adapters = { - /** - * Resolve an adapter from a list of adapter names or functions. - * @type {Function} - */ - getAdapter: getAdapter, - /** - * Exposes all known adapters - * @type {Object} - */ - 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.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.adapter, config); - 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); - }); - } - - var VERSION = "1.15.2"; - - 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; - }; - }; - validators$1.spelling = function spelling(correctSpelling) { - return function (value, opt) { - // eslint-disable-next-line no-console - console.warn("".concat(opt, " is likely a misspelling of ").concat(correctSpelling)); - return 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]; - // Use hasOwnProperty so a polluted Object.prototype. cannot supply - // a non-function validator and cause a TypeError. See GHSA-q8qp-cvcw-x6jj. - var validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined; - 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(), - 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 - */ - return _createClass(Axios, [{ - key: "request", - value: (function () { - var _request2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(configOrUrl, config) { - var dummy, stack, firstNewlineIndex, secondNewlineIndex, stackWithoutTwoTopLines, _t; - return _regenerator().w(function (_context) { - while (1) switch (_context.p = _context.n) { - case 0: - _context.p = 0; - _context.n = 1; - return this._request(configOrUrl, config); - case 1: - return _context.a(2, _context.v); - case 2: - _context.p = 2; - _t = _context.v; - if (_t instanceof Error) { - dummy = {}; - Error.captureStackTrace ? Error.captureStackTrace(dummy) : dummy = new Error(); - - // slice off the Error: ... line - stack = function () { - if (!dummy.stack) { - return ''; - } - var firstNewlineIndex = dummy.stack.indexOf('\n'); - return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1); - }(); - try { - if (!_t.stack) { - _t.stack = stack; - // match without the 2 top stack lines - } else if (stack) { - firstNewlineIndex = stack.indexOf('\n'); - secondNewlineIndex = firstNewlineIndex === -1 ? -1 : stack.indexOf('\n', firstNewlineIndex + 1); - stackWithoutTwoTopLines = secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1); - if (!String(_t.stack).endsWith(stackWithoutTwoTopLines)) { - _t.stack += '\n' + stack; - } - } - } catch (e) { - // ignore the case where "stack" is an un-writable property - } - } - throw _t; - case 3: - return _context.a(2); - } - }, _callee, this, [[0, 2]]); - })); - 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"]), - legacyInterceptorReqResOrdering: 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.allowAbsoluteUrls - if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) { - config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; - } else { - config.allowAbsoluteUrls = true; - } - validator.assertOptions(config, { - baseUrl: validators.spelling('baseURL'), - withXsrfToken: validators.spelling('withXSRFToken') - }, 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.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; - var transitional = config.transitional || transitionalDefaults; - var legacyInterceptorReqResOrdering = transitional && transitional.legacyInterceptorReqResOrdering; - if (legacyInterceptorReqResOrdering) { - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - } else { - requestInterceptorChain.push(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; - 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, config.allowAbsoluteUrls); - 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: method, - url: url, - data: (config || {}).data - })); - }; - }); - utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - 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); - }); - - /** - * 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. - */ - return _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); - } - } - }, { - key: "toAbortSignal", - value: function toAbortSignal() { - var _this = this; - var controller = new AbortController(); - var abort = function abort(err) { - controller.abort(err); - }; - this.subscribe(abort); - controller.signal.unsubscribe = function () { - return _this.unsubscribe(abort); - }; - return controller.signal; - } - - /** - * 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 - }; - } - }]); - }(); - - /** - * 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) {} - * const 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, - WebServerIsDown: 521, - ConnectionTimedOut: 522, - OriginIsUnreachable: 523, - TimeoutOccurred: 524, - SslHandshakeFailed: 525, - InvalidSslCertificate: 526 - }; - Object.entries(HttpStatusCode).forEach(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - key = _ref2[0], - value = _ref2[1]; - HttpStatusCode[value] = key; - }); - - /** - * 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(defaultConfig); - var instance = bind(Axios.prototype.request, context); - - // Copy axios.prototype to instance - utils$1.extend(instance, Axios.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); - - // 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 = function (thing) { - return formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - }; - axios.getAdapter = adapters.getAdapter; - axios.HttpStatusCode = HttpStatusCode; - axios["default"] = axios; - - return axios; - -})); -//# sourceMappingURL=axios.js.map diff --git a/.claude/skills/教学日程查询/node_modules/axios/dist/axios.js.map b/.claude/skills/教学日程查询/node_modules/axios/dist/axios.js.map deleted file mode 100644 index 44915a0..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/dist/axios.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.js","sources":["../lib/helpers/bind.js","../lib/utils.js","../lib/core/AxiosError.js","../lib/helpers/null.js","../lib/helpers/toFormData.js","../lib/helpers/AxiosURLSearchParams.js","../lib/helpers/buildURL.js","../lib/core/InterceptorManager.js","../lib/defaults/transitional.js","../lib/platform/browser/classes/URLSearchParams.js","../lib/platform/browser/classes/FormData.js","../lib/platform/browser/classes/Blob.js","../lib/platform/browser/index.js","../lib/platform/common/utils.js","../lib/platform/index.js","../lib/helpers/toURLEncodedForm.js","../lib/helpers/formDataToJSON.js","../lib/defaults/index.js","../lib/helpers/parseHeaders.js","../lib/core/AxiosHeaders.js","../lib/core/transformData.js","../lib/cancel/isCancel.js","../lib/cancel/CanceledError.js","../lib/core/settle.js","../lib/helpers/parseProtocol.js","../lib/helpers/speedometer.js","../lib/helpers/throttle.js","../lib/helpers/progressEventReducer.js","../lib/helpers/isURLSameOrigin.js","../lib/helpers/cookies.js","../lib/helpers/isAbsoluteURL.js","../lib/helpers/combineURLs.js","../lib/core/buildFullPath.js","../lib/core/mergeConfig.js","../lib/helpers/resolveConfig.js","../lib/adapters/xhr.js","../lib/helpers/composeSignals.js","../lib/helpers/trackStream.js","../lib/adapters/fetch.js","../lib/adapters/adapters.js","../lib/core/dispatchRequest.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\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\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;\nconst { iterator, toStringTag } = Symbol;\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 a non-null object\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 (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\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 * 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 (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\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 React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\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 */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n if (!thing) return false;\n if (FormDataCtor && thing instanceof FormDataCtor) return true;\n // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9).\n const proto = getPrototypeOf(thing);\n if (!proto || proto === Object.prototype) return false;\n if (!isFunction(thing.append)) return false;\n const kind = kindOf(thing);\n return kind === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]');\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\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\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) => {\n return str.trim ? 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 {Object} [options]\n * @param {Boolean} [options.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 // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\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\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\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 * const 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, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\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 if (!skipUndefined || !isUndefined(val)) {\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 {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\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 Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\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 * 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[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, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(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\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\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 return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\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 !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\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\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\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 isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\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 */\n constructor(message, code, config, request, response) {\n super(message);\n\n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true,\n });\n\n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n 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.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\nAxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED';\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\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\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(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\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 maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth;\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 (utils.isBoolean(value)) {\n return value.toString();\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 (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\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) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : 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, depth = 0) {\n if (utils.isUndefined(value)) return;\n\n if (depth > maxDepth) {\n throw new AxiosError(\n 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,\n AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED\n );\n }\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 =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key], depth + 1);\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 };\n return encodeURIComponent(str).replace(/[!'()~]|%20/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\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\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 URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain 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}\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|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\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 * @param {Object} options The options for the interceptor, synchronous and runWhen\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 {void}\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 legacyInterceptorReqResOrdering: true,\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\nconst _navigator = (typeof navigator === 'object' && navigator) || 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 hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\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\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\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(), {\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}\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] = utils.isArray(target[name])\n ? target[name].concat(value)\n : [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\nconst own = (obj, key) => (obj != null && utils.hasOwnProp(obj, key) ? obj[key] : undefined);\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 transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n 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 (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(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 const formSerializer = own(this, 'formSerializer');\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const env = own(this, 'env');\n const _FormData = env && env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n 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\n transformResponse: [\n function transformResponse(data) {\n const transitional = own(this, 'transitional') || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const responseType = own(this, 'responseType');\n const JSONRequested = responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, own(this, 'parseReviver'));\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(this, 'response'));\n }\n throw e;\n }\n }\n }\n\n return data;\n },\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',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n '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 &&\n 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\nconst INVALID_HEADER_VALUE_CHARS_RE = /[^\\x09\\x20-\\x7E\\x80-\\xFF]/g;\n\nfunction trimSPorHTAB(str) {\n let start = 0;\n let end = str.length;\n\n while (start < end) {\n const code = str.charCodeAt(start);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n start += 1;\n }\n\n while (end > start) {\n const code = str.charCodeAt(end - 1);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n end -= 1;\n }\n\n return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction sanitizeHeaderValue(str) {\n return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, ''));\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(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\n .trim()\n .toLowerCase()\n .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 (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\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 if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, 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 !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\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 &&\n value !== false &&\n (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())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\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 =\n (this[$internals] =\n this[$internals] =\n {\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([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\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';\n\nclass CanceledError extends AxiosError {\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 */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\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(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\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\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","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const rawLoaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded;\n const progressBytes = Math.max(0, loaded - bytesNotified);\n const rate = _speedometer(progressBytes);\n\n bytesNotified = Math.max(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 ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\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","'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 if (typeof url !== 'string') {\n return false;\n }\n\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, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\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\n // Use a null-prototype object so that downstream reads such as `config.auth`\n // or `config.baseURL` cannot inherit polluted values from Object.prototype\n // (see GHSA-q8qp-cvcw-x6jj). `hasOwnProperty` is restored as a non-enumerable\n // own slot to preserve ergonomics for user code that relies on it.\n const config = Object.create(null);\n Object.defineProperty(config, 'hasOwnProperty', {\n value: Object.prototype.hasOwnProperty,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n\n function getMergedValue(target, source, prop, 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 function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, 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 (utils.hasOwnProp(config2, prop)) {\n return getMergedValue(a, b);\n } else if (utils.hasOwnProp(config1, prop)) {\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 allowedSocketPaths: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined;\n const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined;\n const configValue = merge(a, b, prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n // Read only own properties to prevent prototype pollution gadgets\n // (e.g. Object.prototype.baseURL = 'https://evil.com'). See GHSA-q8qp-cvcw-x6jj.\n const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined);\n\n const data = own('data');\n let withXSRFToken = own('withXSRFToken');\n const xsrfHeaderName = own('xsrfHeaderName');\n const xsrfCookieName = own('xsrfCookieName');\n let headers = own('headers');\n const auth = own('auth');\n const baseURL = own('baseURL');\n const allowAbsoluteUrls = own('allowAbsoluteUrls');\n const url = own('url');\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(baseURL, url, allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\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\n if (platform.hasStandardBrowserEnv) {\n if (utils.isFunction(withXSRFToken)) {\n withXSRFToken = withXSRFToken(newConfig);\n }\n\n // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)\n // and misconfigurations (e.g. \"false\") from short-circuiting the same-origin check and leaking\n // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c.\n const shouldSendXSRF =\n withXSRFToken === true ||\n (withXSRFToken == null && isURLSameOrigin(newConfig.url));\n\n if (shouldSendXSRF) {\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.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 { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, 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 =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : 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(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\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 (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\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(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\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 (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\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\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const request = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n });\n\n const hasContentType = request.headers.has('Content-Type');\n\n if (request.body != null) {\n request.body.cancel();\n }\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n // If data is FormData and Content-Type is multipart/form-data without boundary,\n // delete it so fetch can set it correctly with the boundary\n if (utils.isFormData(data)) {\n const contentType = headers.getContentType();\n if (\n contentType &&\n /^multipart\\/form-data/i.test(contentType) &&\n !/boundary=/i.test(contentType)\n ) {\n headers.delete('content-type');\n }\n }\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\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\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\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 && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `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\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\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\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\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(config, config.transformRequest);\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, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\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}\n","export const VERSION = \"1.15.2\";","'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 (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\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\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return 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 // Use hasOwnProperty so a polluted Object.prototype. cannot supply\n // a non-function validator and cause a TypeError. See GHSA-q8qp-cvcw-x6jj.\n const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined;\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(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\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';\nimport transitionalDefaults from '../defaults/transitional.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 = (() => {\n if (!dummy.stack) {\n return '';\n }\n\n const firstNewlineIndex = dummy.stack.indexOf('\\n');\n\n return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1);\n })();\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack) {\n const firstNewlineIndex = stack.indexOf('\\n');\n const secondNewlineIndex =\n firstNewlineIndex === -1 ? -1 : stack.indexOf('\\n', firstNewlineIndex + 1);\n const stackWithoutTwoTopLines =\n secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1);\n\n if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) {\n err.stack += '\\n' + stack;\n }\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\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(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\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(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\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 const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\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(...requestInterceptorChain);\n chain.push(...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 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, config.allowAbsoluteUrls);\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(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\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 toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\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 * const 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 WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\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","iterator","Symbol","toStringTag","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","isEmptyObject","keys","length","e","isDate","isFile","isReactNativeBlob","value","uri","isReactNative","formData","getParts","isBlob","isFileList","isStream","pipe","getGlobal","globalThis","self","window","global","G","FormDataCtor","FormData","undefined","isFormData","proto","append","kind","isURLSearchParams","_map","map","_map2","_slicedToArray","isReadableStream","isRequest","isResponse","isHeaders","trim","replace","forEach","obj","_ref","_ref$allOwnKeys","allOwnKeys","i","l","getOwnPropertyNames","len","key","findKey","_key","_global","isContextDefined","context","merge","_ref2","caseless","skipUndefined","assignValue","targetKey","extend","a","b","_ref3","defineProperty","writable","enumerable","configurable","stripBOM","content","charCodeAt","inherits","superConstructor","props","descriptors","assign","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","isTypedArray","TypedArray","Uint8Array","forEachEntry","generator","_iterator","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","set","Error","toObjectSet","arrayOrString","delimiter","define","split","noop","toFiniteNumber","defaultValue","Number","isFinite","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","then","_setImmediate","setImmediateSupported","postMessageSupported","setImmediate","token","callbacks","addEventListener","_ref5","data","shift","cb","postMessage","concat","Math","random","setTimeout","asap","queueMicrotask","process","nextTick","isIterable","hasOwnProp","AxiosError","_Error","message","code","config","request","response","_this","_classCallCheck","_callSuper","isAxiosError","status","_inherits","_createClass","toJSON","description","number","fileName","lineNumber","columnNumber","utils","from","error","customProps","axiosError","cause","_wrapNativeSuper","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","ERR_FORM_DATA_DEPTH_EXCEEDED","isVisitable","removeBrackets","renderKey","path","dots","each","join","isFlatArray","some","predicates","test","toFormData","options","TypeError","metaTokens","indexes","defined","option","visitor","defaultVisitor","_Blob","Blob","maxDepth","useBlob","convertValue","toISOString","Buffer","JSON","stringify","el","index","exposedHelpers","build","depth","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","encoder","_encode","buildURL","url","_options","serialize","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","forEachHandler","h","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","legacyInterceptorReqResOrdering","URLSearchParams","isBrowser","classes","protocols","hasBrowserEnv","document","_navigator","navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","location","href","_objectSpread","platform","toURLEncodedForm","helpers","isNode","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","entries","own","stringifySafely","rawValue","parser","parse","defaults","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","env","_FormData","transformResponse","responseType","JSONRequested","strictJSONParsing","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","ignoreDuplicateOf","rawHeaders","parsed","line","substring","$internals","INVALID_HEADER_VALUE_CHARS_RE","trimSPorHTAB","start","end","normalizeHeader","header","sanitizeHeaderValue","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","parseHeaders","dest","_createForOfIteratorHelper","_step","s","n","entry","_toConsumableArray","err","f","get","has","matcher","delete","deleted","deleteHeader","normalize","format","normalized","_this$constructor","_len","targets","asStrings","getSetCookie","first","computed","_len2","_key2","accessor","internals","accessors","defineAccessor","mapped","headerValue","transformData","fns","transform","isCancel","__CANCEL__","CanceledError","_AxiosError","settle","resolve","reject","floor","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","Date","startedAt","bytesCount","passed","round","throttle","freq","timestamp","threshold","lastArgs","timer","invoke","args","clearTimeout","throttled","flush","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","rawLoaded","loaded","total","lengthComputable","progressBytes","max","rate","_defineProperty","progress","estimated","event","progressEventDecorator","asyncDecorator","isMSIE","URL","protocol","host","port","userAgent","write","expires","domain","secure","sameSite","cookie","toUTCString","read","RegExp","decodeURIComponent","remove","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","allowedSocketPaths","responseEncoding","computeConfigValue","configValue","newConfig","auth","btoa","username","password","unescape","getHeaders","formHeaders","allowedHeaders","includes","shouldSendXSRF","isURLSameOrigin","xsrfValue","cookies","isXHRAdapterSupported","XMLHttpRequest","Promise","dispatchXhrRequest","_config","resolveConfig","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","unsubscribe","signal","removeEventListener","open","onloadend","responseHeaders","getAllResponseHeaders","responseData","responseText","statusText","_resolve","_reject","onreadystatechange","handleLoad","readyState","responseURL","onabort","handleAbort","onerror","handleError","msg","ontimeout","handleTimeout","timeoutErrorMessage","setRequestHeader","_progressEventReducer","_progressEventReducer2","upload","_progressEventReducer3","_progressEventReducer4","cancel","abort","subscribe","aborted","send","composeSignals","signals","_signals","Boolean","controller","AbortController","reason","streamChunk","_regenerator","chunk","chunkSize","pos","_context","byteLength","readBytes","_wrapAsyncGenerator","_callee","iterable","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_t","_context2","p","_asyncIterator","readStream","_awaitAsyncGenerator","v","d","_regeneratorValues","_asyncGeneratorDelegate","_x","_x2","_callee2","stream","reader","_yield$_awaitAsyncGen","_context3","asyncIterator","getReader","_x3","trackStream","onProgress","onFinish","_onFinish","ReadableStream","pull","_asyncToGenerator","_callee3","_yield$iterator$next","_done","loadedBytes","_t2","_context4","close","enqueue","highWaterMark","DEFAULT_CHUNK_SIZE","globalFetchAPI","Request","Response","_utils$global","TextEncoder","factory","_env","envFetch","fetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","arrayBuffer","supportsRequestStream","duplexAccessed","body","duplex","hasContentType","supportsResponseStream","resolvers","res","getBodyLength","_request","size","resolveBodyLength","getContentLength","_x4","_callee4","_resolveConfig","_resolveConfig$withCr","fetchOptions","_fetch","composedSignal","requestContentLength","contentTypeHeader","_progressEventDecorat","_progressEventDecorat2","isCredentialsSupported","resolvedOptions","isStreamResponse","responseContentLength","_ref6","_ref7","_onProgress","_flush","_t3","_t4","_t5","toAbortSignal","credentials","_x5","seedCache","Map","getFetch","seeds","seed","knownAdapters","http","httpAdapter","xhr","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","getAdapter","adapters","_adapters","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","onAdapterResolution","onAdapterRejection","VERSION","validators","validator","deprecatedWarnings","version","formatMessage","opt","desc","opts","console","warn","spelling","correctSpelling","assertOptions","schema","allowUnknown","Axios","instanceConfig","interceptors","_request2","configOrUrl","dummy","firstNewlineIndex","secondNewlineIndex","stackWithoutTwoTopLines","captureStackTrace","baseUrl","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","unshiftRequestInterceptors","interceptor","unshift","responseInterceptorChain","pushResponseInterceptors","promise","chain","onFulfilled","onRejected","getUri","fullPath","forEachMethodNoData","forEachMethodWithData","generateHTTPMethod","isForm","httpMethod","CancelToken","executor","resolvePromise","promiseExecutor","_listeners","onfulfilled","splice","c","spread","callback","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","WebServerIsDown","ConnectionTimedOut","OriginIsUnreachable","TimeoutOccurred","SslHandshakeFailed","InvalidSslCertificate","createInstance","defaultConfig","instance","axios","Cancel","all","promises","formToJSON"],"mappings":"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"} \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/axios/dist/axios.min.js b/.claude/skills/教学日程查询/node_modules/axios/dist/axios.min.js deleted file mode 100644 index dcc4840..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/dist/axios.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! Axios v1.15.2 Copyright (c) 2026 Matt Zabriskie and contributors */ -!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){this.v=e,this.k=t}function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n3?(o=h===r)&&(s=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=e):i[0]<=p&&((o=n<2&&pr||r>h)&&(i[4]=n,i[5]=r,d.n=h,u=0))}if(o||n>1)return a;throw l=!0,r}return function(o,f,h){if(c>1)throw TypeError("Generator is already running");for(l&&1===f&&p(f,h),u=f,s=h;(t=u<2?e:s)||!l;){i||(u?u<3?(u>1&&(d.n=-1),p(u,s)):d.n=s:d.v=s);try{if(c=2,i){if(u||(o="next"),t=i[o]){if(!(t=t.call(i,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,u<2&&(u=0)}else 1===u&&(t=i.return)&&t.call(i),u<2&&(s=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=e}else if((t=(l=d.n<0)?s:n.call(r,d))!==a)break}catch(t){i=e,u=1,s=t}finally{c=1}}return{value:t,done:l}}}(n,o,i),!0),c}var a={};function u(){}function s(){}function c(){}t=Object.getPrototypeOf;var f=[][r]?t(t([][r]())):(g(t={},r,function(){return this}),t),l=c.prototype=u.prototype=Object.create(f);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,g(e,o,"GeneratorFunction")),e.prototype=Object.create(l),e}return s.prototype=c,g(l,"constructor",c),g(c,"constructor",s),s.displayName="GeneratorFunction",g(c,o,"GeneratorFunction"),g(l),g(l,o,"Generator"),g(l,r,function(){return this}),g(l,"toString",function(){return"[object Generator]"}),(m=function(){return{w:i,m:d}})()}function g(e,t,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}g=function(e,t,n,r){function i(t,n){g(e,t,function(e){return this._invoke(t,n,e)})}t?o?o(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(i("next",0),i("throw",1),i("return",2))},g(e,t,n,r)}function w(e){if(null!=e){var t=e["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],n=0;if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}throw new TypeError(typeof e+" is not iterable")}function O(e,t){return O=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},O(e,t)}function E(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,u=[],s=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(u.push(r.value),u.length!==t);s=!0);}catch(e){c=!0,o=e}finally{try{if(!s&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw o}}return u}}(e,t)||A(e,t)||function(){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 R(e){return function(e){if(Array.isArray(e))return t(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||A(e)||function(){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 S(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}function T(e){return T="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},T(e)}function A(e,n){if(e){if("string"==typeof e)return t(e,n);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}function j(e){return function(){return new P(e.apply(this,arguments))}}function P(t){var n,r;function o(n,r){try{var a=t[n](r),u=a.value,s=u instanceof e;Promise.resolve(s?u.v:u).then(function(e){if(s){var r="return"===n?"return":"next";if(!u.k||e.done)return o(r,e);e=t[r](e).value}i(a.done?"return":"normal",e)},function(e){o("throw",e)})}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":n.resolve({value:t,done:!0});break;case"throw":n.reject(t);break;default:n.resolve({value:t,done:!1})}(n=n.next)?o(n.key,n.arg):r=null}this._invoke=function(e,t){return new Promise(function(i,a){var u={key:e,arg:t,resolve:i,reject:a,next:null};r?r=r.next=u:(n=r=u,o(e,t))})},"function"!=typeof t.return&&(this.return=void 0)}function k(e){var t="function"==typeof Map?new Map:void 0;return k=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(v())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var o=new(e.bind.apply(e,r));return n&&O(o,n.prototype),o}(e,arguments,p(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),O(n,e)},k(e)}function _(e,t){return function(){return e.apply(t,arguments)}}P.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},P.prototype.next=function(e){return this._invoke("next",e)},P.prototype.throw=function(e){return this._invoke("throw",e)},P.prototype.return=function(e){return this._invoke("return",e)};var x,C=Object.prototype.toString,N=Object.getPrototypeOf,D=Symbol.iterator,U=Symbol.toStringTag,F=(x=Object.create(null),function(e){var t=C.call(e);return x[t]||(x[t]=t.slice(8,-1).toLowerCase())}),B=function(e){return e=e.toLowerCase(),function(t){return F(t)===e}},L=function(e){return function(t){return T(t)===e}},I=Array.isArray,q=L("undefined");function M(e){return null!==e&&!q(e)&&null!==e.constructor&&!q(e.constructor)&&J(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}var z=B("ArrayBuffer");var H=L("string"),J=L("function"),W=L("number"),K=function(e){return null!==e&&"object"===T(e)},V=function(e){if("object"!==F(e))return!1;var t=N(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||U in e||D in e)},X=B("Date"),G=B("File"),$=B("Blob"),Q=B("FileList");var Y="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},Z=void 0!==Y.FormData?Y.FormData:void 0,ee=B("URLSearchParams"),te=E(["ReadableStream","Request","Response","Headers"].map(B),4),ne=te[0],re=te[1],oe=te[2],ie=te[3];function ae(e,t){var n,r,o=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).allOwnKeys,i=void 0!==o&&o;if(null!=e)if("object"!==T(e)&&(e=[e]),I(e))for(n=0,r=e.length;n0;)if(t===(n=r[o]).toLowerCase())return n;return null}var se="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,ce=function(e){return!q(e)&&e!==se};var fe,le=(fe="undefined"!=typeof Uint8Array&&N(Uint8Array),function(e){return fe&&e instanceof fe}),de=B("HTMLFormElement"),pe=function(){var e=Object.prototype.hasOwnProperty;return function(t,n){return e.call(t,n)}}(),he=B("RegExp"),ve=function(e,t){var n=Object.getOwnPropertyDescriptors(e),r={};ae(n,function(n,o){var i;!1!==(i=t(n,o,e))&&(r[o]=i||n)}),Object.defineProperties(e,r)};var ye,be,me,ge,we=B("AsyncFunction"),Oe=(ye="function"==typeof setImmediate,be=J(se.postMessage),ye?setImmediate:be?(me="axios@".concat(Math.random()),ge=[],se.addEventListener("message",function(e){var t=e.source,n=e.data;t===se&&n===me&&ge.length&&ge.shift()()},!1),function(e){ge.push(e),se.postMessage(me,"*")}):function(e){return setTimeout(e)}),Ee="undefined"!=typeof queueMicrotask?queueMicrotask.bind(se):"undefined"!=typeof process&&process.nextTick||Oe,Re={isArray:I,isArrayBuffer:z,isBuffer:M,isFormData:function(e){if(!e)return!1;if(Z&&e instanceof Z)return!0;var t=N(e);if(!t||t===Object.prototype)return!1;if(!J(e.append))return!1;var n=F(e);return"formdata"===n||"object"===n&&J(e.toString)&&"[object FormData]"===e.toString()},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&z(e.buffer)},isString:H,isNumber:W,isBoolean:function(e){return!0===e||!1===e},isObject:K,isPlainObject:V,isEmptyObject:function(e){if(!K(e)||M(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(e){return!1}},isReadableStream:ne,isRequest:re,isResponse:oe,isHeaders:ie,isUndefined:q,isDate:X,isFile:G,isReactNativeBlob:function(e){return!(!e||void 0===e.uri)},isReactNative:function(e){return e&&void 0!==e.getParts},isBlob:$,isRegExp:he,isFunction:J,isStream:function(e){return K(e)&&J(e.pipe)},isURLSearchParams:ee,isTypedArray:le,isFileList:Q,forEach:ae,merge:function e(){for(var t=ce(this)&&this||{},n=t.caseless,r=t.skipUndefined,o={},i=function(t,i){if("__proto__"!==i&&"constructor"!==i&&"prototype"!==i){var a=n&&ue(o,i)||i;V(o[a])&&V(t)?o[a]=e(o[a],t):V(t)?o[a]=e({},t):I(t)?o[a]=t.slice():r&&q(t)||(o[a]=t)}},a=0,u=arguments.length;a3&&void 0!==arguments[3]?arguments[3]:{}).allOwnKeys}),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,n,r){e.prototype=Object.create(t.prototype,r),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:function(e,t,n,r){var o,i,a,u={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],r&&!r(a,e,t)||u[a]||(t[a]=e[a],u[a]=!0);e=!1!==n&&N(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:F,kindOfTest:B,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return-1!==r&&r===n},toArray:function(e){if(!e)return null;if(I(e))return e;var t=e.length;if(!W(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},forEachEntry:function(e,t){for(var n,r=(e&&e[D]).call(e);(n=r.next())&&!n.done;){var o=n.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var n,r=[];null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:de,hasOwnProperty:pe,hasOwnProp:pe,reduceDescriptors:ve,freezeMethods:function(e){ve(e,function(t,n){if(J(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;var r=e[n];J(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+n+"'")}))})},toObjectSet:function(e,t){var n={},r=function(e){e.forEach(function(e){n[e]=!0})};return I(e)?r(e):r(String(e).split(t)),n},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n})},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:ue,global:se,isContextDefined:ce,isSpecCompliantForm:function(e){return!!(e&&J(e.append)&&"FormData"===e[U]&&e[D])},toJSONObject:function(e){var t=new Array(10),n=function(e,r){if(K(e)){if(t.indexOf(e)>=0)return;if(M(e))return e;if(!("toJSON"in e)){t[r]=e;var o=I(e)?[]:{};return ae(e,function(e,t){var i=n(e,r+1);!q(i)&&(o[t]=i)}),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:we,isThenable:function(e){return e&&(K(e)||J(e))&&J(e.then)&&J(e.catch)},setImmediate:Oe,asap:Ee,isIterable:function(e){return null!=e&&J(e[D])}},Se=function(e){function t(e,n,r,o,i){var a;return c(this,t),a=s(this,t,[e]),Object.defineProperty(a,"message",{value:e,enumerable:!0,writable:!0,configurable:!0}),a.name="AxiosError",a.isAxiosError=!0,n&&(a.code=n),r&&(a.config=r),o&&(a.request=o),i&&(a.response=i,a.status=i.status),a}return h(t,e),l(t,[{key:"toJSON",value: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:Re.toJSONObject(this.config),code:this.code,status:this.status}}}],[{key:"from",value:function(e,n,r,o,i,a){var u=new t(e.message,n||e.code,r,o,i);return u.cause=e,u.name=e.name,null!=e.status&&null==u.status&&(u.status=e.status),a&&Object.assign(u,a),u}}])}(k(Error));Se.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE",Se.ERR_BAD_OPTION="ERR_BAD_OPTION",Se.ECONNABORTED="ECONNABORTED",Se.ETIMEDOUT="ETIMEDOUT",Se.ERR_NETWORK="ERR_NETWORK",Se.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS",Se.ERR_DEPRECATED="ERR_DEPRECATED",Se.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE",Se.ERR_BAD_REQUEST="ERR_BAD_REQUEST",Se.ERR_CANCELED="ERR_CANCELED",Se.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT",Se.ERR_INVALID_URL="ERR_INVALID_URL",Se.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";function Te(e){return Re.isPlainObject(e)||Re.isArray(e)}function Ae(e){return Re.endsWith(e,"[]")?e.slice(0,-2):e}function je(e,t,n){return e?e.concat(t).map(function(e,t){return e=Ae(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}var Pe=Re.toFlatObject(Re,{},null,function(e){return/^is[A-Z]/.test(e)});function ke(e,t,n){if(!Re.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var r=(n=Re.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!Re.isUndefined(t[e])})).metaTokens,o=n.visitor||l,i=n.dots,a=n.indexes,u=n.Blob||"undefined"!=typeof Blob&&Blob,s=void 0===n.maxDepth?100:n.maxDepth,c=u&&Re.isSpecCompliantForm(t);if(!Re.isFunction(o))throw new TypeError("visitor must be a function");function f(e){if(null===e)return"";if(Re.isDate(e))return e.toISOString();if(Re.isBoolean(e))return e.toString();if(!c&&Re.isBlob(e))throw new Se("Blob is not supported. Use a Buffer instead.");return Re.isArrayBuffer(e)||Re.isTypedArray(e)?c&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function l(e,n,o){var u=e;if(Re.isReactNative(t)&&Re.isReactNativeBlob(e))return t.append(je(o,n,i),f(e)),!1;if(e&&!o&&"object"===T(e))if(Re.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(Re.isArray(e)&&function(e){return Re.isArray(e)&&!e.some(Te)}(e)||(Re.isFileList(e)||Re.endsWith(n,"[]"))&&(u=Re.toArray(e)))return n=Ae(n),u.forEach(function(e,r){!Re.isUndefined(e)&&null!==e&&t.append(!0===a?je([n],r,i):null===a?n:n+"[]",f(e))}),!1;return!!Te(e)||(t.append(je(o,n,i),f(e)),!1)}var d=[],p=Object.assign(Pe,{defaultVisitor:l,convertValue:f,isVisitable:Te});if(!Re.isObject(e))throw new TypeError("data must be an object");return function e(n,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(!Re.isUndefined(n)){if(i>s)throw new Se("Object is too deeply nested ("+i+" levels). Max depth: "+s,Se.ERR_FORM_DATA_DEPTH_EXCEEDED);if(-1!==d.indexOf(n))throw Error("Circular reference detected in "+r.join("."));d.push(n),Re.forEach(n,function(n,a){!0===(!(Re.isUndefined(n)||null===n)&&o.call(t,n,Re.isString(a)?a.trim():a,r,p))&&e(n,r?r.concat(a):[a],i+1)}),d.pop()}}(e),t}function _e(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(e).replace(/[!'()~]|%20/g,function(e){return t[e]})}function xe(e,t){this._pairs=[],e&&ke(e,this,t)}var Ce=xe.prototype;function Ne(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function De(e,t,n){if(!t)return e;var r,o=n&&n.encode||Ne,i=Re.isFunction(n)?{serialize:n}:n,a=i&&i.serialize;if(r=a?a(t,i):Re.isURLSearchParams(t)?t.toString():new xe(t,i).toString(o)){var u=e.indexOf("#");-1!==u&&(e=e.slice(0,u)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e}Ce.append=function(e,t){this._pairs.push([e,t])},Ce.toString=function(e){var t=e?function(t){return e.call(this,t,_e)}:_e;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};var Ue=function(){return l(function e(){c(this,e),this.handlers=[]},[{key:"use",value:function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.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){Re.forEach(this.handlers,function(t){null!==t&&e(t)})}}])}(),Fe={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},Be={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:xe,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},Le="undefined"!=typeof window&&"undefined"!=typeof document,Ie="object"===("undefined"==typeof navigator?"undefined":T(navigator))&&navigator||void 0,qe=Le&&(!Ie||["ReactNative","NativeScript","NS"].indexOf(Ie.product)<0),Me="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,ze=Le&&window.location.href||"http://localhost",He=b(b({},Object.freeze({__proto__:null,hasBrowserEnv:Le,hasStandardBrowserEnv:qe,hasStandardBrowserWebWorkerEnv:Me,navigator:Ie,origin:ze})),Be);function Je(e){function t(e,n,r,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),u=o>=e.length;return i=!i&&Re.isArray(r)?r.length:i,u?(Re.hasOwnProp(r,i)?r[i]=Re.isArray(r[i])?r[i].concat(n):[r[i],n]:r[i]=n,!a):(r[i]&&Re.isObject(r[i])||(r[i]=[]),t(e,n,r[i],o)&&Re.isArray(r[i])&&(r[i]=function(e){var t,n,r={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=Re.isObject(e);if(i&&Re.isHTMLForm(e)&&(e=new FormData(e)),Re.isFormData(e))return o?JSON.stringify(Je(e)):e;if(Re.isArrayBuffer(e)||Re.isBuffer(e)||Re.isStream(e)||Re.isFile(e)||Re.isBlob(e)||Re.isReadableStream(e))return e;if(Re.isArrayBufferView(e))return e.buffer;if(Re.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){var a=We(this,"formSerializer");if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return ke(e,new He.classes.URLSearchParams,b({visitor:function(e,t,n,r){return He.isNode&&Re.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,a).toString();if((n=Re.isFileList(e))||r.indexOf("multipart/form-data")>-1){var u=We(this,"env"),s=u&&u.FormData;return ke(n?{"files[]":e}:e,s&&new s,a)}}return i||o?(t.setContentType("application/json",!1),function(e,t,n){if(Re.isString(e))try{return(t||JSON.parse)(e),Re.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=We(this,"transitional")||Ke.transitional,n=t&&t.forcedJSONParsing,r=We(this,"responseType"),o="json"===r;if(Re.isResponse(e)||Re.isReadableStream(e))return e;if(e&&Re.isString(e)&&(n&&!r||o)){var i=!(t&&t.silentJSONParsing)&&o;try{return JSON.parse(e,We(this,"parseReviver"))}catch(e){if(i){if("SyntaxError"===e.name)throw Se.from(e,Se.ERR_BAD_RESPONSE,this,null,We(this,"response"));throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:He.classes.FormData,Blob:He.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};Re.forEach(["delete","get","head","post","put","patch"],function(e){Ke.headers[e]={}});var Ve=Re.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"]),Xe=Symbol("internals"),Ge=/[^\x09\x20-\x7E\x80-\xFF]/g;function $e(e){return e&&String(e).trim().toLowerCase()}function Qe(e){return!1===e||null==e?e:Re.isArray(e)?e.map(Qe):function(e){for(var t=0,n=e.length;tt;){var o=e.charCodeAt(n-1);if(9!==o&&32!==o)break;n-=1}return 0===t&&n===e.length?e:e.slice(t,n)}(String(e).replace(Ge,""))}function Ye(e,t,n,r,o){return Re.isFunction(r)?r.call(this,t,n):(o&&(t=n),Re.isString(t)?Re.isString(r)?-1!==t.indexOf(r):Re.isRegExp(r)?r.test(t):void 0:void 0)}var Ze=function(){return l(function e(t){c(this,e),t&&this.set(t)},[{key:"set",value:function(e,t,n){var r=this;function o(e,t,n){var o=$e(t);if(!o)throw new Error("header name must be a non-empty string");var i=Re.findKey(r,o);(!i||void 0===r[i]||!0===n||void 0===n&&!1!==r[i])&&(r[i||t]=Qe(e))}var i=function(e,t){return Re.forEach(e,function(e,n){return o(e,n,t)})};if(Re.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(Re.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,n,r,o={};return e&&e.split("\n").forEach(function(e){r=e.indexOf(":"),t=e.substring(0,r).trim().toLowerCase(),n=e.substring(r+1).trim(),!t||o[t]&&Ve[t]||("set-cookie"===t?o[t]?o[t].push(n):o[t]=[n]:o[t]=o[t]?o[t]+", "+n:n)}),o}(e),t);else if(Re.isObject(e)&&Re.isIterable(e)){var a,u,s,c={},f=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=A(e))||t){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw i}}}}(e);try{for(f.s();!(s=f.n()).done;){var l=s.value;if(!Re.isArray(l))throw TypeError("Object iterator must return a key-value pair");c[u=l[0]]=(a=c[u])?Re.isArray(a)?[].concat(R(a),[l[1]]):[a,l[1]]:l[1]}}catch(e){f.e(e)}finally{f.f()}i(c,t)}else null!=e&&o(t,e,n);return this}},{key:"get",value:function(e,t){if(e=$e(e)){var n=Re.findKey(this,e);if(n){var r=this[n];if(!t)return r;if(!0===t)return function(e){for(var t,n=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=r.exec(e);)n[t[1]]=t[2];return n}(r);if(Re.isFunction(t))return t.call(this,r,n);if(Re.isRegExp(t))return t.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=$e(e)){var n=Re.findKey(this,e);return!(!n||void 0===this[n]||t&&!Ye(0,this[n],n,t))}return!1}},{key:"delete",value:function(e,t){var n=this,r=!1;function o(e){if(e=$e(e)){var o=Re.findKey(n,e);!o||t&&!Ye(0,n[o],o,t)||(delete n[o],r=!0)}}return Re.isArray(e)?e.forEach(o):o(e),r}},{key:"clear",value:function(e){for(var t=Object.keys(this),n=t.length,r=!1;n--;){var o=t[n];e&&!Ye(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}},{key:"normalize",value:function(e){var t=this,n={};return Re.forEach(this,function(r,o){var i=Re.findKey(n,o);if(i)return t[i]=Qe(r),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,function(e,t,n){return t.toUpperCase()+n})}(o):String(o).trim();a!==o&&delete t[o],t[a]=Qe(r),n[a]=!0}),this}},{key:"concat",value:function(){for(var e,t=arguments.length,n=new Array(t),r=0;r1?n-1:0),o=1;o2&&void 0!==arguments[2]?arguments[2]:3,r=0,o=function(e,t){e=e||10;var n,r=new Array(e),o=new Array(e),i=0,a=0;return t=void 0!==t?t:1e3,function(u){var s=Date.now(),c=o[a];n||(n=s),r[i]=u,o[i]=s;for(var f=a,l=0;f!==i;)l+=r[f++],f%=e;if((i=(i+1)%e)===a&&(a=(a+1)%e),!(s-n1&&void 0!==arguments[1]?arguments[1]:Date.now();o=i,n=null,r&&(clearTimeout(r),r=null),e.apply(void 0,R(t))};return[function(){for(var e=Date.now(),t=e-o,u=arguments.length,s=new Array(u),c=0;c=i?a(s,e):(n=s,r||(r=setTimeout(function(){r=null,a(n)},i-t)))},function(){return n&&a(n)}]}(function(n){var i=n.loaded,a=n.lengthComputable?n.total:void 0,u=null!=a?Math.min(i,a):i,s=Math.max(0,u-r),c=o(s);r=Math.max(r,u);var f=d({loaded:u,total:a,progress:a?u/a:void 0,bytes:s,rate:c||void 0,estimated:c&&a?(a-u)/c:void 0,event:n,lengthComputable:null!=a},t?"download":"upload",!0);e(f)},n)},it=function(e,t){var n=null!=e;return[function(r){return t[0]({lengthComputable:n,total:e,loaded:r})},t[1]]},at=function(e){return function(){for(var t=arguments.length,n=new Array(t),r=0;r1?t-1:0),r=1;r1?"since :\n"+s.map(_t).join("\n"):" "+_t(s[0]):"as no adapter specified";throw new Se("There is no suitable adapter to dispatch the request "+c,"ERR_NOT_SUPPORT")}return r},adapters:kt};function Nt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new nt(null,e)}function Dt(e){return Nt(e),e.headers=Ze.from(e.headers),e.data=et.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Ct.getAdapter(e.adapter||Ke.adapter,e)(e).then(function(t){return Nt(e),t.data=et.call(e,e.transformResponse,t),t.headers=Ze.from(t.headers),t},function(t){return tt(t)||(Nt(e),t&&t.response&&(t.response.data=et.call(e,e.transformResponse,t.response),t.response.headers=Ze.from(t.response.headers))),Promise.reject(t)})}var Ut="1.15.2",Ft={};["object","boolean","number","function","string","symbol"].forEach(function(e,t){Ft[e]=function(n){return T(n)===e||"a"+(t<1?"n ":" ")+e}});var Bt={};Ft.transitional=function(e,t,n){function r(e,t){return"[Axios v"+Ut+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return function(n,o,i){if(!1===e)throw new Se(r(o," has been removed"+(t?" in "+t:"")),Se.ERR_DEPRECATED);return t&&!Bt[o]&&(Bt[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,i)}},Ft.spelling=function(e){return function(t,n){return console.warn("".concat(n," is likely a misspelling of ").concat(e)),!0}};var Lt={assertOptions:function(e,t,n){if("object"!==T(e))throw new Se("options must be an object",Se.ERR_BAD_OPTION_VALUE);for(var r=Object.keys(e),o=r.length;o-- >0;){var i=r[o],a=Object.prototype.hasOwnProperty.call(t,i)?t[i]:void 0;if(a){var u=e[i],s=void 0===u||a(u,i,e);if(!0!==s)throw new Se("option "+i+" must be "+s,Se.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new Se("Unknown option "+i,Se.ERR_BAD_OPTION)}},validators:Ft},It=Lt.validators,qt=function(){return l(function e(t){c(this,e),this.defaults=t||{},this.interceptors={request:new Ue,response:new Ue}},[{key:"request",value:(e=a(m().m(function e(t,n){var r,o,i,a,u,s;return m().w(function(e){for(;;)switch(e.p=e.n){case 0:return e.p=0,e.n=1,this._request(t,n);case 1:return e.a(2,e.v);case 2:if(e.p=2,(s=e.v)instanceof Error){r={},Error.captureStackTrace?Error.captureStackTrace(r):r=new Error,o=function(){if(!r.stack)return"";var e=r.stack.indexOf("\n");return-1===e?"":r.stack.slice(e+1)}();try{s.stack?o&&(i=o.indexOf("\n"),a=-1===i?-1:o.indexOf("\n",i+1),u=-1===a?"":o.slice(a+1),String(s.stack).endsWith(u)||(s.stack+="\n"+o)):s.stack=o}catch(e){}}throw s;case 3:return e.a(2)}},e,this,[[0,2]])})),function(t,n){return e.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var n=t=lt(this.defaults,t),r=n.transitional,o=n.paramsSerializer,i=n.headers;void 0!==r&&Lt.assertOptions(r,{silentJSONParsing:It.transitional(It.boolean),forcedJSONParsing:It.transitional(It.boolean),clarifyTimeoutError:It.transitional(It.boolean),legacyInterceptorReqResOrdering:It.transitional(It.boolean)},!1),null!=o&&(Re.isFunction(o)?t.paramsSerializer={serialize:o}:Lt.assertOptions(o,{encode:It.function,serialize:It.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),Lt.assertOptions(t,{baseUrl:It.spelling("baseURL"),withXsrfToken:It.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&Re.merge(i.common,i[t.method]);i&&Re.forEach(["delete","get","head","post","put","patch","common"],function(e){delete i[e]}),t.headers=Ze.concat(a,i);var u=[],s=!0;this.interceptors.request.forEach(function(e){if("function"!=typeof e.runWhen||!1!==e.runWhen(t)){s=s&&e.synchronous;var n=t.transitional||Fe;n&&n.legacyInterceptorReqResOrdering?u.unshift(e.fulfilled,e.rejected):u.push(e.fulfilled,e.rejected)}});var c,f=[];this.interceptors.response.forEach(function(e){f.push(e.fulfilled,e.rejected)});var l,d=0;if(!s){var p=[Dt.bind(this),void 0];for(p.unshift.apply(p,u),p.push.apply(p,f),l=p.length,c=Promise.resolve(t);d0;)r._listeners[t](e);r._listeners=null}}),this.promise.then=function(e){var t,n=new Promise(function(e){r.subscribe(e),t=e}).then(e);return n.cancel=function(){r.unsubscribe(t)},n},t(function(e,t,o){r.reason||(r.reason=new nt(e,t,o),n(r.reason))})}return l(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:"toAbortSignal",value:function(){var e=this,t=new AbortController,n=function(e){t.abort(e)};return this.subscribe(n),t.signal.unsubscribe=function(){return e.unsubscribe(n)},t.signal}}],[{key:"source",value:function(){var t;return{token:new e(function(e){t=e}),cancel:t}}}])}();var zt={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(zt).forEach(function(e){var t=E(e,2),n=t[0],r=t[1];zt[r]=n});var Ht=function e(t){var n=new qt(t),r=_(qt.prototype.request,n);return Re.extend(r,qt.prototype,n,{allOwnKeys:!0}),Re.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(lt(t,n))},r}(Ke);return Ht.Axios=qt,Ht.CanceledError=nt,Ht.CancelToken=Mt,Ht.isCancel=tt,Ht.VERSION=Ut,Ht.toFormData=ke,Ht.AxiosError=Se,Ht.Cancel=Ht.CanceledError,Ht.all=function(e){return Promise.all(e)},Ht.spread=function(e){return function(t){return e.apply(null,t)}},Ht.isAxiosError=function(e){return Re.isObject(e)&&!0===e.isAxiosError},Ht.mergeConfig=lt,Ht.AxiosHeaders=Ze,Ht.formToJSON=function(e){return Je(Re.isHTMLForm(e)?new FormData(e):e)},Ht.getAdapter=Ct.getAdapter,Ht.HttpStatusCode=zt,Ht.default=Ht,Ht}); -//# sourceMappingURL=axios.min.js.map diff --git a/.claude/skills/教学日程查询/node_modules/axios/dist/axios.min.js.map b/.claude/skills/教学日程查询/node_modules/axios/dist/axios.min.js.map deleted file mode 100644 index 480a569..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/dist/axios.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.min.js","sources":["../lib/helpers/bind.js","../lib/utils.js","../lib/core/AxiosError.js","../lib/helpers/toFormData.js","../lib/helpers/AxiosURLSearchParams.js","../lib/helpers/buildURL.js","../lib/core/InterceptorManager.js","../lib/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/core/settle.js","../lib/helpers/progressEventReducer.js","../lib/helpers/speedometer.js","../lib/helpers/throttle.js","../lib/helpers/isURLSameOrigin.js","../lib/helpers/cookies.js","../lib/core/buildFullPath.js","../lib/helpers/isAbsoluteURL.js","../lib/helpers/combineURLs.js","../lib/core/mergeConfig.js","../lib/helpers/resolveConfig.js","../lib/adapters/fetch.js","../lib/adapters/xhr.js","../lib/helpers/parseProtocol.js","../lib/helpers/composeSignals.js","../lib/helpers/trackStream.js","../lib/adapters/adapters.js","../lib/helpers/null.js","../lib/core/dispatchRequest.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\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\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;\nconst { iterator, toStringTag } = Symbol;\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 a non-null object\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 (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\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 * 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 (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\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 React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\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 */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n if (!thing) return false;\n if (FormDataCtor && thing instanceof FormDataCtor) return true;\n // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9).\n const proto = getPrototypeOf(thing);\n if (!proto || proto === Object.prototype) return false;\n if (!isFunction(thing.append)) return false;\n const kind = kindOf(thing);\n return kind === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]');\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\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\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) => {\n return str.trim ? 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 {Object} [options]\n * @param {Boolean} [options.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 // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\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\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\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 * const 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, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\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 if (!skipUndefined || !isUndefined(val)) {\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 {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\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 Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\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 * 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[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, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(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\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\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 return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\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 !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\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\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\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 isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\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 */\n constructor(message, code, config, request, response) {\n super(message);\n\n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true,\n });\n\n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n 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.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\nAxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED';\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\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\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(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\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 maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth;\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 (utils.isBoolean(value)) {\n return value.toString();\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 (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\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) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : 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, depth = 0) {\n if (utils.isUndefined(value)) return;\n\n if (depth > maxDepth) {\n throw new AxiosError(\n 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,\n AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED\n );\n }\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 =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key], depth + 1);\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 };\n return encodeURIComponent(str).replace(/[!'()~]|%20/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\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\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 URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain 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}\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|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\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 * @param {Object} options The options for the interceptor, synchronous and runWhen\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 {void}\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 legacyInterceptorReqResOrdering: true,\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\nconst _navigator = (typeof navigator === 'object' && navigator) || 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 hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\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\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\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] = utils.isArray(target[name])\n ? target[name].concat(value)\n : [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\nconst own = (obj, key) => (obj != null && utils.hasOwnProp(obj, key) ? obj[key] : undefined);\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 transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n 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 (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(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 const formSerializer = own(this, 'formSerializer');\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const env = own(this, 'env');\n const _FormData = env && env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n 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\n transformResponse: [\n function transformResponse(data) {\n const transitional = own(this, 'transitional') || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const responseType = own(this, 'responseType');\n const JSONRequested = responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, own(this, 'parseReviver'));\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(this, 'response'));\n }\n throw e;\n }\n }\n }\n\n return data;\n },\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(), {\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}\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',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n '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 &&\n 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\nconst INVALID_HEADER_VALUE_CHARS_RE = /[^\\x09\\x20-\\x7E\\x80-\\xFF]/g;\n\nfunction trimSPorHTAB(str) {\n let start = 0;\n let end = str.length;\n\n while (start < end) {\n const code = str.charCodeAt(start);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n start += 1;\n }\n\n while (end > start) {\n const code = str.charCodeAt(end - 1);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n end -= 1;\n }\n\n return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction sanitizeHeaderValue(str) {\n return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, ''));\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(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\n .trim()\n .toLowerCase()\n .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 (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\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 if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, 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 !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\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 &&\n value !== false &&\n (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())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\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 =\n (this[$internals] =\n this[$internals] =\n {\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([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\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';\n\nclass CanceledError extends AxiosError {\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 */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\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(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\n );\n }\n}\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const rawLoaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded;\n const progressBytes = Math.max(0, loaded - bytesNotified);\n const rate = _speedometer(progressBytes);\n\n bytesNotified = Math.max(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 ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\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","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\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","'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, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) {\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 if (typeof url !== 'string') {\n return false;\n }\n\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 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\n // Use a null-prototype object so that downstream reads such as `config.auth`\n // or `config.baseURL` cannot inherit polluted values from Object.prototype\n // (see GHSA-q8qp-cvcw-x6jj). `hasOwnProperty` is restored as a non-enumerable\n // own slot to preserve ergonomics for user code that relies on it.\n const config = Object.create(null);\n Object.defineProperty(config, 'hasOwnProperty', {\n value: Object.prototype.hasOwnProperty,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n\n function getMergedValue(target, source, prop, 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 function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, 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 (utils.hasOwnProp(config2, prop)) {\n return getMergedValue(a, b);\n } else if (utils.hasOwnProp(config1, prop)) {\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 allowedSocketPaths: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined;\n const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined;\n const configValue = merge(a, b, prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n // Read only own properties to prevent prototype pollution gadgets\n // (e.g. Object.prototype.baseURL = 'https://evil.com'). See GHSA-q8qp-cvcw-x6jj.\n const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined);\n\n const data = own('data');\n let withXSRFToken = own('withXSRFToken');\n const xsrfHeaderName = own('xsrfHeaderName');\n const xsrfCookieName = own('xsrfCookieName');\n let headers = own('headers');\n const auth = own('auth');\n const baseURL = own('baseURL');\n const allowAbsoluteUrls = own('allowAbsoluteUrls');\n const url = own('url');\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(baseURL, url, allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\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\n if (platform.hasStandardBrowserEnv) {\n if (utils.isFunction(withXSRFToken)) {\n withXSRFToken = withXSRFToken(newConfig);\n }\n\n // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)\n // and misconfigurations (e.g. \"false\") from short-circuiting the same-origin check and leaking\n // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c.\n const shouldSendXSRF =\n withXSRFToken === true ||\n (withXSRFToken == null && isURLSameOrigin(newConfig.url));\n\n if (shouldSendXSRF) {\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const request = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n });\n\n const hasContentType = request.headers.has('Content-Type');\n\n if (request.body != null) {\n request.body.cancel();\n }\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n // If data is FormData and Content-Type is multipart/form-data without boundary,\n // delete it so fetch can set it correctly with the boundary\n if (utils.isFormData(data)) {\n const contentType = headers.getContentType();\n if (\n contentType &&\n /^multipart\\/form-data/i.test(contentType) &&\n !/boundary=/i.test(contentType)\n ) {\n headers.delete('content-type');\n }\n }\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport settle from '../core/settle.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 { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, 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 =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : 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(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\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 (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\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(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\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 (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\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\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\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","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\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\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\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 && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `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\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\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\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\n */\n adapters: knownAdapters,\n};\n","// eslint-disable-next-line strict\nexport default null;\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(config, config.transformRequest);\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, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\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}\n","export const VERSION = \"1.15.2\";","'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 (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\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\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return 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 // Use hasOwnProperty so a polluted Object.prototype. cannot supply\n // a non-function validator and cause a TypeError. See GHSA-q8qp-cvcw-x6jj.\n const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined;\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(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\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';\nimport transitionalDefaults from '../defaults/transitional.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 = (() => {\n if (!dummy.stack) {\n return '';\n }\n\n const firstNewlineIndex = dummy.stack.indexOf('\\n');\n\n return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1);\n })();\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack) {\n const firstNewlineIndex = stack.indexOf('\\n');\n const secondNewlineIndex =\n firstNewlineIndex === -1 ? -1 : stack.indexOf('\\n', firstNewlineIndex + 1);\n const stackWithoutTwoTopLines =\n secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1);\n\n if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) {\n err.stack += '\\n' + stack;\n }\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\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(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\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(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\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 const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\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(...requestInterceptorChain);\n chain.push(...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 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, config.allowAbsoluteUrls);\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(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\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 toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\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 WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\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 * const 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","iterator","Symbol","toStringTag","kindOf","create","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","_typeof","isArray","Array","isUndefined","isBuffer","val","constructor","isFunction","isArrayBuffer","isString","isNumber","isObject","isPlainObject","isDate","isFile","isBlob","isFileList","G","globalThis","self","window","global","FormDataCtor","FormData","undefined","isURLSearchParams","_map2","_slicedToArray","map","isReadableStream","isRequest","isResponse","isHeaders","forEach","obj","i","l","_ref$allOwnKeys","length","allOwnKeys","key","keys","getOwnPropertyNames","len","findKey","_key","_global","isContextDefined","context","TypedArray","isTypedArray","Uint8Array","isHTMLForm","hasOwnProperty","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","setImmediateSupported","postMessageSupported","token","callbacks","isAsyncFn","_setImmediate","setImmediate","postMessage","concat","Math","random","addEventListener","_ref5","source","data","shift","cb","push","setTimeout","asap","queueMicrotask","process","nextTick","utils$1","isFormData","proto","append","kind","isArrayBufferView","ArrayBuffer","isView","buffer","isBoolean","isEmptyObject","e","isReactNativeBlob","value","uri","isReactNative","formData","getParts","isStream","pipe","merge","_ref2","this","caseless","skipUndefined","result","assignValue","targetKey","extend","a","b","defineProperty","writable","enumerable","configurable","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","forEachEntry","_iterator","next","done","pair","matchAll","regExp","matches","exec","hasOwnProp","freezeMethods","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","toUpperCase","noop","toFiniteNumber","defaultValue","Number","isFinite","isSpecCompliantForm","toJSONObject","stack","visit","target","reducedValue","isThenable","then","isIterable","AxiosError","_Error","message","code","config","request","response","_this","_classCallCheck","_callSuper","isAxiosError","status","_inherits","_createClass","description","number","fileName","lineNumber","columnNumber","utils","error","customProps","axiosError","cause","_wrapNativeSuper","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","ERR_FORM_DATA_DEPTH_EXCEEDED","isVisitable","removeBrackets","renderKey","path","dots","join","predicates","test","toFormData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","_Blob","Blob","maxDepth","useBlob","convertValue","toISOString","Buffer","from","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","depth","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","serializedParams","_encode","_options","serialize","serializeFn","hashmarkIndex","encoder","InterceptorManager","handlers","fulfilled","rejected","synchronous","runWhen","id","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","legacyInterceptorReqResOrdering","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","_navigator","navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","location","href","platform","_objectSpread","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","own","defaults","transitional","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","helpers","isNode","toURLEncodedForm","env","_FormData","rawValue","parser","parse","stringifySafely","transformResponse","responseType","JSONRequested","strictJSONParsing","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","ignoreDuplicateOf","$internals","INVALID_HEADER_VALUE_CHARS_RE","normalizeHeader","header","normalizeValue","start","end","trimSPorHTAB","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","substring","parseHeaders","dest","_step","_createForOfIteratorHelper","s","n","entry","_toConsumableArray","err","f","tokens","tokensRE","parseTokens","matcher","deleted","deleteHeader","format","normalized","w","char","formatHeader","_this$constructor","_len","targets","asStrings","toJSON","_ref","get","first","computed","_len2","_key2","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","transformData","fns","normalize","isCancel","__CANCEL__","accessor","_ref3","mapped","headerValue","CanceledError","_AxiosError","settle","resolve","reject","floor","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","samplesCount","min","firstSampleTS","bytes","timestamps","head","tail","chunkLength","now","Date","startedAt","bytesCount","passed","round","speedometer","lastArgs","timer","timestamp","threshold","invoke","args","clearTimeout","throttle","rawLoaded","loaded","total","lengthComputable","progressBytes","max","rate","_defineProperty","progress","estimated","event","progressEventDecorator","throttled","asyncDecorator","isURLSameOrigin","isMSIE","URL","protocol","host","port","userAgent","cookies","write","expires","domain","secure","sameSite","cookie","toUTCString","read","RegExp","decodeURIComponent","remove","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","allowedSocketPaths","responseEncoding","configValue","resolveConfig","newConfig","auth","btoa","username","password","unescape","getHeaders","formHeaders","allowedHeaders","includes","xsrfValue","xhrAdapter","XMLHttpRequest","Promise","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","_config","requestData","requestHeaders","unsubscribe","signal","removeEventListener","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","open","onreadystatechange","readyState","responseURL","onabort","onerror","msg","ontimeout","timeoutErrorMessage","setRequestHeader","_progressEventReducer2","upload","_progressEventReducer4","cancel","abort","subscribe","aborted","send","composeSignals","signals","Boolean","controller","AbortController","reason","streamChunk","_regenerator","chunk","chunkSize","pos","_context","byteLength","readBytes","_wrapAsyncGenerator","_callee","iterable","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_t","_context2","p","_asyncIterator","readStream","_awaitAsyncGenerator","v","d","_regeneratorValues","_asyncGeneratorDelegate","_x","_x2","_callee2","stream","reader","_yield$_awaitAsyncGen","_context3","asyncIterator","getReader","_x3","trackStream","onProgress","onFinish","_onFinish","ReadableStream","pull","_asyncToGenerator","_callee3","_yield$iterator$next","_done","loadedBytes","_t2","_context4","close","enqueue","highWaterMark","globalFetchAPI","Request","Response","_utils$global","TextEncoder","factory","_env","envFetch","fetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","arrayBuffer","supportsRequestStream","duplexAccessed","body","duplex","hasContentType","has","supportsResponseStream","resolvers","res","getBodyLength","_request","size","resolveBodyLength","_ref4","getContentLength","_x4","_callee4","_resolveConfig","_resolveConfig$withCr","fetchOptions","_fetch","composedSignal","requestContentLength","contentTypeHeader","_progressEventDecorat","_progressEventDecorat2","flush","isCredentialsSupported","resolvedOptions","isStreamResponse","responseContentLength","_ref6","_ref7","_onProgress","_flush","responseData","_t3","_t4","_t5","toAbortSignal","credentials","_x5","seedCache","Map","getFetch","seed","seeds","knownAdapters","http","xhr","fetchAdapter","renderReason","isResolvedHandle","adapters","getAdapter","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","console","warn","spelling","correctSpelling","assertOptions","schema","allowUnknown","Axios","instanceConfig","interceptors","_request2","configOrUrl","dummy","firstNewlineIndex","secondNewlineIndex","stackWithoutTwoTopLines","captureStackTrace","baseUrl","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","promise","responseInterceptorChain","chain","onFulfilled","onRejected","generateHTTPMethod","isForm","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","WebServerIsDown","ConnectionTimedOut","OriginIsUnreachable","TimeoutOccurred","SslHandshakeFailed","InvalidSslCertificate","axios","createInstance","defaultConfig","instance","Cancel","all","promises","spread","callback","payload","formToJSON"],"mappings":";;;ymLASe,SAASA,EAAKC,EAAIC,GAC/B,OAAO,WACL,OAAOD,EAAGE,MAAMD,EAASE,UAC3B,CACF,mSCPA,IAIiBC,EAJTC,EAAaC,OAAOC,UAApBF,SACAG,EAAmBF,OAAnBE,eACAC,EAA0BC,OAA1BD,SAAUE,EAAgBD,OAAhBC,YAEZC,GAAWR,EAGdE,OAAOO,OAAO,MAHU,SAACC,GAC1B,IAAMC,EAAMV,EAASW,KAAKF,GAC1B,OAAOV,EAAMW,KAASX,EAAMW,GAAOA,EAAIE,MAAM,MAAOC,cACtD,GAEMC,EAAa,SAACC,GAElB,OADAA,EAAOA,EAAKF,cACL,SAACJ,GAAK,OAAKF,EAAOE,KAAWM,CAAI,CAC1C,EAEMC,EAAa,SAACD,GAAI,OAAK,SAACN,GAAK,OAAKQ,EAAOR,KAAUM,CAAI,CAAA,EASrDG,EAAYC,MAAZD,QASFE,EAAcJ,EAAW,aAS/B,SAASK,EAASC,GAChB,OACU,OAARA,IACCF,EAAYE,IACO,OAApBA,EAAIC,cACHH,EAAYE,EAAIC,cACjBC,EAAWF,EAAIC,YAAYF,WAC3BC,EAAIC,YAAYF,SAASC,EAE7B,CASA,IAAMG,EAAgBX,EAAW,eA0BjC,IAAMY,EAAWV,EAAW,UAQtBQ,EAAaR,EAAW,YASxBW,EAAWX,EAAW,UAStBY,EAAW,SAACnB,GAAK,OAAe,OAAVA,GAAmC,WAAjBQ,EAAOR,EAAkB,EAiBjEoB,EAAgB,SAACP,GACrB,GAAoB,WAAhBf,EAAOe,GACT,OAAO,EAGT,IAAMpB,EAAYC,EAAemB,GACjC,QACiB,OAAdpB,GACCA,IAAcD,OAAOC,WACgB,OAArCD,OAAOE,eAAeD,IACtBI,KAAegB,GACflB,KAAYkB,EAElB,EA8BMQ,EAAShB,EAAW,QASpBiB,EAASjB,EAAW,QAkCpBkB,EAASlB,EAAW,QASpBmB,EAAanB,EAAW,YA0B9B,IAAMoB,EAPsB,oBAAfC,WAAmCA,WAC1B,oBAATC,KAA6BA,KAClB,oBAAXC,OAA+BA,OACpB,oBAAXC,OAA+BA,OACnC,CAAA,EAIHC,OAAqC,IAAfL,EAAEM,SAA2BN,EAAEM,cAAWC,EAsBhEC,GAAoB5B,EAAW,mBAOpB6B,GAAAC,EAL4C,CAC3D,iBACA,UACA,WACA,WACAC,IAAI/B,GAAW,GALVgC,GAAgBH,GAAA,GAAEI,GAASJ,GAAA,GAAEK,GAAUL,GAAA,GAAEM,GAASN,GAAA,GAiCzD,SAASO,GAAQC,EAAKxD,GAAiC,IAMjDyD,EACAC,EAP+CC,GAAExD,UAAAyD,OAAA,QAAAd,IAAA3C,UAAA,GAAAA,UAAA,GAAJ,CAAA,GAAvB0D,WAAAA,WAAUF,GAAQA,EAE5C,GAAIH,QAaJ,GALmB,WAAflC,EAAOkC,KAETA,EAAM,CAACA,IAGLjC,EAAQiC,GAEV,IAAKC,EAAI,EAAGC,EAAIF,EAAII,OAAQH,EAAIC,EAAGD,IACjCzD,EAAGgB,KAAK,KAAMwC,EAAIC,GAAIA,EAAGD,OAEtB,CAEL,GAAI9B,EAAS8B,GACX,OAIF,IAEIM,EAFEC,EAAOF,EAAavD,OAAO0D,oBAAoBR,GAAOlD,OAAOyD,KAAKP,GAClES,EAAMF,EAAKH,OAGjB,IAAKH,EAAI,EAAGA,EAAIQ,EAAKR,IACnBK,EAAMC,EAAKN,GACXzD,EAAGgB,KAAK,KAAMwC,EAAIM,GAAMA,EAAKN,EAEjC,CACF,CAUA,SAASU,GAAQV,EAAKM,GACpB,GAAIpC,EAAS8B,GACX,OAAO,KAGTM,EAAMA,EAAI5C,cAIV,IAHA,IAEIiD,EAFEJ,EAAOzD,OAAOyD,KAAKP,GACrBC,EAAIM,EAAKH,OAENH,KAAM,GAEX,GAAIK,KADJK,EAAOJ,EAAKN,IACKvC,cACf,OAAOiD,EAGX,OAAO,IACT,CAEA,IAAMC,GAEsB,oBAAf5B,WAAmCA,WACvB,oBAATC,KAAuBA,KAAyB,oBAAXC,OAAyBA,OAASC,OAGjF0B,GAAmB,SAACC,GAAO,OAAM7C,EAAY6C,IAAYA,IAAYF,EAAO,EA0DlF,IAgJuBG,GAAjBC,IAAiBD,GAKE,oBAAfE,YAA8BjE,EAAeiE,YAH9C,SAAC3D,GACN,OAAOyD,IAAczD,aAAiByD,EACxC,GA4CIG,GAAavD,EAAW,mBASxBwD,GACJ,WAAA,IAAGA,EAGHrE,OAAOC,UAHJoE,eAAc,OACjB,SAACnB,EAAKoB,GAAI,OACRD,EAAe3D,KAAKwC,EAAKoB,EAAK,CAAA,CAFhC,GAYIC,GAAW1D,EAAW,UAEtB2D,GAAoB,SAACtB,EAAKuB,GAC9B,IAAMC,EAAc1E,OAAO2E,0BAA0BzB,GAC/C0B,EAAqB,CAAA,EAE3B3B,GAAQyB,EAAa,SAACG,EAAYC,GAChC,IAAIC,GAC2C,KAA1CA,EAAMN,EAAQI,EAAYC,EAAM5B,MACnC0B,EAAmBE,GAAQC,GAAOF,EAEtC,GAEA7E,OAAOgF,iBAAiB9B,EAAK0B,EAC/B,EAmFA,IAkEwBK,GAAuBC,GAMvCC,GAAOC,GA/BTC,GAAYxE,EAAW,iBAyBvByE,IAAkBL,GAuBG,mBAAjBM,aAvBqCL,GAuBR3D,EAAWuC,GAAQ0B,aAtBpDP,GACKM,aAGFL,IACDC,GAeD,SAAAM,OAAWC,KAAKC,UAfRP,GAeoB,GAd3BtB,GAAQ8B,iBACN,UACA,SAAAC,GAAsB,IAAnBC,EAAMD,EAANC,OAAQC,EAAIF,EAAJE,KACLD,IAAWhC,IAAWiC,IAASZ,IACjCC,GAAU9B,QAAU8B,GAAUY,OAAVZ,EAExB,GACA,GAGK,SAACa,GACNb,GAAUc,KAAKD,GACfnC,GAAQ0B,YAAYL,GAAO,IAC7B,GAEF,SAACc,GAAE,OAAKE,WAAWF,EAAG,GAStBG,GACsB,oBAAnBC,eACHA,eAAe5G,KAAKqE,IACA,oBAAZwC,SAA2BA,QAAQC,UAAajB,GAM9DkB,GAAe,CACbvF,QAAAA,EACAO,cAAAA,EACAJ,SAAAA,EACAqF,WA5lBiB,SAACjG,GAClB,IAAKA,EAAO,OAAO,EACnB,GAAI8B,GAAgB9B,aAAiB8B,EAAc,OAAO,EAE1D,IAAMoE,EAAQxG,EAAeM,GAC7B,IAAKkG,GAASA,IAAU1G,OAAOC,UAAW,OAAO,EACjD,IAAKsB,EAAWf,EAAMmG,QAAS,OAAO,EACtC,IAAMC,EAAOtG,EAAOE,GACpB,MAAgB,aAAToG,GAEK,WAATA,GAAqBrF,EAAWf,EAAMT,WAAkC,sBAArBS,EAAMT,UAC9D,EAklBE8G,kBArxBF,SAA2BxF,GAOzB,MAL2B,oBAAhByF,aAA+BA,YAAYC,OAC3CD,YAAYC,OAAO1F,GAEnBA,GAAOA,EAAI2F,QAAUxF,EAAcH,EAAI2F,OAGpD,EA8wBEvF,SAAAA,EACAC,SAAAA,EACAuF,UAruBgB,SAACzG,GAAK,OAAe,IAAVA,IAA4B,IAAVA,CAAe,EAsuB5DmB,SAAAA,EACAC,cAAAA,EACAsF,cAzsBoB,SAAC7F,GAErB,IAAKM,EAASN,IAAQD,EAASC,GAC7B,OAAO,EAGT,IACE,OAAmC,IAA5BrB,OAAOyD,KAAKpC,GAAKiC,QAAgBtD,OAAOE,eAAemB,KAASrB,OAAOC,SAChF,CAAE,MAAOkH,GAEP,OAAO,CACT,CACF,EA8rBEtE,iBAAAA,GACAC,UAAAA,GACAC,WAAAA,GACAC,UAAAA,GACA7B,YAAAA,EACAU,OAAAA,EACAC,OAAAA,EACAsF,kBAtqBwB,SAACC,GACzB,SAAUA,QAA8B,IAAdA,EAAMC,IAClC,EAqqBEC,cA3pBoB,SAACC,GAAQ,OAAKA,QAAyC,IAAtBA,EAASC,QAAwB,EA4pBtF1F,OAAAA,EACAwC,SAAAA,GACAhD,WAAAA,EACAmG,SApoBe,SAACrG,GAAG,OAAKM,EAASN,IAAQE,EAAWF,EAAIsG,KAAK,EAqoB7DlF,kBAAAA,GACAyB,aAAAA,GACAlC,WAAAA,EACAiB,QAAAA,GACA2E,MApeF,SAASA,IAqBP,IApBA,IAAAC,EAAqC9D,GAAiB+D,OAASA,MAAS,CAAA,EAAhEC,EAAQF,EAARE,SAAUC,EAAaH,EAAbG,cACZC,EAAS,CAAA,EACTC,EAAc,SAAC7G,EAAKmC,GAExB,GAAY,cAARA,GAA+B,gBAARA,GAAiC,cAARA,EAApD,CAIA,IAAM2E,EAAaJ,GAAYnE,GAAQqE,EAAQzE,IAASA,EACpD5B,EAAcqG,EAAOE,KAAevG,EAAcP,GACpD4G,EAAOE,GAAaP,EAAMK,EAAOE,GAAY9G,GACpCO,EAAcP,GACvB4G,EAAOE,GAAaP,EAAM,CAAA,EAAIvG,GACrBJ,EAAQI,GACjB4G,EAAOE,GAAa9G,EAAIV,QACdqH,GAAkB7G,EAAYE,KACxC4G,EAAOE,GAAa9G,EAVtB,CAYF,EAES8B,EAAI,EAAGC,EAAIvD,UAAUyD,OAAQH,EAAIC,EAAGD,IAC3CtD,UAAUsD,IAAMF,GAAQpD,UAAUsD,GAAI+E,GAExC,OAAOD,CACT,EA4cEG,OA/ba,SAACC,EAAGC,EAAG3I,GAsBpB,OArBAsD,GACEqF,EACA,SAACjH,EAAKmC,GACA7D,GAAW4B,EAAWF,GACxBrB,OAAOuI,eAAeF,EAAG7E,EAAK,CAC5B6D,MAAO5H,EAAK4B,EAAK1B,GACjB6I,UAAU,EACVC,YAAY,EACZC,cAAc,IAGhB1I,OAAOuI,eAAeF,EAAG7E,EAAK,CAC5B6D,MAAOhG,EACPmH,UAAU,EACVC,YAAY,EACZC,cAAc,GAGpB,EACA,CAAEnF,YApBiD1D,UAAAyD,OAAA,QAAAd,IAAA3C,UAAA,GAAAA,UAAA,GAAP,CAAA,GAAf0D,aAsBxB8E,CACT,EAyaEM,KAnlBW,SAAClI,GACZ,OAAOA,EAAIkI,KAAOlI,EAAIkI,OAASlI,EAAImI,QAAQ,qCAAsC,GACnF,EAklBEC,SAjae,SAACC,GAIhB,OAH8B,QAA1BA,EAAQC,WAAW,KACrBD,EAAUA,EAAQnI,MAAM,IAEnBmI,CACT,EA6ZEE,SAlZe,SAAC1H,EAAa2H,EAAkBC,EAAOxE,GACtDpD,EAAYrB,UAAYD,OAAOO,OAAO0I,EAAiBhJ,UAAWyE,GAClE1E,OAAOuI,eAAejH,EAAYrB,UAAW,cAAe,CAC1DoH,MAAO/F,EACPkH,UAAU,EACVC,YAAY,EACZC,cAAc,IAEhB1I,OAAOuI,eAAejH,EAAa,QAAS,CAC1C+F,MAAO4B,EAAiBhJ,YAE1BiJ,GAASlJ,OAAOmJ,OAAO7H,EAAYrB,UAAWiJ,EAChD,EAuYEE,aA5XmB,SAACC,EAAWC,EAASC,EAAQC,GAChD,IAAIN,EACA/F,EACAmB,EACEmF,EAAS,CAAA,EAIf,GAFAH,EAAUA,GAAW,CAAA,EAEJ,MAAbD,EAAmB,OAAOC,EAE9B,EAAG,CAGD,IADAnG,GADA+F,EAAQlJ,OAAO0D,oBAAoB2F,IACzB/F,OACHH,KAAM,GACXmB,EAAO4E,EAAM/F,GACPqG,IAAcA,EAAWlF,EAAM+E,EAAWC,IAAcG,EAAOnF,KACnEgF,EAAQhF,GAAQ+E,EAAU/E,GAC1BmF,EAAOnF,IAAQ,GAGnB+E,GAAuB,IAAXE,GAAoBrJ,EAAemJ,EACjD,OAASA,KAAeE,GAAUA,EAAOF,EAAWC,KAAaD,IAAcrJ,OAAOC,WAEtF,OAAOqJ,CACT,EAqWEhJ,OAAAA,EACAO,WAAAA,EACA6I,SA5Ve,SAACjJ,EAAKkJ,EAAcC,GACnCnJ,EAAMoJ,OAAOpJ,SACI+B,IAAboH,GAA0BA,EAAWnJ,EAAI6C,UAC3CsG,EAAWnJ,EAAI6C,QAEjBsG,GAAYD,EAAarG,OACzB,IAAMwG,EAAYrJ,EAAIsJ,QAAQJ,EAAcC,GAC5C,WAAOE,GAAoBA,IAAcF,CAC3C,EAqVEI,QA5Uc,SAACxJ,GACf,IAAKA,EAAO,OAAO,KACnB,GAAIS,EAAQT,GAAQ,OAAOA,EAC3B,IAAI2C,EAAI3C,EAAM8C,OACd,IAAK5B,EAASyB,GAAI,OAAO,KAEzB,IADA,IAAM8G,EAAM,IAAI/I,MAAMiC,GACfA,KAAM,GACX8G,EAAI9G,GAAK3C,EAAM2C,GAEjB,OAAO8G,CACT,EAmUEC,aAzSmB,SAAChH,EAAKxD,GAOzB,IANA,IAIIuI,EAFEkC,GAFYjH,GAAOA,EAAI/C,IAEDO,KAAKwC,IAIzB+E,EAASkC,EAAUC,UAAYnC,EAAOoC,MAAM,CAClD,IAAMC,EAAOrC,EAAOZ,MACpB3H,EAAGgB,KAAKwC,EAAKoH,EAAK,GAAIA,EAAK,GAC7B,CACF,EA+REC,SArRe,SAACC,EAAQ/J,GAIxB,IAHA,IAAIgK,EACER,EAAM,GAE4B,QAAhCQ,EAAUD,EAAOE,KAAKjK,KAC5BwJ,EAAI/D,KAAKuE,GAGX,OAAOR,CACT,EA6QE7F,WAAAA,GACAC,eAAAA,GACAsG,WAAYtG,GACZG,kBAAAA,GACAoG,cAnOoB,SAAC1H,GACrBsB,GAAkBtB,EAAK,SAAC2B,EAAYC,GAElC,GAAIvD,EAAW2B,SAAQ,CAAC,YAAa,SAAU,UAAU6G,QAAQjF,GAC/D,OAAO,EAGT,IAAMuC,EAAQnE,EAAI4B,GAEbvD,EAAW8F,KAEhBxC,EAAW4D,YAAa,EAEpB,aAAc5D,EAChBA,EAAW2D,UAAW,EAInB3D,EAAWgG,MACdhG,EAAWgG,IAAM,WACf,MAAMC,MAAM,qCAAuChG,EAAO,IAC5D,GAEJ,EACF,EA4MEiG,YAlMkB,SAACC,EAAeC,GAClC,IAAM/H,EAAM,CAAA,EAENgI,EAAS,SAACjB,GACdA,EAAIhH,QAAQ,SAACoE,GACXnE,EAAImE,IAAS,CACf,EACF,EAIA,OAFApG,EAAQ+J,GAAiBE,EAAOF,GAAiBE,EAAOrB,OAAOmB,GAAeG,MAAMF,IAE7E/H,CACT,EAuLEkI,YA9QkB,SAAC3K,GACnB,OAAOA,EAAIG,cAAcgI,QAAQ,wBAAyB,SAAkByC,EAAGC,EAAIC,GACjF,OAAOD,EAAGE,cAAgBD,CAC5B,EACF,EA2QEE,KAtLW,WAAO,EAuLlBC,eArLqB,SAACrE,EAAOsE,GAC7B,OAAgB,MAATtE,GAAiBuE,OAAOC,SAAUxE,GAASA,GAAUA,EAAQsE,CACtE,EAoLE/H,QAAAA,GACAvB,OAAQyB,GACRC,iBAAAA,GACA+H,oBA9KF,SAA6BtL,GAC3B,SACEA,GACAe,EAAWf,EAAMmG,SACM,aAAvBnG,EAAMH,IACNG,EAAML,GAEV,EAwKE4L,aAhKmB,SAAC7I,GACpB,IAAM8I,EAAQ,IAAI9K,MAAM,IAElB+K,EAAQ,SAACnG,EAAQ3C,GACrB,GAAIxB,EAASmE,GAAS,CACpB,GAAIkG,EAAMjC,QAAQjE,IAAW,EAC3B,OAIF,GAAI1E,EAAS0E,GACX,OAAOA,EAGT,KAAM,WAAYA,GAAS,CACzBkG,EAAM7I,GAAK2C,EACX,IAAMoG,EAASjL,EAAQ6E,GAAU,GAAK,CAAA,EAStC,OAPA7C,GAAQ6C,EAAQ,SAACuB,EAAO7D,GACtB,IAAM2I,EAAeF,EAAM5E,EAAOlE,EAAI,IACrChC,EAAYgL,KAAkBD,EAAO1I,GAAO2I,EAC/C,GAEAH,EAAM7I,QAAKX,EAEJ0J,CACT,CACF,CAEA,OAAOpG,CACT,EAEA,OAAOmG,EAAM/I,EAAK,EACpB,EAgIEmC,UAAAA,GACA+G,WAjHiB,SAAC5L,GAAK,OACvBA,IACCmB,EAASnB,IAAUe,EAAWf,KAC/Be,EAAWf,EAAM6L,OACjB9K,EAAWf,EAAK,MAAO,EA8GvB+E,aAAcD,GACdc,KAAAA,GACAkG,WA7DiB,SAAC9L,GAAK,OAAc,MAATA,GAAiBe,EAAWf,EAAML,GAAU,GCp1BpEoM,YAAUC,GA0Bd,SAAAD,EAAYE,EAASC,EAAMC,EAAQC,EAASC,GAAU,IAAAC,EAqBnD,OArBmDC,OAAAR,GACpDO,EAAAE,EAAAlF,KAAAyE,GAAME,IAKNzM,OAAOuI,eAAcuE,EAAO,UAAW,CACrCzF,MAAOoF,EACPhE,YAAY,EACZD,UAAU,EACVE,cAAc,IAGhBoE,EAAKhI,KAAO,aACZgI,EAAKG,cAAe,EACpBP,IAASI,EAAKJ,KAAOA,GACrBC,IAAWG,EAAKH,OAASA,GACzBC,IAAYE,EAAKF,QAAUA,GACvBC,IACFC,EAAKD,SAAWA,EAChBC,EAAKI,OAASL,EAASK,QACxBJ,CACH,CAAC,OAAAK,EAAAZ,EAAAC,GAAAY,EAAAb,EAAA,CAAA,CAAA/I,IAAA,SAAA6D,MAED,WACE,MAAO,CAELoF,QAAS3E,KAAK2E,QACd3H,KAAMgD,KAAKhD,KAEXuI,YAAavF,KAAKuF,YAClBC,OAAQxF,KAAKwF,OAEbC,SAAUzF,KAAKyF,SACfC,WAAY1F,KAAK0F,WACjBC,aAAc3F,KAAK2F,aACnBzB,MAAOlE,KAAKkE,MAEZW,OAAQe,GAAM3B,aAAajE,KAAK6E,QAChCD,KAAM5E,KAAK4E,KACXQ,OAAQpF,KAAKoF,OAEjB,IAAC,CAAA,CAAA1J,IAAA,OAAA6D,MAnED,SAAYsG,EAAOjB,EAAMC,EAAQC,EAASC,EAAUe,GAClD,IAAMC,EAAa,IAAItB,EAAWoB,EAAMlB,QAASC,GAAQiB,EAAMjB,KAAMC,EAAQC,EAASC,GAUtF,OATAgB,EAAWC,MAAQH,EACnBE,EAAW/I,KAAO6I,EAAM7I,KAGJ,MAAhB6I,EAAMT,QAAuC,MAArBW,EAAWX,SACrCW,EAAWX,OAASS,EAAMT,QAG5BU,GAAe5N,OAAOmJ,OAAO0E,EAAYD,GAClCC,CACT,IAAC,EAAAE,EAbsBjD,QAwEzByB,GAAWyB,qBAAuB,uBAClCzB,GAAW0B,eAAiB,iBAC5B1B,GAAW2B,aAAe,eAC1B3B,GAAW4B,UAAY,YACvB5B,GAAW6B,YAAc,cACzB7B,GAAW8B,0BAA4B,4BACvC9B,GAAW+B,eAAiB,iBAC5B/B,GAAWgC,iBAAmB,mBAC9BhC,GAAWiC,gBAAkB,kBAC7BjC,GAAWkC,aAAe,eAC1BlC,GAAWmC,gBAAkB,kBAC7BnC,GAAWoC,gBAAkB,kBAC7BpC,GAAWqC,6BAA+B,+BC1E1C,SAASC,GAAYrO,GACnB,OAAOkN,GAAM9L,cAAcpB,IAAUkN,GAAMzM,QAAQT,EACrD,CASA,SAASsO,GAAetL,GACtB,OAAOkK,GAAMhE,SAASlG,EAAK,MAAQA,EAAI7C,MAAM,GAAG,GAAM6C,CACxD,CAWA,SAASuL,GAAUC,EAAMxL,EAAKyL,GAC5B,OAAKD,EACEA,EACJvJ,OAAOjC,GACPZ,IAAI,SAAcuC,EAAOhC,GAGxB,OADAgC,EAAQ2J,GAAe3J,IACf8J,GAAQ9L,EAAI,IAAMgC,EAAQ,IAAMA,CAC1C,GACC+J,KAAKD,EAAO,IAAM,IARHzL,CASpB,CAaA,IAAM2L,GAAazB,GAAMtE,aAAasE,GAAO,CAAA,EAAI,KAAM,SAAgBpJ,GACrE,MAAO,WAAW8K,KAAK9K,EACzB,GAyBA,SAAS+K,GAAWnM,EAAKsE,EAAU8H,GACjC,IAAK5B,GAAM/L,SAASuB,GAClB,MAAM,IAAIqM,UAAU,4BAItB/H,EAAWA,GAAY,IAAA,SAiBvB,IAAMgI,GAdNF,EAAU5B,GAAMtE,aACdkG,EACA,CACEE,YAAY,EACZP,MAAM,EACNQ,SAAS,IAEX,EACA,SAAiBC,EAAQ5J,GAEvB,OAAQ4H,GAAMvM,YAAY2E,EAAO4J,GACnC,IAGyBF,WAErBG,EAAUL,EAAQK,SAAWC,EAC7BX,EAAOK,EAAQL,KACfQ,EAAUH,EAAQG,QAClBI,EAAQP,EAAQQ,MAAyB,oBAATA,MAAwBA,KACxDC,OAAgCvN,IAArB8M,EAAQS,SAAyB,IAAMT,EAAQS,SAC1DC,EAAUH,GAASnC,GAAM5B,oBAAoBtE,GAEnD,IAAKkG,GAAMnM,WAAWoO,GACpB,MAAM,IAAIJ,UAAU,8BAGtB,SAASU,EAAa5I,GACpB,GAAc,OAAVA,EAAgB,MAAO,GAE3B,GAAIqG,GAAM7L,OAAOwF,GACf,OAAOA,EAAM6I,cAGf,GAAIxC,GAAMzG,UAAUI,GAClB,OAAOA,EAAMtH,WAGf,IAAKiQ,GAAWtC,GAAM3L,OAAOsF,GAC3B,MAAM,IAAIkF,GAAW,gDAGvB,OAAImB,GAAMlM,cAAc6F,IAAUqG,GAAMxJ,aAAamD,GAC5C2I,GAA2B,mBAATF,KAAsB,IAAIA,KAAK,CAACzI,IAAU8I,OAAOC,KAAK/I,GAG1EA,CACT,CAYA,SAASuI,EAAevI,EAAO7D,EAAKwL,GAClC,IAAI/E,EAAM5C,EAEV,GAAIqG,GAAMnG,cAAcC,IAAakG,GAAMtG,kBAAkBC,GAE3D,OADAG,EAASb,OAAOoI,GAAUC,EAAMxL,EAAKyL,GAAOgB,EAAa5I,KAClD,EAGT,GAAIA,IAAU2H,GAAyB,WAAjBhO,EAAOqG,GAC3B,GAAIqG,GAAMhE,SAASlG,EAAK,MAEtBA,EAAMgM,EAAahM,EAAMA,EAAI7C,MAAM,MAEnC0G,EAAQgJ,KAAKC,UAAUjJ,QAClB,GACJqG,GAAMzM,QAAQoG,IAlHvB,SAAqB4C,GACnB,OAAOyD,GAAMzM,QAAQgJ,KAASA,EAAIsG,KAAK1B,GACzC,CAgHiC2B,CAAYnJ,KACnCqG,GAAM1L,WAAWqF,IAAUqG,GAAMhE,SAASlG,EAAK,SAAWyG,EAAMyD,GAAM1D,QAAQ3C,IAiBhF,OAdA7D,EAAMsL,GAAetL,GAErByG,EAAIhH,QAAQ,SAAcwN,EAAIC,IAC1BhD,GAAMvM,YAAYsP,IAAc,OAAPA,GACzBjJ,EAASb,QAEK,IAAZ8I,EACIV,GAAU,CAACvL,GAAMkN,EAAOzB,GACZ,OAAZQ,EACEjM,EACAA,EAAM,KACZyM,EAAaQ,GAEnB,IACO,EAIX,QAAI5B,GAAYxH,KAIhBG,EAASb,OAAOoI,GAAUC,EAAMxL,EAAKyL,GAAOgB,EAAa5I,KAElD,EACT,CAEA,IAAM2E,EAAQ,GAER2E,EAAiB3Q,OAAOmJ,OAAOgG,GAAY,CAC/CS,eAAAA,EACAK,aAAAA,EACApB,YAAAA,KAgCF,IAAKnB,GAAM/L,SAASuB,GAClB,MAAM,IAAIqM,UAAU,0BAKtB,OAnCA,SAASqB,EAAMvJ,EAAO2H,GAAiB,IAAX6B,EAAKhR,UAAAyD,OAAA,QAAAd,IAAA3C,UAAA,GAAAA,UAAA,GAAG,EAClC,IAAI6N,GAAMvM,YAAYkG,GAAtB,CAEA,GAAIwJ,EAAQd,EACV,MAAM,IAAIxD,GACR,gCAAkCsE,EAAQ,wBAA0Bd,EACpExD,GAAWqC,8BAIf,IAA6B,IAAzB5C,EAAMjC,QAAQ1C,GAChB,MAAMyD,MAAM,kCAAoCkE,EAAKE,KAAK,MAG5DlD,EAAM9F,KAAKmB,GAEXqG,GAAMzK,QAAQoE,EAAO,SAAcoJ,EAAIjN,IAKtB,OAHXkK,GAAMvM,YAAYsP,IAAc,OAAPA,IAC3Bd,EAAQjP,KAAK8G,EAAUiJ,EAAI/C,GAAMjM,SAAS+B,GAAOA,EAAImF,OAASnF,EAAKwL,EAAM2B,KAGzEC,EAAMH,EAAIzB,EAAOA,EAAKvJ,OAAOjC,GAAO,CAACA,GAAMqN,EAAQ,EAEvD,GAEA7E,EAAM8E,KAzBwB,CA0BhC,CAMAF,CAAM1N,GAECsE,CACT,CC1OA,SAASuJ,GAAOtQ,GACd,IAAMuQ,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,KAET,OAAOC,mBAAmBxQ,GAAKmI,QAAQ,eAAgB,SAAkBsI,GACvE,OAAOF,EAAQE,EACjB,EACF,CAUA,SAASC,GAAqBC,EAAQ9B,GACpCxH,KAAKuJ,OAAS,GAEdD,GAAU/B,GAAW+B,EAAQtJ,KAAMwH,EACrC,CAEA,IAAMrP,GAAYkR,GAAqBlR,UC3BvC,SAAS8Q,GAAO1P,GACd,OAAO4P,mBAAmB5P,GACvBuH,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,IACrB,CAWe,SAAS0I,GAASC,EAAKH,EAAQ9B,GAC5C,IAAK8B,EACH,OAAOG,EAGT,IAUIC,EAVEC,EAAWnC,GAAWA,EAAQyB,QAAWA,GAEzCW,EAAWhE,GAAMnM,WAAW+N,GAC9B,CACEqC,UAAWrC,GAEbA,EAEEsC,EAAcF,GAAYA,EAASC,UAYzC,GAPEH,EADEI,EACiBA,EAAYR,EAAQM,GAEpBhE,GAAMjL,kBAAkB2O,GACvCA,EAAOrR,WACP,IAAIoR,GAAqBC,EAAQM,GAAU3R,SAAS0R,GAGpC,CACpB,IAAMI,EAAgBN,EAAIxH,QAAQ,MAEZ,IAAlB8H,IACFN,EAAMA,EAAI5Q,MAAM,EAAGkR,IAErBN,SAAQA,EAAIxH,QAAQ,KAAc,IAAM,KAAOyH,CACjD,CAEA,OAAOD,CACT,CDvBAtR,GAAU0G,OAAS,SAAgB7B,EAAMuC,GACvCS,KAAKuJ,OAAOnL,KAAK,CAACpB,EAAMuC,GAC1B,EAEApH,GAAUF,SAAW,SAAkB+R,GACrC,IAAML,EAAUK,EACZ,SAAUzK,GACR,OAAOyK,EAAQpR,KAAKoH,KAAMT,EAAO0J,GACnC,EACAA,GAEJ,OAAOjJ,KAAKuJ,OACTzO,IAAI,SAAc0H,GACjB,OAAOmH,EAAQnH,EAAK,IAAM,IAAMmH,EAAQnH,EAAK,GAC/C,EAAG,IACF4E,KAAK,IACV,EExDgC,IAE1B6C,GAAkB,WAKtB,OAAA3E,EAJA,SAAA2E,IAAchF,OAAAgF,GACZjK,KAAKkK,SAAW,EAClB,EAEA,CAAA,CAAAxO,IAAA,MAAA6D,MASA,SAAI4K,EAAWC,EAAU5C,GAOvB,OANAxH,KAAKkK,SAAS9L,KAAK,CACjB+L,UAAAA,EACAC,SAAAA,EACAC,cAAa7C,GAAUA,EAAQ6C,YAC/BC,QAAS9C,EAAUA,EAAQ8C,QAAU,OAEhCtK,KAAKkK,SAAS1O,OAAS,CAChC,GAEA,CAAAE,IAAA,QAAA6D,MAOA,SAAMgL,GACAvK,KAAKkK,SAASK,KAChBvK,KAAKkK,SAASK,GAAM,KAExB,GAEA,CAAA7O,IAAA,QAAA6D,MAKA,WACMS,KAAKkK,WACPlK,KAAKkK,SAAW,GAEpB,GAEA,CAAAxO,IAAA,UAAA6D,MAUA,SAAQ3H,GACNgO,GAAMzK,QAAQ6E,KAAKkK,SAAU,SAAwBM,GACzC,OAANA,GACF5S,EAAG4S,EAEP,EACF,IAAC,CAhEqB,GCFxBC,GAAe,CACbC,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,EACrBC,iCAAiC,GCFnCC,GAAe,CACbC,WAAW,EACXC,QAAS,CACPC,gBCJsC,oBAApBA,gBAAkCA,gBAAkB5B,GDKtE5O,SEN+B,oBAAbA,SAA2BA,SAAW,KFOxDuN,KGP2B,oBAATA,KAAuBA,KAAO,MHSlDkD,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,SIXhDC,GAAkC,oBAAX7Q,QAA8C,oBAAb8Q,SAExDC,GAAmC,YAAL,oBAATC,UAAS,YAAApS,EAAToS,aAA0BA,gBAAc5Q,EAmB7D6Q,GACJJ,MACEE,IAAc,CAAC,cAAe,eAAgB,MAAMpJ,QAAQoJ,GAAWG,SAAW,GAWhFC,GAE2B,oBAAtBC,mBAEPrR,gBAAgBqR,mBACc,mBAAvBrR,KAAKsR,cAIVC,GAAUT,IAAiB7Q,OAAOuR,SAASC,MAAS,mBCxC1DC,GAAAC,EAAAA,EAAA,CAAA,sIAEKD,IC2CL,SAASE,GAAevM,GACtB,SAASwM,EAAUhF,EAAM3H,EAAO6E,EAAQwE,GACtC,IAAI5L,EAAOkK,EAAK0B,KAEhB,GAAa,cAAT5L,EAAsB,OAAO,EAEjC,IAAMmP,EAAerI,OAAOC,UAAU/G,GAChCoP,EAASxD,GAAS1B,EAAK1L,OAG7B,OAFAwB,GAAQA,GAAQ4I,GAAMzM,QAAQiL,GAAUA,EAAO5I,OAASwB,EAEpDoP,GACExG,GAAM/C,WAAWuB,EAAQpH,GAC3BoH,EAAOpH,GAAQ4I,GAAMzM,QAAQiL,EAAOpH,IAChCoH,EAAOpH,GAAMW,OAAO4B,GACpB,CAAC6E,EAAOpH,GAAOuC,GAEnB6E,EAAOpH,GAAQuC,GAGT4M,IAGL/H,EAAOpH,IAAU4I,GAAM/L,SAASuK,EAAOpH,MAC1CoH,EAAOpH,GAAQ,IAGFkP,EAAUhF,EAAM3H,EAAO6E,EAAOpH,GAAO4L,IAEtChD,GAAMzM,QAAQiL,EAAOpH,MACjCoH,EAAOpH,GAjDb,SAAuBmF,GACrB,IAEI9G,EAEAK,EAJEN,EAAM,CAAA,EACNO,EAAOzD,OAAOyD,KAAKwG,GAEnBtG,EAAMF,EAAKH,OAEjB,IAAKH,EAAI,EAAGA,EAAIQ,EAAKR,IAEnBD,EADAM,EAAMC,EAAKN,IACA8G,EAAIzG,GAEjB,OAAON,CACT,CAsCqBiR,CAAcjI,EAAOpH,MAG9BmP,EACV,CAEA,GAAIvG,GAAMjH,WAAWe,IAAakG,GAAMnM,WAAWiG,EAAS4M,SAAU,CACpE,IAAMlR,EAAM,CAAA,EAMZ,OAJAwK,GAAMxD,aAAa1C,EAAU,SAAC1C,EAAMuC,GAClC2M,EA5EN,SAAuBlP,GAKrB,OAAO4I,GAAMnD,SAAS,gBAAiBzF,GAAMlC,IAAI,SAACsO,GAChD,MAAoB,OAAbA,EAAM,GAAc,GAAKA,EAAM,IAAMA,EAAM,EACpD,EACF,CAoEgBmD,CAAcvP,GAAOuC,EAAOnE,EAAK,EAC7C,GAEOA,CACT,CAEA,OAAO,IACT,CCpFA,IAAMoR,GAAM,SAACpR,EAAKM,GAAG,OAAa,MAAPN,GAAewK,GAAM/C,WAAWzH,EAAKM,GAAON,EAAIM,QAAOhB,CAAS,EA2B3F,IAAM+R,GAAW,CACfC,aAAcjC,GAEdkC,QAAS,CAAC,MAAO,OAAQ,SAEzBC,iBAAkB,CAChB,SAA0B3O,EAAM4O,GAC9B,IAgCI3S,EAhCE4S,EAAcD,EAAQE,kBAAoB,GAC1CC,EAAqBF,EAAY7K,QAAQ,qBAAsB,EAC/DgL,EAAkBrH,GAAM/L,SAASoE,GAQvC,GANIgP,GAAmBrH,GAAMtJ,WAAW2B,KACtCA,EAAO,IAAIxD,SAASwD,IAGH2H,GAAMjH,WAAWV,GAGlC,OAAO+O,EAAqBzE,KAAKC,UAAUyD,GAAehO,IAASA,EAGrE,GACE2H,GAAMlM,cAAcuE,IACpB2H,GAAMtM,SAAS2E,IACf2H,GAAMhG,SAAS3B,IACf2H,GAAM5L,OAAOiE,IACb2H,GAAM3L,OAAOgE,IACb2H,GAAM7K,iBAAiBkD,GAEvB,OAAOA,EAET,GAAI2H,GAAM7G,kBAAkBd,GAC1B,OAAOA,EAAKiB,OAEd,GAAI0G,GAAMjL,kBAAkBsD,GAE1B,OADA4O,EAAQK,eAAe,mDAAmD,GACnEjP,EAAKhG,WAKd,GAAIgV,EAAiB,CACnB,IAAME,EAAiBX,GAAIxM,KAAM,kBACjC,GAAI8M,EAAY7K,QAAQ,sCAAuC,EAC7D,OC3EK,SAA0BhE,EAAMuJ,GAC7C,OAAOD,GAAWtJ,EAAM,IAAI8N,GAASf,QAAQC,gBAAiBe,EAAA,CAC5DnE,QAAS,SAAUtI,EAAO7D,EAAKwL,EAAMkG,GACnC,OAAIrB,GAASsB,QAAUzH,GAAMtM,SAASiG,IACpCS,KAAKnB,OAAOnD,EAAK6D,EAAMtH,SAAS,YACzB,GAGFmV,EAAQtF,eAAehQ,MAAMkI,KAAMjI,UAC5C,GACGyP,GAEP,CD+DiB8F,CAAiBrP,EAAMkP,GAAgBlV,WAGhD,IACGiC,EAAa0L,GAAM1L,WAAW+D,KAC/B6O,EAAY7K,QAAQ,0BACpB,CACA,IAAMsL,EAAMf,GAAIxM,KAAM,OAChBwN,EAAYD,GAAOA,EAAI9S,SAE7B,OAAO8M,GACLrN,EAAa,CAAE,UAAW+D,GAASA,EACnCuP,GAAa,IAAIA,EACjBL,EAEJ,CACF,CAEA,OAAIF,GAAmBD,GACrBH,EAAQK,eAAe,oBAAoB,GA9EnD,SAAyBO,EAAUC,EAAQ1D,GACzC,GAAIpE,GAAMjM,SAAS8T,GACjB,IAEE,OADCC,GAAUnF,KAAKoF,OAAOF,GAChB7H,GAAM/E,KAAK4M,EACpB,CAAE,MAAOpO,GACP,GAAe,gBAAXA,EAAErC,KACJ,MAAMqC,CAEV,CAGF,OAAQ2K,GAAWzB,KAAKC,WAAWiF,EACrC,CAkEeG,CAAgB3P,IAGlBA,CACT,GAGF4P,kBAAmB,CACjB,SAA2B5P,GACzB,IAAMyO,EAAeF,GAAIxM,KAAM,iBAAmByM,GAASC,aACrD/B,EAAoB+B,GAAgBA,EAAa/B,kBACjDmD,EAAetB,GAAIxM,KAAM,gBACzB+N,EAAiC,SAAjBD,EAEtB,GAAIlI,GAAM3K,WAAWgD,IAAS2H,GAAM7K,iBAAiBkD,GACnD,OAAOA,EAGT,GACEA,GACA2H,GAAMjM,SAASsE,KACb0M,IAAsBmD,GAAiBC,GACzC,CACA,IACMC,IADoBtB,GAAgBA,EAAahC,oBACPqD,EAEhD,IACE,OAAOxF,KAAKoF,MAAM1P,EAAMuO,GAAIxM,KAAM,gBACpC,CAAE,MAAOX,GACP,GAAI2O,EAAmB,CACrB,GAAe,gBAAX3O,EAAErC,KACJ,MAAMyH,GAAW6D,KAAKjJ,EAAGoF,GAAWgC,iBAAkBzG,KAAM,KAAMwM,GAAIxM,KAAM,aAE9E,MAAMX,CACR,CACF,CACF,CAEA,OAAOpB,CACT,GAOFgQ,QAAS,EAETC,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAkB,EAClBC,eAAe,EAEfd,IAAK,CACH9S,SAAUsR,GAASf,QAAQvQ,SAC3BuN,KAAM+D,GAASf,QAAQhD,MAGzBsG,eAAgB,SAAwBlJ,GACtC,OAAOA,GAAU,KAAOA,EAAS,GACnC,EAEAyH,QAAS,CACP0B,OAAQ,CACNC,OAAQ,oCACR,oBAAgB9T,KAKtBkL,GAAMzK,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,SAAU,SAACsT,GAChEhC,GAASI,QAAQ4B,GAAU,CAAA,CAC7B,GExKA,IAAMC,GAAoB9I,GAAM3C,YAAY,CAC1C,MACA,gBACA,iBACA,eACA,OACA,UACA,OACA,OACA,oBACA,sBACA,gBACA,WACA,eACA,sBACA,UACA,cACA,eClBI0L,GAAarW,OAAO,aAEpBsW,GAAgC,6BA6BtC,SAASC,GAAgBC,GACvB,OAAOA,GAAU/M,OAAO+M,GAAQjO,OAAO/H,aACzC,CAMA,SAASiW,GAAexP,GACtB,OAAc,IAAVA,GAA4B,MAATA,EACdA,EAGFqG,GAAMzM,QAAQoG,GAASA,EAAMzE,IAAIiU,IAxC1C,SAAsBpW,GAIpB,IAHA,IAAIqW,EAAQ,EACRC,EAAMtW,EAAI6C,OAEPwT,EAAQC,GAAK,CAClB,IAAMrK,EAAOjM,EAAIsI,WAAW+N,GAE5B,GAAa,IAATpK,GAA0B,KAATA,EACnB,MAGFoK,GAAS,CACX,CAEA,KAAOC,EAAMD,GAAO,CAClB,IAAMpK,EAAOjM,EAAIsI,WAAWgO,EAAM,GAElC,GAAa,IAATrK,GAA0B,KAATA,EACnB,MAGFqK,GAAO,CACT,CAEA,OAAiB,IAAVD,GAAeC,IAAQtW,EAAI6C,OAAS7C,EAAMA,EAAIE,MAAMmW,EAAOC,EACpE,CAOSC,CAQuEnN,OAAOxC,GAR7DuB,QAAQ8N,GAA+B,IASjE,CAgBA,SAASO,GAAiBjT,EAASqD,EAAOuP,EAAQrN,EAAQ2N,GACxD,OAAIxJ,GAAMnM,WAAWgI,GACZA,EAAO7I,KAAKoH,KAAMT,EAAOuP,IAG9BM,IACF7P,EAAQuP,GAGLlJ,GAAMjM,SAAS4F,GAEhBqG,GAAMjM,SAAS8H,IACgB,IAA1BlC,EAAM0C,QAAQR,GAGnBmE,GAAMnJ,SAASgF,GACVA,EAAO6F,KAAK/H,QADrB,OANA,EASF,CAsBC,IAEK8P,GAAY,WAGf,OAAA/J,EAFD,SAAA+J,EAAYxC,GAAS5H,OAAAoK,GACnBxC,GAAW7M,KAAK+C,IAAI8J,EACtB,EAAC,CAAA,CAAAnR,IAAA,MAAA6D,MAED,SAAIuP,EAAQQ,EAAgBC,GAC1B,IAAMlV,EAAO2F,KAEb,SAASwP,EAAUC,EAAQC,EAASC,GAClC,IAAMC,EAAUf,GAAgBa,GAEhC,IAAKE,EACH,MAAM,IAAI5M,MAAM,0CAGlB,IAAMtH,EAAMkK,GAAM9J,QAAQzB,EAAMuV,KAG7BlU,QACahB,IAAdL,EAAKqB,KACQ,IAAbiU,QACcjV,IAAbiV,IAAwC,IAAdtV,EAAKqB,MAEhCrB,EAAKqB,GAAOgU,GAAWX,GAAeU,GAE1C,CAEA,IAAMI,EAAa,SAAChD,EAAS8C,GAAQ,OACnC/J,GAAMzK,QAAQ0R,EAAS,SAAC4C,EAAQC,GAAO,OAAKF,EAAUC,EAAQC,EAASC,EAAS,EAAC,EAEnF,GAAI/J,GAAM9L,cAAcgV,IAAWA,aAAkB9O,KAAKxG,YACxDqW,EAAWf,EAAQQ,QACd,GAAI1J,GAAMjM,SAASmV,KAAYA,EAASA,EAAOjO,UA5EvB,iCAAiCyG,KA4EoBwH,EA5EXjO,QA6EvEgP,EDrGN,SAAgBC,GACd,IACIpU,EACAnC,EACA8B,EAHE0U,EAAS,CAAA,EA0Bf,OArBAD,GACEA,EAAWzM,MAAM,MAAMlI,QAAQ,SAAgB6U,GAC7C3U,EAAI2U,EAAK/N,QAAQ,KACjBvG,EAAMsU,EAAKC,UAAU,EAAG5U,GAAGwF,OAAO/H,cAClCS,EAAMyW,EAAKC,UAAU5U,EAAI,GAAGwF,QAEvBnF,GAAQqU,EAAOrU,IAAQgT,GAAkBhT,KAIlC,eAARA,EACEqU,EAAOrU,GACTqU,EAAOrU,GAAK0C,KAAK7E,GAEjBwW,EAAOrU,GAAO,CAACnC,GAGjBwW,EAAOrU,GAAOqU,EAAOrU,GAAOqU,EAAOrU,GAAO,KAAOnC,EAAMA,EAE3D,GAEKwW,CACR,CCyEgBG,CAAapB,GAASQ,QAC5B,GAAI1J,GAAM/L,SAASiV,IAAWlJ,GAAMpB,WAAWsK,GAAS,CAC7D,IACEqB,EACAzU,EACwB0U,EAHtBhV,EAAM,CAAA,EAEJiH,omBAAAgO,CACcvB,GAAM,IAA1B,IAAAzM,EAAAiO,MAAAF,EAAA/N,EAAAkO,KAAAhO,MAA4B,CAAA,IAAjBiO,EAAKJ,EAAA7Q,MACd,IAAKqG,GAAMzM,QAAQqX,GACjB,MAAM/I,UAAU,gDAGlBrM,EAAKM,EAAM8U,EAAM,KAAQL,EAAO/U,EAAIM,IAChCkK,GAAMzM,QAAQgX,MAAKxS,OAAA8S,EACbN,IAAMK,EAAM,KAChB,CAACL,EAAMK,EAAM,IACfA,EAAM,EACZ,CAAC,CAAA,MAAAE,GAAArO,EAAAhD,EAAAqR,EAAA,CAAA,QAAArO,EAAAsO,GAAA,CAEDd,EAAWzU,EAAKkU,EAClB,MACY,MAAVR,GAAkBU,EAAUF,EAAgBR,EAAQS,GAGtD,OAAOvP,IACT,GAAC,CAAAtE,IAAA,MAAA6D,MAED,SAAIuP,EAAQpB,GAGV,GAFAoB,EAASD,GAAgBC,GAEb,CACV,IAAMpT,EAAMkK,GAAM9J,QAAQkE,KAAM8O,GAEhC,GAAIpT,EAAK,CACP,IAAM6D,EAAQS,KAAKtE,GAEnB,IAAKgS,EACH,OAAOnO,EAGT,IAAe,IAAXmO,EACF,OAhIV,SAAqB/U,GAKnB,IAJA,IAEIyQ,EAFEwH,EAAS1Y,OAAOO,OAAO,MACvBoY,EAAW,mCAGTzH,EAAQyH,EAASjO,KAAKjK,IAC5BiY,EAAOxH,EAAM,IAAMA,EAAM,GAG3B,OAAOwH,CACT,CAsHiBE,CAAYvR,GAGrB,GAAIqG,GAAMnM,WAAWiU,GACnB,OAAOA,EAAO9U,KAAKoH,KAAMT,EAAO7D,GAGlC,GAAIkK,GAAMnJ,SAASiR,GACjB,OAAOA,EAAO9K,KAAKrD,GAGrB,MAAM,IAAIkI,UAAU,yCACtB,CACF,CACF,GAAC,CAAA/L,IAAA,MAAA6D,MAED,SAAIuP,EAAQiC,GAGV,GAFAjC,EAASD,GAAgBC,GAEb,CACV,IAAMpT,EAAMkK,GAAM9J,QAAQkE,KAAM8O,GAEhC,SACEpT,QACchB,IAAdsF,KAAKtE,IACHqV,IAAW5B,GAAiBnP,EAAMA,KAAKtE,GAAMA,EAAKqV,GAExD,CAEA,OAAO,CACT,GAAC,CAAArV,IAAA,SAAA6D,MAED,SAAOuP,EAAQiC,GACb,IAAM1W,EAAO2F,KACTgR,GAAU,EAEd,SAASC,EAAavB,GAGpB,GAFAA,EAAUb,GAAgBa,GAEb,CACX,IAAMhU,EAAMkK,GAAM9J,QAAQzB,EAAMqV,IAE5BhU,GAASqV,IAAW5B,GAAiB9U,EAAMA,EAAKqB,GAAMA,EAAKqV,YACtD1W,EAAKqB,GAEZsV,GAAU,EAEd,CACF,CAQA,OANIpL,GAAMzM,QAAQ2V,GAChBA,EAAO3T,QAAQ8V,GAEfA,EAAanC,GAGRkC,CACT,GAAC,CAAAtV,IAAA,QAAA6D,MAED,SAAMwR,GAKJ,IAJA,IAAMpV,EAAOzD,OAAOyD,KAAKqE,MACrB3E,EAAIM,EAAKH,OACTwV,GAAU,EAEP3V,KAAK,CACV,IAAMK,EAAMC,EAAKN,GACZ0V,IAAW5B,GAAiBnP,EAAMA,KAAKtE,GAAMA,EAAKqV,GAAS,YACvD/Q,KAAKtE,GACZsV,GAAU,EAEd,CAEA,OAAOA,CACT,GAAC,CAAAtV,IAAA,YAAA6D,MAED,SAAU2R,GACR,IAAM7W,EAAO2F,KACP6M,EAAU,CAAA,EAsBhB,OApBAjH,GAAMzK,QAAQ6E,KAAM,SAACT,EAAOuP,GAC1B,IAAMpT,EAAMkK,GAAM9J,QAAQ+Q,EAASiC,GAEnC,GAAIpT,EAGF,OAFArB,EAAKqB,GAAOqT,GAAexP,eACpBlF,EAAKyU,GAId,IAAMqC,EAAaD,EAtLzB,SAAsBpC,GACpB,OAAOA,EACJjO,OACA/H,cACAgI,QAAQ,kBAAmB,SAACsQ,EAAGC,EAAM1Y,GACpC,OAAO0Y,EAAK3N,cAAgB/K,CAC9B,EACJ,CA+KkC2Y,CAAaxC,GAAU/M,OAAO+M,GAAQjO,OAE9DsQ,IAAerC,UACVzU,EAAKyU,GAGdzU,EAAK8W,GAAcpC,GAAexP,GAElCsN,EAAQsE,IAAc,CACxB,GAEOnR,IACT,GAAC,CAAAtE,IAAA,SAAA6D,MAED,WAAmB,IAAA,IAAAgS,EAAAC,EAAAzZ,UAAAyD,OAATiW,EAAO,IAAArY,MAAAoY,GAAAzV,EAAA,EAAAA,EAAAyV,EAAAzV,IAAP0V,EAAO1V,GAAAhE,UAAAgE,GACf,OAAOwV,EAAAvR,KAAKxG,aAAYmE,OAAM7F,MAAAyZ,EAAA,CAACvR,MAAIrC,OAAK8T,GAC1C,GAAC,CAAA/V,IAAA,SAAA6D,MAED,SAAOmS,GACL,IAAMtW,EAAMlD,OAAOO,OAAO,MAQ1B,OANAmN,GAAMzK,QAAQ6E,KAAM,SAACT,EAAOuP,GACjB,MAATvP,IACY,IAAVA,IACCnE,EAAI0T,GAAU4C,GAAa9L,GAAMzM,QAAQoG,GAASA,EAAM6H,KAAK,MAAQ7H,EAC1E,GAEOnE,CACT,GAAC,CAAAM,IAEApD,OAAOD,SAAQkH,MAAhB,WACE,OAAOrH,OAAOoU,QAAQtM,KAAK2R,UAAUrZ,OAAOD,WAC9C,GAAC,CAAAqD,IAAA,WAAA6D,MAED,WACE,OAAOrH,OAAOoU,QAAQtM,KAAK2R,UACxB7W,IAAI,SAAA8W,GAAA,IAAA7R,EAAAlF,EAAA+W,EAAA,GAAe,OAAP7R,EAAA,GAAsB,KAAfA,EAAA,EAA2B,GAC9CqH,KAAK,KACV,GAAC,CAAA1L,IAAA,eAAA6D,MAED,WACE,OAAOS,KAAK6R,IAAI,eAAiB,EACnC,GAAC,CAAAnW,IAEIpD,OAAOC,YAAWsZ,IAAvB,WACE,MAAO,cACT,IAAC,CAAA,CAAAnW,IAAA,OAAA6D,MAED,SAAY7G,GACV,OAAOA,aAAiBsH,KAAOtH,EAAQ,IAAIsH,KAAKtH,EAClD,GAAC,CAAAgD,IAAA,SAAA6D,MAED,SAAcuS,GACqB,IAAjC,IAAMC,EAAW,IAAI/R,KAAK8R,GAAOE,EAAAja,UAAAyD,OADXiW,MAAOrY,MAAA4Y,EAAA,EAAAA,OAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPR,EAAOQ,EAAA,GAAAla,UAAAka,GAK7B,OAFAR,EAAQtW,QAAQ,SAACiJ,GAAM,OAAK2N,EAAShP,IAAIqB,EAAO,GAEzC2N,CACT,GAAC,CAAArW,IAAA,WAAA6D,MAED,SAAgBuP,GACd,IAOMoD,GANHlS,KAAK2O,IACN3O,KAAK2O,IACH,CACEuD,UAAW,CAAA,IAGWA,UACtB/Z,EAAY6H,KAAK7H,UAEvB,SAASga,EAAezC,GACtB,IAAME,EAAUf,GAAgBa,GAE3BwC,EAAUtC,MAvPrB,SAAwBxU,EAAK0T,GAC3B,IAAMsD,EAAexM,GAAMtC,YAAY,IAAMwL,GAE7C,CAAC,MAAO,MAAO,OAAO3T,QAAQ,SAACkX,GAC7Bna,OAAOuI,eAAerF,EAAKiX,EAAaD,EAAc,CACpD7S,MAAO,SAAU+S,EAAMC,EAAMC,GAC3B,OAAOxS,KAAKqS,GAAYzZ,KAAKoH,KAAM8O,EAAQwD,EAAMC,EAAMC,EACzD,EACA5R,cAAc,GAElB,EACF,CA6OQ6R,CAAeta,EAAWuX,GAC1BwC,EAAUtC,IAAW,EAEzB,CAIA,OAFAhK,GAAMzM,QAAQ2V,GAAUA,EAAO3T,QAAQgX,GAAkBA,EAAerD,GAEjE9O,IACT,IAAC,CAnPe,GC9FH,SAAS0S,GAAcC,EAAK5N,GACzC,IAAMF,EAAS7E,MAAQyM,GACjBvQ,EAAU6I,GAAYF,EACtBgI,EAAUwC,GAAa/G,KAAKpM,EAAQ2Q,SACtC5O,EAAO/B,EAAQ+B,KAQnB,OANA2H,GAAMzK,QAAQwX,EAAK,SAAmB/a,GACpCqG,EAAOrG,EAAGgB,KAAKiM,EAAQ5G,EAAM4O,EAAQ+F,YAAa7N,EAAWA,EAASK,YAAS1K,EACjF,GAEAmS,EAAQ+F,YAED3U,CACT,CCzBe,SAAS4U,GAAStT,GAC/B,SAAUA,IAASA,EAAMuT,WAC3B,CF8VAzD,GAAa0D,SAAS,CACpB,eACA,iBACA,SACA,kBACA,aACA,kBAIFnN,GAAMlJ,kBAAkB2S,GAAalX,UAAW,SAAA6a,EAAYtX,GAAQ,IAAjB6D,EAAKyT,EAALzT,MAC7C0T,EAASvX,EAAI,GAAGgI,cAAgBhI,EAAI7C,MAAM,GAC9C,MAAO,CACLgZ,IAAK,WAAF,OAAQtS,CAAK,EAChBwD,IAAG,SAACmQ,GACFlT,KAAKiT,GAAUC,CACjB,EAEJ,GAEAtN,GAAM9C,cAAcuM,IGpX2B,IAEzC8D,YAAaC,GAUjB,SAAAD,EAAYxO,EAASE,EAAQC,GAAS,IAAAE,EAGb,OAHaC,OAAAkO,IACpCnO,EAAAE,EAAAlF,KAAAmT,EAAA,CAAiB,MAAXxO,EAAkB,WAAaA,EAASF,GAAWkC,aAAc9B,EAAQC,KAC1E9H,KAAO,gBACZgI,EAAK8N,YAAa,EAAK9N,CACzB,CAAC,OAAAK,EAAA8N,EAAAC,GAAA9N,EAAA6N,EAAA,EAdyB1O,ICSb,SAAS4O,GAAOC,EAASC,EAAQxO,GAC9C,IAAMuJ,EAAiBvJ,EAASF,OAAOyJ,eAClCvJ,EAASK,QAAWkJ,IAAkBA,EAAevJ,EAASK,QAGjEmO,EACE,IAAI9O,GACF,mCAAqCM,EAASK,OAC9C,CAACX,GAAWiC,gBAAiBjC,GAAWgC,kBACtC7I,KAAK4V,MAAMzO,EAASK,OAAS,KAAO,GAEtCL,EAASF,OACTE,EAASD,QACTC,IAVJuO,EAAQvO,EAcZ,CC1BO,IAAM0O,GAAuB,SAACC,EAAUC,GAA+B,IAAbC,EAAI7b,UAAAyD,OAAA,QAAAd,IAAA3C,UAAA,GAAAA,UAAA,GAAG,EAClE8b,EAAgB,EACdC,ECER,SAAqBC,EAAcC,GACjCD,EAAeA,GAAgB,GAC/B,IAIIE,EAJEC,EAAQ,IAAI9a,MAAM2a,GAClBI,EAAa,IAAI/a,MAAM2a,GACzBK,EAAO,EACPC,EAAO,EAKX,OAFAL,OAActZ,IAARsZ,EAAoBA,EAAM,IAEzB,SAAcM,GACnB,IAAMC,EAAMC,KAAKD,MAEXE,EAAYN,EAAWE,GAExBJ,IACHA,EAAgBM,GAGlBL,EAAME,GAAQE,EACdH,EAAWC,GAAQG,EAKnB,IAHA,IAAIlZ,EAAIgZ,EACJK,EAAa,EAEVrZ,IAAM+Y,GACXM,GAAcR,EAAM7Y,KACpBA,GAAQ0Y,EASV,IANAK,GAAQA,EAAO,GAAKL,KAEPM,IACXA,GAAQA,EAAO,GAAKN,KAGlBQ,EAAMN,EAAgBD,GAA1B,CAIA,IAAMW,EAASF,GAAaF,EAAME,EAElC,OAAOE,EAAS/W,KAAKgX,MAAoB,IAAbF,EAAqBC,QAAUja,CAJ3D,CAKF,CACF,CD9CuBma,CAAY,GAAI,KAErC,OEFF,SAAkBjd,EAAIgc,GACpB,IAEIkB,EACAC,EAHAC,EAAY,EACZC,EAAY,IAAOrB,EAIjBsB,EAAS,SAACC,GAA2B,IAArBZ,EAAGxc,UAAAyD,eAAAd,IAAA3C,UAAA,GAAAA,UAAA,GAAGyc,KAAKD,MAC/BS,EAAYT,EACZO,EAAW,KACPC,IACFK,aAAaL,GACbA,EAAQ,MAEVnd,EAAEE,WAAA,EAAA2Y,EAAI0E,GACR,EAoBA,MAAO,CAlBW,WAEe,IAD/B,IAAMZ,EAAMC,KAAKD,MACXI,EAASJ,EAAMS,EAAUxD,EAAAzZ,UAAAyD,OAFX2Z,EAAI,IAAA/b,MAAAoY,GAAAzV,EAAA,EAAAA,EAAAyV,EAAAzV,IAAJoZ,EAAIpZ,GAAAhE,UAAAgE,GAGpB4Y,GAAUM,EACZC,EAAOC,EAAMZ,IAEbO,EAAWK,EACNJ,IACHA,EAAQ1W,WAAW,WACjB0W,EAAQ,KACRG,EAAOJ,EACT,EAAGG,EAAYN,IAGrB,EAEc,WAAH,OAASG,GAAYI,EAAOJ,EAAS,EAGlD,CFjCSO,CAAS,SAAChW,GACf,IAAMiW,EAAYjW,EAAEkW,OACdC,EAAQnW,EAAEoW,iBAAmBpW,EAAEmW,WAAQ9a,EACvC6a,EAAkB,MAATC,EAAgB5X,KAAKoW,IAAIsB,EAAWE,GAASF,EACtDI,EAAgB9X,KAAK+X,IAAI,EAAGJ,EAAS1B,GACrC+B,EAAO9B,EAAa4B,GAE1B7B,EAAgBjW,KAAK+X,IAAI9B,EAAe0B,GAExC,IAAMtX,EAAI4X,EAAA,CACRN,OAAAA,EACAC,MAAAA,EACAM,SAAUN,EAAQD,EAASC,OAAQ9a,EACnCwZ,MAAOwB,EACPE,KAAMA,QAAclb,EACpBqb,UAAWH,GAAQJ,GAASA,EAAQD,GAAUK,OAAOlb,EACrDsb,MAAO3W,EACPoW,iBAA2B,MAATD,GACjB7B,EAAmB,WAAa,UAAW,GAG9CD,EAASzV,EACX,EAAG2V,EACL,EAEaqC,GAAyB,SAACT,EAAOU,GAC5C,IAAMT,EAA4B,MAATD,EAEzB,MAAO,CACL,SAACD,GAAM,OACLW,EAAU,GAAG,CACXT,iBAAAA,EACAD,MAAAA,EACAD,OAAAA,GACA,EACJW,EAAU,GAEd,EAEaC,GACX,SAACve,GAAE,OACH,WAAA,IAAA,IAAA4Z,EAAAzZ,UAAAyD,OAAI2Z,EAAI,IAAA/b,MAAAoY,GAAAzV,EAAA,EAAAA,EAAAyV,EAAAzV,IAAJoZ,EAAIpZ,GAAAhE,UAAAgE,GAAA,OACN6J,GAAMtH,KAAK,WAAA,OAAM1G,EAAEE,WAAA,EAAIqd,EAAK,EAAC,CAAA,EGhDjCiB,GAAerK,GAASR,sBACnB,SAACK,EAAQyK,GAAM,OAAK,SAAC5M,GAGpB,OAFAA,EAAM,IAAI6M,IAAI7M,EAAKsC,GAASH,QAG1BA,EAAO2K,WAAa9M,EAAI8M,UACxB3K,EAAO4K,OAAS/M,EAAI+M,OACnBH,GAAUzK,EAAO6K,OAAShN,EAAIgN,KAEnC,CAAC,CARA,CASC,IAAIH,IAAIvK,GAASH,QACjBG,GAAST,WAAa,kBAAkBhE,KAAKyE,GAAST,UAAUoL,YAElE,WAAA,OAAM,CAAI,ECZdC,GAAe5K,GAASR,sBAEpB,CACEqL,eAAM5Z,EAAMuC,EAAOsX,EAAS3P,EAAM4P,EAAQC,EAAQC,GAChD,GAAwB,oBAAb5L,SAAX,CAEA,IAAM6L,EAAS,CAAA,GAAAtZ,OAAIX,EAAI,KAAAW,OAAIwL,mBAAmB5J,KAE1CqG,GAAMhM,SAASid,IACjBI,EAAO7Y,KAAI,WAAAT,OAAY,IAAI6W,KAAKqC,GAASK,gBAEvCtR,GAAMjM,SAASuN,IACjB+P,EAAO7Y,KAAI,QAAAT,OAASuJ,IAElBtB,GAAMjM,SAASmd,IACjBG,EAAO7Y,KAAI,UAAAT,OAAWmZ,KAET,IAAXC,GACFE,EAAO7Y,KAAK,UAEVwH,GAAMjM,SAASqd,IACjBC,EAAO7Y,KAAI,YAAAT,OAAaqZ,IAG1B5L,SAAS6L,OAASA,EAAO7P,KAAK,KApBO,CAqBvC,EAEA+P,KAAI,SAACna,GACH,GAAwB,oBAAboO,SAA0B,OAAO,KAC5C,IAAMhC,EAAQgC,SAAS6L,OAAO7N,MAAM,IAAIgO,OAAO,WAAapa,EAAO,aACnE,OAAOoM,EAAQiO,mBAAmBjO,EAAM,IAAM,IAChD,EAEAkO,OAAM,SAACta,GACLgD,KAAK4W,MAAM5Z,EAAM,GAAIwX,KAAKD,MAAQ,MAAU,IAC9C,GAGF,CACEqC,MAAK,WAAI,EACTO,KAAI,WACF,OAAO,IACT,EACAG,OAAM,WAAI,GC/BD,SAASC,GAAcC,EAASC,EAAcC,GAC3D,ICPoCjO,EDOhCkO,ICHe,iBAJiBlO,EDODgO,ICC5B,8BAA8BnQ,KAAKmC,IDA1C,OAAI+N,IAAYG,IAAuC,IAAtBD,GEPpB,SAAqBF,EAASI,GAC3C,OAAOA,EACHJ,EAAQ1W,QAAQ,SAAU,IAAM,IAAM8W,EAAY9W,QAAQ,OAAQ,IAClE0W,CACN,CFIWK,CAAYL,EAASC,GAEvBA,CACT,CGhBA,IAAMK,GAAkB,SAACpf,GAAK,OAAMA,aAAiB2W,GAAYrD,EAAA,CAAA,EAAQtT,GAAUA,CAAK,EAWzE,SAASqf,GAAYC,EAASC,GAE3CA,EAAUA,GAAW,CAAA,EAMrB,IAAMpT,EAAS3M,OAAOO,OAAO,MAQ7B,SAASyf,EAAe9T,EAAQpG,EAAQxB,EAAMyD,GAC5C,OAAI2F,GAAM9L,cAAcsK,IAAWwB,GAAM9L,cAAckE,GAC9C4H,GAAM9F,MAAMlH,KAAK,CAAEqH,SAAAA,GAAYmE,EAAQpG,GACrC4H,GAAM9L,cAAckE,GACtB4H,GAAM9F,MAAM,CAAA,EAAI9B,GACd4H,GAAMzM,QAAQ6E,GAChBA,EAAOnF,QAETmF,CACT,CAEA,SAASma,EAAoB5X,EAAGC,EAAGhE,EAAMyD,GACvC,OAAK2F,GAAMvM,YAAYmH,GAEXoF,GAAMvM,YAAYkH,QAAvB,EACE2X,OAAexd,EAAW6F,EAAG/D,EAAMyD,GAFnCiY,EAAe3X,EAAGC,EAAGhE,EAAMyD,EAItC,CAGA,SAASmY,EAAiB7X,EAAGC,GAC3B,IAAKoF,GAAMvM,YAAYmH,GACrB,OAAO0X,OAAexd,EAAW8F,EAErC,CAGA,SAAS6X,EAAiB9X,EAAGC,GAC3B,OAAKoF,GAAMvM,YAAYmH,GAEXoF,GAAMvM,YAAYkH,QAAvB,EACE2X,OAAexd,EAAW6F,GAF1B2X,OAAexd,EAAW8F,EAIrC,CAGA,SAAS8X,EAAgB/X,EAAGC,EAAGhE,GAC7B,OAAIoJ,GAAM/C,WAAWoV,EAASzb,GACrB0b,EAAe3X,EAAGC,GAChBoF,GAAM/C,WAAWmV,EAASxb,GAC5B0b,OAAexd,EAAW6F,QAD5B,CAGT,CAjDArI,OAAOuI,eAAeoE,EAAQ,iBAAkB,CAC9CtF,MAAOrH,OAAOC,UAAUoE,eACxBoE,YAAY,EACZD,UAAU,EACVE,cAAc,IA+ChB,IAAM2X,EAAW,CACf9O,IAAK2O,EACL3J,OAAQ2J,EACRna,KAAMma,EACNZ,QAASa,EACTzL,iBAAkByL,EAClBxK,kBAAmBwK,EACnBG,iBAAkBH,EAClBpK,QAASoK,EACTI,eAAgBJ,EAChBK,gBAAiBL,EACjBM,cAAeN,EACf1L,QAAS0L,EACTvK,aAAcuK,EACdnK,eAAgBmK,EAChBlK,eAAgBkK,EAChBO,iBAAkBP,EAClBQ,mBAAoBR,EACpBS,WAAYT,EACZjK,iBAAkBiK,EAClBhK,cAAegK,EACfU,eAAgBV,EAChBW,UAAWX,EACXY,UAAWZ,EACXa,WAAYb,EACZc,YAAad,EACbe,WAAYf,EACZgB,mBAAoBhB,EACpBiB,iBAAkBjB,EAClB/J,eAAgBgK,EAChBzL,QAAS,SAACtM,EAAGC,EAAGhE,GAAI,OAClB2b,EAAoBL,GAAgBvX,GAAIuX,GAAgBtX,GAAIhE,GAAM,EAAK,GAY3E,OATAoJ,GAAMzK,QAAQjD,OAAOyD,KAAIqQ,EAAAA,KAAMgM,GAAYC,IAAY,SAA4Bzb,GACjF,GAAa,cAATA,GAAiC,gBAATA,GAAmC,cAATA,EAAtD,CACA,IAAMsD,EAAQ8F,GAAM/C,WAAW0V,EAAU/b,GAAQ+b,EAAS/b,GAAQ2b,EAG5DoB,EAAczZ,EAFV8F,GAAM/C,WAAWmV,EAASxb,GAAQwb,EAAQxb,QAAQ9B,EAClDkL,GAAM/C,WAAWoV,EAASzb,GAAQyb,EAAQzb,QAAQ9B,EAC5B8B,GAC/BoJ,GAAMvM,YAAYkgB,IAAgBzZ,IAAUwY,IAAqBzT,EAAOrI,GAAQ+c,EALL,CAM9E,GAEO1U,CACT,CC/GA,ICSwB+M,GDTxB4H,GAAA,SAAgB3U,GACd,IAAM4U,EAAY1B,GAAY,CAAA,EAAIlT,GAI5B2H,EAAM,SAAC9Q,GAAG,OAAMkK,GAAM/C,WAAW4W,EAAW/d,GAAO+d,EAAU/d,QAAOhB,CAAS,EAE7EuD,EAAOuO,EAAI,QACbmM,EAAgBnM,EAAI,iBAClB2B,EAAiB3B,EAAI,kBACrB0B,EAAiB1B,EAAI,kBACvBK,EAAUL,EAAI,WACZkN,EAAOlN,EAAI,QACXgL,EAAUhL,EAAI,WACdkL,EAAoBlL,EAAI,qBACxB/C,EAAM+C,EAAI,OAuBhB,GArBAiN,EAAU5M,QAAUA,EAAUwC,GAAa/G,KAAKuE,GAEhD4M,EAAUhQ,IAAMD,GACd+N,GAAcC,EAAS/N,EAAKiO,GAC5B7S,EAAOyE,OACPzE,EAAO2T,kBAILkB,GACF7M,EAAQ9J,IACN,gBACA,SACE4W,MACGD,EAAKE,UAAY,IAChB,KACCF,EAAKG,SAAWC,SAAS3Q,mBAAmBuQ,EAAKG,WAAa,MAKrEjU,GAAMjH,WAAWV,GACnB,GAAI8N,GAASR,uBAAyBQ,GAASN,+BAC7CoB,EAAQK,oBAAexS,QAClB,GAAIkL,GAAMnM,WAAWwE,EAAK8b,YAAa,CAE5C,IAAMC,EAAc/b,EAAK8b,aAEnBE,EAAiB,CAAC,eAAgB,kBACxC/hB,OAAOoU,QAAQ0N,GAAa7e,QAAQ,SAAAyW,GAAgB,IAAA7R,EAAAlF,EAAA+W,EAAA,GAAdlW,EAAGqE,EAAA,GAAExG,EAAGwG,EAAA,GACxCka,EAAeC,SAASxe,EAAI5C,gBAC9B+T,EAAQ9J,IAAIrH,EAAKnC,EAErB,EACF,CAOF,GAAIwS,GAASR,wBACP3F,GAAMnM,WAAWkf,KACnBA,EAAgBA,EAAcc,KAOZ,IAAlBd,GACkB,MAAjBA,GAAyBvC,GAAgBqD,EAAUhQ,MAElC,CAClB,IAAM0Q,EAAYhM,GAAkBD,GAAkByI,GAAQQ,KAAKjJ,GAE/DiM,GACFtN,EAAQ9J,IAAIoL,EAAgBgM,EAEhC,CAGF,OAAOV,CACR,EE5EDW,GAFwD,oBAAnBC,gBAGnC,SAAUxV,GACR,OAAO,IAAIyV,QAAQ,SAA4BhH,EAASC,GACtD,IAIIgH,EACAC,EAAiBC,EACjBC,EAAaC,EANXC,EAAUpB,GAAc3U,GAC1BgW,EAAcD,EAAQ3c,KACpB6c,EAAiBzL,GAAa/G,KAAKsS,EAAQ/N,SAAS+F,YACpD9E,EAAuD8M,EAAvD9M,aAAc8K,EAAyCgC,EAAzChC,iBAAkBC,EAAuB+B,EAAvB/B,mBAKtC,SAAStW,IACPmY,GAAeA,IACfC,GAAiBA,IAEjBC,EAAQzB,aAAeyB,EAAQzB,YAAY4B,YAAYR,GAEvDK,EAAQI,QAAUJ,EAAQI,OAAOC,oBAAoB,QAASV,EAChE,CAEA,IAAIzV,EAAU,IAAIuV,eAOlB,SAASa,IACP,GAAKpW,EAAL,CAIA,IAAMqW,EAAkB9L,GAAa/G,KACnC,0BAA2BxD,GAAWA,EAAQsW,yBAehD/H,GACE,SAAkB9T,GAChB+T,EAAQ/T,GACRgD,GACF,EACA,SAAiBmO,GACf6C,EAAO7C,GACPnO,GACF,EAjBe,CACftE,KAJC6P,GAAiC,SAAjBA,GAA4C,SAAjBA,EAExChJ,EAAQC,SADRD,EAAQuW,aAIZjW,OAAQN,EAAQM,OAChBkW,WAAYxW,EAAQwW,WACpBzO,QAASsO,EACTtW,OAAAA,EACAC,QAAAA,IAgBFA,EAAU,IA/BV,CAgCF,CAgGA,GAxIAA,EAAQyW,KAAKX,EAAQnM,OAAO/K,cAAekX,EAAQnR,KAAK,GAGxD3E,EAAQmJ,QAAU2M,EAAQ3M,QAuCtB,cAAenJ,EAEjBA,EAAQoW,UAAYA,EAGpBpW,EAAQ0W,mBAAqB,WACtB1W,GAAkC,IAAvBA,EAAQ2W,aASH,IAAnB3W,EAAQM,QACNN,EAAQ4W,aAAwD,IAAzC5W,EAAQ4W,YAAYzZ,QAAQ,WAMvD5D,WAAW6c,EACb,EAIFpW,EAAQ6W,QAAU,WACX7W,IAILyO,EAAO,IAAI9O,GAAW,kBAAmBA,GAAW2B,aAAcvB,EAAQC,IAG1EA,EAAU,KACZ,EAGAA,EAAQ8W,QAAU,SAAqB5F,GAIrC,IAAM6F,EAAM7F,GAASA,EAAMrR,QAAUqR,EAAMrR,QAAU,gBAC/C+L,EAAM,IAAIjM,GAAWoX,EAAKpX,GAAW6B,YAAazB,EAAQC,GAEhE4L,EAAIsF,MAAQA,GAAS,KACrBzC,EAAO7C,GACP5L,EAAU,IACZ,EAGAA,EAAQgX,UAAY,WAClB,IAAIC,EAAsBnB,EAAQ3M,QAC9B,cAAgB2M,EAAQ3M,QAAU,cAClC,mBACEvB,EAAekO,EAAQlO,cAAgBjC,GACzCmQ,EAAQmB,sBACVA,EAAsBnB,EAAQmB,qBAEhCxI,EACE,IAAI9O,GACFsX,EACArP,EAAa9B,oBAAsBnG,GAAW4B,UAAY5B,GAAW2B,aACrEvB,EACAC,IAKJA,EAAU,IACZ,OAGgBpK,IAAhBmgB,GAA6BC,EAAe5N,eAAe,MAGvD,qBAAsBpI,GACxBc,GAAMzK,QAAQ2f,EAAenJ,SAAU,SAA0BpY,EAAKmC,GACpEoJ,EAAQkX,iBAAiBtgB,EAAKnC,EAChC,GAIGqM,GAAMvM,YAAYuhB,EAAQlC,mBAC7B5T,EAAQ4T,kBAAoBkC,EAAQlC,iBAIlC5K,GAAiC,SAAjBA,IAClBhJ,EAAQgJ,aAAe8M,EAAQ9M,cAI7B+K,EAAoB,CAAA,IAC6DoD,EAAAphB,EAA9C4Y,GAAqBoF,GAAoB,GAAK,GAAlF4B,EAAiBwB,EAAA,GAAEtB,EAAasB,EAAA,GACjCnX,EAAQhH,iBAAiB,WAAY2c,EACvC,CAGA,GAAI7B,GAAoB9T,EAAQoX,OAAQ,CAAA,IACiCC,EAAAthB,EAAtC4Y,GAAqBmF,GAAiB,GAAtE4B,EAAe2B,EAAA,GAAEzB,EAAWyB,EAAA,GAE7BrX,EAAQoX,OAAOpe,iBAAiB,WAAY0c,GAE5C1V,EAAQoX,OAAOpe,iBAAiB,UAAW4c,EAC7C,EAEIE,EAAQzB,aAAeyB,EAAQI,UAGjCT,EAAa,SAAC6B,GACPtX,IAGLyO,GAAQ6I,GAAUA,EAAOpjB,KAAO,IAAIma,GAAc,KAAMtO,EAAQC,GAAWsX,GAC3EtX,EAAQuX,QACRvX,EAAU,KACZ,EAEA8V,EAAQzB,aAAeyB,EAAQzB,YAAYmD,UAAU/B,GACjDK,EAAQI,SACVJ,EAAQI,OAAOuB,QACXhC,IACAK,EAAQI,OAAOld,iBAAiB,QAASyc,KAIjD,IC3MgC9Q,EAC9BL,ED0MImN,GC3M0B9M,ED2MDmR,EAAQnR,KC1MrCL,EAAQ,4BAA4BxG,KAAK6G,KAC9BL,EAAM,IAAO,ID2MtBmN,QAAYxK,GAASb,UAAUjJ,QAAQsU,GACzChD,EACE,IAAI9O,GACF,wBAA0B8R,EAAW,IACrC9R,GAAWiC,gBACX7B,IAONC,EAAQ0X,KAAK3B,GAAe,KAC9B,EACF,EEzNI4B,GAAiB,SAACC,EAASzO,GAC/B,IAAQzS,GAAYkhB,EAAUA,EAAUA,EAAQjb,OAAOkb,SAAW,IAA1DnhB,OAER,GAAIyS,GAAWzS,EAAQ,CACrB,IAEI+gB,EAFAK,EAAa,IAAIC,gBAIflB,EAAU,SAAUmB,GACxB,IAAKP,EAAS,CACZA,GAAU,EACVxB,IACA,IAAMrK,EAAMoM,aAAkB9Z,MAAQ8Z,EAAS9c,KAAK8c,OACpDF,EAAWP,MACT3L,aAAejM,GACXiM,EACA,IAAIyC,GAAczC,aAAe1N,MAAQ0N,EAAI/L,QAAU+L,GAE/D,CACF,EAEIqE,EACF9G,GACA5P,WAAW,WACT0W,EAAQ,KACR4G,EAAQ,IAAIlX,GAAU,cAAA9G,OAAesQ,EAAO,eAAexJ,GAAW4B,WACxE,EAAG4H,GAEC8M,EAAc,WACd2B,IACF3H,GAASK,aAAaL,GACtBA,EAAQ,KACR2H,EAAQvhB,QAAQ,SAAC6f,GACfA,EAAOD,YACHC,EAAOD,YAAYY,GACnBX,EAAOC,oBAAoB,QAASU,EAC1C,GACAe,EAAU,KAEd,EAEAA,EAAQvhB,QAAQ,SAAC6f,GAAM,OAAKA,EAAOld,iBAAiB,QAAS6d,EAAQ,GAErE,IAAQX,EAAW4B,EAAX5B,OAIR,OAFAA,EAAOD,YAAc,WAAA,OAAMnV,GAAMtH,KAAKyc,EAAY,EAE3CC,CACT,CACF,ECrDa+B,GAAWC,IAAAzZ,EAAG,SAAdwZ,EAAyBE,EAAOC,GAAS,IAAArhB,EAAAshB,EAAAlO,EAAA,OAAA+N,IAAA5L,EAAA,SAAAgM,GAAA,cAAAA,EAAA7M,GAAA,KAAA,EAC1B,GAAtB1U,EAAMohB,EAAMI,WAEXH,KAAarhB,EAAMqhB,GAAS,CAAAE,EAAA7M,EAAA,EAAA,KAAA,CAC/B,OAD+B6M,EAAA7M,EAAA,EACzB0M,EAAK,KAAA,EAAA,OAAAG,EAAA7c,EAAA,GAAA,KAAA,EAIT4c,EAAM,EAAC,KAAA,EAAA,KAGJA,EAAMthB,GAAG,CAAAuhB,EAAA7M,EAAA,EAAA,KAAA,CAEd,OADAtB,EAAMkO,EAAMD,EAAUE,EAAA7M,EAAA,EAChB0M,EAAMpkB,MAAMskB,EAAKlO,GAAI,KAAA,EAC3BkO,EAAMlO,EAAImO,EAAA7M,EAAA,EAAA,MAAA,KAAA,EAAA,OAAA6M,EAAA7c,EAAA,GAAA,EAdDwc,EAAW,GAkBXO,GAAS,WAAA,IAAA1L,EAAA2L,EAAAP,IAAAzZ,EAAG,SAAAia,EAAiBC,EAAUP,GAAS,IAAAQ,EAAAC,EAAAC,EAAAvb,EAAA+N,EAAA6M,EAAAY,EAAA,OAAAb,IAAA5L,EAAA,SAAA0M,GAAA,cAAAA,EAAAC,EAAAD,EAAAvN,GAAA,KAAA,EAAAmN,GAAA,EAAAC,GAAA,EAAAG,EAAAC,EAAA,EAAA1b,EAAA2b,EACjCC,GAAWR,IAAS,KAAA,EAAA,OAAAK,EAAAvN,EAAA,EAAA2N,EAAA7b,EAAAC,QAAA,KAAA,EAAA,KAAAob,IAAAtN,EAAA0N,EAAAK,GAAA5b,MAAA,CAAAub,EAAAvN,EAAA,EAAA,KAAA,CAC5C,OADe0M,EAAK7M,EAAA7Q,MACpBue,EAAAM,EAAAC,EAAAC,EAAAN,EAAOjB,GAAYE,EAAOC,MAAU,GAAA,KAAA,EAAAQ,GAAA,EAAAI,EAAAvN,EAAA,EAAA,MAAA,KAAA,EAAAuN,EAAAvN,EAAA,EAAA,MAAA,KAAA,EAAAuN,EAAAC,EAAA,EAAAF,EAAAC,EAAAK,EAAAR,GAAA,EAAAC,EAAAC,EAAA,KAAA,EAAA,GAAAC,EAAAC,EAAA,EAAAD,EAAAC,EAAA,GAAAL,GAAA,MAAArb,EAAA,OAAA,CAAAyb,EAAAvN,EAAA,EAAA,KAAA,CAAA,OAAAuN,EAAAvN,EAAA,EAAA2N,EAAA7b,EAAA,UAAA,KAAA,EAAA,GAAAyb,EAAAC,EAAA,GAAAJ,EAAA,CAAAG,EAAAvN,EAAA,GAAA,KAAA,CAAA,MAAAqN,EAAA,KAAA,GAAA,OAAAE,EAAAnN,EAAA,GAAA,KAAA,GAAA,OAAAmN,EAAAnN,EAAA,GAAA,KAAA,GAAA,OAAAmN,EAAAvd,EAAA,GAAA,EAAAid,EAAA,KAAA,CAAA,CAAA,EAAA,CAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,KAAA,IAEvC,OAAA,SAJqBe,EAAAC,GAAA,OAAA5M,EAAA9Z,MAAAkI,KAAAjI,UAAA,CAAA,CAAA,GAMhBkmB,GAAU,WAAA,IAAAle,EAAAwd,EAAAP,IAAAzZ,EAAG,SAAAkb,EAAiBC,GAAM,IAAAC,EAAAC,EAAArc,EAAAhD,EAAA,OAAAyd,IAAA5L,EAAA,SAAAyN,GAAA,cAAAA,EAAAd,EAAAc,EAAAtO,GAAA,KAAA,EAAA,IACpCmO,EAAOpmB,OAAOwmB,eAAc,CAAAD,EAAAtO,EAAA,EAAA,KAAA,CAC9B,OAAAsO,EAAAT,EAAAC,EAAAC,EAAAN,EAAOU,KAAM,GAAA,KAAA,EAAA,OAAAG,EAAAte,EAAA,GAAA,KAAA,EAIToe,EAASD,EAAOK,YAAWF,EAAAd,EAAA,EAAA,KAAA,EAAA,OAAAc,EAAAtO,EAAA,EAAA2N,EAGCS,EAAOxH,QAAM,KAAA,EAAxB,GAAwByH,EAAAC,EAAAV,EAAnC5b,EAAIqc,EAAJrc,KAAMhD,EAAKqf,EAALrf,OACVgD,EAAI,CAAAsc,EAAAtO,EAAA,EAAA,KAAA,CAAA,OAAAsO,EAAAte,EAAA,EAAA,GAAA,KAAA,EAGR,OAHQse,EAAAtO,EAAA,EAGFhR,EAAK,KAAA,EAAAsf,EAAAtO,EAAA,EAAA,MAAA,KAAA,EAAA,OAAAsO,EAAAd,EAAA,EAAAc,EAAAtO,EAAA,EAAA2N,EAGPS,EAAOvC,UAAQ,KAAA,EAAA,OAAAyC,EAAAlO,EAAA,GAAA,KAAA,GAAA,OAAAkO,EAAAte,EAAA,GAAA,EAAAke,EAAA,KAAA,CAAA,CAAA,GAAA,EAAA,KAAA,IAExB,OAAA,SAlBeO,GAAA,OAAAjf,EAAAjI,MAAAkI,KAAAjI,UAAA,CAAA,CAAA,GAoBHknB,GAAc,SAACP,EAAQxB,EAAWgC,EAAYC,GACzD,IAGI5c,EAHElK,EAAWilB,GAAUoB,EAAQxB,GAE/BhJ,EAAQ,EAERkL,EAAY,SAAC/f,GACVkD,IACHA,GAAO,EACP4c,GAAYA,EAAS9f,GAEzB,EAEA,OAAO,IAAIggB,eACT,CACQC,KAAI,SAAC1C,GAAY,OAAA2C,EAAAvC,IAAAzZ,WAAAic,IAAA,IAAAC,EAAAC,EAAAngB,EAAA1D,EAAA8jB,EAAAC,EAAA,OAAA5C,IAAA5L,EAAA,SAAAyO,GAAA,cAAAA,EAAA9B,EAAA8B,EAAAtP,GAAA,KAAA,EAAA,OAAAsP,EAAA9B,EAAA,EAAA8B,EAAAtP,EAAA,EAEWlY,EAASiK,OAAM,KAAA,EAA1B,GAA0Bmd,EAAAI,EAAA1B,EAArC5b,EAAIkd,EAAJld,KAAMhD,EAAKkgB,EAALlgB,OAEVgD,EAAI,CAAAsd,EAAAtP,EAAA,EAAA,KAAA,CAEa,OADnB6O,IACAxC,EAAWkD,QAAQD,EAAAtf,EAAA,GAAA,KAAA,EAIjB1E,EAAM0D,EAAM8d,WACZ6B,IACES,EAAezL,GAASrY,EAC5BqjB,EAAWS,IAEb/C,EAAWmD,QAAQ,IAAI1jB,WAAWkD,IAAQsgB,EAAAtP,EAAA,EAAA,MAAA,KAAA,EAE3B,MAF2BsP,EAAA9B,EAAA,EAAA6B,EAAAC,EAAA1B,EAE1CiB,EAASQ,GAAMA,EAAA,KAAA,EAAA,OAAAC,EAAAtf,EAAA,GAAA,EAAAif,EAAA,KAAA,CAAA,CAAA,EAAA,IAAA,GAjBID,EAoBvB,EACAnD,OAAM,SAACU,GAEL,OADAsC,EAAUtC,GACHzkB,EAAQ,QACjB,GAEF,CACE2nB,cAAe,GAGrB,EJxEQvmB,GAAemM,GAAfnM,WAEFwmB,GAA8C,CAClDC,SADsBtO,GAGpBhM,GAAMrL,QAHiB2lB,QAEzBC,SAF0CvO,GAARuO,UAKpCC,GAAwCxa,GAAMrL,OAAtC8kB,GAAce,GAAdf,eAAgBgB,GAAWD,GAAXC,YAElB/Y,GAAO,SAAC1P,GACZ,IAAI,IAAA,IAAA4Z,EAAAzZ,UAAAyD,OADe2Z,MAAI/b,MAAAoY,EAAA,EAAAA,OAAAzV,EAAA,EAAAA,EAAAyV,EAAAzV,IAAJoZ,EAAIpZ,EAAA,GAAAhE,UAAAgE,GAErB,QAASnE,EAAEE,WAAA,EAAIqd,EACjB,CAAE,MAAO9V,GACP,OAAO,CACT,CACF,EAEMihB,GAAU,SAAC/S,GASf,IAAAgT,EARAhT,EAAM3H,GAAM9F,MAAMlH,KAChB,CACEsH,eAAe,GAEjB+f,GACA1S,GAGaiT,EAAQD,EAAfE,MAAiBP,EAAOK,EAAPL,QAASC,EAAQI,EAARJ,SAC5BO,EAAmBF,EAAW/mB,GAAW+mB,GAA6B,mBAAVC,MAC5DE,EAAqBlnB,GAAWymB,GAChCU,EAAsBnnB,GAAW0mB,GAEvC,IAAKO,EACH,OAAO,EAGT,IAMS1W,EANH6W,EAA4BH,GAAoBjnB,GAAW4lB,IAE3DyB,EACJJ,IACwB,mBAAhBL,IAEDrW,EAED,IAAIqW,GAFS,SAAC1nB,GAAG,OACfqR,EAAQf,OAAOtQ,EAAI,GACH,WAAA,IAAAoH,EAAAwf,EAAAvC,IAAAzZ,EACpB,SAAAia,EAAO7kB,GAAG,IAAAklB,EAAA+B,EAAA,OAAA5C,IAAA5L,EAAA,SAAAgM,GAAA,cAAAA,EAAA7M,GAAA,KAAA,EAAmB,OAAnBsN,EAASxhB,WAAU+gB,EAAA7M,EAAA,EAAO,IAAI2P,EAAQvnB,GAAKooB,cAAa,KAAA,EAAA,OAAAnB,EAAAxC,EAAAe,EAAAf,EAAA7c,EAAA,EAAA,IAAAsd,EAAA+B,IAAA,EAAApC,EAAA,IAAC,OAAA,SAAAe,GAAA,OAAAxe,EAAAjI,MAAAkI,KAAAjI,UAAA,CAAA,KAEnEipB,EACJL,GACAE,GACAvZ,GAAK,WACH,IAAI2Z,GAAiB,EAEfnc,EAAU,IAAIob,EAAQnU,GAASH,OAAQ,CAC3CsV,KAAM,IAAI7B,GACV5Q,OAAQ,OACR,UAAI0S,GAEF,OADAF,GAAiB,EACV,MACT,IAGIG,EAAiBtc,EAAQ+H,QAAQwU,IAAI,gBAM3C,OAJoB,MAAhBvc,EAAQoc,MACVpc,EAAQoc,KAAK9E,SAGR6E,IAAmBG,CAC5B,GAEIE,EACJV,GACAC,GACAvZ,GAAK,WAAA,OAAM1B,GAAM7K,iBAAiB,IAAIolB,EAAS,IAAIe,KAAK,GAEpDK,EAAY,CAChB7C,OAAQ4C,GAA2B,SAACE,GAAG,OAAKA,EAAIN,IAAI,GAGtDR,GAEI,CAAC,OAAQ,cAAe,OAAQ,WAAY,UAAUvlB,QAAQ,SAACnC,IAC5DuoB,EAAUvoB,KACRuoB,EAAUvoB,GAAQ,SAACwoB,EAAK3c,GACvB,IAAI4J,EAAS+S,GAAOA,EAAIxoB,GAExB,GAAIyV,EACF,OAAOA,EAAO7V,KAAK4oB,GAGrB,MAAM,IAAI/c,GAAU,kBAAA9G,OACA3E,EAAI,sBACtByL,GAAWmC,gBACX/B,EAEJ,EACJ,GAGJ,IAAM4c,EAAa,WAAA,IAAAzO,EAAAuM,EAAAvC,IAAAzZ,EAAG,SAAAkb,EAAOyC,GAAI,IAAAQ,EAAA,OAAA1E,IAAA5L,EAAA,SAAA0M,GAAA,cAAAA,EAAAvN,GAAA,KAAA,EAAA,GACnB,MAAR2Q,EAAY,CAAApD,EAAAvN,EAAA,EAAA,KAAA,CAAA,OAAAuN,EAAAvd,EAAA,EACP,GAAC,KAAA,EAAA,IAGNqF,GAAM3L,OAAOinB,GAAK,CAAApD,EAAAvN,EAAA,EAAA,KAAA,CAAA,OAAAuN,EAAAvd,EAAA,EACb2gB,EAAKS,MAAI,KAAA,EAAA,IAGd/b,GAAM5B,oBAAoBkd,GAAK,CAAApD,EAAAvN,EAAA,EAAA,KAAA,CAI/B,OAHImR,EAAW,IAAIxB,EAAQnU,GAASH,OAAQ,CAC5C6C,OAAQ,OACRyS,KAAAA,IACApD,EAAAvN,EAAA,EACYmR,EAASX,cAAa,KAAA,EAYN,KAAA,EAAA,OAAAjD,EAAAvd,EAAA,EAAAud,EAAAK,EAAEd,YAZgB,KAAA,EAAA,IAG9CzX,GAAM7G,kBAAkBmiB,KAAStb,GAAMlM,cAAcwnB,GAAK,CAAApD,EAAAvN,EAAA,EAAA,KAAA,CAAA,OAAAuN,EAAAvd,EAAA,EACrD2gB,EAAK7D,YAAU,KAAA,EAKvB,GAFGzX,GAAMjL,kBAAkBumB,KAC1BA,GAAc,KAGZtb,GAAMjM,SAASunB,GAAK,CAAApD,EAAAvN,EAAA,EAAA,KAAA,CAAA,OAAAuN,EAAAvN,EAAA,EACRuQ,EAAWI,GAAiB,KAAA,EAAA,OAAApD,EAAAvd,EAAA,GAAA,EAAAke,EAAA,IAE7C,OAAA,SA5BkBD,GAAA,OAAAxL,EAAAlb,MAAAkI,KAAAjI,UAAA,CAAA,CAAA,GA8Bb6pB,EAAiB,WAAA,IAAAC,EAAAtC,EAAAvC,IAAAzZ,EAAG,SAAAic,EAAO3S,EAASqU,GAAI,IAAA1lB,EAAA,OAAAwhB,IAAA5L,EAAA,SAAAyN,GAAA,UAAA,IAAAA,EAAAtO,EACmB,OAAzD/U,EAASoK,GAAMhC,eAAeiJ,EAAQiV,oBAAmBjD,EAAAte,EAAA,EAE9C,MAAV/E,EAAiBimB,EAAcP,GAAQ1lB,EAAM,EAAAgkB,EAAA,IACrD,OAAA,SAJsBR,EAAA+C,GAAA,OAAAF,EAAA/pB,MAAAkI,KAAAjI,UAAA,CAAA,CAAA,GAMvB,OAAA,WAAA,IAAAgG,EAAAwhB,EAAAvC,IAAAzZ,EAAO,SAAAye,EAAOnd,GAAM,IAAAod,EAAAxY,EAAAgF,EAAAxQ,EAAA+c,EAAA7B,EAAAlL,EAAA4K,EAAAD,EAAA9K,EAAAjB,EAAAqV,EAAAxJ,EAAAyJ,EAAAC,EAAAC,EAAAvd,EAAAiW,EAAAuH,EAAAZ,EAAAa,EAAAC,EAAAC,EAAAvD,EAAAwD,EAAAC,EAAA7V,EAAA8V,EAAA7d,EAAA8d,EAAArb,EAAAsb,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAAtG,IAAA5L,EAAA,SAAAyO,GAAA,cAAAA,EAAA9B,EAAA8B,EAAAtP,GAAA,KAAA,EAyCG,GAzCH0R,EAcdzI,GAAc3U,GAZhB4E,EAAGwY,EAAHxY,IACAgF,EAAMwT,EAANxT,OACAxQ,EAAIgkB,EAAJhkB,KACA+c,EAAMiH,EAANjH,OACA7B,EAAW8I,EAAX9I,YACAlL,EAAOgU,EAAPhU,QACA4K,EAAkBoJ,EAAlBpJ,mBACAD,EAAgBqJ,EAAhBrJ,iBACA9K,EAAYmU,EAAZnU,aACAjB,EAAOoV,EAAPpV,QAAOqV,EAAAD,EACPvJ,gBAAAA,WAAewJ,EAAG,cAAaA,EAC/BC,EAAYF,EAAZE,aAGEC,EAAS5B,GAAYC,MAEzB3S,EAAeA,GAAgBA,EAAe,IAAIhV,cAAgB,OAE9DupB,EAAiB5F,GACnB,CAACzB,EAAQ7B,GAAeA,EAAYoK,iBACpCtV,GAGEnJ,EAAU,KAERiW,EACJsH,GACAA,EAAetH,aACd,WACCsH,EAAetH,aACjB,EAAE8E,EAAA9B,EAAA,IAAAqF,EAMAxK,GACAoI,GACW,QAAXvS,GACW,SAAXA,GAAiB,CAAAoR,EAAAtP,EAAA,EAAA,KAAA,CAAA,OAAAsP,EAAAtP,EAAA,EACaqR,EAAkB/U,EAAS5O,GAAK,KAAA,EAAAolB,EAA7Df,EAAoBzC,EAAA1B,EAAAiF,EAA+C,IAA/CC,EAAgD,KAAA,EAAA,IAAAD,EAAA,CAAAvD,EAAAtP,EAAA,EAAA,KAAA,CAEjEmR,EAAW,IAAIxB,EAAQzW,EAAK,CAC9BgF,OAAQ,OACRyS,KAAMjjB,EACNkjB,OAAQ,SAKNvb,GAAMjH,WAAWV,KAAUskB,EAAoBb,EAAS7U,QAAQgF,IAAI,kBACtEhF,EAAQK,eAAeqV,GAGrBb,EAASR,OAAMsB,EACWvM,GAC1BqM,EACA7O,GAAqB0C,GAAeyC,KACrC6J,EAAA5nB,EAAA2nB,EAAA,GAHMtD,EAAUuD,EAAA,GAAEC,EAAKD,EAAA,GAKxBxkB,EAAOghB,GAAYyC,EAASR,KAvMX,MAuMqChC,EAAYwD,IACnE,KAAA,EAkC+D,OA/B7D9c,GAAMjM,SAAS+e,KAClBA,EAAkBA,EAAkB,UAAY,QAK5CiK,EAAyBhC,GAAsB,gBAAiBT,EAAQ/nB,UAI1EyN,GAAMjH,WAAWV,KACb6O,EAAcD,EAAQE,mBAG1B,yBAAyBzF,KAAKwF,KAC7B,aAAaxF,KAAKwF,IAEnBD,EAAO,OAAQ,gBAIb+V,EAAe5W,EAAAA,KAChBmW,GAAY,CAAA,EAAA,CACfnH,OAAQqH,EACR5T,OAAQA,EAAO/K,cACfmJ,QAASA,EAAQ+F,YAAYjB,SAC7BuP,KAAMjjB,EACNkjB,OAAQ,OACRqC,YAAab,EAAyBjK,OAAkBhe,IAG1DoK,EAAU6b,GAAsB,IAAIT,EAAQzW,EAAKmZ,GAAiB/C,EAAAtP,EAAA,EAE5CoQ,EAClByB,EAAOtd,EAASqd,GAChBC,EAAO3Y,EAAKmZ,GAAgB,KAAA,EA+BM,OAjClC7d,EAAQ8a,EAAA1B,EAIN0E,EACJvB,IAA4C,WAAjBxT,GAA8C,aAAjBA,GAEtDwT,IAA2BzI,GAAuBgK,GAAoB9H,KAClEvT,EAAU,CAAA,EAEhB,CAAC,SAAU,aAAc,WAAWrM,QAAQ,SAACqB,GAC3CgL,EAAQhL,GAAQuI,EAASvI,EAC3B,GAEMsmB,EAAwBld,GAAMhC,eAAemB,EAAS8H,QAAQgF,IAAI,mBAAkBkR,EAGvFlK,GACC5C,GACE6M,EACArP,GAAqB0C,GAAe0C,IAAqB,KAE7D,GAAEmK,EAAAnoB,EAAAkoB,EAAA,GANG7D,EAAU8D,EAAA,GAAEN,EAAKM,EAAA,GAQxBje,EAAW,IAAIob,EACblB,GAAYla,EAASmc,KArQJ,MAqQ8BhC,EAAY,WACzDwD,GAASA,IACT3H,GAAeA,GACjB,GACAvT,IAIJsG,EAAeA,GAAgB,OAAO+R,EAAAtP,EAAA,EAEbgR,EAAU3b,GAAM9J,QAAQylB,EAAWzT,IAAiB,QAC3E/I,EACAF,GACD,KAAA,EAEiD,OAL9Cse,EAAYtD,EAAA1B,GAKf0E,GAAoB9H,GAAeA,IAAc8E,EAAAtP,EAAA,EAErC,IAAI+J,QAAQ,SAAChH,EAASC,GACjCF,GAAOC,EAASC,EAAQ,CACtBtV,KAAMklB,EACNtW,QAASwC,GAAa/G,KAAKvD,EAAS8H,SACpCzH,OAAQL,EAASK,OACjBkW,WAAYvW,EAASuW,WACrBzW,OAAAA,EACAC,QAAAA,GAEJ,GAAE,KAAA,EAAA,OAAA+a,EAAAtf,EAAA,EAAAsf,EAAA1B,GAAA,KAAA,EAE2B,GAF3B0B,EAAA9B,EAAA,EAAAuF,EAAAzD,EAAA1B,EAEFpD,GAAeA,KAEXuI,GAAoB,cAAbA,EAAItmB,OAAwB,qBAAqBsK,KAAKgc,EAAI3e,SAAQ,CAAAkb,EAAAtP,EAAA,EAAA,KAAA,CAAA,MACrErY,OAAOmJ,OACX,IAAIoD,GACF,gBACAA,GAAW6B,YACXzB,EACAC,EACAwe,GAAOA,EAAIve,UAEb,CACEiB,MAAOsd,EAAItd,OAAKsd,IAEnB,KAAA,EAAA,MAGG7e,GAAW6D,KAAIgb,EAAMA,GAAOA,EAAI1e,KAAMC,EAAQC,EAASwe,GAAOA,EAAIve,UAAS,KAAA,GAAA,OAAA8a,EAAAtf,EAAA,GAAA,EAAAyhB,EAAA,KAAA,CAAA,CAAA,EAAA,IAAA,IAEpF,OAAA,SAAAyB,GAAA,OAAA1lB,EAAAjG,MAAAkI,KAAAjI,UAAA,CAAA,CA3KD,EA4KF,EAEM2rB,GAAY,IAAIC,IAETC,GAAW,SAAC/e,GAWvB,IAVA,IAMEgf,EACAzf,EAPEmJ,EAAO1I,GAAUA,EAAO0I,KAAQ,CAAA,EAC5BkT,EAA6BlT,EAA7BkT,MACFqD,EAAQ,CADuBvW,EAAtB2S,QAAsB3S,EAAb4S,SACUM,GAGhCplB,EADQyoB,EAAMtoB,OAIdV,EAAM4oB,GAEDroB,KACLwoB,EAAOC,EAAMzoB,QAGFX,KAFX0J,EAAStJ,EAAI+W,IAAIgS,KAEO/oB,EAAIiI,IAAI8gB,EAAOzf,EAAS/I,EAAI,IAAIsoB,IAAQrD,GAAQ/S,IAExEzS,EAAMsJ,EAGR,OAAOA,CACT,EAEgBwf,KK/UhB,IAAMG,GAAgB,CACpBC,KCfa,KDgBbC,IAAK7J,GACLqG,MAAO,CACL5O,IAAKqS,KAKTte,GAAMzK,QAAQ4oB,GAAe,SAACnsB,EAAI2H,GAChC,GAAI3H,EAAI,CACN,IACEM,OAAOuI,eAAe7I,EAAI,OAAQ,CAAE2H,MAAAA,GACtC,CAAE,MAAOF,GACP,CAEFnH,OAAOuI,eAAe7I,EAAI,cAAe,CAAE2H,MAAAA,GAC7C,CACF,GAQA,IAAM4kB,GAAe,SAACrH,GAAM,MAAA,KAAAnf,OAAUmf,EAAM,EAQtCsH,GAAmB,SAACzX,GAAO,OAC/B/G,GAAMnM,WAAWkT,IAAwB,OAAZA,IAAgC,IAAZA,CAAiB,EAmEpE,IAAA0X,GAAe,CAKbC,WA5DF,SAAoBD,EAAUxf,GAS5B,IANA,IACI0f,EACA5X,EAFInR,GAFR6oB,EAAWze,GAAMzM,QAAQkrB,GAAYA,EAAW,CAACA,IAEzC7oB,OAIFgpB,EAAkB,CAAA,EAEfnpB,EAAI,EAAGA,EAAIG,EAAQH,IAAK,CAE/B,IAAIkP,OAAE,EAIN,GAFAoC,EAHA4X,EAAgBF,EAAShpB,IAKpB+oB,GAAiBG,SAGJ7pB,KAFhBiS,EAAUoX,IAAexZ,EAAKxI,OAAOwiB,IAAgBzrB,gBAGnD,MAAM,IAAI2L,GAAU,oBAAA9G,OAAqB4M,QAI7C,GAAIoC,IAAY/G,GAAMnM,WAAWkT,KAAaA,EAAUA,EAAQkF,IAAIhN,KAClE,MAGF2f,EAAgBja,GAAM,IAAMlP,GAAKsR,CACnC,CAEA,IAAKA,EAAS,CACZ,IAAM8X,EAAUvsB,OAAOoU,QAAQkY,GAAiB1pB,IAC9C,SAAA8W,GAAA,IAAA7R,EAAAlF,EAAA+W,EAAA,GAAErH,EAAExK,EAAA,GAAE2kB,EAAK3kB,EAAA,GAAA,MACT,WAAApC,OAAW4M,EAAE,OACF,IAAVma,EAAkB,sCAAwC,gCAAgC,GAG3FpU,EAAI9U,EACJipB,EAAQjpB,OAAS,EACf,YAAcipB,EAAQ3pB,IAAIqpB,IAAc/c,KAAK,MAC7C,IAAM+c,GAAaM,EAAQ,IAC7B,0BAEJ,MAAM,IAAIhgB,GACR,wDAA0D6L,EAC1D,kBAEJ,CAEA,OAAO3D,CACT,EAgBE0X,SAAUN,IEhHZ,SAASY,GAA6B9f,GAKpC,GAJIA,EAAOsU,aACTtU,EAAOsU,YAAYyL,mBAGjB/f,EAAOmW,QAAUnW,EAAOmW,OAAOuB,QACjC,MAAM,IAAIpJ,GAAc,KAAMtO,EAElC,CASe,SAASggB,GAAgBhgB,GActC,OAbA8f,GAA6B9f,GAE7BA,EAAOgI,QAAUwC,GAAa/G,KAAKzD,EAAOgI,SAG1ChI,EAAO5G,KAAOyU,GAAc9Z,KAAKiM,EAAQA,EAAO+H,uBAE5C,CAAC,OAAQ,MAAO,SAAS3K,QAAQ4C,EAAO4J,SAC1C5J,EAAOgI,QAAQK,eAAe,qCAAqC,GAGrDmX,GAASC,WAAWzf,EAAO8H,SAAWF,GAASE,QAAS9H,EAEjE8H,CAAQ9H,GAAQN,KACrB,SAA6BQ,GAQ3B,OAPA4f,GAA6B9f,GAG7BE,EAAS9G,KAAOyU,GAAc9Z,KAAKiM,EAAQA,EAAOgJ,kBAAmB9I,GAErEA,EAAS8H,QAAUwC,GAAa/G,KAAKvD,EAAS8H,SAEvC9H,CACT,EACA,SAA4B+X,GAe1B,OAdKjK,GAASiK,KACZ6H,GAA6B9f,GAGzBiY,GAAUA,EAAO/X,WACnB+X,EAAO/X,SAAS9G,KAAOyU,GAAc9Z,KACnCiM,EACAA,EAAOgJ,kBACPiP,EAAO/X,UAET+X,EAAO/X,SAAS8H,QAAUwC,GAAa/G,KAAKwU,EAAO/X,SAAS8H,WAIzDyN,QAAQ/G,OAAOuJ,EACxB,EAEJ,CC5EO,IAAMgI,GAAU,SCKjBC,GAAa,CAAA,EAGnB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAU5pB,QAAQ,SAACnC,EAAMqC,GAC7E0pB,GAAW/rB,GAAQ,SAAmBN,GACpC,OAAOQ,EAAOR,KAAUM,GAAQ,KAAOqC,EAAI,EAAI,KAAO,KAAOrC,CAC/D,CACF,GAEA,IAAMgsB,GAAqB,CAAA,EAW3BD,GAAWrY,aAAe,SAAsBuY,EAAWC,EAASvgB,GAClE,SAASwgB,EAAcC,EAAKC,GAC1B,MACE,WACAP,GACA,0BACAM,EACA,IACAC,GACC1gB,EAAU,KAAOA,EAAU,GAEhC,CAGA,OAAO,SAACpF,EAAO6lB,EAAKE,GAClB,IAAkB,IAAdL,EACF,MAAM,IAAIxgB,GACR0gB,EAAcC,EAAK,qBAAuBF,EAAU,OAASA,EAAU,KACvEzgB,GAAW+B,gBAef,OAXI0e,IAAYF,GAAmBI,KACjCJ,GAAmBI,IAAO,EAE1BG,QAAQC,KACNL,EACEC,EACA,+BAAiCF,EAAU,8CAK1CD,GAAYA,EAAU1lB,EAAO6lB,EAAKE,EAC3C,CACF,EAEAP,GAAWU,SAAW,SAAkBC,GACtC,OAAO,SAACnmB,EAAO6lB,GAGb,OADAG,QAAQC,KAAI,GAAA7nB,OAAIynB,EAAG,gCAAAznB,OAA+B+nB,KAC3C,CACT,CACF,EAwCA,IAAAT,GAAe,CACbU,cA7BF,SAAuBne,EAASoe,EAAQC,GACtC,GAAuB,WAAnB3sB,EAAOsO,GACT,MAAM,IAAI/C,GAAW,4BAA6BA,GAAWyB,sBAI/D,IAFA,IAAMvK,EAAOzD,OAAOyD,KAAK6L,GACrBnM,EAAIM,EAAKH,OACNH,KAAM,GAAG,CACd,IAAM+pB,EAAMzpB,EAAKN,GAGX4pB,EAAY/sB,OAAOC,UAAUoE,eAAe3D,KAAKgtB,EAAQR,GAAOQ,EAAOR,QAAO1qB,EACpF,GAAIuqB,EAAJ,CACE,IAAM1lB,EAAQiI,EAAQ4d,GAChBjlB,OAAmBzF,IAAV6E,GAAuB0lB,EAAU1lB,EAAO6lB,EAAK5d,GAC5D,IAAe,IAAXrH,EACF,MAAM,IAAIsE,GACR,UAAY2gB,EAAM,YAAcjlB,EAChCsE,GAAWyB,qBAIjB,MACA,IAAqB,IAAjB2f,EACF,MAAM,IAAIphB,GAAW,kBAAoB2gB,EAAK3gB,GAAW0B,eAE7D,CACF,EAIE4e,WAAAA,IClGIA,GAAaE,GAAUF,WASvBe,GAAK,WAST,OAAAxgB,EARA,SAAAwgB,EAAYC,GAAgB9gB,OAAA6gB,GAC1B9lB,KAAKyM,SAAWsZ,GAAkB,CAAA,EAClC/lB,KAAKgmB,aAAe,CAClBlhB,QAAS,IAAImF,GACblF,SAAU,IAAIkF,GAElB,EAEA,CAAA,CAAAvO,IAAA,UAAA6D,OAAA0mB,EAAA1G,EAAAvC,IAAAzZ,EAQA,SAAAia,EAAc0I,EAAarhB,GAAM,IAAAshB,EAAAjiB,EAAAkiB,EAAAC,EAAAC,EAAAzI,EAAA,OAAAb,IAAA5L,EAAA,SAAAgM,GAAA,cAAAA,EAAAW,EAAAX,EAAA7M,GAAA,KAAA,EAAA,OAAA6M,EAAAW,EAAA,EAAAX,EAAA7M,EAAA,EAEhBvQ,KAAK0hB,SAASwE,EAAarhB,GAAO,KAAA,EAAA,OAAAuY,EAAA7c,EAAA,EAAA6c,EAAAe,GAAA,KAAA,EAE/C,GAF+Cf,EAAAW,EAAA,GAAAF,EAAAT,EAAAe,aAE5Bnb,MAAO,CACpBmjB,EAAQ,CAAA,EAEZnjB,MAAMujB,kBAAoBvjB,MAAMujB,kBAAkBJ,GAAUA,EAAQ,IAAInjB,MAGlEkB,EAAS,WACb,IAAKiiB,EAAMjiB,MACT,MAAO,GAGT,IAAMkiB,EAAoBD,EAAMjiB,MAAMjC,QAAQ,MAE9C,OAA6B,IAAtBmkB,EAA2B,GAAKD,EAAMjiB,MAAMrL,MAAMutB,EAAoB,EAC/E,CARe,GASf,IACOvI,EAAI3Z,MAGEA,IACHkiB,EAAoBliB,EAAMjC,QAAQ,MAClCokB,GACmB,IAAvBD,GAA4B,EAAIliB,EAAMjC,QAAQ,KAAMmkB,EAAoB,GACpEE,GACoB,IAAxBD,EAA4B,GAAKniB,EAAMrL,MAAMwtB,EAAqB,GAE/DtkB,OAAO8b,EAAI3Z,OAAOtC,SAAS0kB,KAC9BzI,EAAI3Z,OAAS,KAAOA,IAVtB2Z,EAAI3Z,MAAQA,CAahB,CAAE,MAAO7E,GACP,CAEJ,CAAC,MAAAwe,EAAA,KAAA,EAAA,OAAAT,EAAA7c,EAAA,GAAA,EAAAid,EAAAxd,KAAA,CAAA,CAAA,EAAA,IAAA,IAIJ,SAzCYue,EAAAC,GAAA,OAAAyH,EAAAnuB,MAAAkI,KAAAjI,UAAA,IAAA,CAAA2D,IAAA,WAAA6D,MA2Cb,SAAS2mB,EAAarhB,GAGO,iBAAhBqhB,GACTrhB,EAASA,GAAU,CAAA,GACZ4E,IAAMyc,EAEbrhB,EAASqhB,GAAe,CAAA,EAK1B,IAAAtL,EAFA/V,EAASkT,GAAY/X,KAAKyM,SAAU5H,GAE5B6H,EAAYkO,EAAZlO,aAAc8L,EAAgBoC,EAAhBpC,iBAAkB3L,EAAO+N,EAAP/N,aAEnBnS,IAAjBgS,GACFuY,GAAUU,cACRjZ,EACA,CACEhC,kBAAmBqa,GAAWrY,aAAaqY,YAC3Cpa,kBAAmBoa,GAAWrY,aAAaqY,YAC3Cna,oBAAqBma,GAAWrY,aAAaqY,YAC7Cla,gCAAiCka,GAAWrY,aAAaqY,GAAU,WAErE,GAIoB,MAApBvM,IACE5S,GAAMnM,WAAW+e,GACnB3T,EAAO2T,iBAAmB,CACxB3O,UAAW2O,GAGbyM,GAAUU,cACRnN,EACA,CACEvP,OAAQ8b,GAAU,SAClBlb,UAAWkb,GAAU,WAEvB,SAM2BrqB,IAA7BmK,EAAO6S,yBAEoChd,IAApCsF,KAAKyM,SAASiL,kBACvB7S,EAAO6S,kBAAoB1X,KAAKyM,SAASiL,kBAEzC7S,EAAO6S,mBAAoB,GAG7BuN,GAAUU,cACR9gB,EACA,CACE2hB,QAASzB,GAAWU,SAAS,WAC7BgB,cAAe1B,GAAWU,SAAS,mBAErC,GAIF5gB,EAAO4J,QAAU5J,EAAO4J,QAAUzO,KAAKyM,SAASgC,QAAU,OAAO3V,cAGjE,IAAI4tB,EAAiB7Z,GAAWjH,GAAM9F,MAAM+M,EAAQ0B,OAAQ1B,EAAQhI,EAAO4J,SAE3E5B,GACEjH,GAAMzK,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,UAAW,SAACsT,UACnE5B,EAAQ4B,EACjB,GAEF5J,EAAOgI,QAAUwC,GAAa1R,OAAO+oB,EAAgB7Z,GAGrD,IAAM8Z,EAA0B,GAC5BC,GAAiC,EACrC5mB,KAAKgmB,aAAalhB,QAAQ3J,QAAQ,SAAoC0rB,GACpE,GAAmC,mBAAxBA,EAAYvc,UAA0D,IAAhCuc,EAAYvc,QAAQzF,GAArE,CAIA+hB,EAAiCA,GAAkCC,EAAYxc,YAE/E,IAAMqC,EAAe7H,EAAO6H,cAAgBjC,GAE1CiC,GAAgBA,EAAa7B,gCAG7B8b,EAAwBG,QAAQD,EAAY1c,UAAW0c,EAAYzc,UAEnEuc,EAAwBvoB,KAAKyoB,EAAY1c,UAAW0c,EAAYzc,SAXlE,CAaF,GAEA,IAKI2c,EALEC,EAA2B,GACjChnB,KAAKgmB,aAAajhB,SAAS5J,QAAQ,SAAkC0rB,GACnEG,EAAyB5oB,KAAKyoB,EAAY1c,UAAW0c,EAAYzc,SACnE,GAGA,IACIvO,EADAR,EAAI,EAGR,IAAKurB,EAAgC,CACnC,IAAMK,EAAQ,CAACpC,GAAgBltB,KAAKqI,WAAOtF,GAO3C,IANAusB,EAAMH,QAAOhvB,MAAbmvB,EAAiBN,GACjBM,EAAM7oB,KAAItG,MAAVmvB,EAAcD,GACdnrB,EAAMorB,EAAMzrB,OAEZurB,EAAUzM,QAAQhH,QAAQzO,GAEnBxJ,EAAIQ,GACTkrB,EAAUA,EAAQxiB,KAAK0iB,EAAM5rB,KAAM4rB,EAAM5rB,MAG3C,OAAO0rB,CACT,CAEAlrB,EAAM8qB,EAAwBnrB,OAI9B,IAFA,IAAIie,EAAY5U,EAETxJ,EAAIQ,GAAK,CACd,IAAMqrB,EAAcP,EAAwBtrB,KACtC8rB,EAAaR,EAAwBtrB,KAC3C,IACEoe,EAAYyN,EAAYzN,EAC1B,CAAE,MAAO5T,GACPshB,EAAWvuB,KAAKoH,KAAM6F,GACtB,KACF,CACF,CAEA,IACEkhB,EAAUlC,GAAgBjsB,KAAKoH,KAAMyZ,EACvC,CAAE,MAAO5T,GACP,OAAOyU,QAAQ/G,OAAO1N,EACxB,CAKA,IAHAxK,EAAI,EACJQ,EAAMmrB,EAAyBxrB,OAExBH,EAAIQ,GACTkrB,EAAUA,EAAQxiB,KAAKyiB,EAAyB3rB,KAAM2rB,EAAyB3rB,MAGjF,OAAO0rB,CACT,GAAC,CAAArrB,IAAA,SAAA6D,MAED,SAAOsF,GAGL,OAAO2E,GADU+N,IADjB1S,EAASkT,GAAY/X,KAAKyM,SAAU5H,IACE2S,QAAS3S,EAAO4E,IAAK5E,EAAO6S,mBACxC7S,EAAOyE,OAAQzE,EAAO2T,iBAClD,KA9MA,IAAAyN,CA8MC,CAvNQ,GA2NXrgB,GAAMzK,QAAQ,CAAC,SAAU,MAAO,OAAQ,WAAY,SAA6BsT,GAE/EqX,GAAM3tB,UAAUsW,GAAU,SAAUhF,EAAK5E,GACvC,OAAO7E,KAAK8E,QACViT,GAAYlT,GAAU,CAAA,EAAI,CACxB4J,OAAAA,EACAhF,IAAAA,EACAxL,MAAO4G,GAAU,IAAI5G,OAG3B,CACF,GAEA2H,GAAMzK,QAAQ,CAAC,OAAQ,MAAO,SAAU,SAA+BsT,GACrE,SAAS2Y,EAAmBC,GAC1B,OAAO,SAAoB5d,EAAKxL,EAAM4G,GACpC,OAAO7E,KAAK8E,QACViT,GAAYlT,GAAU,CAAA,EAAI,CACxB4J,OAAAA,EACA5B,QAASwa,EACL,CACE,eAAgB,uBAElB,CAAA,EACJ5d,IAAAA,EACAxL,KAAAA,IAGN,CACF,CAEA6nB,GAAM3tB,UAAUsW,GAAU2Y,IAE1BtB,GAAM3tB,UAAUsW,EAAS,QAAU2Y,GAAmB,EACxD,GC9QA,IAOME,GAAW,WACf,SAAAA,EAAYC,GACV,GADoBtiB,OAAAqiB,GACI,mBAAbC,EACT,MAAM,IAAI9f,UAAU,gCAGtB,IAAI+f,EAEJxnB,KAAK+mB,QAAU,IAAIzM,QAAQ,SAAyBhH,GAClDkU,EAAiBlU,CACnB,GAEA,IAAMjW,EAAQ2C,KAGdA,KAAK+mB,QAAQxiB,KAAK,SAAC6X,GACjB,GAAK/e,EAAMoqB,WAAX,CAIA,IAFA,IAAIpsB,EAAIgC,EAAMoqB,WAAWjsB,OAElBH,KAAM,GACXgC,EAAMoqB,WAAWpsB,GAAG+gB,GAEtB/e,EAAMoqB,WAAa,IAPI,CAQzB,GAGAznB,KAAK+mB,QAAQxiB,KAAO,SAACmjB,GACnB,IAAIC,EAEEZ,EAAU,IAAIzM,QAAQ,SAAChH,GAC3BjW,EAAMif,UAAUhJ,GAChBqU,EAAWrU,CACb,GAAG/O,KAAKmjB,GAMR,OAJAX,EAAQ3K,OAAS,WACf/e,EAAM0d,YAAY4M,EACpB,EAEOZ,CACT,EAEAQ,EAAS,SAAgB5iB,EAASE,EAAQC,GACpCzH,EAAMyf,SAKVzf,EAAMyf,OAAS,IAAI3J,GAAcxO,EAASE,EAAQC,GAClD0iB,EAAenqB,EAAMyf,QACvB,EACF,CAEA,OAAAxX,EAAAgiB,EAAA,CAAA,CAAA5rB,IAAA,mBAAA6D,MAGA,WACE,GAAIS,KAAK8c,OACP,MAAM9c,KAAK8c,MAEf,GAEA,CAAAphB,IAAA,YAAA6D,MAIA,SAAUmU,GACJ1T,KAAK8c,OACPpJ,EAAS1T,KAAK8c,QAIZ9c,KAAKynB,WACPznB,KAAKynB,WAAWrpB,KAAKsV,GAErB1T,KAAKynB,WAAa,CAAC/T,EAEvB,GAEA,CAAAhY,IAAA,cAAA6D,MAIA,SAAYmU,GACV,GAAK1T,KAAKynB,WAAV,CAGA,IAAM7e,EAAQ5I,KAAKynB,WAAWxlB,QAAQyR,IACxB,IAAV9K,GACF5I,KAAKynB,WAAWG,OAAOhf,EAAO,EAHhC,CAKF,GAAC,CAAAlN,IAAA,gBAAA6D,MAED,WAAgB,IAAAyF,EAAAhF,KACR4c,EAAa,IAAIC,gBAEjBR,EAAQ,SAAC3L,GACbkM,EAAWP,MAAM3L,EACnB,EAMA,OAJA1Q,KAAKsc,UAAUD,GAEfO,EAAW5B,OAAOD,YAAc,WAAA,OAAM/V,EAAK+V,YAAYsB,EAAM,EAEtDO,EAAW5B,MACpB,IAEA,CAAA,CAAAtf,IAAA,SAAA6D,MAIA,WACE,IAAI6c,EAIJ,MAAO,CACL/e,MAJY,IAAIiqB,EAAY,SAAkBO,GAC9CzL,EAASyL,CACX,GAGEzL,OAAAA,EAEJ,IAAC,CAxHc,GCXjB,IAAM0L,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,IAC/BC,gBAAiB,IACjBC,mBAAoB,IACpBC,oBAAqB,IACrBC,gBAAiB,IACjBC,mBAAoB,IACpBC,sBAAuB,KAGzBj0B,OAAOoU,QAAQwb,IAAgB3sB,QAAQ,SAAAyW,GAAkB,IAAA7R,EAAAlF,EAAA+W,EAAA,GAAhBlW,EAAGqE,EAAA,GAAER,EAAKQ,EAAA,GACjD+nB,GAAevoB,GAAS7D,CAC1B,GC5BA,IAAM0wB,GAnBN,SAASC,EAAeC,GACtB,IAAMpwB,EAAU,IAAI4pB,GAAMwG,GACpBC,EAAW50B,EAAKmuB,GAAM3tB,UAAU2M,QAAS5I,GAa/C,OAVA0J,GAAMtF,OAAOisB,EAAUzG,GAAM3tB,UAAW+D,EAAS,CAAET,YAAY,IAG/DmK,GAAMtF,OAAOisB,EAAUrwB,EAAS,KAAM,CAAET,YAAY,IAGpD8wB,EAAS9zB,OAAS,SAAgBstB,GAChC,OAAOsG,EAAetU,GAAYuU,EAAevG,GACnD,EAEOwG,CACT,CAGcF,CAAe5f,WAG7B2f,GAAMtG,MAAQA,GAGdsG,GAAMjZ,cAAgBA,GACtBiZ,GAAM9E,YAAcA,GACpB8E,GAAMvZ,SAAWA,GACjBuZ,GAAMtH,QAAUA,GAChBsH,GAAM7kB,WAAaA,GAGnB6kB,GAAM3nB,WAAaA,GAGnB2nB,GAAMI,OAASJ,GAAMjZ,cAGrBiZ,GAAMK,IAAM,SAAaC,GACvB,OAAOpS,QAAQmS,IAAIC,EACrB,EAEAN,GAAMO,OC9CS,SAAgBC,GAC7B,OAAO,SAAczqB,GACnB,OAAOyqB,EAAS90B,MAAM,KAAMqK,EAC9B,CACF,ED6CAiqB,GAAMjnB,aE7DS,SAAsB0nB,GACnC,OAAOjnB,GAAM/L,SAASgzB,KAAqC,IAAzBA,EAAQ1nB,YAC5C,EF8DAinB,GAAMrU,YAAcA,GAEpBqU,GAAM/c,aAAeA,GAErB+c,GAAMU,WAAa,SAACp0B,GAAK,OAAKuT,GAAerG,GAAMtJ,WAAW5D,GAAS,IAAI+B,SAAS/B,GAASA,EAAM,EAEnG0zB,GAAM9H,WAAaD,GAASC,WAE5B8H,GAAMtE,eAAiBA,GAEvBsE,GAAK,QAAWA"} \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/axios/dist/browser/axios.cjs b/.claude/skills/教学日程查询/node_modules/axios/dist/browser/axios.cjs deleted file mode 100644 index 209c753..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/dist/browser/axios.cjs +++ /dev/null @@ -1,4338 +0,0 @@ -/*! Axios v1.15.2 Copyright (c) 2026 Matt Zabriskie and contributors */ -'use strict'; - -/** - * Create a bound version of a function with a specified `this` context - * - * @param {Function} fn - The function to bind - * @param {*} thisArg - The value to be passed as the `this` parameter - * @returns {Function} A new function that will call the original function with the specified `this` context - */ -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 { iterator, toStringTag } = Symbol; - -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 a non-null object - * - * @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$1(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$1 = 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) && - !(toStringTag in val) && - !(iterator in val) - ); -}; - -/** - * Determine if a value is an empty object (safely handles Buffers) - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an empty object, otherwise false - */ -const isEmptyObject = (val) => { - // Early return for non-objects or Buffers to prevent RangeError - if (!isObject(val) || isBuffer(val)) { - return false; - } - - try { - return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; - } catch (e) { - // Fallback for any other objects that might cause RangeError with Object.keys() - return false; - } -}; - -/** - * 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 React Native Blob - * React Native "blob": an object with a `uri` attribute. Optionally, it can - * also have a `name` and `type` attribute to specify filename and content type - * - * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 - * - * @param {*} value The value to test - * - * @returns {boolean} True if value is a React Native Blob, otherwise false - */ -const isReactNativeBlob = (value) => { - return !!(value && typeof value.uri !== 'undefined'); -}; - -/** - * Determine if environment is React Native - * ReactNative `FormData` has a non-standard `getParts()` method - * - * @param {*} formData The formData to test - * - * @returns {boolean} True if environment is React Native, otherwise false - */ -const isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined'; - -/** - * 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$1(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 - */ -function getGlobal() { - if (typeof globalThis !== 'undefined') return globalThis; - if (typeof self !== 'undefined') return self; - if (typeof window !== 'undefined') return window; - if (typeof global !== 'undefined') return global; - return {}; -} - -const G = getGlobal(); -const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; - -const isFormData = (thing) => { - if (!thing) return false; - if (FormDataCtor && thing instanceof FormDataCtor) return true; - // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9). - const proto = getPrototypeOf(thing); - if (!proto || proto === Object.prototype) return false; - if (!isFunction$1(thing.append)) return false; - const kind = kindOf(thing); - return kind === 'formdata' || - // detect form-data instance - (kind === 'object' && isFunction$1(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'); - -const [isReadableStream, isRequest, isResponse, isHeaders] = [ - 'ReadableStream', - 'Request', - 'Response', - 'Headers', -].map(kindOfTest); - -/** - * 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) => { - 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 {Object} [options] - * @param {Boolean} [options.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 { - // Buffer check - if (isBuffer(obj)) { - return; - } - - // 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); - } - } -} - -/** - * Finds a key in an object, case-insensitive, returning the actual key name. - * Returns null if the object is a Buffer or if no match is found. - * - * @param {Object} obj - The object to search. - * @param {string} key - The key to find (case-insensitive). - * @returns {?string} The actual key name if found, otherwise null. - */ -function findKey(obj, key) { - if (isBuffer(obj)) { - return null; - } - - 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 - * const 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, skipUndefined } = (isContextDefined(this) && this) || {}; - const result = {}; - const assignValue = (val, key) => { - // Skip dangerous property names to prevent prototype pollution - if (key === '__proto__' || key === 'constructor' || key === 'prototype') { - return; - } - - 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 if (!skipUndefined || !isUndefined(val)) { - 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 {Object} [options] - * @param {Boolean} [options.allOwnKeys] - * @returns {Object} The resulting value of object a - */ -const extend = (a, b, thisArg, { allOwnKeys } = {}) => { - forEach( - b, - (val, key) => { - if (thisArg && isFunction$1(val)) { - Object.defineProperty(a, key, { - value: bind(val, thisArg), - writable: true, - enumerable: true, - configurable: true, - }); - } else { - Object.defineProperty(a, key, { - value: val, - writable: true, - enumerable: true, - configurable: true, - }); - } - }, - { 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); - Object.defineProperty(constructor.prototype, 'constructor', { - value: constructor, - writable: true, - enumerable: false, - configurable: true, - }); - 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[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$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - - const value = obj[name]; - - if (!isFunction$1(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 + "'"); - }; - } - }); -}; - -/** - * Converts an array or a delimited string into an object set with values as keys and true as values. - * Useful for fast membership checks. - * - * @param {Array|string} arrayOrString - The array or string to convert. - * @param {string} delimiter - The delimiter to use if input is a string. - * @returns {Object} An object with keys from the array or string, values set to true. - */ -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) => { - return value != null && Number.isFinite((value = +value)) ? value : defaultValue; -}; - -/** - * 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$1(thing.append) && - thing[toStringTag] === 'FormData' && - thing[iterator] - ); -} - -/** - * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. - * - * @param {Object} obj - The object to convert. - * @returns {Object} The JSON-compatible object. - */ -const toJSONObject = (obj) => { - const stack = new Array(10); - - const visit = (source, i) => { - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - - //Buffer check - if (isBuffer(source)) { - return source; - } - - 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); -}; - -/** - * Determines if a value is an async function. - * - * @param {*} thing - The value to test. - * @returns {boolean} True if value is an async function, otherwise false. - */ -const isAsyncFn = kindOfTest('AsyncFunction'); - -/** - * Determines if a value is thenable (has then and catch methods). - * - * @param {*} thing - The value to test. - * @returns {boolean} True if value is thenable, otherwise false. - */ -const isThenable = (thing) => - thing && - (isObject(thing) || isFunction$1(thing)) && - isFunction$1(thing.then) && - isFunction$1(thing.catch); - -// original code -// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 - -/** - * Provides a cross-platform setImmediate implementation. - * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. - * - * @param {boolean} setImmediateSupported - Whether setImmediate is supported. - * @param {boolean} postMessageSupported - Whether postMessage is supported. - * @returns {Function} A function to schedule a callback asynchronously. - */ -const _setImmediate = ((setImmediateSupported, postMessageSupported) => { - if (setImmediateSupported) { - return setImmediate; - } - - return postMessageSupported - ? ((token, callbacks) => { - _global.addEventListener( - 'message', - ({ source, data }) => { - if (source === _global && data === token) { - callbacks.length && callbacks.shift()(); - } - }, - false - ); - - return (cb) => { - callbacks.push(cb); - _global.postMessage(token, '*'); - }; - })(`axios@${Math.random()}`, []) - : (cb) => setTimeout(cb); -})(typeof setImmediate === 'function', isFunction$1(_global.postMessage)); - -/** - * Schedules a microtask or asynchronous callback as soon as possible. - * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. - * - * @type {Function} - */ -const asap = - typeof queueMicrotask !== 'undefined' - ? queueMicrotask.bind(_global) - : (typeof process !== 'undefined' && process.nextTick) || _setImmediate; - -// ********************* - -const isIterable = (thing) => thing != null && isFunction$1(thing[iterator]); - -var utils$1 = { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isEmptyObject, - isReadableStream, - isRequest, - isResponse, - isHeaders, - isUndefined, - isDate, - isFile, - isReactNativeBlob, - isReactNative, - isBlob, - isRegExp, - isFunction: isFunction$1, - 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, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable, - setImmediate: _setImmediate, - asap, - isIterable, -}; - -class AxiosError extends Error { - static from(error, code, config, request, response, customProps) { - const axiosError = new AxiosError(error.message, code || error.code, config, request, response); - axiosError.cause = error; - axiosError.name = error.name; - - // Preserve status from the original error if not already set from response - if (error.status != null && axiosError.status == null) { - axiosError.status = error.status; - } - - customProps && Object.assign(axiosError, customProps); - return axiosError; - } - - /** - * 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. - */ - constructor(message, code, config, request, response) { - super(message); - - // Make message enumerable to maintain backward compatibility - // The native Error constructor sets message as non-enumerable, - // but axios < v1.13.3 had it as enumerable - Object.defineProperty(this, 'message', { - value: message, - enumerable: true, - writable: true, - configurable: true, - }); - - this.name = 'AxiosError'; - this.isAxiosError = true; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - if (response) { - this.response = response; - this.status = response.status; - } - } - - 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.status, - }; - } -} - -// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. -AxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; -AxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION'; -AxiosError.ECONNABORTED = 'ECONNABORTED'; -AxiosError.ETIMEDOUT = 'ETIMEDOUT'; -AxiosError.ERR_NETWORK = 'ERR_NETWORK'; -AxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; -AxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED'; -AxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; -AxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; -AxiosError.ERR_CANCELED = 'ERR_CANCELED'; -AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; -AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL'; -AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED'; - -// 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 maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth; - 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 (utils$1.isBoolean(value)) { - return value.toString(); - } - - 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 (utils$1.isReactNative(formData) && utils$1.isReactNativeBlob(value)) { - formData.append(renderKey(path, key, dots), convertValue(value)); - return false; - } - - 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, depth = 0) { - if (utils$1.isUndefined(value)) return; - - if (depth > maxDepth) { - throw new AxiosError( - 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth, - AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED - ); - } - - 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], depth + 1); - } - }); - - 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': '+', - }; - return encodeURIComponent(str).replace(/[!'()~]|%20/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 URL-encoded forms of `:`, `$`, `,`, and spaces with - * their plain 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, '+'); -} - -/** - * 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|Function)} options - * - * @returns {string} The formatted url - */ -function buildURL(url, params, options) { - if (!params) { - return url; - } - - const _encode = (options && options.encode) || encode; - - const _options = utils$1.isFunction(options) - ? { - serialize: options, - } - : options; - - 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` - * @param {Object} options The options for the interceptor, synchronous and runWhen - * - * @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 {void} - */ - 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 transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false, - legacyInterceptorReqResOrdering: true, -}; - -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'; - -const _navigator = (typeof navigator === 'object' && navigator) || 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 = - hasBrowserEnv && - (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); - -/** - * 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 origin = (hasBrowserEnv && window.location.href) || 'http://localhost'; - -var utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserEnv: hasStandardBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, - navigator: _navigator, - origin: origin -}); - -var platform = { - ...utils, - ...platform$1, -}; - -function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), { - 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] = utils$1.isArray(target[name]) - ? target[name].concat(value) - : [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; -} - -const own = (obj, key) => (obj != null && utils$1.hasOwnProp(obj, key) ? obj[key] : undefined); - -/** - * 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', 'fetch'], - - 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) || - utils$1.isReadableStream(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) { - const formSerializer = own(this, 'formSerializer'); - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, formSerializer).toString(); - } - - if ( - (isFileList = utils$1.isFileList(data)) || - contentType.indexOf('multipart/form-data') > -1 - ) { - const env = own(this, 'env'); - const _FormData = env && env.FormData; - - return toFormData( - isFileList ? { 'files[]': data } : data, - _FormData && new _FormData(), - formSerializer - ); - } - } - - if (isObjectPayload || hasJSONContentType) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - - return data; - }, - ], - - transformResponse: [ - function transformResponse(data) { - const transitional = own(this, 'transitional') || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const responseType = own(this, 'responseType'); - const JSONRequested = responseType === 'json'; - - if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { - return data; - } - - if ( - data && - utils$1.isString(data) && - ((forcedJSONParsing && !responseType) || JSONRequested) - ) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - - try { - return JSON.parse(data, own(this, 'parseReviver')); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(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] = {}; -}); - -// 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'); - -const INVALID_HEADER_VALUE_CHARS_RE = /[^\x09\x20-\x7E\x80-\xFF]/g; - -function trimSPorHTAB(str) { - let start = 0; - let end = str.length; - - while (start < end) { - const code = str.charCodeAt(start); - - if (code !== 0x09 && code !== 0x20) { - break; - } - - start += 1; - } - - while (end > start) { - const code = str.charCodeAt(end - 1); - - if (code !== 0x09 && code !== 0x20) { - break; - } - - end -= 1; - } - - return start === 0 && end === str.length ? str : str.slice(start, end); -} - -function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); -} - -function sanitizeHeaderValue(str) { - return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, '')); -} - -function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - - return utils$1.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(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 if (utils$1.isObject(header) && utils$1.isIterable(header)) { - let obj = {}, - dest, - key; - for (const entry of header) { - if (!utils$1.isArray(entry)) { - throw TypeError('Object iterator must return a key-value pair'); - } - - obj[(key = entry[0])] = (dest = obj[key]) - ? utils$1.isArray(dest) - ? [...dest, entry[1]] - : [dest, entry[1]] - : entry[1]; - } - - setHeaders(obj, 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'); - } - - getSetCookie() { - return this.get('set-cookie') || []; - } - - 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); - -/** - * 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; - const context = response || config; - const headers = AxiosHeaders.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__); -} - -class CanceledError extends AxiosError { - /** - * 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. - */ - constructor(message, config, request) { - super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); - this.name = 'CanceledError'; - this.__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 - ) - ); - } -} - -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; - }; -} - -/** - * Throttle decorator - * @param {Function} fn - * @param {Number} freq - * @return {Function} - */ -function throttle(fn, freq) { - let timestamp = 0; - let threshold = 1000 / freq; - let lastArgs; - let timer; - - const invoke = (args, now = Date.now()) => { - timestamp = now; - lastArgs = null; - if (timer) { - clearTimeout(timer); - timer = null; - } - fn(...args); - }; - - const throttled = (...args) => { - const now = Date.now(); - const passed = now - timestamp; - if (passed >= threshold) { - invoke(args, now); - } else { - lastArgs = args; - if (!timer) { - timer = setTimeout(() => { - timer = null; - invoke(lastArgs); - }, threshold - passed); - } - } - }; - - const flush = () => lastArgs && invoke(lastArgs); - - return [throttled, flush]; -} - -const progressEventReducer = (listener, isDownloadStream, freq = 3) => { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - - return throttle((e) => { - const rawLoaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded; - const progressBytes = Math.max(0, loaded - bytesNotified); - const rate = _speedometer(progressBytes); - - bytesNotified = Math.max(bytesNotified, loaded); - - const data = { - loaded, - total, - progress: total ? loaded / total : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total ? (total - loaded) / rate : undefined, - event: e, - lengthComputable: total != null, - [isDownloadStream ? 'download' : 'upload']: true, - }; - - listener(data); - }, freq); -}; - -const progressEventDecorator = (total, throttled) => { - const lengthComputable = total != null; - - return [ - (loaded) => - throttled[0]({ - lengthComputable, - total, - loaded, - }), - throttled[1], - ]; -}; - -const asyncDecorator = - (fn) => - (...args) => - utils$1.asap(() => fn(...args)); - -var isURLSameOrigin = platform.hasStandardBrowserEnv - ? ((origin, isMSIE) => (url) => { - url = new URL(url, platform.origin); - - return ( - origin.protocol === url.protocol && - origin.host === url.host && - (isMSIE || origin.port === url.port) - ); - })( - new URL(platform.origin), - platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) - ) - : () => true; - -var cookies = platform.hasStandardBrowserEnv - ? // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure, sameSite) { - if (typeof document === 'undefined') return; - - const cookie = [`${name}=${encodeURIComponent(value)}`]; - - if (utils$1.isNumber(expires)) { - cookie.push(`expires=${new Date(expires).toUTCString()}`); - } - if (utils$1.isString(path)) { - cookie.push(`path=${path}`); - } - if (utils$1.isString(domain)) { - cookie.push(`domain=${domain}`); - } - if (secure === true) { - cookie.push('secure'); - } - if (utils$1.isString(sameSite)) { - cookie.push(`SameSite=${sameSite}`); - } - - document.cookie = cookie.join('; '); - }, - - read(name) { - if (typeof document === 'undefined') return null; - const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); - return match ? decodeURIComponent(match[1]) : 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. - if (typeof url !== 'string') { - return false; - } - - 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, allowAbsoluteUrls) { - let isRelativeUrl = !isAbsoluteURL(requestedURL); - if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; -} - -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 - */ -function mergeConfig(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - - // Use a null-prototype object so that downstream reads such as `config.auth` - // or `config.baseURL` cannot inherit polluted values from Object.prototype - // (see GHSA-q8qp-cvcw-x6jj). `hasOwnProperty` is restored as a non-enumerable - // own slot to preserve ergonomics for user code that relies on it. - const config = Object.create(null); - Object.defineProperty(config, 'hasOwnProperty', { - value: Object.prototype.hasOwnProperty, - enumerable: false, - writable: true, - configurable: true, - }); - - function getMergedValue(target, source, prop, 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; - } - - function mergeDeepProperties(a, b, prop, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, prop, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a, prop, 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 (utils$1.hasOwnProp(config2, prop)) { - return getMergedValue(a, b); - } else if (utils$1.hasOwnProp(config1, prop)) { - 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, - allowedSocketPaths: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b, prop) => - mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true), - }; - - utils$1.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) { - if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; - const merge = utils$1.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; - const a = utils$1.hasOwnProp(config1, prop) ? config1[prop] : undefined; - const b = utils$1.hasOwnProp(config2, prop) ? config2[prop] : undefined; - const configValue = merge(a, b, prop); - (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); - }); - - return config; -} - -var resolveConfig = (config) => { - const newConfig = mergeConfig({}, config); - - // Read only own properties to prevent prototype pollution gadgets - // (e.g. Object.prototype.baseURL = 'https://evil.com'). See GHSA-q8qp-cvcw-x6jj. - const own = (key) => (utils$1.hasOwnProp(newConfig, key) ? newConfig[key] : undefined); - - const data = own('data'); - let withXSRFToken = own('withXSRFToken'); - const xsrfHeaderName = own('xsrfHeaderName'); - const xsrfCookieName = own('xsrfCookieName'); - let headers = own('headers'); - const auth = own('auth'); - const baseURL = own('baseURL'); - const allowAbsoluteUrls = own('allowAbsoluteUrls'); - const url = own('url'); - - newConfig.headers = headers = AxiosHeaders.from(headers); - - newConfig.url = buildURL( - buildFullPath(baseURL, url, allowAbsoluteUrls), - config.params, - config.paramsSerializer - ); - - // HTTP basic authentication - if (auth) { - headers.set( - 'Authorization', - 'Basic ' + - btoa( - (auth.username || '') + - ':' + - (auth.password ? unescape(encodeURIComponent(auth.password)) : '') - ) - ); - } - - if (utils$1.isFormData(data)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - headers.setContentType(undefined); // browser handles it - } else if (utils$1.isFunction(data.getHeaders)) { - // Node.js FormData (like form-data package) - const formHeaders = data.getHeaders(); - // Only set safe headers to avoid overwriting security headers - const allowedHeaders = ['content-type', 'content-length']; - Object.entries(formHeaders).forEach(([key, val]) => { - if (allowedHeaders.includes(key.toLowerCase())) { - headers.set(key, val); - } - }); - } - } - - // 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) { - if (utils$1.isFunction(withXSRFToken)) { - withXSRFToken = withXSRFToken(newConfig); - } - - // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1) - // and misconfigurations (e.g. "false") from short-circuiting the same-origin check and leaking - // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c. - const shouldSendXSRF = - withXSRFToken === true || - (withXSRFToken == null && isURLSameOrigin(newConfig.url)); - - if (shouldSendXSRF) { - const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); - - if (xsrfValue) { - headers.set(xsrfHeaderName, xsrfValue); - } - } - } - - return newConfig; -}; - -const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -var xhrAdapter = isXHRAdapterSupported && - function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - const _config = resolveConfig(config); - let requestData = _config.data; - const requestHeaders = AxiosHeaders.from(_config.headers).normalize(); - let { responseType, onUploadProgress, onDownloadProgress } = _config; - let onCanceled; - let uploadThrottled, downloadThrottled; - let flushUpload, flushDownload; - - function done() { - flushUpload && flushUpload(); // flush events - flushDownload && flushDownload(); // flush events - - _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); - - _config.signal && _config.signal.removeEventListener('abort', onCanceled); - } - - let request = new XMLHttpRequest(); - - request.open(_config.method.toUpperCase(), _config.url, 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(event) { - // Browsers deliver a ProgressEvent in XHR onerror - // (message may be empty; when present, surface it) - // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event - const msg = event && event.message ? event.message : 'Network Error'; - const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request); - // attach the underlying event for consumers who want details - err.event = event || null; - reject(err); - 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; - }; - - // 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 (onDownloadProgress) { - [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); - request.addEventListener('progress', downloadThrottled); - } - - // Not all browsers support upload events - if (onUploadProgress && request.upload) { - [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); - - request.upload.addEventListener('progress', uploadThrottled); - - request.upload.addEventListener('loadend', flushUpload); - } - - 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(_config.url); - - 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 composeSignals = (signals, timeout) => { - const { length } = (signals = signals ? signals.filter(Boolean) : []); - - if (timeout || length) { - let controller = new AbortController(); - - let aborted; - - const onabort = function (reason) { - if (!aborted) { - aborted = true; - unsubscribe(); - const err = reason instanceof Error ? reason : this.reason; - controller.abort( - err instanceof AxiosError - ? err - : new CanceledError(err instanceof Error ? err.message : err) - ); - } - }; - - let timer = - timeout && - setTimeout(() => { - timer = null; - onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT)); - }, timeout); - - const unsubscribe = () => { - if (signals) { - timer && clearTimeout(timer); - timer = null; - signals.forEach((signal) => { - signal.unsubscribe - ? signal.unsubscribe(onabort) - : signal.removeEventListener('abort', onabort); - }); - signals = null; - } - }; - - signals.forEach((signal) => signal.addEventListener('abort', onabort)); - - const { signal } = controller; - - signal.unsubscribe = () => utils$1.asap(unsubscribe); - - return signal; - } -}; - -const streamChunk = function* (chunk, chunkSize) { - let len = chunk.byteLength; - - if (len < chunkSize) { - yield chunk; - return; - } - - let pos = 0; - let end; - - while (pos < len) { - end = pos + chunkSize; - yield chunk.slice(pos, end); - pos = end; - } -}; - -const readBytes = async function* (iterable, chunkSize) { - for await (const chunk of readStream(iterable)) { - yield* streamChunk(chunk, chunkSize); - } -}; - -const readStream = async function* (stream) { - if (stream[Symbol.asyncIterator]) { - yield* stream; - return; - } - - const reader = stream.getReader(); - try { - for (;;) { - const { done, value } = await reader.read(); - if (done) { - break; - } - yield value; - } - } finally { - await reader.cancel(); - } -}; - -const trackStream = (stream, chunkSize, onProgress, onFinish) => { - const iterator = readBytes(stream, chunkSize); - - let bytes = 0; - let done; - let _onFinish = (e) => { - if (!done) { - done = true; - onFinish && onFinish(e); - } - }; - - return new ReadableStream( - { - async pull(controller) { - try { - const { done, value } = await iterator.next(); - - if (done) { - _onFinish(); - controller.close(); - return; - } - - let len = value.byteLength; - if (onProgress) { - let loadedBytes = (bytes += len); - onProgress(loadedBytes); - } - controller.enqueue(new Uint8Array(value)); - } catch (err) { - _onFinish(err); - throw err; - } - }, - cancel(reason) { - _onFinish(reason); - return iterator.return(); - }, - }, - { - highWaterMark: 2, - } - ); -}; - -const DEFAULT_CHUNK_SIZE = 64 * 1024; - -const { isFunction } = utils$1; - -const globalFetchAPI = (({ Request, Response }) => ({ - Request, - Response, -}))(utils$1.global); - -const { ReadableStream: ReadableStream$1, TextEncoder } = utils$1.global; - -const test = (fn, ...args) => { - try { - return !!fn(...args); - } catch (e) { - return false; - } -}; - -const factory = (env) => { - env = utils$1.merge.call( - { - skipUndefined: true, - }, - globalFetchAPI, - env - ); - - const { fetch: envFetch, Request, Response } = env; - const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; - const isRequestSupported = isFunction(Request); - const isResponseSupported = isFunction(Response); - - if (!isFetchSupported) { - return false; - } - - const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1); - - const encodeText = - isFetchSupported && - (typeof TextEncoder === 'function' - ? ( - (encoder) => (str) => - encoder.encode(str) - )(new TextEncoder()) - : async (str) => new Uint8Array(await new Request(str).arrayBuffer())); - - const supportsRequestStream = - isRequestSupported && - isReadableStreamSupported && - test(() => { - let duplexAccessed = false; - - const request = new Request(platform.origin, { - body: new ReadableStream$1(), - method: 'POST', - get duplex() { - duplexAccessed = true; - return 'half'; - }, - }); - - const hasContentType = request.headers.has('Content-Type'); - - if (request.body != null) { - request.body.cancel(); - } - - return duplexAccessed && !hasContentType; - }); - - const supportsResponseStream = - isResponseSupported && - isReadableStreamSupported && - test(() => utils$1.isReadableStream(new Response('').body)); - - const resolvers = { - stream: supportsResponseStream && ((res) => res.body), - }; - - isFetchSupported && - (() => { - ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => { - !resolvers[type] && - (resolvers[type] = (res, config) => { - let method = res && res[type]; - - if (method) { - return method.call(res); - } - - throw new AxiosError( - `Response type '${type}' is not supported`, - AxiosError.ERR_NOT_SUPPORT, - config - ); - }); - }); - })(); - - const getBodyLength = async (body) => { - if (body == null) { - return 0; - } - - if (utils$1.isBlob(body)) { - return body.size; - } - - if (utils$1.isSpecCompliantForm(body)) { - const _request = new Request(platform.origin, { - method: 'POST', - body, - }); - return (await _request.arrayBuffer()).byteLength; - } - - if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) { - return body.byteLength; - } - - if (utils$1.isURLSearchParams(body)) { - body = body + ''; - } - - if (utils$1.isString(body)) { - return (await encodeText(body)).byteLength; - } - }; - - const resolveBodyLength = async (headers, body) => { - const length = utils$1.toFiniteNumber(headers.getContentLength()); - - return length == null ? getBodyLength(body) : length; - }; - - return async (config) => { - let { - url, - method, - data, - signal, - cancelToken, - timeout, - onDownloadProgress, - onUploadProgress, - responseType, - headers, - withCredentials = 'same-origin', - fetchOptions, - } = resolveConfig(config); - - let _fetch = envFetch || fetch; - - responseType = responseType ? (responseType + '').toLowerCase() : 'text'; - - let composedSignal = composeSignals( - [signal, cancelToken && cancelToken.toAbortSignal()], - timeout - ); - - let request = null; - - const unsubscribe = - composedSignal && - composedSignal.unsubscribe && - (() => { - composedSignal.unsubscribe(); - }); - - let requestContentLength; - - try { - if ( - onUploadProgress && - supportsRequestStream && - method !== 'get' && - method !== 'head' && - (requestContentLength = await resolveBodyLength(headers, data)) !== 0 - ) { - let _request = new Request(url, { - method: 'POST', - body: data, - duplex: 'half', - }); - - let contentTypeHeader; - - if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { - headers.setContentType(contentTypeHeader); - } - - if (_request.body) { - const [onProgress, flush] = progressEventDecorator( - requestContentLength, - progressEventReducer(asyncDecorator(onUploadProgress)) - ); - - data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); - } - } - - if (!utils$1.isString(withCredentials)) { - withCredentials = withCredentials ? 'include' : 'omit'; - } - - // Cloudflare Workers throws when credentials are defined - // see https://github.com/cloudflare/workerd/issues/902 - const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; - - // If data is FormData and Content-Type is multipart/form-data without boundary, - // delete it so fetch can set it correctly with the boundary - if (utils$1.isFormData(data)) { - const contentType = headers.getContentType(); - if ( - contentType && - /^multipart\/form-data/i.test(contentType) && - !/boundary=/i.test(contentType) - ) { - headers.delete('content-type'); - } - } - - const resolvedOptions = { - ...fetchOptions, - signal: composedSignal, - method: method.toUpperCase(), - headers: headers.normalize().toJSON(), - body: data, - duplex: 'half', - credentials: isCredentialsSupported ? withCredentials : undefined, - }; - - request = isRequestSupported && new Request(url, resolvedOptions); - - let response = await (isRequestSupported - ? _fetch(request, fetchOptions) - : _fetch(url, resolvedOptions)); - - const isStreamResponse = - supportsResponseStream && (responseType === 'stream' || responseType === 'response'); - - if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) { - const options = {}; - - ['status', 'statusText', 'headers'].forEach((prop) => { - options[prop] = response[prop]; - }); - - const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length')); - - const [onProgress, flush] = - (onDownloadProgress && - progressEventDecorator( - responseContentLength, - progressEventReducer(asyncDecorator(onDownloadProgress), true) - )) || - []; - - response = new Response( - trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { - flush && flush(); - unsubscribe && unsubscribe(); - }), - options - ); - } - - responseType = responseType || 'text'; - - let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text']( - response, - config - ); - - !isStreamResponse && unsubscribe && unsubscribe(); - - return await new Promise((resolve, reject) => { - settle(resolve, reject, { - data: responseData, - headers: AxiosHeaders.from(response.headers), - status: response.status, - statusText: response.statusText, - config, - request, - }); - }); - } catch (err) { - unsubscribe && unsubscribe(); - - if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) { - throw Object.assign( - new AxiosError( - 'Network Error', - AxiosError.ERR_NETWORK, - config, - request, - err && err.response - ), - { - cause: err.cause || err, - } - ); - } - - throw AxiosError.from(err, err && err.code, config, request, err && err.response); - } - }; -}; - -const seedCache = new Map(); - -const getFetch = (config) => { - let env = (config && config.env) || {}; - const { fetch, Request, Response } = env; - const seeds = [Request, Response, fetch]; - - let len = seeds.length, - i = len, - seed, - target, - map = seedCache; - - while (i--) { - seed = seeds[i]; - target = map.get(seed); - - target === undefined && map.set(seed, (target = i ? new Map() : factory(env))); - - map = target; - } - - return target; -}; - -getFetch(); - -/** - * Known adapters mapping. - * Provides environment-specific adapters for Axios: - * - `http` for Node.js - * - `xhr` for browsers - * - `fetch` for fetch API-based requests - * - * @type {Object} - */ -const knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter, - fetch: { - get: getFetch, - }, -}; - -// Assign adapter names for easier debugging and identification -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 }); - } -}); - -/** - * Render a rejection reason string for unknown or unsupported adapters - * - * @param {string} reason - * @returns {string} - */ -const renderReason = (reason) => `- ${reason}`; - -/** - * Check if the adapter is resolved (function, null, or false) - * - * @param {Function|null|false} adapter - * @returns {boolean} - */ -const isResolvedHandle = (adapter) => - utils$1.isFunction(adapter) || adapter === null || adapter === false; - -/** - * Get the first suitable adapter from the provided list. - * Tries each adapter in order until a supported one is found. - * Throws an AxiosError if no adapter is suitable. - * - * @param {Array|string|Function} adapters - Adapter(s) by name or function. - * @param {Object} config - Axios request configuration - * @throws {AxiosError} If no suitable adapter is available - * @returns {Function} The resolved adapter function - */ -function getAdapter(adapters, config) { - 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 && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) { - 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; -} - -/** - * Exports Axios adapters and utility to resolve an adapter - */ -var adapters = { - /** - * Resolve an adapter from a list of adapter names or functions. - * @type {Function} - */ - getAdapter, - - /** - * Exposes all known adapters - * @type {Object} - */ - 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.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, config); - - 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); - } - ); -} - -const VERSION = "1.15.2"; - -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; - }; -}; - -validators$1.spelling = function spelling(correctSpelling) { - return (value, opt) => { - // eslint-disable-next-line no-console - console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); - return 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]; - // Use hasOwnProperty so a polluted Object.prototype. cannot supply - // a non-function validator and cause a TypeError. See GHSA-q8qp-cvcw-x6jj. - const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined; - 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(), - 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 = (() => { - if (!dummy.stack) { - return ''; - } - - const firstNewlineIndex = dummy.stack.indexOf('\n'); - - return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1); - })(); - try { - if (!err.stack) { - err.stack = stack; - // match without the 2 top stack lines - } else if (stack) { - const firstNewlineIndex = stack.indexOf('\n'); - const secondNewlineIndex = - firstNewlineIndex === -1 ? -1 : stack.indexOf('\n', firstNewlineIndex + 1); - const stackWithoutTwoTopLines = - secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1); - - if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) { - err.stack += '\n' + stack; - } - } - } catch (e) { - // ignore the case where "stack" is an un-writable property - } - } - - 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), - legacyInterceptorReqResOrdering: 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.allowAbsoluteUrls - if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) { - config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; - } else { - config.allowAbsoluteUrls = true; - } - - validator.assertOptions( - config, - { - baseUrl: validators.spelling('baseURL'), - withXsrfToken: validators.spelling('withXSRFToken'), - }, - 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.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; - - const transitional = config.transitional || transitionalDefaults; - const legacyInterceptorReqResOrdering = - transitional && transitional.legacyInterceptorReqResOrdering; - - if (legacyInterceptorReqResOrdering) { - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - } else { - requestInterceptorChain.push(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(...requestInterceptorChain); - chain.push(...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; - - 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, config.allowAbsoluteUrls); - 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) { - 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); -}); - -/** - * 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); - } - } - - toAbortSignal() { - const controller = new AbortController(); - - const abort = (err) => { - controller.abort(err); - }; - - this.subscribe(abort); - - controller.signal.unsubscribe = () => this.unsubscribe(abort); - - return controller.signal; - } - - /** - * 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, - }; - } -} - -/** - * 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) {} - * const 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, - WebServerIsDown: 521, - ConnectionTimedOut: 522, - OriginIsUnreachable: 523, - TimeoutOccurred: 524, - SslHandshakeFailed: 525, - InvalidSslCertificate: 526, -}; - -Object.entries(HttpStatusCode).forEach(([key, value]) => { - HttpStatusCode[value] = key; -}); - -/** - * 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$1.extend(instance, Axios.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); - -// 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$1.isHTMLForm(thing) ? new FormData(thing) : thing); - -axios.getAdapter = adapters.getAdapter; - -axios.HttpStatusCode = HttpStatusCode; - -axios.default = axios; - -module.exports = axios; -//# sourceMappingURL=axios.cjs.map diff --git a/.claude/skills/教学日程查询/node_modules/axios/dist/browser/axios.cjs.map b/.claude/skills/教学日程查询/node_modules/axios/dist/browser/axios.cjs.map deleted file mode 100644 index 0f6d80f..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/dist/browser/axios.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.cjs","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/null.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/browser/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/speedometer.js","../../lib/helpers/throttle.js","../../lib/helpers/progressEventReducer.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/cookies.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/core/mergeConfig.js","../../lib/helpers/resolveConfig.js","../../lib/adapters/xhr.js","../../lib/helpers/composeSignals.js","../../lib/helpers/trackStream.js","../../lib/adapters/fetch.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.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\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\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;\nconst { iterator, toStringTag } = Symbol;\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 a non-null object\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 (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\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 * 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 (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\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 React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\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 */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n if (!thing) return false;\n if (FormDataCtor && thing instanceof FormDataCtor) return true;\n // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9).\n const proto = getPrototypeOf(thing);\n if (!proto || proto === Object.prototype) return false;\n if (!isFunction(thing.append)) return false;\n const kind = kindOf(thing);\n return kind === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]');\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\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\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) => {\n return str.trim ? 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 {Object} [options]\n * @param {Boolean} [options.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 // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\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\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\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 * const 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, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\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 if (!skipUndefined || !isUndefined(val)) {\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 {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\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 Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\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 * 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[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, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(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\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\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 return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\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 !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\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\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\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 isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\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 */\n constructor(message, code, config, request, response) {\n super(message);\n\n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true,\n });\n\n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n 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.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\nAxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED';\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\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\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(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\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 maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth;\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 (utils.isBoolean(value)) {\n return value.toString();\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 (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\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) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : 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, depth = 0) {\n if (utils.isUndefined(value)) return;\n\n if (depth > maxDepth) {\n throw new AxiosError(\n 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,\n AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED\n );\n }\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 =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key], depth + 1);\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 };\n return encodeURIComponent(str).replace(/[!'()~]|%20/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\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\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 URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain 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}\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|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\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 * @param {Object} options The options for the interceptor, synchronous and runWhen\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 {void}\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 legacyInterceptorReqResOrdering: true,\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\nconst _navigator = (typeof navigator === 'object' && navigator) || 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 hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\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\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\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(), {\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}\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] = utils.isArray(target[name])\n ? target[name].concat(value)\n : [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\nconst own = (obj, key) => (obj != null && utils.hasOwnProp(obj, key) ? obj[key] : undefined);\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 transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n 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 (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(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 const formSerializer = own(this, 'formSerializer');\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const env = own(this, 'env');\n const _FormData = env && env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n 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\n transformResponse: [\n function transformResponse(data) {\n const transitional = own(this, 'transitional') || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const responseType = own(this, 'responseType');\n const JSONRequested = responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, own(this, 'parseReviver'));\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(this, 'response'));\n }\n throw e;\n }\n }\n }\n\n return data;\n },\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',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n '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 &&\n 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\nconst INVALID_HEADER_VALUE_CHARS_RE = /[^\\x09\\x20-\\x7E\\x80-\\xFF]/g;\n\nfunction trimSPorHTAB(str) {\n let start = 0;\n let end = str.length;\n\n while (start < end) {\n const code = str.charCodeAt(start);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n start += 1;\n }\n\n while (end > start) {\n const code = str.charCodeAt(end - 1);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n end -= 1;\n }\n\n return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction sanitizeHeaderValue(str) {\n return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, ''));\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(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\n .trim()\n .toLowerCase()\n .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 (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\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 if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, 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 !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\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 &&\n value !== false &&\n (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())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\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 =\n (this[$internals] =\n this[$internals] =\n {\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([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\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';\n\nclass CanceledError extends AxiosError {\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 */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\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(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\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\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","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const rawLoaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded;\n const progressBytes = Math.max(0, loaded - bytesNotified);\n const rate = _speedometer(progressBytes);\n\n bytesNotified = Math.max(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 ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\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","'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 if (typeof url !== 'string') {\n return false;\n }\n\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, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\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\n // Use a null-prototype object so that downstream reads such as `config.auth`\n // or `config.baseURL` cannot inherit polluted values from Object.prototype\n // (see GHSA-q8qp-cvcw-x6jj). `hasOwnProperty` is restored as a non-enumerable\n // own slot to preserve ergonomics for user code that relies on it.\n const config = Object.create(null);\n Object.defineProperty(config, 'hasOwnProperty', {\n value: Object.prototype.hasOwnProperty,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n\n function getMergedValue(target, source, prop, 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 function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, 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 (utils.hasOwnProp(config2, prop)) {\n return getMergedValue(a, b);\n } else if (utils.hasOwnProp(config1, prop)) {\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 allowedSocketPaths: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined;\n const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined;\n const configValue = merge(a, b, prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n // Read only own properties to prevent prototype pollution gadgets\n // (e.g. Object.prototype.baseURL = 'https://evil.com'). See GHSA-q8qp-cvcw-x6jj.\n const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined);\n\n const data = own('data');\n let withXSRFToken = own('withXSRFToken');\n const xsrfHeaderName = own('xsrfHeaderName');\n const xsrfCookieName = own('xsrfCookieName');\n let headers = own('headers');\n const auth = own('auth');\n const baseURL = own('baseURL');\n const allowAbsoluteUrls = own('allowAbsoluteUrls');\n const url = own('url');\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(baseURL, url, allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\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\n if (platform.hasStandardBrowserEnv) {\n if (utils.isFunction(withXSRFToken)) {\n withXSRFToken = withXSRFToken(newConfig);\n }\n\n // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)\n // and misconfigurations (e.g. \"false\") from short-circuiting the same-origin check and leaking\n // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c.\n const shouldSendXSRF =\n withXSRFToken === true ||\n (withXSRFToken == null && isURLSameOrigin(newConfig.url));\n\n if (shouldSendXSRF) {\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.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 { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, 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 =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : 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(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\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 (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\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(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\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 (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\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\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const request = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n });\n\n const hasContentType = request.headers.has('Content-Type');\n\n if (request.body != null) {\n request.body.cancel();\n }\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n // If data is FormData and Content-Type is multipart/form-data without boundary,\n // delete it so fetch can set it correctly with the boundary\n if (utils.isFormData(data)) {\n const contentType = headers.getContentType();\n if (\n contentType &&\n /^multipart\\/form-data/i.test(contentType) &&\n !/boundary=/i.test(contentType)\n ) {\n headers.delete('content-type');\n }\n }\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\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\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\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 && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `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\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\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\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\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(config, config.transformRequest);\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, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\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}\n","export const VERSION = \"1.15.2\";","'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 (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\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\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return 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 // Use hasOwnProperty so a polluted Object.prototype. cannot supply\n // a non-function validator and cause a TypeError. See GHSA-q8qp-cvcw-x6jj.\n const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined;\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(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\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';\nimport transitionalDefaults from '../defaults/transitional.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 = (() => {\n if (!dummy.stack) {\n return '';\n }\n\n const firstNewlineIndex = dummy.stack.indexOf('\\n');\n\n return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1);\n })();\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack) {\n const firstNewlineIndex = stack.indexOf('\\n');\n const secondNewlineIndex =\n firstNewlineIndex === -1 ? -1 : stack.indexOf('\\n', firstNewlineIndex + 1);\n const stackWithoutTwoTopLines =\n secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1);\n\n if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) {\n err.stack += '\\n' + stack;\n }\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\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(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\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(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\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 const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\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(...requestInterceptorChain);\n chain.push(...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 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, config.allowAbsoluteUrls);\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(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\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 toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\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 * const 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 WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\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":["isFunction","utils","encode","URLSearchParams","FormData","Blob","platform","ReadableStream","fetchAdapter.getFetch","validators"],"mappings":"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"} \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/axios/dist/esm/axios.js b/.claude/skills/教学日程查询/node_modules/axios/dist/esm/axios.js deleted file mode 100644 index db37898..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/dist/esm/axios.js +++ /dev/null @@ -1,4358 +0,0 @@ -/*! Axios v1.15.2 Copyright (c) 2026 Matt Zabriskie and contributors */ -/** - * Create a bound version of a function with a specified `this` context - * - * @param {Function} fn - The function to bind - * @param {*} thisArg - The value to be passed as the `this` parameter - * @returns {Function} A new function that will call the original function with the specified `this` context - */ -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 { iterator, toStringTag } = Symbol; - -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 a non-null object - * - * @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$1(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$1 = 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) && - !(toStringTag in val) && - !(iterator in val) - ); -}; - -/** - * Determine if a value is an empty object (safely handles Buffers) - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an empty object, otherwise false - */ -const isEmptyObject = (val) => { - // Early return for non-objects or Buffers to prevent RangeError - if (!isObject(val) || isBuffer(val)) { - return false; - } - - try { - return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; - } catch (e) { - // Fallback for any other objects that might cause RangeError with Object.keys() - return false; - } -}; - -/** - * 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 React Native Blob - * React Native "blob": an object with a `uri` attribute. Optionally, it can - * also have a `name` and `type` attribute to specify filename and content type - * - * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 - * - * @param {*} value The value to test - * - * @returns {boolean} True if value is a React Native Blob, otherwise false - */ -const isReactNativeBlob = (value) => { - return !!(value && typeof value.uri !== 'undefined'); -}; - -/** - * Determine if environment is React Native - * ReactNative `FormData` has a non-standard `getParts()` method - * - * @param {*} formData The formData to test - * - * @returns {boolean} True if environment is React Native, otherwise false - */ -const isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined'; - -/** - * 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$1(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 - */ -function getGlobal() { - if (typeof globalThis !== 'undefined') return globalThis; - if (typeof self !== 'undefined') return self; - if (typeof window !== 'undefined') return window; - if (typeof global !== 'undefined') return global; - return {}; -} - -const G = getGlobal(); -const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; - -const isFormData = (thing) => { - if (!thing) return false; - if (FormDataCtor && thing instanceof FormDataCtor) return true; - // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9). - const proto = getPrototypeOf(thing); - if (!proto || proto === Object.prototype) return false; - if (!isFunction$1(thing.append)) return false; - const kind = kindOf(thing); - return kind === 'formdata' || - // detect form-data instance - (kind === 'object' && isFunction$1(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'); - -const [isReadableStream, isRequest, isResponse, isHeaders] = [ - 'ReadableStream', - 'Request', - 'Response', - 'Headers', -].map(kindOfTest); - -/** - * 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) => { - 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 {Object} [options] - * @param {Boolean} [options.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 { - // Buffer check - if (isBuffer(obj)) { - return; - } - - // 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); - } - } -} - -/** - * Finds a key in an object, case-insensitive, returning the actual key name. - * Returns null if the object is a Buffer or if no match is found. - * - * @param {Object} obj - The object to search. - * @param {string} key - The key to find (case-insensitive). - * @returns {?string} The actual key name if found, otherwise null. - */ -function findKey(obj, key) { - if (isBuffer(obj)) { - return null; - } - - 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 - * const 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, skipUndefined } = (isContextDefined(this) && this) || {}; - const result = {}; - const assignValue = (val, key) => { - // Skip dangerous property names to prevent prototype pollution - if (key === '__proto__' || key === 'constructor' || key === 'prototype') { - return; - } - - 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 if (!skipUndefined || !isUndefined(val)) { - 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 {Object} [options] - * @param {Boolean} [options.allOwnKeys] - * @returns {Object} The resulting value of object a - */ -const extend = (a, b, thisArg, { allOwnKeys } = {}) => { - forEach( - b, - (val, key) => { - if (thisArg && isFunction$1(val)) { - Object.defineProperty(a, key, { - value: bind(val, thisArg), - writable: true, - enumerable: true, - configurable: true, - }); - } else { - Object.defineProperty(a, key, { - value: val, - writable: true, - enumerable: true, - configurable: true, - }); - } - }, - { 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); - Object.defineProperty(constructor.prototype, 'constructor', { - value: constructor, - writable: true, - enumerable: false, - configurable: true, - }); - 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[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$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - - const value = obj[name]; - - if (!isFunction$1(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 + "'"); - }; - } - }); -}; - -/** - * Converts an array or a delimited string into an object set with values as keys and true as values. - * Useful for fast membership checks. - * - * @param {Array|string} arrayOrString - The array or string to convert. - * @param {string} delimiter - The delimiter to use if input is a string. - * @returns {Object} An object with keys from the array or string, values set to true. - */ -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) => { - return value != null && Number.isFinite((value = +value)) ? value : defaultValue; -}; - -/** - * 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$1(thing.append) && - thing[toStringTag] === 'FormData' && - thing[iterator] - ); -} - -/** - * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. - * - * @param {Object} obj - The object to convert. - * @returns {Object} The JSON-compatible object. - */ -const toJSONObject = (obj) => { - const stack = new Array(10); - - const visit = (source, i) => { - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - - //Buffer check - if (isBuffer(source)) { - return source; - } - - 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); -}; - -/** - * Determines if a value is an async function. - * - * @param {*} thing - The value to test. - * @returns {boolean} True if value is an async function, otherwise false. - */ -const isAsyncFn = kindOfTest('AsyncFunction'); - -/** - * Determines if a value is thenable (has then and catch methods). - * - * @param {*} thing - The value to test. - * @returns {boolean} True if value is thenable, otherwise false. - */ -const isThenable = (thing) => - thing && - (isObject(thing) || isFunction$1(thing)) && - isFunction$1(thing.then) && - isFunction$1(thing.catch); - -// original code -// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 - -/** - * Provides a cross-platform setImmediate implementation. - * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. - * - * @param {boolean} setImmediateSupported - Whether setImmediate is supported. - * @param {boolean} postMessageSupported - Whether postMessage is supported. - * @returns {Function} A function to schedule a callback asynchronously. - */ -const _setImmediate = ((setImmediateSupported, postMessageSupported) => { - if (setImmediateSupported) { - return setImmediate; - } - - return postMessageSupported - ? ((token, callbacks) => { - _global.addEventListener( - 'message', - ({ source, data }) => { - if (source === _global && data === token) { - callbacks.length && callbacks.shift()(); - } - }, - false - ); - - return (cb) => { - callbacks.push(cb); - _global.postMessage(token, '*'); - }; - })(`axios@${Math.random()}`, []) - : (cb) => setTimeout(cb); -})(typeof setImmediate === 'function', isFunction$1(_global.postMessage)); - -/** - * Schedules a microtask or asynchronous callback as soon as possible. - * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. - * - * @type {Function} - */ -const asap = - typeof queueMicrotask !== 'undefined' - ? queueMicrotask.bind(_global) - : (typeof process !== 'undefined' && process.nextTick) || _setImmediate; - -// ********************* - -const isIterable = (thing) => thing != null && isFunction$1(thing[iterator]); - -var utils$1 = { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isEmptyObject, - isReadableStream, - isRequest, - isResponse, - isHeaders, - isUndefined, - isDate, - isFile, - isReactNativeBlob, - isReactNative, - isBlob, - isRegExp, - isFunction: isFunction$1, - 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, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable, - setImmediate: _setImmediate, - asap, - isIterable, -}; - -let AxiosError$1 = class AxiosError extends Error { - static from(error, code, config, request, response, customProps) { - const axiosError = new AxiosError(error.message, code || error.code, config, request, response); - axiosError.cause = error; - axiosError.name = error.name; - - // Preserve status from the original error if not already set from response - if (error.status != null && axiosError.status == null) { - axiosError.status = error.status; - } - - customProps && Object.assign(axiosError, customProps); - return axiosError; - } - - /** - * 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. - */ - constructor(message, code, config, request, response) { - super(message); - - // Make message enumerable to maintain backward compatibility - // The native Error constructor sets message as non-enumerable, - // but axios < v1.13.3 had it as enumerable - Object.defineProperty(this, 'message', { - value: message, - enumerable: true, - writable: true, - configurable: true, - }); - - this.name = 'AxiosError'; - this.isAxiosError = true; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - if (response) { - this.response = response; - this.status = response.status; - } - } - - 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.status, - }; - } -}; - -// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. -AxiosError$1.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; -AxiosError$1.ERR_BAD_OPTION = 'ERR_BAD_OPTION'; -AxiosError$1.ECONNABORTED = 'ECONNABORTED'; -AxiosError$1.ETIMEDOUT = 'ETIMEDOUT'; -AxiosError$1.ERR_NETWORK = 'ERR_NETWORK'; -AxiosError$1.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; -AxiosError$1.ERR_DEPRECATED = 'ERR_DEPRECATED'; -AxiosError$1.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; -AxiosError$1.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; -AxiosError$1.ERR_CANCELED = 'ERR_CANCELED'; -AxiosError$1.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; -AxiosError$1.ERR_INVALID_URL = 'ERR_INVALID_URL'; -AxiosError$1.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED'; - -// 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$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 maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth; - 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 (utils$1.isBoolean(value)) { - return value.toString(); - } - - 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 (utils$1.isReactNative(formData) && utils$1.isReactNativeBlob(value)) { - formData.append(renderKey(path, key, dots), convertValue(value)); - return false; - } - - 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, depth = 0) { - if (utils$1.isUndefined(value)) return; - - if (depth > maxDepth) { - throw new AxiosError$1( - 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth, - AxiosError$1.ERR_FORM_DATA_DEPTH_EXCEEDED - ); - } - - 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], depth + 1); - } - }); - - 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': '+', - }; - return encodeURIComponent(str).replace(/[!'()~]|%20/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 URL-encoded forms of `:`, `$`, `,`, and spaces with - * their plain 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, '+'); -} - -/** - * 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|Function)} options - * - * @returns {string} The formatted url - */ -function buildURL(url, params, options) { - if (!params) { - return url; - } - - const _encode = (options && options.encode) || encode; - - const _options = utils$1.isFunction(options) - ? { - serialize: options, - } - : options; - - 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` - * @param {Object} options The options for the interceptor, synchronous and runWhen - * - * @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 {void} - */ - 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 transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false, - legacyInterceptorReqResOrdering: true, -}; - -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'; - -const _navigator = (typeof navigator === 'object' && navigator) || 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 = - hasBrowserEnv && - (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); - -/** - * 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 origin = (hasBrowserEnv && window.location.href) || 'http://localhost'; - -var utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserEnv: hasStandardBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, - navigator: _navigator, - origin: origin -}); - -var platform = { - ...utils, - ...platform$1, -}; - -function toURLEncodedForm(data, options) { - return toFormData$1(data, new platform.classes.URLSearchParams(), { - 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] = utils$1.isArray(target[name]) - ? target[name].concat(value) - : [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; -} - -const own = (obj, key) => (obj != null && utils$1.hasOwnProp(obj, key) ? obj[key] : undefined); - -/** - * 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', 'fetch'], - - 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) || - utils$1.isReadableStream(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) { - const formSerializer = own(this, 'formSerializer'); - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, formSerializer).toString(); - } - - if ( - (isFileList = utils$1.isFileList(data)) || - contentType.indexOf('multipart/form-data') > -1 - ) { - const env = own(this, 'env'); - const _FormData = env && env.FormData; - - return toFormData$1( - isFileList ? { 'files[]': data } : data, - _FormData && new _FormData(), - formSerializer - ); - } - } - - if (isObjectPayload || hasJSONContentType) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - - return data; - }, - ], - - transformResponse: [ - function transformResponse(data) { - const transitional = own(this, 'transitional') || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const responseType = own(this, 'responseType'); - const JSONRequested = responseType === 'json'; - - if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { - return data; - } - - if ( - data && - utils$1.isString(data) && - ((forcedJSONParsing && !responseType) || JSONRequested) - ) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - - try { - return JSON.parse(data, own(this, 'parseReviver')); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, own(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] = {}; -}); - -// 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'); - -const INVALID_HEADER_VALUE_CHARS_RE = /[^\x09\x20-\x7E\x80-\xFF]/g; - -function trimSPorHTAB(str) { - let start = 0; - let end = str.length; - - while (start < end) { - const code = str.charCodeAt(start); - - if (code !== 0x09 && code !== 0x20) { - break; - } - - start += 1; - } - - while (end > start) { - const code = str.charCodeAt(end - 1); - - if (code !== 0x09 && code !== 0x20) { - break; - } - - end -= 1; - } - - return start === 0 && end === str.length ? str : str.slice(start, end); -} - -function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); -} - -function sanitizeHeaderValue(str) { - return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, '')); -} - -function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - - return utils$1.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(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, - }); - }); -} - -let AxiosHeaders$1 = 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 if (utils$1.isObject(header) && utils$1.isIterable(header)) { - let obj = {}, - dest, - key; - for (const entry of header) { - if (!utils$1.isArray(entry)) { - throw TypeError('Object iterator must return a key-value pair'); - } - - obj[(key = entry[0])] = (dest = obj[key]) - ? utils$1.isArray(dest) - ? [...dest, entry[1]] - : [dest, entry[1]] - : entry[1]; - } - - setHeaders(obj, 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'); - } - - getSetCookie() { - return this.get('set-cookie') || []; - } - - 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); - -/** - * 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; - 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$1(value) { - return !!(value && value.__CANCEL__); -} - -let CanceledError$1 = class CanceledError extends AxiosError$1 { - /** - * 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. - */ - constructor(message, config, request) { - super(message == null ? 'canceled' : message, AxiosError$1.ERR_CANCELED, config, request); - this.name = 'CanceledError'; - this.__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 - ) - ); - } -} - -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; - }; -} - -/** - * Throttle decorator - * @param {Function} fn - * @param {Number} freq - * @return {Function} - */ -function throttle(fn, freq) { - let timestamp = 0; - let threshold = 1000 / freq; - let lastArgs; - let timer; - - const invoke = (args, now = Date.now()) => { - timestamp = now; - lastArgs = null; - if (timer) { - clearTimeout(timer); - timer = null; - } - fn(...args); - }; - - const throttled = (...args) => { - const now = Date.now(); - const passed = now - timestamp; - if (passed >= threshold) { - invoke(args, now); - } else { - lastArgs = args; - if (!timer) { - timer = setTimeout(() => { - timer = null; - invoke(lastArgs); - }, threshold - passed); - } - } - }; - - const flush = () => lastArgs && invoke(lastArgs); - - return [throttled, flush]; -} - -const progressEventReducer = (listener, isDownloadStream, freq = 3) => { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - - return throttle((e) => { - const rawLoaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded; - const progressBytes = Math.max(0, loaded - bytesNotified); - const rate = _speedometer(progressBytes); - - bytesNotified = Math.max(bytesNotified, loaded); - - const data = { - loaded, - total, - progress: total ? loaded / total : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total ? (total - loaded) / rate : undefined, - event: e, - lengthComputable: total != null, - [isDownloadStream ? 'download' : 'upload']: true, - }; - - listener(data); - }, freq); -}; - -const progressEventDecorator = (total, throttled) => { - const lengthComputable = total != null; - - return [ - (loaded) => - throttled[0]({ - lengthComputable, - total, - loaded, - }), - throttled[1], - ]; -}; - -const asyncDecorator = - (fn) => - (...args) => - utils$1.asap(() => fn(...args)); - -var isURLSameOrigin = platform.hasStandardBrowserEnv - ? ((origin, isMSIE) => (url) => { - url = new URL(url, platform.origin); - - return ( - origin.protocol === url.protocol && - origin.host === url.host && - (isMSIE || origin.port === url.port) - ); - })( - new URL(platform.origin), - platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) - ) - : () => true; - -var cookies = platform.hasStandardBrowserEnv - ? // Standard browser envs support document.cookie - { - write(name, value, expires, path, domain, secure, sameSite) { - if (typeof document === 'undefined') return; - - const cookie = [`${name}=${encodeURIComponent(value)}`]; - - if (utils$1.isNumber(expires)) { - cookie.push(`expires=${new Date(expires).toUTCString()}`); - } - if (utils$1.isString(path)) { - cookie.push(`path=${path}`); - } - if (utils$1.isString(domain)) { - cookie.push(`domain=${domain}`); - } - if (secure === true) { - cookie.push('secure'); - } - if (utils$1.isString(sameSite)) { - cookie.push(`SameSite=${sameSite}`); - } - - document.cookie = cookie.join('; '); - }, - - read(name) { - if (typeof document === 'undefined') return null; - const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); - return match ? decodeURIComponent(match[1]) : 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. - if (typeof url !== 'string') { - return false; - } - - 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, allowAbsoluteUrls) { - let isRelativeUrl = !isAbsoluteURL(requestedURL); - if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; -} - -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$1(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - - // Use a null-prototype object so that downstream reads such as `config.auth` - // or `config.baseURL` cannot inherit polluted values from Object.prototype - // (see GHSA-q8qp-cvcw-x6jj). `hasOwnProperty` is restored as a non-enumerable - // own slot to preserve ergonomics for user code that relies on it. - const config = Object.create(null); - Object.defineProperty(config, 'hasOwnProperty', { - value: Object.prototype.hasOwnProperty, - enumerable: false, - writable: true, - configurable: true, - }); - - function getMergedValue(target, source, prop, 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; - } - - function mergeDeepProperties(a, b, prop, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, prop, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a, prop, 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 (utils$1.hasOwnProp(config2, prop)) { - return getMergedValue(a, b); - } else if (utils$1.hasOwnProp(config1, prop)) { - 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, - allowedSocketPaths: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b, prop) => - mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true), - }; - - utils$1.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) { - if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; - const merge = utils$1.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; - const a = utils$1.hasOwnProp(config1, prop) ? config1[prop] : undefined; - const b = utils$1.hasOwnProp(config2, prop) ? config2[prop] : undefined; - const configValue = merge(a, b, prop); - (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); - }); - - return config; -} - -var resolveConfig = (config) => { - const newConfig = mergeConfig$1({}, config); - - // Read only own properties to prevent prototype pollution gadgets - // (e.g. Object.prototype.baseURL = 'https://evil.com'). See GHSA-q8qp-cvcw-x6jj. - const own = (key) => (utils$1.hasOwnProp(newConfig, key) ? newConfig[key] : undefined); - - const data = own('data'); - let withXSRFToken = own('withXSRFToken'); - const xsrfHeaderName = own('xsrfHeaderName'); - const xsrfCookieName = own('xsrfCookieName'); - let headers = own('headers'); - const auth = own('auth'); - const baseURL = own('baseURL'); - const allowAbsoluteUrls = own('allowAbsoluteUrls'); - const url = own('url'); - - newConfig.headers = headers = AxiosHeaders$1.from(headers); - - newConfig.url = buildURL( - buildFullPath(baseURL, url, allowAbsoluteUrls), - config.params, - config.paramsSerializer - ); - - // HTTP basic authentication - if (auth) { - headers.set( - 'Authorization', - 'Basic ' + - btoa( - (auth.username || '') + - ':' + - (auth.password ? unescape(encodeURIComponent(auth.password)) : '') - ) - ); - } - - if (utils$1.isFormData(data)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - headers.setContentType(undefined); // browser handles it - } else if (utils$1.isFunction(data.getHeaders)) { - // Node.js FormData (like form-data package) - const formHeaders = data.getHeaders(); - // Only set safe headers to avoid overwriting security headers - const allowedHeaders = ['content-type', 'content-length']; - Object.entries(formHeaders).forEach(([key, val]) => { - if (allowedHeaders.includes(key.toLowerCase())) { - headers.set(key, val); - } - }); - } - } - - // 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) { - if (utils$1.isFunction(withXSRFToken)) { - withXSRFToken = withXSRFToken(newConfig); - } - - // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1) - // and misconfigurations (e.g. "false") from short-circuiting the same-origin check and leaking - // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c. - const shouldSendXSRF = - withXSRFToken === true || - (withXSRFToken == null && isURLSameOrigin(newConfig.url)); - - if (shouldSendXSRF) { - const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); - - if (xsrfValue) { - headers.set(xsrfHeaderName, xsrfValue); - } - } - } - - return newConfig; -}; - -const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -var xhrAdapter = isXHRAdapterSupported && - function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - const _config = resolveConfig(config); - let requestData = _config.data; - const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize(); - let { responseType, onUploadProgress, onDownloadProgress } = _config; - let onCanceled; - let uploadThrottled, downloadThrottled; - let flushUpload, flushDownload; - - function done() { - flushUpload && flushUpload(); // flush events - flushDownload && flushDownload(); // flush events - - _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); - - _config.signal && _config.signal.removeEventListener('abort', onCanceled); - } - - let request = new XMLHttpRequest(); - - request.open(_config.method.toUpperCase(), _config.url, 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$1('Request aborted', AxiosError$1.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError(event) { - // Browsers deliver a ProgressEvent in XHR onerror - // (message may be empty; when present, surface it) - // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event - const msg = event && event.message ? event.message : 'Network Error'; - const err = new AxiosError$1(msg, AxiosError$1.ERR_NETWORK, config, request); - // attach the underlying event for consumers who want details - err.event = event || null; - reject(err); - 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; - }; - - // 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 (onDownloadProgress) { - [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); - request.addEventListener('progress', downloadThrottled); - } - - // Not all browsers support upload events - if (onUploadProgress && request.upload) { - [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); - - request.upload.addEventListener('progress', uploadThrottled); - - request.upload.addEventListener('loadend', flushUpload); - } - - 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(_config.url); - - 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 composeSignals = (signals, timeout) => { - const { length } = (signals = signals ? signals.filter(Boolean) : []); - - if (timeout || length) { - let controller = new AbortController(); - - let aborted; - - const onabort = function (reason) { - if (!aborted) { - aborted = true; - unsubscribe(); - const err = reason instanceof Error ? reason : this.reason; - controller.abort( - err instanceof AxiosError$1 - ? err - : new CanceledError$1(err instanceof Error ? err.message : err) - ); - } - }; - - let timer = - timeout && - setTimeout(() => { - timer = null; - onabort(new AxiosError$1(`timeout of ${timeout}ms exceeded`, AxiosError$1.ETIMEDOUT)); - }, timeout); - - const unsubscribe = () => { - if (signals) { - timer && clearTimeout(timer); - timer = null; - signals.forEach((signal) => { - signal.unsubscribe - ? signal.unsubscribe(onabort) - : signal.removeEventListener('abort', onabort); - }); - signals = null; - } - }; - - signals.forEach((signal) => signal.addEventListener('abort', onabort)); - - const { signal } = controller; - - signal.unsubscribe = () => utils$1.asap(unsubscribe); - - return signal; - } -}; - -const streamChunk = function* (chunk, chunkSize) { - let len = chunk.byteLength; - - if (len < chunkSize) { - yield chunk; - return; - } - - let pos = 0; - let end; - - while (pos < len) { - end = pos + chunkSize; - yield chunk.slice(pos, end); - pos = end; - } -}; - -const readBytes = async function* (iterable, chunkSize) { - for await (const chunk of readStream(iterable)) { - yield* streamChunk(chunk, chunkSize); - } -}; - -const readStream = async function* (stream) { - if (stream[Symbol.asyncIterator]) { - yield* stream; - return; - } - - const reader = stream.getReader(); - try { - for (;;) { - const { done, value } = await reader.read(); - if (done) { - break; - } - yield value; - } - } finally { - await reader.cancel(); - } -}; - -const trackStream = (stream, chunkSize, onProgress, onFinish) => { - const iterator = readBytes(stream, chunkSize); - - let bytes = 0; - let done; - let _onFinish = (e) => { - if (!done) { - done = true; - onFinish && onFinish(e); - } - }; - - return new ReadableStream( - { - async pull(controller) { - try { - const { done, value } = await iterator.next(); - - if (done) { - _onFinish(); - controller.close(); - return; - } - - let len = value.byteLength; - if (onProgress) { - let loadedBytes = (bytes += len); - onProgress(loadedBytes); - } - controller.enqueue(new Uint8Array(value)); - } catch (err) { - _onFinish(err); - throw err; - } - }, - cancel(reason) { - _onFinish(reason); - return iterator.return(); - }, - }, - { - highWaterMark: 2, - } - ); -}; - -const DEFAULT_CHUNK_SIZE = 64 * 1024; - -const { isFunction } = utils$1; - -const globalFetchAPI = (({ Request, Response }) => ({ - Request, - Response, -}))(utils$1.global); - -const { ReadableStream: ReadableStream$1, TextEncoder } = utils$1.global; - -const test = (fn, ...args) => { - try { - return !!fn(...args); - } catch (e) { - return false; - } -}; - -const factory = (env) => { - env = utils$1.merge.call( - { - skipUndefined: true, - }, - globalFetchAPI, - env - ); - - const { fetch: envFetch, Request, Response } = env; - const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; - const isRequestSupported = isFunction(Request); - const isResponseSupported = isFunction(Response); - - if (!isFetchSupported) { - return false; - } - - const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1); - - const encodeText = - isFetchSupported && - (typeof TextEncoder === 'function' - ? ( - (encoder) => (str) => - encoder.encode(str) - )(new TextEncoder()) - : async (str) => new Uint8Array(await new Request(str).arrayBuffer())); - - const supportsRequestStream = - isRequestSupported && - isReadableStreamSupported && - test(() => { - let duplexAccessed = false; - - const request = new Request(platform.origin, { - body: new ReadableStream$1(), - method: 'POST', - get duplex() { - duplexAccessed = true; - return 'half'; - }, - }); - - const hasContentType = request.headers.has('Content-Type'); - - if (request.body != null) { - request.body.cancel(); - } - - return duplexAccessed && !hasContentType; - }); - - const supportsResponseStream = - isResponseSupported && - isReadableStreamSupported && - test(() => utils$1.isReadableStream(new Response('').body)); - - const resolvers = { - stream: supportsResponseStream && ((res) => res.body), - }; - - isFetchSupported && - (() => { - ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => { - !resolvers[type] && - (resolvers[type] = (res, config) => { - let method = res && res[type]; - - if (method) { - return method.call(res); - } - - throw new AxiosError$1( - `Response type '${type}' is not supported`, - AxiosError$1.ERR_NOT_SUPPORT, - config - ); - }); - }); - })(); - - const getBodyLength = async (body) => { - if (body == null) { - return 0; - } - - if (utils$1.isBlob(body)) { - return body.size; - } - - if (utils$1.isSpecCompliantForm(body)) { - const _request = new Request(platform.origin, { - method: 'POST', - body, - }); - return (await _request.arrayBuffer()).byteLength; - } - - if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) { - return body.byteLength; - } - - if (utils$1.isURLSearchParams(body)) { - body = body + ''; - } - - if (utils$1.isString(body)) { - return (await encodeText(body)).byteLength; - } - }; - - const resolveBodyLength = async (headers, body) => { - const length = utils$1.toFiniteNumber(headers.getContentLength()); - - return length == null ? getBodyLength(body) : length; - }; - - return async (config) => { - let { - url, - method, - data, - signal, - cancelToken, - timeout, - onDownloadProgress, - onUploadProgress, - responseType, - headers, - withCredentials = 'same-origin', - fetchOptions, - } = resolveConfig(config); - - let _fetch = envFetch || fetch; - - responseType = responseType ? (responseType + '').toLowerCase() : 'text'; - - let composedSignal = composeSignals( - [signal, cancelToken && cancelToken.toAbortSignal()], - timeout - ); - - let request = null; - - const unsubscribe = - composedSignal && - composedSignal.unsubscribe && - (() => { - composedSignal.unsubscribe(); - }); - - let requestContentLength; - - try { - if ( - onUploadProgress && - supportsRequestStream && - method !== 'get' && - method !== 'head' && - (requestContentLength = await resolveBodyLength(headers, data)) !== 0 - ) { - let _request = new Request(url, { - method: 'POST', - body: data, - duplex: 'half', - }); - - let contentTypeHeader; - - if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { - headers.setContentType(contentTypeHeader); - } - - if (_request.body) { - const [onProgress, flush] = progressEventDecorator( - requestContentLength, - progressEventReducer(asyncDecorator(onUploadProgress)) - ); - - data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); - } - } - - if (!utils$1.isString(withCredentials)) { - withCredentials = withCredentials ? 'include' : 'omit'; - } - - // Cloudflare Workers throws when credentials are defined - // see https://github.com/cloudflare/workerd/issues/902 - const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; - - // If data is FormData and Content-Type is multipart/form-data without boundary, - // delete it so fetch can set it correctly with the boundary - if (utils$1.isFormData(data)) { - const contentType = headers.getContentType(); - if ( - contentType && - /^multipart\/form-data/i.test(contentType) && - !/boundary=/i.test(contentType) - ) { - headers.delete('content-type'); - } - } - - const resolvedOptions = { - ...fetchOptions, - signal: composedSignal, - method: method.toUpperCase(), - headers: headers.normalize().toJSON(), - body: data, - duplex: 'half', - credentials: isCredentialsSupported ? withCredentials : undefined, - }; - - request = isRequestSupported && new Request(url, resolvedOptions); - - let response = await (isRequestSupported - ? _fetch(request, fetchOptions) - : _fetch(url, resolvedOptions)); - - const isStreamResponse = - supportsResponseStream && (responseType === 'stream' || responseType === 'response'); - - if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) { - const options = {}; - - ['status', 'statusText', 'headers'].forEach((prop) => { - options[prop] = response[prop]; - }); - - const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length')); - - const [onProgress, flush] = - (onDownloadProgress && - progressEventDecorator( - responseContentLength, - progressEventReducer(asyncDecorator(onDownloadProgress), true) - )) || - []; - - response = new Response( - trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { - flush && flush(); - unsubscribe && unsubscribe(); - }), - options - ); - } - - responseType = responseType || 'text'; - - let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text']( - response, - config - ); - - !isStreamResponse && unsubscribe && unsubscribe(); - - return await new Promise((resolve, reject) => { - settle(resolve, reject, { - data: responseData, - headers: AxiosHeaders$1.from(response.headers), - status: response.status, - statusText: response.statusText, - config, - request, - }); - }); - } catch (err) { - unsubscribe && unsubscribe(); - - if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) { - throw Object.assign( - new AxiosError$1( - 'Network Error', - AxiosError$1.ERR_NETWORK, - config, - request, - err && err.response - ), - { - cause: err.cause || err, - } - ); - } - - throw AxiosError$1.from(err, err && err.code, config, request, err && err.response); - } - }; -}; - -const seedCache = new Map(); - -const getFetch = (config) => { - let env = (config && config.env) || {}; - const { fetch, Request, Response } = env; - const seeds = [Request, Response, fetch]; - - let len = seeds.length, - i = len, - seed, - target, - map = seedCache; - - while (i--) { - seed = seeds[i]; - target = map.get(seed); - - target === undefined && map.set(seed, (target = i ? new Map() : factory(env))); - - map = target; - } - - return target; -}; - -getFetch(); - -/** - * Known adapters mapping. - * Provides environment-specific adapters for Axios: - * - `http` for Node.js - * - `xhr` for browsers - * - `fetch` for fetch API-based requests - * - * @type {Object} - */ -const knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter, - fetch: { - get: getFetch, - }, -}; - -// Assign adapter names for easier debugging and identification -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 }); - } -}); - -/** - * Render a rejection reason string for unknown or unsupported adapters - * - * @param {string} reason - * @returns {string} - */ -const renderReason = (reason) => `- ${reason}`; - -/** - * Check if the adapter is resolved (function, null, or false) - * - * @param {Function|null|false} adapter - * @returns {boolean} - */ -const isResolvedHandle = (adapter) => - utils$1.isFunction(adapter) || adapter === null || adapter === false; - -/** - * Get the first suitable adapter from the provided list. - * Tries each adapter in order until a supported one is found. - * Throws an AxiosError if no adapter is suitable. - * - * @param {Array|string|Function} adapters - Adapter(s) by name or function. - * @param {Object} config - Axios request configuration - * @throws {AxiosError} If no suitable adapter is available - * @returns {Function} The resolved adapter function - */ -function getAdapter$1(adapters, config) { - 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 && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) { - 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; -} - -/** - * Exports Axios adapters and utility to resolve an adapter - */ -var adapters = { - /** - * Resolve an adapter from a list of adapter names or functions. - * @type {Function} - */ - getAdapter: getAdapter$1, - - /** - * Exposes all known adapters - * @type {Object} - */ - 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$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.adapter, config); - - 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$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$1.from(reason.response.headers); - } - } - - return Promise.reject(reason); - } - ); -} - -const VERSION$1 = "1.15.2"; - -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; - }; -}; - -validators$1.spelling = function spelling(correctSpelling) { - return (value, opt) => { - // eslint-disable-next-line no-console - console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); - return 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]; - // Use hasOwnProperty so a polluted Object.prototype. cannot supply - // a non-function validator and cause a TypeError. See GHSA-q8qp-cvcw-x6jj. - const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined; - 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); - } - } -} - -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 - */ -let Axios$1 = 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 = (() => { - if (!dummy.stack) { - return ''; - } - - const firstNewlineIndex = dummy.stack.indexOf('\n'); - - return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1); - })(); - try { - if (!err.stack) { - err.stack = stack; - // match without the 2 top stack lines - } else if (stack) { - const firstNewlineIndex = stack.indexOf('\n'); - const secondNewlineIndex = - firstNewlineIndex === -1 ? -1 : stack.indexOf('\n', firstNewlineIndex + 1); - const stackWithoutTwoTopLines = - secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1); - - if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) { - err.stack += '\n' + stack; - } - } - } catch (e) { - // ignore the case where "stack" is an un-writable property - } - } - - 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), - legacyInterceptorReqResOrdering: 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.allowAbsoluteUrls - if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) { - config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; - } else { - config.allowAbsoluteUrls = true; - } - - validator.assertOptions( - config, - { - baseUrl: validators.spelling('baseURL'), - withXsrfToken: validators.spelling('withXSRFToken'), - }, - 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; - - const transitional = config.transitional || transitionalDefaults; - const legacyInterceptorReqResOrdering = - transitional && transitional.legacyInterceptorReqResOrdering; - - if (legacyInterceptorReqResOrdering) { - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - } else { - requestInterceptorChain.push(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(...requestInterceptorChain); - chain.push(...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; - - 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, config.allowAbsoluteUrls); - 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) { - 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); -}); - -/** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @param {Function} executor The executor function. - * - * @returns {CancelToken} - */ -let CancelToken$1 = 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$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); - } - } - - toAbortSignal() { - const controller = new AbortController(); - - const abort = (err) => { - controller.abort(err); - }; - - this.subscribe(abort); - - controller.signal.unsubscribe = () => this.unsubscribe(abort); - - return controller.signal; - } - - /** - * 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, - }; - } -}; - -/** - * 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) {} - * const 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, - WebServerIsDown: 521, - ConnectionTimedOut: 522, - OriginIsUnreachable: 523, - TimeoutOccurred: 524, - SslHandshakeFailed: 525, - InvalidSslCertificate: 526, -}; - -Object.entries(HttpStatusCode$1).forEach(([key, value]) => { - HttpStatusCode$1[value] = key; -}); - -/** - * 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$1(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$1; - -// Expose Cancel & CancelToken -axios.CanceledError = CanceledError$1; -axios.CancelToken = CancelToken$1; -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$1; - -axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing); - -axios.getAdapter = adapters.getAdapter; - -axios.HttpStatusCode = HttpStatusCode$1; - -axios.default = 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; - -export { Axios, AxiosError, AxiosHeaders, Cancel, CancelToken, CanceledError, HttpStatusCode, VERSION, all, axios as default, formToJSON, getAdapter, isAxiosError, isCancel, mergeConfig, spread, toFormData }; -//# sourceMappingURL=axios.js.map diff --git a/.claude/skills/教学日程查询/node_modules/axios/dist/esm/axios.js.map b/.claude/skills/教学日程查询/node_modules/axios/dist/esm/axios.js.map deleted file mode 100644 index f83ce4f..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/dist/esm/axios.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.js","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/null.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/browser/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/speedometer.js","../../lib/helpers/throttle.js","../../lib/helpers/progressEventReducer.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/cookies.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/core/mergeConfig.js","../../lib/helpers/resolveConfig.js","../../lib/adapters/xhr.js","../../lib/helpers/composeSignals.js","../../lib/helpers/trackStream.js","../../lib/adapters/fetch.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.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\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\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;\nconst { iterator, toStringTag } = Symbol;\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 a non-null object\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 (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\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 * 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 (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\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 React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\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 */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n if (!thing) return false;\n if (FormDataCtor && thing instanceof FormDataCtor) return true;\n // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9).\n const proto = getPrototypeOf(thing);\n if (!proto || proto === Object.prototype) return false;\n if (!isFunction(thing.append)) return false;\n const kind = kindOf(thing);\n return kind === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]');\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\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\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) => {\n return str.trim ? 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 {Object} [options]\n * @param {Boolean} [options.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 // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\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\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\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 * const 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, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\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 if (!skipUndefined || !isUndefined(val)) {\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 {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\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 Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\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 * 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[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, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(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\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\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 return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\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 !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\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\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\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 isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\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 */\n constructor(message, code, config, request, response) {\n super(message);\n\n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true,\n });\n\n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n 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.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\nAxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED';\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\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\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(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\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 maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth;\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 (utils.isBoolean(value)) {\n return value.toString();\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 (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\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) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : 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, depth = 0) {\n if (utils.isUndefined(value)) return;\n\n if (depth > maxDepth) {\n throw new AxiosError(\n 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,\n AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED\n );\n }\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 =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key], depth + 1);\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 };\n return encodeURIComponent(str).replace(/[!'()~]|%20/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\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\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 URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain 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}\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|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\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 * @param {Object} options The options for the interceptor, synchronous and runWhen\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 {void}\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 legacyInterceptorReqResOrdering: true,\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\nconst _navigator = (typeof navigator === 'object' && navigator) || 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 hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\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\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\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(), {\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}\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] = utils.isArray(target[name])\n ? target[name].concat(value)\n : [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\nconst own = (obj, key) => (obj != null && utils.hasOwnProp(obj, key) ? obj[key] : undefined);\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 transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n 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 (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(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 const formSerializer = own(this, 'formSerializer');\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const env = own(this, 'env');\n const _FormData = env && env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n 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\n transformResponse: [\n function transformResponse(data) {\n const transitional = own(this, 'transitional') || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const responseType = own(this, 'responseType');\n const JSONRequested = responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, own(this, 'parseReviver'));\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(this, 'response'));\n }\n throw e;\n }\n }\n }\n\n return data;\n },\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',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n '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 &&\n 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\nconst INVALID_HEADER_VALUE_CHARS_RE = /[^\\x09\\x20-\\x7E\\x80-\\xFF]/g;\n\nfunction trimSPorHTAB(str) {\n let start = 0;\n let end = str.length;\n\n while (start < end) {\n const code = str.charCodeAt(start);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n start += 1;\n }\n\n while (end > start) {\n const code = str.charCodeAt(end - 1);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n end -= 1;\n }\n\n return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction sanitizeHeaderValue(str) {\n return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, ''));\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(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\n .trim()\n .toLowerCase()\n .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 (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\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 if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, 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 !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\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 &&\n value !== false &&\n (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())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\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 =\n (this[$internals] =\n this[$internals] =\n {\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([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\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';\n\nclass CanceledError extends AxiosError {\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 */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\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(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\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\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","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const rawLoaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded;\n const progressBytes = Math.max(0, loaded - bytesNotified);\n const rate = _speedometer(progressBytes);\n\n bytesNotified = Math.max(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 ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\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","'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 if (typeof url !== 'string') {\n return false;\n }\n\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, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\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\n // Use a null-prototype object so that downstream reads such as `config.auth`\n // or `config.baseURL` cannot inherit polluted values from Object.prototype\n // (see GHSA-q8qp-cvcw-x6jj). `hasOwnProperty` is restored as a non-enumerable\n // own slot to preserve ergonomics for user code that relies on it.\n const config = Object.create(null);\n Object.defineProperty(config, 'hasOwnProperty', {\n value: Object.prototype.hasOwnProperty,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n\n function getMergedValue(target, source, prop, 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 function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, 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 (utils.hasOwnProp(config2, prop)) {\n return getMergedValue(a, b);\n } else if (utils.hasOwnProp(config1, prop)) {\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 allowedSocketPaths: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined;\n const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined;\n const configValue = merge(a, b, prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n // Read only own properties to prevent prototype pollution gadgets\n // (e.g. Object.prototype.baseURL = 'https://evil.com'). See GHSA-q8qp-cvcw-x6jj.\n const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined);\n\n const data = own('data');\n let withXSRFToken = own('withXSRFToken');\n const xsrfHeaderName = own('xsrfHeaderName');\n const xsrfCookieName = own('xsrfCookieName');\n let headers = own('headers');\n const auth = own('auth');\n const baseURL = own('baseURL');\n const allowAbsoluteUrls = own('allowAbsoluteUrls');\n const url = own('url');\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(baseURL, url, allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\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\n if (platform.hasStandardBrowserEnv) {\n if (utils.isFunction(withXSRFToken)) {\n withXSRFToken = withXSRFToken(newConfig);\n }\n\n // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)\n // and misconfigurations (e.g. \"false\") from short-circuiting the same-origin check and leaking\n // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c.\n const shouldSendXSRF =\n withXSRFToken === true ||\n (withXSRFToken == null && isURLSameOrigin(newConfig.url));\n\n if (shouldSendXSRF) {\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.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 { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, 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 =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : 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(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\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 (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\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(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\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 (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\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\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const request = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n });\n\n const hasContentType = request.headers.has('Content-Type');\n\n if (request.body != null) {\n request.body.cancel();\n }\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n // If data is FormData and Content-Type is multipart/form-data without boundary,\n // delete it so fetch can set it correctly with the boundary\n if (utils.isFormData(data)) {\n const contentType = headers.getContentType();\n if (\n contentType &&\n /^multipart\\/form-data/i.test(contentType) &&\n !/boundary=/i.test(contentType)\n ) {\n headers.delete('content-type');\n }\n }\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\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\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\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 && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `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\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\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\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\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(config, config.transformRequest);\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, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\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}\n","export const VERSION = \"1.15.2\";","'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 (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\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\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return 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 // Use hasOwnProperty so a polluted Object.prototype. cannot supply\n // a non-function validator and cause a TypeError. See GHSA-q8qp-cvcw-x6jj.\n const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined;\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(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\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';\nimport transitionalDefaults from '../defaults/transitional.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 = (() => {\n if (!dummy.stack) {\n return '';\n }\n\n const firstNewlineIndex = dummy.stack.indexOf('\\n');\n\n return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1);\n })();\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack) {\n const firstNewlineIndex = stack.indexOf('\\n');\n const secondNewlineIndex =\n firstNewlineIndex === -1 ? -1 : stack.indexOf('\\n', firstNewlineIndex + 1);\n const stackWithoutTwoTopLines =\n secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1);\n\n if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) {\n err.stack += '\\n' + stack;\n }\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\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(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\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(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\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 const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\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(...requestInterceptorChain);\n chain.push(...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 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, config.allowAbsoluteUrls);\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(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\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 toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\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 * const 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 WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\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":["isFunction","utils","AxiosError","toFormData","encode","URLSearchParams","FormData","Blob","platform","AxiosHeaders","isCancel","mergeConfig","CanceledError","ReadableStream","fetchAdapter.getFetch","getAdapter","VERSION","validators","Axios","spread","isAxiosError","HttpStatusCode","CancelToken"],"mappings":"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"} \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/axios/dist/esm/axios.min.js b/.claude/skills/教学日程查询/node_modules/axios/dist/esm/axios.min.js deleted file mode 100644 index 60b3dba..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/dist/esm/axios.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! Axios v1.15.2 Copyright (c) 2026 Matt Zabriskie and contributors */ -function e(e,t){return function(){return e.apply(t,arguments)}}const{toString:t}=Object.prototype,{getPrototypeOf:n}=Object,{iterator:r,toStringTag:o}=Symbol,s=(i=Object.create(null),e=>{const n=t.call(e);return i[n]||(i[n]=n.slice(8,-1).toLowerCase())});var i;const a=e=>(e=e.toLowerCase(),t=>s(t)===e),c=e=>t=>typeof t===e,{isArray:l}=Array,u=c("undefined");function f(e){return null!==e&&!u(e)&&null!==e.constructor&&!u(e.constructor)&&h(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const d=a("ArrayBuffer");const p=c("string"),h=c("function"),m=c("number"),b=e=>null!==e&&"object"==typeof e,y=e=>{if("object"!==s(e))return!1;const t=n(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||o in e||r in e)},g=a("Date"),w=a("File"),E=a("Blob"),R=a("FileList");const O="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:{},S=void 0!==O.FormData?O.FormData:void 0,T=a("URLSearchParams"),[A,v,_,x]=["ReadableStream","Request","Response","Headers"].map(a);function C(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),l(e))for(r=0,o=e.length;r0;)if(r=n[o],t===r.toLowerCase())return r;return null}const N="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,j=e=>!u(e)&&e!==N;const U=(D="undefined"!=typeof Uint8Array&&n(Uint8Array),e=>D&&e instanceof D);var D;const F=a("HTMLFormElement"),L=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),B=a("RegExp"),k=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};C(n,(n,o)=>{let s;!1!==(s=t(n,o,e))&&(r[o]=s||n)}),Object.defineProperties(e,r)};const q=a("AsyncFunction"),I=(M="function"==typeof setImmediate,z=h(N.postMessage),M?setImmediate:z?(H=`axios@${Math.random()}`,J=[],N.addEventListener("message",({source:e,data:t})=>{e===N&&t===H&&J.length&&J.shift()()},!1),e=>{J.push(e),N.postMessage(H,"*")}):e=>setTimeout(e));var M,z,H,J;const W="undefined"!=typeof queueMicrotask?queueMicrotask.bind(N):"undefined"!=typeof process&&process.nextTick||I;var V={isArray:l,isArrayBuffer:d,isBuffer:f,isFormData:e=>{if(!e)return!1;if(S&&e instanceof S)return!0;const t=n(e);if(!t||t===Object.prototype)return!1;if(!h(e.append))return!1;const r=s(e);return"formdata"===r||"object"===r&&h(e.toString)&&"[object FormData]"===e.toString()},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&d(e.buffer),t},isString:p,isNumber:m,isBoolean:e=>!0===e||!1===e,isObject:b,isPlainObject:y,isEmptyObject:e=>{if(!b(e)||f(e))return!1;try{return 0===Object.keys(e).length&&Object.getPrototypeOf(e)===Object.prototype}catch(e){return!1}},isReadableStream:A,isRequest:v,isResponse:_,isHeaders:x,isUndefined:u,isDate:g,isFile:w,isReactNativeBlob:e=>!(!e||void 0===e.uri),isReactNative:e=>e&&void 0!==e.getParts,isBlob:E,isRegExp:B,isFunction:h,isStream:e=>b(e)&&h(e.pipe),isURLSearchParams:T,isTypedArray:U,isFileList:R,forEach:C,merge:function e(){const{caseless:t,skipUndefined:n}=j(this)&&this||{},r={},o=(o,s)=>{if("__proto__"===s||"constructor"===s||"prototype"===s)return;const i=t&&P(r,s)||s;y(r[i])&&y(o)?r[i]=e(r[i],o):y(o)?r[i]=e({},o):l(o)?r[i]=o.slice():n&&u(o)||(r[i]=o)};for(let e=0,t=arguments.length;e(C(n,(n,o)=>{r&&h(n)?Object.defineProperty(t,o,{value:e(n,r),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(t,o,{value:n,writable:!0,enumerable:!0,configurable:!0})},{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),Object.defineProperty(e.prototype,"constructor",{value:e,writable:!0,enumerable:!1,configurable:!0}),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:s,kindOfTest:a,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(l(e))return e;let t=e.length;if(!m(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[r]).call(e);let o;for(;(o=n.next())&&!o.done;){const n=o.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:F,hasOwnProperty:L,hasOwnProp:L,reduceDescriptors:k,freezeMethods:e=>{k(e,(t,n)=>{if(h(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];h(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 l(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)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:P,global:N,isContextDefined:j,isSpecCompliantForm:function(e){return!!(e&&h(e.append)&&"FormData"===e[o]&&e[r])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(b(e)){if(t.indexOf(e)>=0)return;if(f(e))return e;if(!("toJSON"in e)){t[r]=e;const o=l(e)?[]:{};return C(e,(e,t)=>{const s=n(e,r+1);!u(s)&&(o[t]=s)}),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:q,isThenable:e=>e&&(b(e)||h(e))&&h(e.then)&&h(e.catch),setImmediate:I,asap:W,isIterable:e=>null!=e&&h(e[r])};let $=class e extends Error{static from(t,n,r,o,s,i){const a=new e(t.message,n||t.code,r,o,s);return a.cause=t,a.name=t.name,null!=t.status&&null==a.status&&(a.status=t.status),i&&Object.assign(a,i),a}constructor(e,t,n,r,o){super(e),Object.defineProperty(this,"message",{value:e,enumerable:!0,writable:!0,configurable:!0}),this.name="AxiosError",this.isAxiosError=!0,t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o,this.status=o.status)}toJSON(){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:V.toJSONObject(this.config),code:this.code,status:this.status}}};$.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE",$.ERR_BAD_OPTION="ERR_BAD_OPTION",$.ECONNABORTED="ECONNABORTED",$.ETIMEDOUT="ETIMEDOUT",$.ERR_NETWORK="ERR_NETWORK",$.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS",$.ERR_DEPRECATED="ERR_DEPRECATED",$.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE",$.ERR_BAD_REQUEST="ERR_BAD_REQUEST",$.ERR_CANCELED="ERR_CANCELED",$.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT",$.ERR_INVALID_URL="ERR_INVALID_URL",$.ERR_FORM_DATA_DEPTH_EXCEEDED="ERR_FORM_DATA_DEPTH_EXCEEDED";function K(e){return V.isPlainObject(e)||V.isArray(e)}function X(e){return V.endsWith(e,"[]")?e.slice(0,-2):e}function G(e,t,n){return e?e.concat(t).map(function(e,t){return e=X(e),!n&&t?"["+e+"]":e}).join(n?".":""):t}const Q=V.toFlatObject(V,{},null,function(e){return/^is[A-Z]/.test(e)});function Y(e,t,n){if(!V.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=V.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!V.isUndefined(t[e])})).metaTokens,o=n.visitor||f,s=n.dots,i=n.indexes,a=n.Blob||"undefined"!=typeof Blob&&Blob,c=void 0===n.maxDepth?100:n.maxDepth,l=a&&V.isSpecCompliantForm(t);if(!V.isFunction(o))throw new TypeError("visitor must be a function");function u(e){if(null===e)return"";if(V.isDate(e))return e.toISOString();if(V.isBoolean(e))return e.toString();if(!l&&V.isBlob(e))throw new $("Blob is not supported. Use a Buffer instead.");return V.isArrayBuffer(e)||V.isTypedArray(e)?l&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function f(e,n,o){let a=e;if(V.isReactNative(t)&&V.isReactNativeBlob(e))return t.append(G(o,n,s),u(e)),!1;if(e&&!o&&"object"==typeof e)if(V.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(V.isArray(e)&&function(e){return V.isArray(e)&&!e.some(K)}(e)||(V.isFileList(e)||V.endsWith(n,"[]"))&&(a=V.toArray(e)))return n=X(n),a.forEach(function(e,r){!V.isUndefined(e)&&null!==e&&t.append(!0===i?G([n],r,s):null===i?n:n+"[]",u(e))}),!1;return!!K(e)||(t.append(G(o,n,s),u(e)),!1)}const d=[],p=Object.assign(Q,{defaultVisitor:f,convertValue:u,isVisitable:K});if(!V.isObject(e))throw new TypeError("data must be an object");return function e(n,r,s=0){if(!V.isUndefined(n)){if(s>c)throw new $("Object is too deeply nested ("+s+" levels). Max depth: "+c,$.ERR_FORM_DATA_DEPTH_EXCEEDED);if(-1!==d.indexOf(n))throw Error("Circular reference detected in "+r.join("."));d.push(n),V.forEach(n,function(n,i){!0===(!(V.isUndefined(n)||null===n)&&o.call(t,n,V.isString(i)?i.trim():i,r,p))&&e(n,r?r.concat(i):[i],s+1)}),d.pop()}}(e),t}function Z(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"};return encodeURIComponent(e).replace(/[!'()~]|%20/g,function(e){return t[e]})}function ee(e,t){this._pairs=[],e&&Y(e,this,t)}const te=ee.prototype;function ne(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function re(e,t,n){if(!t)return e;const r=n&&n.encode||ne,o=V.isFunction(n)?{serialize:n}:n,s=o&&o.serialize;let i;if(i=s?s(t,o):V.isURLSearchParams(t)?t.toString():new ee(t,o).toString(r),i){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}te.append=function(e,t){this._pairs.push([e,t])},te.toString=function(e){const t=e?function(t){return e.call(this,t,Z)}:Z;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};class oe{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){V.forEach(this.handlers,function(t){null!==t&&e(t)})}}var se={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0},ie={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:ee,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]};const ae="undefined"!=typeof window&&"undefined"!=typeof document,ce="object"==typeof navigator&&navigator||void 0,le=ae&&(!ce||["ReactNative","NativeScript","NS"].indexOf(ce.product)<0),ue="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,fe=ae&&window.location.href||"http://localhost";var de={...Object.freeze({__proto__:null,hasBrowserEnv:ae,hasStandardBrowserEnv:le,hasStandardBrowserWebWorkerEnv:ue,navigator:ce,origin:fe}),...ie};function pe(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&&V.isArray(r)?r.length:s,a)return V.hasOwnProp(r,s)?r[s]=V.isArray(r[s])?r[s].concat(n):[r[s],n]:r[s]=n,!i;r[s]&&V.isObject(r[s])||(r[s]=[]);return t(e,n,r[s],o)&&V.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 V.matchAll(/\w+|\[(\w*)]/g,e).map(e=>"[]"===e[0]?"":e[1]||e[0])}(e),r,n,0)}),n}return null}const he=(e,t)=>null!=e&&V.hasOwnProp(e,t)?e[t]:void 0;const me={transitional:se,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=V.isObject(e);o&&V.isHTMLForm(e)&&(e=new FormData(e));if(V.isFormData(e))return r?JSON.stringify(pe(e)):e;if(V.isArrayBuffer(e)||V.isBuffer(e)||V.isStream(e)||V.isFile(e)||V.isBlob(e)||V.isReadableStream(e))return e;if(V.isArrayBufferView(e))return e.buffer;if(V.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(o){const t=he(this,"formSerializer");if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return Y(e,new de.classes.URLSearchParams,{visitor:function(e,t,n,r){return de.isNode&&V.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)},...t})}(e,t).toString();if((s=V.isFileList(e))||n.indexOf("multipart/form-data")>-1){const n=he(this,"env"),r=n&&n.FormData;return Y(s?{"files[]":e}:e,r&&new r,t)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(V.isString(e))try{return(t||JSON.parse)(e),V.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=he(this,"transitional")||me.transitional,n=t&&t.forcedJSONParsing,r=he(this,"responseType"),o="json"===r;if(V.isResponse(e)||V.isReadableStream(e))return e;if(e&&V.isString(e)&&(n&&!r||o)){const n=!(t&&t.silentJSONParsing)&&o;try{return JSON.parse(e,he(this,"parseReviver"))}catch(e){if(n){if("SyntaxError"===e.name)throw $.from(e,$.ERR_BAD_RESPONSE,this,null,he(this,"response"));throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:de.classes.FormData,Blob:de.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};V.forEach(["delete","get","head","post","put","patch"],e=>{me.headers[e]={}});const be=V.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"]);const ye=Symbol("internals"),ge=/[^\x09\x20-\x7E\x80-\xFF]/g;function we(e){return e&&String(e).trim().toLowerCase()}function Ee(e){return!1===e||null==e?e:V.isArray(e)?e.map(Ee):function(e){let t=0,n=e.length;for(;tt;){const t=e.charCodeAt(n-1);if(9!==t&&32!==t)break;n-=1}return 0===t&&n===e.length?e:e.slice(t,n)}(String(e).replace(ge,""))}function Re(e,t,n,r,o){return V.isFunction(r)?r.call(this,t,n):(o&&(t=n),V.isString(t)?V.isString(r)?-1!==t.indexOf(r):V.isRegExp(r)?r.test(t):void 0:void 0)}let Oe=class{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=we(t);if(!o)throw new Error("header name must be a non-empty string");const s=V.findKey(r,o);(!s||void 0===r[s]||!0===n||void 0===n&&!1!==r[s])&&(r[s||t]=Ee(e))}const s=(e,t)=>V.forEach(e,(e,n)=>o(e,n,t));if(V.isPlainObject(e)||e instanceof this.constructor)s(e,t);else if(V.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]&&be[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t})(e),t);else if(V.isObject(e)&&V.isIterable(e)){let n,r,o={};for(const t of e){if(!V.isArray(t))throw TypeError("Object iterator must return a key-value pair");o[r=t[0]]=(n=o[r])?V.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}s(o,t)}else null!=e&&o(t,e,n);return this}get(e,t){if(e=we(e)){const n=V.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(V.isFunction(t))return t.call(this,e,n);if(V.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=we(e)){const n=V.findKey(this,e);return!(!n||void 0===this[n]||t&&!Re(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=we(e)){const o=V.findKey(n,e);!o||t&&!Re(0,n[o],o,t)||(delete n[o],r=!0)}}return V.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&&!Re(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return V.forEach(this,(r,o)=>{const s=V.findKey(n,o);if(s)return t[s]=Ee(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]=Ee(r),n[i]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return V.forEach(this,(n,r)=>{null!=n&&!1!==n&&(t[r]=e&&V.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")}getSetCookie(){return this.get("set-cookie")||[]}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[ye]=this[ye]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=we(e);t[r]||(!function(e,t){const n=V.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 V.isArray(e)?e.forEach(r):r(e),this}};function Se(e,t){const n=this||me,r=t||n,o=Oe.from(r.headers);let s=r.data;return V.forEach(e,function(e){s=e.call(n,s,o.normalize(),t?t.status:void 0)}),o.normalize(),s}function Te(e){return!(!e||!e.__CANCEL__)}Oe.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),V.reduceDescriptors(Oe.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}}),V.freezeMethods(Oe);let Ae=class extends ${constructor(e,t,n){super(null==e?"canceled":e,$.ERR_CANCELED,t,n),this.name="CanceledError",this.__CANCEL__=!0}};function ve(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new $("Request failed with status code "+n.status,[$.ERR_BAD_REQUEST,$.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}const _e=(e,t,n=3)=>{let r=0;const o=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(),l=r[i];o||(o=c),n[s]=a,r[s]=c;let u=i,f=0;for(;u!==s;)f+=n[u++],u%=e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),c-o{o=s,n=null,r&&(clearTimeout(r),r=null),e(...t)};return[(...e)=>{const t=Date.now(),a=t-o;a>=s?i(e,t):(n=e,r||(r=setTimeout(()=>{r=null,i(n)},s-a)))},()=>n&&i(n)]}(n=>{const s=n.loaded,i=n.lengthComputable?n.total:void 0,a=null!=i?Math.min(s,i):s,c=Math.max(0,a-r),l=o(c);r=Math.max(r,a);e({loaded:a,total:i,progress:i?a/i:void 0,bytes:c,rate:l||void 0,estimated:l&&i?(i-a)/l:void 0,event:n,lengthComputable:null!=i,[t?"download":"upload"]:!0})},n)},xe=(e,t)=>{const n=null!=e;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Ce=e=>(...t)=>V.asap(()=>e(...t));var Pe=de.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,de.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(de.origin),de.navigator&&/(msie|trident)/i.test(de.navigator.userAgent)):()=>!0,Ne=de.hasStandardBrowserEnv?{write(e,t,n,r,o,s,i){if("undefined"==typeof document)return;const a=[`${e}=${encodeURIComponent(t)}`];V.isNumber(n)&&a.push(`expires=${new Date(n).toUTCString()}`),V.isString(r)&&a.push(`path=${r}`),V.isString(o)&&a.push(`domain=${o}`),!0===s&&a.push("secure"),V.isString(i)&&a.push(`SameSite=${i}`),document.cookie=a.join("; ")},read(e){if("undefined"==typeof document)return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read:()=>null,remove(){}};function je(e,t,n){let r=!("string"==typeof(o=t)&&/^([a-z][a-z\d+\-.]*:)?\/\//i.test(o));var o;return e&&(r||!1===n)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Ue=e=>e instanceof Oe?{...e}:e;function De(e,t){t=t||{};const n=Object.create(null);function r(e,t,n,r){return V.isPlainObject(e)&&V.isPlainObject(t)?V.merge.call({caseless:r},e,t):V.isPlainObject(t)?V.merge({},t):V.isArray(t)?t.slice():t}function o(e,t,n,o){return V.isUndefined(t)?V.isUndefined(e)?void 0:r(void 0,e,0,o):r(e,t,0,o)}function s(e,t){if(!V.isUndefined(t))return r(void 0,t)}function i(e,t){return V.isUndefined(t)?V.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(n,o,s){return V.hasOwnProp(t,s)?r(n,o):V.hasOwnProp(e,s)?r(void 0,n):void 0}Object.defineProperty(n,"hasOwnProperty",{value:Object.prototype.hasOwnProperty,enumerable:!1,writable:!0,configurable:!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,allowedSocketPaths:i,responseEncoding:i,validateStatus:a,headers:(e,t,n)=>o(Ue(e),Ue(t),0,!0)};return V.forEach(Object.keys({...e,...t}),function(r){if("__proto__"===r||"constructor"===r||"prototype"===r)return;const s=V.hasOwnProp(c,r)?c[r]:o,i=s(V.hasOwnProp(e,r)?e[r]:void 0,V.hasOwnProp(t,r)?t[r]:void 0,r);V.isUndefined(i)&&s!==a||(n[r]=i)}),n}var Fe=e=>{const t=De({},e),n=e=>V.hasOwnProp(t,e)?t[e]:void 0,r=n("data");let o=n("withXSRFToken");const s=n("xsrfHeaderName"),i=n("xsrfCookieName");let a=n("headers");const c=n("auth"),l=n("baseURL"),u=n("allowAbsoluteUrls"),f=n("url");if(t.headers=a=Oe.from(a),t.url=re(je(l,f,u),e.params,e.paramsSerializer),c&&a.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),V.isFormData(r))if(de.hasStandardBrowserEnv||de.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(V.isFunction(r.getHeaders)){const e=r.getHeaders(),t=["content-type","content-length"];Object.entries(e).forEach(([e,n])=>{t.includes(e.toLowerCase())&&a.set(e,n)})}if(de.hasStandardBrowserEnv){V.isFunction(o)&&(o=o(t));if(!0===o||null==o&&Pe(t.url)){const e=s&&i&&Ne.read(i);e&&a.set(s,e)}}return t};var Le="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,n){const r=Fe(e);let o=r.data;const s=Oe.from(r.headers).normalize();let i,a,c,l,u,{responseType:f,onUploadProgress:d,onDownloadProgress:p}=r;function h(){l&&l(),u&&u(),r.cancelToken&&r.cancelToken.unsubscribe(i),r.signal&&r.signal.removeEventListener("abort",i)}let m=new XMLHttpRequest;function b(){if(!m)return;const r=Oe.from("getAllResponseHeaders"in m&&m.getAllResponseHeaders());ve(function(e){t(e),h()},function(e){n(e),h()},{data:f&&"text"!==f&&"json"!==f?m.response:m.responseText,status:m.status,statusText:m.statusText,headers:r,config:e,request:m}),m=null}m.open(r.method.toUpperCase(),r.url,!0),m.timeout=r.timeout,"onloadend"in m?m.onloadend=b:m.onreadystatechange=function(){m&&4===m.readyState&&(0!==m.status||m.responseURL&&0===m.responseURL.indexOf("file:"))&&setTimeout(b)},m.onabort=function(){m&&(n(new $("Request aborted",$.ECONNABORTED,e,m)),m=null)},m.onerror=function(t){const r=t&&t.message?t.message:"Network Error",o=new $(r,$.ERR_NETWORK,e,m);o.event=t||null,n(o),m=null},m.ontimeout=function(){let t=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const o=r.transitional||se;r.timeoutErrorMessage&&(t=r.timeoutErrorMessage),n(new $(t,o.clarifyTimeoutError?$.ETIMEDOUT:$.ECONNABORTED,e,m)),m=null},void 0===o&&s.setContentType(null),"setRequestHeader"in m&&V.forEach(s.toJSON(),function(e,t){m.setRequestHeader(t,e)}),V.isUndefined(r.withCredentials)||(m.withCredentials=!!r.withCredentials),f&&"json"!==f&&(m.responseType=r.responseType),p&&([c,u]=_e(p,!0),m.addEventListener("progress",c)),d&&m.upload&&([a,l]=_e(d),m.upload.addEventListener("progress",a),m.upload.addEventListener("loadend",l)),(r.cancelToken||r.signal)&&(i=t=>{m&&(n(!t||t.type?new Ae(null,e,m):t),m.abort(),m=null)},r.cancelToken&&r.cancelToken.subscribe(i),r.signal&&(r.signal.aborted?i():r.signal.addEventListener("abort",i)));const y=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(r.url);y&&-1===de.protocols.indexOf(y)?n(new $("Unsupported protocol "+y+":",$.ERR_BAD_REQUEST,e)):m.send(o||null)})};const Be=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let n,r=new AbortController;const o=function(e){if(!n){n=!0,i();const t=e instanceof Error?e:this.reason;r.abort(t instanceof $?t:new Ae(t instanceof Error?t.message:t))}};let s=t&&setTimeout(()=>{s=null,o(new $(`timeout of ${t}ms exceeded`,$.ETIMEDOUT))},t);const i=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(o):e.removeEventListener("abort",o)}),e=null)};e.forEach(e=>e.addEventListener("abort",o));const{signal:a}=r;return a.unsubscribe=()=>V.asap(i),a}},ke=function*(e,t){let n=e.byteLength;if(n{const o=async function*(e,t){for await(const n of qe(e))yield*ke(n,t)}(e,t);let s,i=0,a=e=>{s||(s=!0,r&&r(e))};return new ReadableStream({async pull(e){try{const{done:t,value:r}=await o.next();if(t)return a(),void e.close();let s=r.byteLength;if(n){let e=i+=s;n(e)}e.enqueue(new Uint8Array(r))}catch(e){throw a(e),e}},cancel:e=>(a(e),o.return())},{highWaterMark:2})},{isFunction:Me}=V,ze=(({Request:e,Response:t})=>({Request:e,Response:t}))(V.global),{ReadableStream:He,TextEncoder:Je}=V.global,We=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},Ve=e=>{e=V.merge.call({skipUndefined:!0},ze,e);const{fetch:t,Request:n,Response:r}=e,o=t?Me(t):"function"==typeof fetch,s=Me(n),i=Me(r);if(!o)return!1;const a=o&&Me(He),c=o&&("function"==typeof Je?(l=new Je,e=>l.encode(e)):async e=>new Uint8Array(await new n(e).arrayBuffer()));var l;const u=s&&a&&We(()=>{let e=!1;const t=new n(de.origin,{body:new He,method:"POST",get duplex(){return e=!0,"half"}}),r=t.headers.has("Content-Type");return null!=t.body&&t.body.cancel(),e&&!r}),f=i&&a&&We(()=>V.isReadableStream(new r("").body)),d={stream:f&&(e=>e.body)};o&&["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!d[e]&&(d[e]=(t,n)=>{let r=t&&t[e];if(r)return r.call(t);throw new $(`Response type '${e}' is not supported`,$.ERR_NOT_SUPPORT,n)})});const p=async(e,t)=>{const r=V.toFiniteNumber(e.getContentLength());return null==r?(async e=>{if(null==e)return 0;if(V.isBlob(e))return e.size;if(V.isSpecCompliantForm(e)){const t=new n(de.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return V.isArrayBufferView(e)||V.isArrayBuffer(e)?e.byteLength:(V.isURLSearchParams(e)&&(e+=""),V.isString(e)?(await c(e)).byteLength:void 0)})(t):r};return async e=>{let{url:o,method:i,data:a,signal:c,cancelToken:l,timeout:h,onDownloadProgress:m,onUploadProgress:b,responseType:y,headers:g,withCredentials:w="same-origin",fetchOptions:E}=Fe(e),R=t||fetch;y=y?(y+"").toLowerCase():"text";let O=Be([c,l&&l.toAbortSignal()],h),S=null;const T=O&&O.unsubscribe&&(()=>{O.unsubscribe()});let A;try{if(b&&u&&"get"!==i&&"head"!==i&&0!==(A=await p(g,a))){let e,t=new n(o,{method:"POST",body:a,duplex:"half"});if(V.isFormData(a)&&(e=t.headers.get("content-type"))&&g.setContentType(e),t.body){const[e,n]=xe(A,_e(Ce(b)));a=Ie(t.body,65536,e,n)}}V.isString(w)||(w=w?"include":"omit");const t=s&&"credentials"in n.prototype;if(V.isFormData(a)){const e=g.getContentType();e&&/^multipart\/form-data/i.test(e)&&!/boundary=/i.test(e)&&g.delete("content-type")}const c={...E,signal:O,method:i.toUpperCase(),headers:g.normalize().toJSON(),body:a,duplex:"half",credentials:t?w:void 0};S=s&&new n(o,c);let l=await(s?R(S,E):R(o,c));const h=f&&("stream"===y||"response"===y);if(f&&(m||h&&T)){const e={};["status","statusText","headers"].forEach(t=>{e[t]=l[t]});const t=V.toFiniteNumber(l.headers.get("content-length")),[n,o]=m&&xe(t,_e(Ce(m),!0))||[];l=new r(Ie(l.body,65536,n,()=>{o&&o(),T&&T()}),e)}y=y||"text";let v=await d[V.findKey(d,y)||"text"](l,e);return!h&&T&&T(),await new Promise((t,n)=>{ve(t,n,{data:v,headers:Oe.from(l.headers),status:l.status,statusText:l.statusText,config:e,request:S})})}catch(t){if(T&&T(),t&&"TypeError"===t.name&&/Load failed|fetch/i.test(t.message))throw Object.assign(new $("Network Error",$.ERR_NETWORK,e,S,t&&t.response),{cause:t.cause||t});throw $.from(t,t&&t.code,e,S,t&&t.response)}}},$e=new Map,Ke=e=>{let t=e&&e.env||{};const{fetch:n,Request:r,Response:o}=t,s=[r,o,n];let i,a,c=s.length,l=$e;for(;c--;)i=s[c],a=l.get(i),void 0===a&&l.set(i,a=c?new Map:Ve(t)),l=a;return a};Ke();const Xe={http:null,xhr:Le,fetch:{get:Ke}};V.forEach(Xe,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}});const Ge=e=>`- ${e}`,Qe=e=>V.isFunction(e)||null===e||!1===e;var Ye={getAdapter:function(e,t){e=V.isArray(e)?e:[e];const{length:n}=e;let r,o;const s={};for(let i=0;i`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));let t=n?e.length>1?"since :\n"+e.map(Ge).join("\n"):" "+Ge(e[0]):"as no adapter specified";throw new $("There is no suitable adapter to dispatch the request "+t,"ERR_NOT_SUPPORT")}return o},adapters:Xe};function Ze(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Ae(null,e)}function et(e){Ze(e),e.headers=Oe.from(e.headers),e.data=Se.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return Ye.getAdapter(e.adapter||me.adapter,e)(e).then(function(t){return Ze(e),t.data=Se.call(e,e.transformResponse,t),t.headers=Oe.from(t.headers),t},function(t){return Te(t)||(Ze(e),t&&t.response&&(t.response.data=Se.call(e,e.transformResponse,t.response),t.response.headers=Oe.from(t.response.headers))),Promise.reject(t)})}const tt="1.15.2",nt={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{nt[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}});const rt={};nt.transitional=function(e,t,n){function r(e,t){return"[Axios v"+tt+"] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,s)=>{if(!1===e)throw new $(r(o," has been removed"+(t?" in "+t:"")),$.ERR_DEPRECATED);return t&&!rt[o]&&(rt[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)}},nt.spelling=function(e){return(t,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};var ot={assertOptions:function(e,t,n){if("object"!=typeof e)throw new $("options must be an object",$.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const s=r[o],i=Object.prototype.hasOwnProperty.call(t,s)?t[s]:void 0;if(i){const t=e[s],n=void 0===t||i(t,s,e);if(!0!==n)throw new $("option "+s+" must be "+n,$.ERR_BAD_OPTION_VALUE);continue}if(!0!==n)throw new $("Unknown option "+s,$.ERR_BAD_OPTION)}},validators:nt};const st=ot.validators;let it=class{constructor(e){this.defaults=e||{},this.interceptors={request:new oe,response:new oe}}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=(()=>{if(!t.stack)return"";const e=t.stack.indexOf("\n");return-1===e?"":t.stack.slice(e+1)})();try{if(e.stack){if(n){const t=n.indexOf("\n"),r=-1===t?-1:n.indexOf("\n",t+1),o=-1===r?"":n.slice(r+1);String(e.stack).endsWith(o)||(e.stack+="\n"+n)}}else e.stack=n}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=De(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&ot.assertOptions(n,{silentJSONParsing:st.transitional(st.boolean),forcedJSONParsing:st.transitional(st.boolean),clarifyTimeoutError:st.transitional(st.boolean),legacyInterceptorReqResOrdering:st.transitional(st.boolean)},!1),null!=r&&(V.isFunction(r)?t.paramsSerializer={serialize:r}:ot.assertOptions(r,{encode:st.function,serialize:st.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),ot.assertOptions(t,{baseUrl:st.spelling("baseURL"),withXsrfToken:st.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=o&&V.merge(o.common,o[t.method]);o&&V.forEach(["delete","get","head","post","put","patch","common"],e=>{delete o[e]}),t.headers=Oe.concat(s,o);const i=[];let a=!0;this.interceptors.request.forEach(function(e){if("function"==typeof e.runWhen&&!1===e.runWhen(t))return;a=a&&e.synchronous;const n=t.transitional||se;n&&n.legacyInterceptorReqResOrdering?i.unshift(e.fulfilled,e.rejected):i.push(e.fulfilled,e.rejected)});const c=[];let l;this.interceptors.response.forEach(function(e){c.push(e.fulfilled,e.rejected)});let u,f=0;if(!a){const e=[et.bind(this),void 0];for(e.unshift(...i),e.push(...c),u=e.length,l=Promise.resolve(t);f{at[t]=e});const ct=function t(n){const r=new it(n),o=e(it.prototype.request,r);return V.extend(o,it.prototype,r,{allOwnKeys:!0}),V.extend(o,r,null,{allOwnKeys:!0}),o.create=function(e){return t(De(n,e))},o}(me);ct.Axios=it,ct.CanceledError=Ae,ct.CancelToken=class e{constructor(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");let t;this.promise=new Promise(function(e){t=e});const n=this;this.promise.then(e=>{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 Ae(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)}toAbortSignal(){const e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let t;return{token:new e(function(e){t=e}),cancel:t}}},ct.isCancel=Te,ct.VERSION=tt,ct.toFormData=Y,ct.AxiosError=$,ct.Cancel=ct.CanceledError,ct.all=function(e){return Promise.all(e)},ct.spread=function(e){return function(t){return e.apply(null,t)}},ct.isAxiosError=function(e){return V.isObject(e)&&!0===e.isAxiosError},ct.mergeConfig=De,ct.AxiosHeaders=Oe,ct.formToJSON=e=>pe(V.isHTMLForm(e)?new FormData(e):e),ct.getAdapter=Ye.getAdapter,ct.HttpStatusCode=at,ct.default=ct;const{Axios:lt,AxiosError:ut,CanceledError:ft,isCancel:dt,CancelToken:pt,VERSION:ht,all:mt,Cancel:bt,isAxiosError:yt,spread:gt,toFormData:wt,AxiosHeaders:Et,HttpStatusCode:Rt,formToJSON:Ot,getAdapter:St,mergeConfig:Tt}=ct;export{lt as Axios,ut as AxiosError,Et as AxiosHeaders,bt as Cancel,pt as CancelToken,ft as CanceledError,Rt as HttpStatusCode,ht as VERSION,mt as all,ct as default,Ot as formToJSON,St as getAdapter,yt as isAxiosError,dt as isCancel,Tt as mergeConfig,gt as spread,wt as toFormData}; -//# sourceMappingURL=axios.min.js.map diff --git a/.claude/skills/教学日程查询/node_modules/axios/dist/esm/axios.min.js.map b/.claude/skills/教学日程查询/node_modules/axios/dist/esm/axios.min.js.map deleted file mode 100644 index 9f56880..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/dist/esm/axios.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.min.js","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/index.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/progressEventReducer.js","../../lib/helpers/speedometer.js","../../lib/helpers/throttle.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/cookies.js","../../lib/core/buildFullPath.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/mergeConfig.js","../../lib/helpers/resolveConfig.js","../../lib/adapters/xhr.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/composeSignals.js","../../lib/helpers/trackStream.js","../../lib/adapters/fetch.js","../../lib/adapters/adapters.js","../../lib/helpers/null.js","../../lib/core/dispatchRequest.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../index.js"],"sourcesContent":["'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\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;\nconst { iterator, toStringTag } = Symbol;\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 a non-null object\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 (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\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 * 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 (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\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 React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\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 */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n if (!thing) return false;\n if (FormDataCtor && thing instanceof FormDataCtor) return true;\n // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9).\n const proto = getPrototypeOf(thing);\n if (!proto || proto === Object.prototype) return false;\n if (!isFunction(thing.append)) return false;\n const kind = kindOf(thing);\n return kind === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]');\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\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\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) => {\n return str.trim ? 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 {Object} [options]\n * @param {Boolean} [options.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 // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\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\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\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 * const 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, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\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 if (!skipUndefined || !isUndefined(val)) {\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 {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\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 Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\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 * 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[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, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(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\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\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 return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\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 !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\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\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\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 isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\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 */\n constructor(message, code, config, request, response) {\n super(message);\n\n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true,\n });\n\n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n 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.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\nAxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED';\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\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\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(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\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 maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth;\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 (utils.isBoolean(value)) {\n return value.toString();\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 (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\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) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : 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, depth = 0) {\n if (utils.isUndefined(value)) return;\n\n if (depth > maxDepth) {\n throw new AxiosError(\n 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,\n AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED\n );\n }\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 =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key], depth + 1);\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 };\n return encodeURIComponent(str).replace(/[!'()~]|%20/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\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\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 URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain 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}\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|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\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 * @param {Object} options The options for the interceptor, synchronous and runWhen\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 {void}\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 legacyInterceptorReqResOrdering: true,\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\nconst _navigator = (typeof navigator === 'object' && navigator) || 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 hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\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\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\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] = utils.isArray(target[name])\n ? target[name].concat(value)\n : [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\nconst own = (obj, key) => (obj != null && utils.hasOwnProp(obj, key) ? obj[key] : undefined);\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 transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n 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 (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(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 const formSerializer = own(this, 'formSerializer');\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const env = own(this, 'env');\n const _FormData = env && env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n 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\n transformResponse: [\n function transformResponse(data) {\n const transitional = own(this, 'transitional') || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const responseType = own(this, 'responseType');\n const JSONRequested = responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, own(this, 'parseReviver'));\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(this, 'response'));\n }\n throw e;\n }\n }\n }\n\n return data;\n },\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(), {\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}\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',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n '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 &&\n 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\nconst INVALID_HEADER_VALUE_CHARS_RE = /[^\\x09\\x20-\\x7E\\x80-\\xFF]/g;\n\nfunction trimSPorHTAB(str) {\n let start = 0;\n let end = str.length;\n\n while (start < end) {\n const code = str.charCodeAt(start);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n start += 1;\n }\n\n while (end > start) {\n const code = str.charCodeAt(end - 1);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n end -= 1;\n }\n\n return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction sanitizeHeaderValue(str) {\n return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, ''));\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(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\n .trim()\n .toLowerCase()\n .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 (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\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 if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, 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 !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\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 &&\n value !== false &&\n (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())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\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 =\n (this[$internals] =\n this[$internals] =\n {\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([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\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';\n\nclass CanceledError extends AxiosError {\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 */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\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(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\n );\n }\n}\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const rawLoaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded;\n const progressBytes = Math.max(0, loaded - bytesNotified);\n const rate = _speedometer(progressBytes);\n\n bytesNotified = Math.max(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 ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\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","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\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","'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, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) {\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 if (typeof url !== 'string') {\n return false;\n }\n\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 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\n // Use a null-prototype object so that downstream reads such as `config.auth`\n // or `config.baseURL` cannot inherit polluted values from Object.prototype\n // (see GHSA-q8qp-cvcw-x6jj). `hasOwnProperty` is restored as a non-enumerable\n // own slot to preserve ergonomics for user code that relies on it.\n const config = Object.create(null);\n Object.defineProperty(config, 'hasOwnProperty', {\n value: Object.prototype.hasOwnProperty,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n\n function getMergedValue(target, source, prop, 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 function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, 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 (utils.hasOwnProp(config2, prop)) {\n return getMergedValue(a, b);\n } else if (utils.hasOwnProp(config1, prop)) {\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 allowedSocketPaths: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined;\n const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined;\n const configValue = merge(a, b, prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n // Read only own properties to prevent prototype pollution gadgets\n // (e.g. Object.prototype.baseURL = 'https://evil.com'). See GHSA-q8qp-cvcw-x6jj.\n const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined);\n\n const data = own('data');\n let withXSRFToken = own('withXSRFToken');\n const xsrfHeaderName = own('xsrfHeaderName');\n const xsrfCookieName = own('xsrfCookieName');\n let headers = own('headers');\n const auth = own('auth');\n const baseURL = own('baseURL');\n const allowAbsoluteUrls = own('allowAbsoluteUrls');\n const url = own('url');\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(baseURL, url, allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\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\n if (platform.hasStandardBrowserEnv) {\n if (utils.isFunction(withXSRFToken)) {\n withXSRFToken = withXSRFToken(newConfig);\n }\n\n // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)\n // and misconfigurations (e.g. \"false\") from short-circuiting the same-origin check and leaking\n // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c.\n const shouldSendXSRF =\n withXSRFToken === true ||\n (withXSRFToken == null && isURLSameOrigin(newConfig.url));\n\n if (shouldSendXSRF) {\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.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 { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, 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 =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : 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(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\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 (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\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(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\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 (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\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\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\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","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const request = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n });\n\n const hasContentType = request.headers.has('Content-Type');\n\n if (request.body != null) {\n request.body.cancel();\n }\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n // If data is FormData and Content-Type is multipart/form-data without boundary,\n // delete it so fetch can set it correctly with the boundary\n if (utils.isFormData(data)) {\n const contentType = headers.getContentType();\n if (\n contentType &&\n /^multipart\\/form-data/i.test(contentType) &&\n !/boundary=/i.test(contentType)\n ) {\n headers.delete('content-type');\n }\n }\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\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\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\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 && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `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\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\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\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\n */\n adapters: knownAdapters,\n};\n","// eslint-disable-next-line strict\nexport default null;\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(config, config.transformRequest);\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, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\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}\n","export const VERSION = \"1.15.2\";","'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 (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\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\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return 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 // Use hasOwnProperty so a polluted Object.prototype. cannot supply\n // a non-function validator and cause a TypeError. See GHSA-q8qp-cvcw-x6jj.\n const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined;\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(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\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';\nimport transitionalDefaults from '../defaults/transitional.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 = (() => {\n if (!dummy.stack) {\n return '';\n }\n\n const firstNewlineIndex = dummy.stack.indexOf('\\n');\n\n return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1);\n })();\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack) {\n const firstNewlineIndex = stack.indexOf('\\n');\n const secondNewlineIndex =\n firstNewlineIndex === -1 ? -1 : stack.indexOf('\\n', firstNewlineIndex + 1);\n const stackWithoutTwoTopLines =\n secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1);\n\n if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) {\n err.stack += '\\n' + stack;\n }\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\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(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\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(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\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 const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\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(...requestInterceptorChain);\n chain.push(...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 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, config.allowAbsoluteUrls);\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(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\n );\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\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 WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\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\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 toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\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 * const 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","iterator","toStringTag","Symbol","kindOf","cache","create","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","isArray","Array","isUndefined","isBuffer","val","constructor","isFunction","isArrayBuffer","isString","isNumber","isObject","isPlainObject","isDate","isFile","isBlob","isFileList","G","globalThis","self","window","global","FormDataCtor","FormData","undefined","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","map","forEach","obj","allOwnKeys","i","l","length","keys","getOwnPropertyNames","len","key","findKey","_key","_global","isContextDefined","context","isTypedArray","TypedArray","Uint8Array","isHTMLForm","hasOwnProperty","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","isAsyncFn","_setImmediate","setImmediateSupported","setImmediate","postMessageSupported","postMessage","token","Math","random","callbacks","addEventListener","source","data","shift","cb","push","setTimeout","asap","queueMicrotask","process","nextTick","utils$1","isFormData","proto","append","kind","isArrayBufferView","result","ArrayBuffer","isView","buffer","isBoolean","isEmptyObject","e","isReactNativeBlob","value","uri","isReactNative","formData","getParts","isStream","pipe","merge","caseless","skipUndefined","this","assignValue","targetKey","extend","a","b","defineProperty","writable","enumerable","configurable","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","forEachEntry","_iterator","next","done","pair","matchAll","regExp","matches","exec","hasOwnProp","freezeMethods","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","toUpperCase","noop","toFiniteNumber","defaultValue","Number","isFinite","isSpecCompliantForm","toJSONObject","stack","visit","target","reducedValue","isThenable","then","catch","isIterable","AxiosError","from","error","code","config","request","response","customProps","axiosError","message","cause","status","super","isAxiosError","toJSON","description","number","fileName","lineNumber","columnNumber","utils","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","ERR_FORM_DATA_DEPTH_EXCEEDED","isVisitable","removeBrackets","renderKey","path","dots","concat","join","predicates","test","toFormData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","_Blob","Blob","maxDepth","useBlob","convertValue","toISOString","Buffer","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","depth","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","_encode","_options","serialize","serializeFn","serializedParams","hashmarkIndex","encoder","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","legacyInterceptorReqResOrdering","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","_navigator","navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","location","href","platform","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","own","defaults","transitional","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","helpers","isNode","toURLEncodedForm","env","_FormData","rawValue","parser","parse","stringifySafely","transformResponse","responseType","JSONRequested","strictJSONParsing","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","ignoreDuplicateOf","$internals","INVALID_HEADER_VALUE_CHARS_RE","normalizeHeader","header","normalizeValue","start","end","trimSPorHTAB","matchHeaderValue","isHeaderNameFilter","AxiosHeaders$1","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","substring","parseHeaders","dest","entry","get","tokens","tokensRE","parseTokens","has","matcher","deleted","deleteHeader","normalize","format","normalized","w","char","formatHeader","targets","asStrings","getSetCookie","first","computed","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","transformData","fns","AxiosHeaders","isCancel","__CANCEL__","mapped","headerValue","settle","resolve","reject","floor","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","samplesCount","min","bytes","timestamps","firstSampleTS","head","tail","chunkLength","now","Date","startedAt","bytesCount","passed","round","speedometer","lastArgs","timer","timestamp","threshold","invoke","args","clearTimeout","throttle","rawLoaded","loaded","total","lengthComputable","progressBytes","max","rate","progress","estimated","event","progressEventDecorator","throttled","asyncDecorator","isURLSameOrigin","isMSIE","URL","protocol","host","port","userAgent","cookies","write","expires","domain","secure","sameSite","cookie","toUTCString","read","RegExp","decodeURIComponent","remove","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","allowedSocketPaths","responseEncoding","configValue","resolveConfig","newConfig","auth","btoa","username","password","unescape","getHeaders","formHeaders","allowedHeaders","includes","xsrfValue","xhrAdapter","XMLHttpRequest","Promise","_config","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","unsubscribe","signal","removeEventListener","onloadend","responseHeaders","getAllResponseHeaders","err","responseText","statusText","open","onreadystatechange","readyState","responseURL","onabort","onerror","msg","ontimeout","timeoutErrorMessage","setRequestHeader","upload","cancel","CanceledError","abort","subscribe","aborted","parseProtocol","send","composeSignals","signals","Boolean","controller","AbortController","reason","streamChunk","chunk","chunkSize","byteLength","pos","readStream","async","stream","asyncIterator","reader","getReader","trackStream","onProgress","onFinish","iterable","readBytes","_onFinish","ReadableStream","pull","close","loadedBytes","enqueue","return","highWaterMark","globalFetchAPI","Request","Response","TextEncoder","factory","fetch","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","arrayBuffer","supportsRequestStream","duplexAccessed","body","duplex","hasContentType","supportsResponseStream","resolvers","res","resolveBodyLength","getContentLength","size","_request","getBodyLength","fetchOptions","_fetch","composedSignal","toAbortSignal","requestContentLength","contentTypeHeader","flush","isCredentialsSupported","delete","resolvedOptions","credentials","isStreamResponse","responseContentLength","responseData","seedCache","Map","getFetch","seeds","seed","knownAdapters","http","xhr","fetchAdapter.getFetch","renderReason","isResolvedHandle","adapters","getAdapter","nameOrAdapter","rejectedReasons","reasons","state","s","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","console","warn","spelling","correctSpelling","assertOptions","schema","allowUnknown","Axios$1","instanceConfig","interceptors","configOrUrl","dummy","captureStackTrace","firstNewlineIndex","secondNewlineIndex","stackWithoutTwoTopLines","boolean","function","baseUrl","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","responseInterceptorChain","promise","chain","onFulfilled","onRejected","getUri","Axios","generateHTTPMethod","isForm","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","WebServerIsDown","ConnectionTimedOut","OriginIsUnreachable","TimeoutOccurred","SslHandshakeFailed","InvalidSslCertificate","axios","createInstance","defaultConfig","instance","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","Cancel","all","promises","spread","callback","payload","formToJSON","default"],"mappings":"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"} \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/axios/dist/node/axios.cjs b/.claude/skills/教学日程查询/node_modules/axios/dist/node/axios.cjs deleted file mode 100644 index 1301e25..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/dist/node/axios.cjs +++ /dev/null @@ -1,4989 +0,0 @@ -/*! Axios v1.15.2 Copyright (c) 2026 Matt Zabriskie and contributors */ -'use strict'; - -var FormData$1 = require('form-data'); -var crypto = require('crypto'); -var url = require('url'); -var http = require('http'); -var https = require('https'); -var http2 = require('http2'); -var util = require('util'); -var path = require('path'); -var followRedirects = require('follow-redirects'); -var zlib = require('zlib'); -var stream = require('stream'); -var events = require('events'); - -/** - * Create a bound version of a function with a specified `this` context - * - * @param {Function} fn - The function to bind - * @param {*} thisArg - The value to be passed as the `this` parameter - * @returns {Function} A new function that will call the original function with the specified `this` context - */ -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 { - iterator, - toStringTag -} = Symbol; -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 a non-null object - * - * @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$1(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$1 = 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) && !(toStringTag in val) && !(iterator in val); -}; - -/** - * Determine if a value is an empty object (safely handles Buffers) - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an empty object, otherwise false - */ -const isEmptyObject = val => { - // Early return for non-objects or Buffers to prevent RangeError - if (!isObject(val) || isBuffer(val)) { - return false; - } - try { - return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; - } catch (e) { - // Fallback for any other objects that might cause RangeError with Object.keys() - return false; - } -}; - -/** - * 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 React Native Blob - * React Native "blob": an object with a `uri` attribute. Optionally, it can - * also have a `name` and `type` attribute to specify filename and content type - * - * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 - * - * @param {*} value The value to test - * - * @returns {boolean} True if value is a React Native Blob, otherwise false - */ -const isReactNativeBlob = value => { - return !!(value && typeof value.uri !== 'undefined'); -}; - -/** - * Determine if environment is React Native - * ReactNative `FormData` has a non-standard `getParts()` method - * - * @param {*} formData The formData to test - * - * @returns {boolean} True if environment is React Native, otherwise false - */ -const isReactNative = formData => formData && typeof formData.getParts !== 'undefined'; - -/** - * 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$1(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 - */ -function getGlobal() { - if (typeof globalThis !== 'undefined') return globalThis; - if (typeof self !== 'undefined') return self; - if (typeof window !== 'undefined') return window; - if (typeof global !== 'undefined') return global; - return {}; -} -const G = getGlobal(); -const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; -const isFormData = thing => { - if (!thing) return false; - if (FormDataCtor && thing instanceof FormDataCtor) return true; - // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9). - const proto = getPrototypeOf(thing); - if (!proto || proto === Object.prototype) return false; - if (!isFunction$1(thing.append)) return false; - const kind = kindOf(thing); - return kind === 'formdata' || - // detect form-data instance - kind === 'object' && isFunction$1(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'); -const [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest); - -/** - * 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 => { - 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 {Object} [options] - * @param {Boolean} [options.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 { - // Buffer check - if (isBuffer(obj)) { - return; - } - - // 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); - } - } -} - -/** - * Finds a key in an object, case-insensitive, returning the actual key name. - * Returns null if the object is a Buffer or if no match is found. - * - * @param {Object} obj - The object to search. - * @param {string} key - The key to find (case-insensitive). - * @returns {?string} The actual key name if found, otherwise null. - */ -function findKey(obj, key) { - if (isBuffer(obj)) { - return null; - } - 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 - * const 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, - skipUndefined - } = isContextDefined(this) && this || {}; - const result = {}; - const assignValue = (val, key) => { - // Skip dangerous property names to prevent prototype pollution - if (key === '__proto__' || key === 'constructor' || key === 'prototype') { - return; - } - 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 if (!skipUndefined || !isUndefined(val)) { - 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 {Object} [options] - * @param {Boolean} [options.allOwnKeys] - * @returns {Object} The resulting value of object a - */ -const extend = (a, b, thisArg, { - allOwnKeys -} = {}) => { - forEach(b, (val, key) => { - if (thisArg && isFunction$1(val)) { - Object.defineProperty(a, key, { - value: bind(val, thisArg), - writable: true, - enumerable: true, - configurable: true - }); - } else { - Object.defineProperty(a, key, { - value: val, - writable: true, - enumerable: true, - configurable: true - }); - } - }, { - 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); - Object.defineProperty(constructor.prototype, 'constructor', { - value: constructor, - writable: true, - enumerable: false, - configurable: true - }); - 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[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$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - const value = obj[name]; - if (!isFunction$1(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 + "'"); - }; - } - }); -}; - -/** - * Converts an array or a delimited string into an object set with values as keys and true as values. - * Useful for fast membership checks. - * - * @param {Array|string} arrayOrString - The array or string to convert. - * @param {string} delimiter - The delimiter to use if input is a string. - * @returns {Object} An object with keys from the array or string, values set to true. - */ -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) => { - return value != null && Number.isFinite(value = +value) ? value : defaultValue; -}; - -/** - * 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$1(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]); -} - -/** - * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. - * - * @param {Object} obj - The object to convert. - * @returns {Object} The JSON-compatible object. - */ -const toJSONObject = obj => { - const stack = new Array(10); - const visit = (source, i) => { - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - - //Buffer check - if (isBuffer(source)) { - return source; - } - 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); -}; - -/** - * Determines if a value is an async function. - * - * @param {*} thing - The value to test. - * @returns {boolean} True if value is an async function, otherwise false. - */ -const isAsyncFn = kindOfTest('AsyncFunction'); - -/** - * Determines if a value is thenable (has then and catch methods). - * - * @param {*} thing - The value to test. - * @returns {boolean} True if value is thenable, otherwise false. - */ -const isThenable = thing => thing && (isObject(thing) || isFunction$1(thing)) && isFunction$1(thing.then) && isFunction$1(thing.catch); - -// original code -// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 - -/** - * Provides a cross-platform setImmediate implementation. - * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. - * - * @param {boolean} setImmediateSupported - Whether setImmediate is supported. - * @param {boolean} postMessageSupported - Whether postMessage is supported. - * @returns {Function} A function to schedule a callback asynchronously. - */ -const _setImmediate = ((setImmediateSupported, postMessageSupported) => { - if (setImmediateSupported) { - return setImmediate; - } - return postMessageSupported ? ((token, callbacks) => { - _global.addEventListener('message', ({ - source, - data - }) => { - if (source === _global && data === token) { - callbacks.length && callbacks.shift()(); - } - }, false); - return cb => { - callbacks.push(cb); - _global.postMessage(token, '*'); - }; - })(`axios@${Math.random()}`, []) : cb => setTimeout(cb); -})(typeof setImmediate === 'function', isFunction$1(_global.postMessage)); - -/** - * Schedules a microtask or asynchronous callback as soon as possible. - * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. - * - * @type {Function} - */ -const asap = typeof queueMicrotask !== 'undefined' ? queueMicrotask.bind(_global) : typeof process !== 'undefined' && process.nextTick || _setImmediate; - -// ********************* - -const isIterable = thing => thing != null && isFunction$1(thing[iterator]); -var utils$1 = { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isEmptyObject, - isReadableStream, - isRequest, - isResponse, - isHeaders, - isUndefined, - isDate, - isFile, - isReactNativeBlob, - isReactNative, - isBlob, - isRegExp, - isFunction: isFunction$1, - 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, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable, - setImmediate: _setImmediate, - asap, - isIterable -}; - -class AxiosError extends Error { - static from(error, code, config, request, response, customProps) { - const axiosError = new AxiosError(error.message, code || error.code, config, request, response); - axiosError.cause = error; - axiosError.name = error.name; - - // Preserve status from the original error if not already set from response - if (error.status != null && axiosError.status == null) { - axiosError.status = error.status; - } - customProps && Object.assign(axiosError, customProps); - return axiosError; - } - - /** - * 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. - */ - constructor(message, code, config, request, response) { - super(message); - - // Make message enumerable to maintain backward compatibility - // The native Error constructor sets message as non-enumerable, - // but axios < v1.13.3 had it as enumerable - Object.defineProperty(this, 'message', { - value: message, - enumerable: true, - writable: true, - configurable: true - }); - this.name = 'AxiosError'; - this.isAxiosError = true; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - if (response) { - this.response = response; - this.status = response.status; - } - } - 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.status - }; - } -} - -// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. -AxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; -AxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION'; -AxiosError.ECONNABORTED = 'ECONNABORTED'; -AxiosError.ETIMEDOUT = 'ETIMEDOUT'; -AxiosError.ERR_NETWORK = 'ERR_NETWORK'; -AxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; -AxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED'; -AxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; -AxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; -AxiosError.ERR_CANCELED = 'ERR_CANCELED'; -AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; -AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL'; -AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED'; - -/** - * 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$1 || 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 maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth; - 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 (utils$1.isBoolean(value)) { - return value.toString(); - } - 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 (utils$1.isReactNative(formData) && utils$1.isReactNativeBlob(value)) { - formData.append(renderKey(path, key, dots), convertValue(value)); - return false; - } - 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, depth = 0) { - if (utils$1.isUndefined(value)) return; - if (depth > maxDepth) { - throw new AxiosError('Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth, AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED); - } - 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], depth + 1); - } - }); - 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': '+' - }; - return encodeURIComponent(str).replace(/[!'()~]|%20/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 URL-encoded forms of `:`, `$`, `,`, and spaces with - * their plain 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, '+'); -} - -/** - * 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|Function)} options - * - * @returns {string} The formatted url - */ -function buildURL(url, params, options) { - if (!params) { - return url; - } - const _encode = options && options.encode || encode; - const _options = utils$1.isFunction(options) ? { - serialize: options - } : options; - 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` - * @param {Object} options The options for the interceptor, synchronous and runWhen - * - * @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 {void} - */ - 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 transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false, - legacyInterceptorReqResOrdering: true -}; - -var URLSearchParams = url.URLSearchParams; - -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; - const randomValues = new Uint32Array(size); - crypto.randomFillSync(randomValues); - for (let i = 0; i < size; i++) { - str += alphabet[randomValues[i] % length]; - } - return str; -}; -var platform$1 = { - isNode: true, - classes: { - URLSearchParams, - FormData: FormData$1, - Blob: typeof Blob !== 'undefined' && Blob || null - }, - ALPHABET, - generateString, - protocols: ['http', 'https', 'file', 'data'] -}; - -const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; -const _navigator = typeof navigator === 'object' && navigator || 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 = hasBrowserEnv && (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); - -/** - * 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 origin = hasBrowserEnv && window.location.href || 'http://localhost'; - -var utils = /*#__PURE__*/Object.freeze({ - __proto__: null, - hasBrowserEnv: hasBrowserEnv, - hasStandardBrowserEnv: hasStandardBrowserEnv, - hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv, - navigator: _navigator, - origin: origin -}); - -var platform = { - ...utils, - ...platform$1 -}; - -function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), { - 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] = utils$1.isArray(target[name]) ? target[name].concat(value) : [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; -} - -const own = (obj, key) => obj != null && utils$1.hasOwnProp(obj, key) ? obj[key] : undefined; - -/** - * 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', 'fetch'], - 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) || utils$1.isReadableStream(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) { - const formSerializer = own(this, 'formSerializer'); - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, formSerializer).toString(); - } - if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - const env = own(this, 'env'); - const _FormData = env && env.FormData; - return toFormData(isFileList ? { - 'files[]': data - } : data, _FormData && new _FormData(), formSerializer); - } - } - if (isObjectPayload || hasJSONContentType) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - return data; - }], - transformResponse: [function transformResponse(data) { - const transitional = own(this, 'transitional') || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const responseType = own(this, 'responseType'); - const JSONRequested = responseType === 'json'; - if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) { - return data; - } - if (data && utils$1.isString(data) && (forcedJSONParsing && !responseType || JSONRequested)) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - try { - return JSON.parse(data, own(this, 'parseReviver')); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(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] = {}; -}); - -// 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'); -const INVALID_HEADER_VALUE_CHARS_RE = /[^\x09\x20-\x7E\x80-\xFF]/g; -function trimSPorHTAB(str) { - let start = 0; - let end = str.length; - while (start < end) { - const code = str.charCodeAt(start); - if (code !== 0x09 && code !== 0x20) { - break; - } - start += 1; - } - while (end > start) { - const code = str.charCodeAt(end - 1); - if (code !== 0x09 && code !== 0x20) { - break; - } - end -= 1; - } - return start === 0 && end === str.length ? str : str.slice(start, end); -} -function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); -} -function sanitizeHeaderValue(str) { - return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, '')); -} -function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - return utils$1.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(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 if (utils$1.isObject(header) && utils$1.isIterable(header)) { - let obj = {}, - dest, - key; - for (const entry of header) { - if (!utils$1.isArray(entry)) { - throw TypeError('Object iterator must return a key-value pair'); - } - obj[key = entry[0]] = (dest = obj[key]) ? utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]] : entry[1]; - } - setHeaders(obj, 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'); - } - getSetCookie() { - return this.get('set-cookie') || []; - } - 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); - -/** - * 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; - const context = response || config; - const headers = AxiosHeaders.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__); -} - -class CanceledError extends AxiosError { - /** - * 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. - */ - constructor(message, config, request) { - super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); - this.name = 'CanceledError'; - this.__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. - if (typeof url !== 'string') { - return false; - } - 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, allowAbsoluteUrls) { - let isRelativeUrl = !isAbsoluteURL(requestedURL); - if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; -} - -var DEFAULT_PORTS$1 = { - ftp: 21, - gopher: 70, - http: 80, - https: 443, - ws: 80, - wss: 443 -}; -function parseUrl(urlString) { - try { - return new URL(urlString); - } catch { - return null; - } -} - -/** - * @param {string|object|URL} url - The URL as a string or URL instance, or a - * compatible object (such as the result from legacy url.parse). - * @return {string} The URL of the proxy that should handle the request to the - * given URL. If no proxy is set, this will be an empty string. - */ -function getProxyForUrl(url) { - var parsedUrl = (typeof url === 'string' ? parseUrl(url) : url) || {}; - var proto = parsedUrl.protocol; - var hostname = parsedUrl.host; - var port = parsedUrl.port; - if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { - return ''; // Don't proxy URLs without a valid scheme or host. - } - proto = proto.split(':', 1)[0]; - // Stripping ports in this way instead of using parsedUrl.hostname to make - // sure that the brackets around IPv6 addresses are kept. - hostname = hostname.replace(/:\d*$/, ''); - port = parseInt(port) || DEFAULT_PORTS$1[proto] || 0; - if (!shouldProxy(hostname, port)) { - return ''; // Don't proxy URLs that match NO_PROXY. - } - var proxy = getEnv(proto + '_proxy') || getEnv('all_proxy'); - if (proxy && proxy.indexOf('://') === -1) { - // Missing scheme in proxy, default to the requested URL's scheme. - proxy = proto + '://' + proxy; - } - return proxy; -} - -/** - * Determines whether a given URL should be proxied. - * - * @param {string} hostname - The host name of the URL. - * @param {number} port - The effective port of the URL. - * @returns {boolean} Whether the given URL should be proxied. - * @private - */ -function shouldProxy(hostname, port) { - var NO_PROXY = getEnv('no_proxy').toLowerCase(); - if (!NO_PROXY) { - return true; // Always proxy if NO_PROXY is not set. - } - if (NO_PROXY === '*') { - return false; // Never proxy if wildcard is set. - } - return NO_PROXY.split(/[,\s]/).every(function (proxy) { - if (!proxy) { - return true; // Skip zero-length hosts. - } - var parsedProxy = proxy.match(/^(.+):(\d+)$/); - var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; - var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; - if (parsedProxyPort && parsedProxyPort !== port) { - return true; // Skip if ports don't match. - } - if (!/^[.*]/.test(parsedProxyHostname)) { - // No wildcards, so stop proxying if there is an exact match. - return hostname !== parsedProxyHostname; - } - if (parsedProxyHostname.charAt(0) === '*') { - // Remove leading wildcard. - parsedProxyHostname = parsedProxyHostname.slice(1); - } - // Stop proxying if the hostname ends with the no_proxy host. - return !hostname.endsWith(parsedProxyHostname); - }); -} - -/** - * Get the value for an environment variable. - * - * @param {string} key - The name of the environment variable. - * @return {string} The value of the environment variable. - * @private - */ -function getEnv(key) { - return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; -} - -const VERSION = "1.15.2"; - -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); -} - -const kInternals = Symbol('internals'); -class AxiosTransformStream extends stream.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 internals = this[kInternals] = { - timeWindow: options.timeWindow, - chunkSize: options.chunkSize, - maxRate: options.maxRate, - minChunkSize: options.minChunkSize, - bytesSeen: 0, - isCaptured: false, - notifiedBytesLoaded: 0, - ts: Date.now(), - bytes: 0, - onReadCallback: null - }; - this.on('newListener', event => { - if (event === 'progress') { - if (!internals.isCaptured) { - internals.isCaptured = true; - } - } - }); - } - _read(size) { - const internals = this[kInternals]; - if (internals.onReadCallback) { - internals.onReadCallback(); - } - return super._read(size); - } - _transform(chunk, encoding, callback) { - 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; - const pushChunk = (_chunk, _callback) => { - const bytes = Buffer.byteLength(_chunk); - internals.bytesSeen += bytes; - internals.bytes += bytes; - internals.isCaptured && this.emit('progress', internals.bytesSeen); - if (this.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); - } - }); - } -} - -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 BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_'; -const textEncoder = typeof TextEncoder === 'function' ? new 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 { - const safeType = String(value.type || 'application/octet-stream').replace(/[\r\n]/g, ''); - headers += `Content-Type: ${safeType}${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(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 + '-' + platform.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); - 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; - }()); -}; - -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); - } -} - -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 LOOPBACK_HOSTNAMES = new Set(['localhost']); -const isIPv4Loopback = host => { - const parts = host.split('.'); - if (parts.length !== 4) return false; - if (parts[0] !== '127') return false; - return parts.every(p => /^\d+$/.test(p) && Number(p) >= 0 && Number(p) <= 255); -}; -const isIPv6Loopback = host => { - // Collapse all-zero groups: any form of ::1 / 0:0:...:0:1 - // First, strip any leading "::" by normalising with Set lookup of common forms, - // then fall back to structural check. - if (host === '::1') return true; - - // Check IPv4-mapped IPv6 loopback: ::ffff: or ::ffff: - // Node's URL parser normalises ::ffff:127.0.0.1 → ::ffff:7f00:1 - const v4MappedDotted = host.match(/^::ffff:(\d+\.\d+\.\d+\.\d+)$/i); - if (v4MappedDotted) return isIPv4Loopback(v4MappedDotted[1]); - const v4MappedHex = host.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i); - if (v4MappedHex) { - const high = parseInt(v4MappedHex[1], 16); - // High 16 bits must start with 127 (0x7f) — i.e. 0x7f00..0x7fff - return high >= 0x7f00 && high <= 0x7fff; - } - - // Full-form ::1 variants: any number of zero groups followed by trailing 1 - // e.g. 0:0:0:0:0:0:0:1, 0000:...:0001 - const groups = host.split(':'); - if (groups.length === 8) { - for (let i = 0; i < 7; i++) { - if (!/^0+$/.test(groups[i])) return false; - } - return /^0*1$/.test(groups[7]); - } - return false; -}; -const isLoopback = host => { - if (!host) return false; - if (LOOPBACK_HOSTNAMES.has(host)) return true; - if (isIPv4Loopback(host)) return true; - return isIPv6Loopback(host); -}; -const DEFAULT_PORTS = { - http: 80, - https: 443, - ws: 80, - wss: 443, - ftp: 21 -}; -const parseNoProxyEntry = entry => { - let entryHost = entry; - let entryPort = 0; - if (entryHost.charAt(0) === '[') { - const bracketIndex = entryHost.indexOf(']'); - if (bracketIndex !== -1) { - const host = entryHost.slice(1, bracketIndex); - const rest = entryHost.slice(bracketIndex + 1); - if (rest.charAt(0) === ':' && /^\d+$/.test(rest.slice(1))) { - entryPort = Number.parseInt(rest.slice(1), 10); - } - return [host, entryPort]; - } - } - const firstColon = entryHost.indexOf(':'); - const lastColon = entryHost.lastIndexOf(':'); - if (firstColon !== -1 && firstColon === lastColon && /^\d+$/.test(entryHost.slice(lastColon + 1))) { - entryPort = Number.parseInt(entryHost.slice(lastColon + 1), 10); - entryHost = entryHost.slice(0, lastColon); - } - return [entryHost, entryPort]; -}; -const normalizeNoProxyHost = hostname => { - if (!hostname) { - return hostname; - } - if (hostname.charAt(0) === '[' && hostname.charAt(hostname.length - 1) === ']') { - hostname = hostname.slice(1, -1); - } - return hostname.replace(/\.+$/, ''); -}; -function shouldBypassProxy(location) { - let parsed; - try { - parsed = new URL(location); - } catch (_err) { - return false; - } - const noProxy = (process.env.no_proxy || process.env.NO_PROXY || '').toLowerCase(); - if (!noProxy) { - return false; - } - if (noProxy === '*') { - return true; - } - const port = Number.parseInt(parsed.port, 10) || DEFAULT_PORTS[parsed.protocol.split(':', 1)[0]] || 0; - const hostname = normalizeNoProxyHost(parsed.hostname.toLowerCase()); - return noProxy.split(/[\s,]+/).some(entry => { - if (!entry) { - return false; - } - let [entryHost, entryPort] = parseNoProxyEntry(entry); - entryHost = normalizeNoProxyHost(entryHost); - if (!entryHost) { - return false; - } - if (entryPort && entryPort !== port) { - return false; - } - if (entryHost.charAt(0) === '*') { - entryHost = entryHost.slice(1); - } - if (entryHost.charAt(0) === '.') { - return hostname.endsWith(entryHost); - } - return hostname === entryHost || isLoopback(hostname) && isLoopback(entryHost); - }); -} - -/** - * 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; - }; -} - -/** - * Throttle decorator - * @param {Function} fn - * @param {Number} freq - * @return {Function} - */ -function throttle(fn, freq) { - let timestamp = 0; - let threshold = 1000 / freq; - let lastArgs; - let timer; - const invoke = (args, now = Date.now()) => { - timestamp = now; - lastArgs = null; - if (timer) { - clearTimeout(timer); - timer = null; - } - fn(...args); - }; - const throttled = (...args) => { - const now = Date.now(); - const passed = now - timestamp; - if (passed >= threshold) { - invoke(args, now); - } else { - lastArgs = args; - if (!timer) { - timer = setTimeout(() => { - timer = null; - invoke(lastArgs); - }, threshold - passed); - } - } - }; - const flush = () => lastArgs && invoke(lastArgs); - return [throttled, flush]; -} - -const progressEventReducer = (listener, isDownloadStream, freq = 3) => { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - return throttle(e => { - const rawLoaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded; - const progressBytes = Math.max(0, loaded - bytesNotified); - const rate = _speedometer(progressBytes); - bytesNotified = Math.max(bytesNotified, loaded); - const data = { - loaded, - total, - progress: total ? loaded / total : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total ? (total - loaded) / rate : undefined, - event: e, - lengthComputable: total != null, - [isDownloadStream ? 'download' : 'upload']: true - }; - listener(data); - }, freq); -}; -const progressEventDecorator = (total, throttled) => { - const lengthComputable = total != null; - return [loaded => throttled[0]({ - lengthComputable, - total, - loaded - }), throttled[1]]; -}; -const asyncDecorator = fn => (...args) => utils$1.asap(() => fn(...args)); - -/** - * Estimate decoded byte length of a data:// URL *without* allocating large buffers. - * - For base64: compute exact decoded size using length and padding; - * handle %XX at the character-count level (no string allocation). - * - For non-base64: use UTF-8 byteLength of the encoded body as a safe upper bound. - * - * @param {string} url - * @returns {number} - */ -function estimateDataURLDecodedBytes(url) { - if (!url || typeof url !== 'string') return 0; - if (!url.startsWith('data:')) return 0; - const comma = url.indexOf(','); - if (comma < 0) return 0; - const meta = url.slice(5, comma); - const body = url.slice(comma + 1); - const isBase64 = /;base64/i.test(meta); - if (isBase64) { - let effectiveLen = body.length; - const len = body.length; // cache length - - for (let i = 0; i < len; i++) { - if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) { - const a = body.charCodeAt(i + 1); - const b = body.charCodeAt(i + 2); - const isHex = (a >= 48 && a <= 57 || a >= 65 && a <= 70 || a >= 97 && a <= 102) && (b >= 48 && b <= 57 || b >= 65 && b <= 70 || b >= 97 && b <= 102); - if (isHex) { - effectiveLen -= 2; - i += 2; - } - } - } - let pad = 0; - let idx = len - 1; - const tailIsPct3D = j => j >= 2 && body.charCodeAt(j - 2) === 37 && - // '%' - body.charCodeAt(j - 1) === 51 && ( - // '3' - body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd' - - if (idx >= 0) { - if (body.charCodeAt(idx) === 61 /* '=' */) { - pad++; - idx--; - } else if (tailIsPct3D(idx)) { - pad++; - idx -= 3; - } - } - if (pad === 1 && idx >= 0) { - if (body.charCodeAt(idx) === 61 /* '=' */) { - pad++; - } else if (tailIsPct3D(idx)) { - pad++; - } - } - const groups = Math.floor(effectiveLen / 4); - const bytes = groups * 3 - (pad || 0); - return bytes > 0 ? bytes : 0; - } - return Buffer.byteLength(body, 'utf8'); -} - -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$1.isFunction(zlib.createBrotliDecompress); -const { - http: httpFollow, - https: httpsFollow -} = followRedirects; -const isHttps = /https:?/; - -// Symbols used to bind a single 'error' listener to a pooled socket and track -// the request currently owning that socket across keep-alive reuse (issue #10780). -const kAxiosSocketListener = Symbol('axios.http.socketListener'); -const kAxiosCurrentReq = Symbol('axios.http.currentReq'); -const supportedProtocols = platform.protocols.map(protocol => { - return protocol + ':'; -}); -const flushOnFinish = (stream, [throttled, flush]) => { - stream.on('end', flush).on('error', flush); - return throttled; -}; -class Http2Sessions { - constructor() { - this.sessions = Object.create(null); - } - getSession(authority, options) { - options = Object.assign({ - sessionTimeout: 1000 - }, options); - let authoritySessions = this.sessions[authority]; - if (authoritySessions) { - let len = authoritySessions.length; - for (let i = 0; i < len; i++) { - const [sessionHandle, sessionOptions] = authoritySessions[i]; - if (!sessionHandle.destroyed && !sessionHandle.closed && util.isDeepStrictEqual(sessionOptions, options)) { - return sessionHandle; - } - } - } - const session = http2.connect(authority, options); - let removed; - const removeSession = () => { - if (removed) { - return; - } - removed = true; - let entries = authoritySessions, - len = entries.length, - i = len; - while (i--) { - if (entries[i][0] === session) { - if (len === 1) { - delete this.sessions[authority]; - } else { - entries.splice(i, 1); - } - if (!session.closed) { - session.close(); - } - return; - } - } - }; - const originalRequestFn = session.request; - const { - sessionTimeout - } = options; - if (sessionTimeout != null) { - let timer; - let streamsCount = 0; - session.request = function () { - const stream = originalRequestFn.apply(this, arguments); - streamsCount++; - if (timer) { - clearTimeout(timer); - timer = null; - } - stream.once('close', () => { - if (! --streamsCount) { - timer = setTimeout(() => { - timer = null; - removeSession(); - }, sessionTimeout); - } - }); - return stream; - }; - } - session.once('close', removeSession); - let entry = [session, options]; - authoritySessions ? authoritySessions.push(entry) : authoritySessions = this.sessions[authority] = [entry]; - return session; - } -} -const http2Sessions = new Http2Sessions(); - -/** - * 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) { - if (!shouldBypassProxy(location)) { - 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 - const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password); - if (validProxyAuth) { - proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); - } else if (typeof proxy.auth === 'object') { - throw new AxiosError('Invalid proxy authorization', AxiosError.ERR_BAD_OPTION, { - proxy - }); - } - 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 -}); -const http2Transport = { - request(options, cb) { - const authority = options.protocol + '//' + options.hostname + ':' + (options.port || (options.protocol === 'https:' ? 443 : 80)); - const { - http2Options, - headers - } = options; - const session = http2Sessions.getSession(authority, http2Options); - const { - HTTP2_HEADER_SCHEME, - HTTP2_HEADER_METHOD, - HTTP2_HEADER_PATH, - HTTP2_HEADER_STATUS - } = http2.constants; - const http2Headers = { - [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''), - [HTTP2_HEADER_METHOD]: options.method, - [HTTP2_HEADER_PATH]: options.path - }; - utils$1.forEach(headers, (header, name) => { - name.charAt(0) !== ':' && (http2Headers[name] = header); - }); - const req = session.request(http2Headers); - req.once('response', responseHeaders => { - const response = req; //duplex - - responseHeaders = Object.assign({}, responseHeaders); - const status = responseHeaders[HTTP2_HEADER_STATUS]; - delete responseHeaders[HTTP2_HEADER_STATUS]; - response.headers = responseHeaders; - response.statusCode = +status; - cb(response); - }); - return req; - } -}; - -/*eslint consistent-return:0*/ -var httpAdapter = isHttpAdapterSupported && function httpAdapter(config) { - return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { - const own = key => utils$1.hasOwnProp(config, key) ? config[key] : undefined; - let data = own('data'); - let lookup = own('lookup'); - let family = own('family'); - let httpVersion = own('httpVersion'); - if (httpVersion === undefined) httpVersion = 1; - let http2Options = own('http2Options'); - const responseType = own('responseType'); - const responseEncoding = own('responseEncoding'); - const method = config.method.toUpperCase(); - let isDone; - let rejected = false; - let req; - httpVersion = +httpVersion; - if (Number.isNaN(httpVersion)) { - throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`); - } - if (httpVersion !== 1 && httpVersion !== 2) { - throw TypeError(`Unsupported protocol version '${httpVersion}'`); - } - const isHttp2 = httpVersion === 2; - if (lookup) { - const _lookup = callbackify(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); - }); - }; - } - const abortEmitter = new events.EventEmitter(); - function abort(reason) { - try { - abortEmitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason); - } catch (err) { - console.warn('emit error', err); - } - } - abortEmitter.once('abort', reject); - const onFinished = () => { - if (config.cancelToken) { - config.cancelToken.unsubscribe(abort); - } - if (config.signal) { - config.signal.removeEventListener('abort', abort); - } - abortEmitter.removeAllListeners(); - }; - if (config.cancelToken || config.signal) { - config.cancelToken && config.cancelToken.subscribe(abort); - if (config.signal) { - config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); - } - } - onDone((response, isRejected) => { - isDone = true; - if (isRejected) { - rejected = true; - onFinished(); - return; - } - const { - data - } = response; - if (data instanceof stream.Readable || data instanceof stream.Duplex) { - const offListeners = stream.finished(data, () => { - offListeners(); - onFinished(); - }); - } else { - onFinished(); - } - }); - - // Parse url - const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); - const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined); - const protocol = parsed.protocol || supportedProtocols[0]; - if (protocol === 'data:') { - // Apply the same semantics as HTTP: only enforce if a finite, non-negative cap is set. - if (config.maxContentLength > -1) { - // Use the exact string passed to fromDataURI (config.url); fall back to fullPath if needed. - const dataUrl = String(config.url || fullPath || ''); - const estimated = estimateDataURLDecodedBytes(dataUrl); - if (estimated > config.maxContentLength) { - return reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', AxiosError.ERR_BAD_RESPONSE, config)); - } - } - 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.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 { - onUploadProgress, - onDownloadProgress - } = config; - 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(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) && data.getHeaders !== Object.prototype.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$1.isBlob(data) || utils$1.isFile(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$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.Readable.from(data, { - objectMode: false - }); - } - data = stream.pipeline([data, new AxiosTransformStream({ - maxRate: utils$1.toFiniteNumber(maxUploadRate) - })], utils$1.noop); - onUploadProgress && data.on('progress', flushOnFinish(data, progressEventDecorator(contentLength, progressEventReducer(asyncDecorator(onUploadProgress), false, 3)))); - } - - // HTTP basic authentication - let auth = undefined; - const configAuth = own('auth'); - if (configAuth) { - const username = configAuth.username || ''; - const password = configAuth.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$1; - try { - path$1 = 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); - - // Null-prototype to block prototype pollution gadgets on properties read - // directly by Node's http.request (e.g. insecureHTTPParser, lookup). - // See GHSA-q8qp-cvcw-x6jj. - const options = Object.assign(Object.create(null), { - path: path$1, - method: method, - headers: headers.toJSON(), - agents: { - http: config.httpAgent, - https: config.httpsAgent - }, - auth, - protocol, - family, - beforeRedirect: dispatchBeforeRedirect, - beforeRedirects: Object.create(null), - http2Options - }); - - // cacheable-lookup integration hotfix - !utils$1.isUndefined(lookup) && (options.lookup = lookup); - if (config.socketPath) { - if (typeof config.socketPath !== 'string') { - return reject(new AxiosError('socketPath must be a string', AxiosError.ERR_BAD_OPTION_VALUE, config)); - } - if (config.allowedSocketPaths != null) { - const allowed = Array.isArray(config.allowedSocketPaths) ? config.allowedSocketPaths : [config.allowedSocketPaths]; - const resolvedSocket = path.resolve(config.socketPath); - const isAllowed = allowed.some(entry => typeof entry === 'string' && path.resolve(entry) === resolvedSocket); - if (!isAllowed) { - return reject(new AxiosError(`socketPath "${config.socketPath}" is not permitted by allowedSocketPaths`, AxiosError.ERR_BAD_OPTION_VALUE, config)); - } - } - options.socketPath = config.socketPath; - } else { - options.hostname = parsed.hostname.startsWith('[') ? parsed.hostname.slice(1, -1) : 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 (isHttp2) { - transport = http2Transport; - } else { - const configTransport = own('transport'); - if (configTransport) { - transport = configTransport; - } else if (config.maxRedirects === 0) { - transport = isHttpsRequest ? https : http; - } else { - if (config.maxRedirects) { - options.maxRedirects = config.maxRedirects; - } - const configBeforeRedirect = own('beforeRedirect'); - if (configBeforeRedirect) { - options.beforeRedirects.config = configBeforeRedirect; - } - 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; - } - - // Always set an explicit own value so a polluted - // Object.prototype.insecureHTTPParser cannot enable the lenient parser - // through Node's internal options copy (GHSA-q8qp-cvcw-x6jj). - options.insecureHTTPParser = Boolean(own('insecureHTTPParser')); - - // Create the request - req = transport.request(options, function handleResponse(res) { - if (req.destroyed) return; - const streams = [res]; - const responseLength = utils$1.toFiniteNumber(res.headers['content-length']); - if (onDownloadProgress || maxDownloadRate) { - const transformStream = new AxiosTransformStream({ - maxRate: utils$1.toFiniteNumber(maxDownloadRate) - }); - onDownloadProgress && transformStream.on('progress', flushOnFinish(transformStream, progressEventDecorator(responseLength, progressEventReducer(asyncDecorator(onDownloadProgress), true, 3)))); - 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$1.noop) : streams[0]; - const response = { - status: res.statusCode, - statusText: res.statusMessage, - headers: new AxiosHeaders(res.headers), - config, - request: lastRequest - }; - if (responseType === 'stream') { - // Enforce maxContentLength on streamed responses; previously this - // was applied only to buffered responses. See GHSA-vf2m-468p-8v99. - if (config.maxContentLength > -1) { - const limit = config.maxContentLength; - const source = responseStream; - async function* enforceMaxContentLength() { - let totalResponseBytes = 0; - for await (const chunk of source) { - totalResponseBytes += chunk.length; - if (totalResponseBytes > limit) { - throw new AxiosError('maxContentLength size of ' + limit + ' exceeded', AxiosError.ERR_BAD_RESPONSE, config, lastRequest); - } - yield chunk; - } - } - responseStream = stream.Readable.from(enforceMaxContentLength(), { - objectMode: false - }); - } - 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(); - abort(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('stream has been aborted', 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); - }); - } - abortEmitter.once('abort', err => { - if (!responseStream.destroyed) { - responseStream.emit('error', err); - responseStream.destroy(); - } - }); - }); - abortEmitter.once('abort', err => { - if (req.close) { - req.close(); - } else { - req.destroy(err); - } - }); - - // Handle errors - req.on('error', function handleRequestError(err) { - 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); - - // Install a single 'error' listener per socket (not per request) to avoid - // accumulating listeners on pooled keep-alive sockets that get reassigned - // to new requests before the previous request's 'close' fires (issue #10780). - // The listener is bound to the socket's currently-active request via a - // symbol, which is swapped as the socket is reassigned. - if (!socket[kAxiosSocketListener]) { - socket.on('error', function handleSocketError(err) { - const current = socket[kAxiosCurrentReq]; - if (current && !current.destroyed) { - current.destroy(err); - } - }); - socket[kAxiosSocketListener] = true; - } - socket[kAxiosCurrentReq] = req; - req.once('close', function clearCurrentReq() { - if (socket[kAxiosCurrentReq] === req) { - socket[kAxiosCurrentReq] = null; - } - }); - }); - - // 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)) { - abort(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; - } - abort(new AxiosError(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, req)); - }); - } else { - // explicitly reset the socket timeout value for a possible `keep-alive` request - req.setTimeout(0); - } - - // 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)); - } - }); - - // Enforce maxBodyLength for streamed uploads on the native http/https - // transport (maxRedirects === 0); follow-redirects enforces it on the - // other path. See GHSA-5c9x-8gcm-mpgx. - let uploadStream = data; - if (config.maxBodyLength > -1 && config.maxRedirects === 0) { - const limit = config.maxBodyLength; - let bytesSent = 0; - uploadStream = stream.pipeline([data, new stream.Transform({ - transform(chunk, _enc, cb) { - bytesSent += chunk.length; - if (bytesSent > limit) { - return cb(new AxiosError('Request body larger than maxBodyLength limit', AxiosError.ERR_BAD_REQUEST, config, req)); - } - cb(null, chunk); - } - })], utils$1.noop); - uploadStream.on('error', err => { - if (!req.destroyed) req.destroy(err); - }); - } - uploadStream.pipe(req); - } else { - data && req.write(data); - req.end(); - } - }); -}; - -var isURLSameOrigin = platform.hasStandardBrowserEnv ? ((origin, isMSIE) => url => { - url = new URL(url, platform.origin); - return origin.protocol === url.protocol && origin.host === url.host && (isMSIE || origin.port === url.port); -})(new URL(platform.origin), platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)) : () => true; - -var cookies = platform.hasStandardBrowserEnv ? -// Standard browser envs support document.cookie -{ - write(name, value, expires, path, domain, secure, sameSite) { - if (typeof document === 'undefined') return; - const cookie = [`${name}=${encodeURIComponent(value)}`]; - if (utils$1.isNumber(expires)) { - cookie.push(`expires=${new Date(expires).toUTCString()}`); - } - if (utils$1.isString(path)) { - cookie.push(`path=${path}`); - } - if (utils$1.isString(domain)) { - cookie.push(`domain=${domain}`); - } - if (secure === true) { - cookie.push('secure'); - } - if (utils$1.isString(sameSite)) { - cookie.push(`SameSite=${sameSite}`); - } - document.cookie = cookie.join('; '); - }, - read(name) { - if (typeof document === 'undefined') return null; - const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); - return match ? decodeURIComponent(match[1]) : 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 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 - */ -function mergeConfig(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - - // Use a null-prototype object so that downstream reads such as `config.auth` - // or `config.baseURL` cannot inherit polluted values from Object.prototype - // (see GHSA-q8qp-cvcw-x6jj). `hasOwnProperty` is restored as a non-enumerable - // own slot to preserve ergonomics for user code that relies on it. - const config = Object.create(null); - Object.defineProperty(config, 'hasOwnProperty', { - value: Object.prototype.hasOwnProperty, - enumerable: false, - writable: true, - configurable: true - }); - function getMergedValue(target, source, prop, 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; - } - function mergeDeepProperties(a, b, prop, caseless) { - if (!utils$1.isUndefined(b)) { - return getMergedValue(a, b, prop, caseless); - } else if (!utils$1.isUndefined(a)) { - return getMergedValue(undefined, a, prop, 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 (utils$1.hasOwnProp(config2, prop)) { - return getMergedValue(a, b); - } else if (utils$1.hasOwnProp(config1, prop)) { - 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, - allowedSocketPaths: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true) - }; - utils$1.forEach(Object.keys({ - ...config1, - ...config2 - }), function computeConfigValue(prop) { - if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; - const merge = utils$1.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; - const a = utils$1.hasOwnProp(config1, prop) ? config1[prop] : undefined; - const b = utils$1.hasOwnProp(config2, prop) ? config2[prop] : undefined; - const configValue = merge(a, b, prop); - utils$1.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue); - }); - return config; -} - -var resolveConfig = config => { - const newConfig = mergeConfig({}, config); - - // Read only own properties to prevent prototype pollution gadgets - // (e.g. Object.prototype.baseURL = 'https://evil.com'). See GHSA-q8qp-cvcw-x6jj. - const own = key => utils$1.hasOwnProp(newConfig, key) ? newConfig[key] : undefined; - const data = own('data'); - let withXSRFToken = own('withXSRFToken'); - const xsrfHeaderName = own('xsrfHeaderName'); - const xsrfCookieName = own('xsrfCookieName'); - let headers = own('headers'); - const auth = own('auth'); - const baseURL = own('baseURL'); - const allowAbsoluteUrls = own('allowAbsoluteUrls'); - const url = own('url'); - newConfig.headers = headers = AxiosHeaders.from(headers); - newConfig.url = buildURL(buildFullPath(baseURL, url, allowAbsoluteUrls), config.params, config.paramsSerializer); - - // HTTP basic authentication - if (auth) { - headers.set('Authorization', 'Basic ' + btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))); - } - if (utils$1.isFormData(data)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - headers.setContentType(undefined); // browser handles it - } else if (utils$1.isFunction(data.getHeaders)) { - // Node.js FormData (like form-data package) - const formHeaders = data.getHeaders(); - // Only set safe headers to avoid overwriting security headers - const allowedHeaders = ['content-type', 'content-length']; - Object.entries(formHeaders).forEach(([key, val]) => { - if (allowedHeaders.includes(key.toLowerCase())) { - headers.set(key, val); - } - }); - } - } - - // 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) { - if (utils$1.isFunction(withXSRFToken)) { - withXSRFToken = withXSRFToken(newConfig); - } - - // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1) - // and misconfigurations (e.g. "false") from short-circuiting the same-origin check and leaking - // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c. - const shouldSendXSRF = withXSRFToken === true || withXSRFToken == null && isURLSameOrigin(newConfig.url); - if (shouldSendXSRF) { - const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); - if (xsrfValue) { - headers.set(xsrfHeaderName, xsrfValue); - } - } - } - return newConfig; -}; - -const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; -var xhrAdapter = isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - const _config = resolveConfig(config); - let requestData = _config.data; - const requestHeaders = AxiosHeaders.from(_config.headers).normalize(); - let { - responseType, - onUploadProgress, - onDownloadProgress - } = _config; - let onCanceled; - let uploadThrottled, downloadThrottled; - let flushUpload, flushDownload; - function done() { - flushUpload && flushUpload(); // flush events - flushDownload && flushDownload(); // flush events - - _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); - _config.signal && _config.signal.removeEventListener('abort', onCanceled); - } - let request = new XMLHttpRequest(); - request.open(_config.method.toUpperCase(), _config.url, 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(event) { - // Browsers deliver a ProgressEvent in XHR onerror - // (message may be empty; when present, surface it) - // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event - const msg = event && event.message ? event.message : 'Network Error'; - const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request); - // attach the underlying event for consumers who want details - err.event = event || null; - reject(err); - 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; - }; - - // 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 (onDownloadProgress) { - [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); - request.addEventListener('progress', downloadThrottled); - } - - // Not all browsers support upload events - if (onUploadProgress && request.upload) { - [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); - request.upload.addEventListener('progress', uploadThrottled); - request.upload.addEventListener('loadend', flushUpload); - } - 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(_config.url); - 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 composeSignals = (signals, timeout) => { - const { - length - } = signals = signals ? signals.filter(Boolean) : []; - if (timeout || length) { - let controller = new AbortController(); - let aborted; - const onabort = function (reason) { - if (!aborted) { - aborted = true; - unsubscribe(); - const err = reason instanceof Error ? reason : this.reason; - controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err)); - } - }; - let timer = timeout && setTimeout(() => { - timer = null; - onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT)); - }, timeout); - const unsubscribe = () => { - if (signals) { - timer && clearTimeout(timer); - timer = null; - signals.forEach(signal => { - signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort); - }); - signals = null; - } - }; - signals.forEach(signal => signal.addEventListener('abort', onabort)); - const { - signal - } = controller; - signal.unsubscribe = () => utils$1.asap(unsubscribe); - return signal; - } -}; - -const streamChunk = function* (chunk, chunkSize) { - let len = chunk.byteLength; - if (len < chunkSize) { - yield chunk; - return; - } - let pos = 0; - let end; - while (pos < len) { - end = pos + chunkSize; - yield chunk.slice(pos, end); - pos = end; - } -}; -const readBytes = async function* (iterable, chunkSize) { - for await (const chunk of readStream(iterable)) { - yield* streamChunk(chunk, chunkSize); - } -}; -const readStream = async function* (stream) { - if (stream[Symbol.asyncIterator]) { - yield* stream; - return; - } - const reader = stream.getReader(); - try { - for (;;) { - const { - done, - value - } = await reader.read(); - if (done) { - break; - } - yield value; - } - } finally { - await reader.cancel(); - } -}; -const trackStream = (stream, chunkSize, onProgress, onFinish) => { - const iterator = readBytes(stream, chunkSize); - let bytes = 0; - let done; - let _onFinish = e => { - if (!done) { - done = true; - onFinish && onFinish(e); - } - }; - return new ReadableStream({ - async pull(controller) { - try { - const { - done, - value - } = await iterator.next(); - if (done) { - _onFinish(); - controller.close(); - return; - } - let len = value.byteLength; - if (onProgress) { - let loadedBytes = bytes += len; - onProgress(loadedBytes); - } - controller.enqueue(new Uint8Array(value)); - } catch (err) { - _onFinish(err); - throw err; - } - }, - cancel(reason) { - _onFinish(reason); - return iterator.return(); - } - }, { - highWaterMark: 2 - }); -}; - -const DEFAULT_CHUNK_SIZE = 64 * 1024; -const { - isFunction -} = utils$1; -const globalFetchAPI = (({ - Request, - Response -}) => ({ - Request, - Response -}))(utils$1.global); -const { - ReadableStream: ReadableStream$1, - TextEncoder: TextEncoder$1 -} = utils$1.global; -const test = (fn, ...args) => { - try { - return !!fn(...args); - } catch (e) { - return false; - } -}; -const factory = env => { - env = utils$1.merge.call({ - skipUndefined: true - }, globalFetchAPI, env); - const { - fetch: envFetch, - Request, - Response - } = env; - const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; - const isRequestSupported = isFunction(Request); - const isResponseSupported = isFunction(Response); - if (!isFetchSupported) { - return false; - } - const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1); - const encodeText = isFetchSupported && (typeof TextEncoder$1 === 'function' ? (encoder => str => encoder.encode(str))(new TextEncoder$1()) : async str => new Uint8Array(await new Request(str).arrayBuffer())); - const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => { - let duplexAccessed = false; - const request = new Request(platform.origin, { - body: new ReadableStream$1(), - method: 'POST', - get duplex() { - duplexAccessed = true; - return 'half'; - } - }); - const hasContentType = request.headers.has('Content-Type'); - if (request.body != null) { - request.body.cancel(); - } - return duplexAccessed && !hasContentType; - }); - const supportsResponseStream = isResponseSupported && isReadableStreamSupported && test(() => utils$1.isReadableStream(new Response('').body)); - const resolvers = { - stream: supportsResponseStream && (res => res.body) - }; - isFetchSupported && (() => { - ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => { - !resolvers[type] && (resolvers[type] = (res, config) => { - let method = res && res[type]; - if (method) { - return method.call(res); - } - throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config); - }); - }); - })(); - const getBodyLength = async body => { - if (body == null) { - return 0; - } - if (utils$1.isBlob(body)) { - return body.size; - } - if (utils$1.isSpecCompliantForm(body)) { - const _request = new Request(platform.origin, { - method: 'POST', - body - }); - return (await _request.arrayBuffer()).byteLength; - } - if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) { - return body.byteLength; - } - if (utils$1.isURLSearchParams(body)) { - body = body + ''; - } - if (utils$1.isString(body)) { - return (await encodeText(body)).byteLength; - } - }; - const resolveBodyLength = async (headers, body) => { - const length = utils$1.toFiniteNumber(headers.getContentLength()); - return length == null ? getBodyLength(body) : length; - }; - return async config => { - let { - url, - method, - data, - signal, - cancelToken, - timeout, - onDownloadProgress, - onUploadProgress, - responseType, - headers, - withCredentials = 'same-origin', - fetchOptions - } = resolveConfig(config); - let _fetch = envFetch || fetch; - responseType = responseType ? (responseType + '').toLowerCase() : 'text'; - let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout); - let request = null; - const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => { - composedSignal.unsubscribe(); - }); - let requestContentLength; - try { - if (onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) { - let _request = new Request(url, { - method: 'POST', - body: data, - duplex: 'half' - }); - let contentTypeHeader; - if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { - headers.setContentType(contentTypeHeader); - } - if (_request.body) { - const [onProgress, flush] = progressEventDecorator(requestContentLength, progressEventReducer(asyncDecorator(onUploadProgress))); - data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); - } - } - if (!utils$1.isString(withCredentials)) { - withCredentials = withCredentials ? 'include' : 'omit'; - } - - // Cloudflare Workers throws when credentials are defined - // see https://github.com/cloudflare/workerd/issues/902 - const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; - - // If data is FormData and Content-Type is multipart/form-data without boundary, - // delete it so fetch can set it correctly with the boundary - if (utils$1.isFormData(data)) { - const contentType = headers.getContentType(); - if (contentType && /^multipart\/form-data/i.test(contentType) && !/boundary=/i.test(contentType)) { - headers.delete('content-type'); - } - } - const resolvedOptions = { - ...fetchOptions, - signal: composedSignal, - method: method.toUpperCase(), - headers: headers.normalize().toJSON(), - body: data, - duplex: 'half', - credentials: isCredentialsSupported ? withCredentials : undefined - }; - request = isRequestSupported && new Request(url, resolvedOptions); - let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions)); - const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response'); - if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) { - const options = {}; - ['status', 'statusText', 'headers'].forEach(prop => { - options[prop] = response[prop]; - }); - const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length')); - const [onProgress, flush] = onDownloadProgress && progressEventDecorator(responseContentLength, progressEventReducer(asyncDecorator(onDownloadProgress), true)) || []; - response = new Response(trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { - flush && flush(); - unsubscribe && unsubscribe(); - }), options); - } - responseType = responseType || 'text'; - let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config); - !isStreamResponse && unsubscribe && unsubscribe(); - return await new Promise((resolve, reject) => { - settle(resolve, reject, { - data: responseData, - headers: AxiosHeaders.from(response.headers), - status: response.status, - statusText: response.statusText, - config, - request - }); - }); - } catch (err) { - unsubscribe && unsubscribe(); - if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) { - throw Object.assign(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, err && err.response), { - cause: err.cause || err - }); - } - throw AxiosError.from(err, err && err.code, config, request, err && err.response); - } - }; -}; -const seedCache = new Map(); -const getFetch = config => { - let env = config && config.env || {}; - const { - fetch, - Request, - Response - } = env; - const seeds = [Request, Response, fetch]; - let len = seeds.length, - i = len, - seed, - target, - map = seedCache; - while (i--) { - seed = seeds[i]; - target = map.get(seed); - target === undefined && map.set(seed, target = i ? new Map() : factory(env)); - map = target; - } - return target; -}; -getFetch(); - -/** - * Known adapters mapping. - * Provides environment-specific adapters for Axios: - * - `http` for Node.js - * - `xhr` for browsers - * - `fetch` for fetch API-based requests - * - * @type {Object} - */ -const knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter, - fetch: { - get: getFetch - } -}; - -// Assign adapter names for easier debugging and identification -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 - }); - } -}); - -/** - * Render a rejection reason string for unknown or unsupported adapters - * - * @param {string} reason - * @returns {string} - */ -const renderReason = reason => `- ${reason}`; - -/** - * Check if the adapter is resolved (function, null, or false) - * - * @param {Function|null|false} adapter - * @returns {boolean} - */ -const isResolvedHandle = adapter => utils$1.isFunction(adapter) || adapter === null || adapter === false; - -/** - * Get the first suitable adapter from the provided list. - * Tries each adapter in order until a supported one is found. - * Throws an AxiosError if no adapter is suitable. - * - * @param {Array|string|Function} adapters - Adapter(s) by name or function. - * @param {Object} config - Axios request configuration - * @throws {AxiosError} If no suitable adapter is available - * @returns {Function} The resolved adapter function - */ -function getAdapter(adapters, config) { - 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 && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) { - 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; -} - -/** - * Exports Axios adapters and utility to resolve an adapter - */ -var adapters = { - /** - * Resolve an adapter from a list of adapter names or functions. - * @type {Function} - */ - getAdapter, - /** - * Exposes all known adapters - * @type {Object} - */ - 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.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, config); - 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); - }); -} - -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; - }; -}; -validators$1.spelling = function spelling(correctSpelling) { - return (value, opt) => { - // eslint-disable-next-line no-console - console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); - return 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]; - // Use hasOwnProperty so a polluted Object.prototype. cannot supply - // a non-function validator and cause a TypeError. See GHSA-q8qp-cvcw-x6jj. - const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined; - 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(), - 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 = (() => { - if (!dummy.stack) { - return ''; - } - const firstNewlineIndex = dummy.stack.indexOf('\n'); - return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1); - })(); - try { - if (!err.stack) { - err.stack = stack; - // match without the 2 top stack lines - } else if (stack) { - const firstNewlineIndex = stack.indexOf('\n'); - const secondNewlineIndex = firstNewlineIndex === -1 ? -1 : stack.indexOf('\n', firstNewlineIndex + 1); - const stackWithoutTwoTopLines = secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1); - if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) { - err.stack += '\n' + stack; - } - } - } catch (e) { - // ignore the case where "stack" is an un-writable property - } - } - 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), - legacyInterceptorReqResOrdering: 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.allowAbsoluteUrls - if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) { - config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; - } else { - config.allowAbsoluteUrls = true; - } - validator.assertOptions(config, { - baseUrl: validators.spelling('baseURL'), - withXsrfToken: validators.spelling('withXSRFToken') - }, 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.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; - const transitional = config.transitional || transitionalDefaults; - const legacyInterceptorReqResOrdering = transitional && transitional.legacyInterceptorReqResOrdering; - if (legacyInterceptorReqResOrdering) { - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - } else { - requestInterceptorChain.push(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(...requestInterceptorChain); - chain.push(...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; - 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, config.allowAbsoluteUrls); - 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) { - 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); -}); - -/** - * 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); - } - } - toAbortSignal() { - const controller = new AbortController(); - const abort = err => { - controller.abort(err); - }; - this.subscribe(abort); - controller.signal.unsubscribe = () => this.unsubscribe(abort); - return controller.signal; - } - - /** - * 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 - }; - } -} - -/** - * 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) {} - * const 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, - WebServerIsDown: 521, - ConnectionTimedOut: 522, - OriginIsUnreachable: 523, - TimeoutOccurred: 524, - SslHandshakeFailed: 525, - InvalidSslCertificate: 526 -}; -Object.entries(HttpStatusCode).forEach(([key, value]) => { - HttpStatusCode[value] = key; -}); - -/** - * 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$1.extend(instance, Axios.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); - -// 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$1.isHTMLForm(thing) ? new FormData(thing) : thing); -axios.getAdapter = adapters.getAdapter; -axios.HttpStatusCode = HttpStatusCode; -axios.default = axios; - -module.exports = axios; -//# sourceMappingURL=axios.cjs.map diff --git a/.claude/skills/教学日程查询/node_modules/axios/dist/node/axios.cjs.map b/.claude/skills/教学日程查询/node_modules/axios/dist/node/axios.cjs.map deleted file mode 100644 index a286fb4..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/dist/node/axios.cjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"axios.cjs","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/node/classes/URLSearchParams.js","../../lib/platform/node/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../node_modules/proxy-from-env/index.js","../../lib/env/data.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/fromDataURI.js","../../lib/helpers/AxiosTransformStream.js","../../lib/helpers/readBlob.js","../../lib/helpers/formDataToStream.js","../../lib/helpers/ZlibHeaderTransformStream.js","../../lib/helpers/callbackify.js","../../lib/helpers/shouldBypassProxy.js","../../lib/helpers/speedometer.js","../../lib/helpers/throttle.js","../../lib/helpers/progressEventReducer.js","../../lib/helpers/estimateDataURLDecodedBytes.js","../../lib/adapters/http.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/cookies.js","../../lib/core/mergeConfig.js","../../lib/helpers/resolveConfig.js","../../lib/adapters/xhr.js","../../lib/helpers/composeSignals.js","../../lib/helpers/trackStream.js","../../lib/adapters/fetch.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.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\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\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;\nconst { iterator, toStringTag } = Symbol;\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 a non-null object\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 (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\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 * 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 (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\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 React Native Blob\n * React Native \"blob\": an object with a `uri` attribute. Optionally, it can\n * also have a `name` and `type` attribute to specify filename and content type\n *\n * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71\n * \n * @param {*} value The value to test\n * \n * @returns {boolean} True if value is a React Native Blob, otherwise false\n */\nconst isReactNativeBlob = (value) => {\n return !!(value && typeof value.uri !== 'undefined');\n}\n\n/**\n * Determine if environment is React Native\n * ReactNative `FormData` has a non-standard `getParts()` method\n * \n * @param {*} formData The formData to test\n * \n * @returns {boolean} True if environment is React Native, otherwise false\n */\nconst isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined';\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 */\nfunction getGlobal() {\n if (typeof globalThis !== 'undefined') return globalThis;\n if (typeof self !== 'undefined') return self;\n if (typeof window !== 'undefined') return window;\n if (typeof global !== 'undefined') return global;\n return {};\n}\n\nconst G = getGlobal();\nconst FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined;\n\nconst isFormData = (thing) => {\n if (!thing) return false;\n if (FormDataCtor && thing instanceof FormDataCtor) return true;\n // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9).\n const proto = getPrototypeOf(thing);\n if (!proto || proto === Object.prototype) return false;\n if (!isFunction(thing.append)) return false;\n const kind = kindOf(thing);\n return kind === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]');\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\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n 'ReadableStream',\n 'Request',\n 'Response',\n 'Headers',\n].map(kindOfTest);\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) => {\n return str.trim ? 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 {Object} [options]\n * @param {Boolean} [options.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 // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\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\n/**\n * Finds a key in an object, case-insensitive, returning the actual key name.\n * Returns null if the object is a Buffer or if no match is found.\n *\n * @param {Object} obj - The object to search.\n * @param {string} key - The key to find (case-insensitive).\n * @returns {?string} The actual key name if found, otherwise null.\n */\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\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 * const 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, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return;\n }\n\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 if (!skipUndefined || !isUndefined(val)) {\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 {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys }\n );\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 Object.defineProperty(constructor.prototype, 'constructor', {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\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 * 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[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, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(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\n/**\n * Converts an array or a delimited string into an object set with values as keys and true as values.\n * Useful for fast membership checks.\n *\n * @param {Array|string} arrayOrString - The array or string to convert.\n * @param {string} delimiter - The delimiter to use if input is a string.\n * @returns {Object} An object with keys from the array or string, values set to true.\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 return value != null && Number.isFinite((value = +value)) ? value : defaultValue;\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 !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === 'FormData' &&\n thing[iterator]\n );\n}\n\n/**\n * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers.\n *\n * @param {Object} obj - The object to convert.\n * @returns {Object} The JSON-compatible object.\n */\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\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\n/**\n * Determines if a value is an async function.\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is an async function, otherwise false.\n */\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\n/**\n * Determines if a value is thenable (has then and catch methods).\n *\n * @param {*} thing - The value to test.\n * @returns {boolean} True if value is thenable, otherwise false.\n */\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\n/**\n * Provides a cross-platform setImmediate implementation.\n * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout.\n *\n * @param {boolean} setImmediateSupported - Whether setImmediate is supported.\n * @param {boolean} postMessageSupported - Whether postMessage is supported.\n * @returns {Function} A function to schedule a callback asynchronously.\n */\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n 'message',\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, '*');\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === 'function', isFunction(_global.postMessage));\n\n/**\n * Schedules a microtask or asynchronous callback as soon as possible.\n * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate.\n *\n * @type {Function}\n */\nconst asap =\n typeof queueMicrotask !== 'undefined'\n ? queueMicrotask.bind(_global)\n : (typeof process !== 'undefined' && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isReactNativeBlob,\n isReactNative,\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 isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n\n // Preserve status from the original error if not already set from response\n if (error.status != null && axiosError.status == null) {\n axiosError.status = error.status;\n }\n\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\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 */\n constructor(message, code, config, request, response) {\n super(message);\n\n // Make message enumerable to maintain backward compatibility\n // The native Error constructor sets message as non-enumerable,\n // but axios < v1.13.3 had it as enumerable\n Object.defineProperty(this, 'message', {\n value: message,\n enumerable: true,\n writable: true,\n configurable: true,\n });\n\n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n 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.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\nAxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED';\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\n .concat(key)\n .map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n })\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(\n options,\n {\n metaTokens: true,\n dots: false,\n indexes: false,\n },\n false,\n function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n }\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 maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth;\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 (utils.isBoolean(value)) {\n return value.toString();\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 (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) {\n formData.append(renderKey(path, key, dots), convertValue(value));\n return false;\n }\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) &&\n formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true\n ? renderKey([key], index, dots)\n : indexes === null\n ? key\n : 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, depth = 0) {\n if (utils.isUndefined(value)) return;\n\n if (depth > maxDepth) {\n throw new AxiosError(\n 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth,\n AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED\n );\n }\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 =\n !(utils.isUndefined(el) || el === null) &&\n visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers);\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key], depth + 1);\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 };\n return encodeURIComponent(str).replace(/[!'()~]|%20/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\n ? function (value) {\n return encoder.call(this, value, encode);\n }\n : encode;\n\n return this._pairs\n .map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '')\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 URL-encoded forms of `:`, `$`, `,`, and spaces with\n * their plain 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}\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|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = (options && options.encode) || encode;\n\n const _options = utils.isFunction(options)\n ? {\n serialize: options,\n }\n : options;\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 * @param {Object} options The options for the interceptor, synchronous and runWhen\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 {void}\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 legacyInterceptorReqResOrdering: true,\n};\n","'use strict';\n\nimport url from 'url';\nexport default url.URLSearchParams;\n","import crypto from 'crypto';\nimport URLSearchParams from './classes/URLSearchParams.js';\nimport FormData from './classes/FormData.js';\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 const randomValues = new Uint32Array(size);\n crypto.randomFillSync(randomValues);\n for (let i = 0; i < size; i++) {\n str += alphabet[randomValues[i] % length];\n }\n\n return str;\n};\n\nexport default {\n isNode: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob: (typeof Blob !== 'undefined' && Blob) || null,\n },\n ALPHABET,\n generateString,\n protocols: ['http', 'https', 'file', 'data'],\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = (typeof navigator === 'object' && navigator) || 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 hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\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\nconst origin = (hasBrowserEnv && window.location.href) || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin,\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(), {\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}\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] = utils.isArray(target[name])\n ? target[name].concat(value)\n : [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\nconst own = (obj, key) => (obj != null && utils.hasOwnProp(obj, key) ? obj[key] : undefined);\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 transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [\n 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 (\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(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 const formSerializer = own(this, 'formSerializer');\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, formSerializer).toString();\n }\n\n if (\n (isFileList = utils.isFileList(data)) ||\n contentType.indexOf('multipart/form-data') > -1\n ) {\n const env = own(this, 'env');\n const _FormData = env && env.FormData;\n\n return toFormData(\n isFileList ? { 'files[]': data } : data,\n _FormData && new _FormData(),\n 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\n transformResponse: [\n function transformResponse(data) {\n const transitional = own(this, 'transitional') || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const responseType = own(this, 'responseType');\n const JSONRequested = responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (\n data &&\n utils.isString(data) &&\n ((forcedJSONParsing && !responseType) || JSONRequested)\n ) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, own(this, 'parseReviver'));\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(this, 'response'));\n }\n throw e;\n }\n }\n }\n\n return data;\n },\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',\n 'authorization',\n 'content-length',\n 'content-type',\n 'etag',\n 'expires',\n 'from',\n 'host',\n 'if-modified-since',\n 'if-unmodified-since',\n 'last-modified',\n 'location',\n 'max-forwards',\n 'proxy-authorization',\n 'referer',\n 'retry-after',\n '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 &&\n 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\nconst INVALID_HEADER_VALUE_CHARS_RE = /[^\\x09\\x20-\\x7E\\x80-\\xFF]/g;\n\nfunction trimSPorHTAB(str) {\n let start = 0;\n let end = str.length;\n\n while (start < end) {\n const code = str.charCodeAt(start);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n start += 1;\n }\n\n while (end > start) {\n const code = str.charCodeAt(end - 1);\n\n if (code !== 0x09 && code !== 0x20) {\n break;\n }\n\n end -= 1;\n }\n\n return start === 0 && end === str.length ? str : str.slice(start, end);\n}\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction sanitizeHeaderValue(str) {\n return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, ''));\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(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\n .trim()\n .toLowerCase()\n .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 (\n !key ||\n self[key] === undefined ||\n _rewrite === true ||\n (_rewrite === undefined && self[key] !== false)\n ) {\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 if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {},\n dest,\n key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[(key = entry[0])] = (dest = obj[key])\n ? utils.isArray(dest)\n ? [...dest, entry[1]]\n : [dest, entry[1]]\n : entry[1];\n }\n\n setHeaders(obj, 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 !!(\n key &&\n this[key] !== undefined &&\n (!matcher || matchHeaderValue(this, this[key], key, matcher))\n );\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 &&\n value !== false &&\n (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())\n .map(([header, value]) => header + ': ' + value)\n .join('\\n');\n }\n\n getSetCookie() {\n return this.get('set-cookie') || [];\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 =\n (this[$internals] =\n this[$internals] =\n {\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([\n 'Content-Type',\n 'Content-Length',\n 'Accept',\n 'Accept-Encoding',\n 'User-Agent',\n 'Authorization',\n]);\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';\n\nclass CanceledError extends AxiosError {\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 */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\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(\n new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][\n Math.floor(response.status / 100) - 4\n ],\n response.config,\n response.request,\n response\n )\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 if (typeof url !== 'string') {\n return false;\n }\n\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, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nvar DEFAULT_PORTS = {\n ftp: 21,\n gopher: 70,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443,\n};\n\nfunction parseUrl(urlString) {\n try {\n return new URL(urlString);\n } catch {\n return null;\n }\n}\n\n/**\n * @param {string|object|URL} url - The URL as a string or URL instance, or a\n * compatible object (such as the result from legacy url.parse).\n * @return {string} The URL of the proxy that should handle the request to the\n * given URL. If no proxy is set, this will be an empty string.\n */\nexport function getProxyForUrl(url) {\n var parsedUrl = (typeof url === 'string' ? parseUrl(url) : url) || {};\n var proto = parsedUrl.protocol;\n var hostname = parsedUrl.host;\n var port = parsedUrl.port;\n if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') {\n return ''; // Don't proxy URLs without a valid scheme or host.\n }\n\n proto = proto.split(':', 1)[0];\n // Stripping ports in this way instead of using parsedUrl.hostname to make\n // sure that the brackets around IPv6 addresses are kept.\n hostname = hostname.replace(/:\\d*$/, '');\n port = parseInt(port) || DEFAULT_PORTS[proto] || 0;\n if (!shouldProxy(hostname, port)) {\n return ''; // Don't proxy URLs that match NO_PROXY.\n }\n\n var proxy = getEnv(proto + '_proxy') || getEnv('all_proxy');\n if (proxy && proxy.indexOf('://') === -1) {\n // Missing scheme in proxy, default to the requested URL's scheme.\n proxy = proto + '://' + proxy;\n }\n return proxy;\n}\n\n/**\n * Determines whether a given URL should be proxied.\n *\n * @param {string} hostname - The host name of the URL.\n * @param {number} port - The effective port of the URL.\n * @returns {boolean} Whether the given URL should be proxied.\n * @private\n */\nfunction shouldProxy(hostname, port) {\n var NO_PROXY = getEnv('no_proxy').toLowerCase();\n if (!NO_PROXY) {\n return true; // Always proxy if NO_PROXY is not set.\n }\n if (NO_PROXY === '*') {\n return false; // Never proxy if wildcard is set.\n }\n\n return NO_PROXY.split(/[,\\s]/).every(function(proxy) {\n if (!proxy) {\n return true; // Skip zero-length hosts.\n }\n var parsedProxy = proxy.match(/^(.+):(\\d+)$/);\n var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy;\n var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0;\n if (parsedProxyPort && parsedProxyPort !== port) {\n return true; // Skip if ports don't match.\n }\n\n if (!/^[.*]/.test(parsedProxyHostname)) {\n // No wildcards, so stop proxying if there is an exact match.\n return hostname !== parsedProxyHostname;\n }\n\n if (parsedProxyHostname.charAt(0) === '*') {\n // Remove leading wildcard.\n parsedProxyHostname = parsedProxyHostname.slice(1);\n }\n // Stop proxying if the hostname ends with the no_proxy host.\n return !hostname.endsWith(parsedProxyHostname);\n });\n}\n\n/**\n * Get the value for an environment variable.\n *\n * @param {string} key - The name of the environment variable.\n * @return {string} The value of the environment variable.\n * @private\n */\nfunction getEnv(key) {\n return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || '';\n}\n","export const VERSION = \"1.15.2\";","'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\nimport stream from 'stream';\nimport utils from '../utils.js';\n\nconst kInternals = Symbol('internals');\n\nclass AxiosTransformStream extends stream.Transform {\n constructor(options) {\n options = utils.toFlatObject(\n options,\n {\n maxRate: 0,\n chunkSize: 64 * 1024,\n minChunkSize: 100,\n timeWindow: 500,\n ticksRate: 2,\n samplesCount: 15,\n },\n null,\n (prop, source) => {\n return !utils.isUndefined(source[prop]);\n }\n );\n\n super({\n readableHighWaterMark: options.chunkSize,\n });\n\n const internals = (this[kInternals] = {\n timeWindow: options.timeWindow,\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 this.on('newListener', (event) => {\n if (event === 'progress') {\n if (!internals.isCaptured) {\n internals.isCaptured = true;\n }\n }\n });\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 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 =\n internals.minChunkSize !== false\n ? Math.max(internals.minChunkSize, bytesThreshold * 0.01)\n : 0;\n\n const pushChunk = (_chunk, _callback) => {\n const bytes = Buffer.byteLength(_chunk);\n internals.bytesSeen += bytes;\n internals.bytes += bytes;\n\n internals.isCaptured && this.emit('progress', internals.bytesSeen);\n\n if (this.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(\n _chunk,\n chunkRemainder\n ? () => {\n process.nextTick(_callback, null, chunkRemainder);\n }\n : _callback\n );\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\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 util from 'util';\nimport { Readable } from 'stream';\nimport utils from '../utils.js';\nimport readBlob from './readBlob.js';\nimport platform from '../platform/index.js';\n\nconst BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_';\n\nconst textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util.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 const safeType = String(value.type || 'application/octet-stream').replace(/[\\r\\n]/g, '');\n headers += `Content-Type: ${safeType}${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(\n /[\\r\\n\"]/g,\n (match) =>\n ({\n '\\r': '%0D',\n '\\n': '%0A',\n '\"': '%22',\n })[match]\n );\n }\n}\n\nconst formDataToStream = (form, headersHandler, options) => {\n const {\n tag = 'form-data-boundary',\n size = 25,\n boundary = tag + '-' + platform.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);\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(\n (async function* () {\n for (const part of parts) {\n yield boundaryBytes;\n yield* part.encode();\n }\n\n yield footerBytes;\n })()\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) {\n // 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)\n ? 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 }\n : fn;\n};\n\nexport default callbackify;\n","const LOOPBACK_HOSTNAMES = new Set(['localhost']);\n\nconst isIPv4Loopback = (host) => {\n const parts = host.split('.');\n if (parts.length !== 4) return false;\n if (parts[0] !== '127') return false;\n return parts.every((p) => /^\\d+$/.test(p) && Number(p) >= 0 && Number(p) <= 255);\n};\n\nconst isIPv6Loopback = (host) => {\n // Collapse all-zero groups: any form of ::1 / 0:0:...:0:1\n // First, strip any leading \"::\" by normalising with Set lookup of common forms,\n // then fall back to structural check.\n if (host === '::1') return true;\n\n // Check IPv4-mapped IPv6 loopback: ::ffff: or ::ffff:\n // Node's URL parser normalises ::ffff:127.0.0.1 → ::ffff:7f00:1\n const v4MappedDotted = host.match(/^::ffff:(\\d+\\.\\d+\\.\\d+\\.\\d+)$/i);\n if (v4MappedDotted) return isIPv4Loopback(v4MappedDotted[1]);\n\n const v4MappedHex = host.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i);\n if (v4MappedHex) {\n const high = parseInt(v4MappedHex[1], 16);\n // High 16 bits must start with 127 (0x7f) — i.e. 0x7f00..0x7fff\n return high >= 0x7f00 && high <= 0x7fff;\n }\n\n // Full-form ::1 variants: any number of zero groups followed by trailing 1\n // e.g. 0:0:0:0:0:0:0:1, 0000:...:0001\n const groups = host.split(':');\n if (groups.length === 8) {\n for (let i = 0; i < 7; i++) {\n if (!/^0+$/.test(groups[i])) return false;\n }\n return /^0*1$/.test(groups[7]);\n }\n\n return false;\n};\n\nconst isLoopback = (host) => {\n if (!host) return false;\n if (LOOPBACK_HOSTNAMES.has(host)) return true;\n if (isIPv4Loopback(host)) return true;\n return isIPv6Loopback(host);\n};\n\nconst DEFAULT_PORTS = {\n http: 80,\n https: 443,\n ws: 80,\n wss: 443,\n ftp: 21,\n};\n\nconst parseNoProxyEntry = (entry) => {\n let entryHost = entry;\n let entryPort = 0;\n\n if (entryHost.charAt(0) === '[') {\n const bracketIndex = entryHost.indexOf(']');\n\n if (bracketIndex !== -1) {\n const host = entryHost.slice(1, bracketIndex);\n const rest = entryHost.slice(bracketIndex + 1);\n\n if (rest.charAt(0) === ':' && /^\\d+$/.test(rest.slice(1))) {\n entryPort = Number.parseInt(rest.slice(1), 10);\n }\n\n return [host, entryPort];\n }\n }\n\n const firstColon = entryHost.indexOf(':');\n const lastColon = entryHost.lastIndexOf(':');\n\n if (\n firstColon !== -1 &&\n firstColon === lastColon &&\n /^\\d+$/.test(entryHost.slice(lastColon + 1))\n ) {\n entryPort = Number.parseInt(entryHost.slice(lastColon + 1), 10);\n entryHost = entryHost.slice(0, lastColon);\n }\n\n return [entryHost, entryPort];\n};\n\nconst normalizeNoProxyHost = (hostname) => {\n if (!hostname) {\n return hostname;\n }\n\n if (hostname.charAt(0) === '[' && hostname.charAt(hostname.length - 1) === ']') {\n hostname = hostname.slice(1, -1);\n }\n\n return hostname.replace(/\\.+$/, '');\n};\n\nexport default function shouldBypassProxy(location) {\n let parsed;\n\n try {\n parsed = new URL(location);\n } catch (_err) {\n return false;\n }\n\n const noProxy = (process.env.no_proxy || process.env.NO_PROXY || '').toLowerCase();\n\n if (!noProxy) {\n return false;\n }\n\n if (noProxy === '*') {\n return true;\n }\n\n const port =\n Number.parseInt(parsed.port, 10) || DEFAULT_PORTS[parsed.protocol.split(':', 1)[0]] || 0;\n\n const hostname = normalizeNoProxyHost(parsed.hostname.toLowerCase());\n\n return noProxy.split(/[\\s,]+/).some((entry) => {\n if (!entry) {\n return false;\n }\n\n let [entryHost, entryPort] = parseNoProxyEntry(entry);\n\n entryHost = normalizeNoProxyHost(entryHost);\n\n if (!entryHost) {\n return false;\n }\n\n if (entryPort && entryPort !== port) {\n return false;\n }\n\n if (entryHost.charAt(0) === '*') {\n entryHost = entryHost.slice(1);\n }\n\n if (entryHost.charAt(0) === '.') {\n return hostname.endsWith(entryHost);\n }\n\n return hostname === entryHost || (isLoopback(hostname) && isLoopback(entryHost));\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","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if (passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from './speedometer.js';\nimport throttle from './throttle.js';\nimport utils from '../utils.js';\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle((e) => {\n const rawLoaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded;\n const progressBytes = Math.max(0, loaded - bytesNotified);\n const rate = _speedometer(progressBytes);\n\n bytesNotified = Math.max(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 ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true,\n };\n\n listener(data);\n }, freq);\n};\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [\n (loaded) =>\n throttled[0]({\n lengthComputable,\n total,\n loaded,\n }),\n throttled[1],\n ];\n};\n\nexport const asyncDecorator =\n (fn) =>\n (...args) =>\n utils.asap(() => fn(...args));\n","/**\n * Estimate decoded byte length of a data:// URL *without* allocating large buffers.\n * - For base64: compute exact decoded size using length and padding;\n * handle %XX at the character-count level (no string allocation).\n * - For non-base64: use UTF-8 byteLength of the encoded body as a safe upper bound.\n *\n * @param {string} url\n * @returns {number}\n */\nexport default function estimateDataURLDecodedBytes(url) {\n if (!url || typeof url !== 'string') return 0;\n if (!url.startsWith('data:')) return 0;\n\n const comma = url.indexOf(',');\n if (comma < 0) return 0;\n\n const meta = url.slice(5, comma);\n const body = url.slice(comma + 1);\n const isBase64 = /;base64/i.test(meta);\n\n if (isBase64) {\n let effectiveLen = body.length;\n const len = body.length; // cache length\n\n for (let i = 0; i < len; i++) {\n if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) {\n const a = body.charCodeAt(i + 1);\n const b = body.charCodeAt(i + 2);\n const isHex =\n ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) &&\n ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102));\n\n if (isHex) {\n effectiveLen -= 2;\n i += 2;\n }\n }\n }\n\n let pad = 0;\n let idx = len - 1;\n\n const tailIsPct3D = (j) =>\n j >= 2 &&\n body.charCodeAt(j - 2) === 37 && // '%'\n body.charCodeAt(j - 1) === 51 && // '3'\n (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd'\n\n if (idx >= 0) {\n if (body.charCodeAt(idx) === 61 /* '=' */) {\n pad++;\n idx--;\n } else if (tailIsPct3D(idx)) {\n pad++;\n idx -= 3;\n }\n }\n\n if (pad === 1 && idx >= 0) {\n if (body.charCodeAt(idx) === 61 /* '=' */) {\n pad++;\n } else if (tailIsPct3D(idx)) {\n pad++;\n }\n }\n\n const groups = Math.floor(effectiveLen / 4);\n const bytes = groups * 3 - (pad || 0);\n return bytes > 0 ? bytes : 0;\n }\n\n return Buffer.byteLength(body, 'utf8');\n}\n","import 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 http2 from 'http2';\nimport util from 'util';\nimport { resolve as resolvePath } from 'path';\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';\nimport shouldBypassProxy from '../helpers/shouldBypassProxy.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport estimateDataURLDecodedBytes from '../helpers/estimateDataURLDecodedBytes.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\n// Symbols used to bind a single 'error' listener to a pooled socket and track\n// the request currently owning that socket across keep-alive reuse (issue #10780).\nconst kAxiosSocketListener = Symbol('axios.http.socketListener');\nconst kAxiosCurrentReq = Symbol('axios.http.currentReq');\n\nconst supportedProtocols = platform.protocols.map((protocol) => {\n return protocol + ':';\n});\n\nconst flushOnFinish = (stream, [throttled, flush]) => {\n stream.on('end', flush).on('error', flush);\n\n return throttled;\n};\n\nclass Http2Sessions {\n constructor() {\n this.sessions = Object.create(null);\n }\n\n getSession(authority, options) {\n options = Object.assign(\n {\n sessionTimeout: 1000,\n },\n options\n );\n\n let authoritySessions = this.sessions[authority];\n\n if (authoritySessions) {\n let len = authoritySessions.length;\n\n for (let i = 0; i < len; i++) {\n const [sessionHandle, sessionOptions] = authoritySessions[i];\n if (\n !sessionHandle.destroyed &&\n !sessionHandle.closed &&\n util.isDeepStrictEqual(sessionOptions, options)\n ) {\n return sessionHandle;\n }\n }\n }\n\n const session = http2.connect(authority, options);\n\n let removed;\n\n const removeSession = () => {\n if (removed) {\n return;\n }\n\n removed = true;\n\n let entries = authoritySessions,\n len = entries.length,\n i = len;\n\n while (i--) {\n if (entries[i][0] === session) {\n if (len === 1) {\n delete this.sessions[authority];\n } else {\n entries.splice(i, 1);\n }\n if (!session.closed) {\n session.close();\n }\n return;\n }\n }\n };\n\n const originalRequestFn = session.request;\n\n const { sessionTimeout } = options;\n\n if (sessionTimeout != null) {\n let timer;\n let streamsCount = 0;\n\n session.request = function () {\n const stream = originalRequestFn.apply(this, arguments);\n\n streamsCount++;\n\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n\n stream.once('close', () => {\n if (!--streamsCount) {\n timer = setTimeout(() => {\n timer = null;\n removeSession();\n }, sessionTimeout);\n }\n });\n\n return stream;\n };\n }\n\n session.once('close', removeSession);\n\n let entry = [session, options];\n\n authoritySessions\n ? authoritySessions.push(entry)\n : (authoritySessions = this.sessions[authority] = [entry]);\n\n return session;\n }\n}\n\nconst http2Sessions = new Http2Sessions();\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 if (!shouldBypassProxy(location)) {\n proxy = new URL(proxyUrl);\n }\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 const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password);\n\n if (validProxyAuth) {\n proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');\n } else if (typeof proxy.auth === 'object') {\n throw new AxiosError('Invalid proxy authorization', AxiosError.ERR_BAD_OPTION, { proxy });\n }\n\n const base64 = Buffer.from(proxy.auth, 'utf8').toString('base64');\n\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 =\n 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) =>\n resolveFamily(utils.isObject(address) ? address : { address, family });\n\nconst http2Transport = {\n request(options, cb) {\n const authority =\n options.protocol +\n '//' +\n options.hostname +\n ':' +\n (options.port || (options.protocol === 'https:' ? 443 : 80));\n\n const { http2Options, headers } = options;\n\n const session = http2Sessions.getSession(authority, http2Options);\n\n const { HTTP2_HEADER_SCHEME, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_STATUS } =\n http2.constants;\n\n const http2Headers = {\n [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''),\n [HTTP2_HEADER_METHOD]: options.method,\n [HTTP2_HEADER_PATH]: options.path,\n };\n\n utils.forEach(headers, (header, name) => {\n name.charAt(0) !== ':' && (http2Headers[name] = header);\n });\n\n const req = session.request(http2Headers);\n\n req.once('response', (responseHeaders) => {\n const response = req; //duplex\n\n responseHeaders = Object.assign({}, responseHeaders);\n\n const status = responseHeaders[HTTP2_HEADER_STATUS];\n\n delete responseHeaders[HTTP2_HEADER_STATUS];\n\n response.headers = responseHeaders;\n\n response.statusCode = +status;\n\n cb(response);\n });\n\n return req;\n },\n};\n\n/*eslint consistent-return:0*/\nexport default isHttpAdapterSupported &&\n function httpAdapter(config) {\n return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {\n const own = (key) => (utils.hasOwnProp(config, key) ? config[key] : undefined);\n let data = own('data');\n let lookup = own('lookup');\n let family = own('family');\n let httpVersion = own('httpVersion');\n if (httpVersion === undefined) httpVersion = 1;\n let http2Options = own('http2Options');\n const responseType = own('responseType');\n const responseEncoding = own('responseEncoding');\n const method = config.method.toUpperCase();\n let isDone;\n let rejected = false;\n let req;\n\n httpVersion = +httpVersion;\n\n if (Number.isNaN(httpVersion)) {\n throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`);\n }\n\n if (httpVersion !== 1 && httpVersion !== 2) {\n throw TypeError(`Unsupported protocol version '${httpVersion}'`);\n }\n\n const isHttp2 = httpVersion === 2;\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)\n ? arg0.map((addr) => buildAddressEntry(addr))\n : [buildAddressEntry(arg0, arg1)];\n\n opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);\n });\n };\n }\n\n const abortEmitter = new EventEmitter();\n\n function abort(reason) {\n try {\n abortEmitter.emit(\n 'abort',\n !reason || reason.type ? new CanceledError(null, config, req) : reason\n );\n } catch (err) {\n console.warn('emit error', err);\n }\n }\n\n abortEmitter.once('abort', reject);\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 abortEmitter.removeAllListeners();\n };\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 onDone((response, isRejected) => {\n isDone = true;\n\n if (isRejected) {\n rejected = true;\n onFinished();\n return;\n }\n\n const { data } = response;\n\n if (data instanceof stream.Readable || data instanceof stream.Duplex) {\n const offListeners = stream.finished(data, () => {\n offListeners();\n onFinished();\n });\n } else {\n onFinished();\n }\n });\n\n // Parse url\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined);\n const protocol = parsed.protocol || supportedProtocols[0];\n\n if (protocol === 'data:') {\n // Apply the same semantics as HTTP: only enforce if a finite, non-negative cap is set.\n if (config.maxContentLength > -1) {\n // Use the exact string passed to fromDataURI (config.url); fall back to fullPath if needed.\n const dataUrl = String(config.url || fullPath || '');\n const estimated = estimateDataURLDecodedBytes(dataUrl);\n\n if (estimated > config.maxContentLength) {\n return reject(\n new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config\n )\n );\n }\n }\n\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(\n new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_BAD_REQUEST, 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 { onUploadProgress, onDownloadProgress } = config;\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(\n data,\n (formHeaders) => {\n headers.set(formHeaders);\n },\n {\n tag: `axios-${VERSION}-boundary`,\n boundary: (userBoundary && userBoundary[1]) || undefined,\n }\n );\n // support for https://www.npmjs.com/package/form-data api\n } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders) &&\n data.getHeaders !== Object.prototype.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) &&\n knownLength >= 0 &&\n headers.setContentLength(knownLength);\n /*eslint no-empty:0*/\n } catch (e) {}\n }\n } else if (utils.isBlob(data) || utils.isFile(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(\n 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\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(\n new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\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(\n [\n data,\n new AxiosTransformStream({\n maxRate: utils.toFiniteNumber(maxUploadRate),\n }),\n ],\n utils.noop\n );\n\n onUploadProgress &&\n data.on(\n 'progress',\n flushOnFinish(\n data,\n progressEventDecorator(\n contentLength,\n progressEventReducer(asyncDecorator(onUploadProgress), false, 3)\n )\n )\n );\n }\n\n // HTTP basic authentication\n let auth = undefined;\n const configAuth = own('auth');\n if (configAuth) {\n const username = configAuth.username || '';\n const password = configAuth.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' : ''),\n false\n );\n\n // Null-prototype to block prototype pollution gadgets on properties read\n // directly by Node's http.request (e.g. insecureHTTPParser, lookup).\n // See GHSA-q8qp-cvcw-x6jj.\n const options = Object.assign(Object.create(null), {\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: Object.create(null),\n http2Options,\n });\n\n // cacheable-lookup integration hotfix\n !utils.isUndefined(lookup) && (options.lookup = lookup);\n\n if (config.socketPath) {\n if (typeof config.socketPath !== 'string') {\n return reject(new AxiosError(\n 'socketPath must be a string',\n AxiosError.ERR_BAD_OPTION_VALUE,\n config\n ));\n }\n\n if (config.allowedSocketPaths != null) {\n const allowed = Array.isArray(config.allowedSocketPaths)\n ? config.allowedSocketPaths\n : [config.allowedSocketPaths];\n\n const resolvedSocket = resolvePath(config.socketPath);\n const isAllowed = allowed.some(\n (entry) => typeof entry === 'string' && resolvePath(entry) === resolvedSocket\n );\n\n if (!isAllowed) {\n return reject(new AxiosError(\n `socketPath \"${config.socketPath}\" is not permitted by allowedSocketPaths`,\n AxiosError.ERR_BAD_OPTION_VALUE,\n config\n ));\n }\n }\n\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname.startsWith('[')\n ? parsed.hostname.slice(1, -1)\n : parsed.hostname;\n options.port = parsed.port;\n setProxy(\n options,\n config.proxy,\n 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\n if (isHttp2) {\n transport = http2Transport;\n } else {\n const configTransport = own('transport');\n if (configTransport) {\n transport = configTransport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsRequest ? https : http;\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n const configBeforeRedirect = own('beforeRedirect');\n if (configBeforeRedirect) {\n options.beforeRedirects.config = configBeforeRedirect;\n }\n transport = isHttpsRequest ? httpsFollow : httpFollow;\n }\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 // Always set an explicit own value so a polluted\n // Object.prototype.insecureHTTPParser cannot enable the lenient parser\n // through Node's internal options copy (GHSA-q8qp-cvcw-x6jj).\n options.insecureHTTPParser = Boolean(own('insecureHTTPParser'));\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 = utils.toFiniteNumber(res.headers['content-length']);\n\n if (onDownloadProgress || maxDownloadRate) {\n const transformStream = new AxiosTransformStream({\n maxRate: utils.toFiniteNumber(maxDownloadRate),\n });\n\n onDownloadProgress &&\n transformStream.on(\n 'progress',\n flushOnFinish(\n transformStream,\n progressEventDecorator(\n responseLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true, 3)\n )\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 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 // Enforce maxContentLength on streamed responses; previously this\n // was applied only to buffered responses. See GHSA-vf2m-468p-8v99.\n if (config.maxContentLength > -1) {\n const limit = config.maxContentLength;\n const source = responseStream;\n async function* enforceMaxContentLength() {\n let totalResponseBytes = 0;\n for await (const chunk of source) {\n totalResponseBytes += chunk.length;\n if (totalResponseBytes > limit) {\n throw new AxiosError(\n 'maxContentLength size of ' + limit + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n );\n }\n yield chunk;\n }\n }\n responseStream = stream.Readable.from(enforceMaxContentLength(), {\n objectMode: false,\n });\n }\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 abort(\n new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n )\n );\n }\n });\n\n responseStream.on('aborted', function handlerStreamAborted() {\n if (rejected) {\n return;\n }\n\n const err = new AxiosError(\n 'stream has been aborted',\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 =\n 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 abortEmitter.once('abort', (err) => {\n if (!responseStream.destroyed) {\n responseStream.emit('error', err);\n responseStream.destroy();\n }\n });\n });\n\n abortEmitter.once('abort', (err) => {\n if (req.close) {\n req.close();\n } else {\n req.destroy(err);\n }\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\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 // Install a single 'error' listener per socket (not per request) to avoid\n // accumulating listeners on pooled keep-alive sockets that get reassigned\n // to new requests before the previous request's 'close' fires (issue #10780).\n // The listener is bound to the socket's currently-active request via a\n // symbol, which is swapped as the socket is reassigned.\n if (!socket[kAxiosSocketListener]) {\n socket.on('error', function handleSocketError(err) {\n const current = socket[kAxiosCurrentReq];\n if (current && !current.destroyed) {\n current.destroy(err);\n }\n });\n socket[kAxiosSocketListener] = true;\n }\n\n socket[kAxiosCurrentReq] = req;\n\n req.once('close', function clearCurrentReq() {\n if (socket[kAxiosCurrentReq] === req) {\n socket[kAxiosCurrentReq] = null;\n }\n });\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 abort(\n new AxiosError(\n 'error trying to parse `config.timeout` to int',\n AxiosError.ERR_BAD_OPTION_VALUE,\n config,\n req\n )\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\n ? 'timeout of ' + config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n abort(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n req\n )\n );\n });\n } else {\n // explicitly reset the socket timeout value for a possible `keep-alive` request\n req.setTimeout(0);\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 // Enforce maxBodyLength for streamed uploads on the native http/https\n // transport (maxRedirects === 0); follow-redirects enforces it on the\n // other path. See GHSA-5c9x-8gcm-mpgx.\n let uploadStream = data;\n if (config.maxBodyLength > -1 && config.maxRedirects === 0) {\n const limit = config.maxBodyLength;\n let bytesSent = 0;\n uploadStream = stream.pipeline(\n [\n data,\n new stream.Transform({\n transform(chunk, _enc, cb) {\n bytesSent += chunk.length;\n if (bytesSent > limit) {\n return cb(\n new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config,\n req\n )\n );\n }\n cb(null, chunk);\n },\n }),\n ],\n utils.noop\n );\n uploadStream.on('error', (err) => {\n if (!req.destroyed) req.destroy(err);\n });\n }\n\n uploadStream.pipe(req);\n } else {\n data && req.write(data);\n req.end();\n }\n });\n };\n\nexport const __setProxy = setProxy;\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n })(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n )\n : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv\n ? // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\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","'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\n // Use a null-prototype object so that downstream reads such as `config.auth`\n // or `config.baseURL` cannot inherit polluted values from Object.prototype\n // (see GHSA-q8qp-cvcw-x6jj). `hasOwnProperty` is restored as a non-enumerable\n // own slot to preserve ergonomics for user code that relies on it.\n const config = Object.create(null);\n Object.defineProperty(config, 'hasOwnProperty', {\n value: Object.prototype.hasOwnProperty,\n enumerable: false,\n writable: true,\n configurable: true,\n });\n\n function getMergedValue(target, source, prop, 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 function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, 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 (utils.hasOwnProp(config2, prop)) {\n return getMergedValue(a, b);\n } else if (utils.hasOwnProp(config1, prop)) {\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 allowedSocketPaths: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {\n if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return;\n const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;\n const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined;\n const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined;\n const configValue = merge(a, b, prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport isURLSameOrigin from './isURLSameOrigin.js';\nimport cookies from './cookies.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport mergeConfig from '../core/mergeConfig.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport buildURL from './buildURL.js';\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n // Read only own properties to prevent prototype pollution gadgets\n // (e.g. Object.prototype.baseURL = 'https://evil.com'). See GHSA-q8qp-cvcw-x6jj.\n const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined);\n\n const data = own('data');\n let withXSRFToken = own('withXSRFToken');\n const xsrfHeaderName = own('xsrfHeaderName');\n const xsrfCookieName = own('xsrfCookieName');\n let headers = own('headers');\n const auth = own('auth');\n const baseURL = own('baseURL');\n const allowAbsoluteUrls = own('allowAbsoluteUrls');\n const url = own('url');\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(\n buildFullPath(baseURL, url, allowAbsoluteUrls),\n config.params,\n config.paramsSerializer\n );\n\n // HTTP basic authentication\n if (auth) {\n headers.set(\n 'Authorization',\n 'Basic ' +\n btoa(\n (auth.username || '') +\n ':' +\n (auth.password ? unescape(encodeURIComponent(auth.password)) : '')\n )\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\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\n if (platform.hasStandardBrowserEnv) {\n if (utils.isFunction(withXSRFToken)) {\n withXSRFToken = withXSRFToken(newConfig);\n }\n\n // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1)\n // and misconfigurations (e.g. \"false\") from short-circuiting the same-origin check and leaking\n // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c.\n const shouldSendXSRF =\n withXSRFToken === true ||\n (withXSRFToken == null && isURLSameOrigin(newConfig.url));\n\n if (shouldSendXSRF) {\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n","import utils from '../utils.js';\nimport settle from '../core/settle.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 { progressEventReducer } from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported &&\n function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let { responseType, onUploadProgress, onDownloadProgress } = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, 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 =\n !responseType || responseType === 'text' || responseType === 'json'\n ? request.responseText\n : 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(\n function _resolve(value) {\n resolve(value);\n done();\n },\n function _reject(err) {\n reject(err);\n done();\n },\n response\n );\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 (\n request.status === 0 &&\n !(request.responseURL && request.responseURL.indexOf('file:') === 0)\n ) {\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(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout\n ? 'timeout of ' + _config.timeout + 'ms exceeded'\n : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(\n new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request\n )\n );\n\n // Clean up request\n request = null;\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 (onDownloadProgress) {\n [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\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\n ? onCanceled()\n : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(\n new AxiosError(\n 'Unsupported protocol ' + protocol + ':',\n AxiosError.ERR_BAD_REQUEST,\n config\n )\n );\n return;\n }\n\n // Send the request\n request.send(requestData || null);\n });\n };\n","import CanceledError from '../cancel/CanceledError.js';\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const { length } = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(\n err instanceof AxiosError\n ? err\n : new CanceledError(err instanceof Error ? err.message : err)\n );\n }\n };\n\n let timer =\n timeout &&\n setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach((signal) => {\n signal.unsubscribe\n ? signal.unsubscribe(onabort)\n : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const { signal } = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n};\n\nexport default composeSignals;\n","export const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream(\n {\n async pull(controller) {\n try {\n const { done, value } = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = (bytes += len);\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n },\n },\n {\n highWaterMark: 2,\n }\n );\n};\n","import platform from '../platform/index.js';\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport composeSignals from '../helpers/composeSignals.js';\nimport { trackStream } from '../helpers/trackStream.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {\n progressEventReducer,\n progressEventDecorator,\n asyncDecorator,\n} from '../helpers/progressEventReducer.js';\nimport resolveConfig from '../helpers/resolveConfig.js';\nimport settle from '../core/settle.js';\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst { isFunction } = utils;\n\nconst globalFetchAPI = (({ Request, Response }) => ({\n Request,\n Response,\n}))(utils.global);\n\nconst { ReadableStream, TextEncoder } = utils.global;\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false;\n }\n};\n\nconst factory = (env) => {\n env = utils.merge.call(\n {\n skipUndefined: true,\n },\n globalFetchAPI,\n env\n );\n\n const { fetch: envFetch, Request, Response } = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText =\n isFetchSupported &&\n (typeof TextEncoder === 'function'\n ? (\n (encoder) => (str) =>\n encoder.encode(str)\n )(new TextEncoder())\n : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));\n\n const supportsRequestStream =\n isRequestSupported &&\n isReadableStreamSupported &&\n test(() => {\n let duplexAccessed = false;\n\n const request = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n });\n\n const hasContentType = request.headers.has('Content-Type');\n\n if (request.body != null) {\n request.body.cancel();\n }\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream =\n isResponseSupported &&\n isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body),\n };\n\n isFetchSupported &&\n (() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => {\n !resolvers[type] &&\n (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(\n `Response type '${type}' is not supported`,\n AxiosError.ERR_NOT_SUPPORT,\n config\n );\n });\n });\n })();\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions,\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals(\n [signal, cancelToken && cancelToken.toAbortSignal()],\n timeout\n );\n\n let request = null;\n\n const unsubscribe =\n composedSignal &&\n composedSignal.unsubscribe &&\n (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress &&\n supportsRequestStream &&\n method !== 'get' &&\n method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: 'half',\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype;\n\n // If data is FormData and Content-Type is multipart/form-data without boundary,\n // delete it so fetch can set it correctly with the boundary\n if (utils.isFormData(data)) {\n const contentType = headers.getContentType();\n if (\n contentType &&\n /^multipart\\/form-data/i.test(contentType) &&\n !/boundary=/i.test(contentType)\n ) {\n headers.delete('content-type');\n }\n }\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: 'half',\n credentials: isCredentialsSupported ? withCredentials : undefined,\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported\n ? _fetch(request, fetchOptions)\n : _fetch(url, resolvedOptions));\n\n const isStreamResponse =\n supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach((prop) => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] =\n (onDownloadProgress &&\n progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n )) ||\n [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](\n response,\n config\n );\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request,\n });\n });\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError(\n 'Network Error',\n AxiosError.ERR_NETWORK,\n config,\n request,\n err && err.response\n ),\n {\n cause: err.cause || err,\n }\n );\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n };\n};\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const { fetch, Request, Response } = env;\n const seeds = [Request, Response, fetch];\n\n let len = seeds.length,\n i = len,\n seed,\n target,\n map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, (target = i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from '../core/AxiosError.js';\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n *\n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n },\n};\n\n// Assign adapter names for easier debugging and identification\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\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n *\n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n *\n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) =>\n utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n *\n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\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 && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons).map(\n ([id, state]) =>\n `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\n ? 'since :\\n' + reasons.map(renderReason).join('\\n')\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\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\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(config, config.transformRequest);\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, config);\n\n return adapter(config).then(\n function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, config.transformResponse, response);\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n },\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}\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 (\n '[Axios v' +\n VERSION +\n \"] Transitional option '\" +\n opt +\n \"'\" +\n desc +\n (message ? '. ' + message : '')\n );\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\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return 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 // Use hasOwnProperty so a polluted Object.prototype. cannot supply\n // a non-function validator and cause a TypeError. See GHSA-q8qp-cvcw-x6jj.\n const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined;\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(\n 'option ' + opt + ' must be ' + result,\n AxiosError.ERR_BAD_OPTION_VALUE\n );\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';\nimport transitionalDefaults from '../defaults/transitional.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 = (() => {\n if (!dummy.stack) {\n return '';\n }\n\n const firstNewlineIndex = dummy.stack.indexOf('\\n');\n\n return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1);\n })();\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack) {\n const firstNewlineIndex = stack.indexOf('\\n');\n const secondNewlineIndex =\n firstNewlineIndex === -1 ? -1 : stack.indexOf('\\n', firstNewlineIndex + 1);\n const stackWithoutTwoTopLines =\n secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1);\n\n if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) {\n err.stack += '\\n' + stack;\n }\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\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(\n transitional,\n {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean),\n },\n false\n );\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer,\n };\n } else {\n validator.assertOptions(\n paramsSerializer,\n {\n encode: validators.function,\n serialize: validators.function,\n },\n true\n );\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(\n config,\n {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken'),\n },\n true\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(headers.common, headers[config.method]);\n\n headers &&\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], (method) => {\n delete headers[method];\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 const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering =\n transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\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(...requestInterceptorChain);\n chain.push(...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 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, config.allowAbsoluteUrls);\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(\n mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data,\n })\n );\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(\n mergeConfig(config || {}, {\n method,\n headers: isForm\n ? {\n 'Content-Type': 'multipart/form-data',\n }\n : {},\n url,\n data,\n })\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 toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\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 * const 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 WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\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","iterator","toStringTag","Symbol","kindOf","cache","thing","str","call","slice","toLowerCase","create","kindOfTest","type","typeOfTest","isArray","Array","isUndefined","isBuffer","val","constructor","isFunction","isArrayBuffer","isArrayBufferView","result","ArrayBuffer","isView","buffer","isString","isNumber","isObject","isBoolean","isPlainObject","isEmptyObject","keys","length","e","isDate","isFile","isReactNativeBlob","value","uri","isReactNative","formData","getParts","isBlob","isFileList","isStream","pipe","getGlobal","globalThis","self","window","global","G","FormDataCtor","FormData","undefined","isFormData","proto","append","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","map","trim","replace","forEach","obj","allOwnKeys","i","l","getOwnPropertyNames","len","key","findKey","_key","_global","isContextDefined","context","merge","caseless","skipUndefined","assignValue","targetKey","extend","a","b","defineProperty","writable","enumerable","configurable","stripBOM","content","charCodeAt","inherits","superConstructor","props","descriptors","assign","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","isTypedArray","TypedArray","Uint8Array","forEachEntry","generator","_iterator","next","done","pair","matchAll","regExp","matches","exec","push","isHTMLForm","toCamelCase","replacer","m","p1","p2","toUpperCase","hasOwnProperty","isRegExp","reduceDescriptors","reducer","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","freezeMethods","set","Error","toObjectSet","arrayOrString","delimiter","define","split","noop","toFiniteNumber","defaultValue","Number","isFinite","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","then","catch","_setImmediate","setImmediateSupported","postMessageSupported","setImmediate","token","callbacks","addEventListener","data","shift","cb","postMessage","Math","random","setTimeout","asap","queueMicrotask","process","nextTick","isIterable","hasOwnProp","AxiosError","from","error","code","config","request","response","customProps","axiosError","message","cause","status","isAxiosError","toJSON","description","number","fileName","lineNumber","columnNumber","utils","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","ERR_FORM_DATA_DEPTH_EXCEEDED","isVisitable","removeBrackets","renderKey","path","dots","concat","each","join","isFlatArray","some","predicates","test","toFormData","options","TypeError","PlatformFormData","metaTokens","indexes","defined","option","visitor","defaultVisitor","_Blob","Blob","maxDepth","useBlob","convertValue","toISOString","Buffer","JSON","stringify","el","index","exposedHelpers","build","depth","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","encoder","_encode","buildURL","url","_options","serialize","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","forEachHandler","h","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","legacyInterceptorReqResOrdering","URLSearchParams","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","generateString","size","alphabet","randomValues","Uint32Array","crypto","randomFillSync","isNode","classes","protocols","hasBrowserEnv","document","_navigator","navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","location","href","platform","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","entries","own","stringifySafely","rawValue","parser","parse","defaults","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","env","_FormData","transformResponse","responseType","JSONRequested","strictJSONParsing","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","ignoreDuplicateOf","rawHeaders","parsed","line","substring","$internals","INVALID_HEADER_VALUE_CHARS_RE","trimSPorHTAB","start","end","normalizeHeader","header","sanitizeHeaderValue","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","parseHeaders","dest","entry","get","has","matcher","delete","deleted","deleteHeader","normalize","format","normalized","targets","asStrings","getSetCookie","first","computed","accessor","internals","accessors","defineAccessor","mapped","headerValue","transformData","fns","transform","isCancel","__CANCEL__","CanceledError","settle","resolve","reject","floor","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","DEFAULT_PORTS","ftp","gopher","http","https","ws","wss","parseUrl","urlString","URL","getProxyForUrl","parsedUrl","protocol","hostname","host","port","parseInt","shouldProxy","proxy","getEnv","NO_PROXY","every","parsedProxy","parsedProxyHostname","parsedProxyPort","charAt","VERSION","parseProtocol","DATA_URL_PATTERN","fromDataURI","asBlob","mime","isBase64","body","decodeURIComponent","kInternals","AxiosTransformStream","stream","Transform","maxRate","chunkSize","minChunkSize","timeWindow","ticksRate","samplesCount","readableHighWaterMark","bytesSeen","isCaptured","notifiedBytesLoaded","ts","Date","now","bytes","onReadCallback","on","event","_read","_transform","chunk","encoding","callback","divider","bytesThreshold","max","pushChunk","_chunk","_callback","byteLength","emit","transformChunk","chunkRemainder","maxChunkSize","bytesLeft","passed","subarray","transformNextChunk","err","asyncIterator","readBlob","blob","arrayBuffer","BOUNDARY_ALPHABET","textEncoder","TextEncoder","util","CRLF","CRLF_BYTES","CRLF_BYTES_COUNT","FormDataPart","escapeName","isStringValue","safeType","contentLength","formDataToStream","form","headersHandler","tag","boundary","boundaryBytes","footerBytes","parts","part","computedHeaders","Readable","ZlibHeaderTransformStream","__transform","alloc","callbackify","args","LOOPBACK_HOSTNAMES","Set","isIPv4Loopback","p","isIPv6Loopback","v4MappedDotted","v4MappedHex","high","groups","isLoopback","parseNoProxyEntry","entryHost","entryPort","bracketIndex","rest","firstColon","lastColon","lastIndexOf","normalizeNoProxyHost","shouldBypassProxy","_err","noProxy","no_proxy","speedometer","min","timestamps","head","tail","firstSampleTS","chunkLength","startedAt","bytesCount","round","throttle","freq","timestamp","threshold","lastArgs","timer","invoke","clearTimeout","throttled","flush","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","rawLoaded","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","progressEventDecorator","asyncDecorator","estimateDataURLDecodedBytes","startsWith","comma","meta","effectiveLen","isHex","pad","idx","tailIsPct3D","j","zlibOptions","zlib","constants","Z_SYNC_FLUSH","finishFlush","brotliOptions","BROTLI_OPERATION_FLUSH","isBrotliSupported","createBrotliDecompress","httpFollow","httpsFollow","followRedirects","isHttps","kAxiosSocketListener","kAxiosCurrentReq","supportedProtocols","flushOnFinish","Http2Sessions","sessions","getSession","authority","sessionTimeout","authoritySessions","sessionHandle","sessionOptions","destroyed","closed","isDeepStrictEqual","session","http2","connect","removed","removeSession","splice","close","originalRequestFn","streamsCount","once","http2Sessions","dispatchBeforeRedirect","responseDetails","beforeRedirects","setProxy","configProxy","proxyUrl","username","auth","password","validProxyAuth","Boolean","base64","proxyHost","includes","beforeRedirect","redirectOptions","isHttpAdapterSupported","wrapAsync","asyncExecutor","Promise","onDone","isDone","isRejected","_resolve","_reject","reason","onDoneHandler","resolveFamily","address","family","buildAddressEntry","http2Transport","http2Options","HTTP2_HEADER_SCHEME","HTTP2_HEADER_METHOD","HTTP2_HEADER_PATH","HTTP2_HEADER_STATUS","http2Headers","req","responseHeaders","statusCode","httpAdapter","dispatchHttpRequest","lookup","httpVersion","responseEncoding","isNaN","isHttp2","_lookup","opt","arg0","addresses","addr","all","abortEmitter","EventEmitter","abort","console","warn","onFinished","cancelToken","unsubscribe","signal","removeEventListener","removeAllListeners","subscribe","aborted","Duplex","offListeners","finished","fullPath","dataUrl","convertedData","statusText","onUploadProgress","onDownloadProgress","maxUploadRate","maxDownloadRate","userBoundary","formHeaders","getHeaders","hasContentLength","knownLength","promisify","getLength","setContentLength","getContentLength","objectMode","pipeline","configAuth","urlUsername","urlPassword","pathname","search","paramsSerializer","customErr","exists","agents","httpAgent","httpsAgent","socketPath","allowedSocketPaths","allowed","resolvedSocket","resolvePath","isAllowed","transport","isHttpsRequest","agent","configTransport","maxRedirects","configBeforeRedirect","Infinity","insecureHTTPParser","handleResponse","res","streams","responseLength","transformStream","responseStream","lastRequest","decompress","createUnzip","statusMessage","limit","enforceMaxContentLength","totalResponseBytes","responseBuffer","handleStreamData","destroy","handlerStreamAborted","handleStreamError","handleStreamEnd","responseData","handleRequestError","handleRequestSocket","socket","setKeepAlive","handleSocketError","current","clearCurrentReq","handleRequestTimeout","timeoutErrorMessage","ended","errored","uploadStream","bytesSent","_enc","write","isMSIE","userAgent","expires","domain","secure","sameSite","cookie","toUTCString","read","RegExp","remove","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","withCredentials","withXSRFToken","computeConfigValue","configValue","newConfig","btoa","unescape","allowedHeaders","shouldSendXSRF","isURLSameOrigin","xsrfValue","cookies","isXHRAdapterSupported","XMLHttpRequest","dispatchXhrRequest","_config","resolveConfig","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","open","onloadend","getAllResponseHeaders","responseText","onreadystatechange","handleLoad","readyState","responseURL","onabort","handleAbort","onerror","handleError","msg","ontimeout","handleTimeout","setRequestHeader","upload","cancel","send","composeSignals","signals","controller","AbortController","streamChunk","pos","readBytes","iterable","readStream","reader","getReader","trackStream","onProgress","onFinish","_onFinish","ReadableStream","pull","loadedBytes","enqueue","return","highWaterMark","DEFAULT_CHUNK_SIZE","globalFetchAPI","Request","Response","factory","fetch","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","supportsRequestStream","duplexAccessed","duplex","hasContentType","supportsResponseStream","resolvers","getBodyLength","_request","resolveBodyLength","fetchOptions","_fetch","composedSignal","toAbortSignal","requestContentLength","contentTypeHeader","isCredentialsSupported","resolvedOptions","credentials","isStreamResponse","responseContentLength","seedCache","Map","getFetch","seeds","seed","knownAdapters","xhr","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","getAdapter","adapters","nameOrAdapter","rejectedReasons","reasons","state","s","throwIfCancellationRequested","throwIfRequested","dispatchRequest","onAdapterResolution","onAdapterRejection","validators","validator","deprecatedWarnings","version","formatMessage","desc","opts","spelling","correctSpelling","assertOptions","schema","allowUnknown","Axios","instanceConfig","interceptors","configOrUrl","dummy","captureStackTrace","firstNewlineIndex","secondNewlineIndex","stackWithoutTwoTopLines","boolean","function","baseUrl","withXsrfToken","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","unshiftRequestInterceptors","interceptor","unshift","responseInterceptorChain","pushResponseInterceptors","promise","chain","onFulfilled","onRejected","getUri","forEachMethodNoData","forEachMethodWithData","generateHTTPMethod","isForm","httpMethod","CancelToken","executor","resolvePromise","promiseExecutor","_listeners","onfulfilled","c","spread","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","WebServerIsDown","ConnectionTimedOut","OriginIsUnreachable","TimeoutOccurred","SslHandshakeFailed","InvalidSslCertificate","createInstance","defaultConfig","instance","axios","Cancel","promises","formToJSON","default"],"mappings":"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","x_google_ignoreList":[24]} \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/axios/index.d.cts b/.claude/skills/教学日程查询/node_modules/axios/index.d.cts deleted file mode 100644 index b3839a8..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/index.d.cts +++ /dev/null @@ -1,703 +0,0 @@ -interface RawAxiosHeaders { - [key: string]: axios.AxiosHeaderValue; -} - -type MethodsHeaders = Partial< - { - [Key in axios.Method as Lowercase]: AxiosHeaders; - } & { common: AxiosHeaders } ->; - -type AxiosHeaderMatcher = - | string - | RegExp - | ((this: AxiosHeaders, value: string, name: string) => boolean); - -type AxiosHeaderParser = (this: AxiosHeaders, value: axios.AxiosHeaderValue, header: string) => any; - -type CommonRequestHeadersList = - | 'Accept' - | 'Content-Length' - | 'User-Agent' - | 'Content-Encoding' - | 'Authorization' - | 'Location'; - -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'; - -type CommonResponseHeaderKey = CommonResponseHeadersList | Lowercase; - -type BrowserProgressEvent = any; - -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; - - getSetCookie(): string[]; - - [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; - event?: BrowserProgressEvent; - static from( - error: Error | unknown, - code?: string, - config?: axios.InternalAxiosRequestConfig, - request?: any, - response?: axios.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 ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED'; - 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< - RawAxiosHeaders & { - [Key in CommonRequestHeadersList]: AxiosHeaderValue; - } & { - 'Content-Type': ContentType; - } - >; - - type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders; - - type AxiosHeaderValue = AxiosHeaders | string | string[] | number | boolean | null; - - type RawCommonResponseHeaders = { - [Key in CommonResponseHeaderKey]: 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 UppercaseMethod = - | 'GET' - | 'DELETE' - | 'HEAD' - | 'OPTIONS' - | 'POST' - | 'PUT' - | 'PATCH' - | 'PURGE' - | 'LINK' - | 'UNLINK'; - - type Method = (UppercaseMethod | Lowercase) & {}; - - type ResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' | 'formdata'; - - type UppercaseResponseEncoding = - | 'ASCII' - | 'ANSI' - | 'BINARY' - | 'BASE64' - | 'BASE64URL' - | 'HEX' - | 'LATIN1' - | 'UCS-2' - | 'UCS2' - | 'UTF-8' - | 'UTF8' - | 'UTF16LE'; - - type responseEncoding = (UppercaseResponseEncoding | Lowercase) & {}; - - interface TransitionalOptions { - silentJSONParsing?: boolean; - forcedJSONParsing?: boolean; - clarifyTimeoutError?: boolean; - legacyInterceptorReqResOrdering?: 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; - - interface AxiosProgressEvent { - loaded: number; - total?: number; - progress?: number; - bytes: number; - rate?: number; - estimated?: number; - upload?: boolean; - download?: boolean; - event?: BrowserProgressEvent; - lengthComputable: boolean; - } - - type Milliseconds = number; - - type AxiosAdapterName = 'fetch' | '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; - allowAbsoluteUrls?: boolean; - 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; - allowedSocketPaths?: string | 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; - fetch?: (input: URL | Request | string, init?: RequestInit) => Promise; - Request?: new (input: URL | Request | string, init?: RequestInit) => Request; - Response?: new ( - body?: ArrayBuffer | ArrayBufferView | Blob | FormData | URLSearchParams | string | null, - init?: ResponseInit - ) => Response; - }; - 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); - fetchOptions?: - | Omit - | Record; - httpVersion?: 1 | 2; - http2Options?: Record & { - sessionTimeout?: number; - }; - } - - // 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: (H & 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) | null; - } - - type AxiosInterceptorFulfilled = (value: T) => T | Promise; - type AxiosInterceptorRejected = (error: any) => any; - - type AxiosRequestInterceptorUse = ( - onFulfilled?: AxiosInterceptorFulfilled | null, - onRejected?: AxiosInterceptorRejected | null, - options?: AxiosInterceptorOptions - ) => number; - - type AxiosResponseInterceptorUse = ( - onFulfilled?: AxiosInterceptorFulfilled | null, - onRejected?: AxiosInterceptorRejected | null - ) => number; - - interface AxiosInterceptorHandler { - fulfilled: AxiosInterceptorFulfilled; - rejected?: AxiosInterceptorRejected; - synchronous: boolean; - runWhen?: ((config: InternalAxiosRequestConfig) => boolean) | null; - } - - interface AxiosInterceptorManager { - use: V extends AxiosResponse ? AxiosResponseInterceptorUse : AxiosRequestInterceptorUse; - eject(id: number): void; - clear(): void; - handlers?: Array>; - } - - interface AxiosInstance extends Axios { - , D = any>(config: AxiosRequestConfig): Promise; - , D = any>( - url: string, - config?: AxiosRequestConfig - ): Promise; - - create(config?: CreateAxiosDefaults): AxiosInstance; - 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 { - 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; - mergeConfig( - config1: AxiosRequestConfig, - config2: AxiosRequestConfig - ): AxiosRequestConfig; - } -} - -declare const axios: axios.AxiosStatic; - -export = axios; diff --git a/.claude/skills/教学日程查询/node_modules/axios/index.d.ts b/.claude/skills/教学日程查询/node_modules/axios/index.d.ts deleted file mode 100644 index 4fb2f8e..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/index.d.ts +++ /dev/null @@ -1,717 +0,0 @@ -// TypeScript Version: 4.7 -type StringLiteralsOrString = Literals | (string & {}); - -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; - - getSetCookie(): string[]; - - [Symbol.iterator](): IterableIterator<[string, AxiosHeaderValue]>; -} - -type CommonRequestHeadersList = - | 'Accept' - | 'Content-Length' - | 'User-Agent' - | 'Content-Encoding' - | 'Authorization' - | 'Location'; - -type ContentType = - | AxiosHeaderValue - | 'text/html' - | 'text/plain' - | 'multipart/form-data' - | 'application/json' - | 'application/x-www-form-urlencoded' - | 'application/octet-stream'; - -export type RawAxiosRequestHeaders = Partial< - RawAxiosHeaders & { - [Key in CommonRequestHeadersList]: AxiosHeaderValue; - } & { - 'Content-Type': ContentType; - } ->; - -export type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders; - -type CommonResponseHeadersList = - | 'Server' - | 'Content-Type' - | 'Content-Length' - | 'Cache-Control' - | 'Content-Encoding'; - -type CommonResponseHeaderKey = CommonResponseHeadersList | Lowercase; - -type RawCommonResponseHeaders = { - [Key in CommonResponseHeaderKey]: 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, -} - -type UppercaseMethod = - | 'GET' - | 'DELETE' - | 'HEAD' - | 'OPTIONS' - | 'POST' - | 'PUT' - | 'PATCH' - | 'PURGE' - | 'LINK' - | 'UNLINK'; - -export type Method = (UppercaseMethod | Lowercase) & {}; - -export type ResponseType = - | 'arraybuffer' - | 'blob' - | 'document' - | 'json' - | 'text' - | 'stream' - | 'formdata'; - -type UppercaseResponseEncoding = - | 'ASCII' - | 'ANSI' - | 'BINARY' - | 'BASE64' - | 'BASE64URL' - | 'HEX' - | 'LATIN1' - | 'UCS-2' - | 'UCS2' - | 'UTF-8' - | 'UTF8' - | 'UTF16LE'; - -export type responseEncoding = ( - | UppercaseResponseEncoding - | Lowercase -) & {}; - -export interface TransitionalOptions { - silentJSONParsing?: boolean; - forcedJSONParsing?: boolean; - clarifyTimeoutError?: boolean; - legacyInterceptorReqResOrdering?: 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; - lengthComputable: boolean; -} - -type Milliseconds = number; - -type AxiosAdapterName = StringLiteralsOrString<'xhr' | 'http' | 'fetch'>; - -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?: StringLiteralsOrString; - baseURL?: string; - allowAbsoluteUrls?: boolean; - 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?: StringLiteralsOrString; - 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; - allowedSocketPaths?: string | string[] | null; - transport?: any; - httpAgent?: any; - httpsAgent?: any; - proxy?: AxiosProxyConfig | false; - cancelToken?: CancelToken | undefined; - decompress?: boolean; - transitional?: TransitionalOptions; - signal?: GenericAbortSignal; - insecureHTTPParser?: boolean; - env?: { - FormData?: new (...args: any[]) => object; - fetch?: (input: URL | Request | string, init?: RequestInit) => Promise; - Request?: new (input: URL | Request | string, init?: RequestInit) => Request; - Response?: new ( - body?: ArrayBuffer | ArrayBufferView | Blob | FormData | URLSearchParams | string | null, - init?: ResponseInit - ) => Response; - }; - 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); - parseReviver?: (this: any, key: string, value: any) => any; - fetchOptions?: Omit | Record; - httpVersion?: 1 | 2; - http2Options?: Record & { - sessionTimeout?: number; - }; -} - -// 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: (H & 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; - event?: BrowserProgressEvent; - 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 ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED'; - static readonly ECONNABORTED = 'ECONNABORTED'; - static readonly ETIMEDOUT = 'ETIMEDOUT'; -} - -export class CanceledError extends AxiosError { - readonly name: 'CanceledError'; -} - -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) | null; -} - -type AxiosInterceptorFulfilled = (value: T) => T | Promise; -type AxiosInterceptorRejected = (error: any) => any; - -type AxiosRequestInterceptorUse = ( - onFulfilled?: AxiosInterceptorFulfilled | null, - onRejected?: AxiosInterceptorRejected | null, - options?: AxiosInterceptorOptions -) => number; - -type AxiosResponseInterceptorUse = ( - onFulfilled?: AxiosInterceptorFulfilled | null, - onRejected?: AxiosInterceptorRejected | null -) => number; - -interface AxiosInterceptorHandler { - fulfilled: AxiosInterceptorFulfilled; - rejected?: AxiosInterceptorRejected; - synchronous: boolean; - runWhen?: ((config: InternalAxiosRequestConfig) => boolean) | null; -} - -export interface AxiosInterceptorManager { - use: V extends AxiosResponse ? AxiosResponseInterceptorUse : AxiosRequestInterceptorUse; - eject(id: number): void; - clear(): void; - handlers?: Array>; -} - -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; - - create(config?: CreateAxiosDefaults): AxiosInstance; - 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 CanceledError; - -export function all(values: Array>): Promise; - -export function mergeConfig( - config1: AxiosRequestConfig, - config2: AxiosRequestConfig -): AxiosRequestConfig; - -export interface AxiosStatic extends 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; - mergeConfig: typeof mergeConfig; -} - -declare const axios: AxiosStatic; - -export default axios; diff --git a/.claude/skills/教学日程查询/node_modules/axios/index.js b/.claude/skills/教学日程查询/node_modules/axios/index.js deleted file mode 100644 index 7dbe23b..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/index.js +++ /dev/null @@ -1,43 +0,0 @@ -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/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/README.md b/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/README.md deleted file mode 100644 index 8d9dd97..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# 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/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/adapters.js b/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/adapters.js deleted file mode 100644 index 5d18745..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/adapters.js +++ /dev/null @@ -1,130 +0,0 @@ -import utils from '../utils.js'; -import httpAdapter from './http.js'; -import xhrAdapter from './xhr.js'; -import * as fetchAdapter from './fetch.js'; -import AxiosError from '../core/AxiosError.js'; - -/** - * Known adapters mapping. - * Provides environment-specific adapters for Axios: - * - `http` for Node.js - * - `xhr` for browsers - * - `fetch` for fetch API-based requests - * - * @type {Object} - */ -const knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter, - fetch: { - get: fetchAdapter.getFetch, - }, -}; - -// Assign adapter names for easier debugging and identification -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 }); - } -}); - -/** - * Render a rejection reason string for unknown or unsupported adapters - * - * @param {string} reason - * @returns {string} - */ -const renderReason = (reason) => `- ${reason}`; - -/** - * Check if the adapter is resolved (function, null, or false) - * - * @param {Function|null|false} adapter - * @returns {boolean} - */ -const isResolvedHandle = (adapter) => - utils.isFunction(adapter) || adapter === null || adapter === false; - -/** - * Get the first suitable adapter from the provided list. - * Tries each adapter in order until a supported one is found. - * Throws an AxiosError if no adapter is suitable. - * - * @param {Array|string|Function} adapters - Adapter(s) by name or function. - * @param {Object} config - Axios request configuration - * @throws {AxiosError} If no suitable adapter is available - * @returns {Function} The resolved adapter function - */ -function getAdapter(adapters, config) { - 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 && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) { - 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; -} - -/** - * Exports Axios adapters and utility to resolve an adapter - */ -export default { - /** - * Resolve an adapter from a list of adapter names or functions. - * @type {Function} - */ - getAdapter, - - /** - * Exposes all known adapters - * @type {Object} - */ - adapters: knownAdapters, -}; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/fetch.js b/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/fetch.js deleted file mode 100644 index 0c4a4d5..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/fetch.js +++ /dev/null @@ -1,353 +0,0 @@ -import platform from '../platform/index.js'; -import utils from '../utils.js'; -import AxiosError from '../core/AxiosError.js'; -import composeSignals from '../helpers/composeSignals.js'; -import { trackStream } from '../helpers/trackStream.js'; -import AxiosHeaders from '../core/AxiosHeaders.js'; -import { - progressEventReducer, - progressEventDecorator, - asyncDecorator, -} from '../helpers/progressEventReducer.js'; -import resolveConfig from '../helpers/resolveConfig.js'; -import settle from '../core/settle.js'; - -const DEFAULT_CHUNK_SIZE = 64 * 1024; - -const { isFunction } = utils; - -const globalFetchAPI = (({ Request, Response }) => ({ - Request, - Response, -}))(utils.global); - -const { ReadableStream, TextEncoder } = utils.global; - -const test = (fn, ...args) => { - try { - return !!fn(...args); - } catch (e) { - return false; - } -}; - -const factory = (env) => { - env = utils.merge.call( - { - skipUndefined: true, - }, - globalFetchAPI, - env - ); - - const { fetch: envFetch, Request, Response } = env; - const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function'; - const isRequestSupported = isFunction(Request); - const isResponseSupported = isFunction(Response); - - if (!isFetchSupported) { - return false; - } - - const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream); - - const encodeText = - isFetchSupported && - (typeof TextEncoder === 'function' - ? ( - (encoder) => (str) => - encoder.encode(str) - )(new TextEncoder()) - : async (str) => new Uint8Array(await new Request(str).arrayBuffer())); - - const supportsRequestStream = - isRequestSupported && - isReadableStreamSupported && - test(() => { - let duplexAccessed = false; - - const request = new Request(platform.origin, { - body: new ReadableStream(), - method: 'POST', - get duplex() { - duplexAccessed = true; - return 'half'; - }, - }); - - const hasContentType = request.headers.has('Content-Type'); - - if (request.body != null) { - request.body.cancel(); - } - - return duplexAccessed && !hasContentType; - }); - - const supportsResponseStream = - isResponseSupported && - isReadableStreamSupported && - test(() => utils.isReadableStream(new Response('').body)); - - const resolvers = { - stream: supportsResponseStream && ((res) => res.body), - }; - - isFetchSupported && - (() => { - ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach((type) => { - !resolvers[type] && - (resolvers[type] = (res, config) => { - let method = res && res[type]; - - if (method) { - return method.call(res); - } - - throw new AxiosError( - `Response type '${type}' is not supported`, - AxiosError.ERR_NOT_SUPPORT, - config - ); - }); - }); - })(); - - const getBodyLength = async (body) => { - if (body == null) { - return 0; - } - - if (utils.isBlob(body)) { - return body.size; - } - - if (utils.isSpecCompliantForm(body)) { - const _request = new Request(platform.origin, { - method: 'POST', - body, - }); - return (await _request.arrayBuffer()).byteLength; - } - - if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) { - return body.byteLength; - } - - if (utils.isURLSearchParams(body)) { - body = body + ''; - } - - if (utils.isString(body)) { - return (await encodeText(body)).byteLength; - } - }; - - const resolveBodyLength = async (headers, body) => { - const length = utils.toFiniteNumber(headers.getContentLength()); - - return length == null ? getBodyLength(body) : length; - }; - - return async (config) => { - let { - url, - method, - data, - signal, - cancelToken, - timeout, - onDownloadProgress, - onUploadProgress, - responseType, - headers, - withCredentials = 'same-origin', - fetchOptions, - } = resolveConfig(config); - - let _fetch = envFetch || fetch; - - responseType = responseType ? (responseType + '').toLowerCase() : 'text'; - - let composedSignal = composeSignals( - [signal, cancelToken && cancelToken.toAbortSignal()], - timeout - ); - - let request = null; - - const unsubscribe = - composedSignal && - composedSignal.unsubscribe && - (() => { - composedSignal.unsubscribe(); - }); - - let requestContentLength; - - try { - if ( - onUploadProgress && - supportsRequestStream && - method !== 'get' && - method !== 'head' && - (requestContentLength = await resolveBodyLength(headers, data)) !== 0 - ) { - let _request = new Request(url, { - method: 'POST', - body: data, - duplex: 'half', - }); - - let contentTypeHeader; - - if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) { - headers.setContentType(contentTypeHeader); - } - - if (_request.body) { - const [onProgress, flush] = progressEventDecorator( - requestContentLength, - progressEventReducer(asyncDecorator(onUploadProgress)) - ); - - data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush); - } - } - - if (!utils.isString(withCredentials)) { - withCredentials = withCredentials ? 'include' : 'omit'; - } - - // Cloudflare Workers throws when credentials are defined - // see https://github.com/cloudflare/workerd/issues/902 - const isCredentialsSupported = isRequestSupported && 'credentials' in Request.prototype; - - // If data is FormData and Content-Type is multipart/form-data without boundary, - // delete it so fetch can set it correctly with the boundary - if (utils.isFormData(data)) { - const contentType = headers.getContentType(); - if ( - contentType && - /^multipart\/form-data/i.test(contentType) && - !/boundary=/i.test(contentType) - ) { - headers.delete('content-type'); - } - } - - const resolvedOptions = { - ...fetchOptions, - signal: composedSignal, - method: method.toUpperCase(), - headers: headers.normalize().toJSON(), - body: data, - duplex: 'half', - credentials: isCredentialsSupported ? withCredentials : undefined, - }; - - request = isRequestSupported && new Request(url, resolvedOptions); - - let response = await (isRequestSupported - ? _fetch(request, fetchOptions) - : _fetch(url, resolvedOptions)); - - const isStreamResponse = - supportsResponseStream && (responseType === 'stream' || responseType === 'response'); - - if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) { - const options = {}; - - ['status', 'statusText', 'headers'].forEach((prop) => { - options[prop] = response[prop]; - }); - - const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length')); - - const [onProgress, flush] = - (onDownloadProgress && - progressEventDecorator( - responseContentLength, - progressEventReducer(asyncDecorator(onDownloadProgress), true) - )) || - []; - - response = new Response( - trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => { - flush && flush(); - unsubscribe && unsubscribe(); - }), - options - ); - } - - responseType = responseType || 'text'; - - let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text']( - response, - config - ); - - !isStreamResponse && unsubscribe && unsubscribe(); - - return await new Promise((resolve, reject) => { - settle(resolve, reject, { - data: responseData, - headers: AxiosHeaders.from(response.headers), - status: response.status, - statusText: response.statusText, - config, - request, - }); - }); - } catch (err) { - unsubscribe && unsubscribe(); - - if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) { - throw Object.assign( - new AxiosError( - 'Network Error', - AxiosError.ERR_NETWORK, - config, - request, - err && err.response - ), - { - cause: err.cause || err, - } - ); - } - - throw AxiosError.from(err, err && err.code, config, request, err && err.response); - } - }; -}; - -const seedCache = new Map(); - -export const getFetch = (config) => { - let env = (config && config.env) || {}; - const { fetch, Request, Response } = env; - const seeds = [Request, Response, fetch]; - - let len = seeds.length, - i = len, - seed, - target, - map = seedCache; - - while (i--) { - seed = seeds[i]; - target = map.get(seed); - - target === undefined && map.set(seed, (target = i ? new Map() : factory(env))); - - map = target; - } - - return target; -}; - -const adapter = getFetch(); - -export default adapter; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/http.js b/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/http.js deleted file mode 100644 index cf3d164..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/http.js +++ /dev/null @@ -1,1083 +0,0 @@ -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 http2 from 'http2'; -import util from 'util'; -import { resolve as resolvePath } from 'path'; -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'; -import shouldBypassProxy from '../helpers/shouldBypassProxy.js'; -import { - progressEventReducer, - progressEventDecorator, - asyncDecorator, -} from '../helpers/progressEventReducer.js'; -import estimateDataURLDecodedBytes from '../helpers/estimateDataURLDecodedBytes.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:?/; - -// Symbols used to bind a single 'error' listener to a pooled socket and track -// the request currently owning that socket across keep-alive reuse (issue #10780). -const kAxiosSocketListener = Symbol('axios.http.socketListener'); -const kAxiosCurrentReq = Symbol('axios.http.currentReq'); - -const supportedProtocols = platform.protocols.map((protocol) => { - return protocol + ':'; -}); - -const flushOnFinish = (stream, [throttled, flush]) => { - stream.on('end', flush).on('error', flush); - - return throttled; -}; - -class Http2Sessions { - constructor() { - this.sessions = Object.create(null); - } - - getSession(authority, options) { - options = Object.assign( - { - sessionTimeout: 1000, - }, - options - ); - - let authoritySessions = this.sessions[authority]; - - if (authoritySessions) { - let len = authoritySessions.length; - - for (let i = 0; i < len; i++) { - const [sessionHandle, sessionOptions] = authoritySessions[i]; - if ( - !sessionHandle.destroyed && - !sessionHandle.closed && - util.isDeepStrictEqual(sessionOptions, options) - ) { - return sessionHandle; - } - } - } - - const session = http2.connect(authority, options); - - let removed; - - const removeSession = () => { - if (removed) { - return; - } - - removed = true; - - let entries = authoritySessions, - len = entries.length, - i = len; - - while (i--) { - if (entries[i][0] === session) { - if (len === 1) { - delete this.sessions[authority]; - } else { - entries.splice(i, 1); - } - if (!session.closed) { - session.close(); - } - return; - } - } - }; - - const originalRequestFn = session.request; - - const { sessionTimeout } = options; - - if (sessionTimeout != null) { - let timer; - let streamsCount = 0; - - session.request = function () { - const stream = originalRequestFn.apply(this, arguments); - - streamsCount++; - - if (timer) { - clearTimeout(timer); - timer = null; - } - - stream.once('close', () => { - if (!--streamsCount) { - timer = setTimeout(() => { - timer = null; - removeSession(); - }, sessionTimeout); - } - }); - - return stream; - }; - } - - session.once('close', removeSession); - - let entry = [session, options]; - - authoritySessions - ? authoritySessions.push(entry) - : (authoritySessions = this.sessions[authority] = [entry]); - - return session; - } -} - -const http2Sessions = new Http2Sessions(); - -/** - * 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) { - if (!shouldBypassProxy(location)) { - 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 - const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password); - - if (validProxyAuth) { - proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); - } else if (typeof proxy.auth === 'object') { - throw new AxiosError('Invalid proxy authorization', AxiosError.ERR_BAD_OPTION, { proxy }); - } - - 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 }); - -const http2Transport = { - request(options, cb) { - const authority = - options.protocol + - '//' + - options.hostname + - ':' + - (options.port || (options.protocol === 'https:' ? 443 : 80)); - - const { http2Options, headers } = options; - - const session = http2Sessions.getSession(authority, http2Options); - - const { HTTP2_HEADER_SCHEME, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_STATUS } = - http2.constants; - - const http2Headers = { - [HTTP2_HEADER_SCHEME]: options.protocol.replace(':', ''), - [HTTP2_HEADER_METHOD]: options.method, - [HTTP2_HEADER_PATH]: options.path, - }; - - utils.forEach(headers, (header, name) => { - name.charAt(0) !== ':' && (http2Headers[name] = header); - }); - - const req = session.request(http2Headers); - - req.once('response', (responseHeaders) => { - const response = req; //duplex - - responseHeaders = Object.assign({}, responseHeaders); - - const status = responseHeaders[HTTP2_HEADER_STATUS]; - - delete responseHeaders[HTTP2_HEADER_STATUS]; - - response.headers = responseHeaders; - - response.statusCode = +status; - - cb(response); - }); - - return req; - }, -}; - -/*eslint consistent-return:0*/ -export default isHttpAdapterSupported && - function httpAdapter(config) { - return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { - const own = (key) => (utils.hasOwnProp(config, key) ? config[key] : undefined); - let data = own('data'); - let lookup = own('lookup'); - let family = own('family'); - let httpVersion = own('httpVersion'); - if (httpVersion === undefined) httpVersion = 1; - let http2Options = own('http2Options'); - const responseType = own('responseType'); - const responseEncoding = own('responseEncoding'); - const method = config.method.toUpperCase(); - let isDone; - let rejected = false; - let req; - - httpVersion = +httpVersion; - - if (Number.isNaN(httpVersion)) { - throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`); - } - - if (httpVersion !== 1 && httpVersion !== 2) { - throw TypeError(`Unsupported protocol version '${httpVersion}'`); - } - - const isHttp2 = httpVersion === 2; - - 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); - }); - }; - } - - const abortEmitter = new EventEmitter(); - - function abort(reason) { - try { - abortEmitter.emit( - 'abort', - !reason || reason.type ? new CanceledError(null, config, req) : reason - ); - } catch (err) { - console.warn('emit error', err); - } - } - - abortEmitter.once('abort', reject); - - const onFinished = () => { - if (config.cancelToken) { - config.cancelToken.unsubscribe(abort); - } - - if (config.signal) { - config.signal.removeEventListener('abort', abort); - } - - abortEmitter.removeAllListeners(); - }; - - if (config.cancelToken || config.signal) { - config.cancelToken && config.cancelToken.subscribe(abort); - if (config.signal) { - config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); - } - } - - onDone((response, isRejected) => { - isDone = true; - - if (isRejected) { - rejected = true; - onFinished(); - return; - } - - const { data } = response; - - if (data instanceof stream.Readable || data instanceof stream.Duplex) { - const offListeners = stream.finished(data, () => { - offListeners(); - onFinished(); - }); - } else { - onFinished(); - } - }); - - // Parse url - const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls); - const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined); - const protocol = parsed.protocol || supportedProtocols[0]; - - if (protocol === 'data:') { - // Apply the same semantics as HTTP: only enforce if a finite, non-negative cap is set. - if (config.maxContentLength > -1) { - // Use the exact string passed to fromDataURI (config.url); fall back to fullPath if needed. - const dataUrl = String(config.url || fullPath || ''); - const estimated = estimateDataURLDecodedBytes(dataUrl); - - if (estimated > config.maxContentLength) { - return reject( - new AxiosError( - 'maxContentLength size of ' + config.maxContentLength + ' exceeded', - AxiosError.ERR_BAD_RESPONSE, - config - ) - ); - } - } - - 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 { onUploadProgress, onDownloadProgress } = config; - 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) && - data.getHeaders !== Object.prototype.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) || utils.isFile(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({ - maxRate: utils.toFiniteNumber(maxUploadRate), - }), - ], - utils.noop - ); - - onUploadProgress && - data.on( - 'progress', - flushOnFinish( - data, - progressEventDecorator( - contentLength, - progressEventReducer(asyncDecorator(onUploadProgress), false, 3) - ) - ) - ); - } - - // HTTP basic authentication - let auth = undefined; - const configAuth = own('auth'); - if (configAuth) { - const username = configAuth.username || ''; - const password = configAuth.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 - ); - - // Null-prototype to block prototype pollution gadgets on properties read - // directly by Node's http.request (e.g. insecureHTTPParser, lookup). - // See GHSA-q8qp-cvcw-x6jj. - const options = Object.assign(Object.create(null), { - path, - method: method, - headers: headers.toJSON(), - agents: { http: config.httpAgent, https: config.httpsAgent }, - auth, - protocol, - family, - beforeRedirect: dispatchBeforeRedirect, - beforeRedirects: Object.create(null), - http2Options, - }); - - // cacheable-lookup integration hotfix - !utils.isUndefined(lookup) && (options.lookup = lookup); - - if (config.socketPath) { - if (typeof config.socketPath !== 'string') { - return reject(new AxiosError( - 'socketPath must be a string', - AxiosError.ERR_BAD_OPTION_VALUE, - config - )); - } - - if (config.allowedSocketPaths != null) { - const allowed = Array.isArray(config.allowedSocketPaths) - ? config.allowedSocketPaths - : [config.allowedSocketPaths]; - - const resolvedSocket = resolvePath(config.socketPath); - const isAllowed = allowed.some( - (entry) => typeof entry === 'string' && resolvePath(entry) === resolvedSocket - ); - - if (!isAllowed) { - return reject(new AxiosError( - `socketPath "${config.socketPath}" is not permitted by allowedSocketPaths`, - AxiosError.ERR_BAD_OPTION_VALUE, - config - )); - } - } - - options.socketPath = config.socketPath; - } else { - options.hostname = parsed.hostname.startsWith('[') - ? parsed.hostname.slice(1, -1) - : 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 (isHttp2) { - transport = http2Transport; - } else { - const configTransport = own('transport'); - if (configTransport) { - transport = configTransport; - } else if (config.maxRedirects === 0) { - transport = isHttpsRequest ? https : http; - } else { - if (config.maxRedirects) { - options.maxRedirects = config.maxRedirects; - } - const configBeforeRedirect = own('beforeRedirect'); - if (configBeforeRedirect) { - options.beforeRedirects.config = configBeforeRedirect; - } - 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; - } - - // Always set an explicit own value so a polluted - // Object.prototype.insecureHTTPParser cannot enable the lenient parser - // through Node's internal options copy (GHSA-q8qp-cvcw-x6jj). - options.insecureHTTPParser = Boolean(own('insecureHTTPParser')); - - // Create the request - req = transport.request(options, function handleResponse(res) { - if (req.destroyed) return; - - const streams = [res]; - - const responseLength = utils.toFiniteNumber(res.headers['content-length']); - - if (onDownloadProgress || maxDownloadRate) { - const transformStream = new AxiosTransformStream({ - maxRate: utils.toFiniteNumber(maxDownloadRate), - }); - - onDownloadProgress && - transformStream.on( - 'progress', - flushOnFinish( - transformStream, - progressEventDecorator( - responseLength, - progressEventReducer(asyncDecorator(onDownloadProgress), true, 3) - ) - ) - ); - - 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 response = { - status: res.statusCode, - statusText: res.statusMessage, - headers: new AxiosHeaders(res.headers), - config, - request: lastRequest, - }; - - if (responseType === 'stream') { - // Enforce maxContentLength on streamed responses; previously this - // was applied only to buffered responses. See GHSA-vf2m-468p-8v99. - if (config.maxContentLength > -1) { - const limit = config.maxContentLength; - const source = responseStream; - async function* enforceMaxContentLength() { - let totalResponseBytes = 0; - for await (const chunk of source) { - totalResponseBytes += chunk.length; - if (totalResponseBytes > limit) { - throw new AxiosError( - 'maxContentLength size of ' + limit + ' exceeded', - AxiosError.ERR_BAD_RESPONSE, - config, - lastRequest - ); - } - yield chunk; - } - } - responseStream = stream.Readable.from(enforceMaxContentLength(), { - objectMode: false, - }); - } - 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(); - abort( - 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( - 'stream has been aborted', - 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); - }); - } - - abortEmitter.once('abort', (err) => { - if (!responseStream.destroyed) { - responseStream.emit('error', err); - responseStream.destroy(); - } - }); - }); - - abortEmitter.once('abort', (err) => { - if (req.close) { - req.close(); - } else { - req.destroy(err); - } - }); - - // Handle errors - req.on('error', function handleRequestError(err) { - 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); - - // Install a single 'error' listener per socket (not per request) to avoid - // accumulating listeners on pooled keep-alive sockets that get reassigned - // to new requests before the previous request's 'close' fires (issue #10780). - // The listener is bound to the socket's currently-active request via a - // symbol, which is swapped as the socket is reassigned. - if (!socket[kAxiosSocketListener]) { - socket.on('error', function handleSocketError(err) { - const current = socket[kAxiosCurrentReq]; - if (current && !current.destroyed) { - current.destroy(err); - } - }); - socket[kAxiosSocketListener] = true; - } - - socket[kAxiosCurrentReq] = req; - - req.once('close', function clearCurrentReq() { - if (socket[kAxiosCurrentReq] === req) { - socket[kAxiosCurrentReq] = null; - } - }); - }); - - // 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)) { - abort( - 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; - } - abort( - new AxiosError( - timeoutErrorMessage, - transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, - config, - req - ) - ); - }); - } else { - // explicitly reset the socket timeout value for a possible `keep-alive` request - req.setTimeout(0); - } - - // 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)); - } - }); - - // Enforce maxBodyLength for streamed uploads on the native http/https - // transport (maxRedirects === 0); follow-redirects enforces it on the - // other path. See GHSA-5c9x-8gcm-mpgx. - let uploadStream = data; - if (config.maxBodyLength > -1 && config.maxRedirects === 0) { - const limit = config.maxBodyLength; - let bytesSent = 0; - uploadStream = stream.pipeline( - [ - data, - new stream.Transform({ - transform(chunk, _enc, cb) { - bytesSent += chunk.length; - if (bytesSent > limit) { - return cb( - new AxiosError( - 'Request body larger than maxBodyLength limit', - AxiosError.ERR_BAD_REQUEST, - config, - req - ) - ); - } - cb(null, chunk); - }, - }), - ], - utils.noop - ); - uploadStream.on('error', (err) => { - if (!req.destroyed) req.destroy(err); - }); - } - - uploadStream.pipe(req); - } else { - data && req.write(data); - req.end(); - } - }); - }; - -export const __setProxy = setProxy; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/xhr.js b/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/xhr.js deleted file mode 100644 index 1d2c837..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/adapters/xhr.js +++ /dev/null @@ -1,222 +0,0 @@ -import utils from '../utils.js'; -import settle from '../core/settle.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 { progressEventReducer } from '../helpers/progressEventReducer.js'; -import resolveConfig from '../helpers/resolveConfig.js'; - -const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - -export default isXHRAdapterSupported && - function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - const _config = resolveConfig(config); - let requestData = _config.data; - const requestHeaders = AxiosHeaders.from(_config.headers).normalize(); - let { responseType, onUploadProgress, onDownloadProgress } = _config; - let onCanceled; - let uploadThrottled, downloadThrottled; - let flushUpload, flushDownload; - - function done() { - flushUpload && flushUpload(); // flush events - flushDownload && flushDownload(); // flush events - - _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled); - - _config.signal && _config.signal.removeEventListener('abort', onCanceled); - } - - let request = new XMLHttpRequest(); - - request.open(_config.method.toUpperCase(), _config.url, 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(event) { - // Browsers deliver a ProgressEvent in XHR onerror - // (message may be empty; when present, surface it) - // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event - const msg = event && event.message ? event.message : 'Network Error'; - const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request); - // attach the underlying event for consumers who want details - err.event = event || null; - reject(err); - 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; - }; - - // 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 (onDownloadProgress) { - [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true); - request.addEventListener('progress', downloadThrottled); - } - - // Not all browsers support upload events - if (onUploadProgress && request.upload) { - [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress); - - request.upload.addEventListener('progress', uploadThrottled); - - request.upload.addEventListener('loadend', flushUpload); - } - - 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(_config.url); - - 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/.claude/skills/教学日程查询/node_modules/axios/lib/axios.js b/.claude/skills/教学日程查询/node_modules/axios/lib/axios.js deleted file mode 100644 index 5a3a876..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/axios.js +++ /dev/null @@ -1,89 +0,0 @@ -'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/.claude/skills/教学日程查询/node_modules/axios/lib/cancel/CancelToken.js b/.claude/skills/教学日程查询/node_modules/axios/lib/cancel/CancelToken.js deleted file mode 100644 index 357381e..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/cancel/CancelToken.js +++ /dev/null @@ -1,135 +0,0 @@ -'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); - } - } - - toAbortSignal() { - const controller = new AbortController(); - - const abort = (err) => { - controller.abort(err); - }; - - this.subscribe(abort); - - controller.signal.unsubscribe = () => this.unsubscribe(abort); - - return controller.signal; - } - - /** - * 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/.claude/skills/教学日程查询/node_modules/axios/lib/cancel/CanceledError.js b/.claude/skills/教学日程查询/node_modules/axios/lib/cancel/CanceledError.js deleted file mode 100644 index e769b89..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/cancel/CanceledError.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -import AxiosError from '../core/AxiosError.js'; - -class CanceledError extends AxiosError { - /** - * 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. - */ - constructor(message, config, request) { - super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); - this.name = 'CanceledError'; - this.__CANCEL__ = true; - } -} - -export default CanceledError; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/cancel/isCancel.js b/.claude/skills/教学日程查询/node_modules/axios/lib/cancel/isCancel.js deleted file mode 100644 index a444a12..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/cancel/isCancel.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -export default function isCancel(value) { - return !!(value && value.__CANCEL__); -} diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/core/Axios.js b/.claude/skills/教学日程查询/node_modules/axios/lib/core/Axios.js deleted file mode 100644 index 034e37a..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/core/Axios.js +++ /dev/null @@ -1,277 +0,0 @@ -'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'; -import transitionalDefaults from '../defaults/transitional.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 = (() => { - if (!dummy.stack) { - return ''; - } - - const firstNewlineIndex = dummy.stack.indexOf('\n'); - - return firstNewlineIndex === -1 ? '' : dummy.stack.slice(firstNewlineIndex + 1); - })(); - try { - if (!err.stack) { - err.stack = stack; - // match without the 2 top stack lines - } else if (stack) { - const firstNewlineIndex = stack.indexOf('\n'); - const secondNewlineIndex = - firstNewlineIndex === -1 ? -1 : stack.indexOf('\n', firstNewlineIndex + 1); - const stackWithoutTwoTopLines = - secondNewlineIndex === -1 ? '' : stack.slice(secondNewlineIndex + 1); - - if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) { - err.stack += '\n' + stack; - } - } - } catch (e) { - // ignore the case where "stack" is an un-writable property - } - } - - 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), - legacyInterceptorReqResOrdering: 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.allowAbsoluteUrls - if (config.allowAbsoluteUrls !== undefined) { - // do nothing - } else if (this.defaults.allowAbsoluteUrls !== undefined) { - config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls; - } else { - config.allowAbsoluteUrls = true; - } - - validator.assertOptions( - config, - { - baseUrl: validators.spelling('baseURL'), - withXsrfToken: validators.spelling('withXSRFToken'), - }, - 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; - - const transitional = config.transitional || transitionalDefaults; - const legacyInterceptorReqResOrdering = - transitional && transitional.legacyInterceptorReqResOrdering; - - if (legacyInterceptorReqResOrdering) { - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - } else { - requestInterceptorChain.push(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(...requestInterceptorChain); - chain.push(...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; - - 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, config.allowAbsoluteUrls); - 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) { - 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/.claude/skills/教学日程查询/node_modules/axios/lib/core/AxiosError.js b/.claude/skills/教学日程查询/node_modules/axios/lib/core/AxiosError.js deleted file mode 100644 index 581004d..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/core/AxiosError.js +++ /dev/null @@ -1,91 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; - -class AxiosError extends Error { - static from(error, code, config, request, response, customProps) { - const axiosError = new AxiosError(error.message, code || error.code, config, request, response); - axiosError.cause = error; - axiosError.name = error.name; - - // Preserve status from the original error if not already set from response - if (error.status != null && axiosError.status == null) { - axiosError.status = error.status; - } - - customProps && Object.assign(axiosError, customProps); - return axiosError; - } - - /** - * 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. - */ - constructor(message, code, config, request, response) { - super(message); - - // Make message enumerable to maintain backward compatibility - // The native Error constructor sets message as non-enumerable, - // but axios < v1.13.3 had it as enumerable - Object.defineProperty(this, 'message', { - value: message, - enumerable: true, - writable: true, - configurable: true, - }); - - this.name = 'AxiosError'; - this.isAxiosError = true; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - if (response) { - this.response = response; - this.status = response.status; - } - } - - 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.status, - }; - } -} - -// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated. -AxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE'; -AxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION'; -AxiosError.ECONNABORTED = 'ECONNABORTED'; -AxiosError.ETIMEDOUT = 'ETIMEDOUT'; -AxiosError.ERR_NETWORK = 'ERR_NETWORK'; -AxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS'; -AxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED'; -AxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE'; -AxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST'; -AxiosError.ERR_CANCELED = 'ERR_CANCELED'; -AxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT'; -AxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL'; -AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED = 'ERR_FORM_DATA_DEPTH_EXCEEDED'; - -export default AxiosError; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/core/AxiosHeaders.js b/.claude/skills/教学日程查询/node_modules/axios/lib/core/AxiosHeaders.js deleted file mode 100644 index f57e98f..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/core/AxiosHeaders.js +++ /dev/null @@ -1,377 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import parseHeaders from '../helpers/parseHeaders.js'; - -const $internals = Symbol('internals'); - -const INVALID_HEADER_VALUE_CHARS_RE = /[^\x09\x20-\x7E\x80-\xFF]/g; - -function trimSPorHTAB(str) { - let start = 0; - let end = str.length; - - while (start < end) { - const code = str.charCodeAt(start); - - if (code !== 0x09 && code !== 0x20) { - break; - } - - start += 1; - } - - while (end > start) { - const code = str.charCodeAt(end - 1); - - if (code !== 0x09 && code !== 0x20) { - break; - } - - end -= 1; - } - - return start === 0 && end === str.length ? str : str.slice(start, end); -} - -function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); -} - -function sanitizeHeaderValue(str) { - return trimSPorHTAB(str.replace(INVALID_HEADER_VALUE_CHARS_RE, '')); -} - -function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - - return utils.isArray(value) ? value.map(normalizeValue) : sanitizeHeaderValue(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 if (utils.isObject(header) && utils.isIterable(header)) { - let obj = {}, - dest, - key; - for (const entry of header) { - if (!utils.isArray(entry)) { - throw TypeError('Object iterator must return a key-value pair'); - } - - obj[(key = entry[0])] = (dest = obj[key]) - ? utils.isArray(dest) - ? [...dest, entry[1]] - : [dest, entry[1]] - : entry[1]; - } - - setHeaders(obj, 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'); - } - - getSetCookie() { - return this.get('set-cookie') || []; - } - - 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/.claude/skills/教学日程查询/node_modules/axios/lib/core/InterceptorManager.js b/.claude/skills/教学日程查询/node_modules/axios/lib/core/InterceptorManager.js deleted file mode 100644 index fe10f3d..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/core/InterceptorManager.js +++ /dev/null @@ -1,72 +0,0 @@ -'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` - * @param {Object} options The options for the interceptor, synchronous and runWhen - * - * @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 {void} - */ - 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/.claude/skills/教学日程查询/node_modules/axios/lib/core/README.md b/.claude/skills/教学日程查询/node_modules/axios/lib/core/README.md deleted file mode 100644 index 84559ce..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/core/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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/.claude/skills/教学日程查询/node_modules/axios/lib/core/buildFullPath.js b/.claude/skills/教学日程查询/node_modules/axios/lib/core/buildFullPath.js deleted file mode 100644 index 9cb9d7c..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/core/buildFullPath.js +++ /dev/null @@ -1,22 +0,0 @@ -'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, allowAbsoluteUrls) { - let isRelativeUrl = !isAbsoluteURL(requestedURL); - if (baseURL && (isRelativeUrl || allowAbsoluteUrls === false)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; -} diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/core/dispatchRequest.js b/.claude/skills/教学日程查询/node_modules/axios/lib/core/dispatchRequest.js deleted file mode 100644 index 2015b54..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/core/dispatchRequest.js +++ /dev/null @@ -1,77 +0,0 @@ -'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, config); - - 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/.claude/skills/教学日程查询/node_modules/axios/lib/core/mergeConfig.js b/.claude/skills/教学日程查询/node_modules/axios/lib/core/mergeConfig.js deleted file mode 100644 index 65e0e39..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/core/mergeConfig.js +++ /dev/null @@ -1,121 +0,0 @@ -'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 || {}; - - // Use a null-prototype object so that downstream reads such as `config.auth` - // or `config.baseURL` cannot inherit polluted values from Object.prototype - // (see GHSA-q8qp-cvcw-x6jj). `hasOwnProperty` is restored as a non-enumerable - // own slot to preserve ergonomics for user code that relies on it. - const config = Object.create(null); - Object.defineProperty(config, 'hasOwnProperty', { - value: Object.prototype.hasOwnProperty, - enumerable: false, - writable: true, - configurable: true, - }); - - function getMergedValue(target, source, prop, 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; - } - - function mergeDeepProperties(a, b, prop, caseless) { - if (!utils.isUndefined(b)) { - return getMergedValue(a, b, prop, caseless); - } else if (!utils.isUndefined(a)) { - return getMergedValue(undefined, a, prop, 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 (utils.hasOwnProp(config2, prop)) { - return getMergedValue(a, b); - } else if (utils.hasOwnProp(config1, prop)) { - 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, - allowedSocketPaths: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: (a, b, prop) => - mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true), - }; - - utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) { - if (prop === '__proto__' || prop === 'constructor' || prop === 'prototype') return; - const merge = utils.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties; - const a = utils.hasOwnProp(config1, prop) ? config1[prop] : undefined; - const b = utils.hasOwnProp(config2, prop) ? config2[prop] : undefined; - const configValue = merge(a, b, prop); - (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); - }); - - return config; -} diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/core/settle.js b/.claude/skills/教学日程查询/node_modules/axios/lib/core/settle.js deleted file mode 100644 index 8629ad0..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/core/settle.js +++ /dev/null @@ -1,31 +0,0 @@ -'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/.claude/skills/教学日程查询/node_modules/axios/lib/core/transformData.js b/.claude/skills/教学日程查询/node_modules/axios/lib/core/transformData.js deleted file mode 100644 index f22c474..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/core/transformData.js +++ /dev/null @@ -1,28 +0,0 @@ -'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/.claude/skills/教学日程查询/node_modules/axios/lib/defaults/index.js b/.claude/skills/教学日程查询/node_modules/axios/lib/defaults/index.js deleted file mode 100644 index 30c8ea9..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/defaults/index.js +++ /dev/null @@ -1,177 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import AxiosError from '../core/AxiosError.js'; -import transitionalDefaults from './transitional.js'; -import toFormData from '../helpers/toFormData.js'; -import toURLEncodedForm from '../helpers/toURLEncodedForm.js'; -import platform from '../platform/index.js'; -import formDataToJSON from '../helpers/formDataToJSON.js'; - -const own = (obj, key) => (obj != null && utils.hasOwnProp(obj, key) ? obj[key] : undefined); - -/** - * 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', 'fetch'], - - 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) || - utils.isReadableStream(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) { - const formSerializer = own(this, 'formSerializer'); - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, formSerializer).toString(); - } - - if ( - (isFileList = utils.isFileList(data)) || - contentType.indexOf('multipart/form-data') > -1 - ) { - const env = own(this, 'env'); - const _FormData = env && env.FormData; - - return toFormData( - isFileList ? { 'files[]': data } : data, - _FormData && new _FormData(), - formSerializer - ); - } - } - - if (isObjectPayload || hasJSONContentType) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - - return data; - }, - ], - - transformResponse: [ - function transformResponse(data) { - const transitional = own(this, 'transitional') || defaults.transitional; - const forcedJSONParsing = transitional && transitional.forcedJSONParsing; - const responseType = own(this, 'responseType'); - const JSONRequested = responseType === 'json'; - - if (utils.isResponse(data) || utils.isReadableStream(data)) { - return data; - } - - if ( - data && - utils.isString(data) && - ((forcedJSONParsing && !responseType) || JSONRequested) - ) { - const silentJSONParsing = transitional && transitional.silentJSONParsing; - const strictJSONParsing = !silentJSONParsing && JSONRequested; - - try { - return JSON.parse(data, own(this, 'parseReviver')); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, own(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/.claude/skills/教学日程查询/node_modules/axios/lib/defaults/transitional.js b/.claude/skills/教学日程查询/node_modules/axios/lib/defaults/transitional.js deleted file mode 100644 index 714b664..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/defaults/transitional.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -export default { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false, - legacyInterceptorReqResOrdering: true, -}; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/env/README.md b/.claude/skills/教学日程查询/node_modules/axios/lib/env/README.md deleted file mode 100644 index b41baff..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/env/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# axios // env - -The `data.js` file is updated automatically when the package version is upgrading. Please do not edit it manually. diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/env/classes/FormData.js b/.claude/skills/教学日程查询/node_modules/axios/lib/env/classes/FormData.js deleted file mode 100644 index 862adb9..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/env/classes/FormData.js +++ /dev/null @@ -1,2 +0,0 @@ -import _FormData from 'form-data'; -export default typeof FormData !== 'undefined' ? FormData : _FormData; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/env/data.js b/.claude/skills/教学日程查询/node_modules/axios/lib/env/data.js deleted file mode 100644 index 8d6768a..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/env/data.js +++ /dev/null @@ -1 +0,0 @@ -export const VERSION = "1.15.2"; \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/AxiosTransformStream.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/AxiosTransformStream.js deleted file mode 100644 index 96e8acb..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/AxiosTransformStream.js +++ /dev/null @@ -1,156 +0,0 @@ -'use strict'; - -import stream from 'stream'; -import utils from '../utils.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 internals = (this[kInternals] = { - timeWindow: options.timeWindow, - chunkSize: options.chunkSize, - maxRate: options.maxRate, - minChunkSize: options.minChunkSize, - bytesSeen: 0, - isCaptured: false, - notifiedBytesLoaded: 0, - ts: Date.now(), - bytes: 0, - onReadCallback: null, - }); - - this.on('newListener', (event) => { - if (event === 'progress') { - if (!internals.isCaptured) { - internals.isCaptured = true; - } - } - }); - } - - _read(size) { - const internals = this[kInternals]; - - if (internals.onReadCallback) { - internals.onReadCallback(); - } - - return super._read(size); - } - - _transform(chunk, encoding, callback) { - 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; - - const pushChunk = (_chunk, _callback) => { - const bytes = Buffer.byteLength(_chunk); - internals.bytesSeen += bytes; - internals.bytes += bytes; - - internals.isCaptured && this.emit('progress', internals.bytesSeen); - - if (this.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); - } - }); - } -} - -export default AxiosTransformStream; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/AxiosURLSearchParams.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/AxiosURLSearchParams.js deleted file mode 100644 index 57cf16d..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/AxiosURLSearchParams.js +++ /dev/null @@ -1,61 +0,0 @@ -'use strict'; - -import toFormData from './toFormData.js'; - -/** - * It encodes a string by replacing all characters that are not in the unreserved set with - * their percent-encoded equivalents - * - * @param {string} str - The string to encode. - * - * @returns {string} The encoded string. - */ -function encode(str) { - const charMap = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+', - }; - return encodeURIComponent(str).replace(/[!'()~]|%20/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/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/HttpStatusCode.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/HttpStatusCode.js deleted file mode 100644 index b68d08e..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/HttpStatusCode.js +++ /dev/null @@ -1,77 +0,0 @@ -const HttpStatusCode = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511, - WebServerIsDown: 521, - ConnectionTimedOut: 522, - OriginIsUnreachable: 523, - TimeoutOccurred: 524, - SslHandshakeFailed: 525, - InvalidSslCertificate: 526, -}; - -Object.entries(HttpStatusCode).forEach(([key, value]) => { - HttpStatusCode[value] = key; -}); - -export default HttpStatusCode; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/README.md b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/README.md deleted file mode 100644 index 4ae3419..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# 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/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js deleted file mode 100644 index c588ded..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -import stream from 'stream'; - -class ZlibHeaderTransformStream extends stream.Transform { - __transform(chunk, encoding, callback) { - this.push(chunk); - callback(); - } - - _transform(chunk, encoding, callback) { - if (chunk.length !== 0) { - this._transform = this.__transform; - - // Add Default Compression headers if no zlib headers are present - if (chunk[0] !== 120) { - // Hex: 78 - const header = Buffer.alloc(2); - header[0] = 120; // Hex: 78 - header[1] = 156; // Hex: 9C - this.push(header, encoding); - } - } - - this.__transform(chunk, encoding, callback); - } -} - -export default ZlibHeaderTransformStream; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/bind.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/bind.js deleted file mode 100644 index 938da5c..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/bind.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -/** - * Create a bound version of a function with a specified `this` context - * - * @param {Function} fn - The function to bind - * @param {*} thisArg - The value to be passed as the `this` parameter - * @returns {Function} A new function that will call the original function with the specified `this` context - */ -export default function bind(fn, thisArg) { - return function wrap() { - return fn.apply(thisArg, arguments); - }; -} diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/buildURL.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/buildURL.js deleted file mode 100644 index d6745da..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/buildURL.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js'; - -/** - * It replaces URL-encoded forms of `:`, `$`, `,`, and spaces with - * their plain 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, '+'); -} - -/** - * 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|Function)} options - * - * @returns {string} The formatted url - */ -export default function buildURL(url, params, options) { - if (!params) { - return url; - } - - const _encode = (options && options.encode) || encode; - - const _options = utils.isFunction(options) - ? { - serialize: options, - } - : options; - - 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/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/callbackify.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/callbackify.js deleted file mode 100644 index e8cea68..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/callbackify.js +++ /dev/null @@ -1,18 +0,0 @@ -import utils from '../utils.js'; - -const callbackify = (fn, reducer) => { - return utils.isAsyncFn(fn) - ? function (...args) { - const cb = args.pop(); - fn.apply(this, args).then((value) => { - try { - reducer ? cb(null, ...reducer(value)) : cb(null, value); - } catch (err) { - cb(err); - } - }, cb); - } - : fn; -}; - -export default callbackify; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/combineURLs.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/combineURLs.js deleted file mode 100644 index 9f04f02..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/combineURLs.js +++ /dev/null @@ -1,15 +0,0 @@ -'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/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/composeSignals.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/composeSignals.js deleted file mode 100644 index 04e3012..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/composeSignals.js +++ /dev/null @@ -1,56 +0,0 @@ -import CanceledError from '../cancel/CanceledError.js'; -import AxiosError from '../core/AxiosError.js'; -import utils from '../utils.js'; - -const composeSignals = (signals, timeout) => { - const { length } = (signals = signals ? signals.filter(Boolean) : []); - - if (timeout || length) { - let controller = new AbortController(); - - let aborted; - - const onabort = function (reason) { - if (!aborted) { - aborted = true; - unsubscribe(); - const err = reason instanceof Error ? reason : this.reason; - controller.abort( - err instanceof AxiosError - ? err - : new CanceledError(err instanceof Error ? err.message : err) - ); - } - }; - - let timer = - timeout && - setTimeout(() => { - timer = null; - onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT)); - }, timeout); - - const unsubscribe = () => { - if (signals) { - timer && clearTimeout(timer); - timer = null; - signals.forEach((signal) => { - signal.unsubscribe - ? signal.unsubscribe(onabort) - : signal.removeEventListener('abort', onabort); - }); - signals = null; - } - }; - - signals.forEach((signal) => signal.addEventListener('abort', onabort)); - - const { signal } = controller; - - signal.unsubscribe = () => utils.asap(unsubscribe); - - return signal; - } -}; - -export default composeSignals; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/cookies.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/cookies.js deleted file mode 100644 index 1553fb2..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/cookies.js +++ /dev/null @@ -1,48 +0,0 @@ -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, sameSite) { - if (typeof document === 'undefined') return; - - const cookie = [`${name}=${encodeURIComponent(value)}`]; - - if (utils.isNumber(expires)) { - cookie.push(`expires=${new Date(expires).toUTCString()}`); - } - if (utils.isString(path)) { - cookie.push(`path=${path}`); - } - if (utils.isString(domain)) { - cookie.push(`domain=${domain}`); - } - if (secure === true) { - cookie.push('secure'); - } - if (utils.isString(sameSite)) { - cookie.push(`SameSite=${sameSite}`); - } - - document.cookie = cookie.join('; '); - }, - - read(name) { - if (typeof document === 'undefined') return null; - const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)')); - return match ? decodeURIComponent(match[1]) : 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/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/deprecatedMethod.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/deprecatedMethod.js deleted file mode 100644 index ec112de..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/deprecatedMethod.js +++ /dev/null @@ -1,31 +0,0 @@ -'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/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js deleted file mode 100644 index f29a817..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Estimate decoded byte length of a data:// URL *without* allocating large buffers. - * - For base64: compute exact decoded size using length and padding; - * handle %XX at the character-count level (no string allocation). - * - For non-base64: use UTF-8 byteLength of the encoded body as a safe upper bound. - * - * @param {string} url - * @returns {number} - */ -export default function estimateDataURLDecodedBytes(url) { - if (!url || typeof url !== 'string') return 0; - if (!url.startsWith('data:')) return 0; - - const comma = url.indexOf(','); - if (comma < 0) return 0; - - const meta = url.slice(5, comma); - const body = url.slice(comma + 1); - const isBase64 = /;base64/i.test(meta); - - if (isBase64) { - let effectiveLen = body.length; - const len = body.length; // cache length - - for (let i = 0; i < len; i++) { - if (body.charCodeAt(i) === 37 /* '%' */ && i + 2 < len) { - const a = body.charCodeAt(i + 1); - const b = body.charCodeAt(i + 2); - const isHex = - ((a >= 48 && a <= 57) || (a >= 65 && a <= 70) || (a >= 97 && a <= 102)) && - ((b >= 48 && b <= 57) || (b >= 65 && b <= 70) || (b >= 97 && b <= 102)); - - if (isHex) { - effectiveLen -= 2; - i += 2; - } - } - } - - let pad = 0; - let idx = len - 1; - - const tailIsPct3D = (j) => - j >= 2 && - body.charCodeAt(j - 2) === 37 && // '%' - body.charCodeAt(j - 1) === 51 && // '3' - (body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100); // 'D' or 'd' - - if (idx >= 0) { - if (body.charCodeAt(idx) === 61 /* '=' */) { - pad++; - idx--; - } else if (tailIsPct3D(idx)) { - pad++; - idx -= 3; - } - } - - if (pad === 1 && idx >= 0) { - if (body.charCodeAt(idx) === 61 /* '=' */) { - pad++; - } else if (tailIsPct3D(idx)) { - pad++; - } - } - - const groups = Math.floor(effectiveLen / 4); - const bytes = groups * 3 - (pad || 0); - return bytes > 0 ? bytes : 0; - } - - return Buffer.byteLength(body, 'utf8'); -} diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/formDataToJSON.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/formDataToJSON.js deleted file mode 100644 index bc36d65..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/formDataToJSON.js +++ /dev/null @@ -1,97 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; - -/** - * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] - * - * @param {string} name - The name of the property to get. - * - * @returns An array of strings. - */ -function parsePropPath(name) { - // foo[x][y][z] - // foo.x.y.z - // foo-x-y-z - // foo x y z - return utils.matchAll(/\w+|\[(\w*)]/g, name).map((match) => { - return match[0] === '[]' ? '' : match[1] || match[0]; - }); -} - -/** - * Convert an array to an object. - * - * @param {Array} arr - The array to convert to an object. - * - * @returns An object with the same keys and values as the array. - */ -function arrayToObject(arr) { - const obj = {}; - const keys = Object.keys(arr); - let i; - const len = keys.length; - let key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; - } - return obj; -} - -/** - * It takes a FormData object and returns a JavaScript object - * - * @param {string} formData The FormData object to convert to JSON. - * - * @returns {Object | null} The converted object. - */ -function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - let name = path[index++]; - - if (name === '__proto__') return true; - - const isNumericKey = Number.isFinite(+name); - const isLast = index >= path.length; - name = !name && utils.isArray(target) ? target.length : name; - - if (isLast) { - if (utils.hasOwnProp(target, name)) { - target[name] = utils.isArray(target[name]) - ? target[name].concat(value) - : [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/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/formDataToStream.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/formDataToStream.js deleted file mode 100644 index 7612791..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/formDataToStream.js +++ /dev/null @@ -1,119 +0,0 @@ -import util from 'util'; -import { Readable } from 'stream'; -import utils from '../utils.js'; -import readBlob from './readBlob.js'; -import platform from '../platform/index.js'; - -const BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_'; - -const textEncoder = typeof TextEncoder === 'function' ? new 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.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 { - const safeType = String(value.type || 'application/octet-stream').replace(/[\r\n]/g, ''); - headers += `Content-Type: ${safeType}${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 + '-' + platform.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); - 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/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/fromDataURI.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/fromDataURI.js deleted file mode 100644 index 989a417..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/fromDataURI.js +++ /dev/null @@ -1,53 +0,0 @@ -'use strict'; - -import AxiosError from '../core/AxiosError.js'; -import parseProtocol from './parseProtocol.js'; -import platform from '../platform/index.js'; - -const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; - -/** - * Parse data uri to a Buffer or Blob - * - * @param {String} uri - * @param {?Boolean} asBlob - * @param {?Object} options - * @param {?Function} options.Blob - * - * @returns {Buffer|Blob} - */ -export default function fromDataURI(uri, asBlob, options) { - const _Blob = (options && options.Blob) || platform.classes.Blob; - const protocol = parseProtocol(uri); - - if (asBlob === undefined && _Blob) { - asBlob = true; - } - - if (protocol === 'data') { - uri = protocol.length ? uri.slice(protocol.length + 1) : uri; - - const match = DATA_URL_PATTERN.exec(uri); - - if (!match) { - throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL); - } - - const mime = match[1]; - const isBase64 = match[2]; - const body = match[3]; - const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); - - if (asBlob) { - if (!_Blob) { - throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT); - } - - return new _Blob([buffer], { type: mime }); - } - - return buffer; - } - - throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT); -} diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/isAbsoluteURL.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/isAbsoluteURL.js deleted file mode 100644 index c461900..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/isAbsoluteURL.js +++ /dev/null @@ -1,19 +0,0 @@ -'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. - if (typeof url !== 'string') { - return false; - } - - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); -} diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/isAxiosError.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/isAxiosError.js deleted file mode 100644 index ffba610..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/isAxiosError.js +++ /dev/null @@ -1,14 +0,0 @@ -'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/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/isURLSameOrigin.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/isURLSameOrigin.js deleted file mode 100644 index 66af274..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/isURLSameOrigin.js +++ /dev/null @@ -1,16 +0,0 @@ -import platform from '../platform/index.js'; - -export default platform.hasStandardBrowserEnv - ? ((origin, isMSIE) => (url) => { - url = new URL(url, platform.origin); - - return ( - origin.protocol === url.protocol && - origin.host === url.host && - (isMSIE || origin.port === url.port) - ); - })( - new URL(platform.origin), - platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent) - ) - : () => true; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/null.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/null.js deleted file mode 100644 index b9f82c4..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/null.js +++ /dev/null @@ -1,2 +0,0 @@ -// eslint-disable-next-line strict -export default null; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/parseHeaders.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/parseHeaders.js deleted file mode 100644 index fb0eba4..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/parseHeaders.js +++ /dev/null @@ -1,69 +0,0 @@ -'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/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/parseProtocol.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/parseProtocol.js deleted file mode 100644 index 1ad6658..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/parseProtocol.js +++ /dev/null @@ -1,6 +0,0 @@ -'use strict'; - -export default function parseProtocol(url) { - const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return (match && match[1]) || ''; -} diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/progressEventReducer.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/progressEventReducer.js deleted file mode 100644 index 85f109b..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/progressEventReducer.js +++ /dev/null @@ -1,51 +0,0 @@ -import speedometer from './speedometer.js'; -import throttle from './throttle.js'; -import utils from '../utils.js'; - -export const progressEventReducer = (listener, isDownloadStream, freq = 3) => { - let bytesNotified = 0; - const _speedometer = speedometer(50, 250); - - return throttle((e) => { - const rawLoaded = e.loaded; - const total = e.lengthComputable ? e.total : undefined; - const loaded = total != null ? Math.min(rawLoaded, total) : rawLoaded; - const progressBytes = Math.max(0, loaded - bytesNotified); - const rate = _speedometer(progressBytes); - - bytesNotified = Math.max(bytesNotified, loaded); - - const data = { - loaded, - total, - progress: total ? loaded / total : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total ? (total - loaded) / rate : undefined, - event: e, - lengthComputable: total != null, - [isDownloadStream ? 'download' : 'upload']: true, - }; - - listener(data); - }, freq); -}; - -export const progressEventDecorator = (total, throttled) => { - const lengthComputable = total != null; - - return [ - (loaded) => - throttled[0]({ - lengthComputable, - total, - loaded, - }), - throttled[1], - ]; -}; - -export const asyncDecorator = - (fn) => - (...args) => - utils.asap(() => fn(...args)); diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/readBlob.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/readBlob.js deleted file mode 100644 index 87d0ea8..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/readBlob.js +++ /dev/null @@ -1,15 +0,0 @@ -const { asyncIterator } = Symbol; - -const readBlob = async function* (blob) { - if (blob.stream) { - yield* blob.stream(); - } else if (blob.arrayBuffer) { - yield await blob.arrayBuffer(); - } else if (blob[asyncIterator]) { - yield* blob[asyncIterator](); - } else { - yield blob; - } -}; - -export default readBlob; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/resolveConfig.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/resolveConfig.js deleted file mode 100644 index f5ff189..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/resolveConfig.js +++ /dev/null @@ -1,90 +0,0 @@ -import platform from '../platform/index.js'; -import utils from '../utils.js'; -import isURLSameOrigin from './isURLSameOrigin.js'; -import cookies from './cookies.js'; -import buildFullPath from '../core/buildFullPath.js'; -import mergeConfig from '../core/mergeConfig.js'; -import AxiosHeaders from '../core/AxiosHeaders.js'; -import buildURL from './buildURL.js'; - -export default (config) => { - const newConfig = mergeConfig({}, config); - - // Read only own properties to prevent prototype pollution gadgets - // (e.g. Object.prototype.baseURL = 'https://evil.com'). See GHSA-q8qp-cvcw-x6jj. - const own = (key) => (utils.hasOwnProp(newConfig, key) ? newConfig[key] : undefined); - - const data = own('data'); - let withXSRFToken = own('withXSRFToken'); - const xsrfHeaderName = own('xsrfHeaderName'); - const xsrfCookieName = own('xsrfCookieName'); - let headers = own('headers'); - const auth = own('auth'); - const baseURL = own('baseURL'); - const allowAbsoluteUrls = own('allowAbsoluteUrls'); - const url = own('url'); - - newConfig.headers = headers = AxiosHeaders.from(headers); - - newConfig.url = buildURL( - buildFullPath(baseURL, url, allowAbsoluteUrls), - config.params, - config.paramsSerializer - ); - - // HTTP basic authentication - if (auth) { - headers.set( - 'Authorization', - 'Basic ' + - btoa( - (auth.username || '') + - ':' + - (auth.password ? unescape(encodeURIComponent(auth.password)) : '') - ) - ); - } - - if (utils.isFormData(data)) { - if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { - headers.setContentType(undefined); // browser handles it - } else if (utils.isFunction(data.getHeaders)) { - // Node.js FormData (like form-data package) - const formHeaders = data.getHeaders(); - // Only set safe headers to avoid overwriting security headers - const allowedHeaders = ['content-type', 'content-length']; - Object.entries(formHeaders).forEach(([key, val]) => { - if (allowedHeaders.includes(key.toLowerCase())) { - headers.set(key, val); - } - }); - } - } - - // 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) { - if (utils.isFunction(withXSRFToken)) { - withXSRFToken = withXSRFToken(newConfig); - } - - // Strict boolean check — prevents proto-pollution gadgets (e.g. Object.prototype.withXSRFToken = 1) - // and misconfigurations (e.g. "false") from short-circuiting the same-origin check and leaking - // the XSRF token cross-origin. See GHSA-xx6v-rp6x-q39c. - const shouldSendXSRF = - withXSRFToken === true || - (withXSRFToken == null && isURLSameOrigin(newConfig.url)); - - if (shouldSendXSRF) { - const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName); - - if (xsrfValue) { - headers.set(xsrfHeaderName, xsrfValue); - } - } - } - - return newConfig; -}; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/shouldBypassProxy.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/shouldBypassProxy.js deleted file mode 100644 index 95a85e1..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/shouldBypassProxy.js +++ /dev/null @@ -1,153 +0,0 @@ -const LOOPBACK_HOSTNAMES = new Set(['localhost']); - -const isIPv4Loopback = (host) => { - const parts = host.split('.'); - if (parts.length !== 4) return false; - if (parts[0] !== '127') return false; - return parts.every((p) => /^\d+$/.test(p) && Number(p) >= 0 && Number(p) <= 255); -}; - -const isIPv6Loopback = (host) => { - // Collapse all-zero groups: any form of ::1 / 0:0:...:0:1 - // First, strip any leading "::" by normalising with Set lookup of common forms, - // then fall back to structural check. - if (host === '::1') return true; - - // Check IPv4-mapped IPv6 loopback: ::ffff: or ::ffff: - // Node's URL parser normalises ::ffff:127.0.0.1 → ::ffff:7f00:1 - const v4MappedDotted = host.match(/^::ffff:(\d+\.\d+\.\d+\.\d+)$/i); - if (v4MappedDotted) return isIPv4Loopback(v4MappedDotted[1]); - - const v4MappedHex = host.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/i); - if (v4MappedHex) { - const high = parseInt(v4MappedHex[1], 16); - // High 16 bits must start with 127 (0x7f) — i.e. 0x7f00..0x7fff - return high >= 0x7f00 && high <= 0x7fff; - } - - // Full-form ::1 variants: any number of zero groups followed by trailing 1 - // e.g. 0:0:0:0:0:0:0:1, 0000:...:0001 - const groups = host.split(':'); - if (groups.length === 8) { - for (let i = 0; i < 7; i++) { - if (!/^0+$/.test(groups[i])) return false; - } - return /^0*1$/.test(groups[7]); - } - - return false; -}; - -const isLoopback = (host) => { - if (!host) return false; - if (LOOPBACK_HOSTNAMES.has(host)) return true; - if (isIPv4Loopback(host)) return true; - return isIPv6Loopback(host); -}; - -const DEFAULT_PORTS = { - http: 80, - https: 443, - ws: 80, - wss: 443, - ftp: 21, -}; - -const parseNoProxyEntry = (entry) => { - let entryHost = entry; - let entryPort = 0; - - if (entryHost.charAt(0) === '[') { - const bracketIndex = entryHost.indexOf(']'); - - if (bracketIndex !== -1) { - const host = entryHost.slice(1, bracketIndex); - const rest = entryHost.slice(bracketIndex + 1); - - if (rest.charAt(0) === ':' && /^\d+$/.test(rest.slice(1))) { - entryPort = Number.parseInt(rest.slice(1), 10); - } - - return [host, entryPort]; - } - } - - const firstColon = entryHost.indexOf(':'); - const lastColon = entryHost.lastIndexOf(':'); - - if ( - firstColon !== -1 && - firstColon === lastColon && - /^\d+$/.test(entryHost.slice(lastColon + 1)) - ) { - entryPort = Number.parseInt(entryHost.slice(lastColon + 1), 10); - entryHost = entryHost.slice(0, lastColon); - } - - return [entryHost, entryPort]; -}; - -const normalizeNoProxyHost = (hostname) => { - if (!hostname) { - return hostname; - } - - if (hostname.charAt(0) === '[' && hostname.charAt(hostname.length - 1) === ']') { - hostname = hostname.slice(1, -1); - } - - return hostname.replace(/\.+$/, ''); -}; - -export default function shouldBypassProxy(location) { - let parsed; - - try { - parsed = new URL(location); - } catch (_err) { - return false; - } - - const noProxy = (process.env.no_proxy || process.env.NO_PROXY || '').toLowerCase(); - - if (!noProxy) { - return false; - } - - if (noProxy === '*') { - return true; - } - - const port = - Number.parseInt(parsed.port, 10) || DEFAULT_PORTS[parsed.protocol.split(':', 1)[0]] || 0; - - const hostname = normalizeNoProxyHost(parsed.hostname.toLowerCase()); - - return noProxy.split(/[\s,]+/).some((entry) => { - if (!entry) { - return false; - } - - let [entryHost, entryPort] = parseNoProxyEntry(entry); - - entryHost = normalizeNoProxyHost(entryHost); - - if (!entryHost) { - return false; - } - - if (entryPort && entryPort !== port) { - return false; - } - - if (entryHost.charAt(0) === '*') { - entryHost = entryHost.slice(1); - } - - if (entryHost.charAt(0) === '.') { - return hostname.endsWith(entryHost); - } - - return hostname === entryHost || (isLoopback(hostname) && isLoopback(entryHost)); - }); -} diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/speedometer.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/speedometer.js deleted file mode 100644 index 566a1ff..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/speedometer.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; - -/** - * Calculate data maxRate - * @param {Number} [samplesCount= 10] - * @param {Number} [min= 1000] - * @returns {Function} - */ -function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - const bytes = new Array(samplesCount); - const timestamps = new Array(samplesCount); - let head = 0; - let tail = 0; - let firstSampleTS; - - min = min !== undefined ? min : 1000; - - return function push(chunkLength) { - const now = Date.now(); - - const startedAt = timestamps[tail]; - - if (!firstSampleTS) { - firstSampleTS = now; - } - - bytes[head] = chunkLength; - timestamps[head] = now; - - let i = tail; - let bytesCount = 0; - - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - - head = (head + 1) % samplesCount; - - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - - if (now - firstSampleTS < min) { - return; - } - - const passed = startedAt && now - startedAt; - - return passed ? Math.round((bytesCount * 1000) / passed) : undefined; - }; -} - -export default speedometer; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/spread.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/spread.js deleted file mode 100644 index 2e72fc8..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/spread.js +++ /dev/null @@ -1,28 +0,0 @@ -'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) {} - * const 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/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/throttle.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/throttle.js deleted file mode 100644 index fbef472..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/throttle.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Throttle decorator - * @param {Function} fn - * @param {Number} freq - * @return {Function} - */ -function throttle(fn, freq) { - let timestamp = 0; - let threshold = 1000 / freq; - let lastArgs; - let timer; - - const invoke = (args, now = Date.now()) => { - timestamp = now; - lastArgs = null; - if (timer) { - clearTimeout(timer); - timer = null; - } - fn(...args); - }; - - const throttled = (...args) => { - const now = Date.now(); - const passed = now - timestamp; - if (passed >= threshold) { - invoke(args, now); - } else { - lastArgs = args; - if (!timer) { - timer = setTimeout(() => { - timer = null; - invoke(lastArgs); - }, threshold - passed); - } - } - }; - - const flush = () => lastArgs && invoke(lastArgs); - - return [throttled, flush]; -} - -export default throttle; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/toFormData.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/toFormData.js deleted file mode 100644 index a1c7cf9..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/toFormData.js +++ /dev/null @@ -1,249 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import AxiosError from '../core/AxiosError.js'; -// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored -import PlatformFormData from '../platform/node/classes/FormData.js'; - -/** - * Determines if the given thing is a array or js object. - * - * @param {string} thing - The object or array to be visited. - * - * @returns {boolean} - */ -function isVisitable(thing) { - return utils.isPlainObject(thing) || utils.isArray(thing); -} - -/** - * It removes the brackets from the end of a string - * - * @param {string} key - The key of the parameter. - * - * @returns {string} the key without the brackets. - */ -function removeBrackets(key) { - return utils.endsWith(key, '[]') ? key.slice(0, -2) : key; -} - -/** - * It takes a path, a key, and a boolean, and returns a string - * - * @param {string} path - The path to the current key. - * @param {string} key - The key of the current object being iterated over. - * @param {string} dots - If true, the key will be rendered with dots instead of brackets. - * - * @returns {string} The path to the current key. - */ -function renderKey(path, key, dots) { - if (!path) return key; - return path - .concat(key) - .map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }) - .join(dots ? '.' : ''); -} - -/** - * If the array is an array and none of its elements are visitable, then it's a flat array. - * - * @param {Array} arr - The array to check - * - * @returns {boolean} - */ -function isFlatArray(arr) { - return utils.isArray(arr) && !arr.some(isVisitable); -} - -const predicates = utils.toFlatObject(utils, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); -}); - -/** - * Convert a data object to FormData - * - * @param {Object} obj - * @param {?Object} [formData] - * @param {?Object} [options] - * @param {Function} [options.visitor] - * @param {Boolean} [options.metaTokens = true] - * @param {Boolean} [options.dots = false] - * @param {?Boolean} [options.indexes = false] - * - * @returns {Object} - **/ - -/** - * It converts an object into a FormData object - * - * @param {Object} obj - The object to convert to form data. - * @param {string} formData - The FormData object to append to. - * @param {Object} options - * - * @returns - */ -function toFormData(obj, formData, options) { - if (!utils.isObject(obj)) { - throw new TypeError('target must be an object'); - } - - // eslint-disable-next-line no-param-reassign - formData = formData || new (PlatformFormData || FormData)(); - - // eslint-disable-next-line no-param-reassign - options = utils.toFlatObject( - options, - { - metaTokens: true, - dots: false, - indexes: false, - }, - false, - function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils.isUndefined(source[option]); - } - ); - - const metaTokens = options.metaTokens; - // eslint-disable-next-line no-use-before-define - const visitor = options.visitor || defaultVisitor; - const dots = options.dots; - const indexes = options.indexes; - const _Blob = options.Blob || (typeof Blob !== 'undefined' && Blob); - const maxDepth = options.maxDepth === undefined ? 100 : options.maxDepth; - 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 (utils.isBoolean(value)) { - return value.toString(); - } - - 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 (utils.isReactNative(formData) && utils.isReactNativeBlob(value)) { - formData.append(renderKey(path, key, dots), convertValue(value)); - return false; - } - - 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, depth = 0) { - if (utils.isUndefined(value)) return; - - if (depth > maxDepth) { - throw new AxiosError( - 'Object is too deeply nested (' + depth + ' levels). Max depth: ' + maxDepth, - AxiosError.ERR_FORM_DATA_DEPTH_EXCEEDED - ); - } - - 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], depth + 1); - } - }); - - stack.pop(); - } - - if (!utils.isObject(obj)) { - throw new TypeError('data must be an object'); - } - - build(obj); - - return formData; -} - -export default toFormData; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/toURLEncodedForm.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/toURLEncodedForm.js deleted file mode 100644 index 749e13a..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/toURLEncodedForm.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; - -import utils from '../utils.js'; -import toFormData from './toFormData.js'; -import platform from '../platform/index.js'; - -export default function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), { - 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/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/trackStream.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/trackStream.js deleted file mode 100644 index c75eace..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/trackStream.js +++ /dev/null @@ -1,89 +0,0 @@ -export const streamChunk = function* (chunk, chunkSize) { - let len = chunk.byteLength; - - if (!chunkSize || len < chunkSize) { - yield chunk; - return; - } - - let pos = 0; - let end; - - while (pos < len) { - end = pos + chunkSize; - yield chunk.slice(pos, end); - pos = end; - } -}; - -export const readBytes = async function* (iterable, chunkSize) { - for await (const chunk of readStream(iterable)) { - yield* streamChunk(chunk, chunkSize); - } -}; - -const readStream = async function* (stream) { - if (stream[Symbol.asyncIterator]) { - yield* stream; - return; - } - - const reader = stream.getReader(); - try { - for (;;) { - const { done, value } = await reader.read(); - if (done) { - break; - } - yield value; - } - } finally { - await reader.cancel(); - } -}; - -export const trackStream = (stream, chunkSize, onProgress, onFinish) => { - const iterator = readBytes(stream, chunkSize); - - let bytes = 0; - let done; - let _onFinish = (e) => { - if (!done) { - done = true; - onFinish && onFinish(e); - } - }; - - return new ReadableStream( - { - async pull(controller) { - try { - const { done, value } = await iterator.next(); - - if (done) { - _onFinish(); - controller.close(); - return; - } - - let len = value.byteLength; - if (onProgress) { - let loadedBytes = (bytes += len); - onProgress(loadedBytes); - } - controller.enqueue(new Uint8Array(value)); - } catch (err) { - _onFinish(err); - throw err; - } - }, - cancel(reason) { - _onFinish(reason); - return iterator.return(); - }, - }, - { - highWaterMark: 2, - } - ); -}; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/validator.js b/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/validator.js deleted file mode 100644 index e84947a..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/helpers/validator.js +++ /dev/null @@ -1,112 +0,0 @@ -'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; - }; -}; - -validators.spelling = function spelling(correctSpelling) { - return (value, opt) => { - // eslint-disable-next-line no-console - console.warn(`${opt} is likely a misspelling of ${correctSpelling}`); - return 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]; - // Use hasOwnProperty so a polluted Object.prototype. cannot supply - // a non-function validator and cause a TypeError. See GHSA-q8qp-cvcw-x6jj. - const validator = Object.prototype.hasOwnProperty.call(schema, opt) ? schema[opt] : undefined; - 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/.claude/skills/教学日程查询/node_modules/axios/lib/platform/browser/classes/Blob.js b/.claude/skills/教学日程查询/node_modules/axios/lib/platform/browser/classes/Blob.js deleted file mode 100644 index 9ec4af8..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/browser/classes/Blob.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -export default typeof Blob !== 'undefined' ? Blob : null; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/browser/classes/FormData.js b/.claude/skills/教学日程查询/node_modules/axios/lib/platform/browser/classes/FormData.js deleted file mode 100644 index f36d31b..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/browser/classes/FormData.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict'; - -export default typeof FormData !== 'undefined' ? FormData : null; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js b/.claude/skills/教学日程查询/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js deleted file mode 100644 index b7dae95..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -import AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js'; -export default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/browser/index.js b/.claude/skills/教学日程查询/node_modules/axios/lib/platform/browser/index.js deleted file mode 100644 index 8e5f99c..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/browser/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import URLSearchParams from './classes/URLSearchParams.js'; -import FormData from './classes/FormData.js'; -import Blob from './classes/Blob.js'; - -export default { - isBrowser: true, - classes: { - URLSearchParams, - FormData, - Blob, - }, - protocols: ['http', 'https', 'file', 'blob', 'url', 'data'], -}; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/common/utils.js b/.claude/skills/教学日程查询/node_modules/axios/lib/platform/common/utils.js deleted file mode 100644 index e4dfe46..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/common/utils.js +++ /dev/null @@ -1,52 +0,0 @@ -const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; - -const _navigator = (typeof navigator === 'object' && navigator) || 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 = - hasBrowserEnv && - (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0); - -/** - * 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 origin = (hasBrowserEnv && window.location.href) || 'http://localhost'; - -export { - hasBrowserEnv, - hasStandardBrowserWebWorkerEnv, - hasStandardBrowserEnv, - _navigator as navigator, - origin, -}; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/index.js b/.claude/skills/教学日程查询/node_modules/axios/lib/platform/index.js deleted file mode 100644 index e1094ab..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/index.js +++ /dev/null @@ -1,7 +0,0 @@ -import platform from './node/index.js'; -import * as utils from './common/utils.js'; - -export default { - ...utils, - ...platform, -}; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/node/classes/FormData.js b/.claude/skills/教学日程查询/node_modules/axios/lib/platform/node/classes/FormData.js deleted file mode 100644 index b07f947..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/node/classes/FormData.js +++ /dev/null @@ -1,3 +0,0 @@ -import FormData from 'form-data'; - -export default FormData; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/node/classes/URLSearchParams.js b/.claude/skills/教学日程查询/node_modules/axios/lib/platform/node/classes/URLSearchParams.js deleted file mode 100644 index fba5842..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/node/classes/URLSearchParams.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -import url from 'url'; -export default url.URLSearchParams; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/node/index.js b/.claude/skills/教学日程查询/node_modules/axios/lib/platform/node/index.js deleted file mode 100644 index 9979a71..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/platform/node/index.js +++ /dev/null @@ -1,37 +0,0 @@ -import crypto from 'crypto'; -import URLSearchParams from './classes/URLSearchParams.js'; -import FormData from './classes/FormData.js'; - -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; - const randomValues = new Uint32Array(size); - crypto.randomFillSync(randomValues); - for (let i = 0; i < size; i++) { - str += alphabet[randomValues[i] % length]; - } - - return str; -}; - -export default { - isNode: true, - classes: { - URLSearchParams, - FormData, - Blob: (typeof Blob !== 'undefined' && Blob) || null, - }, - ALPHABET, - generateString, - protocols: ['http', 'https', 'file', 'data'], -}; diff --git a/.claude/skills/教学日程查询/node_modules/axios/lib/utils.js b/.claude/skills/教学日程查询/node_modules/axios/lib/utils.js deleted file mode 100644 index 6bcd672..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/lib/utils.js +++ /dev/null @@ -1,919 +0,0 @@ -'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 { iterator, toStringTag } = Symbol; - -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 a non-null object - * - * @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) && - !(toStringTag in val) && - !(iterator in val) - ); -}; - -/** - * Determine if a value is an empty object (safely handles Buffers) - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an empty object, otherwise false - */ -const isEmptyObject = (val) => { - // Early return for non-objects or Buffers to prevent RangeError - if (!isObject(val) || isBuffer(val)) { - return false; - } - - try { - return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype; - } catch (e) { - // Fallback for any other objects that might cause RangeError with Object.keys() - return false; - } -}; - -/** - * 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 React Native Blob - * React Native "blob": an object with a `uri` attribute. Optionally, it can - * also have a `name` and `type` attribute to specify filename and content type - * - * @see https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Network/FormData.js#L68-L71 - * - * @param {*} value The value to test - * - * @returns {boolean} True if value is a React Native Blob, otherwise false - */ -const isReactNativeBlob = (value) => { - return !!(value && typeof value.uri !== 'undefined'); -} - -/** - * Determine if environment is React Native - * ReactNative `FormData` has a non-standard `getParts()` method - * - * @param {*} formData The formData to test - * - * @returns {boolean} True if environment is React Native, otherwise false - */ -const isReactNative = (formData) => formData && typeof formData.getParts !== 'undefined'; - -/** - * 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 - */ -function getGlobal() { - if (typeof globalThis !== 'undefined') return globalThis; - if (typeof self !== 'undefined') return self; - if (typeof window !== 'undefined') return window; - if (typeof global !== 'undefined') return global; - return {}; -} - -const G = getGlobal(); -const FormDataCtor = typeof G.FormData !== 'undefined' ? G.FormData : undefined; - -const isFormData = (thing) => { - if (!thing) return false; - if (FormDataCtor && thing instanceof FormDataCtor) return true; - // Reject plain objects inheriting directly from Object.prototype so prototype-pollution gadgets can't spoof FormData (GHSA-6chq-wfr3-2hj9). - const proto = getPrototypeOf(thing); - if (!proto || proto === Object.prototype) return false; - if (!isFunction(thing.append)) return false; - const kind = kindOf(thing); - return kind === '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'); - -const [isReadableStream, isRequest, isResponse, isHeaders] = [ - 'ReadableStream', - 'Request', - 'Response', - 'Headers', -].map(kindOfTest); - -/** - * 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) => { - 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 {Object} [options] - * @param {Boolean} [options.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 { - // Buffer check - if (isBuffer(obj)) { - return; - } - - // 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); - } - } -} - -/** - * Finds a key in an object, case-insensitive, returning the actual key name. - * Returns null if the object is a Buffer or if no match is found. - * - * @param {Object} obj - The object to search. - * @param {string} key - The key to find (case-insensitive). - * @returns {?string} The actual key name if found, otherwise null. - */ -function findKey(obj, key) { - if (isBuffer(obj)) { - return null; - } - - 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 - * const 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, skipUndefined } = (isContextDefined(this) && this) || {}; - const result = {}; - const assignValue = (val, key) => { - // Skip dangerous property names to prevent prototype pollution - if (key === '__proto__' || key === 'constructor' || key === 'prototype') { - return; - } - - 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 if (!skipUndefined || !isUndefined(val)) { - 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 {Object} [options] - * @param {Boolean} [options.allOwnKeys] - * @returns {Object} The resulting value of object a - */ -const extend = (a, b, thisArg, { allOwnKeys } = {}) => { - forEach( - b, - (val, key) => { - if (thisArg && isFunction(val)) { - Object.defineProperty(a, key, { - value: bind(val, thisArg), - writable: true, - enumerable: true, - configurable: true, - }); - } else { - Object.defineProperty(a, key, { - value: val, - writable: true, - enumerable: true, - configurable: true, - }); - } - }, - { 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); - Object.defineProperty(constructor.prototype, 'constructor', { - value: constructor, - writable: true, - enumerable: false, - configurable: true, - }); - 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[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 + "'"); - }; - } - }); -}; - -/** - * Converts an array or a delimited string into an object set with values as keys and true as values. - * Useful for fast membership checks. - * - * @param {Array|string} arrayOrString - The array or string to convert. - * @param {string} delimiter - The delimiter to use if input is a string. - * @returns {Object} An object with keys from the array or string, values set to true. - */ -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) => { - return value != null && Number.isFinite((value = +value)) ? value : defaultValue; -}; - -/** - * 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[toStringTag] === 'FormData' && - thing[iterator] - ); -} - -/** - * Recursively converts an object to a JSON-compatible object, handling circular references and Buffers. - * - * @param {Object} obj - The object to convert. - * @returns {Object} The JSON-compatible object. - */ -const toJSONObject = (obj) => { - const stack = new Array(10); - - const visit = (source, i) => { - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - - //Buffer check - if (isBuffer(source)) { - return source; - } - - 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); -}; - -/** - * Determines if a value is an async function. - * - * @param {*} thing - The value to test. - * @returns {boolean} True if value is an async function, otherwise false. - */ -const isAsyncFn = kindOfTest('AsyncFunction'); - -/** - * Determines if a value is thenable (has then and catch methods). - * - * @param {*} thing - The value to test. - * @returns {boolean} True if value is thenable, otherwise false. - */ -const isThenable = (thing) => - thing && - (isObject(thing) || isFunction(thing)) && - isFunction(thing.then) && - isFunction(thing.catch); - -// original code -// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34 - -/** - * Provides a cross-platform setImmediate implementation. - * Uses native setImmediate if available, otherwise falls back to postMessage or setTimeout. - * - * @param {boolean} setImmediateSupported - Whether setImmediate is supported. - * @param {boolean} postMessageSupported - Whether postMessage is supported. - * @returns {Function} A function to schedule a callback asynchronously. - */ -const _setImmediate = ((setImmediateSupported, postMessageSupported) => { - if (setImmediateSupported) { - return setImmediate; - } - - return postMessageSupported - ? ((token, callbacks) => { - _global.addEventListener( - 'message', - ({ source, data }) => { - if (source === _global && data === token) { - callbacks.length && callbacks.shift()(); - } - }, - false - ); - - return (cb) => { - callbacks.push(cb); - _global.postMessage(token, '*'); - }; - })(`axios@${Math.random()}`, []) - : (cb) => setTimeout(cb); -})(typeof setImmediate === 'function', isFunction(_global.postMessage)); - -/** - * Schedules a microtask or asynchronous callback as soon as possible. - * Uses queueMicrotask if available, otherwise falls back to process.nextTick or _setImmediate. - * - * @type {Function} - */ -const asap = - typeof queueMicrotask !== 'undefined' - ? queueMicrotask.bind(_global) - : (typeof process !== 'undefined' && process.nextTick) || _setImmediate; - -// ********************* - -const isIterable = (thing) => thing != null && isFunction(thing[iterator]); - -export default { - isArray, - isArrayBuffer, - isBuffer, - isFormData, - isArrayBufferView, - isString, - isNumber, - isBoolean, - isObject, - isPlainObject, - isEmptyObject, - isReadableStream, - isRequest, - isResponse, - isHeaders, - isUndefined, - isDate, - isFile, - isReactNativeBlob, - isReactNative, - 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, - isSpecCompliantForm, - toJSONObject, - isAsyncFn, - isThenable, - setImmediate: _setImmediate, - asap, - isIterable, -}; diff --git a/.claude/skills/教学日程查询/node_modules/axios/package.json b/.claude/skills/教学日程查询/node_modules/axios/package.json deleted file mode 100644 index e6d1e2f..0000000 --- a/.claude/skills/教学日程查询/node_modules/axios/package.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "name": "axios", - "version": "1.15.2", - "description": "Promise based HTTP client for the browser and node.js", - "main": "./dist/node/axios.cjs", - "module": "./index.js", - "type": "module", - "types": "index.d.ts", - "jsdelivr": "dist/axios.min.js", - "unpkg": "dist/axios.min.js", - "typings": "./index.d.ts", - "exports": { - ".": { - "types": { - "require": "./index.d.cts", - "default": "./index.d.ts" - }, - "bun": { - "require": "./dist/node/axios.cjs", - "default": "./index.js" - }, - "react-native": { - "require": "./dist/browser/axios.cjs", - "default": "./dist/esm/axios.js" - }, - "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", - "./dist/browser/axios.cjs": "./dist/browser/axios.cjs", - "./dist/node/axios.cjs": "./dist/node/axios.cjs" - }, - "browser": { - "./dist/node/axios.cjs": "./dist/browser/axios.cjs", - "./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" - }, - "react-native": { - "./dist/node/axios.cjs": "./dist/browser/axios.cjs", - "./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" - }, - "repository": { - "type": "git", - "url": "https://github.com/axios/axios.git" - }, - "keywords": [ - "xhr", - "http", - "ajax", - "promise", - "node", - "browser", - "fetch", - "rest", - "api", - "client" - ], - "author": "Matt Zabriskie", - "contributors": [ - "Matt Zabriskie (https://github.com/mzabriskie)", - "Jay (https://github.com/jasonsaayman)", - "Dmitriy Mozgovoy (https://github.com/DigitalBrainJS)", - "Nick Uraltsev (https://github.com/nickuraltsev)", - "Emily Morehouse (https://github.com/emilyemorehouse)", - "Justin Beckwith (https://github.com/JustinBeckwith)", - "Rubén Norte (https://github.com/rubennorte)", - "Martti Laine (https://github.com/codeclown)", - "Xianming Zhong (https://github.com/chinesedfan)", - "Remco Haszing (https://github.com/remcohaszing)", - "Shaan Majid (https://github.com/shaanmajid)", - "Willian Agostini (https://github.com/WillianAgostini)", - "Rikki Gibson (https://github.com/RikkiGibson)" - ], - "sideEffects": false, - "license": "MIT", - "bugs": { - "url": "https://github.com/axios/axios/issues" - }, - "homepage": "https://axios-http.com", - "scripts": { - "build": "gulp clear && cross-env NODE_ENV=production rollup -c -m", - "version": "npm run build && git add package.json", - "preversion": "gulp version", - "test": "npm run test:vitest", - "test:vitest": "vitest run", - "test:vitest:unit": "vitest run --project unit", - "test:vitest:browser": "vitest run --project browser", - "test:vitest:browser:headless": "vitest run --project browser-headless", - "test:vitest:watch": "vitest", - "test:smoke:cjs:vitest": "npm --prefix tests/smoke/cjs run test:smoke:cjs:mocha", - "test:smoke:esm:vitest": "npm --prefix tests/smoke/esm run test:smoke:esm:vitest", - "test:smoke:deno": "deno task --cwd tests/smoke/deno test", - "test:smoke:bun": "bun test --cwd tests/smoke/bun", - "test:module:cjs": "npm --prefix tests/module/cjs run test:module:cjs", - "test:module:esm": "npm --prefix tests/module/esm run test:module:esm", - "docs:dev": "cd docs && npm run docs:dev", - "start": "node ./sandbox/server.js", - "examples": "node ./examples/server.js", - "lint": "eslint lib/**/*.js", - "fix": "eslint --fix lib/**/*.js", - "prepare": "husky" - }, - "dependencies": { - "follow-redirects": "^1.15.11", - "form-data": "^4.0.5", - "proxy-from-env": "^2.1.0" - }, - "devDependencies": { - "@babel/core": "^7.29.0", - "@babel/preset-env": "^7.29.0", - "@commitlint/cli": "^20.4.4", - "@commitlint/config-conventional": "^20.4.4", - "@eslint/js": "^10.0.1", - "@rollup/plugin-alias": "^6.0.0", - "@rollup/plugin-babel": "^7.0.0", - "@rollup/plugin-commonjs": "^29.0.2", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^16.0.3", - "@rollup/plugin-terser": "^1.0.0", - "@vitest/browser": "^4.1.1", - "@vitest/browser-playwright": "^4.1.1", - "abortcontroller-polyfill": "^1.7.8", - "auto-changelog": "^2.5.0", - "body-parser": "^2.2.2", - "chalk": "^5.6.2", - "cross-env": "^10.1.0", - "dev-null": "^0.1.1", - "eslint": "^10.1.0", - "express": "^5.2.1", - "formdata-node": "^6.0.3", - "formidable": "^3.2.4", - "fs-extra": "^11.3.4", - "get-stream": "^9.0.1", - "globals": "^17.4.0", - "gulp": "^5.0.1", - "handlebars": "^4.7.8", - "husky": "^9.1.7", - "lint-staged": "^16.4.0", - "memoizee": "^0.4.17", - "minimist": "^1.2.8", - "multer": "^2.1.1", - "pacote": "^21.5.0", - "playwright": "^1.58.2", - "prettier": "^3.8.1", - "pretty-bytes": "^7.1.0", - "rollup": "^4.60.0", - "rollup-plugin-bundle-size": "^1.0.3", - "selfsigned": "^5.5.0", - "stream-throttle": "^0.1.3", - "string-replace-async": "^3.0.2", - "tar-stream": "^3.1.8", - "typescript": "^5.9.3", - "vitest": "^4.1.1" - }, - "commitlint": { - "rules": { - "header-max-length": [ - 2, - "always", - 130 - ] - }, - "extends": [ - "@commitlint/config-conventional" - ] - }, - "lint-staged": { - "*.{js,cjs,mjs,ts,json,md,yml,yaml}": "prettier --write" - } -} \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/.eslintrc b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/.eslintrc deleted file mode 100644 index 201e859..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/.eslintrc +++ /dev/null @@ -1,17 +0,0 @@ -{ - "root": true, - - "extends": "@ljharb", - - "rules": { - "func-name-matching": 0, - "id-length": 0, - "new-cap": [2, { - "capIsNewExceptions": [ - "GetIntrinsic", - ], - }], - "no-extra-parens": 0, - "no-magic-numbers": 0, - }, -} diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/.github/FUNDING.yml b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/.github/FUNDING.yml deleted file mode 100644 index 0011e9d..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +++ /dev/null @@ -1,12 +0,0 @@ -# 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-apply-helpers -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/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/.nycrc b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/.nycrc deleted file mode 100644 index bdd626c..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/.nycrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "all": true, - "check-coverage": false, - "reporter": ["text-summary", "text", "html", "json"], - "exclude": [ - "coverage", - "test" - ] -} diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/CHANGELOG.md b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/CHANGELOG.md deleted file mode 100644 index 2484942..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/CHANGELOG.md +++ /dev/null @@ -1,30 +0,0 @@ -# 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.2](https://github.com/ljharb/call-bind-apply-helpers/compare/v1.0.1...v1.0.2) - 2025-02-12 - -### Commits - -- [types] improve inferred types [`e6f9586`](https://github.com/ljharb/call-bind-apply-helpers/commit/e6f95860a3c72879cb861a858cdfb8138fbedec1) -- [Dev Deps] update `@arethetypeswrong/cli`, `@ljharb/tsconfig`, `@types/tape`, `es-value-fixtures`, `for-each`, `has-strict-mode`, `object-inspect` [`e43d540`](https://github.com/ljharb/call-bind-apply-helpers/commit/e43d5409f97543bfbb11f345d47d8ce4e066d8c1) - -## [v1.0.1](https://github.com/ljharb/call-bind-apply-helpers/compare/v1.0.0...v1.0.1) - 2024-12-08 - -### Commits - -- [types] `reflectApply`: fix types [`4efc396`](https://github.com/ljharb/call-bind-apply-helpers/commit/4efc3965351a4f02cc55e836fa391d3d11ef2ef8) -- [Fix] `reflectApply`: oops, Reflect is not a function [`83cc739`](https://github.com/ljharb/call-bind-apply-helpers/commit/83cc7395de6b79b7730bdf092f1436f0b1263c75) -- [Dev Deps] update `@arethetypeswrong/cli` [`80bd5d3`](https://github.com/ljharb/call-bind-apply-helpers/commit/80bd5d3ae58b4f6b6995ce439dd5a1bcb178a940) - -## v1.0.0 - 2024-12-05 - -### Commits - -- Initial implementation, tests, readme [`7879629`](https://github.com/ljharb/call-bind-apply-helpers/commit/78796290f9b7430c9934d6f33d94ae9bc89fce04) -- Initial commit [`3f1dc16`](https://github.com/ljharb/call-bind-apply-helpers/commit/3f1dc164afc43285631b114a5f9dd9137b2b952f) -- npm init [`081df04`](https://github.com/ljharb/call-bind-apply-helpers/commit/081df048c312fcee400922026f6e97281200a603) -- Only apps should have lockfiles [`5b9ca0f`](https://github.com/ljharb/call-bind-apply-helpers/commit/5b9ca0fe8101ebfaf309c549caac4e0a017ed930) diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/LICENSE b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/LICENSE deleted file mode 100644 index f82f389..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 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/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/README.md b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/README.md deleted file mode 100644 index 8fc0dae..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/README.md +++ /dev/null @@ -1,62 +0,0 @@ -# call-bind-apply-helpers [![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] - -Helper functions around Function call/apply/bind, for use in `call-bind`. - -The only packages that should likely ever use this package directly are `call-bind` and `get-intrinsic`. -Please use `call-bind` unless you have a very good reason not to. - -## Getting started - -```sh -npm install --save call-bind-apply-helpers -``` - -## Usage/Examples - -```js -const assert = require('assert'); -const callBindBasic = require('call-bind-apply-helpers'); - -function f(a, b) { - assert.equal(this, 1); - assert.equal(a, 2); - assert.equal(b, 3); - assert.equal(arguments.length, 2); -} - -const fBound = callBindBasic([f, 1]); - -delete Function.prototype.call; -delete Function.prototype.bind; - -fBound(2, 3); -``` - -## Tests - -Clone the repo, `npm install`, and run `npm test` - -[package-url]: https://npmjs.org/package/call-bind-apply-helpers -[npm-version-svg]: https://versionbadg.es/ljharb/call-bind-apply-helpers.svg -[deps-svg]: https://david-dm.org/ljharb/call-bind-apply-helpers.svg -[deps-url]: https://david-dm.org/ljharb/call-bind-apply-helpers -[dev-deps-svg]: https://david-dm.org/ljharb/call-bind-apply-helpers/dev-status.svg -[dev-deps-url]: https://david-dm.org/ljharb/call-bind-apply-helpers#info=devDependencies -[npm-badge-png]: https://nodei.co/npm/call-bind-apply-helpers.png?downloads=true&stars=true -[license-image]: https://img.shields.io/npm/l/call-bind-apply-helpers.svg -[license-url]: LICENSE -[downloads-image]: https://img.shields.io/npm/dm/call-bind-apply-helpers.svg -[downloads-url]: https://npm-stat.com/charts.html?package=call-bind-apply-helpers -[codecov-image]: https://codecov.io/gh/ljharb/call-bind-apply-helpers/branch/main/graphs/badge.svg -[codecov-url]: https://app.codecov.io/gh/ljharb/call-bind-apply-helpers/ -[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/call-bind-apply-helpers -[actions-url]: https://github.com/ljharb/call-bind-apply-helpers/actions diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/actualApply.d.ts b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/actualApply.d.ts deleted file mode 100644 index b87286a..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/actualApply.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Reflect.apply; \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/actualApply.js b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/actualApply.js deleted file mode 100644 index ffa5135..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/actualApply.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -var bind = require('function-bind'); - -var $apply = require('./functionApply'); -var $call = require('./functionCall'); -var $reflectApply = require('./reflectApply'); - -/** @type {import('./actualApply')} */ -module.exports = $reflectApply || bind.call($call, $apply); diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/applyBind.d.ts b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/applyBind.d.ts deleted file mode 100644 index d176c1a..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/applyBind.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -import actualApply from './actualApply'; - -type TupleSplitHead = T['length'] extends N - ? T - : T extends [...infer R, any] - ? TupleSplitHead - : never - -type TupleSplitTail = O['length'] extends N - ? T - : T extends [infer F, ...infer R] - ? TupleSplitTail<[...R], N, [...O, F]> - : never - -type TupleSplit = [TupleSplitHead, TupleSplitTail] - -declare function applyBind(...args: TupleSplit, 2>[1]): ReturnType; - -export = applyBind; \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/applyBind.js b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/applyBind.js deleted file mode 100644 index d2b7723..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/applyBind.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -var bind = require('function-bind'); -var $apply = require('./functionApply'); -var actualApply = require('./actualApply'); - -/** @type {import('./applyBind')} */ -module.exports = function applyBind() { - return actualApply(bind, $apply, arguments); -}; diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/functionApply.d.ts b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/functionApply.d.ts deleted file mode 100644 index 1f6e11b..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/functionApply.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Function.prototype.apply; \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/functionApply.js b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/functionApply.js deleted file mode 100644 index c71df9c..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/functionApply.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./functionApply')} */ -module.exports = Function.prototype.apply; diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/functionCall.d.ts b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/functionCall.d.ts deleted file mode 100644 index 15e93df..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/functionCall.d.ts +++ /dev/null @@ -1 +0,0 @@ -export = Function.prototype.call; \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/functionCall.js b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/functionCall.js deleted file mode 100644 index 7a8d873..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/functionCall.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./functionCall')} */ -module.exports = Function.prototype.call; diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/index.d.ts b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/index.d.ts deleted file mode 100644 index 541516b..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/index.d.ts +++ /dev/null @@ -1,64 +0,0 @@ -type RemoveFromTuple< - Tuple extends readonly unknown[], - RemoveCount extends number, - Index extends 1[] = [] -> = Index["length"] extends RemoveCount - ? Tuple - : Tuple extends [infer First, ...infer Rest] - ? RemoveFromTuple - : Tuple; - -type ConcatTuples< - Prefix extends readonly unknown[], - Suffix extends readonly unknown[] -> = [...Prefix, ...Suffix]; - -type ExtractFunctionParams = T extends (this: infer TThis, ...args: infer P extends readonly unknown[]) => infer R - ? { thisArg: TThis; params: P; returnType: R } - : never; - -type BindFunction< - T extends (this: any, ...args: any[]) => any, - TThis, - TBoundArgs extends readonly unknown[], - ReceiverBound extends boolean -> = ExtractFunctionParams extends { - thisArg: infer OrigThis; - params: infer P extends readonly unknown[]; - returnType: infer R; -} - ? ReceiverBound extends true - ? (...args: RemoveFromTuple>) => R extends [OrigThis, ...infer Rest] - ? [TThis, ...Rest] // Replace `this` with `thisArg` - : R - : >>( - thisArg: U, - ...args: RemainingArgs - ) => R extends [OrigThis, ...infer Rest] - ? [U, ...ConcatTuples] // Preserve bound args in return type - : R - : never; - -declare function callBind< - const T extends (this: any, ...args: any[]) => any, - Extracted extends ExtractFunctionParams, - const TBoundArgs extends Partial & readonly unknown[], - const TThis extends Extracted["thisArg"] ->( - args: [fn: T, thisArg: TThis, ...boundArgs: TBoundArgs] -): BindFunction; - -declare function callBind< - const T extends (this: any, ...args: any[]) => any, - Extracted extends ExtractFunctionParams, - const TBoundArgs extends Partial & readonly unknown[] ->( - args: [fn: T, ...boundArgs: TBoundArgs] -): BindFunction; - -declare function callBind( - args: [fn: Exclude, ...rest: TArgs] -): never; - -// export as namespace callBind; -export = callBind; diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/index.js b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/index.js deleted file mode 100644 index 2f6dab4..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/index.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -var bind = require('function-bind'); -var $TypeError = require('es-errors/type'); - -var $call = require('./functionCall'); -var $actualApply = require('./actualApply'); - -/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */ -module.exports = function callBindBasic(args) { - if (args.length < 1 || typeof args[0] !== 'function') { - throw new $TypeError('a function is required'); - } - return $actualApply(bind, $call, args); -}; diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/package.json b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/package.json deleted file mode 100644 index 923b8be..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/package.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "name": "call-bind-apply-helpers", - "version": "1.0.2", - "description": "Helper functions around Function call/apply/bind, for use in `call-bind`", - "main": "index.js", - "exports": { - ".": "./index.js", - "./actualApply": "./actualApply.js", - "./applyBind": "./applyBind.js", - "./functionApply": "./functionApply.js", - "./functionCall": "./functionCall.js", - "./reflectApply": "./reflectApply.js", - "./package.json": "./package.json" - }, - "scripts": { - "prepack": "npmignore --auto --commentLines=auto", - "prepublish": "not-in-publish || npm run prepublishOnly", - "prepublishOnly": "safe-publish-latest", - "prelint": "evalmd README.md", - "lint": "eslint --ext=.js,.mjs .", - "postlint": "tsc -p . && attw -P", - "pretest": "npm run lint", - "tests-only": "nyc tape 'test/**/*.js'", - "test": "npm run tests-only", - "posttest": "npx npm@'>=10.2' audit --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-apply-helpers.git" - }, - "author": "Jordan Harband ", - "license": "MIT", - "bugs": { - "url": "https://github.com/ljharb/call-bind-apply-helpers/issues" - }, - "homepage": "https://github.com/ljharb/call-bind-apply-helpers#readme", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "devDependencies": { - "@arethetypeswrong/cli": "^0.17.3", - "@ljharb/eslint-config": "^21.1.1", - "@ljharb/tsconfig": "^0.2.3", - "@types/for-each": "^0.3.3", - "@types/function-bind": "^1.1.10", - "@types/object-inspect": "^1.13.0", - "@types/tape": "^5.8.1", - "auto-changelog": "^2.5.0", - "encoding": "^0.1.13", - "es-value-fixtures": "^1.7.1", - "eslint": "=8.8.0", - "evalmd": "^0.0.19", - "for-each": "^0.3.5", - "has-strict-mode": "^1.1.0", - "in-publish": "^2.0.1", - "npmignore": "^0.3.1", - "nyc": "^10.3.2", - "object-inspect": "^1.13.4", - "safe-publish-latest": "^2.0.0", - "tape": "^5.9.0", - "typescript": "next" - }, - "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/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/reflectApply.d.ts b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/reflectApply.d.ts deleted file mode 100644 index 6b2ae76..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/reflectApply.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare const reflectApply: false | typeof Reflect.apply; - -export = reflectApply; diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/reflectApply.js b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/reflectApply.js deleted file mode 100644 index 3d03caa..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/reflectApply.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -/** @type {import('./reflectApply')} */ -module.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply; diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/test/index.js b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/test/index.js deleted file mode 100644 index 1cdc89e..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/test/index.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; - -var callBind = require('../'); -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'); - -test('callBindBasic', function (t) { - forEach(v.nonFunctions, function (nonFunction) { - t['throws']( - // @ts-expect-error - function () { callBind([nonFunction]); }, - TypeError, - inspect(nonFunction) + ' is not a function' - ); - }); - - var sentinel = { sentinel: true }; - /** @type {(this: T, a: A, b: B) => [T | undefined, A, B]} */ - 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'); - - /** type {(thisArg: unknown, a: number, b: number) => [unknown, number, number]} */ - var bound = callBind([func]); - /** type {((a: number, b: number) => [typeof sentinel, typeof a, typeof b])} */ - var boundR = callBind([func, sentinel]); - /** type {((b: number) => [typeof sentinel, number, typeof b])} */ - var boundArg = callBind([func, sentinel, /** @type {const} */ (1)]); - - // @ts-expect-error - t.deepEqual(bound(), [undefined, undefined, undefined], 'bound func with no args'); - - // @ts-expect-error - t.deepEqual(func(), [undefined, undefined, undefined], 'unbound func with too few args'); - // @ts-expect-error - t.deepEqual(bound(1, 2), [hasStrictMode ? 1 : Object(1), 2, undefined], 'bound func too few args'); - // @ts-expect-error - t.deepEqual(boundR(), [sentinel, undefined, undefined], 'bound func with receiver, with too few args'); - // @ts-expect-error - t.deepEqual(boundArg(), [sentinel, 1, undefined], 'bound func with receiver and arg, with too few args'); - - t.deepEqual(func(1, 2), [undefined, 1, 2], 'unbound func with right args'); - t.deepEqual(bound(1, 2, 3), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with right args'); - t.deepEqual(boundR(1, 2), [sentinel, 1, 2], 'bound func with receiver, with right args'); - t.deepEqual(boundArg(2), [sentinel, 1, 2], 'bound func with receiver and arg, with right arg'); - - // @ts-expect-error - t.deepEqual(func(1, 2, 3), [undefined, 1, 2], 'unbound func with too many args'); - // @ts-expect-error - t.deepEqual(bound(1, 2, 3, 4), [hasStrictMode ? 1 : Object(1), 2, 3], 'bound func with too many args'); - // @ts-expect-error - t.deepEqual(boundR(1, 2, 3), [sentinel, 1, 2], 'bound func with receiver, with too many args'); - // @ts-expect-error - t.deepEqual(boundArg(2, 3), [sentinel, 1, 2], 'bound func with receiver and arg, with too many args'); - - t.end(); -}); diff --git a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/tsconfig.json b/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/tsconfig.json deleted file mode 100644 index aef9993..0000000 --- a/.claude/skills/教学日程查询/node_modules/call-bind-apply-helpers/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@ljharb/tsconfig", - "compilerOptions": { - "target": "es2021", - }, - "exclude": [ - "coverage", - ], -} \ No newline at end of file diff --git a/.claude/skills/教学日程查询/node_modules/combined-stream/License b/.claude/skills/教学日程查询/node_modules/combined-stream/License deleted file mode 100644 index 4804b7a..0000000 --- a/.claude/skills/教学日程查询/node_modules/combined-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/.claude/skills/教学日程查询/node_modules/combined-stream/Readme.md b/.claude/skills/教学日程查询/node_modules/combined-stream/Readme.md deleted file mode 100644 index 9e367b5..0000000 --- a/.claude/skills/教学日程查询/node_modules/combined-stream/Readme.md +++ /dev/null @@ -1,138 +0,0 @@ -# combined-stream - -A stream that emits multiple other streams one after another. - -**NB** Currently `combined-stream` works with streams version 1 only. There is ongoing effort to switch this library to streams version 2. Any help is welcome. :) Meanwhile you can explore other libraries that provide streams2 support with more or less compatibility with `combined-stream`. - -- [combined-stream2](https://www.npmjs.com/package/combined-stream2): A drop-in streams2-compatible replacement for the combined-stream module. - -- [multistream](https://www.npmjs.com/package/multistream): A stream that emits multiple other streams one after another. - -## Installation - -``` bash -npm install combined-stream -``` - -## Usage - -Here is a simple example that shows how you can use combined-stream to combine -two files into one: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -While the example above works great, it will pause all source streams until -they are needed. If you don't want that to happen, you can set `pauseStreams` -to `false`: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create({pauseStreams: false}); -combinedStream.append(fs.createReadStream('file1.txt')); -combinedStream.append(fs.createReadStream('file2.txt')); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -However, what if you don't have all the source streams yet, or you don't want -to allocate the resources (file descriptors, memory, etc.) for them right away? -Well, in that case you can simply provide a callback that supplies the stream -by calling a `next()` function: - -``` javascript -var CombinedStream = require('combined-stream'); -var fs = require('fs'); - -var combinedStream = CombinedStream.create(); -combinedStream.append(function(next) { - next(fs.createReadStream('file1.txt')); -}); -combinedStream.append(function(next) { - next(fs.createReadStream('file2.txt')); -}); - -combinedStream.pipe(fs.createWriteStream('combined.txt')); -``` - -## API - -### CombinedStream.create([options]) - -Returns a new combined stream object. Available options are: - -* `maxDataSize` -* `pauseStreams` - -The effect of those options is described below. - -### combinedStream.pauseStreams = `true` - -Whether to apply back pressure to the underlaying streams. If set to `false`, -the underlaying streams will never be paused. If set to `true`, the -underlaying streams will be paused right after being appended, as well as when -`delayedStream.pipe()` wants to throttle. - -### combinedStream.maxDataSize = `2 * 1024 * 1024` - -The maximum amount of bytes (or characters) to buffer for all source streams. -If this value is exceeded, `combinedStream` emits an `'error'` event. - -### combinedStream.dataSize = `0` - -The amount of bytes (or characters) currently buffered by `combinedStream`. - -### combinedStream.append(stream) - -Appends the given `stream` to the combinedStream object. If `pauseStreams` is -set to `true, this stream will also be paused right away. - -`streams` can also be a function that takes one parameter called `next`. `next` -is a function that must be invoked in order to provide the `next` stream, see -example above. - -Regardless of how the `stream` is appended, combined-stream always attaches an -`'error'` listener to it, so you don't have to do that manually. - -Special case: `stream` can also be a String or Buffer. - -### combinedStream.write(data) - -You should not call this, `combinedStream` takes care of piping the appended -streams into itself for you. - -### combinedStream.resume() - -Causes `combinedStream` to start drain the streams it manages. The function is -idempotent, and also emits a `'resume'` event each time which usually goes to -the stream that is currently being drained. - -### combinedStream.pause(); - -If `combinedStream.pauseStreams` is set to `false`, this does nothing. -Otherwise a `'pause'` event is emitted, this goes to the stream that is -currently being drained, so you can use it to apply back pressure. - -### combinedStream.end(); - -Sets `combinedStream.writable` to false, emits an `'end'` event, and removes -all streams from the queue. - -### combinedStream.destroy(); - -Same as `combinedStream.end()`, except it emits a `'close'` event instead of -`'end'`. - -## License - -combined-stream is licensed under the MIT license. diff --git a/.claude/skills/教学日程查询/node_modules/combined-stream/lib/combined_stream.js b/.claude/skills/教学日程查询/node_modules/combined-stream/lib/combined_stream.js deleted file mode 100644 index 125f097..0000000 --- a/.claude/skills/教学日程查询/node_modules/combined-stream/lib/combined_stream.js +++ /dev/null @@ -1,208 +0,0 @@ -var util = require('util'); -var Stream = require('stream').Stream; -var DelayedStream = require('delayed-stream'); - -module.exports = CombinedStream; -function CombinedStream() { - this.writable = false; - this.readable = true; - this.dataSize = 0; - this.maxDataSize = 2 * 1024 * 1024; - this.pauseStreams = true; - - this._released = false; - this._streams = []; - this._currentStream = null; - this._insideLoop = false; - this._pendingNext = false; -} -util.inherits(CombinedStream, Stream); - -CombinedStream.create = function(options) { - var combinedStream = new this(); - - options = options || {}; - for (var option in options) { - combinedStream[option] = options[option]; - } - - return combinedStream; -}; - -CombinedStream.isStreamLike = function(stream) { - return (typeof stream !== 'function') - && (typeof stream !== 'string') - && (typeof stream !== 'boolean') - && (typeof stream !== 'number') - && (!Buffer.isBuffer(stream)); -}; - -CombinedStream.prototype.append = function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - - if (isStreamLike) { - if (!(stream instanceof DelayedStream)) { - var newStream = DelayedStream.create(stream, { - maxDataSize: Infinity, - pauseStream: this.pauseStreams, - }); - stream.on('data', this._checkDataSize.bind(this)); - stream = newStream; - } - - this._handleErrors(stream); - - if (this.pauseStreams) { - stream.pause(); - } - } - - this._streams.push(stream); - return this; -}; - -CombinedStream.prototype.pipe = function(dest, options) { - Stream.prototype.pipe.call(this, dest, options); - this.resume(); - return dest; -}; - -CombinedStream.prototype._getNext = function() { - this._currentStream = null; - - if (this._insideLoop) { - this._pendingNext = true; - return; // defer call - } - - this._insideLoop = true; - try { - do { - this._pendingNext = false; - this._realGetNext(); - } while (this._pendingNext); - } finally { - this._insideLoop = false; - } -}; - -CombinedStream.prototype._realGetNext = function() { - var stream = this._streams.shift(); - - - if (typeof stream == 'undefined') { - this.end(); - return; - } - - if (typeof stream !== 'function') { - this._pipeNext(stream); - return; - } - - var getStream = stream; - getStream(function(stream) { - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('data', this._checkDataSize.bind(this)); - this._handleErrors(stream); - } - - this._pipeNext(stream); - }.bind(this)); -}; - -CombinedStream.prototype._pipeNext = function(stream) { - this._currentStream = stream; - - var isStreamLike = CombinedStream.isStreamLike(stream); - if (isStreamLike) { - stream.on('end', this._getNext.bind(this)); - stream.pipe(this, {end: false}); - return; - } - - var value = stream; - this.write(value); - this._getNext(); -}; - -CombinedStream.prototype._handleErrors = function(stream) { - var self = this; - stream.on('error', function(err) { - self._emitError(err); - }); -}; - -CombinedStream.prototype.write = function(data) { - this.emit('data', data); -}; - -CombinedStream.prototype.pause = function() { - if (!this.pauseStreams) { - return; - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); - this.emit('pause'); -}; - -CombinedStream.prototype.resume = function() { - if (!this._released) { - this._released = true; - this.writable = true; - this._getNext(); - } - - if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); - this.emit('resume'); -}; - -CombinedStream.prototype.end = function() { - this._reset(); - this.emit('end'); -}; - -CombinedStream.prototype.destroy = function() { - this._reset(); - this.emit('close'); -}; - -CombinedStream.prototype._reset = function() { - this.writable = false; - this._streams = []; - this._currentStream = null; -}; - -CombinedStream.prototype._checkDataSize = function() { - this._updateDataSize(); - if (this.dataSize <= this.maxDataSize) { - return; - } - - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; - this._emitError(new Error(message)); -}; - -CombinedStream.prototype._updateDataSize = function() { - this.dataSize = 0; - - var self = this; - this._streams.forEach(function(stream) { - if (!stream.dataSize) { - return; - } - - self.dataSize += stream.dataSize; - }); - - if (this._currentStream && this._currentStream.dataSize) { - this.dataSize += this._currentStream.dataSize; - } -}; - -CombinedStream.prototype._emitError = function(err) { - this._reset(); - this.emit('error', err); -}; diff --git a/.claude/skills/教学日程查询/node_modules/combined-stream/package.json b/.claude/skills/教学日程查询/node_modules/combined-stream/package.json deleted file mode 100644 index 6982b6d..0000000 --- a/.claude/skills/教学日程查询/node_modules/combined-stream/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "author": "Felix Geisendörfer (http://debuggable.com/)", - "name": "combined-stream", - "description": "A stream that emits multiple other streams one after another.", - "version": "1.0.8", - "homepage": "https://github.com/felixge/node-combined-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-combined-stream.git" - }, - "main": "./lib/combined_stream", - "scripts": { - "test": "node test/run.js" - }, - "engines": { - "node": ">= 0.8" - }, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "devDependencies": { - "far": "~0.0.7" - }, - "license": "MIT" -} diff --git a/.claude/skills/教学日程查询/node_modules/combined-stream/yarn.lock b/.claude/skills/教学日程查询/node_modules/combined-stream/yarn.lock deleted file mode 100644 index 7edf418..0000000 --- a/.claude/skills/教学日程查询/node_modules/combined-stream/yarn.lock +++ /dev/null @@ -1,17 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - -far@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/far/-/far-0.0.7.tgz#01c1fd362bcd26ce9cf161af3938aa34619f79a7" - dependencies: - oop "0.0.3" - -oop@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/oop/-/oop-0.0.3.tgz#70fa405a5650891a194fdc82ca68dad6dabf4401" diff --git a/.claude/skills/教学日程查询/node_modules/delayed-stream/.npmignore b/.claude/skills/教学日程查询/node_modules/delayed-stream/.npmignore deleted file mode 100644 index 9daeafb..0000000 --- a/.claude/skills/教学日程查询/node_modules/delayed-stream/.npmignore +++ /dev/null @@ -1 +0,0 @@ -test diff --git a/.claude/skills/教学日程查询/node_modules/delayed-stream/License b/.claude/skills/教学日程查询/node_modules/delayed-stream/License deleted file mode 100644 index 4804b7a..0000000 --- a/.claude/skills/教学日程查询/node_modules/delayed-stream/License +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Debuggable Limited - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/.claude/skills/教学日程查询/node_modules/delayed-stream/Makefile b/.claude/skills/教学日程查询/node_modules/delayed-stream/Makefile deleted file mode 100644 index b4ff85a..0000000 --- a/.claude/skills/教学日程查询/node_modules/delayed-stream/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -SHELL := /bin/bash - -test: - @./test/run.js - -.PHONY: test - diff --git a/.claude/skills/教学日程查询/node_modules/delayed-stream/Readme.md b/.claude/skills/教学日程查询/node_modules/delayed-stream/Readme.md deleted file mode 100644 index aca36f9..0000000 --- a/.claude/skills/教学日程查询/node_modules/delayed-stream/Readme.md +++ /dev/null @@ -1,141 +0,0 @@ -# delayed-stream - -Buffers events from a stream until you are ready to handle them. - -## Installation - -``` bash -npm install delayed-stream -``` - -## Usage - -The following example shows how to write a http echo server that delays its -response by 1000 ms. - -``` javascript -var DelayedStream = require('delayed-stream'); -var http = require('http'); - -http.createServer(function(req, res) { - var delayed = DelayedStream.create(req); - - setTimeout(function() { - res.writeHead(200); - delayed.pipe(res); - }, 1000); -}); -``` - -If you are not using `Stream#pipe`, you can also manually release the buffered -events by calling `delayedStream.resume()`: - -``` javascript -var delayed = DelayedStream.create(req); - -setTimeout(function() { - // Emit all buffered events and resume underlaying source - delayed.resume(); -}, 1000); -``` - -## Implementation - -In order to use this meta stream properly, here are a few things you should -know about the implementation. - -### Event Buffering / Proxying - -All events of the `source` stream are hijacked by overwriting the `source.emit` -method. Until node implements a catch-all event listener, this is the only way. - -However, delayed-stream still continues to emit all events it captures on the -`source`, regardless of whether you have released the delayed stream yet or -not. - -Upon creation, delayed-stream captures all `source` events and stores them in -an internal event buffer. Once `delayedStream.release()` is called, all -buffered events are emitted on the `delayedStream`, and the event buffer is -cleared. After that, delayed-stream merely acts as a proxy for the underlaying -source. - -### Error handling - -Error events on `source` are buffered / proxied just like any other events. -However, `delayedStream.create` attaches a no-op `'error'` listener to the -`source`. This way you only have to handle errors on the `delayedStream` -object, rather than in two places. - -### Buffer limits - -delayed-stream provides a `maxDataSize` property that can be used to limit -the amount of data being buffered. In order to protect you from bad `source` -streams that don't react to `source.pause()`, this feature is enabled by -default. - -## API - -### DelayedStream.create(source, [options]) - -Returns a new `delayedStream`. Available options are: - -* `pauseStream` -* `maxDataSize` - -The description for those properties can be found below. - -### delayedStream.source - -The `source` stream managed by this object. This is useful if you are -passing your `delayedStream` around, and you still want to access properties -on the `source` object. - -### delayedStream.pauseStream = true - -Whether to pause the underlaying `source` when calling -`DelayedStream.create()`. Modifying this property afterwards has no effect. - -### delayedStream.maxDataSize = 1024 * 1024 - -The amount of data to buffer before emitting an `error`. - -If the underlaying source is emitting `Buffer` objects, the `maxDataSize` -refers to bytes. - -If the underlaying source is emitting JavaScript strings, the size refers to -characters. - -If you know what you are doing, you can set this property to `Infinity` to -disable this feature. You can also modify this property during runtime. - -### delayedStream.dataSize = 0 - -The amount of data buffered so far. - -### delayedStream.readable - -An ECMA5 getter that returns the value of `source.readable`. - -### delayedStream.resume() - -If the `delayedStream` has not been released so far, `delayedStream.release()` -is called. - -In either case, `source.resume()` is called. - -### delayedStream.pause() - -Calls `source.pause()`. - -### delayedStream.pipe(dest) - -Calls `delayedStream.resume()` and then proxies the arguments to `source.pipe`. - -### delayedStream.release() - -Emits and clears all events that have been buffered up so far. This does not -resume the underlaying source, use `delayedStream.resume()` instead. - -## License - -delayed-stream is licensed under the MIT license. diff --git a/.claude/skills/教学日程查询/node_modules/delayed-stream/lib/delayed_stream.js b/.claude/skills/教学日程查询/node_modules/delayed-stream/lib/delayed_stream.js deleted file mode 100644 index b38fc85..0000000 --- a/.claude/skills/教学日程查询/node_modules/delayed-stream/lib/delayed_stream.js +++ /dev/null @@ -1,107 +0,0 @@ -var Stream = require('stream').Stream; -var util = require('util'); - -module.exports = DelayedStream; -function DelayedStream() { - this.source = null; - this.dataSize = 0; - this.maxDataSize = 1024 * 1024; - this.pauseStream = true; - - this._maxDataSizeExceeded = false; - this._released = false; - this._bufferedEvents = []; -} -util.inherits(DelayedStream, Stream); - -DelayedStream.create = function(source, options) { - var delayedStream = new this(); - - options = options || {}; - for (var option in options) { - delayedStream[option] = options[option]; - } - - delayedStream.source = source; - - var realEmit = source.emit; - source.emit = function() { - delayedStream._handleEmit(arguments); - return realEmit.apply(source, arguments); - }; - - source.on('error', function() {}); - if (delayedStream.pauseStream) { - source.pause(); - } - - return delayedStream; -}; - -Object.defineProperty(DelayedStream.prototype, 'readable', { - configurable: true, - enumerable: true, - get: function() { - return this.source.readable; - } -}); - -DelayedStream.prototype.setEncoding = function() { - return this.source.setEncoding.apply(this.source, arguments); -}; - -DelayedStream.prototype.resume = function() { - if (!this._released) { - this.release(); - } - - this.source.resume(); -}; - -DelayedStream.prototype.pause = function() { - this.source.pause(); -}; - -DelayedStream.prototype.release = function() { - this._released = true; - - this._bufferedEvents.forEach(function(args) { - this.emit.apply(this, args); - }.bind(this)); - this._bufferedEvents = []; -}; - -DelayedStream.prototype.pipe = function() { - var r = Stream.prototype.pipe.apply(this, arguments); - this.resume(); - return r; -}; - -DelayedStream.prototype._handleEmit = function(args) { - if (this._released) { - this.emit.apply(this, args); - return; - } - - if (args[0] === 'data') { - this.dataSize += args[1].length; - this._checkIfMaxDataSizeExceeded(); - } - - this._bufferedEvents.push(args); -}; - -DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { - if (this._maxDataSizeExceeded) { - return; - } - - if (this.dataSize <= this.maxDataSize) { - return; - } - - this._maxDataSizeExceeded = true; - var message = - 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' - this.emit('error', new Error(message)); -}; diff --git a/.claude/skills/教学日程查询/node_modules/delayed-stream/package.json b/.claude/skills/教学日程查询/node_modules/delayed-stream/package.json deleted file mode 100644 index eea3291..0000000 --- a/.claude/skills/教学日程查询/node_modules/delayed-stream/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "author": "Felix Geisendörfer (http://debuggable.com/)", - "contributors": [ - "Mike Atkins " - ], - "name": "delayed-stream", - "description": "Buffers events from a stream until you are ready to handle them.", - "license": "MIT", - "version": "1.0.0", - "homepage": "https://github.com/felixge/node-delayed-stream", - "repository": { - "type": "git", - "url": "git://github.com/felixge/node-delayed-stream.git" - }, - "main": "./lib/delayed_stream", - "engines": { - "node": ">=0.4.0" - }, - "scripts": { - "test": "make test" - }, - "dependencies": {}, - "devDependencies": { - "fake": "0.2.0", - "far": "0.0.1" - } -} diff --git a/.claude/skills/教学日程查询/node_modules/dotenv/CHANGELOG.md b/.claude/skills/教学日程查询/node_modules/dotenv/CHANGELOG.md deleted file mode 100644 index 8b80dd6..0000000 --- a/.claude/skills/教学日程查询/node_modules/dotenv/CHANGELOG.md +++ /dev/null @@ -1,520 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. - -## [Unreleased](https://github.com/motdotla/dotenv/compare/v16.6.1...master) - -## [16.6.1](https://github.com/motdotla/dotenv/compare/v16.6.0...v16.6.1) (2025-06-27) - -### Changed - -- Default `quiet` to true – hiding the runtime log message ([#874](https://github.com/motdotla/dotenv/pull/874)) -- NOTICE: 17.0.0 will be released with quiet defaulting to false. Use `config({ quiet: true })` to suppress. -- And check out the new [dotenvx](https://github.com/dotenvx/dotenvx). As coding workflows evolve and agents increasingly handle secrets, encrypted .env files offer a much safer way to deploy both agents and code together with secure secrets. Simply switch `require('dotenv').config()` for `require('@dotenvx/dotenvx').config()`. - -## [16.6.0](https://github.com/motdotla/dotenv/compare/v16.5.0...v16.6.0) (2025-06-26) - -### Added - -- Default log helpful message `[dotenv@16.6.0] injecting env (1) from .env` ([#870](https://github.com/motdotla/dotenv/pull/870)) -- Use `{ quiet: true }` to suppress -- Aligns dotenv more closely with [dotenvx](https://github.com/dotenvx/dotenvx). - -## [16.5.0](https://github.com/motdotla/dotenv/compare/v16.4.7...v16.5.0) (2025-04-07) - -### Added - -- 🎉 Added new sponsor [Graphite](https://graphite.dev/?utm_source=github&utm_medium=repo&utm_campaign=dotenv) - *the AI developer productivity platform helping teams on GitHub ship higher quality software, faster*. - -> [!TIP] -> **[Become a sponsor](https://github.com/sponsors/motdotla)** -> -> The dotenvx README is viewed thousands of times DAILY on GitHub and NPM. -> Sponsoring dotenv is a great way to get in front of developers and give back to the developer community at the same time. - -### Changed - -- Remove `_log` method. Use `_debug` [#862](https://github.com/motdotla/dotenv/pull/862) - -## [16.4.7](https://github.com/motdotla/dotenv/compare/v16.4.6...v16.4.7) (2024-12-03) - -### Changed - -- Ignore `.tap` folder when publishing. (oops, sorry about that everyone. - @motdotla) [#848](https://github.com/motdotla/dotenv/pull/848) - -## [16.4.6](https://github.com/motdotla/dotenv/compare/v16.4.5...v16.4.6) (2024-12-02) - -### Changed - -- Clean up stale dev dependencies [#847](https://github.com/motdotla/dotenv/pull/847) -- Various README updates clarifying usage and alternative solutions using [dotenvx](https://github.com/dotenvx/dotenvx) - -## [16.4.5](https://github.com/motdotla/dotenv/compare/v16.4.4...v16.4.5) (2024-02-19) - -### Changed - -- 🐞 Fix recent regression when using `path` option. return to historical behavior: do not attempt to auto find `.env` if `path` set. (regression was introduced in `16.4.3`) [#814](https://github.com/motdotla/dotenv/pull/814) - -## [16.4.4](https://github.com/motdotla/dotenv/compare/v16.4.3...v16.4.4) (2024-02-13) - -### Changed - -- 🐞 Replaced chaining operator `?.` with old school `&&` (fixing node 12 failures) [#812](https://github.com/motdotla/dotenv/pull/812) - -## [16.4.3](https://github.com/motdotla/dotenv/compare/v16.4.2...v16.4.3) (2024-02-12) - -### Changed - -- Fixed processing of multiple files in `options.path` [#805](https://github.com/motdotla/dotenv/pull/805) - -## [16.4.2](https://github.com/motdotla/dotenv/compare/v16.4.1...v16.4.2) (2024-02-10) - -### Changed - -- Changed funding link in package.json to [`dotenvx.com`](https://dotenvx.com) - -## [16.4.1](https://github.com/motdotla/dotenv/compare/v16.4.0...v16.4.1) (2024-01-24) - -- Patch support for array as `path` option [#797](https://github.com/motdotla/dotenv/pull/797) - -## [16.4.0](https://github.com/motdotla/dotenv/compare/v16.3.2...v16.4.0) (2024-01-23) - -- Add `error.code` to error messages around `.env.vault` decryption handling [#795](https://github.com/motdotla/dotenv/pull/795) -- Add ability to find `.env.vault` file when filename(s) passed as an array [#784](https://github.com/motdotla/dotenv/pull/784) - -## [16.3.2](https://github.com/motdotla/dotenv/compare/v16.3.1...v16.3.2) (2024-01-18) - -### Added - -- Add debug message when no encoding set [#735](https://github.com/motdotla/dotenv/pull/735) - -### Changed - -- Fix output typing for `populate` [#792](https://github.com/motdotla/dotenv/pull/792) -- Use subarray instead of slice [#793](https://github.com/motdotla/dotenv/pull/793) - -## [16.3.1](https://github.com/motdotla/dotenv/compare/v16.3.0...v16.3.1) (2023-06-17) - -### Added - -- Add missing type definitions for `processEnv` and `DOTENV_KEY` options. [#756](https://github.com/motdotla/dotenv/pull/756) - -## [16.3.0](https://github.com/motdotla/dotenv/compare/v16.2.0...v16.3.0) (2023-06-16) - -### Added - -- Optionally pass `DOTENV_KEY` to options rather than relying on `process.env.DOTENV_KEY`. Defaults to `process.env.DOTENV_KEY` [#754](https://github.com/motdotla/dotenv/pull/754) - -## [16.2.0](https://github.com/motdotla/dotenv/compare/v16.1.4...v16.2.0) (2023-06-15) - -### Added - -- Optionally write to your own target object rather than `process.env`. Defaults to `process.env`. [#753](https://github.com/motdotla/dotenv/pull/753) -- Add import type URL to types file [#751](https://github.com/motdotla/dotenv/pull/751) - -## [16.1.4](https://github.com/motdotla/dotenv/compare/v16.1.3...v16.1.4) (2023-06-04) - -### Added - -- Added `.github/` to `.npmignore` [#747](https://github.com/motdotla/dotenv/pull/747) - -## [16.1.3](https://github.com/motdotla/dotenv/compare/v16.1.2...v16.1.3) (2023-05-31) - -### Removed - -- Removed `browser` keys for `path`, `os`, and `crypto` in package.json. These were set to false incorrectly as of 16.1. Instead, if using dotenv on the front-end make sure to include polyfills for `path`, `os`, and `crypto`. [node-polyfill-webpack-plugin](https://github.com/Richienb/node-polyfill-webpack-plugin) provides these. - -## [16.1.2](https://github.com/motdotla/dotenv/compare/v16.1.1...v16.1.2) (2023-05-31) - -### Changed - -- Exposed private function `_configDotenv` as `configDotenv`. [#744](https://github.com/motdotla/dotenv/pull/744) - -## [16.1.1](https://github.com/motdotla/dotenv/compare/v16.1.0...v16.1.1) (2023-05-30) - -### Added - -- Added type definition for `decrypt` function - -### Changed - -- Fixed `{crypto: false}` in `packageJson.browser` - -## [16.1.0](https://github.com/motdotla/dotenv/compare/v16.0.3...v16.1.0) (2023-05-30) - -### Added - -- Add `populate` convenience method [#733](https://github.com/motdotla/dotenv/pull/733) -- Accept URL as path option [#720](https://github.com/motdotla/dotenv/pull/720) -- Add dotenv to `npm fund` command -- Spanish language README [#698](https://github.com/motdotla/dotenv/pull/698) -- Add `.env.vault` support. 🎉 ([#730](https://github.com/motdotla/dotenv/pull/730)) - -ℹ️ `.env.vault` extends the `.env` file format standard with a localized encrypted vault file. Package it securely with your production code deploys. It's cloud agnostic so that you can deploy your secrets anywhere – without [risky third-party integrations](https://techcrunch.com/2023/01/05/circleci-breach/). [read more](https://github.com/motdotla/dotenv#-deploying) - -### Changed - -- Fixed "cannot resolve 'fs'" error on tools like Replit [#693](https://github.com/motdotla/dotenv/pull/693) - -## [16.0.3](https://github.com/motdotla/dotenv/compare/v16.0.2...v16.0.3) (2022-09-29) - -### Changed - -- Added library version to debug logs ([#682](https://github.com/motdotla/dotenv/pull/682)) - -## [16.0.2](https://github.com/motdotla/dotenv/compare/v16.0.1...v16.0.2) (2022-08-30) - -### Added - -- Export `env-options.js` and `cli-options.js` in package.json for use with downstream [dotenv-expand](https://github.com/motdotla/dotenv-expand) module - -## [16.0.1](https://github.com/motdotla/dotenv/compare/v16.0.0...v16.0.1) (2022-05-10) - -### Changed - -- Minor README clarifications -- Development ONLY: updated devDependencies as recommended for development only security risks ([#658](https://github.com/motdotla/dotenv/pull/658)) - -## [16.0.0](https://github.com/motdotla/dotenv/compare/v15.0.1...v16.0.0) (2022-02-02) - -### Added - -- _Breaking:_ Backtick support 🎉 ([#615](https://github.com/motdotla/dotenv/pull/615)) - -If you had values containing the backtick character, please quote those values with either single or double quotes. - -## [15.0.1](https://github.com/motdotla/dotenv/compare/v15.0.0...v15.0.1) (2022-02-02) - -### Changed - -- Properly parse empty single or double quoted values 🐞 ([#614](https://github.com/motdotla/dotenv/pull/614)) - -## [15.0.0](https://github.com/motdotla/dotenv/compare/v14.3.2...v15.0.0) (2022-01-31) - -`v15.0.0` is a major new release with some important breaking changes. - -### Added - -- _Breaking:_ Multiline parsing support (just works. no need for the flag.) - -### Changed - -- _Breaking:_ `#` marks the beginning of a comment (UNLESS the value is wrapped in quotes. Please update your `.env` files to wrap in quotes any values containing `#`. For example: `SECRET_HASH="something-with-a-#-hash"`). - -..Understandably, (as some teams have noted) this is tedious to do across the entire team. To make it less tedious, we recommend using [dotenv cli](https://github.com/dotenv-org/cli) going forward. It's an optional plugin that will keep your `.env` files in sync between machines, environments, or team members. - -### Removed - -- _Breaking:_ Remove multiline option (just works out of the box now. no need for the flag.) - -## [14.3.2](https://github.com/motdotla/dotenv/compare/v14.3.1...v14.3.2) (2022-01-25) - -### Changed - -- Preserve backwards compatibility on values containing `#` 🐞 ([#603](https://github.com/motdotla/dotenv/pull/603)) - -## [14.3.1](https://github.com/motdotla/dotenv/compare/v14.3.0...v14.3.1) (2022-01-25) - -### Changed - -- Preserve backwards compatibility on exports by re-introducing the prior in-place exports 🐞 ([#606](https://github.com/motdotla/dotenv/pull/606)) - -## [14.3.0](https://github.com/motdotla/dotenv/compare/v14.2.0...v14.3.0) (2022-01-24) - -### Added - -- Add `multiline` option 🎉 ([#486](https://github.com/motdotla/dotenv/pull/486)) - -## [14.2.0](https://github.com/motdotla/dotenv/compare/v14.1.1...v14.2.0) (2022-01-17) - -### Added - -- Add `dotenv_config_override` cli option -- Add `DOTENV_CONFIG_OVERRIDE` command line env option - -## [14.1.1](https://github.com/motdotla/dotenv/compare/v14.1.0...v14.1.1) (2022-01-17) - -### Added - -- Add React gotcha to FAQ on README - -## [14.1.0](https://github.com/motdotla/dotenv/compare/v14.0.1...v14.1.0) (2022-01-17) - -### Added - -- Add `override` option 🎉 ([#595](https://github.com/motdotla/dotenv/pull/595)) - -## [14.0.1](https://github.com/motdotla/dotenv/compare/v14.0.0...v14.0.1) (2022-01-16) - -### Added - -- Log error on failure to load `.env` file ([#594](https://github.com/motdotla/dotenv/pull/594)) - -## [14.0.0](https://github.com/motdotla/dotenv/compare/v13.0.1...v14.0.0) (2022-01-16) - -### Added - -- _Breaking:_ Support inline comments for the parser 🎉 ([#568](https://github.com/motdotla/dotenv/pull/568)) - -## [13.0.1](https://github.com/motdotla/dotenv/compare/v13.0.0...v13.0.1) (2022-01-16) - -### Changed - -* Hide comments and newlines from debug output ([#404](https://github.com/motdotla/dotenv/pull/404)) - -## [13.0.0](https://github.com/motdotla/dotenv/compare/v12.0.4...v13.0.0) (2022-01-16) - -### Added - -* _Breaking:_ Add type file for `config.js` ([#539](https://github.com/motdotla/dotenv/pull/539)) - -## [12.0.4](https://github.com/motdotla/dotenv/compare/v12.0.3...v12.0.4) (2022-01-16) - -### Changed - -* README updates -* Minor order adjustment to package json format - -## [12.0.3](https://github.com/motdotla/dotenv/compare/v12.0.2...v12.0.3) (2022-01-15) - -### Changed - -* Simplified jsdoc for consistency across editors - -## [12.0.2](https://github.com/motdotla/dotenv/compare/v12.0.1...v12.0.2) (2022-01-15) - -### Changed - -* Improve embedded jsdoc type documentation - -## [12.0.1](https://github.com/motdotla/dotenv/compare/v12.0.0...v12.0.1) (2022-01-15) - -### Changed - -* README updates and clarifications - -## [12.0.0](https://github.com/motdotla/dotenv/compare/v11.0.0...v12.0.0) (2022-01-15) - -### Removed - -- _Breaking:_ drop support for Flow static type checker ([#584](https://github.com/motdotla/dotenv/pull/584)) - -### Changed - -- Move types/index.d.ts to lib/main.d.ts ([#585](https://github.com/motdotla/dotenv/pull/585)) -- Typescript cleanup ([#587](https://github.com/motdotla/dotenv/pull/587)) -- Explicit typescript inclusion in package.json ([#566](https://github.com/motdotla/dotenv/pull/566)) - -## [11.0.0](https://github.com/motdotla/dotenv/compare/v10.0.0...v11.0.0) (2022-01-11) - -### Changed - -- _Breaking:_ drop support for Node v10 ([#558](https://github.com/motdotla/dotenv/pull/558)) -- Patch debug option ([#550](https://github.com/motdotla/dotenv/pull/550)) - -## [10.0.0](https://github.com/motdotla/dotenv/compare/v9.0.2...v10.0.0) (2021-05-20) - -### Added - -- Add generic support to parse function -- Allow for import "dotenv/config.js" -- Add support to resolve home directory in path via ~ - -## [9.0.2](https://github.com/motdotla/dotenv/compare/v9.0.1...v9.0.2) (2021-05-10) - -### Changed - -- Support windows newlines with debug mode - -## [9.0.1](https://github.com/motdotla/dotenv/compare/v9.0.0...v9.0.1) (2021-05-08) - -### Changed - -- Updates to README - -## [9.0.0](https://github.com/motdotla/dotenv/compare/v8.6.0...v9.0.0) (2021-05-05) - -### Changed - -- _Breaking:_ drop support for Node v8 - -## [8.6.0](https://github.com/motdotla/dotenv/compare/v8.5.1...v8.6.0) (2021-05-05) - -### Added - -- define package.json in exports - -## [8.5.1](https://github.com/motdotla/dotenv/compare/v8.5.0...v8.5.1) (2021-05-05) - -### Changed - -- updated dev dependencies via npm audit - -## [8.5.0](https://github.com/motdotla/dotenv/compare/v8.4.0...v8.5.0) (2021-05-05) - -### Added - -- allow for `import "dotenv/config"` - -## [8.4.0](https://github.com/motdotla/dotenv/compare/v8.3.0...v8.4.0) (2021-05-05) - -### Changed - -- point to exact types file to work with VS Code - -## [8.3.0](https://github.com/motdotla/dotenv/compare/v8.2.0...v8.3.0) (2021-05-05) - -### Changed - -- _Breaking:_ drop support for Node v8 (mistake to be released as minor bump. later bumped to 9.0.0. see above.) - -## [8.2.0](https://github.com/motdotla/dotenv/compare/v8.1.0...v8.2.0) (2019-10-16) - -### Added - -- TypeScript types - -## [8.1.0](https://github.com/motdotla/dotenv/compare/v8.0.0...v8.1.0) (2019-08-18) - -### Changed - -- _Breaking:_ drop support for Node v6 ([#392](https://github.com/motdotla/dotenv/issues/392)) - -# [8.0.0](https://github.com/motdotla/dotenv/compare/v7.0.0...v8.0.0) (2019-05-02) - -### Changed - -- _Breaking:_ drop support for Node v6 ([#302](https://github.com/motdotla/dotenv/issues/392)) - -## [7.0.0] - 2019-03-12 - -### Fixed - -- Fix removing unbalanced quotes ([#376](https://github.com/motdotla/dotenv/pull/376)) - -### Removed - -- Removed `load` alias for `config` for consistency throughout code and documentation. - -## [6.2.0] - 2018-12-03 - -### Added - -- Support preload configuration via environment variables ([#351](https://github.com/motdotla/dotenv/issues/351)) - -## [6.1.0] - 2018-10-08 - -### Added - -- `debug` option for `config` and `parse` methods will turn on logging - -## [6.0.0] - 2018-06-02 - -### Changed - -- _Breaking:_ drop support for Node v4 ([#304](https://github.com/motdotla/dotenv/pull/304)) - -## [5.0.0] - 2018-01-29 - -### Added - -- Testing against Node v8 and v9 -- Documentation on trim behavior of values -- Documentation on how to use with `import` - -### Changed - -- _Breaking_: default `path` is now `path.resolve(process.cwd(), '.env')` -- _Breaking_: does not write over keys already in `process.env` if the key has a falsy value -- using `const` and `let` instead of `var` - -### Removed - -- Testing against Node v7 - -## [4.0.0] - 2016-12-23 - -### Changed - -- Return Object with parsed content or error instead of false ([#165](https://github.com/motdotla/dotenv/pull/165)). - -### Removed - -- `verbose` option removed in favor of returning result. - -## [3.0.0] - 2016-12-20 - -### Added - -- `verbose` option will log any error messages. Off by default. -- parses email addresses correctly -- allow importing config method directly in ES6 - -### Changed - -- Suppress error messages by default ([#154](https://github.com/motdotla/dotenv/pull/154)) -- Ignoring more files for NPM to make package download smaller - -### Fixed - -- False positive test due to case-sensitive variable ([#124](https://github.com/motdotla/dotenv/pull/124)) - -### Removed - -- `silent` option removed in favor of `verbose` - -## [2.0.0] - 2016-01-20 - -### Added - -- CHANGELOG to ["make it easier for users and contributors to see precisely what notable changes have been made between each release"](http://keepachangelog.com/). Linked to from README -- LICENSE to be more explicit about what was defined in `package.json`. Linked to from README -- Testing nodejs v4 on travis-ci -- added examples of how to use dotenv in different ways -- return parsed object on success rather than boolean true - -### Changed - -- README has shorter description not referencing ruby gem since we don't have or want feature parity - -### Removed - -- Variable expansion and escaping so environment variables are encouraged to be fully orthogonal - -## [1.2.0] - 2015-06-20 - -### Added - -- Preload hook to require dotenv without including it in your code - -### Changed - -- clarified license to be "BSD-2-Clause" in `package.json` - -### Fixed - -- retain spaces in string vars - -## [1.1.0] - 2015-03-31 - -### Added - -- Silent option to silence `console.log` when `.env` missing - -## [1.0.0] - 2015-03-13 - -### Removed - -- support for multiple `.env` files. should always use one `.env` file for the current environment - -[7.0.0]: https://github.com/motdotla/dotenv/compare/v6.2.0...v7.0.0 -[6.2.0]: https://github.com/motdotla/dotenv/compare/v6.1.0...v6.2.0 -[6.1.0]: https://github.com/motdotla/dotenv/compare/v6.0.0...v6.1.0 -[6.0.0]: https://github.com/motdotla/dotenv/compare/v5.0.0...v6.0.0 -[5.0.0]: https://github.com/motdotla/dotenv/compare/v4.0.0...v5.0.0 -[4.0.0]: https://github.com/motdotla/dotenv/compare/v3.0.0...v4.0.0 -[3.0.0]: https://github.com/motdotla/dotenv/compare/v2.0.0...v3.0.0 -[2.0.0]: https://github.com/motdotla/dotenv/compare/v1.2.0...v2.0.0 -[1.2.0]: https://github.com/motdotla/dotenv/compare/v1.1.0...v1.2.0 -[1.1.0]: https://github.com/motdotla/dotenv/compare/v1.0.0...v1.1.0 -[1.0.0]: https://github.com/motdotla/dotenv/compare/v0.4.0...v1.0.0 diff --git a/.claude/skills/教学日程查询/node_modules/dotenv/LICENSE b/.claude/skills/教学日程查询/node_modules/dotenv/LICENSE deleted file mode 100644 index c430ad8..0000000 --- a/.claude/skills/教学日程查询/node_modules/dotenv/LICENSE +++ /dev/null @@ -1,23 +0,0 @@ -Copyright (c) 2015, Scott Motte -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/.claude/skills/教学日程查询/node_modules/dotenv/README-es.md b/.claude/skills/教学日程查询/node_modules/dotenv/README-es.md deleted file mode 100644 index 5fc934d..0000000 --- a/.claude/skills/教学日程查询/node_modules/dotenv/README-es.md +++ /dev/null @@ -1,411 +0,0 @@ -
-🎉 announcing dotenvx. run anywhere, multi-environment, encrypted envs. -
- -  - - - -# dotenv [![NPM version](https://img.shields.io/npm/v/dotenv.svg?style=flat-square)](https://www.npmjs.com/package/dotenv) - -dotenv - -Dotenv es un módulo de dependencia cero que carga las variables de entorno desde un archivo `.env` en [`process.env`](https://nodejs.org/docs/latest/api/process.html#process_process_env). El almacenamiento de la configuración del entorno separado del código está basado en la metodología [The Twelve-Factor App](http://12factor.net/config). - -[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard) -[![LICENSE](https://img.shields.io/github/license/motdotla/dotenv.svg)](LICENSE) - -## Instalación - -```bash -# instalación local (recomendado) -npm install dotenv --save -``` - -O installación con yarn? `yarn add dotenv` - -## Uso - -Cree un archivo `.env` en la raíz de su proyecto: - -```dosini -S3_BUCKET="YOURS3BUCKET" -SECRET_KEY="YOURSECRETKEYGOESHERE" -``` - -Tan prónto como sea posible en su aplicación, importe y configure dotenv: - -```javascript -require('dotenv').config() -console.log(process.env) // elimine esto después que haya confirmado que esta funcionando -``` - -.. o usa ES6? - -```javascript -import * as dotenv from 'dotenv' // vea en https://github.com/motdotla/dotenv#como-uso-dotenv-con-import -// REVISAR LINK DE REFERENCIA DE IMPORTACIÓN -dotenv.config() -import express from 'express' -``` - -Eso es todo. `process.env` ahora tiene las claves y los valores que definiste en tu archivo `.env`: - -```javascript -require('dotenv').config() - -... - -s3.getBucketCors({Bucket: process.env.S3_BUCKET}, function(err, data) {}) -``` - -### Valores multilínea - -Si necesita variables de varias líneas, por ejemplo, claves privadas, ahora se admiten en la versión (`>= v15.0.0`) con saltos de línea: - -```dosini -PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY----- -... -Kh9NV... -... ------END RSA PRIVATE KEY-----" -``` - -Alternativamente, puede usar comillas dobles y usar el carácter `\n`: - -```dosini -PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nKh9NV...\n-----END RSA PRIVATE KEY-----\n" -``` - -### Comentarios - -Los comentarios pueden ser agregados en tu archivo o en la misma línea: - -```dosini -# This is a comment -SECRET_KEY=YOURSECRETKEYGOESHERE # comment -SECRET_HASH="something-with-a-#-hash" -``` - -Los comentarios comienzan donde existe un `#`, entonces, si su valor contiene un `#`, enciérrelo entre comillas. Este es un cambio importante desde la versión `>= v15.0.0` en adelante. - -### Análisis - -El motor que analiza el contenido de su archivo que contiene variables de entorno está disponible para su uso. Este Acepta una Cadena o un Búfer y devolverá un Objeto con las claves y los valores analizados. - -```javascript -const dotenv = require('dotenv') -const buf = Buffer.from('BASICO=basico') -const config = dotenv.parse(buf) // devolverá un objeto -console.log(typeof config, config) // objeto { BASICO : 'basico' } -``` - -### Precarga - -Puede usar el `--require` (`-r`) [opción de línea de comando](https://nodejs.org/api/cli.html#-r---require-module) para precargar dotenv. Al hacer esto, no necesita requerir ni cargar dotnev en el código de su aplicación. - -```bash -$ node -r dotenv/config tu_script.js -``` - -Las opciones de configuración a continuación se admiten como argumentos de línea de comandos en el formato `dotenv_config_