UNPKG

msw

Version:

Seamless REST/GraphQL API mocking library for browser and Node.js.

287 lines (284 loc) 10.2 kB
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( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); // node_modules/.pnpm/cookie@1.1.1/node_modules/cookie/dist/index.js var require_dist = __commonJS({ "node_modules/.pnpm/cookie@1.1.1/node_modules/cookie/dist/index.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseCookie = parseCookie; exports.parse = parseCookie; exports.stringifyCookie = stringifyCookie; exports.stringifySetCookie = stringifySetCookie; exports.serialize = stringifySetCookie; exports.parseSetCookie = parseSetCookie; exports.stringifySetCookie = stringifySetCookie; exports.serialize = stringifySetCookie; var cookieNameRegExp = /^[\u0021-\u003A\u003C\u003E-\u007E]+$/; var cookieValueRegExp = /^[\u0021-\u003A\u003C-\u007E]*$/; var domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i; var pathValueRegExp = /^[\u0020-\u003A\u003D-\u007E]*$/; var maxAgeRegExp = /^-?\d+$/; var __toString = Object.prototype.toString; var NullObject = /* @__PURE__ */ (() => { const C = function() { }; C.prototype = /* @__PURE__ */ Object.create(null); return C; })(); function parseCookie(str, options) { const obj = new NullObject(); const len = str.length; if (len < 2) return obj; const dec = options?.decode || decode; let index = 0; do { const eqIdx = eqIndex(str, index, len); if (eqIdx === -1) break; const endIdx = endIndex(str, index, len); if (eqIdx > endIdx) { index = str.lastIndexOf(";", eqIdx - 1) + 1; continue; } const key = valueSlice(str, index, eqIdx); if (obj[key] === void 0) { obj[key] = dec(valueSlice(str, eqIdx + 1, endIdx)); } index = endIdx + 1; } while (index < len); return obj; } function stringifyCookie(cookie2, options) { const enc = options?.encode || encodeURIComponent; const cookieStrings = []; for (const name of Object.keys(cookie2)) { const val = cookie2[name]; if (val === void 0) continue; if (!cookieNameRegExp.test(name)) { throw new TypeError(`cookie name is invalid: ${name}`); } const value = enc(val); if (!cookieValueRegExp.test(value)) { throw new TypeError(`cookie val is invalid: ${val}`); } cookieStrings.push(`${name}=${value}`); } return cookieStrings.join("; "); } function stringifySetCookie(_name, _val, _opts) { const cookie2 = typeof _name === "object" ? _name : { ..._opts, name: _name, value: String(_val) }; const options = typeof _val === "object" ? _val : _opts; const enc = options?.encode || encodeURIComponent; if (!cookieNameRegExp.test(cookie2.name)) { throw new TypeError(`argument name is invalid: ${cookie2.name}`); } const value = cookie2.value ? enc(cookie2.value) : ""; if (!cookieValueRegExp.test(value)) { throw new TypeError(`argument val is invalid: ${cookie2.value}`); } let str = cookie2.name + "=" + value; if (cookie2.maxAge !== void 0) { if (!Number.isInteger(cookie2.maxAge)) { throw new TypeError(`option maxAge is invalid: ${cookie2.maxAge}`); } str += "; Max-Age=" + cookie2.maxAge; } if (cookie2.domain) { if (!domainValueRegExp.test(cookie2.domain)) { throw new TypeError(`option domain is invalid: ${cookie2.domain}`); } str += "; Domain=" + cookie2.domain; } if (cookie2.path) { if (!pathValueRegExp.test(cookie2.path)) { throw new TypeError(`option path is invalid: ${cookie2.path}`); } str += "; Path=" + cookie2.path; } if (cookie2.expires) { if (!isDate(cookie2.expires) || !Number.isFinite(cookie2.expires.valueOf())) { throw new TypeError(`option expires is invalid: ${cookie2.expires}`); } str += "; Expires=" + cookie2.expires.toUTCString(); } if (cookie2.httpOnly) { str += "; HttpOnly"; } if (cookie2.secure) { str += "; Secure"; } if (cookie2.partitioned) { str += "; Partitioned"; } if (cookie2.priority) { const priority = typeof cookie2.priority === "string" ? cookie2.priority.toLowerCase() : void 0; switch (priority) { case "low": str += "; Priority=Low"; break; case "medium": str += "; Priority=Medium"; break; case "high": str += "; Priority=High"; break; default: throw new TypeError(`option priority is invalid: ${cookie2.priority}`); } } if (cookie2.sameSite) { const sameSite = typeof cookie2.sameSite === "string" ? cookie2.sameSite.toLowerCase() : cookie2.sameSite; switch (sameSite) { case true: case "strict": str += "; SameSite=Strict"; break; case "lax": str += "; SameSite=Lax"; break; case "none": str += "; SameSite=None"; break; default: throw new TypeError(`option sameSite is invalid: ${cookie2.sameSite}`); } } return str; } function parseSetCookie(str, options) { const dec = options?.decode || decode; const len = str.length; const endIdx = endIndex(str, 0, len); const eqIdx = eqIndex(str, 0, endIdx); const setCookie = eqIdx === -1 ? { name: "", value: dec(valueSlice(str, 0, endIdx)) } : { name: valueSlice(str, 0, eqIdx), value: dec(valueSlice(str, eqIdx + 1, endIdx)) }; let index = endIdx + 1; while (index < len) { const endIdx2 = endIndex(str, index, len); const eqIdx2 = eqIndex(str, index, endIdx2); const attr = eqIdx2 === -1 ? valueSlice(str, index, endIdx2) : valueSlice(str, index, eqIdx2); const val = eqIdx2 === -1 ? void 0 : valueSlice(str, eqIdx2 + 1, endIdx2); switch (attr.toLowerCase()) { case "httponly": setCookie.httpOnly = true; break; case "secure": setCookie.secure = true; break; case "partitioned": setCookie.partitioned = true; break; case "domain": setCookie.domain = val; break; case "path": setCookie.path = val; break; case "max-age": if (val && maxAgeRegExp.test(val)) setCookie.maxAge = Number(val); break; case "expires": if (!val) break; const date = new Date(val); if (Number.isFinite(date.valueOf())) setCookie.expires = date; break; case "priority": if (!val) break; const priority = val.toLowerCase(); if (priority === "low" || priority === "medium" || priority === "high") { setCookie.priority = priority; } break; case "samesite": if (!val) break; const sameSite = val.toLowerCase(); if (sameSite === "lax" || sameSite === "strict" || sameSite === "none") { setCookie.sameSite = sameSite; } break; } index = endIdx2 + 1; } return setCookie; } function endIndex(str, min, len) { const index = str.indexOf(";", min); return index === -1 ? len : index; } function eqIndex(str, min, max) { const index = str.indexOf("=", min); return index < max ? index : -1; } function valueSlice(str, min, max) { let start = min; let end = max; do { const code = str.charCodeAt(start); if (code !== 32 && code !== 9) break; } while (++start < end); while (end > start) { const code = str.charCodeAt(end - 1); if (code !== 32 && code !== 9) break; end--; } return str.slice(start, end); } function decode(str) { if (str.indexOf("%") === -1) return str; try { return decodeURIComponent(str); } catch (e) { return str; } } function isDate(val) { return __toString.call(val) === "[object Date]"; } } }); // src/shims/cookie.ts var allCookie = __toESM(require_dist(), 1); var cookie = allCookie.default || allCookie; var parse = cookie.parse; var serialize = cookie.serialize; var cookie_default = cookie; export { cookie_default as default, parse, serialize };