1 | var __create = Object.create;
|
2 | var __defProp = Object.defineProperty;
|
3 | var __defProps = Object.defineProperties;
|
4 | var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5 | var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
6 | var __getOwnPropNames = Object.getOwnPropertyNames;
|
7 | var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
8 | var __getProtoOf = Object.getPrototypeOf;
|
9 | var __hasOwnProp = Object.prototype.hasOwnProperty;
|
10 | var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
11 | var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
12 | var __spreadValues = (a, b) => {
|
13 | for (var prop in b || (b = {}))
|
14 | if (__hasOwnProp.call(b, prop))
|
15 | __defNormalProp(a, prop, b[prop]);
|
16 | if (__getOwnPropSymbols)
|
17 | for (var prop of __getOwnPropSymbols(b)) {
|
18 | if (__propIsEnum.call(b, prop))
|
19 | __defNormalProp(a, prop, b[prop]);
|
20 | }
|
21 | return a;
|
22 | };
|
23 | var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
24 | var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
25 | var __export = (target, all) => {
|
26 | for (var name in all)
|
27 | __defProp(target, name, { get: all[name], enumerable: true });
|
28 | };
|
29 | var __reExport = (target, module2, copyDefault, desc) => {
|
30 | if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
31 | for (let key of __getOwnPropNames(module2))
|
32 | if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
33 | __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
34 | }
|
35 | return target;
|
36 | };
|
37 | var __toESM = (module2, isNodeMode) => {
|
38 | return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
39 | };
|
40 | var __toCommonJS = ((cache) => {
|
41 | return (module2, temp) => {
|
42 | return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
43 | };
|
44 | })(typeof WeakMap !== "undefined" ? new WeakMap() : 0);
|
45 | var __async = (__this, __arguments, generator) => {
|
46 | return new Promise((resolve, reject) => {
|
47 | var fulfilled = (value) => {
|
48 | try {
|
49 | step(generator.next(value));
|
50 | } catch (e) {
|
51 | reject(e);
|
52 | }
|
53 | };
|
54 | var rejected = (value) => {
|
55 | try {
|
56 | step(generator.throw(value));
|
57 | } catch (e) {
|
58 | reject(e);
|
59 | }
|
60 | };
|
61 | var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
62 | step((generator = generator.apply(__this, __arguments)).next());
|
63 | });
|
64 | };
|
65 | var src_exports = {};
|
66 | __export(src_exports, {
|
67 | default: () => fetchCookie
|
68 | });
|
69 | var tough = __toESM(require("tough-cookie"), 1);
|
70 | var import_set_cookie_parser = require("set-cookie-parser");
|
71 | function isDomainOrSubdomain(destination, original) {
|
72 | const orig = new URL(original).hostname;
|
73 | const dest = new URL(destination).hostname;
|
74 | return orig === dest || orig.endsWith(`.${dest}`);
|
75 | }
|
76 | const referrerPolicy = new Set([
|
77 | "",
|
78 | "no-referrer",
|
79 | "no-referrer-when-downgrade",
|
80 | "same-origin",
|
81 | "origin",
|
82 | "strict-origin",
|
83 | "origin-when-cross-origin",
|
84 | "strict-origin-when-cross-origin",
|
85 | "unsafe-url"
|
86 | ]);
|
87 | function parseReferrerPolicy(policyHeader) {
|
88 | const policyTokens = policyHeader.split(/[,\s]+/);
|
89 | let policy = "";
|
90 | for (const token of policyTokens) {
|
91 | if (token !== "" && referrerPolicy.has(token)) {
|
92 | policy = token;
|
93 | }
|
94 | }
|
95 | return policy;
|
96 | }
|
97 | function doNothing(init, name) {
|
98 | }
|
99 | function callDeleteMethod(init, name) {
|
100 | init.headers.delete(name);
|
101 | }
|
102 | function deleteFromObject(init, name) {
|
103 | const headers = init.headers;
|
104 | for (const key of Object.keys(headers)) {
|
105 | if (key.toLowerCase() === name) {
|
106 | delete headers[key];
|
107 | }
|
108 | }
|
109 | }
|
110 | function identifyDeleteHeader(init) {
|
111 | if (init.headers == null) {
|
112 | return doNothing;
|
113 | }
|
114 | if (typeof init.headers.delete === "function") {
|
115 | return callDeleteMethod;
|
116 | }
|
117 | return deleteFromObject;
|
118 | }
|
119 | const redirectStatus = new Set([301, 302, 303, 307, 308]);
|
120 | function isRedirect(status) {
|
121 | return redirectStatus.has(status);
|
122 | }
|
123 | function handleRedirect(fetchImpl, init, response) {
|
124 | return __async(this, null, function* () {
|
125 | var _a, _b, _c;
|
126 | switch ((_a = init.redirect) != null ? _a : "follow") {
|
127 | case "error":
|
128 | throw new TypeError(`URI requested responded with a redirect and redirect mode is set to error: ${response.url}`);
|
129 | case "manual":
|
130 | return response;
|
131 | case "follow":
|
132 | break;
|
133 | default:
|
134 | throw new TypeError(`Invalid redirect option: ${init.redirect}`);
|
135 | }
|
136 | const locationUrl = response.headers.get("location");
|
137 | if (locationUrl === null) {
|
138 | return response;
|
139 | }
|
140 | const requestUrl = response.url;
|
141 | const redirectUrl = new URL(locationUrl, requestUrl).toString();
|
142 | const redirectCount = (_b = init.redirectCount) != null ? _b : 0;
|
143 | const maxRedirect = (_c = init.maxRedirect) != null ? _c : 20;
|
144 | if (redirectCount >= maxRedirect) {
|
145 | throw new TypeError(`Reached maximum redirect of ${maxRedirect} for URL: ${requestUrl}`);
|
146 | }
|
147 | init = __spreadProps(__spreadValues({}, init), {
|
148 | redirectCount: redirectCount + 1
|
149 | });
|
150 | const deleteHeader = identifyDeleteHeader(init);
|
151 | if (!isDomainOrSubdomain(requestUrl, redirectUrl)) {
|
152 | for (const name of ["authorization", "www-authenticate", "cookie", "cookie2"]) {
|
153 | deleteHeader(init, name);
|
154 | }
|
155 | }
|
156 | const maybeNodeStreamBody = init.body;
|
157 | const maybeStreamBody = init.body;
|
158 | if (response.status !== 303 && init.body != null && (typeof maybeNodeStreamBody.pipe === "function" || typeof maybeStreamBody.pipeTo === "function")) {
|
159 | throw new TypeError("Cannot follow redirect with body being a readable stream");
|
160 | }
|
161 | if (response.status === 303 || (response.status === 301 || response.status === 302) && init.method === "POST") {
|
162 | init.method = "GET";
|
163 | init.body = void 0;
|
164 | deleteHeader(init, "content-length");
|
165 | }
|
166 | if (response.headers.has("referrer-policy")) {
|
167 | init.referrerPolicy = parseReferrerPolicy(response.headers.get("referrer-policy"));
|
168 | }
|
169 | return yield fetchImpl(redirectUrl, init);
|
170 | });
|
171 | }
|
172 | function addCookiesToRequest(input, init, cookie) {
|
173 | if (cookie === "") {
|
174 | return init;
|
175 | }
|
176 | const maybeRequest = input;
|
177 | const maybeHeaders = init.headers;
|
178 | if (maybeRequest.headers && typeof maybeRequest.headers.append === "function") {
|
179 | maybeRequest.headers.append("cookie", cookie);
|
180 | } else if (maybeHeaders && typeof maybeHeaders.append === "function") {
|
181 | maybeHeaders.append("cookie", cookie);
|
182 | } else {
|
183 | init = __spreadProps(__spreadValues({}, init), { headers: __spreadProps(__spreadValues({}, init.headers), { cookie }) });
|
184 | }
|
185 | return init;
|
186 | }
|
187 | function getCookiesFromResponse(response) {
|
188 | const maybeNodeFetchHeaders = response.headers;
|
189 | if (typeof maybeNodeFetchHeaders.getAll === "function") {
|
190 | return maybeNodeFetchHeaders.getAll("set-cookie");
|
191 | }
|
192 | if (typeof maybeNodeFetchHeaders.raw === "function") {
|
193 | const headers = maybeNodeFetchHeaders.raw();
|
194 | if (Array.isArray(headers["set-cookie"])) {
|
195 | return headers["set-cookie"];
|
196 | }
|
197 | return [];
|
198 | }
|
199 | const cookieString = response.headers.get("set-cookie");
|
200 | if (cookieString !== null) {
|
201 | return (0, import_set_cookie_parser.splitCookiesString)(cookieString);
|
202 | }
|
203 | return [];
|
204 | }
|
205 | function fetchCookie(fetch, jar, ignoreError = true) {
|
206 | const actualFetch = fetch;
|
207 | const actualJar = jar != null ? jar : new tough.CookieJar();
|
208 | function fetchCookieWrapper(input, init) {
|
209 | return __async(this, null, function* () {
|
210 | var _a, _b;
|
211 | const originalInit = init != null ? init : {};
|
212 | init = __spreadProps(__spreadValues({}, init), { redirect: "manual" });
|
213 | const requestUrl = typeof input === "string" ? input : (_a = input.url) != null ? _a : input.href;
|
214 | const cookie = yield actualJar.getCookieString(requestUrl);
|
215 | init = addCookiesToRequest(input, init, cookie);
|
216 | const response = yield actualFetch(input, init);
|
217 | const cookies = getCookiesFromResponse(response);
|
218 | yield Promise.all(cookies.map((cookie2) => __async(this, null, function* () {
|
219 | return yield actualJar.setCookie(cookie2, response.url, { ignoreError });
|
220 | })));
|
221 | if (((_b = init.redirectCount) != null ? _b : 0) > 0) {
|
222 | Object.defineProperty(response, "redirected", { value: true });
|
223 | }
|
224 | if (!isRedirect(response.status)) {
|
225 | return response;
|
226 | }
|
227 | return yield handleRedirect(fetchCookieWrapper, originalInit, response);
|
228 | });
|
229 | }
|
230 | fetchCookieWrapper.toughCookie = tough;
|
231 | return fetchCookieWrapper;
|
232 | }
|
233 | fetchCookie.toughCookie = tough;
|
234 | module.exports = __toCommonJS(src_exports);
|