codigo0/node_modules/happy-dom/lib/cookie/CookieContainer.js
planetazuzu 5d7a6500fe refactor: Fase 1 - Clean Architecture, refactorización modular y eliminación de duplicidades
-  Ticket 1.1: Estructura Clean Architecture en backend
-  Ticket 1.2: Schemas Zod compartidos
-  Ticket 1.3: Refactorización drugs.ts (1362 → 8 archivos modulares)
-  Ticket 1.4: Refactorización procedures.ts (3583 → 6 archivos modulares)
-  Ticket 1.5: Eliminación de duplicidades (~50 líneas)

Cambios principales:
- Creada estructura Clean Architecture en backend/src/
- Schemas Zod compartidos en backend/src/shared/schemas/
- Refactorización modular de drugs y procedures
- Utilidades genéricas en src/utils/ (filter, validation)
- Eliminados scripts obsoletos y documentación antigua
- Corregidos errores: QueryClient, import test-error-handling
- Build verificado y funcionando correctamente
2026-01-25 21:09:47 +01:00

64 lines
2.2 KiB
JavaScript

import DefaultCookie from './DefaultCookie.js';
import CookieExpireUtility from './urilities/CookieExpireUtility.js';
import CookieURLUtility from './urilities/CookieURLUtility.js';
/**
* Cookie Container.
*
* @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie.
* @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie.
*/
export default class CookieContainer {
#cookies = [];
/**
* Adds cookies.
*
* @param cookies Cookies.
*/
addCookies(cookies) {
const indexMap = new Map();
const getKey = (cookie) => `${cookie.key}-${cookie.originURL.hostname}-${cookie.path}-${typeof cookie.value}`;
// Creates a map of cookie key, domain, path and value to index.
for (let i = 0, max = this.#cookies.length; i < max; i++) {
indexMap.set(getKey(this.#cookies[i]), i);
}
for (const cookie of cookies) {
const newCookie = Object.assign({}, DefaultCookie, cookie);
if (newCookie && newCookie.key && newCookie.originURL) {
// Remove existing cookie with same name, domain and path.
const index = indexMap.get(getKey(newCookie));
if (index !== undefined) {
this.#cookies.splice(index, 1);
}
if (!CookieExpireUtility.hasExpired(newCookie)) {
indexMap.set(getKey(newCookie), this.#cookies.length);
this.#cookies.push(newCookie);
}
}
}
}
/**
* Returns cookies.
*
* @param [url] URL.
* @param [httpOnly] "true" if only http cookies should be returned.
* @returns Cookies.
*/
getCookies(url = null, httpOnly = false) {
const cookies = [];
for (const cookie of this.#cookies) {
if (!CookieExpireUtility.hasExpired(cookie) &&
(!httpOnly || !cookie.httpOnly) &&
(!url || CookieURLUtility.cookieMatchesURL(cookie, url || cookie.originURL))) {
cookies.push(cookie);
}
}
return cookies;
}
/**
* Clears all cookies.
*/
clearCookies() {
this.#cookies = [];
}
}
//# sourceMappingURL=CookieContainer.js.map