@mherod/get-cookie 2.0.0-rc.30 → 2.0.0-rc.32

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/module.js CHANGED
@@ -2,10 +2,9 @@
2
2
  import {uniqBy as $6B8p2$uniqBy, merge as $6B8p2$merge, groupBy as $6B8p2$groupBy, orderBy as $6B8p2$orderBy} from "lodash";
3
3
  import $6B8p2$minimist from "minimist";
4
4
  import $6B8p2$lrucache from "lru-cache";
5
- import {red as $6B8p2$red, redBright as $6B8p2$redBright, blue as $6B8p2$blue, yellow as $6B8p2$yellow} from "colorette";
5
+ import $6B8p2$consola from "consola";
6
6
  import $6B8p2$fs, {existsSync as $6B8p2$existsSync} from "fs";
7
7
  import {join as $6B8p2$join} from "path";
8
- import $6B8p2$consola from "consola";
9
8
  import {sync as $6B8p2$sync} from "fast-glob";
10
9
  import {execSync as $6B8p2$execSync} from "child_process";
11
10
  import {pbkdf2 as $6B8p2$pbkdf2, createDecipheriv as $6B8p2$createDecipheriv} from "crypto";
@@ -13,7 +12,6 @@ import {Database as $6B8p2$Database} from "sqlite3";
13
12
  import $6B8p2$jsonwebtoken from "jsonwebtoken";
14
13
  import {fetch as $6B8p2$fetch} from "cross-fetch";
15
14
  import $6B8p2$destr from "destr";
16
- import $6B8p2$useragents from "user-agents";
17
15
 
18
16
 
19
17
 
@@ -201,8 +199,7 @@ var $1776b4cc4877131a$var$__awaiter = undefined && undefined.__awaiter || functi
201
199
  step((generator = generator.apply(thisArg, _arguments || [])).next());
202
200
  });
203
201
  };
