Spaces:
Paused
Paused
Object.defineProperty(exports, "__esModule", {value: true});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 (e2) { | |
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(); | |
exports.PERSISTENCY_KEY = PERSISTENCY_KEY; exports.store = store; | |
//# sourceMappingURL=index.js.map |