Spaces:
Running
Running
| var __create = Object.create; | |
| var __defProp = Object.defineProperty; | |
| var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | |
| var __getOwnPropNames = Object.getOwnPropertyNames; | |
| var __getProtoOf = Object.getPrototypeOf; | |
| var __hasOwnProp = Object.prototype.hasOwnProperty; | |
| var __commonJS = (cb, mod) => function __require() { | |
| return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; | |
| }; | |
| var __copyProps = (to, from, except, desc) => { | |
| if (from && typeof from === "object" || typeof from === "function") { | |
| for (let key of __getOwnPropNames(from)) | |
| if (!__hasOwnProp.call(to, key) && key !== except) | |
| __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | |
| } | |
| return to; | |
| }; | |
| var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( | |
| isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, | |
| mod | |
| )); | |
| // node_modules/set-cookie-parser/lib/set-cookie.js | |
| var require_set_cookie = __commonJS({ | |
| "node_modules/set-cookie-parser/lib/set-cookie.js"(exports, module) { | |
| "use strict"; | |
| var defaultParseOptions = { | |
| decodeValues: true, | |
| map: false, | |
| silent: false | |
| }; | |
| function isNonEmptyString(str) { | |
| return typeof str === "string" && !!str.trim(); | |
| } | |
| function parseString(setCookieValue, options) { | |
| var parts = setCookieValue.split(";").filter(isNonEmptyString); | |
| var nameValuePairStr = parts.shift(); | |
| var parsed = parseNameValuePair(nameValuePairStr); | |
| var name = parsed.name; | |
| var value = parsed.value; | |
| options = options ? Object.assign({}, defaultParseOptions, options) : defaultParseOptions; | |
| try { | |
| value = options.decodeValues ? decodeURIComponent(value) : value; | |
| } catch (e) { | |
| console.error( | |
| "set-cookie-parser encountered an error while decoding a cookie with value '" + value + "'. Set options.decodeValues to false to disable this feature.", | |
| e | |
| ); | |
| } | |
| var cookie = { | |
| name, | |
| value | |
| }; | |
| parts.forEach(function(part) { | |
| var sides = part.split("="); | |
| var key = sides.shift().trimLeft().toLowerCase(); | |
| var value2 = sides.join("="); | |
| if (key === "expires") { | |
| cookie.expires = new Date(value2); | |
| } else if (key === "max-age") { | |
| cookie.maxAge = parseInt(value2, 10); | |
| } else if (key === "secure") { | |
| cookie.secure = true; | |
| } else if (key === "httponly") { | |
| cookie.httpOnly = true; | |
| } else if (key === "samesite") { | |
| cookie.sameSite = value2; | |
| } else { | |
| cookie[key] = value2; | |
| } | |
| }); | |
| return cookie; | |
| } | |
| function parseNameValuePair(nameValuePairStr) { | |
| var name = ""; | |
| var value = ""; | |
| var nameValueArr = nameValuePairStr.split("="); | |
| if (nameValueArr.length > 1) { | |
| name = nameValueArr.shift(); | |
| value = nameValueArr.join("="); | |
| } else { | |
| value = nameValuePairStr; | |
| } | |
| return { name, value }; | |
| } | |
| function parse(input, options) { | |
| options = options ? Object.assign({}, defaultParseOptions, options) : defaultParseOptions; | |
| if (!input) { | |
| if (!options.map) { | |
| return []; | |
| } else { | |
| return {}; | |
| } | |
| } | |
| if (input.headers) { | |
| if (typeof input.headers.getSetCookie === "function") { | |
| input = input.headers.getSetCookie(); | |
| } else if (input.headers["set-cookie"]) { | |
| input = input.headers["set-cookie"]; | |
| } else { | |
| var sch = input.headers[Object.keys(input.headers).find(function(key) { | |
| return key.toLowerCase() === "set-cookie"; | |
| })]; | |
| if (!sch && input.headers.cookie && !options.silent) { | |
| console.warn( | |
| "Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning." | |
| ); | |
| } | |
| input = sch; | |
| } | |
| } | |
| if (!Array.isArray(input)) { | |
| input = [input]; | |
| } | |
| options = options ? Object.assign({}, defaultParseOptions, options) : defaultParseOptions; | |
| if (!options.map) { | |
| return input.filter(isNonEmptyString).map(function(str) { | |
| return parseString(str, options); | |
| }); | |
| } else { | |
| var cookies = {}; | |
| return input.filter(isNonEmptyString).reduce(function(cookies2, str) { | |
| var cookie = parseString(str, options); | |
| cookies2[cookie.name] = cookie; | |
| return cookies2; | |
| }, cookies); | |
| } | |
| } | |
| function splitCookiesString(cookiesString) { | |
| if (Array.isArray(cookiesString)) { | |
| return cookiesString; | |
| } | |
| if (typeof cookiesString !== "string") { | |
| return []; | |
| } | |
| var cookiesStrings = []; | |
| var pos = 0; | |
| var start; | |
| var ch; | |
| var lastComma; | |
| var nextStart; | |
| var cookiesSeparatorFound; | |
| function skipWhitespace() { | |
| while (pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))) { | |
| pos += 1; | |
| } | |
| return pos < cookiesString.length; | |
| } | |
| function notSpecialChar() { | |
| ch = cookiesString.charAt(pos); | |
| return ch !== "=" && ch !== ";" && ch !== ","; | |
| } | |
| while (pos < cookiesString.length) { | |
| start = pos; | |
| cookiesSeparatorFound = false; | |
| while (skipWhitespace()) { | |
| ch = cookiesString.charAt(pos); | |
| if (ch === ",") { | |
| lastComma = pos; | |
| pos += 1; | |
| skipWhitespace(); | |
| nextStart = pos; | |
| while (pos < cookiesString.length && notSpecialChar()) { | |
| pos += 1; | |
| } | |
| if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") { | |
| cookiesSeparatorFound = true; | |
| pos = nextStart; | |
| cookiesStrings.push(cookiesString.substring(start, lastComma)); | |
| start = pos; | |
| } else { | |
| pos = lastComma + 1; | |
| } | |
| } else { | |
| pos += 1; | |
| } | |
| } | |
| if (!cookiesSeparatorFound || pos >= cookiesString.length) { | |
| cookiesStrings.push(cookiesString.substring(start, cookiesString.length)); | |
| } | |
| } | |
| return cookiesStrings; | |
| } | |
| module.exports = parse; | |
| module.exports.parse = parse; | |
| module.exports.parseString = parseString; | |
| module.exports.splitCookiesString = splitCookiesString; | |
| } | |
| }); | |
| // src/store.ts | |
| var import_set_cookie_parser = __toESM(require_set_cookie()); | |
| var PERSISTENCY_KEY = "MSW_COOKIE_STORE"; | |
| function supportsLocalStorage() { | |
| try { | |
| if (localStorage == null) { | |
| return false; | |
| } | |
| const testKey = PERSISTENCY_KEY + "_test"; | |
| localStorage.setItem(testKey, "test"); | |
| localStorage.getItem(testKey); | |
| localStorage.removeItem(testKey); | |
| return true; | |
| } catch (error) { | |
| return false; | |
| } | |
| } | |
| var hasLocalStorageSupport = supportsLocalStorage(); | |
| function isPropertyAccessible(object, method) { | |
| try { | |
| object[method]; | |
| return true; | |
| } catch { | |
| return false; | |
| } | |
| } | |
| var CookieStore = class { | |
| constructor() { | |
| this.store = /* @__PURE__ */ new Map(); | |
| } | |
| add(request, response) { | |
| if (isPropertyAccessible(request, "credentials") && request.credentials === "omit") { | |
| return; | |
| } | |
| const requestUrl = new URL(request.url); | |
| const responseCookies = response.headers.get("set-cookie"); | |
| if (!responseCookies) { | |
| return; | |
| } | |
| const now = Date.now(); | |
| const parsedResponseCookies = (0, import_set_cookie_parser.parse)(responseCookies).map( | |
| ({ maxAge, ...cookie }) => ({ | |
| ...cookie, | |
| expires: maxAge === void 0 ? cookie.expires : new Date(now + maxAge * 1e3), | |
| maxAge | |
| }) | |
| ); | |
| const prevCookies = this.store.get(requestUrl.origin) || /* @__PURE__ */ new Map(); | |
| parsedResponseCookies.forEach((cookie) => { | |
| this.store.set(requestUrl.origin, prevCookies.set(cookie.name, cookie)); | |
| }); | |
| } | |
| get(request) { | |
| this.deleteExpiredCookies(); | |
| const requestUrl = new URL(request.url); | |
| const originCookies = this.store.get(requestUrl.origin) || /* @__PURE__ */ new Map(); | |
| if (!isPropertyAccessible(request, "credentials")) { | |
| return originCookies; | |
| } | |
| switch (request.credentials) { | |
| case "include": { | |
| if (typeof document === "undefined") { | |
| return originCookies; | |
| } | |
| const documentCookies = (0, import_set_cookie_parser.parse)(document.cookie); | |
| documentCookies.forEach((cookie) => { | |
| originCookies.set(cookie.name, cookie); | |
| }); | |
| return originCookies; | |
| } | |
| case "same-origin": { | |
| return originCookies; | |
| } | |
| default: | |
| return /* @__PURE__ */ new Map(); | |
| } | |
| } | |
| getAll() { | |
| this.deleteExpiredCookies(); | |
| return this.store; | |
| } | |
| deleteAll(request) { | |
| const requestUrl = new URL(request.url); | |
| this.store.delete(requestUrl.origin); | |
| } | |
| clear() { | |
| this.store.clear(); | |
| } | |
| hydrate() { | |
| if (!hasLocalStorageSupport) { | |
| return; | |
| } | |
| const persistedCookies = localStorage.getItem(PERSISTENCY_KEY); | |
| if (!persistedCookies) { | |
| return; | |
| } | |
| try { | |
| const parsedCookies = JSON.parse(persistedCookies); | |
| parsedCookies.forEach(([origin, cookies]) => { | |
| this.store.set( | |
| origin, | |
| new Map( | |
| cookies.map(([token, { expires, ...cookie }]) => [ | |
| token, | |
| expires === void 0 ? cookie : { ...cookie, expires: new Date(expires) } | |
| ]) | |
| ) | |
| ); | |
| }); | |
| } catch (error) { | |
| console.warn(` | |
| [virtual-cookie] Failed to parse a stored cookie from the localStorage (key "${PERSISTENCY_KEY}"). | |
| Stored value: | |
| ${localStorage.getItem(PERSISTENCY_KEY)} | |
| Thrown exception: | |
| ${error} | |
| Invalid value has been removed from localStorage to prevent subsequent failed parsing attempts.`); | |
| localStorage.removeItem(PERSISTENCY_KEY); | |
| } | |
| } | |
| persist() { | |
| if (!hasLocalStorageSupport) { | |
| return; | |
| } | |
| const serializedCookies = Array.from(this.store.entries()).map( | |
| ([origin, cookies]) => { | |
| return [origin, Array.from(cookies.entries())]; | |
| } | |
| ); | |
| localStorage.setItem(PERSISTENCY_KEY, JSON.stringify(serializedCookies)); | |
| } | |
| deleteExpiredCookies() { | |
| const now = Date.now(); | |
| this.store.forEach((originCookies, origin) => { | |
| originCookies.forEach(({ expires, name }) => { | |
| if (expires !== void 0 && expires.getTime() <= now) { | |
| originCookies.delete(name); | |
| } | |
| }); | |
| if (originCookies.size === 0) { | |
| this.store.delete(origin); | |
| } | |
| }); | |
| } | |
| }; | |
| var store = new CookieStore(); | |
| export { | |
| PERSISTENCY_KEY, | |
| store | |
| }; | |
| //# sourceMappingURL=index.mjs.map |