204
- function $1776b4cc4877131a$export$e85a0c9a1067c5d3(password, encryptedData // The data to decrypt
205
- ) {
202
+ function $1776b4cc4877131a$export$e85a0c9a1067c5d3(password, encryptedData) {
206
203
  return $1776b4cc4877131a$var$__awaiter(this, void 0, void 0, function*() {
207
204
  // Returns a promise that resolves with the decrypted string
208
205
  // Check if password is a string
@@ -601,8 +598,7 @@ class $62dcb7ce199205be$var$FirefoxCookieQueryStrategy {
601
598
  });
602
599
  }
603
600
  }
604
- $62dcb7ce199205be$var$_FirefoxCookieQueryStrategy_instances = new WeakSet(), $62dcb7ce199205be$var$_FirefoxCookieQueryStrategy_getFirefoxCookie = function _FirefoxCookieQueryStrategy_getFirefoxCookie({ name: name, domain: domain } //
605
- ) {
601
+ $62dcb7ce199205be$var$_FirefoxCookieQueryStrategy_instances = new WeakSet(), $62dcb7ce199205be$var$_FirefoxCookieQueryStrategy_getFirefoxCookie = function _FirefoxCookieQueryStrategy_getFirefoxCookie({ name: name, domain: domain }) {
606
602
  return $62dcb7ce199205be$var$__awaiter(this, void 0, void 0, function*() {
607
603
  const files = (0, $a6c1a5673fde1c2b$export$2c9faf86071156ae)({
608
604
  path: $6B8p2$join((0, $ebc8f9a71f429261$export$a7c5707626fc90f), "Library", "Application Support", "Firefox", "Profiles"),
@@ -701,7 +697,9 @@ class $b470ee3b0b06a25e$export$2e2bcd8739ae039 {
701
697
 
702
698
 
703
699
 
704
- var $49168e685ea38e19$var$__awaiter = undefined && undefined.__awaiter || function(thisArg, _arguments, P, generator) {
700
+ // This utility function applies an async callback to each element of the input array (just like Array.prototype.map),
701
+ // waits for all resulting promises to fulfill (similar to Promise.all), and then flattens the resulting array (like Array.prototype.flat).
702
+ var $e5ab09e9bcce5243$var$__awaiter = undefined && undefined.__awaiter || function(thisArg, _arguments, P, generator) {
705
703
  function adopt(value) {
706
704
  return value instanceof P ? value : new P(function(resolve) {
707
705
  resolve(value);
@@ -728,44 +726,84 @@ var $49168e685ea38e19$var$__awaiter = undefined && undefined.__awaiter || functi
728
726
  step((generator = generator.apply(thisArg, _arguments || [])).next());
729
727
  });
730
728
  };
731
- var $49168e685ea38e19$var$__classPrivateFieldSet = undefined && undefined.__classPrivateFieldSet || function(receiver, state, value, kind, f) {
732
- if (kind === "m") throw new TypeError("Private method is not writable");
733
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
734
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
735
- return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value), value;
736
- };
737
- var $49168e685ea38e19$var$__classPrivateFieldGet = undefined && undefined.__classPrivateFieldGet || function(receiver, state, kind, f) {
738
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
739
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
740
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
729
+ function $e5ab09e9bcce5243$export$4c17d5aa5c0915ca(array, callback, or) {
730
+ return $e5ab09e9bcce5243$var$__awaiter(this, void 0, void 0, function*() {
731
+ if (or) return $e5ab09e9bcce5243$export$4c17d5aa5c0915ca(array, (value, index, array)=>$e5ab09e9bcce5243$var$__awaiter(this, void 0, void 0, function*() {
732
+ try {
733
+ return yield callback(value, index, array);
734
+ } catch (error) {
735
+ return typeof or == "function" ? or(error) : or;
736
+ }
737
+ }));
738
+ // Step 1: Use Array.prototype.map to transform each element of the input array with the provided callback.
739
+ // This will result in an array of promises.
740
+ const ps = array.map(callback);
741
+ // Step 2: Use Promise.all to wait for all promises in the array to fulfill.
742
+ // This will give us an array of fulfilled promise values.
743
+ const awaitedAll = yield Promise.all(ps);
744
+ // Step 3: Flatten the array of fulfilled promise values into a single array.
745
+ // Note: The '@ts-ignore' comment is used to suppress TypeScript compiler warnings, as .flat() method might not be recognized
746
+ // as a valid method for an array of Awaited<O> instances. However, this code assumes that the result of Promise.all
747
+ // is indeed an array that can be flattened.
748
+ // @ts-ignore
749
+ return awaitedAll.flat();
750
+ });
751
+ }
752
+
753
+
754
+ var $49168e685ea38e19$var$__awaiter = undefined && undefined.__awaiter || function(thisArg, _arguments, P, generator) {
755
+ function adopt(value) {
756
+ return value instanceof P ? value : new P(function(resolve) {
757
+ resolve(value);
758
+ });
759
+ }
760
+ return new (P || (P = Promise))(function(resolve, reject) {
761
+ function fulfilled(value) {
762
+ try {
763
+ step(generator.next(value));
764
+ } catch (e) {
765
+ reject(e);
766
+ }
767
+ }
768
+ function rejected(value) {
769
+ try {
770
+ step(generator["throw"](value));
771
+ } catch (e) {
772
+ reject(e);
773
+ }
774
+ }
775
+ function step(result) {
776
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
777
+ }
778
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
779
+ });
741
780
  };
742
- var $49168e685ea38e19$var$_CompositeCookieQueryStrategy_strategies;
743
781
  const $49168e685ea38e19$var$cache = new (0, $6B8p2$lrucache)({
744
782
  ttl: 10000,
745
783
  max: 10
746
784
  });
747
- class $49168e685ea38e19$var$CompositeCookieQueryStrategy {
785
+ class $49168e685ea38e19$export$2e2bcd8739ae039 {
748
786
  constructor(){
749
787
  this.browserName = "all";
750
- $49168e685ea38e19$var$_CompositeCookieQueryStrategy_strategies.set(this, void 0);
751
- $49168e685ea38e19$var$__classPrivateFieldSet(this, $49168e685ea38e19$var$_CompositeCookieQueryStrategy_strategies, [
788
+ this.strategies = [
752
789
  // CookieStoreQueryStrategy,
753
790
  (0, $a6f61760d01c3afd$export$2e2bcd8739ae039),
754
791
  (0, $62dcb7ce199205be$export$2e2bcd8739ae039),
755
792
  (0, $b470ee3b0b06a25e$export$2e2bcd8739ae039)
756
793
  ].map((strategy)=>{
757
794
  return new strategy();
758
- }), "f");
795
+ });
759
796
  }
760
797
  queryCookies(name, domain) {
761
798
  return $49168e685ea38e19$var$__awaiter(this, void 0, void 0, function*() {
762
799
  // domain = domain.match(/(\w+.+\w+)/gi)?.pop() ?? domain;
763
800
  const key = `${name}:${domain}`;
764
- const cached = $49168e685ea38e19$var$cache.get(key);
765
- if (cached) return cached;
766
- if ((0, $01f4cf98d50740c6$export$c348dfaf65040d9b).verbose) console.log("Querying cookies:", name, domain);
767
- const results = yield Promise.all($49168e685ea38e19$var$__classPrivateFieldGet(this, $49168e685ea38e19$var$_CompositeCookieQueryStrategy_strategies, "f").map((strategy)=>$49168e685ea38e19$var$__awaiter(this, void 0, void 0, function*() {
768
- // @ts-ignore
801
+ if ($49168e685ea38e19$var$cache.has(key)) {
802
+ const cached = $49168e685ea38e19$var$cache.get(key);
803
+ if (cached) return cached;
804
+ }
805
+ if ((0, $01f4cf98d50740c6$export$c348dfaf65040d9b).verbose) (0, $6B8p2$consola).log("Querying cookies:", name, domain);
806
+ const results = yield (0, $e5ab09e9bcce5243$export$4c17d5aa5c0915ca)(this.strategies, (strategy)=>$49168e685ea38e19$var$__awaiter(this, void 0, void 0, function*() {
769
807
  return strategy.queryCookies(name, domain).then((cookies)=>{
770
808
  return cookies.map((cookie)=>{
771
809
  return (0, $6B8p2$merge)(cookie, {
@@ -775,18 +813,15 @@ class $49168e685ea38e19$var$CompositeCookieQueryStrategy {
775
813
  });
776
814
  });
777
815
  }).catch((e)=>{
778
- console.log((0, $6B8p2$red)(`Error querying ${strategy.browserName} cookies`), e);
816
+ (0, $6B8p2$consola).error(`Error querying ${strategy.browserName} cookies`, e);
779
817
  return [];
780
818
  });
781
- })));
782
- const flat = results.flat();
783
- $49168e685ea38e19$var$cache.set(`${name}:${domain}`, flat);
784
- return flat;
819
+ }));
820
+ $49168e685ea38e19$var$cache.set(`${name}:${domain}`, results);
821
+ return results;
785
822
  });
786
823
  }
787
824
  }
788
- $49168e685ea38e19$var$_CompositeCookieQueryStrategy_strategies = new WeakMap();
789
- var $49168e685ea38e19$export$2e2bcd8739ae039 = $49168e685ea38e19$var$CompositeCookieQueryStrategy;
790
825
 
791
826
 
792
827
 
@@ -839,7 +874,7 @@ var $f382029733f65752$var$__awaiter = undefined && undefined.__awaiter || functi
839
874
  step((generator = generator.apply(thisArg, _arguments || [])).next());
840
875
  });
841
876
  };
842
- function $f382029733f65752$export$e6d428437cf2cacb({ name: name, domain: domain }, strategy = new (0, $49168e685ea38e19$export$2e2bcd8739ae039)()) {
877
+ function $f382029733f65752$export$e6d428437cf2cacb({ name: name, domain: domain, limit: limit }, strategy = new (0, $49168e685ea38e19$export$2e2bcd8739ae039)()) {
843
878
  return $f382029733f65752$var$__awaiter(this, void 0, void 0, function*() {
844
879
  //
845
880
  const results = yield strategy.queryCookies(name, domain);
@@ -993,6 +1028,7 @@ function $8227023f453bcf31$export$9abc0a414b0d8b8f(results) {
993
1028
 
994
1029
 
995
1030
 
1031
+
996
1032
  var $0f113de605a2ef1d$var$__awaiter = undefined && undefined.__awaiter || function(thisArg, _arguments, P, generator) {
997
1033
  function adopt(value) {
998
1034
  return value instanceof P ? value : new P(function(resolve) {
@@ -1022,17 +1058,15 @@ var $0f113de605a2ef1d$var$__awaiter = undefined && undefined.__awaiter || functi
1022
1058
  };
1023
1059
  function $0f113de605a2ef1d$export$a65902517ae87ba8(cookieSpec) {
1024
1060
  return $0f113de605a2ef1d$var$__awaiter(this, void 0, void 0, function*() {
1025
- const cookies = [];
1026
1061
  if (Array.isArray(cookieSpec)) {
1027
- const results = yield Promise.all(cookieSpec.map((cs)=>{
1028
- return (0, $f382029733f65752$export$e6d428437cf2cacb)(cs);
1029
- }));
1030
- for (const exportedCookie of results.flat())cookies.push(exportedCookie);
1062
+ const cookiesForMultiSpec = yield (0, $e5ab09e9bcce5243$export$4c17d5aa5c0915ca)(cookieSpec, (cs)=>$0f113de605a2ef1d$var$__awaiter(this, void 0, void 0, function*() {
1063
+ return yield (0, $f382029733f65752$export$e6d428437cf2cacb)(cs);
1064
+ }));
1065
+ return (0, $6B8p2$uniqBy)(cookiesForMultiSpec, JSON.stringify);
1031
1066
  } else {
1032
- const singleQuery = yield (0, $f382029733f65752$export$e6d428437cf2cacb)(cookieSpec);
1033
- cookies.push(...singleQuery);
1067
+ const cookiesForSingleSpec = yield (0, $f382029733f65752$export$e6d428437cf2cacb)(cookieSpec);
1068
+ return (0, $6B8p2$uniqBy)(cookiesForSingleSpec, JSON.stringify);
1034
1069
  }
1035
- return (0, $6B8p2$uniqBy)(cookies, JSON.stringify);
1036
1070
  });
1037
1071
  }
1038
1072
 
@@ -1124,8 +1158,6 @@ function $0b27779070651c3e$export$cfc0723de5712e57(cookieSpec) {
1124
1158
 
1125
1159
 
1126
1160
 
1127
-
1128
-
1129
1161
  function $bd973abb63c1ed35$export$f266452a5050185d(url) {
1130
1162
  const url1 = typeof url == "string" ? new URL(url) : url;
1131
1163
  const cookieSpecs = [];
@@ -1183,7 +1215,7 @@ if (typeof (0, $6B8p2$fetch) !== "function") {
1183
1215
  (0, $6B8p2$consola).error("fetch is not a function");
1184
1216
  throw new Error("fetch is not a function");
1185
1217
  }
1186
- const $7d6c43a28f2485bc$var$userAgent = new (0, $6B8p2$useragents)().toString();
1218
+ const $7d6c43a28f2485bc$var$userAgent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36";
1187
1219
  function $7d6c43a28f2485bc$export$b24a545a0b39f491(url, options = {}, fetch = (0, $6B8p2$fetch), originalRequest) {
1188
1220
  var _a;
1189
1221
  return $7d6c43a28f2485bc$var$__awaiter(this, void 0, void 0, function*() {
@@ -1212,8 +1244,8 @@ function $7d6c43a28f2485bc$export$b24a545a0b39f491(url, options = {}, fetch = (0
1212
1244
  return "";
1213
1245
  });
1214
1246
  if ((0, $01f4cf98d50740c6$export$c348dfaf65040d9b)["dump-request-headers"]) {
1215
- (0, $6B8p2$consola).info((0, $6B8p2$redBright)("Request URL:"), url1.href);
1216
- (0, $6B8p2$consola).info((0, $6B8p2$blue)("Request headers:"), headers);
1247
+ (0, $6B8p2$consola).info("Request URL:", url1.href);
1248
+ (0, $6B8p2$consola).info("Request headers:", headers);
1217
1249
  }
1218
1250
  const newOptions1 = (0, $6B8p2$merge)(defaultOptions, {
1219
1251
  headers: headers
@@ -1242,7 +1274,7 @@ function $7d6c43a28f2485bc$export$b24a545a0b39f491(url, options = {}, fetch = (0
1242
1274
  if (res.status == 301 || res.status == 302) // follow the redirect
1243
1275
  {
1244
1276
  if (newUrl && newUrl !== url2) {
1245
- if ((0, $01f4cf98d50740c6$export$c348dfaf65040d9b).verbose || (0, $01f4cf98d50740c6$export$c348dfaf65040d9b)["dump-response-headers"]) console.log((0, $6B8p2$blue)(`Redirected to `), (0, $6B8p2$yellow)(newUrl));
1277
+ if ((0, $01f4cf98d50740c6$export$c348dfaf65040d9b).verbose || (0, $01f4cf98d50740c6$export$c348dfaf65040d9b)["dump-response-headers"]) console.log(`Redirected to `, newUrl);
1246
1278
  return $7d6c43a28f2485bc$export$b24a545a0b39f491(//
1247
1279
  newUrl, newOptions1, fetch, originalRequest1);
1248
1280
  }
@@ -1268,7 +1300,7 @@ function $7d6c43a28f2485bc$export$b24a545a0b39f491(url, options = {}, fetch = (0
1268
1300
  (0, $6B8p2$merge)(newOptions2, newOptions1);
1269
1301
  break;
1270
1302
  }
1271
- if ((0, $01f4cf98d50740c6$export$c348dfaf65040d9b).verbose) console.log((0, $6B8p2$blue)(`Redirected to `), (0, $6B8p2$yellow)(newUrl));
1303
+ if ((0, $01f4cf98d50740c6$export$c348dfaf65040d9b).verbose) console.log(`Redirected to `, newUrl);
1272
1304
  return $7d6c43a28f2485bc$export$b24a545a0b39f491(//
1273
1305
  newUrl, newOptions2, fetch, originalRequest1);
1274
1306
  }
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;A,I;AGwBO,MAAM,4CAAiB,AAAA,CAAA,2BAAA,QAAQ,IAAI,AAAJ,MAAI,QAAA,6BAAA,KAAA,IAAA,2BAAI,EAAE;AAChD,MAAM,qCAAoC,CAAA,GAAA,eAAA,EAAS,0CAAK,KAAK,CAAC;AAC9D,MAAM,uCAAiB;IACrB,SAAS;AACV;AACM,MAAM,4CAA2B,CAAA,GAAA,YAAA,EAAM,sCAAgB;;;;A,I;AG3BvD,MAAM,4CAAW,CAAA;AACxB,CAAA,GAAA,YAAA,EAAM,2CAAK,AAAA,CAAA,2BAAA,YAAO,QAAP,YAAO,KAAA,IAAA,KAAA,IAAP,QAAS,GAAG,AAAH,MAAG,QAAA,6BAAA,KAAA,IAAA,2BAAI,CAAA;AACpB,MAAM,2CAAe,yCAAG,CAAC,OAAO;AACvC,IAAI,CAAC,0CACH,MAAM,IAAI,MAAM;;;;;;;;ACKZ,SAAU,0CACd,EAAE;AACF,QAAE,IAAI,QAAE,IAAI,YAAE,WAAW,GAAqB;IAG9C,IAAI,CAAC,CAAA,GAAA,iBAAA,EAAW,OACd,MAAM,IAAI,MAAM,CAAA,KAAA,EAAQ,KAAI,eAAA,CAAiB;IAG/C,IAAI,CAAA,GAAA,yCAAA,EAAW,OAAO,EACpB,CAAA,GAAA,cAAA,EAAQ,KAAK,CAAC,CAAA,cAAA,EAAiB,KAAI,UAAA,EAAa,KAAI,CAAE;IAGxD,MAAM,QAAkB,CAAA,GAAA,WAAA,EAAK,CAAA,EAAG,KAAI,IAAA,EAAO,KAAI,CAAE,EAAE;QACjD,WAAW;QACX,MAAM;IACP;IAED,IAAI,CAAA,GAAA,yCAAA,EAAW,OAAO,EACpB;QAAA,IAAI,MAAM,MAAM,GAAG,GAAG;YACpB,CAAA,GAAA,cAAA,EAAQ,OAAO,CAAC,CAAA,MAAA,EAAS,MAAM,MAAM,CAAA,CAAA,EAAI,KAAI,MAAA,CAAQ;YACrD,CAAA,GAAA,cAAA,EAAQ,IAAI,CAAC;QACd;IAAA;IAGH,OAAO;AACT;;;;;ACnCM,SAAU,0CAAY,GAAQ;IAClC,OACE,IAAI,MAAM,KAAK,aACf,IAAI,IAAI,KAAK,aACb,IAAI,KAAK,KAAK;AAElB;;;ACAM,SAAU,0CAAiB,GAAQ;IACvC,OACE,OAAO,IAAI,MAAM,KAAK,YACtB,OAAO,IAAI,IAAI,KAAK,YACpB,OAAO,IAAI,KAAK,KAAK,YACpB,CAAA,IAAI,MAAM,KAAK,aACd,IAAI,MAAM,YAAY,QACtB,IAAI,MAAM,KAAK,UAAA,KAChB,CAAA,IAAI,IAAI,KAAK,aAAa,OAAO,IAAI,IAAI,KAAK,QAAA;AAEnD;;;AClBA,4DAA4D;AACtD,SAAU,0CAAc,CAAS;IACrC,oDAAoD;IACpD,MAAM,KAAK,EAAE,UAAU,CAAC,QAAQ;IAChC,iFAAiF;IACjF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM;IAC5B,iFAAiF;IACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO;IAC7B,2CAA2C;IAC3C,OAAO,IAAI,OAAO;AACpB,EAEA;;;AAGE;;;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AEbI,SAAgB,0CAAW,OAAe;I,O,gC,I,E,K,G,K,G;QAC9C,IAAI;YACF,MAAM,SAAS,CAAA,GAAA,eAAA,EAAS,SAAS;gBAC/B,UAAU;gBACV,WAAW;YACZ;YACD,OAAO,OAAO,IAAI;QACnB,EAAC,OAAO,OAAO;YACd,MAAM;QACP;IACH;AAAC;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;ADVD,MAAM,uCAAkC,CAAA,GAAA,yCAAA,EACtC;AAGI,SAAgB;I,O,gC,I,E,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O,GAAG,CAAC,kBAAkB;gBAC9B;gBACD,IAAI,CAAA,GAAA,yCAAA,EAAW,OAAO,EACpB,CAAA,GAAA,cAAA,EAAQ,IAAI,CAAC,SAAS;gBAExB,OAAO;YACT;QACD;QACD,OAAO,aAAa,MAAM,CAAC,CAAC;YAC1B,wBAAwB;YACxB,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB;QAC3C;IACF;AAAC;;;;;;;AYlNK,SAAU,0CAAa,QAAE,IAAI,UAAE,MAAM,EAAc;IAKvD,MAAM,iBAAiB;IACvB,OAAO;QACL,eAAe,KAAK,KAAK,CAAC,mBAAmB;QAC7C,iBAAiB,OAAO,KAAK,CAAC,mBAAmB;IAElD;AACH;;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;A,I,+C,a,U,sB,I,S,Q,E,K,E,I,E,C;I,I,S,O,C,G,M,I,U;I,I,O,U,a,a,S,C,I,C,M,G,C,W,M,I,U;I,O,S,M,I,S,M,E,I,C,Y,I,E,K,G,M,G,C;A;A,I,6D,oE;ADDA,MAAqB;IAArB,aAAA;Q,4D,G,C,I;QACE,IAAA,CAAA,WAAW,GAAG;IAyFhB;IAvFQ,aAAa,IAAY,EAAE,MAAc,EAAzC;Q,O,gC,I,E,K,G,K,G;YACJ,IAAI,QAAQ,QAAQ,KAAK,UACvB,kBAAkB;YAClB,OAAO,EAAE;YAEX,IAAI,CAAA,GAAA,yCAAA,EAAW,OAAO,KAAK,WACzB,OAAO,EAAE;YAEX,MAAM,UAAU,MAAM,6CAAA,IAAI,EAAA,6DAAA,KAAA,oEAAkB,IAAA,CAAtB,IAAI,EAAmB;sBAAE;wBAAM;YAAM;YAC3D,IAAI,MAAM,OAAO,CAAC,UAChB,OAAO,QAAQ,GAAG,CAAC,CAAC;gBAClB,OAAO;oBACL,QAAQ,OAAO,MAAM;oBACrB,MAAM,OAAO,IAAI;oBACjB,OAAO,OAAO,KAAK,CAAC,QAAQ,CAAC;gBAC9B;YACH;iBAEA,OAAO,EAAE;QAEb;IAAC;AAmEF;AAhEG,8DAAA,IAAA,WAAA,qEAAA,SAAA,6CAAA,QAAE,IAAI,UAAE,MAAM,EAAc,CAAC,EAAE;AAAH;I,O,gC,I,E,K,G,K,G;QAE5B,MAAM,QAAkB,CAAA,GAAA,yCAAA,EAAa;YACnC,MAAM,YACJ,CAAA,GAAA,wCAAA,GACA,WACA,uBACA,WACA;YAEF,MAAM;QACP;QACD,MAAM,KAA6C,CAAO,OAA1D,gCAAA,IAAA,EAAA,KAAA,GAAA,KAAA,GAAA;gBACE,OAAO,MAAM,6CAAA,IAAI,EAAA,6DAAA,KAAA,kEAAgB,IAAA,CAApB,IAAI,EAAiB,MAAM,MAAM;YAChD;QACA,MAAM,MAAqB,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC;QACvD,UAAU;QACV,OAAO,IAAI,IAAI;IACjB;AAGE,GAAA,mEAAA,SAAA,2CAAA,IAAY,EACZ,IAAY,EACZ,MAAc;I,O,gC,I,E,K,G,K,G;QAEd,IAAI,QAAQ,CAAC,CAAA,GAAA,iBAAA,EAAW,OACtB,MAAM,IAAI,MAAM,CAAA,KAAA,EAAQ,KAAI,eAAA,CAAiB;QAE/C,IAAI;QACJ,cAAc;QACd,MAAM;QACN,MAAM,iBAAE,aAAa,mBAAE,eAAe,EAAE,GAAG,CAAA,GAAA,yCAAA,EAAa;kBAAE;oBAAM;QAAM;QACtE,IAAI,iBAAiB,iBAAiB;YACpC,OAAO,CAAA,OAAA,CAAS;YAChB,IAAI,eAAe;gBACjB,OAAO,CAAA,QAAA,EAAW,KAAI,CAAA,CAAG;gBACzB,IAAI,iBACF,OAAO,CAAA,KAAA,CAAO;YAEjB;YACD,IAAI,iBACF,OAAO,CAAA,WAAA,EAAc,OAAM,EAAA,CAAI;QAElC;QACD,MAAM,eAAe,CAAC;YACpB,mCAAmC;YACnC,MAAM,QAAQ,IAAI,KAAe;YACjC,OAAO;gBACL,QAAQ,IAAI,MAAgB;gBAC5B,MAAM,IAAI,IAAc;gBACxB,OAAO,OAAO,IAAI,CAAC,OAAO;YAC3B;QACH;QACA,IAAI;YACF,OAAO,MAAM,CAAA,GAAA,yCAAA,EAA2B;sBACtC;qBACA;8BACA;YACD;QACF,EAAC,OAAO,GAAG;YACV,QAAQ,KAAK,CAAC,CAAA,eAAA,EAAkB,KAAI,CAAE,EAAE;YACxC,OAAO,EAAE;QACV;IACH;A;IAzFmB,2CAAA;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AETP;IAAd,aAAA;QACE,IAAA,CAAA,WAAW,GAAG;IAMhB;IAJQ,aAAa,IAAY,EAAE,MAAc,EAAzC;Q,O,gC,I,E,K,G,K,G;YACJ,kBAAkB;YAClB,OAAO,EAAE;QACX;IAAC;AACF;;;;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;A,I,+C,a,U,sB,I,S,Q,E,K,E,K,E,I,E,C;I,I,S,K,M,I,U;I,I,S,O,C,G,M,I,U;I,I,O,U,a,a,S,C,I,C,M,G,C,W,M,I,U;I,O,A,S,M,E,I,C,U,S,I,E,K,G,Q,M,G,C,U,Q;A;A,I,+C,a,U,sB,I,S,Q,E,K,E,I,E,C;I,I,S,O,C,G,M,I,U;I,I,O,U,a,a,S,C,I,C,M,G,C,W,M,I,U;I,O,S,M,I,S,M,E,I,C,Y,I,E,K,G,M,G,C;A;A,I;AdAD,MAAM,8BAA4C,IAAI,CAAA,GAAA,eAAA,EAGpD;IACA,KAAK;IACL,KAAK;AACN;AAED,MAAqB;IAOnB,aAAA;QAJA,IAAA,CAAA,WAAW,GAAG;QAEd,+DAAA,GAAA,CAAA,IAAA,EAAA,KAAA;QAGE,6CAAA,IAAI,EAAA,gEAAe;YACjB,4BAA4B;YAC5B,CAAA,GAAA,wCAAA;YACA,CAAA,GAAA,wCAAA;YACA,CAAA,GAAA,wCAAA;SACD,CAAC,GAAG,CAAC,CAAC;YACL,OAAO,IAAI;QACb,IAAE;IACJ;IAEM,aAAa,IAAY,EAAE,MAAc,EAAzC;Q,O,gC,I,E,K,G,K,G;YACJ,0DAA0D;YAC1D,MAAM,MAAM,CAAA,EAAG,KAAI,CAAA,EAAI,OAAM,CAAE;YAC/B,MAAM,SAAS,4BAAM,GAAG,CAAC;YACzB,IAAI,QACF,OAAO;YAET,IAAI,CAAA,GAAA,yCAAA,EAAW,OAAO,EACpB,QAAQ,GAAG,CAAC,qBAAqB,MAAM;YAEzC,MAAM,UAA8B,MAAM,QAAQ,GAAG,CACnD,6CAAA,IAAI,EAAA,gEAAA,KAAa,GAAG,CAAC,CAAO,WAD9B,gCAAA,IAAA,EAAA,KAAA,GAAA,KAAA,GAAA;oBAEI,aAAa;oBACb,OAAO,SACJ,YAAY,CAAC,MAAM,QACnB,IAAI,CAAC,CAAC;wBACL,OAAO,QAAQ,GAAG,CAAC,CAAC;4BAClB,OAAO,CAAA,GAAA,YAAA,EAAM,QAAQ;gCACnB,MAAM;oCACJ,SAAS,SAAS,WAAW;gCAC9B;4BACF;wBACH;oBACF,GACC,KAAK,CAAC,CAAC;wBACN,QAAQ,GAAG,CACT,CAAA,GAAA,UAAA,EAAI,CAAA,eAAA,EAAkB,SAAS,WAAW,CAAA,QAAA,CAAU,GACpD;wBAEF,OAAO,EAAE;oBACX;gBACJ;YAEF,MAAM,OAAyB,QAAQ,IAAI;YAC3C,4BAAM,GAAG,CAAC,CAAA,EAAG,KAAI,CAAA,EAAI,OAAM,CAAE,EAAE;YAC/B,OAAO;QACT;IAAC;AACF;A,iE,I;IAvDoB,2CAAA;;;;;AefP,kDAAqB,KAAa;IAC9C,IAAI;QACF,MAAM,SAAS,CAAA,GAAA,mBAAA,EAAa,MAAM,CAAC,OAAO;YAAE,UAAU;QAAI;QAC1D,IAAI,CAAA,GAAA,yCAAA,EAAW,OAAO,IAAI,QACxB,QAAQ,KAAK,CAAC;QAEhB,MAAM,UAAsB,WAAM,QAAN,WAAM,KAAA,IAAA,KAAA,IAAN,OAAQ,OAAqB;QACzD,IAAI,SAAS;YACX,MAAM,MAAM,QAAQ,GAAG;YACvB,IAAI,KAAK;gBACP,MAAM,MAAM,IAAI,OAAO,OAAO,KAAK;gBACnC,IAAI,MAAM,KACR,OAAO;YAEV;QACF;QACD,OAAO;IACR,EAAC,OAAO,KAAK;QACZ,OAAO;IACR;AACH;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AjBfM,SAAgB,0CACpB,QACE,IAAI,UACJ,MAAM,EAEE,EACV,WAAgC,IAAI,CAAA,GAAA,wCAAA,GAA8B;I,O,gC,I,E,K,G,K,G;QAElE,EAAE;QACF,MAAM,UAA4B,MAAM,SAAS,YAAY,CAAC,MAAM;QACpE,MAAM,aAA+B,CAAA,GAAA,aAAA,EAAO,SAAS,KAAK,SAAS;QAEnE,IAAI,CAAA,GAAA,yCAAA,CAAU,CAAC,cAAc,EAAE;YAC7B,MAAM,aAAa,EAAE;YACrB,KAAK,MAAM,UAAU,WAAY;gBAC/B,MAAM,QAAgB,OAAO,KAAK;gBAClC,IAAI,CAAA,GAAA,wCAAA,EAAW,QACb,WAAW,IAAI,CAAC;YAEnB;YACD,OAAO,CAAA,GAAA,yCAAA,CAAU,CAAC,SAAS,GAAG;gBAAC,UAAU,CAAC,EAAE;aAAC,GAAG;QACjD,OACC,OAAO,CAAA,GAAA,yCAAA,CAAU,CAAC,SAAS,GAAG;YAAC,UAAU,CAAC,EAAE;SAAC,GAAG;IAEpD;AAAC;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AD3BK,SAAgB,0CACpB,MAAkB;I,O,gC,I,E,K,G,K,G;QAElB,EAAE;QACF,MAAM,UAAU,MAAM,CAAA,GAAA,yCAAA,EACpB,QACA,IAAI,CAAA,GAAA,wCAAA;QAGN,IAAI,MAAM,OAAO,CAAC,YAAY,QAAQ,MAAM,GAAG,GAC7C,OAAO,QAAQ,IAAI,CAAC,CAAC,SAAW,UAAU;aAE1C,MAAM,IAAI,MAAM;IAEpB;AAAC;;;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AmBbK,SAAgB,0CACpB,MAAkB;I,O,gC,I,E,K,G,K,G;QAElB,MAAM,UAAU,MAAM,CAAA,GAAA,yCAAA,EACpB,QACA,IAAI,CAAA,GAAA,wCAAA;QAGN,IAAI,QAAQ,MAAM,IAAI,GACpB,MAAM,IAAI,MAAM;QAElB,OAAO,QAAQ,IAAI,CAAC,CAAA,GAAA,yCAAA;IACtB;AAAC;;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;ACbK,SAAgB,0CACpB,MAAkB;I,O,gC,I,E,K,G,K,G;QAElB,MAAM,UAA4B,MAAM,CAAA,GAAA,yCAAA,EACtC,QACA,IAAI,CAAA,GAAA,wCAAA;QAGN,IAAI,MAAM,OAAO,CAAC,YAAY,QAAQ,MAAM,GAAG,GAC7C,OAAO,QAAQ,IAAI,CAAC,CAAC,SAAW,UAAU;aAE1C,MAAM,IAAI,MAAM;IAEpB;AAAC;;;;;AEfK,SAAU,0CAAgB,OAAyB;IACvD,qCAAqC;IACrC,wCAAwC;IACxC,MAAM,iBAAiB,CAAA,GAAA,cAAA,EAAQ,SAAS;QAAC;QAAQ;KAAS,EAAE;QAAC;QAAO;KAAO;IAC3E,OAAO,CAAA,GAAA,aAAA,EAAO,gBAAgB,CAAC,IAAsB,EAAE,IAAI,EACxD,GAAG,CAAC,CAAC,IAAsB,EAAE,IAAI,GAAG,MAAM,EAAE,KAAK,EACjD,IAAI,CAAC;AACV;;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;ACLM,SAAgB,0CACpB,UAA2B;I,O,gC,I,E,K,G,K,G;QAE3B,MAAM,UAA4B,EAAE;QACpC,IAAI,MAAM,OAAO,CAAC,aAAa;YAC7B,MAAM,UAAuC,MAAM,QAAQ,GAAG,CAC5D,WAAW,GAAG,CAAC,CAAC;gBACd,OAAO,CAAA,GAAA,yCAAA,EAAa;YACtB;YAEF,KAAK,MAAM,kBAAkB,QAAQ,IAAI,GACvC,QAAQ,IAAI,CAAC;QAEhB,OAAM;YACL,MAAM,cAAgC,MAAM,CAAA,GAAA,yCAAA,EAAa;YACzD,QAAQ,IAAI,IAAI;QACjB;QACD,OAAO,CAAA,GAAA,aAAA,EAAO,SAAS,KAAK,SAAS;IACvC;AAAC;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AFjBK,SAAgB,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","sources":["src/index.ts","src/getCookie.ts","src/queryCookies.ts","src/argv.ts","src/browsers/CompositeCookieQueryStrategy.ts","src/browsers/ChromeCookieQueryStrategy.ts","src/global.ts","src/findAllFiles.ts","src/IsCookieRow.ts","src/ExportedCookie.ts","src/StringToRegex.ts","src/browsers/getChromePassword.ts","src/execSimple.ts","src/browsers/ChromeApplicationSupport.ts","src/browsers/decrypt.ts","src/browsers/DoSqliteQueryWithTransform.ts","src/browsers/FirefoxCookieQueryStrategy.ts","src/SpecialCases.ts","src/browsers/SafariCookieQueryStrategy.ts","src/isValidJwt.ts","src/getChromeCookie.ts","src/getFirefoxCookie.ts","src/getGroupedRenderedCookies.ts","src/resultsRendered.ts","src/comboQueryCookieSpec.ts","src/getMergedRenderedCookies.ts","src/fetchWithCookies.ts","src/cookieSpecsFromUrl.ts"],"sourcesContent":["#!/usr/bin/env bun run\n\nimport { getCookie } from \"./getCookie\";\nimport { getChromeCookie } from \"./getChromeCookie\";\nimport { getFirefoxCookie } from \"./getFirefoxCookie\";\nimport { getGroupedRenderedCookies } from \"./getGroupedRenderedCookies\";\nimport { getMergedRenderedCookies } from \"./getMergedRenderedCookies\";\nimport { fetchWithCookies } from \"./fetchWithCookies\";\n\nexport {\n getCookie,\n getChromeCookie,\n getFirefoxCookie,\n getMergedRenderedCookies,\n getGroupedRenderedCookies,\n fetchWithCookies,\n //\n};\n","import CookieSpec from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\nimport { queryCookies } from \"./queryCookies\";\nimport CompositeCookieQueryStrategy from \"./browsers/CompositeCookieQueryStrategy\";\n\nexport async function getCookie(\n params: CookieSpec\n): Promise<ExportedCookie | undefined> {\n //\n const cookies = await queryCookies(\n params,\n new CompositeCookieQueryStrategy()\n //\n );\n if (Array.isArray(cookies) && cookies.length > 0) {\n return cookies.find((cookie) => cookie != null);\n } else {\n throw new Error(\"Cookie not found\");\n }\n}\n","import { uniqBy } from \"lodash\";\nimport { parsedArgs } from \"./argv\";\nimport CompositeCookieQueryStrategy from \"./browsers/CompositeCookieQueryStrategy\";\nimport CookieQueryStrategy from \"./browsers/CookieQueryStrategy\";\nimport isValidJwt from \"./isValidJwt\";\nimport CookieSpec from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\n\nexport async function queryCookies(\n {\n name,\n domain,\n }: //\n CookieSpec,\n strategy: CookieQueryStrategy = new CompositeCookieQueryStrategy()\n): Promise<ExportedCookie[]> {\n //\n const results: ExportedCookie[] = await strategy.queryCookies(name, domain);\n const allCookies: ExportedCookie[] = uniqBy(results, JSON.stringify);\n\n if (parsedArgs[\"require-jwt\"]) {\n const jwtCookies = [];\n for (const result of allCookies) {\n const value: string = result.value;\n if (isValidJwt(value)) {\n jwtCookies.push(result);\n }\n }\n return parsedArgs[\"single\"] ? [jwtCookies[0]] : jwtCookies;\n } else {\n return parsedArgs[\"single\"] ? [allCookies[0]] : allCookies;\n }\n}\n","import minimist from \"minimist\";\nimport { merge } from \"lodash\";\n\nexport interface MyParsedArgs extends minimist.ParsedArgs {\n verbose: boolean;\n render?: string;\n fetch?: string;\n cs?: string;\n dump?: string;\n \"dump-request-headers\"?: string;\n \"dump-response-headers\"?: string;\n \"dump-response-body\"?: string;\n}\n\n/*\nUsage: get-cookie [name] [domain] [options]\nOptions:\n -h, --help: Show this help\n -v, --verbose: Show verbose output\n -d, --dump: Dump all results\n -D, --dump-grouped: Dump all results, grouped by profile\n -r, --render: Render all results\n */\n\nexport const argv: string[] = process.argv ?? [];\nconst minimistArgs: minimist.ParsedArgs = minimist(argv.slice(2));\nconst defaultOptions = {\n verbose: false,\n};\nexport const parsedArgs: MyParsedArgs = merge(defaultOptions, minimistArgs);\n","import ChromeCookieQueryStrategy from \"./ChromeCookieQueryStrategy\";\nimport FirefoxCookieQueryStrategy from \"./FirefoxCookieQueryStrategy\";\nimport SafariCookieQueryStrategy from \"./SafariCookieQueryStrategy\";\nimport CookieQueryStrategy from \"./CookieQueryStrategy\";\nimport ExportedCookie from \"../ExportedCookie\";\nimport LRUCache from \"lru-cache\";\nimport { red } from \"colorette\";\nimport { merge } from \"lodash\";\nimport { parsedArgs } from \"../argv\";\n\nconst cache: LRUCache<string, ExportedCookie[]> = new LRUCache<\n string,\n ExportedCookie[]\n>({\n ttl: 1000 * 10,\n max: 10,\n});\n\nexport default class CompositeCookieQueryStrategy\n implements CookieQueryStrategy\n{\n browserName = \"all\";\n\n #strategies;\n\n constructor() {\n this.#strategies = [\n // CookieStoreQueryStrategy,\n ChromeCookieQueryStrategy,\n FirefoxCookieQueryStrategy,\n SafariCookieQueryStrategy,\n ].map((strategy) => {\n return new strategy();\n });\n }\n\n async queryCookies(name: string, domain: string): Promise<ExportedCookie[]> {\n // domain = domain.match(/(\\w+.+\\w+)/gi)?.pop() ?? domain;\n const key = `${name}:${domain}`;\n const cached = cache.get(key);\n if (cached) {\n return cached;\n }\n if (parsedArgs.verbose) {\n console.log(\"Querying cookies:\", name, domain);\n }\n const results: ExportedCookie[][] = await Promise.all(\n this.#strategies.map(async (strategy: CookieQueryStrategy) => {\n // @ts-ignore\n return strategy\n .queryCookies(name, domain)\n .then((cookies: ExportedCookie[]) => {\n return cookies.map((cookie: ExportedCookie) => {\n return merge(cookie, {\n meta: {\n browser: strategy.browserName,\n },\n });\n });\n })\n .catch((e) => {\n console.log(\n red(`Error querying ${strategy.browserName} cookies`),\n e\n );\n return [];\n });\n })\n );\n const flat: ExportedCookie[] = results.flat();\n cache.set(`${name}:${domain}`, flat);\n return flat;\n }\n}\n","import CookieQueryStrategy from \"./CookieQueryStrategy\";\nimport { env } from \"../global\";\nimport { existsSync } from \"fs\";\nimport { findAllFiles } from \"../findAllFiles\";\nimport { join } from \"path\";\nimport { merge } from \"lodash\";\nimport { isCookieRow } from \"../IsCookieRow\";\nimport { isExportedCookie } from \"../ExportedCookie\";\nimport CookieRow from \"../CookieRow\";\nimport ExportedCookie from \"../ExportedCookie\";\nimport { stringToRegex } from \"../StringToRegex\";\nimport { parsedArgs } from \"../argv\";\nimport consola from \"consola\";\nimport { getChromePassword } from \"./getChromePassword\";\nimport { chromeApplicationSupport } from \"./ChromeApplicationSupport\";\nimport { decrypt } from \"./decrypt\";\nimport { doSqliteQueryWithTransform } from \"./DoSqliteQueryWithTransform\";\n\nexport default class ChromeCookieQueryStrategy implements CookieQueryStrategy {\n browserName = \"Chrome\";\n\n async queryCookies(name: string, domain: string): Promise<ExportedCookie[]> {\n if (process.platform !== \"darwin\") {\n throw new Error(\"This only works on macOS\");\n }\n if (env.FIREFOX_ONLY) {\n return [];\n }\n return getChromeCookies({\n requireJwt: false,\n name,\n domain,\n });\n }\n}\n\nasync function getPromise1(\n name: string,\n domain: string,\n file: string\n): Promise<CookieRow[]> {\n try {\n return await getEncryptedChromeCookie({\n name: name,\n domain: domain,\n file: file,\n });\n } catch (e) {\n if (parsedArgs.verbose) {\n console.log(\"Error getting encrypted cookie\", e);\n }\n return [];\n }\n}\n\nasync function getPromise(name: string, domain: string): Promise<CookieRow[]> {\n try {\n const files: string[] = await findAllFiles({\n path: chromeApplicationSupport,\n name: \"Cookies\",\n });\n const promises: Promise<CookieRow[]>[] = files.map((file) =>\n getPromise1(name, domain, file)\n );\n const results1: CookieRow[][] = await Promise.all(promises);\n return results1.flat().filter(isCookieRow);\n } catch (error) {\n if (parsedArgs.verbose) {\n console.log(\"error\", error);\n }\n return [];\n }\n}\n\nasync function decryptValue(password: string, encryptedValue: Buffer) {\n let d: string | null;\n try {\n d = await decrypt(password, encryptedValue);\n } catch (e) {\n if (parsedArgs.verbose) {\n console.log(\"Error decrypting cookie\", e);\n }\n d = null;\n }\n return d ?? encryptedValue.toString(\"utf-8\");\n}\n\nasync function getChromeCookies({\n name,\n domain = \"%\",\n requireJwt = false,\n}: {\n name: string;\n domain: string;\n requireJwt: boolean | undefined;\n //\n}): //\nPromise<ExportedCookie[]> {\n const encryptedDataItems: CookieRow[] = await getPromise(name, domain);\n const password: string = await getChromePassword();\n const decrypted: Promise<ExportedCookie | null>[] = encryptedDataItems\n .filter(({ value }) => value != null && value.length > 0)\n .map(async (cookieRow: CookieRow) => {\n const encryptedValue: Buffer = cookieRow.value;\n const decryptedValue = await decryptValue(password, encryptedValue);\n const meta = {};\n merge(meta, cookieRow.meta ?? {});\n const exportedCookie: ExportedCookie = {\n domain: cookieRow.domain,\n name: cookieRow.name,\n value: decryptedValue,\n meta: meta,\n };\n const expiry = cookieRow.expiry;\n const mergeExpiry =\n expiry != null && expiry > 0\n ? {\n expiry: new Date(expiry),\n }\n : {\n expiry: \"Infinity\",\n };\n merge(exportedCookie, mergeExpiry);\n return exportedCookie;\n });\n const results: ExportedCookie[] = (await Promise.all(decrypted)).filter(\n isExportedCookie\n );\n if (parsedArgs.verbose) {\n console.log(\"results\", results);\n }\n return results;\n}\n\nasync function getEncryptedChromeCookie({\n name,\n domain,\n file = join(chromeApplicationSupport, \"Default\", \"Cookies\"),\n}: //\n{\n name: string;\n domain: string;\n file: string;\n}): Promise<CookieRow[]> {\n if (!existsSync(file)) {\n throw new Error(`File ${file} does not exist`);\n }\n if (parsedArgs.verbose) {\n const s = file.split(\"/\").slice(-3).join(\"/\");\n consola.start(\n `Trying Chrome (at ${s}) cookie ${name} for domain ${domain}`\n );\n }\n let sql;\n //language=SQL\n sql = \"SELECT encrypted_value, name, host_key, expires_utc FROM cookies\";\n // Define a regular expression to match wildcard characters\n const wildcardRegexp = /^([*%])$/i;\n // Check if the name does not contain wildcard characters\n const specifiedName = name.match(wildcardRegexp) == null;\n // Check if the domain does not contain wildcard characters\n const specifiedDomain = domain.match(wildcardRegexp) == null;\n // Check if the domain contains wildcard characters\n const wildcardDomain = domain.match(/[%*]/) != null;\n // Determine if we should query the domain based on the previous checks\n const queryDomain = specifiedDomain && !wildcardDomain;\n // if we have a wildcard domain, we need to use a regexp\n // If the name is specified or we need to query the domain, we add a WHERE clause to the SQL query\n if (specifiedName || queryDomain) {\n sql += ` WHERE `;\n // If the name is specified, we add a condition to the SQL query to match the name\n if (specifiedName) {\n sql += `name = '${name}'`;\n // If we also need to query the domain, we add an AND operator to the SQL query\n if (queryDomain) {\n sql += ` AND `;\n }\n }\n // If we need to query the domain, we add a condition to the SQL query to match the domain\n if (queryDomain) {\n // The leading dot is replaced with % to match subdomains\n const sqlEmbedDomain = domain.replace(/^[.%]?/, \"%\");\n sql += `host_key LIKE '${sqlEmbedDomain}';`;\n }\n }\n if (parsedArgs.verbose) {\n consola.info(\"Querying:\", sql);\n }\n const domainRegexp: RegExp = stringToRegex(domain);\n const sqliteQuery1: CookieRow[] = await doSqliteQueryWithTransform({\n file: file,\n sql: sql,\n rowFilter: (row) => {\n return row[\"host_key\"].match(domainRegexp) != null;\n },\n rowTransform: (row) => {\n const cookieRow = {\n expiry: (row[\"expires_utc\"] / 1000000 - 11644473600) * 1000,\n domain: row[\"host_key\"],\n name: row[\"name\"],\n value: row[\"encrypted_value\"],\n };\n if (parsedArgs.verbose) {\n consola.info(\"Found\", cookieRow);\n }\n return cookieRow;\n },\n });\n return sqliteQuery1.filter((row) => {\n // TODO: is this needed?\n return row.domain.match(domainRegexp) != null;\n });\n}\n","import { merge } from \"lodash\";\n\nexport const env: any = {};\nmerge(env, process?.env ?? {});\nexport const HOME: string = env[\"HOME\"];\nif (!HOME) {\n throw new Error(\"HOME environment variable is not set\");\n}\n","import { existsSync } from \"fs\";\nimport { parsedArgs } from \"./argv\";\nimport consola from \"consola\";\nimport { sync } from \"fast-glob\";\n\ntype FindFilesOptions = {\n path: string;\n name: string;\n maxDepth?: number;\n};\n\nexport function findAllFiles(\n //\n { path, name, maxDepth = 2 }: FindFilesOptions\n): //\nstring[] {\n if (!existsSync(path)) {\n throw new Error(`Path ${path} does not exist`);\n }\n\n if (parsedArgs.verbose) {\n consola.start(`Searching for ${name} files in ${path}`);\n }\n\n const files: string[] = sync(`${path}/**/${name}`, {\n onlyFiles: true,\n deep: maxDepth,\n });\n\n if (parsedArgs.verbose) {\n if (files.length > 0) {\n consola.success(`Found ${files.length} ${name} files`);\n consola.info(files);\n }\n }\n\n return files;\n}\n","import CookieRow from \"./CookieRow\";\n\nexport function isCookieRow(obj: any): obj is CookieRow {\n return (\n obj.domain !== undefined &&\n obj.name !== undefined &&\n obj.value !== undefined\n );\n}\n","export default interface ExportedCookie {\n domain: string;\n name: string;\n value: string;\n expiry?: Date | \"Infinity\";\n meta?: any;\n}\n\nexport function isExportedCookie(obj: any): obj is ExportedCookie {\n return (\n typeof obj.domain === \"string\" &&\n typeof obj.name === \"string\" &&\n typeof obj.value === \"string\" &&\n (obj.expiry === undefined ||\n obj.expiry instanceof Date ||\n obj.expiry === \"Infinity\") &&\n (obj.meta === undefined || typeof obj.meta === \"object\")\n );\n}\n","// This function converts a string into a regular expression\nexport function stringToRegex(s: string): RegExp {\n // Replace all occurrences of '.' with a literal '.'\n const s1 = s.replaceAll(/\\./gi, \".\");\n // Replace all occurrences of '%' with '.*' to match any number of any characters\n const s2 = s1.replace(/%/g, \".*\");\n // Replace all occurrences of '*' with '.*' to match any number of any characters\n const s3 = s2.replace(/\\*/g, \".*\");\n // Return the new string as a RegExp object\n return new RegExp(s3);\n}\n\n/*\n%.example.com -> .*\\.example\\.com\nexample.com -> example\\.com\n*/\n","import { execSimple } from \"../execSimple\";\n\nconst chromePassword: Promise<string> = execSimple(\n 'security find-generic-password -w -s \"Chrome Safe Storage\"'\n);\n\nexport async function getChromePassword(): Promise<string> {\n return await chromePassword;\n}\n","import { execSync } from \"child_process\";\n\nexport async function execSimple(command: string): Promise<string> {\n try {\n const stdout = execSync(command, {\n encoding: \"binary\",\n maxBuffer: 5 * 1024,\n });\n return stdout.trim();\n } catch (error) {\n throw error;\n }\n}\n","import { join } from \"path\";\nimport { HOME } from \"../global\";\n\nexport const chromeApplicationSupport: string = join(\n HOME,\n \"Library\",\n \"Application Support\",\n \"Google\",\n \"Chrome\"\n);\n","import { BinaryLike, createDecipheriv, pbkdf2 } from \"crypto\";\nimport { parsedArgs } from \"../argv\";\nimport consola from \"consola\";\n\n// Function to decrypt encrypted data using a password\nexport async function decrypt(\n password: BinaryLike, // The password to use for decryption\n encryptedData: Buffer // The data to decrypt\n): Promise<string> {\n // Returns a promise that resolves with the decrypted string\n // Check if password is a string\n if (typeof password !== \"string\") {\n throw new Error(\"password must be a string: \" + password);\n }\n let encryptedData1: any;\n encryptedData1 = encryptedData;\n // Check if encryptedData is an object\n if (encryptedData1 == null || typeof encryptedData1 !== \"object\") {\n throw new Error(\"encryptedData must be a object: \" + encryptedData1);\n }\n // Check if encryptedData is a Buffer or an array of Buffers\n if (!(encryptedData1 instanceof Buffer)) {\n if (Array.isArray(encryptedData1) && encryptedData1[0] instanceof Buffer) {\n [encryptedData1] = encryptedData1;\n // Log if encryptedData is an array of buffers\n if (parsedArgs.verbose) {\n console.log(\n `encryptedData is an array of buffers, selected first: ${encryptedData1}`\n );\n }\n } else {\n throw new Error(\"encryptedData must be a Buffer: \" + encryptedData1);\n }\n encryptedData1 = Buffer.from(encryptedData1);\n }\n // Log the password being used for decryption\n if (parsedArgs.verbose) {\n consola.start(`Trying to decrypt with password: ${password}`);\n }\n // Return a promise that resolves with the decrypted string\n return new Promise((resolve, reject) => {\n // Use pbkdf2 to derive a key from the password\n pbkdf2(password, \"saltysalt\", 1003, 16, \"sha1\", (error, buffer) => {\n try {\n // Handle any errors from pbkdf2\n if (error) {\n if (parsedArgs.verbose) {\n console.log(\"Error doing pbkdf2\", error);\n }\n reject(error);\n return;\n }\n\n // Check if the buffer length is 16\n if (buffer.length !== 16) {\n if (parsedArgs.verbose) {\n console.log(\n \"Error doing pbkdf2, buffer length is not 16\",\n buffer.length\n );\n }\n reject(new Error(\"Buffer length is not 16\"));\n return;\n }\n\n // Create an initialization vector\n const str = new Array(17).join(\" \");\n const iv = Buffer.from(str, \"binary\");\n // Create a decipher using the derived key and initialization vector\n const decipher = createDecipheriv(\"aes-128-cbc\", buffer, iv);\n decipher.setAutoPadding(false);\n\n // Remove the first 3 bytes from the encrypted data\n if (encryptedData1 && encryptedData1.slice) {\n encryptedData1 = encryptedData1.slice(3);\n }\n\n // Check if the encrypted data length is a multiple of 16\n if (encryptedData1.length % 16 !== 0) {\n if (parsedArgs.verbose) {\n console.log(\n \"Error doing pbkdf2, encryptedData length is not a multiple of 16\",\n encryptedData1.length\n );\n }\n reject(new Error(\"encryptedData length is not a multiple of 16\"));\n return;\n }\n\n // Update the decipher with the encrypted data\n let decoded = decipher.update(encryptedData1);\n try {\n // Finalize the decipher\n decipher.final(\"utf-8\");\n } catch (e) {\n if (parsedArgs.verbose) {\n console.log(\"Error doing decipher.final()\", e);\n }\n reject(e);\n return;\n }\n\n // Remove padding from the decoded data\n const padding = decoded[decoded.length - 1];\n if (padding) {\n decoded = decoded.slice(0, 0 - padding);\n }\n // Convert the decoded data to a string\n const decodedString = decoded.toString(\"utf8\");\n // Resolve the promise with the decrypted string\n resolve(decodedString);\n } catch (e) {\n // Reject the promise if there is an error\n reject(e);\n }\n });\n });\n}\n","import CookieRow from \"../CookieRow\";\nimport fs from \"fs\";\nimport { Database } from \"sqlite3\";\nimport { merge } from \"lodash\";\nimport { parsedArgs } from \"../argv\";\nimport consola from \"consola\";\n\nexport interface DoSqliteQueryWithTransformOptions {\n file: string;\n sql: string;\n rowFilter?: (row: any) => boolean;\n rowTransform: (row: any) => CookieRow;\n}\n\nfunction checkFileExistence(file: string) {\n if (!file || !fs.existsSync(file)) {\n throw new Error(`File ${file} does not exist`);\n }\n}\n\nfunction createDatabase(file: string) {\n return new Database(file);\n}\n\nfunction transformRows(\n //\n rows: any[],\n rowFilter: (row: any) => boolean,\n rowTransform: (row: any) => CookieRow,\n file: string\n //\n): CookieRow[] {\n return rows.filter(rowFilter).map((row: any) => {\n const metaData = {\n meta: {\n file: file,\n },\n };\n\n const cookieRow: CookieRow = rowTransform(row);\n\n return merge(metaData, cookieRow);\n });\n}\n\nexport async function doSqliteQueryWithTransform(\n //\n {\n //\n file,\n sql,\n rowFilter = () => true,\n rowTransform,\n }: DoSqliteQueryWithTransformOptions\n): //\nPromise<CookieRow[]> {\n checkFileExistence(file);\n\n const db: Database = createDatabase(file);\n\n return new Promise((resolve, reject) => {\n db.all(sql, (err: Error, rows: any[]) => {\n if (err) {\n return reject(err);\n }\n\n if (!rows || rows.length === 0) {\n return resolve([]);\n }\n\n const cookieRows: CookieRow[] = transformRows(\n rows,\n rowFilter,\n rowTransform,\n file\n );\n\n if (parsedArgs.verbose) {\n consola.log(`Rows: ${JSON.stringify(rows)}`);\n }\n\n return resolve(cookieRows);\n });\n });\n}\n","import * as path from \"path\";\nimport CookieQueryStrategy from \"./CookieQueryStrategy\";\nimport { HOME } from \"../global\";\nimport { existsSync } from \"fs\";\nimport { findAllFiles } from \"../findAllFiles\";\nimport ExportedCookie from \"../ExportedCookie\";\nimport CookieRow from \"../CookieRow\";\nimport CookieSpec from \"../CookieSpec\";\nimport { specialCases } from \"../SpecialCases\";\nimport { parsedArgs } from \"../argv\";\nimport { doSqliteQueryWithTransform } from \"./DoSqliteQueryWithTransform\";\n\nexport default class FirefoxCookieQueryStrategy implements CookieQueryStrategy {\n browserName = \"Firefox\";\n\n async queryCookies(name: string, domain: string): Promise<ExportedCookie[]> {\n if (process.platform !== \"darwin\") {\n // TODO: implement\n return [];\n }\n if (parsedArgs.browser !== \"firefox\") {\n return [];\n }\n const cookies = await this.#getFirefoxCookie({ name, domain });\n if (Array.isArray(cookies)) {\n return cookies.map((cookie: CookieRow) => {\n return {\n domain: cookie.domain,\n name: cookie.name,\n value: cookie.value.toString(\"utf8\"),\n };\n });\n } else {\n return [];\n }\n }\n\n async #getFirefoxCookie(\n { name, domain }: CookieSpec //\n ) {\n const files: string[] = findAllFiles({\n path: path.join(\n HOME,\n \"Library\",\n \"Application Support\",\n \"Firefox\",\n \"Profiles\"\n ),\n name: \"cookies.sqlite\",\n });\n const fn: (file: string) => Promise<CookieRow[]> = async (file: string) => {\n return await this.#queryCookiesDb(file, name, domain);\n };\n const all: CookieRow[][] = await Promise.all(files.map(fn));\n // flatten\n return all.flat();\n }\n\n async #queryCookiesDb(\n file: string,\n name: string,\n domain: string\n ): Promise<CookieRow[]> {\n if (file && !existsSync(file)) {\n throw new Error(`File ${file} does not exist`);\n }\n let sql;\n //language=SQL\n sql = \"SELECT value, name, host FROM moz_cookies\";\n const { specifiedName, specifiedDomain } = specialCases({ name, domain });\n if (specifiedName || specifiedDomain) {\n sql += ` WHERE `;\n if (specifiedName) {\n sql += `name = '${name}'`;\n if (specifiedDomain) {\n sql += ` AND `;\n }\n }\n if (specifiedDomain) {\n sql += `host LIKE '${domain}';`;\n }\n }\n const rowTransform = (row: any) => {\n // row is object key by column name\n const value = row.value as string;\n return {\n domain: row.domain as string,\n name: row.name as string,\n value: Buffer.from(value, \"utf8\"),\n };\n };\n try {\n return await doSqliteQueryWithTransform({\n file,\n sql,\n rowTransform,\n });\n } catch (e) {\n console.error(`Error querying ${file}`, e);\n return [];\n }\n }\n}\n","import CookieSpec from \"./CookieSpec\";\n\nexport function specialCases({ name, domain }: CookieSpec): {\n specifiedName: boolean;\n specifiedDomain: boolean;\n //\n} {\n const wildcardRegexp = /^([*%])$/i;\n return {\n specifiedName: name.match(wildcardRegexp) == null,\n specifiedDomain: domain.match(wildcardRegexp) == null,\n //\n };\n}\n","import CookieQueryStrategy from \"./CookieQueryStrategy\";\nimport ExportedCookie from \"../ExportedCookie\";\n\nexport default class SafariCookieQueryStrategy implements CookieQueryStrategy {\n browserName = \"Safari\";\n\n async queryCookies(name: string, domain: string): Promise<ExportedCookie[]> {\n // TODO: implement\n return [];\n }\n}\n","import jsonwebtoken, { JwtPayload } from \"jsonwebtoken\";\nimport { parsedArgs } from \"./argv\";\n\nexport default function isValidJwt(token: string) {\n try {\n const result = jsonwebtoken.decode(token, { complete: true });\n if (parsedArgs.verbose && result) {\n console.debug(result);\n }\n const payload: JwtPayload = result?.payload as JwtPayload;\n if (payload) {\n const exp = payload.exp;\n if (exp) {\n const now = new Date().getTime() / 1000;\n if (now > exp) {\n return false;\n }\n }\n }\n return true;\n } catch (err) {\n return false;\n }\n}\n","import CookieSpec from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\nimport { queryCookies } from \"./queryCookies\";\nimport ChromeCookieQueryStrategy from \"./browsers/ChromeCookieQueryStrategy\";\nimport { isExportedCookie } from \"./ExportedCookie\";\n\nexport async function getChromeCookie(\n params: CookieSpec\n): Promise<ExportedCookie | undefined> {\n const cookies = await queryCookies(\n params,\n new ChromeCookieQueryStrategy()\n //\n );\n if (cookies.length == 0) {\n throw new Error(\"Cookie not found\");\n }\n return cookies.find(isExportedCookie);\n}\n","import CookieSpec from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\nimport { queryCookies } from \"./queryCookies\";\nimport FirefoxCookieQueryStrategy from \"./browsers/FirefoxCookieQueryStrategy\";\n\nexport async function getFirefoxCookie(\n params: CookieSpec\n): Promise<ExportedCookie | undefined> {\n const cookies: ExportedCookie[] = await queryCookies(\n params,\n new FirefoxCookieQueryStrategy()\n //\n );\n if (Array.isArray(cookies) && cookies.length > 0) {\n return cookies.find((cookie) => cookie != null);\n } else {\n throw new Error(\"Cookie not found\");\n }\n}\n","import { groupBy } from \"lodash\";\nimport { resultsRendered } from \"./resultsRendered\";\nimport { MultiCookieSpec } from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\nimport { comboQueryCookieSpec } from \"./comboQueryCookieSpec\";\n\nexport async function getGroupedRenderedCookies(\n cookieSpec: MultiCookieSpec\n): Promise<string[]> {\n const cookies: ExportedCookie[] = await comboQueryCookieSpec(cookieSpec);\n if (cookies.length == 0) {\n throw new Error(\"Cookie not found\");\n }\n const groupedByFile = groupBy(cookies, (r: ExportedCookie) => r.meta?.file);\n return Object.keys(groupedByFile).map((file: string) => {\n const results: ExportedCookie[] = groupedByFile[file];\n return resultsRendered(results);\n });\n}\n","import { orderBy, uniqBy } from \"lodash\";\nimport ExportedCookie from \"./ExportedCookie\";\n\nexport function resultsRendered(results: ExportedCookie[]) {\n // sort by name and expiry descending\n // takes the latest expiry for each name\n const orderedResults = orderBy(results, [\"name\", \"expiry\"], [\"asc\", \"desc\"]);\n return uniqBy(orderedResults, (r: ExportedCookie) => r.name)\n .map((r: ExportedCookie) => r.name + \"=\" + r.value)\n .join(\"; \");\n}\n","import { MultiCookieSpec } from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\nimport { queryCookies } from \"./queryCookies\";\nimport { uniqBy } from \"lodash\";\n\nexport async function comboQueryCookieSpec(\n cookieSpec: MultiCookieSpec\n): Promise<ExportedCookie[]> {\n const cookies: ExportedCookie[] = [];\n if (Array.isArray(cookieSpec)) {\n const results: Awaited<ExportedCookie[]>[] = await Promise.all(\n cookieSpec.map((cs) => {\n return queryCookies(cs);\n })\n );\n for (const exportedCookie of results.flat()) {\n cookies.push(exportedCookie);\n }\n } else {\n const singleQuery: ExportedCookie[] = await queryCookies(cookieSpec);\n cookies.push(...singleQuery);\n }\n return uniqBy(cookies, JSON.stringify);\n}\n","import { resultsRendered } from \"./resultsRendered\";\nimport { comboQueryCookieSpec } from \"./comboQueryCookieSpec\";\nimport { MultiCookieSpec } from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\nimport consola from \"consola\";\n\nexport async function getMergedRenderedCookies(\n cookieSpec: MultiCookieSpec\n): Promise<string> {\n const cookies: ExportedCookie[] = await comboQueryCookieSpec(cookieSpec);\n return cookies.length > 0 ? resultsRendered(cookies) : \"\";\n}\n","// noinspection JSUnusedGlobalSymbols,ExceptionCaughtLocallyJS\n\nimport { fetch as fetchImpl } from \"cross-fetch\";\nimport { merge } from \"lodash\";\n// noinspection SpellCheckingInspection\nimport destr from \"destr\";\nimport { cookieJarPromise } from \"./CookieStore\";\nimport UserAgent from \"user-agents\";\nimport { parsedArgs } from \"./argv\";\nimport { blue, redBright, yellow } from \"colorette\";\nimport { getMergedRenderedCookies } from \"./getMergedRenderedCookies\";\nimport { cookieSpecsFromUrl } from \"./cookieSpecsFromUrl\";\nimport CookieSpec from \"./CookieSpec\";\nimport consola from \"consola\";\n\nif (typeof fetchImpl !== \"function\") {\n consola.error(\"fetch is not a function\");\n throw new Error(\"fetch is not a function\");\n}\n\nconst userAgent = new UserAgent().toString();\n\ninterface FetchRequestInit {\n url: RequestInfo | URL | string;\n options?: RequestInit;\n}\n\nexport async function fetchWithCookies(\n url: RequestInfo | URL | string,\n options: RequestInit | undefined = {},\n fetch: Function = fetchImpl as Function,\n originalRequest: FetchRequestInit | undefined = undefined\n): Promise<Response> {\n if (typeof fetch !== \"function\") {\n const message = \"fetch is not a function\";\n consola.error(message);\n throw new Error(message);\n }\n const originalRequest1 = originalRequest || { url, options };\n const headers: HeadersInit = {\n \"User-Agent\": userAgent,\n };\n const defaultOptions: RequestInit = {\n headers,\n redirect: \"manual\",\n };\n const url2: string = `${url}`;\n const url1: URL = new URL(url2);\n consola.start(\"fetchWithCookies\", url2);\n const cookieSpecs: CookieSpec[] = cookieSpecsFromUrl(url1);\n headers[\"Cookie\"] = await getMergedRenderedCookies(cookieSpecs).catch(\n (err) => {\n consola.error(err);\n return \"\";\n }\n );\n if (parsedArgs[\"dump-request-headers\"]) {\n consola.info(redBright(\"Request URL:\"), url1.href);\n consola.info(blue(\"Request headers:\"), headers);\n }\n const newOptions1: RequestInit = merge(defaultOptions, { headers }, options);\n try {\n const res: Response = await fetch(url1, newOptions1);\n // noinspection JSMismatchedCollectionQueryUpdate\n const headers: [string, string][] = [];\n res.headers.forEach((value, key) => {\n headers.push([key, value]);\n });\n // for (const [key, value] of headers) {\n // if (key === \"set-cookie\") {\n // const cookieJar1 = await cookieJarPromise;\n // await cookieJar1.setCookie(value, url2);\n // if (parsedArgs.verbose) {\n // console.log(blue(`Set-Cookie:`), yellow(value), yellow(url2));\n // }\n // }\n // }\n\n const newUrl: string = res.headers.get(\"location\") ?? res.url;\n // const sameHost = new URL(newUrl).host === url1.host;\n if (res.status == 301 || res.status == 302) {\n // follow the redirect\n if (newUrl && newUrl !== url2) {\n if (parsedArgs.verbose || parsedArgs[\"dump-response-headers\"]) {\n console.log(blue(`Redirected to `), yellow(newUrl));\n }\n return fetchWithCookies(\n //\n newUrl,\n newOptions1,\n fetch,\n originalRequest1\n //\n );\n }\n }\n if (res.status == 303 && newUrl && newUrl !== url2) {\n // follow the redirect with GET\n let newOptions2: RequestInit = {};\n switch (newOptions1.method) {\n case \"POST\":\n case \"PUT\":\n case \"DELETE\":\n merge(newOptions2, newOptions1, { method: \"GET\" });\n newOptions2.body = undefined; // TODO: is this needed?\n break;\n case \"HEAD\":\n case \"GET\":\n merge(newOptions2, newOptions1);\n newOptions2.body = undefined; // TODO: is this needed?\n break;\n default:\n merge(newOptions2, newOptions1);\n break;\n }\n if (parsedArgs.verbose) {\n console.log(blue(`Redirected to `), yellow(newUrl));\n }\n return fetchWithCookies(\n //\n newUrl,\n newOptions2,\n fetch,\n originalRequest1\n //\n );\n }\n\n const arrayBuffer1: Promise<ArrayBuffer> = res.arrayBuffer();\n\n async function arrayBuffer(): Promise<ArrayBuffer> {\n return arrayBuffer1;\n }\n\n async function buffer(): Promise<Buffer> {\n return arrayBuffer().then(Buffer.from);\n }\n\n async function text(): Promise<string> {\n return buffer().then((buffer: Buffer) => buffer.toString(\"utf8\"));\n }\n\n async function json(): Promise<any> {\n return text().then((text: string) => destr(text));\n }\n\n async function formData(): Promise<FormData> {\n const urlSearchParams: URLSearchParams = await text().then(\n (text) => new URLSearchParams(text)\n );\n const formData = new FormData();\n for (const [key, value] of urlSearchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n }\n\n const res1: Response = res;\n const source2 = {\n arrayBuffer,\n text,\n json,\n buffer,\n formData,\n //\n };\n return merge(res1, source2);\n } catch (e) {\n throw e;\n }\n}\n","import CookieSpec from \"./CookieSpec\";\nimport { uniqBy } from \"lodash\";\n\nexport function cookieSpecsFromUrl(url: URL | string): CookieSpec[] {\n const url1 = typeof url == \"string\" ? new URL(url) : url;\n const cookieSpecs = [];\n const splits = url1.hostname.split(\".\");\n const tld = splits.slice(-2).join(\".\");\n const cookieSpec: CookieSpec = {\n name: \"%\",\n domain: \"%.\" + tld,\n };\n cookieSpecs.push(cookieSpec);\n const cookieSpec1: CookieSpec = {\n name: \"%\",\n domain: url1.hostname,\n };\n cookieSpecs.push(cookieSpec1);\n // const isWww = splits.slice(-3)[0] === \"www\";\n const cookieSpec2: CookieSpec = {\n name: \"%\",\n domain: tld,\n };\n cookieSpecs.push(cookieSpec2);\n return uniqBy(cookieSpecs, JSON.stringify);\n}\n"],"names":[],"version":3,"file":"module.js.map","sourceRoot":"../"}
1
+ {"mappings":";;;;;;;;;;;;;;;;;;A,I;AGwBO,MAAM,4CAAiB,AAAA,CAAA,2BAAA,QAAQ,IAAI,AAAJ,MAAI,QAAA,6BAAA,KAAA,IAAA,2BAAI,EAAE;AAChD,MAAM,qCAAoC,CAAA,GAAA,eAAA,EAAS,0CAAK,KAAK,CAAC;AAC9D,MAAM,uCAAiB;IACrB,SAAS;AACV;AACM,MAAM,4CAA2B,CAAA,GAAA,YAAA,EAAM,sCAAgB;;;;A,I;AG3BvD,MAAM,4CAAW,CAAA;AACxB,CAAA,GAAA,YAAA,EAAM,2CAAK,AAAA,CAAA,2BAAA,YAAO,QAAP,YAAO,KAAA,IAAA,KAAA,IAAP,QAAS,GAAG,AAAH,MAAG,QAAA,6BAAA,KAAA,IAAA,2BAAI,CAAA;AACpB,MAAM,2CAAe,yCAAG,CAAC,OAAO;AACvC,IAAI,CAAC,0CACH,MAAM,IAAI,MAAM;;;;;;;;ACKZ,SAAU,0CACd,EAAE;AACF,QAAE,IAAI,QAAE,IAAI,YAAE,WAAW,GAAqB;IAG9C,IAAI,CAAC,CAAA,GAAA,iBAAA,EAAW,OACd,MAAM,IAAI,MAAM,CAAA,KAAA,EAAQ,KAAI,eAAA,CAAiB;IAG/C,IAAI,CAAA,GAAA,yCAAA,EAAW,OAAO,EACpB,CAAA,GAAA,cAAA,EAAQ,KAAK,CAAC,CAAA,cAAA,EAAiB,KAAI,UAAA,EAAa,KAAI,CAAE;IAGxD,MAAM,QAAkB,CAAA,GAAA,WAAA,EAAK,CAAA,EAAG,KAAI,IAAA,EAAO,KAAI,CAAE,EAAE;QACjD,WAAW;QACX,MAAM;IACP;IAED,IAAI,CAAA,GAAA,yCAAA,EAAW,OAAO,EACpB;QAAA,IAAI,MAAM,MAAM,GAAG,GAAG;YACpB,CAAA,GAAA,cAAA,EAAQ,OAAO,CAAC,CAAA,MAAA,EAAS,MAAM,MAAM,CAAA,CAAA,EAAI,KAAI,MAAA,CAAQ;YACrD,CAAA,GAAA,cAAA,EAAQ,IAAI,CAAC;QACd;IAAA;IAGH,OAAO;AACT;;;;;ACnCM,SAAU,0CAAY,GAAQ;IAClC,OACE,IAAI,MAAM,KAAK,aACf,IAAI,IAAI,KAAK,aACb,IAAI,KAAK,KAAK;AAElB;;;ACAM,SAAU,0CAAiB,GAAQ;IACvC,OACE,OAAO,IAAI,MAAM,KAAK,YACtB,OAAO,IAAI,IAAI,KAAK,YACpB,OAAO,IAAI,KAAK,KAAK,YACpB,CAAA,IAAI,MAAM,KAAK,aACd,IAAI,MAAM,YAAY,QACtB,IAAI,MAAM,KAAK,UAAA,KAChB,CAAA,IAAI,IAAI,KAAK,aAAa,OAAO,IAAI,IAAI,KAAK,QAAA;AAEnD;;;AClBA,4DAA4D;AACtD,SAAU,0CAAc,CAAS;IACrC,oDAAoD;IACpD,MAAM,KAAK,EAAE,UAAU,CAAC,QAAQ;IAChC,iFAAiF;IACjF,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM;IAC5B,iFAAiF;IACjF,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO;IAC7B,2CAA2C;IAC3C,OAAO,IAAI,OAAO;AACpB,EAEA;;;AAGE;;;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AEbI,SAAgB,0CAAW,OAAe;I,O,gC,I,E,K,G,K,G;QAC9C,IAAI;YACF,MAAM,SAAS,CAAA,GAAA,eAAA,EAAS,SAAS;gBAC/B,UAAU;gBACV,WAAW;YACZ;YACD,OAAO,OAAO,IAAI;QACnB,EAAC,OAAO,OAAO;YACd,MAAM;QACP;IACH;AAAC;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;ADVD,MAAM,uCAAkC,CAAA,GAAA,yCAAA,EACtC;AAGI,SAAgB;I,O,gC,I,E,K,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AkB;gBAC9B;gBACD,IAAI,CAAA,GAAA,yCAAA,EAAW,OAAO,EACpB,CAAA,GAAA,cAAA,EAAQ,IAAI,CAAC,SAAS;gBAExB,OAAO;YACT;QACD;QACD,OAAO,aAAa,MAAM,CAAC,CAAC;YAC1B,wBAAwB;YACxB,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,iBAAiB;QAC3C;IACF;AAAC;;;;;;;AYlNK,SAAU,0CAAa,QAAE,IAAI,UAAE,MAAM,EAAc;IAKvD,MAAM,iBAAiB;IACvB,OAAO;QACL,eAAe,KAAK,KAAK,CAAC,mBAAmB;QAC7C,iBAAiB,OAAO,KAAK,CAAC,mBAAmB;IAElD;AACH;;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;A,I,+C,a,U,sB,I,S,Q,E,K,E,I,E,C;I,I,S,O,C,G,M,I,U;I,I,O,U,a,a,S,C,I,C,M,G,C,W,M,I,U;I,O,S,M,I,S,M,E,I,C,Y,I,E,K,G,M,G,C;A;A,I,6D,oE;ADDA,MAAqB;IAArB,aAAA;Q,4D,G,C,I;QACE,IAAA,CAAA,WAAW,GAAG;IAyFhB;IAvFQ,aAAa,IAAY,EAAE,MAAc,EAAzC;Q,O,gC,I,E,K,G,K,G;YACJ,IAAI,QAAQ,QAAQ,KAAK,UACvB,kBAAkB;YAClB,OAAO,EAAE;YAEX,IAAI,CAAA,GAAA,yCAAA,EAAW,OAAO,KAAK,WACzB,OAAO,EAAE;YAEX,MAAM,UAAU,MAAM,6CAAA,IAAI,EAAA,6DAAA,KAAA,oEAAkB,IAAA,CAAtB,IAAI,EAAmB;sBAAE;wBAAM;YAAM;YAC3D,IAAI,MAAM,OAAO,CAAC,UAChB,OAAO,QAAQ,GAAG,CAAC,CAAC;gBAClB,OAAO;oBACL,QAAQ,OAAO,MAAM;oBACrB,MAAM,OAAO,IAAI;oBACjB,OAAO,OAAO,KAAK,CAAC,QAAQ,CAAC;gBAC9B;YACH;iBAEA,OAAO,EAAE;QAEb;IAAC;AAmEF;AAhEG,8DAAA,IAAA,WAAA,qEAAA,SAAA,6CAAA,QAAE,IAAI,UAAE,MAAM,EAAc;I,O,gC,I,E,K,G,K,G;QAE5B,MAAM,QAAkB,CAAA,GAAA,yCAAA,EAAa;YACnC,MAAM,YACJ,CAAA,GAAA,wCAAA,GACA,WACA,uBACA,WACA;YAEF,MAAM;QACP;QACD,MAAM,KAA6C,CAAO,OAA1D,gCAAA,IAAA,EAAA,KAAA,GAAA,KAAA,GAAA;gBACE,OAAO,MAAM,6CAAA,IAAI,EAAA,6DAAA,KAAA,kEAAgB,IAAA,CAApB,IAAI,EAAiB,MAAM,MAAM;YAChD;QACA,MAAM,MAAqB,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC;QACvD,UAAU;QACV,OAAO,IAAI,IAAI;IACjB;AAGE,GAAA,mEAAA,SAAA,2CAAA,IAAY,EACZ,IAAY,EACZ,MAAc;I,O,gC,I,E,K,G,K,G;QAEd,IAAI,QAAQ,CAAC,CAAA,GAAA,iBAAA,EAAW,OACtB,MAAM,IAAI,MAAM,CAAA,KAAA,EAAQ,KAAI,eAAA,CAAiB;QAE/C,IAAI;QACJ,cAAc;QACd,MAAM;QACN,MAAM,iBAAE,aAAa,mBAAE,eAAe,EAAE,GAAG,CAAA,GAAA,yCAAA,EAAa;kBAAE;oBAAM;QAAM;QACtE,IAAI,iBAAiB,iBAAiB;YACpC,OAAO,CAAA,OAAA,CAAS;YAChB,IAAI,eAAe;gBACjB,OAAO,CAAA,QAAA,EAAW,KAAI,CAAA,CAAG;gBACzB,IAAI,iBACF,OAAO,CAAA,KAAA,CAAO;YAEjB;YACD,IAAI,iBACF,OAAO,CAAA,WAAA,EAAc,OAAM,EAAA,CAAI;QAElC;QACD,MAAM,eAAe,CAAC;YACpB,mCAAmC;YACnC,MAAM,QAAQ,IAAI,KAAe;YACjC,OAAO;gBACL,QAAQ,IAAI,MAAgB;gBAC5B,MAAM,IAAI,IAAc;gBACxB,OAAO,OAAO,IAAI,CAAC,OAAO;YAC3B;QACH;QACA,IAAI;YACF,OAAO,MAAM,CAAA,GAAA,yCAAA,EAA2B;sBACtC;qBACA;8BACA;YACD;QACF,EAAC,OAAO,GAAG;YACV,QAAQ,KAAK,CAAC,CAAA,eAAA,EAAkB,KAAI,CAAE,EAAE;YACxC,OAAO,EAAE;QACV;IACH;A;IAzFmB,2CAAA;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AETP;IAAd,aAAA;QACE,IAAA,CAAA,WAAW,GAAG;IAMhB;IAJQ,aAAa,IAAY,EAAE,MAAc,EAAzC;Q,O,gC,I,E,K,G,K,G;YACJ,kBAAkB;YAClB,OAAO,EAAE;QACX;IAAC;AACF;;;;;;;ACVD,sHAAsH;AACtH,2IAA2I;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AAErI,SAAgB,0CACpB,KAAU,EACV,QAA+D,EAC/D,EAA+C;I,O,gC,I,E,K,G,K,G;QAE/C,IAAI,IACF,OAAO,0CACL,OACA,CAAO,OAAU,OAAe,QAFlC,gCAAA,IAAA,EAAA,KAAA,GAAA,KAAA,GAAA;gBAGI,IAAI;oBACF,OAAO,MAAM,SAAS,OAAO,OAAO;gBACrC,EAAC,OAAO,OAAO;oBACd,OAAO,OAAO,MAAM,aAAa,GAAG,SAAS;gBAC9C;YACH;QAKJ,2GAA2G;QAC3G,4CAA4C;QAC5C,MAAM,KAAmB,MAAM,GAAG,CAAC;QAEnC,4EAA4E;QAC5E,0DAA0D;QAC1D,MAAM,aAA2B,MAAM,QAAQ,GAAG,CAAC;QAEnD,6EAA6E;QAC7E,6HAA6H;QAC7H,oHAAoH;QACpH,4CAA4C;QAC5C,aAAa;QACb,OAAO,WAAW,IAAI;IACxB;AAAC;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AfzBD,MAAM,8BAA4C,IAAI,CAAA,GAAA,eAAA,EAGpD;IACA,KAAK;IACL,KAAK;AACN;AAEa;IAOZ,aAAA;QAJA,IAAA,CAAA,WAAW,GAAG;QAKZ,IAAI,CAAC,UAAU,GAAG;YAChB,4BAA4B;YAC5B,CAAA,GAAA,wCAAA;YACA,CAAA,GAAA,wCAAA;YACA,CAAA,GAAA,wCAAA;SACD,CAAC,GAAG,CAAC,CAAC;YACL,OAAO,IAAI;QACb;IACF;IAEM,aAAa,IAAY,EAAE,MAAc,EAAzC;Q,O,gC,I,E,K,G,K,G;YACJ,0DAA0D;YAC1D,MAAM,MAAM,CAAA,EAAG,KAAI,CAAA,EAAI,OAAM,CAAE;YAC/B,IAAI,4BAAM,GAAG,CAAC,MAAM;gBAClB,MAAM,SAAS,4BAAM,GAAG,CAAC;gBACzB,IAAI,QACF,OAAO;YAEV;YACD,IAAI,CAAA,GAAA,yCAAA,EAAW,OAAO,EACpB,CAAA,GAAA,cAAA,EAAQ,GAAG,CAAC,qBAAqB,MAAM;YAEzC,MAAM,UAAU,MAAM,CAAA,GAAA,yCAAA,EAAa,IAAI,CAAC,UAAU,EAAE,CAAO,WAA3D,gCAAA,IAAA,EAAA,KAAA,GAAA,KAAA,GAAA;oBACE,OAAO,SACJ,YAAY,CAAC,MAAM,QACnB,IAAI,CAAC,CAAC;wBACL,OAAO,QAAQ,GAAG,CAAC,CAAC;4BAClB,OAAO,CAAA,GAAA,YAAA,EAAM,QAAQ;gCACnB,MAAM;oCACJ,SAAS,SAAS,WAAW;gCAC9B;4BACF;wBACH;oBACF,GACC,KAAK,CAAC,CAAC;wBACN,CAAA,GAAA,cAAA,EAAQ,KAAK,CAAC,CAAA,eAAA,EAAkB,SAAS,WAAW,CAAA,QAAA,CAAU,EAAE;wBAChE,OAAO,EAAE;oBACX;gBACJ;YACA,4BAAM,GAAG,CAAC,CAAA,EAAG,KAAI,CAAA,EAAI,OAAM,CAAE,EAAE;YAC/B,OAAO;QACT;IAAC;AACF;;;;;AgBlEa,kDAAqB,KAAa;IAC9C,IAAI;QACF,MAAM,SAAS,CAAA,GAAA,mBAAA,EAAa,MAAM,CAAC,OAAO;YAAE,UAAU;QAAI;QAC1D,IAAI,CAAA,GAAA,yCAAA,EAAW,OAAO,IAAI,QACxB,QAAQ,KAAK,CAAC;QAEhB,MAAM,UAAsB,WAAM,QAAN,WAAM,KAAA,IAAA,KAAA,IAAN,OAAQ,OAAqB;QACzD,IAAI,SAAS;YACX,MAAM,MAAM,QAAQ,GAAG;YACvB,IAAI,KAAK;gBACP,MAAM,MAAM,IAAI,OAAO,OAAO,KAAK;gBACnC,IAAI,MAAM,KACR,OAAO;YAEV;QACF;QACD,OAAO;IACR,EAAC,OAAO,KAAK;QACZ,OAAO;IACR;AACH;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AlBfM,SAAgB,0CACpB,QACE,IAAI,UACJ,MAAM,SACN,KAAK,EAIN,EACD,WAAgC,IAAI,CAAA,GAAA,wCAAA,GAA8B;I,O,gC,I,E,K,G,K,G;QAElE,EAAE;QACF,MAAM,UAA4B,MAAM,SAAS,YAAY,CAAC,MAAM;QACpE,MAAM,aAA+B,CAAA,GAAA,aAAA,EAAO,SAAS,KAAK,SAAS;QAEnE,IAAI,CAAA,GAAA,yCAAA,CAAU,CAAC,cAAc,EAAE;YAC7B,MAAM,aAAa,EAAE;YACrB,KAAK,MAAM,UAAU,WAAY;gBAC/B,MAAM,QAAgB,OAAO,KAAK;gBAClC,IAAI,CAAA,GAAA,wCAAA,EAAW,QACb,WAAW,IAAI,CAAC;YAEnB;YACD,OAAO,CAAA,GAAA,yCAAA,CAAU,CAAC,SAAS,GAAG;gBAAC,UAAU,CAAC,EAAE;aAAC,GAAG;QACjD,OACC,OAAO,CAAA,GAAA,yCAAA,CAAU,CAAC,SAAS,GAAG;YAAC,UAAU,CAAC,EAAE;SAAC,GAAG;IAEpD;AAAC;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AD9BK,SAAgB,0CACpB,MAAkB;I,O,gC,I,E,K,G,K,G;QAElB,EAAE;QACF,MAAM,UAAU,MAAM,CAAA,GAAA,yCAAA,EACpB,QACA,IAAI,CAAA,GAAA,wCAAA;QAGN,IAAI,MAAM,OAAO,CAAC,YAAY,QAAQ,MAAM,GAAG,GAC7C,OAAO,QAAQ,IAAI,CAAC,CAAC,SAAW,UAAU;aAE1C,MAAM,IAAI,MAAM;IAEpB;AAAC;;;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AoBbK,SAAgB,0CACpB,MAAkB;I,O,gC,I,E,K,G,K,G;QAElB,MAAM,UAAU,MAAM,CAAA,GAAA,yCAAA,EACpB,QACA,IAAI,CAAA,GAAA,wCAAA;QAGN,IAAI,QAAQ,MAAM,IAAI,GACpB,MAAM,IAAI,MAAM;QAElB,OAAO,QAAQ,IAAI,CAAC,CAAA,GAAA,yCAAA;IACtB;AAAC;;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;ACbK,SAAgB,0CACpB,MAAkB;I,O,gC,I,E,K,G,K,G;QAElB,MAAM,UAA4B,MAAM,CAAA,GAAA,yCAAA,EACtC,QACA,IAAI,CAAA,GAAA,wCAAA;QAGN,IAAI,MAAM,OAAO,CAAC,YAAY,QAAQ,MAAM,GAAG,GAC7C,OAAO,QAAQ,IAAI,CAAC,CAAC,SAAW,UAAU;aAE1C,MAAM,IAAI,MAAM;IAEpB;AAAC;;;;;AEfK,SAAU,0CAAgB,OAAyB;IACvD,qCAAqC;IACrC,wCAAwC;IACxC,MAAM,iBAAiB,CAAA,GAAA,cAAA,EAAQ,SAAS;QAAC;QAAQ;KAAS,EAAE;QAAC;QAAO;KAAO;IAC3E,OAAO,CAAA,GAAA,aAAA,EAAO,gBAAgB,CAAC,IAAsB,EAAE,IAAI,EACxD,GAAG,CAAC,CAAC,IAAsB,EAAE,IAAI,GAAG,MAAM,EAAE,KAAK,EACjD,IAAI,CAAC;AACV;;;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;ACJM,SAAgB,0CACpB,UAA2B;I,O,gC,I,E,K,G,K,G;QAE3B,IAAI,MAAM,OAAO,CAAC,aAAa;YAC7B,MAAM,sBACJ,MAAM,CAAA,GAAA,yCAAA,EAAa,YAAY,CAAO,KAAtC,gCAAA,IAAA,EAAA,KAAA,GAAA,KAAA,GAAA;oBACE,OAAO,MAAM,CAAA,GAAA,yCAAA,EAAa;gBAC5B;YACF,OAAO,CAAA,GAAA,aAAA,EAAO,qBAAqB,KAAK,SAAS;QAClD,OAAM;YACL,MAAM,uBACJ,MAAM,CAAA,GAAA,yCAAA,EAAa;YACrB,OAAO,CAAA,GAAA,aAAA,EAAO,sBAAsB,KAAK,SAAS;QACnD;IACH;AAAC;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AFdK,SAAgB,0CACpB,UAA2B;I,O,gC,I,E,K,G,K,G;QAE3B,MAAM,UAA4B,MAAM,CAAA,GAAA,yCAAA,EAAqB;QAC7D,IAAI,QAAQ,MAAM,IAAI,GACpB,MAAM,IAAI,MAAM;QAElB,MAAM,gBAAgB,CAAA,GAAA,cAAA,EAAQ,SAAS,CAAC;YAAqB,IAAA;YAAC,OAAA,AAAA,CAAA,KAAA,EAAE,IAAI,AAAJ,MAAI,QAAA,OAAA,KAAA,IAAA,KAAA,IAAA,GAAE,IAAI;QAAA;QAC1E,OAAO,OAAO,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;YACrC,MAAM,UAA4B,aAAa,CAAC,KAAK;YACrD,OAAO,CAAA,GAAA,yCAAA,EAAgB;QACzB;IACF;AAAC;;;;;A,I,kC,a,U,S,I,S,O,E,U,E,C,E,S;I,S,M,K;Q,O,iB,I,Q,I,E,S,O;Y,Q;Q;I;I,O,I,C,K,C,I,O,C,E,S,O,E,M;Q,S,U,K;Y,I;gB,K,U,I,C;Y,E,O,G;gB,O;Y;Q;Q,S,S,K;Y,I;gB,K,S,C,Q,C;Y,E,O,G;gB,O;Y;Q;Q,S,K,M;Y,O,I,G,Q,O,K,I,M,O,K,E,I,C,W;Q;Q,K,A,C,Y,U,K,C,S,c,E,C,E,I;I;A;AGZK,SAAgB,0CACpB,UAA2B;I,O,gC,I,E,K,G,K,G;QAE3B,MAAM,UAA4B,MAAM,CAAA,GAAA,yCAAA,EAAqB;QAC7D,OAAO,QAAQ,MAAM,GAAG,IAAI,CAAA,GAAA,yCAAA,EAAgB,WAAW;IACzD;AAAC;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","sources":["src/index.ts","src/getCookie.ts","src/queryCookies.ts","src/argv.ts","src/browsers/CompositeCookieQueryStrategy.ts","src/browsers/ChromeCookieQueryStrategy.ts","src/global.ts","src/findAllFiles.ts","src/IsCookieRow.ts","src/ExportedCookie.ts","src/StringToRegex.ts","src/browsers/getChromePassword.ts","src/execSimple.ts","src/browsers/ChromeApplicationSupport.ts","src/browsers/decrypt.ts","src/browsers/DoSqliteQueryWithTransform.ts","src/browsers/FirefoxCookieQueryStrategy.ts","src/SpecialCases.ts","src/browsers/SafariCookieQueryStrategy.ts","src/util/flatMapAsync.ts","src/isValidJwt.ts","src/getChromeCookie.ts","src/getFirefoxCookie.ts","src/getGroupedRenderedCookies.ts","src/resultsRendered.ts","src/comboQueryCookieSpec.ts","src/getMergedRenderedCookies.ts","src/fetchWithCookies.ts","src/cookieSpecsFromUrl.ts"],"sourcesContent":["#!/usr/bin/env bun run\n\nimport { getCookie } from \"./getCookie\";\nimport { getChromeCookie } from \"./getChromeCookie\";\nimport { getFirefoxCookie } from \"./getFirefoxCookie\";\nimport { getGroupedRenderedCookies } from \"./getGroupedRenderedCookies\";\nimport { getMergedRenderedCookies } from \"./getMergedRenderedCookies\";\nimport { fetchWithCookies } from \"./fetchWithCookies\";\n\nexport {\n getCookie,\n getChromeCookie,\n getFirefoxCookie,\n getMergedRenderedCookies,\n getGroupedRenderedCookies,\n fetchWithCookies,\n //\n};\n","import CookieSpec from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\nimport { queryCookies } from \"./queryCookies\";\nimport CompositeCookieQueryStrategy from \"./browsers/CompositeCookieQueryStrategy\";\n\nexport async function getCookie(\n params: CookieSpec,\n): Promise<ExportedCookie | undefined> {\n //\n const cookies = await queryCookies(\n params,\n new CompositeCookieQueryStrategy(),\n //\n );\n if (Array.isArray(cookies) && cookies.length > 0) {\n return cookies.find((cookie) => cookie != null);\n } else {\n throw new Error(\"Cookie not found\");\n }\n}\n","import { uniqBy } from \"lodash\";\nimport { parsedArgs } from \"./argv\";\nimport CompositeCookieQueryStrategy from \"./browsers/CompositeCookieQueryStrategy\";\nimport CookieQueryStrategy from \"./browsers/CookieQueryStrategy\";\nimport isValidJwt from \"./isValidJwt\";\nimport CookieSpec from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\n\nexport async function queryCookies(\n {\n name,\n domain,\n limit,\n }: //\n CookieSpec & {\n limit?: number;\n },\n strategy: CookieQueryStrategy = new CompositeCookieQueryStrategy(),\n): Promise<ExportedCookie[]> {\n //\n const results: ExportedCookie[] = await strategy.queryCookies(name, domain);\n const allCookies: ExportedCookie[] = uniqBy(results, JSON.stringify);\n\n if (parsedArgs[\"require-jwt\"]) {\n const jwtCookies = [];\n for (const result of allCookies) {\n const value: string = result.value;\n if (isValidJwt(value)) {\n jwtCookies.push(result);\n }\n }\n return parsedArgs[\"single\"] ? [jwtCookies[0]] : jwtCookies;\n } else {\n return parsedArgs[\"single\"] ? [allCookies[0]] : allCookies;\n }\n}\n","import minimist from \"minimist\";\nimport { merge } from \"lodash\";\n\nexport interface MyParsedArgs extends minimist.ParsedArgs {\n verbose: boolean;\n render?: string;\n fetch?: string;\n cs?: string;\n dump?: string;\n \"dump-request-headers\"?: string;\n \"dump-response-headers\"?: string;\n \"dump-response-body\"?: string;\n}\n\n/*\nUsage: get-cookie [name] [domain] [options]\nOptions:\n -h, --help: Show this help\n -v, --verbose: Show verbose output\n -d, --dump: Dump all results\n -D, --dump-grouped: Dump all results, grouped by profile\n -r, --render: Render all results\n */\n\nexport const argv: string[] = process.argv ?? [];\nconst minimistArgs: minimist.ParsedArgs = minimist(argv.slice(2));\nconst defaultOptions = {\n verbose: false,\n};\nexport const parsedArgs: MyParsedArgs = merge(defaultOptions, minimistArgs);\n","import ChromeCookieQueryStrategy from \"./ChromeCookieQueryStrategy\";\nimport FirefoxCookieQueryStrategy from \"./FirefoxCookieQueryStrategy\";\nimport SafariCookieQueryStrategy from \"./SafariCookieQueryStrategy\";\nimport CookieQueryStrategy from \"./CookieQueryStrategy\";\nimport ExportedCookie from \"../ExportedCookie\";\nimport LRUCache from \"lru-cache\";\nimport { merge } from \"lodash\";\nimport { parsedArgs } from \"../argv\";\nimport consola from \"consola\";\nimport { flatMapAsync } from \"../util/flatMapAsync\";\n\nconst cache: LRUCache<string, ExportedCookie[]> = new LRUCache<\n string,\n ExportedCookie[]\n>({\n ttl: 1000 * 10, // 10 seconds\n max: 10,\n});\n\nexport default class CompositeCookieQueryStrategy\n implements CookieQueryStrategy\n{\n browserName = \"all\";\n\n private readonly strategies;\n\n constructor() {\n this.strategies = [\n // CookieStoreQueryStrategy,\n ChromeCookieQueryStrategy,\n FirefoxCookieQueryStrategy,\n SafariCookieQueryStrategy,\n ].map((strategy) => {\n return new strategy();\n });\n }\n\n async queryCookies(name: string, domain: string): Promise<ExportedCookie[]> {\n // domain = domain.match(/(\\w+.+\\w+)/gi)?.pop() ?? domain;\n const key = `${name}:${domain}`;\n if (cache.has(key)) {\n const cached = cache.get(key);\n if (cached) {\n return cached;\n }\n }\n if (parsedArgs.verbose) {\n consola.log(\"Querying cookies:\", name, domain);\n }\n const results = await flatMapAsync(this.strategies, async (strategy) => {\n return strategy\n .queryCookies(name, domain)\n .then((cookies: ExportedCookie[]) => {\n return cookies.map((cookie: ExportedCookie) => {\n return merge(cookie, {\n meta: {\n browser: strategy.browserName,\n },\n });\n });\n })\n .catch((e) => {\n consola.error(`Error querying ${strategy.browserName} cookies`, e);\n return [];\n });\n });\n cache.set(`${name}:${domain}`, results);\n return results;\n }\n}\n","import CookieQueryStrategy from \"./CookieQueryStrategy\";\nimport { env } from \"../global\";\nimport { existsSync } from \"fs\";\nimport { findAllFiles } from \"../findAllFiles\";\nimport { join } from \"path\";\nimport { merge } from \"lodash\";\nimport { isCookieRow } from \"../IsCookieRow\";\nimport { isExportedCookie } from \"../ExportedCookie\";\nimport CookieRow from \"../CookieRow\";\nimport ExportedCookie from \"../ExportedCookie\";\nimport { stringToRegex } from \"../StringToRegex\";\nimport { parsedArgs } from \"../argv\";\nimport consola from \"consola\";\nimport { getChromePassword } from \"./getChromePassword\";\nimport { chromeApplicationSupport } from \"./ChromeApplicationSupport\";\nimport { decrypt } from \"./decrypt\";\nimport { doSqliteQueryWithTransform } from \"./DoSqliteQueryWithTransform\";\n\nexport default class ChromeCookieQueryStrategy implements CookieQueryStrategy {\n browserName = \"Chrome\";\n\n async queryCookies(name: string, domain: string): Promise<ExportedCookie[]> {\n if (process.platform !== \"darwin\") {\n throw new Error(\"This only works on macOS\");\n }\n if (env.FIREFOX_ONLY) {\n return [];\n }\n return getChromeCookies({\n requireJwt: false,\n name,\n domain,\n });\n }\n}\n\nasync function getPromise1(\n name: string,\n domain: string,\n file: string,\n): Promise<CookieRow[]> {\n try {\n return await getEncryptedChromeCookie({\n name: name,\n domain: domain,\n file: file,\n });\n } catch (e) {\n if (parsedArgs.verbose) {\n console.log(\"Error getting encrypted cookie\", e);\n }\n return [];\n }\n}\n\nasync function getPromise(name: string, domain: string): Promise<CookieRow[]> {\n try {\n const files: string[] = await findAllFiles({\n path: chromeApplicationSupport,\n name: \"Cookies\",\n });\n const promises: Promise<CookieRow[]>[] = files.map((file) =>\n getPromise1(name, domain, file),\n );\n const results1: CookieRow[][] = await Promise.all(promises);\n return results1.flat().filter(isCookieRow);\n } catch (error) {\n if (parsedArgs.verbose) {\n console.log(\"error\", error);\n }\n return [];\n }\n}\n\nasync function decryptValue(password: string, encryptedValue: Buffer) {\n let d: string | null;\n try {\n d = await decrypt(password, encryptedValue);\n } catch (e) {\n if (parsedArgs.verbose) {\n console.log(\"Error decrypting cookie\", e);\n }\n d = null;\n }\n return d ?? encryptedValue.toString(\"utf-8\");\n}\n\nasync function getChromeCookies({\n name,\n domain = \"%\",\n requireJwt = false,\n}: {\n name: string;\n domain: string;\n requireJwt: boolean | undefined;\n //\n}): //\nPromise<ExportedCookie[]> {\n const encryptedDataItems: CookieRow[] = await getPromise(name, domain);\n const password: string = await getChromePassword();\n const decrypted: Promise<ExportedCookie | null>[] = encryptedDataItems\n .filter(({ value }) => value != null && value.length > 0)\n .map(async (cookieRow: CookieRow) => {\n const encryptedValue: Buffer = cookieRow.value;\n const decryptedValue = await decryptValue(password, encryptedValue);\n const meta = {};\n merge(meta, cookieRow.meta ?? {});\n const exportedCookie: ExportedCookie = {\n domain: cookieRow.domain,\n name: cookieRow.name,\n value: decryptedValue,\n meta: meta,\n };\n const expiry = cookieRow.expiry;\n const mergeExpiry =\n expiry != null && expiry > 0\n ? {\n expiry: new Date(expiry),\n }\n : {\n expiry: \"Infinity\",\n };\n merge(exportedCookie, mergeExpiry);\n return exportedCookie;\n });\n const results: ExportedCookie[] = (await Promise.all(decrypted)).filter(\n isExportedCookie,\n );\n if (parsedArgs.verbose) {\n console.log(\"results\", results);\n }\n return results;\n}\n\nasync function getEncryptedChromeCookie({\n name,\n domain,\n file = join(chromeApplicationSupport, \"Default\", \"Cookies\"),\n}: //\n{\n name: string;\n domain: string;\n file: string;\n}): Promise<CookieRow[]> {\n if (!existsSync(file)) {\n throw new Error(`File ${file} does not exist`);\n }\n if (parsedArgs.verbose) {\n const s = file.split(\"/\").slice(-3).join(\"/\");\n consola.start(\n `Trying Chrome (at ${s}) cookie ${name} for domain ${domain}`,\n );\n }\n let sql;\n //language=SQL\n sql = \"SELECT encrypted_value, name, host_key, expires_utc FROM cookies\";\n // Define a regular expression to match wildcard characters\n const wildcardRegexp = /^([*%])$/i;\n // Check if the name does not contain wildcard characters\n const specifiedName = name.match(wildcardRegexp) == null;\n // Check if the domain does not contain wildcard characters\n const specifiedDomain = domain.match(wildcardRegexp) == null;\n // Check if the domain contains wildcard characters\n const wildcardDomain = domain.match(/[%*]/) != null;\n // Determine if we should query the domain based on the previous checks\n const queryDomain = specifiedDomain && !wildcardDomain;\n // if we have a wildcard domain, we need to use a regexp\n // If the name is specified or we need to query the domain, we add a WHERE clause to the SQL query\n if (specifiedName || queryDomain) {\n sql += ` WHERE `;\n // If the name is specified, we add a condition to the SQL query to match the name\n if (specifiedName) {\n sql += `name = '${name}'`;\n // If we also need to query the domain, we add an AND operator to the SQL query\n if (queryDomain) {\n sql += ` AND `;\n }\n }\n // If we need to query the domain, we add a condition to the SQL query to match the domain\n if (queryDomain) {\n // The leading dot is replaced with % to match subdomains\n const sqlEmbedDomain = domain.replace(/^[.%]?/, \"%\");\n sql += `host_key LIKE '${sqlEmbedDomain}';`;\n }\n }\n if (parsedArgs.verbose) {\n consola.info(\"Querying:\", sql);\n }\n const domainRegexp: RegExp = stringToRegex(domain);\n const sqliteQuery1: CookieRow[] = await doSqliteQueryWithTransform({\n file: file,\n sql: sql,\n rowFilter: (row) => {\n return row[\"host_key\"].match(domainRegexp) != null;\n },\n rowTransform: (row) => {\n const cookieRow = {\n expiry: (row[\"expires_utc\"] / 1000000 - 11644473600) * 1000,\n domain: row[\"host_key\"],\n name: row[\"name\"],\n value: row[\"encrypted_value\"],\n };\n if (parsedArgs.verbose) {\n consola.info(\"Found\", cookieRow);\n }\n return cookieRow;\n },\n });\n return sqliteQuery1.filter((row) => {\n // TODO: is this needed?\n return row.domain.match(domainRegexp) != null;\n });\n}\n","import { merge } from \"lodash\";\n\nexport const env: any = {};\nmerge(env, process?.env ?? {});\nexport const HOME: string = env[\"HOME\"];\nif (!HOME) {\n throw new Error(\"HOME environment variable is not set\");\n}\n","import { existsSync } from \"fs\";\nimport { parsedArgs } from \"./argv\";\nimport consola from \"consola\";\nimport { sync } from \"fast-glob\";\n\ntype FindFilesOptions = {\n path: string;\n name: string;\n maxDepth?: number;\n};\n\nexport function findAllFiles(\n //\n { path, name, maxDepth = 2 }: FindFilesOptions,\n): //\nstring[] {\n if (!existsSync(path)) {\n throw new Error(`Path ${path} does not exist`);\n }\n\n if (parsedArgs.verbose) {\n consola.start(`Searching for ${name} files in ${path}`);\n }\n\n const files: string[] = sync(`${path}/**/${name}`, {\n onlyFiles: true,\n deep: maxDepth,\n });\n\n if (parsedArgs.verbose) {\n if (files.length > 0) {\n consola.success(`Found ${files.length} ${name} files`);\n consola.info(files);\n }\n }\n\n return files;\n}\n","import CookieRow from \"./CookieRow\";\n\nexport function isCookieRow(obj: any): obj is CookieRow {\n return (\n obj.domain !== undefined &&\n obj.name !== undefined &&\n obj.value !== undefined\n );\n}\n","export default interface ExportedCookie {\n domain: string;\n name: string;\n value: string;\n expiry?: Date | \"Infinity\";\n meta?: any;\n}\n\nexport function isExportedCookie(obj: any): obj is ExportedCookie {\n return (\n typeof obj.domain === \"string\" &&\n typeof obj.name === \"string\" &&\n typeof obj.value === \"string\" &&\n (obj.expiry === undefined ||\n obj.expiry instanceof Date ||\n obj.expiry === \"Infinity\") &&\n (obj.meta === undefined || typeof obj.meta === \"object\")\n );\n}\n","// This function converts a string into a regular expression\nexport function stringToRegex(s: string): RegExp {\n // Replace all occurrences of '.' with a literal '.'\n const s1 = s.replaceAll(/\\./gi, \".\");\n // Replace all occurrences of '%' with '.*' to match any number of any characters\n const s2 = s1.replace(/%/g, \".*\");\n // Replace all occurrences of '*' with '.*' to match any number of any characters\n const s3 = s2.replace(/\\*/g, \".*\");\n // Return the new string as a RegExp object\n return new RegExp(s3);\n}\n\n/*\n%.example.com -> .*\\.example\\.com\nexample.com -> example\\.com\n*/\n","import { execSimple } from \"../execSimple\";\n\nconst chromePassword: Promise<string> = execSimple(\n 'security find-generic-password -w -s \"Chrome Safe Storage\"',\n);\n\nexport async function getChromePassword(): Promise<string> {\n return await chromePassword;\n}\n","import { execSync } from \"child_process\";\n\nexport async function execSimple(command: string): Promise<string> {\n try {\n const stdout = execSync(command, {\n encoding: \"binary\",\n maxBuffer: 5 * 1024,\n });\n return stdout.trim();\n } catch (error) {\n throw error;\n }\n}\n","import { join } from \"path\";\nimport { HOME } from \"../global\";\n\nexport const chromeApplicationSupport: string = join(\n HOME,\n \"Library\",\n \"Application Support\",\n \"Google\",\n \"Chrome\",\n);\n","import { BinaryLike, createDecipheriv, pbkdf2 } from \"crypto\";\nimport { parsedArgs } from \"../argv\";\nimport consola from \"consola\";\n\n// Function to decrypt encrypted data using a password\nexport async function decrypt(\n password: BinaryLike, // The password to use for decryption\n encryptedData: Buffer, // The data to decrypt\n): Promise<string> {\n // Returns a promise that resolves with the decrypted string\n // Check if password is a string\n if (typeof password !== \"string\") {\n throw new Error(\"password must be a string: \" + password);\n }\n let encryptedData1: any;\n encryptedData1 = encryptedData;\n // Check if encryptedData is an object\n if (encryptedData1 == null || typeof encryptedData1 !== \"object\") {\n throw new Error(\"encryptedData must be a object: \" + encryptedData1);\n }\n // Check if encryptedData is a Buffer or an array of Buffers\n if (!(encryptedData1 instanceof Buffer)) {\n if (Array.isArray(encryptedData1) && encryptedData1[0] instanceof Buffer) {\n [encryptedData1] = encryptedData1;\n // Log if encryptedData is an array of buffers\n if (parsedArgs.verbose) {\n console.log(\n `encryptedData is an array of buffers, selected first: ${encryptedData1}`,\n );\n }\n } else {\n throw new Error(\"encryptedData must be a Buffer: \" + encryptedData1);\n }\n encryptedData1 = Buffer.from(encryptedData1);\n }\n // Log the password being used for decryption\n if (parsedArgs.verbose) {\n consola.start(`Trying to decrypt with password: ${password}`);\n }\n // Return a promise that resolves with the decrypted string\n return new Promise((resolve, reject) => {\n // Use pbkdf2 to derive a key from the password\n pbkdf2(password, \"saltysalt\", 1003, 16, \"sha1\", (error, buffer) => {\n try {\n // Handle any errors from pbkdf2\n if (error) {\n if (parsedArgs.verbose) {\n console.log(\"Error doing pbkdf2\", error);\n }\n reject(error);\n return;\n }\n\n // Check if the buffer length is 16\n if (buffer.length !== 16) {\n if (parsedArgs.verbose) {\n console.log(\n \"Error doing pbkdf2, buffer length is not 16\",\n buffer.length,\n );\n }\n reject(new Error(\"Buffer length is not 16\"));\n return;\n }\n\n // Create an initialization vector\n const str = new Array(17).join(\" \");\n const iv = Buffer.from(str, \"binary\");\n // Create a decipher using the derived key and initialization vector\n const decipher = createDecipheriv(\"aes-128-cbc\", buffer, iv);\n decipher.setAutoPadding(false);\n\n // Remove the first 3 bytes from the encrypted data\n if (encryptedData1 && encryptedData1.slice) {\n encryptedData1 = encryptedData1.slice(3);\n }\n\n // Check if the encrypted data length is a multiple of 16\n if (encryptedData1.length % 16 !== 0) {\n if (parsedArgs.verbose) {\n console.log(\n \"Error doing pbkdf2, encryptedData length is not a multiple of 16\",\n encryptedData1.length,\n );\n }\n reject(new Error(\"encryptedData length is not a multiple of 16\"));\n return;\n }\n\n // Update the decipher with the encrypted data\n let decoded = decipher.update(encryptedData1);\n try {\n // Finalize the decipher\n decipher.final(\"utf-8\");\n } catch (e) {\n if (parsedArgs.verbose) {\n console.log(\"Error doing decipher.final()\", e);\n }\n reject(e);\n return;\n }\n\n // Remove padding from the decoded data\n const padding = decoded[decoded.length - 1];\n if (padding) {\n decoded = decoded.slice(0, 0 - padding);\n }\n // Convert the decoded data to a string\n const decodedString = decoded.toString(\"utf8\");\n // Resolve the promise with the decrypted string\n resolve(decodedString);\n } catch (e) {\n // Reject the promise if there is an error\n reject(e);\n }\n });\n });\n}\n","import CookieRow from \"../CookieRow\";\nimport fs from \"fs\";\nimport { Database } from \"sqlite3\";\nimport { merge } from \"lodash\";\nimport { parsedArgs } from \"../argv\";\nimport consola from \"consola\";\n\nexport interface DoSqliteQueryWithTransformOptions {\n file: string;\n sql: string;\n rowFilter?: (row: any) => boolean;\n rowTransform: (row: any) => CookieRow;\n}\n\nfunction checkFileExistence(file: string) {\n if (!file || !fs.existsSync(file)) {\n throw new Error(`File ${file} does not exist`);\n }\n}\n\nfunction createDatabase(file: string) {\n return new Database(file);\n}\n\nfunction transformRows(\n //\n rows: any[],\n rowFilter: (row: any) => boolean,\n rowTransform: (row: any) => CookieRow,\n file: string,\n //\n): CookieRow[] {\n return rows.filter(rowFilter).map((row: any) => {\n const metaData = {\n meta: {\n file: file,\n },\n };\n\n const cookieRow: CookieRow = rowTransform(row);\n\n return merge(metaData, cookieRow);\n });\n}\n\nexport async function doSqliteQueryWithTransform(\n //\n {\n //\n file,\n sql,\n rowFilter = () => true,\n rowTransform,\n }: DoSqliteQueryWithTransformOptions,\n): //\nPromise<CookieRow[]> {\n checkFileExistence(file);\n\n const db: Database = createDatabase(file);\n\n return new Promise((resolve, reject) => {\n db.all(sql, (err: Error, rows: any[]) => {\n if (err) {\n return reject(err);\n }\n\n if (!rows || rows.length === 0) {\n return resolve([]);\n }\n\n const cookieRows: CookieRow[] = transformRows(\n rows,\n rowFilter,\n rowTransform,\n file,\n );\n\n if (parsedArgs.verbose) {\n consola.log(`Rows: ${JSON.stringify(rows)}`);\n }\n\n return resolve(cookieRows);\n });\n });\n}\n","import * as path from \"path\";\nimport CookieQueryStrategy from \"./CookieQueryStrategy\";\nimport { HOME } from \"../global\";\nimport { existsSync } from \"fs\";\nimport { findAllFiles } from \"../findAllFiles\";\nimport ExportedCookie from \"../ExportedCookie\";\nimport CookieRow from \"../CookieRow\";\nimport CookieSpec from \"../CookieSpec\";\nimport { specialCases } from \"../SpecialCases\";\nimport { parsedArgs } from \"../argv\";\nimport { doSqliteQueryWithTransform } from \"./DoSqliteQueryWithTransform\";\n\nexport default class FirefoxCookieQueryStrategy implements CookieQueryStrategy {\n browserName = \"Firefox\";\n\n async queryCookies(name: string, domain: string): Promise<ExportedCookie[]> {\n if (process.platform !== \"darwin\") {\n // TODO: implement\n return [];\n }\n if (parsedArgs.browser !== \"firefox\") {\n return [];\n }\n const cookies = await this.#getFirefoxCookie({ name, domain });\n if (Array.isArray(cookies)) {\n return cookies.map((cookie: CookieRow) => {\n return {\n domain: cookie.domain,\n name: cookie.name,\n value: cookie.value.toString(\"utf8\"),\n };\n });\n } else {\n return [];\n }\n }\n\n async #getFirefoxCookie(\n { name, domain }: CookieSpec, //\n ) {\n const files: string[] = findAllFiles({\n path: path.join(\n HOME,\n \"Library\",\n \"Application Support\",\n \"Firefox\",\n \"Profiles\",\n ),\n name: \"cookies.sqlite\",\n });\n const fn: (file: string) => Promise<CookieRow[]> = async (file: string) => {\n return await this.#queryCookiesDb(file, name, domain);\n };\n const all: CookieRow[][] = await Promise.all(files.map(fn));\n // flatten\n return all.flat();\n }\n\n async #queryCookiesDb(\n file: string,\n name: string,\n domain: string,\n ): Promise<CookieRow[]> {\n if (file && !existsSync(file)) {\n throw new Error(`File ${file} does not exist`);\n }\n let sql;\n //language=SQL\n sql = \"SELECT value, name, host FROM moz_cookies\";\n const { specifiedName, specifiedDomain } = specialCases({ name, domain });\n if (specifiedName || specifiedDomain) {\n sql += ` WHERE `;\n if (specifiedName) {\n sql += `name = '${name}'`;\n if (specifiedDomain) {\n sql += ` AND `;\n }\n }\n if (specifiedDomain) {\n sql += `host LIKE '${domain}';`;\n }\n }\n const rowTransform = (row: any) => {\n // row is object key by column name\n const value = row.value as string;\n return {\n domain: row.domain as string,\n name: row.name as string,\n value: Buffer.from(value, \"utf8\"),\n };\n };\n try {\n return await doSqliteQueryWithTransform({\n file,\n sql,\n rowTransform,\n });\n } catch (e) {\n console.error(`Error querying ${file}`, e);\n return [];\n }\n }\n}\n","import CookieSpec from \"./CookieSpec\";\n\nexport function specialCases({ name, domain }: CookieSpec): {\n specifiedName: boolean;\n specifiedDomain: boolean;\n //\n} {\n const wildcardRegexp = /^([*%])$/i;\n return {\n specifiedName: name.match(wildcardRegexp) == null,\n specifiedDomain: domain.match(wildcardRegexp) == null,\n //\n };\n}\n","import CookieQueryStrategy from \"./CookieQueryStrategy\";\nimport ExportedCookie from \"../ExportedCookie\";\n\nexport default class SafariCookieQueryStrategy implements CookieQueryStrategy {\n browserName = \"Safari\";\n\n async queryCookies(name: string, domain: string): Promise<ExportedCookie[]> {\n // TODO: implement\n return [];\n }\n}\n","// This utility function applies an async callback to each element of the input array (just like Array.prototype.map),\n// waits for all resulting promises to fulfill (similar to Promise.all), and then flattens the resulting array (like Array.prototype.flat).\n\nexport async function flatMapAsync<T, O>(\n array: T[], // The input array to transform.\n callback: (value: T, index: number, array: T[]) => Promise<O[]>, // The async function to apply to each input array element.,\n or?: O[] | ((error: any) => O[] | Promise<O[]>), // An optional callback to handle errors.\n): Promise<O[]> {\n if (or) {\n return flatMapAsync(\n array,\n async (value: T, index: number, array: T[]) => {\n try {\n return await callback(value, index, array);\n } catch (error) {\n return typeof or == \"function\" ? or(error) : or;\n }\n },\n //\n );\n }\n\n // Step 1: Use Array.prototype.map to transform each element of the input array with the provided callback.\n // This will result in an array of promises.\n const ps: Promise<O>[] = array.map(callback) as Promise<O>[];\n\n // Step 2: Use Promise.all to wait for all promises in the array to fulfill.\n // This will give us an array of fulfilled promise values.\n const awaitedAll: Awaited<O>[] = await Promise.all(ps);\n\n // Step 3: Flatten the array of fulfilled promise values into a single array.\n // Note: The '@ts-ignore' comment is used to suppress TypeScript compiler warnings, as .flat() method might not be recognized\n // as a valid method for an array of Awaited<O> instances. However, this code assumes that the result of Promise.all\n // is indeed an array that can be flattened.\n // @ts-ignore\n return awaitedAll.flat() as O[];\n}\n","import jsonwebtoken, { JwtPayload } from \"jsonwebtoken\";\nimport { parsedArgs } from \"./argv\";\n\nexport default function isValidJwt(token: string) {\n try {\n const result = jsonwebtoken.decode(token, { complete: true });\n if (parsedArgs.verbose && result) {\n console.debug(result);\n }\n const payload: JwtPayload = result?.payload as JwtPayload;\n if (payload) {\n const exp = payload.exp;\n if (exp) {\n const now = new Date().getTime() / 1000;\n if (now > exp) {\n return false;\n }\n }\n }\n return true;\n } catch (err) {\n return false;\n }\n}\n","import CookieSpec from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\nimport { queryCookies } from \"./queryCookies\";\nimport ChromeCookieQueryStrategy from \"./browsers/ChromeCookieQueryStrategy\";\nimport { isExportedCookie } from \"./ExportedCookie\";\n\nexport async function getChromeCookie(\n params: CookieSpec,\n): Promise<ExportedCookie | undefined> {\n const cookies = await queryCookies(\n params,\n new ChromeCookieQueryStrategy(),\n //\n );\n if (cookies.length == 0) {\n throw new Error(\"Cookie not found\");\n }\n return cookies.find(isExportedCookie);\n}\n","import CookieSpec from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\nimport { queryCookies } from \"./queryCookies\";\nimport FirefoxCookieQueryStrategy from \"./browsers/FirefoxCookieQueryStrategy\";\n\nexport async function getFirefoxCookie(\n params: CookieSpec,\n): Promise<ExportedCookie | undefined> {\n const cookies: ExportedCookie[] = await queryCookies(\n params,\n new FirefoxCookieQueryStrategy(),\n //\n );\n if (Array.isArray(cookies) && cookies.length > 0) {\n return cookies.find((cookie) => cookie != null);\n } else {\n throw new Error(\"Cookie not found\");\n }\n}\n","import { groupBy } from \"lodash\";\nimport { resultsRendered } from \"./resultsRendered\";\nimport { MultiCookieSpec } from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\nimport { comboQueryCookieSpec } from \"./comboQueryCookieSpec\";\n\nexport async function getGroupedRenderedCookies(\n cookieSpec: MultiCookieSpec,\n): Promise<string[]> {\n const cookies: ExportedCookie[] = await comboQueryCookieSpec(cookieSpec);\n if (cookies.length == 0) {\n throw new Error(\"Cookie not found\");\n }\n const groupedByFile = groupBy(cookies, (r: ExportedCookie) => r.meta?.file);\n return Object.keys(groupedByFile).map((file: string) => {\n const results: ExportedCookie[] = groupedByFile[file];\n return resultsRendered(results);\n });\n}\n","import { orderBy, uniqBy } from \"lodash\";\nimport ExportedCookie from \"./ExportedCookie\";\n\nexport function resultsRendered(results: ExportedCookie[]) {\n // sort by name and expiry descending\n // takes the latest expiry for each name\n const orderedResults = orderBy(results, [\"name\", \"expiry\"], [\"asc\", \"desc\"]);\n return uniqBy(orderedResults, (r: ExportedCookie) => r.name)\n .map((r: ExportedCookie) => r.name + \"=\" + r.value)\n .join(\"; \");\n}\n","import { MultiCookieSpec } from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\nimport { queryCookies } from \"./queryCookies\";\nimport { uniqBy } from \"lodash\";\nimport { flatMapAsync } from \"./util/flatMapAsync\";\n\nexport async function comboQueryCookieSpec(\n cookieSpec: MultiCookieSpec,\n): Promise<ExportedCookie[]> {\n if (Array.isArray(cookieSpec)) {\n const cookiesForMultiSpec: ExportedCookie[] = //\n await flatMapAsync(cookieSpec, async (cs) => {\n return await queryCookies(cs);\n });\n return uniqBy(cookiesForMultiSpec, JSON.stringify);\n } else {\n const cookiesForSingleSpec: ExportedCookie[] = //\n await queryCookies(cookieSpec);\n return uniqBy(cookiesForSingleSpec, JSON.stringify);\n }\n}\n","import { resultsRendered } from \"./resultsRendered\";\nimport { comboQueryCookieSpec } from \"./comboQueryCookieSpec\";\nimport { MultiCookieSpec } from \"./CookieSpec\";\nimport ExportedCookie from \"./ExportedCookie\";\nimport consola from \"consola\";\n\nexport async function getMergedRenderedCookies(\n cookieSpec: MultiCookieSpec,\n): Promise<string> {\n const cookies: ExportedCookie[] = await comboQueryCookieSpec(cookieSpec);\n return cookies.length > 0 ? resultsRendered(cookies) : \"\";\n}\n","// noinspection JSUnusedGlobalSymbols,ExceptionCaughtLocallyJS\n\nimport { fetch as fetchImpl } from \"cross-fetch\";\nimport { merge } from \"lodash\";\n// noinspection SpellCheckingInspection\nimport destr from \"destr\";\nimport { parsedArgs } from \"./argv\";\nimport { getMergedRenderedCookies } from \"./getMergedRenderedCookies\";\nimport { cookieSpecsFromUrl } from \"./cookieSpecsFromUrl\";\nimport CookieSpec from \"./CookieSpec\";\nimport consola from \"consola\";\n\nif (typeof fetchImpl !== \"function\") {\n consola.error(\"fetch is not a function\");\n throw new Error(\"fetch is not a function\");\n}\n\nconst userAgent =\n \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36\";\n\ninterface FetchRequestInit {\n url: RequestInfo | URL | string;\n options?: RequestInit;\n}\n\nexport async function fetchWithCookies(\n url: RequestInfo | URL | string,\n options: RequestInit | undefined = {},\n fetch: Function = fetchImpl as Function,\n originalRequest: FetchRequestInit | undefined = undefined,\n): Promise<Response> {\n if (typeof fetch !== \"function\") {\n const message = \"fetch is not a function\";\n consola.error(message);\n throw new Error(message);\n }\n const originalRequest1 = originalRequest || { url, options };\n const headers: HeadersInit = {\n \"User-Agent\": userAgent,\n };\n const defaultOptions: RequestInit = {\n headers,\n redirect: \"manual\",\n };\n const url2: string = `${url}`;\n const url1: URL = new URL(url2);\n consola.start(\"fetchWithCookies\", url2);\n const cookieSpecs: CookieSpec[] = cookieSpecsFromUrl(url1);\n headers[\"Cookie\"] = await getMergedRenderedCookies(cookieSpecs).catch(\n (err) => {\n consola.error(err);\n return \"\";\n },\n );\n if (parsedArgs[\"dump-request-headers\"]) {\n consola.info(\"Request URL:\", url1.href);\n consola.info(\"Request headers:\", headers);\n }\n const newOptions1: RequestInit = merge(defaultOptions, { headers }, options);\n try {\n const res: Response = await fetch(url1, newOptions1);\n // noinspection JSMismatchedCollectionQueryUpdate\n const headers: [string, string][] = [];\n res.headers.forEach((value, key) => {\n headers.push([key, value]);\n });\n // for (const [key, value] of headers) {\n // if (key === \"set-cookie\") {\n // const cookieJar1 = await cookieJarPromise;\n // await cookieJar1.setCookie(value, url2);\n // if (parsedArgs.verbose) {\n // console.log(blue(`Set-Cookie:`), yellow(value), yellow(url2));\n // }\n // }\n // }\n\n const newUrl: string = res.headers.get(\"location\") ?? res.url;\n // const sameHost = new URL(newUrl).host === url1.host;\n if (res.status == 301 || res.status == 302) {\n // follow the redirect\n if (newUrl && newUrl !== url2) {\n if (parsedArgs.verbose || parsedArgs[\"dump-response-headers\"]) {\n console.log(`Redirected to `, newUrl);\n }\n return fetchWithCookies(\n //\n newUrl,\n newOptions1,\n fetch,\n originalRequest1,\n //\n );\n }\n }\n if (res.status == 303 && newUrl && newUrl !== url2) {\n // follow the redirect with GET\n let newOptions2: RequestInit = {};\n switch (newOptions1.method) {\n case \"POST\":\n case \"PUT\":\n case \"DELETE\":\n merge(newOptions2, newOptions1, { method: \"GET\" });\n newOptions2.body = undefined; // TODO: is this needed?\n break;\n case \"HEAD\":\n case \"GET\":\n merge(newOptions2, newOptions1);\n newOptions2.body = undefined; // TODO: is this needed?\n break;\n default:\n merge(newOptions2, newOptions1);\n break;\n }\n if (parsedArgs.verbose) {\n console.log(`Redirected to `, newUrl);\n }\n return fetchWithCookies(\n //\n newUrl,\n newOptions2,\n fetch,\n originalRequest1,\n //\n );\n }\n\n const arrayBuffer1: Promise<ArrayBuffer> = res.arrayBuffer();\n\n async function arrayBuffer(): Promise<ArrayBuffer> {\n return arrayBuffer1;\n }\n\n async function buffer(): Promise<Buffer> {\n return arrayBuffer().then(Buffer.from);\n }\n\n async function text(): Promise<string> {\n return buffer().then((buffer: Buffer) => buffer.toString(\"utf8\"));\n }\n\n async function json(): Promise<any> {\n return text().then((text: string) => destr(text));\n }\n\n async function formData(): Promise<FormData> {\n const urlSearchParams: URLSearchParams = await text().then(\n (text) => new URLSearchParams(text),\n );\n const formData = new FormData();\n for (const [key, value] of urlSearchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n }\n\n const res1: Response = res;\n const source2 = {\n arrayBuffer,\n text,\n json,\n buffer,\n formData,\n //\n };\n return merge(res1, source2);\n } catch (e) {\n throw e;\n }\n}\n","import CookieSpec from \"./CookieSpec\";\nimport { uniqBy } from \"lodash\";\n\nexport function cookieSpecsFromUrl(url: URL | string): CookieSpec[] {\n const url1 = typeof url == \"string\" ? new URL(url) : url;\n const cookieSpecs = [];\n const splits = url1.hostname.split(\".\");\n const tld = splits.slice(-2).join(\".\");\n const cookieSpec: CookieSpec = {\n name: \"%\",\n domain: \"%.\" + tld,\n };\n cookieSpecs.push(cookieSpec);\n const cookieSpec1: CookieSpec = {\n name: \"%\",\n domain: url1.hostname,\n };\n cookieSpecs.push(cookieSpec1);\n // const isWww = splits.slice(-3)[0] === \"www\";\n const cookieSpec2: CookieSpec = {\n name: \"%\",\n domain: tld,\n };\n cookieSpecs.push(cookieSpec2);\n return uniqBy(cookieSpecs, JSON.stringify);\n}\n"],"names":[],"version":3,"file":"module.js.map","sourceRoot":"../"}
@@ -1 +1 @@
1
- {"mappings":";AAAA;IACE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uBAA8B,UAAU,GAAG,UAAU,EAAE,CAAC;ACLxD;IACE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC;IAC3B,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AoBDD,0BACE,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAYrC;ACbD,gCACE,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAUrC;ACbD,iCACE,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAWrC;AGZD,0CACE,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnB;ACZD,yCACE,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,MAAM,CAAC,CAGjB;AKWD;IACE,GAAG,EAAE,WAAW,GAAG,GAAG,GAAG,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,iCACE,GAAG,EAAE,WAAW,GAAG,GAAG,GAAG,MAAM,EAC/B,OAAO,GAAE,WAAW,GAAG,SAAc,EACrC,KAAK,GAAE,QAAgC,EACvC,eAAe,GAAE,gBAAgB,GAAG,SAAqB,GACxD,OAAO,CAAC,QAAQ,CAAC,CA0InB","sources":["src/src/CookieSpec.ts","src/src/ExportedCookie.ts","src/src/argv.ts","src/src/browsers/CookieQueryStrategy.ts","src/src/global.ts","src/src/findAllFiles.ts","src/src/CookieRow.ts","src/src/IsCookieRow.ts","src/src/StringToRegex.ts","src/src/execSimple.ts","src/src/browsers/getChromePassword.ts","src/src/browsers/ChromeApplicationSupport.ts","src/src/browsers/decrypt.ts","src/src/browsers/DoSqliteQueryWithTransform.ts","src/src/browsers/ChromeCookieQueryStrategy.ts","src/src/SpecialCases.ts","src/src/browsers/FirefoxCookieQueryStrategy.ts","src/src/browsers/SafariCookieQueryStrategy.ts","src/src/browsers/CompositeCookieQueryStrategy.ts","src/src/isValidJwt.ts","src/src/queryCookies.ts","src/src/getCookie.ts","src/src/getChromeCookie.ts","src/src/getFirefoxCookie.ts","src/src/resultsRendered.ts","src/src/comboQueryCookieSpec.ts","src/src/getGroupedRenderedCookies.ts","src/src/getMergedRenderedCookies.ts","src/src/logger.ts","src/src/FileCookieStore.ts","src/src/CookieStore.ts","src/src/cookieSpecsFromUrl.ts","src/src/fetchWithCookies.ts","src/src/index.ts","src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"#!/usr/bin/env bun run\n\nimport { getCookie } from \"./getCookie\";\nimport { getChromeCookie } from \"./getChromeCookie\";\nimport { getFirefoxCookie } from \"./getFirefoxCookie\";\nimport { getGroupedRenderedCookies } from \"./getGroupedRenderedCookies\";\nimport { getMergedRenderedCookies } from \"./getMergedRenderedCookies\";\nimport { fetchWithCookies } from \"./fetchWithCookies\";\n\nexport {\n getCookie,\n getChromeCookie,\n getFirefoxCookie,\n getMergedRenderedCookies,\n getGroupedRenderedCookies,\n fetchWithCookies,\n //\n};\n"],"names":[],"version":3,"file":"types.d.ts.map","sourceRoot":"../"}
1
+ {"mappings":";AAAA;IACE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uBAA8B,UAAU,GAAG,UAAU,EAAE,CAAC;ACLxD;IACE,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC;IAC3B,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AqBDD,0BACE,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAYrC;ACbD,gCACE,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAUrC;ACbD,iCACE,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAWrC;AGZD,0CACE,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnB;ACZD,yCACE,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,MAAM,CAAC,CAGjB;AESD;IACE,GAAG,EAAE,WAAW,GAAG,GAAG,GAAG,MAAM,CAAC;IAChC,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,iCACE,GAAG,EAAE,WAAW,GAAG,GAAG,GAAG,MAAM,EAC/B,OAAO,GAAE,WAAW,GAAG,SAAc,EACrC,KAAK,GAAE,QAAgC,EACvC,eAAe,GAAE,gBAAgB,GAAG,SAAqB,GACxD,OAAO,CAAC,QAAQ,CAAC,CA0InB","sources":["src/src/CookieSpec.ts","src/src/ExportedCookie.ts","src/src/argv.ts","src/src/browsers/CookieQueryStrategy.ts","src/src/global.ts","src/src/findAllFiles.ts","src/src/CookieRow.ts","src/src/IsCookieRow.ts","src/src/StringToRegex.ts","src/src/execSimple.ts","src/src/browsers/getChromePassword.ts","src/src/browsers/ChromeApplicationSupport.ts","src/src/browsers/decrypt.ts","src/src/browsers/DoSqliteQueryWithTransform.ts","src/src/browsers/ChromeCookieQueryStrategy.ts","src/src/SpecialCases.ts","src/src/browsers/FirefoxCookieQueryStrategy.ts","src/src/browsers/SafariCookieQueryStrategy.ts","src/src/util/flatMapAsync.ts","src/src/browsers/CompositeCookieQueryStrategy.ts","src/src/isValidJwt.ts","src/src/queryCookies.ts","src/src/getCookie.ts","src/src/getChromeCookie.ts","src/src/getFirefoxCookie.ts","src/src/resultsRendered.ts","src/src/comboQueryCookieSpec.ts","src/src/getGroupedRenderedCookies.ts","src/src/getMergedRenderedCookies.ts","src/src/cookieSpecsFromUrl.ts","src/src/fetchWithCookies.ts","src/src/index.ts","src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"#!/usr/bin/env bun run\n\nimport { getCookie } from \"./getCookie\";\nimport { getChromeCookie } from \"./getChromeCookie\";\nimport { getFirefoxCookie } from \"./getFirefoxCookie\";\nimport { getGroupedRenderedCookies } from \"./getGroupedRenderedCookies\";\nimport { getMergedRenderedCookies } from \"./getMergedRenderedCookies\";\nimport { fetchWithCookies } from \"./fetchWithCookies\";\n\nexport {\n getCookie,\n getChromeCookie,\n getFirefoxCookie,\n getMergedRenderedCookies,\n getGroupedRenderedCookies,\n fetchWithCookies,\n //\n};\n"],"names":[],"version":3,"file":"types.d.ts.map","sourceRoot":"../"}