tough-cookie 6.0.0 → 6.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -428,7 +428,7 @@ var ParameterError = class extends Error {
428
428
  };
429
429
 
430
430
  // lib/version.ts
431
- var version = "6.0.0";
431
+ var version = "6.0.2";
432
432
 
433
433
  // lib/cookie/constants.ts
434
434
  var PrefixSecurityEnum = {
@@ -483,145 +483,114 @@ function formatDate(date) {
483
483
  }
484
484
 
485
485
  // lib/cookie/parseDate.ts
486
- var DATE_DELIM = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/;
487
- var MONTH_TO_NUM = {
488
- jan: 0,
489
- feb: 1,
490
- mar: 2,
491
- apr: 3,
492
- may: 4,
493
- jun: 5,
494
- jul: 6,
495
- aug: 7,
496
- sep: 8,
497
- oct: 9,
498
- nov: 10,
499
- dec: 11
500
- };
501
- function parseDigits(token, minDigits, maxDigits, trailingOK) {
502
- let count = 0;
503
- while (count < token.length) {
504
- const c = token.charCodeAt(count);
505
- if (c <= 47 || c >= 58) {
506
- break;
507
- }
508
- count++;
509
- }
510
- if (count < minDigits || count > maxDigits) {
511
- return;
512
- }
513
- if (!trailingOK && count != token.length) {
514
- return;
515
- }
516
- return parseInt(token.slice(0, count), 10);
517
- }
518
- function parseTime(token) {
519
- const parts = token.split(":");
520
- const result = [0, 0, 0];
521
- if (parts.length !== 3) {
522
- return;
523
- }
524
- for (let i = 0; i < 3; i++) {
525
- const trailingOK = i == 2;
526
- const numPart = parts[i];
527
- if (numPart === void 0) {
528
- return;
529
- }
530
- const num = parseDigits(numPart, 1, 2, trailingOK);
531
- if (num === void 0) {
532
- return;
533
- }
534
- result[i] = num;
535
- }
536
- return result;
537
- }
538
- function parseMonth(token) {
539
- token = String(token).slice(0, 3).toLowerCase();
540
- switch (token) {
541
- case "jan":
542
- return MONTH_TO_NUM.jan;
543
- case "feb":
544
- return MONTH_TO_NUM.feb;
545
- case "mar":
546
- return MONTH_TO_NUM.mar;
547
- case "apr":
548
- return MONTH_TO_NUM.apr;
549
- case "may":
550
- return MONTH_TO_NUM.may;
551
- case "jun":
552
- return MONTH_TO_NUM.jun;
553
- case "jul":
554
- return MONTH_TO_NUM.jul;
555
- case "aug":
556
- return MONTH_TO_NUM.aug;
557
- case "sep":
558
- return MONTH_TO_NUM.sep;
559
- case "oct":
560
- return MONTH_TO_NUM.oct;
561
- case "nov":
562
- return MONTH_TO_NUM.nov;
563
- case "dec":
564
- return MONTH_TO_NUM.dec;
565
- default:
566
- return;
567
- }
568
- }
569
486
  function parseDate(cookieDate) {
570
487
  if (!cookieDate) {
571
- return;
572
- }
573
- const tokens = cookieDate.split(DATE_DELIM);
574
- let hour;
575
- let minute;
576
- let second;
577
- let dayOfMonth;
578
- let month;
579
- let year;
580
- for (let i = 0; i < tokens.length; i++) {
581
- const token = (tokens[i] ?? "").trim();
582
- if (!token.length) {
583
- continue;
584
- }
585
- if (second === void 0) {
586
- const result = parseTime(token);
587
- if (result) {
588
- hour = result[0];
589
- minute = result[1];
590
- second = result[2];
591
- continue;
488
+ return void 0;
489
+ }
490
+ const flags = {
491
+ foundTime: void 0,
492
+ foundDayOfMonth: void 0,
493
+ foundMonth: void 0,
494
+ foundYear: void 0
495
+ };
496
+ const dateTokens = cookieDate.split(DELIMITER).filter((token) => token.length > 0);
497
+ for (const dateToken of dateTokens) {
498
+ if (flags.foundTime === void 0) {
499
+ const [, hours, minutes, seconds] = TIME.exec(dateToken) || [];
500
+ if (hours != void 0 && minutes != void 0 && seconds != void 0) {
501
+ const parsedHours = parseInt(hours, 10);
502
+ const parsedMinutes = parseInt(minutes, 10);
503
+ const parsedSeconds = parseInt(seconds, 10);
504
+ if (!isNaN(parsedHours) && !isNaN(parsedMinutes) && !isNaN(parsedSeconds)) {
505
+ flags.foundTime = {
506
+ hours: parsedHours,
507
+ minutes: parsedMinutes,
508
+ seconds: parsedSeconds
509
+ };
510
+ continue;
511
+ }
592
512
  }
593
513
  }
594
- if (dayOfMonth === void 0) {
595
- const result = parseDigits(token, 1, 2, true);
596
- if (result !== void 0) {
597
- dayOfMonth = result;
514
+ if (flags.foundDayOfMonth === void 0 && DAY_OF_MONTH.test(dateToken)) {
515
+ const dayOfMonth = parseInt(dateToken, 10);
516
+ if (!isNaN(dayOfMonth)) {
517
+ flags.foundDayOfMonth = dayOfMonth;
598
518
  continue;
599
519
  }
600
520
  }
601
- if (month === void 0) {
602
- const result = parseMonth(token);
603
- if (result !== void 0) {
604
- month = result;
521
+ if (flags.foundMonth === void 0 && MONTH.test(dateToken)) {
522
+ const month = months.indexOf(dateToken.substring(0, 3).toLowerCase());
523
+ if (month >= 0 && month <= 11) {
524
+ flags.foundMonth = month;
605
525
  continue;
606
526
  }
607
527
  }
608
- if (year === void 0) {
609
- const result = parseDigits(token, 2, 4, true);
610
- if (result !== void 0) {
611
- year = result;
612
- if (year >= 70 && year <= 99) {
613
- year += 1900;
614
- } else if (year >= 0 && year <= 69) {
615
- year += 2e3;
616
- }
528
+ if (flags.foundYear === void 0 && YEAR.test(dateToken)) {
529
+ const parsedYear = parseInt(dateToken, 10);
530
+ if (!isNaN(parsedYear)) {
531
+ flags.foundYear = parsedYear;
532
+ continue;
617
533
  }
618
534
  }
619
535
  }
620
- if (dayOfMonth === void 0 || month === void 0 || year === void 0 || hour === void 0 || minute === void 0 || second === void 0 || dayOfMonth < 1 || dayOfMonth > 31 || year < 1601 || hour > 23 || minute > 59 || second > 59) {
621
- return;
536
+ if (flags.foundYear !== void 0 && flags.foundYear >= 70 && flags.foundYear <= 99) {
537
+ flags.foundYear += 1900;
538
+ }
539
+ if (flags.foundYear !== void 0 && flags.foundYear >= 0 && flags.foundYear <= 69) {
540
+ flags.foundYear += 2e3;
541
+ }
542
+ if (flags.foundDayOfMonth === void 0 || flags.foundMonth === void 0 || flags.foundYear === void 0 || flags.foundTime === void 0) {
543
+ return void 0;
544
+ }
545
+ if (flags.foundDayOfMonth < 1 || flags.foundDayOfMonth > 31) {
546
+ return void 0;
547
+ }
548
+ if (flags.foundYear < 1601) {
549
+ return void 0;
550
+ }
551
+ if (flags.foundTime.hours > 23) {
552
+ return void 0;
553
+ }
554
+ if (flags.foundTime.minutes > 59) {
555
+ return void 0;
622
556
  }
623
- return new Date(Date.UTC(year, month, dayOfMonth, hour, minute, second));
557
+ if (flags.foundTime.seconds > 59) {
558
+ return void 0;
559
+ }
560
+ const date = new Date(
561
+ Date.UTC(
562
+ flags.foundYear,
563
+ flags.foundMonth,
564
+ flags.foundDayOfMonth,
565
+ flags.foundTime.hours,
566
+ flags.foundTime.minutes,
567
+ flags.foundTime.seconds
568
+ )
569
+ );
570
+ if (date.getUTCFullYear() !== flags.foundYear || date.getUTCMonth() !== flags.foundMonth || date.getUTCDate() !== flags.foundDayOfMonth) {
571
+ return void 0;
572
+ }
573
+ return date;
624
574
  }
575
+ var months = [
576
+ "jan",
577
+ "feb",
578
+ "mar",
579
+ "apr",
580
+ "may",
581
+ "jun",
582
+ "jul",
583
+ "aug",
584
+ "sep",
585
+ "oct",
586
+ "nov",
587
+ "dec"
588
+ ];
589
+ var DELIMITER = /[\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]/;
590
+ var TIME = /^(\d{1,2}):(\d{1,2}):(\d{1,2})(?:[\x00-\x2F\x3A-\xFF][\x00-\xFF]*)?$/;
591
+ var DAY_OF_MONTH = /^[0-9]{1,2}(?:[\x00-\x2F\x3A-\xFF][\x00-\xFF]*)?$/;
592
+ var MONTH = /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)[\x00-\xFF]*$/i;
593
+ var YEAR = /^[\x30-\x39]{2,4}(?:[\x00-\x2F\x3A-\xFF][\x00-\xFF]*)?$/;
625
594
 
626
595
  // lib/cookie/cookie.ts
627
596
  var COOKIE_OCTETS = /^[\x21\x23-\x2B\x2D-\x3A\x3C-\x5B\x5D-\x7E]+$/;
@@ -886,7 +855,7 @@ var _Cookie = class _Cookie {
886
855
  });
887
856
  this.creationIndex = _Cookie.cookiesCreated;
888
857
  }
889
- [Symbol.for("nodejs.util.inspect.custom")]() {
858
+ [/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")]() {
890
859
  const now = Date.now();
891
860
  const hostOnly = this.hostOnly != null ? this.hostOnly.toString() : "?";
892
861
  const createAge = this.creation && this.creation !== "Infinity" ? `${String(now - this.creation.getTime())}ms` : "?";
@@ -1417,17 +1386,23 @@ function getCookieContext(url) {
1417
1386
  protocol: url.protocol
1418
1387
  };
1419
1388
  } else if (typeof url === "string") {
1389
+ const parsed = new URL(url);
1390
+ let pathname = parsed.pathname;
1420
1391
  try {
1421
- return new URL(decodeURI(url));
1392
+ pathname = decodeURI(pathname);
1422
1393
  } catch {
1423
- return new URL(url);
1424
1394
  }
1395
+ return {
1396
+ hostname: parsed.hostname,
1397
+ pathname,
1398
+ protocol: parsed.protocol
1399
+ };
1425
1400
  } else {
1426
1401
  throw new ParameterError("`url` argument is not a string or URL.");
1427
1402
  }
1428
1403
  }
1429
1404
  function checkSameSiteContext(value) {
1430
- const context = String(value).toLowerCase();
1405
+ const context = value.toLowerCase();
1431
1406
  if (context === "none" || context === "lax" || context === "strict") {
1432
1407
  return context;
1433
1408
  } else {