From b241544082274728c35b9ac27d99c00733d0750b Mon Sep 17 00:00:00 2001 From: Colin Casey Date: Mon, 15 Apr 2024 09:40:47 -0300 Subject: [PATCH] Revert `enum` type change for `PrefixSecurityEnum` --- api/docs/tough-cookie.prefixsecurity.md | 83 ------------------------- api/tough-cookie.api.md | 10 +-- lib/__tests__/cookiePrefixes.spec.ts | 8 +-- lib/cookie/constants.ts | 27 ++++---- lib/cookie/cookieJar.ts | 17 ++--- lib/cookie/index.ts | 2 +- 6 files changed, 31 insertions(+), 116 deletions(-) delete mode 100644 api/docs/tough-cookie.prefixsecurity.md diff --git a/api/docs/tough-cookie.prefixsecurity.md b/api/docs/tough-cookie.prefixsecurity.md deleted file mode 100644 index 8887f1ab..00000000 --- a/api/docs/tough-cookie.prefixsecurity.md +++ /dev/null @@ -1,83 +0,0 @@ - - -[Home](./index.md) > [tough-cookie](./tough-cookie.md) > [PrefixSecurity](./tough-cookie.prefixsecurity.md) - -## PrefixSecurity enum - -Cookie prefixes are a way to indicate that a given cookie was set with a set of attributes simply by inspecting the first few characters of the cookie's name. These are defined in [RFC6265bis - Section 4.1.3](https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-13#section-4.1.3). - -The following values can be used to configure how a [CookieJar](./tough-cookie.cookiejar.md) enforces attribute restrictions for Cookie prefixes. - -**Signature:** - -```typescript -export declare enum PrefixSecurity -``` - -## Enumeration Members - - - - - -
- -Member - - - - -Value - - - - -Description - - -
- -DISABLED - - - - -`"unsafe-disabled"` - - - - -Disables cookie prefix checking. - - -
- -SILENT - - - - -`"silent"` - - - - -Enable cookie prefix checking but silently ignores the cookie if conditions are not met. This is the default configuration for a [CookieJar](./tough-cookie.cookiejar.md). - - -
- -STRICT - - - - -`"strict"` - - - - -Enables cookie prefix checking and will raise an error if conditions are not met. - - -
diff --git a/api/tough-cookie.api.md b/api/tough-cookie.api.md index 5f1cbce7..14777fdf 100644 --- a/api/tough-cookie.api.md +++ b/api/tough-cookie.api.md @@ -281,11 +281,11 @@ export function permuteDomain(domain: string, allowSpecialUseDomain?: boolean): export function permutePath(path: string): string[]; // @public -export enum PrefixSecurity { - DISABLED = "unsafe-disabled", - SILENT = "silent", - STRICT = "strict" -} +export const PrefixSecurityEnum: Readonly<{ + SILENT: "silent"; + STRICT: "strict"; + DISABLED: "unsafe-disabled"; +}>; // @public (undocumented) export class Store { diff --git a/lib/__tests__/cookiePrefixes.spec.ts b/lib/__tests__/cookiePrefixes.spec.ts index 96759fb9..770f53a9 100644 --- a/lib/__tests__/cookiePrefixes.spec.ts +++ b/lib/__tests__/cookiePrefixes.spec.ts @@ -1,4 +1,4 @@ -import { PrefixSecurity } from '../cookie/constants' +import { PrefixSecurityEnum } from '../cookie/constants' import { CookieJar } from '../cookie/cookieJar' let cookieJar: CookieJar @@ -11,7 +11,7 @@ describe('When `prefixSecurity` is enabled for `CookieJar`', () => { cookieJar = new CookieJar(null, { prefixSecurity: 'silent', }) - expect(cookieJar.prefixSecurity).toBe(PrefixSecurity.SILENT) + expect(cookieJar.prefixSecurity).toBe(PrefixSecurityEnum.SILENT) }) describe('__Secure prefix', () => { @@ -106,7 +106,7 @@ describe('When `prefixSecurity` is enabled for `CookieJar`', () => { cookieJar = new CookieJar(null, { prefixSecurity: 'strict', }) - expect(cookieJar.prefixSecurity).toBe(PrefixSecurity.STRICT) + expect(cookieJar.prefixSecurity).toBe(PrefixSecurityEnum.STRICT) }) describe('__Secure prefix', () => { @@ -173,7 +173,7 @@ describe('When `prefixSecurity` is enabled for `CookieJar`', () => { cookieJar = new CookieJar(null, { prefixSecurity: 'unsafe-disabled', }) - expect(cookieJar.prefixSecurity).toBe(PrefixSecurity.DISABLED) + expect(cookieJar.prefixSecurity).toBe(PrefixSecurityEnum.DISABLED) }) describe('__Secure prefix', () => { diff --git a/lib/cookie/constants.ts b/lib/cookie/constants.ts index 335cd5b5..8d740210 100644 --- a/lib/cookie/constants.ts +++ b/lib/cookie/constants.ts @@ -2,23 +2,20 @@ * Cookie prefixes are a way to indicate that a given cookie was set with a set of attributes simply by inspecting the * first few characters of the cookie's name. These are defined in {@link https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis-13#section-4.1.3 | RFC6265bis - Section 4.1.3}. * - * The following values can be used to configure how a {@link CookieJar} enforces attribute restrictions for Cookie prefixes. + * The following values can be used to configure how a {@link CookieJar} enforces attribute restrictions for Cookie prefixes: + * + * - `silent` - Enable cookie prefix checking but silently ignores the cookie if conditions are not met. This is the default configuration for a {@link CookieJar}. + * + * - `strict` - Enables cookie prefix checking and will raise an error if conditions are not met. + * + * - `unsafe-disabled` - Disables cookie prefix checking. * @public */ -export enum PrefixSecurity { - /** - * Enable cookie prefix checking but silently ignores the cookie if conditions are not met. This is the default configuration for a {@link CookieJar}. - */ - SILENT = 'silent', - /** - * Enables cookie prefix checking and will raise an error if conditions are not met. - */ - STRICT = 'strict', - /** - * Disables cookie prefix checking. - */ - DISABLED = 'unsafe-disabled', -} +export const PrefixSecurityEnum = Object.freeze({ + SILENT: 'silent', + STRICT: 'strict', + DISABLED: 'unsafe-disabled', +}) const IP_V6_REGEX = ` \\[?(?: diff --git a/lib/cookie/cookieJar.ts b/lib/cookie/cookieJar.ts index 868d0ef3..2fc9abd9 100644 --- a/lib/cookie/cookieJar.ts +++ b/lib/cookie/cookieJar.ts @@ -18,7 +18,7 @@ import { import { canonicalDomain } from './canonicalDomain' import { IP_V6_REGEX_OBJECT, - PrefixSecurity, + PrefixSecurityEnum, SerializedCookieJar, } from './constants' import { defaultPath } from './defaultPath' @@ -135,7 +135,8 @@ function isHostPrefixConditionMet(cookie: Cookie): boolean { ) } -type PrefixSecurityValue = (typeof PrefixSecurity)[keyof typeof PrefixSecurity] +type PrefixSecurityValue = + (typeof PrefixSecurityEnum)[keyof typeof PrefixSecurityEnum] function getNormalizedPrefixSecurity( prefixSecurity: string, ): PrefixSecurityValue { @@ -143,14 +144,14 @@ function getNormalizedPrefixSecurity( const normalizedPrefixSecurity = prefixSecurity.toLowerCase() /* The three supported options */ switch (normalizedPrefixSecurity) { - case PrefixSecurity.STRICT: - case PrefixSecurity.SILENT: - case PrefixSecurity.DISABLED: + case PrefixSecurityEnum.STRICT: + case PrefixSecurityEnum.SILENT: + case PrefixSecurityEnum.DISABLED: return normalizedPrefixSecurity } } /* Default is SILENT */ - return PrefixSecurity.SILENT + return PrefixSecurityEnum.SILENT } export class CookieJar { @@ -401,9 +402,9 @@ export class CookieJar { /* 6265bis-02 S5.4 Steps 15 & 16 */ const ignoreErrorForPrefixSecurity = - this.prefixSecurity === PrefixSecurity.SILENT + this.prefixSecurity === PrefixSecurityEnum.SILENT const prefixSecurityDisabled = - this.prefixSecurity === PrefixSecurity.DISABLED + this.prefixSecurity === PrefixSecurityEnum.DISABLED /* If prefix checking is not disabled ...*/ if (!prefixSecurityDisabled) { let errorFound = false diff --git a/lib/cookie/index.ts b/lib/cookie/index.ts index 89495df0..7b94bdd4 100644 --- a/lib/cookie/index.ts +++ b/lib/cookie/index.ts @@ -7,7 +7,7 @@ export { ParameterError } from '../validators' export { version } from '../version' export { canonicalDomain } from './canonicalDomain' -export { PrefixSecurity } from './constants' +export { PrefixSecurityEnum } from './constants' export { Cookie } from './cookie' export { cookieCompare } from './cookieCompare' export { CookieJar } from './cookieJar'