@mherod/get-cookie 4.2.0 โ 4.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.husky/commit-msg +0 -0
- package/.husky/pre-commit +0 -0
- package/.husky/pre-push +0 -0
- package/README.md +76 -117
- package/dist/cli.cjs +1 -1
- package/dist/cli.cjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -7
- package/dist/index.d.ts +7 -7
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/eslint.config.js +6 -1
- package/examples/basic-usage.ts +9 -10
- package/examples/cli-examples.sh +0 -0
- package/package.json +29 -19
- package/dist/chunk-GVQTX3C5.js +0 -2
- package/dist/chunk-GVQTX3C5.js.map +0 -1
- package/dist/getChromePassword-6XZINNNO.js +0 -2
- package/dist/getChromePassword-6XZINNNO.js.map +0 -1
package/.husky/commit-msg
CHANGED
|
File without changes
|
package/.husky/pre-commit
CHANGED
|
File without changes
|
package/.husky/pre-push
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
@@ -1,151 +1,101 @@
|
|
|
1
1
|
# get-cookie ๐ช
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Tired of manually copying cookies for API testing? `get-cookie` extracts authentication cookies directly from Chrome, Firefox, and Safari - perfect for testing, debugging, and automation.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Quick Start ๐
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
- ๐งช Integration testing with real browser cookies
|
|
11
|
-
|
|
12
|
-
## Documentation ๐
|
|
13
|
-
|
|
14
|
-
Visit our [comprehensive documentation](https://mherod.github.io/get-cookie/) for:
|
|
15
|
-
|
|
16
|
-
- Detailed API reference
|
|
17
|
-
- Getting started guides
|
|
18
|
-
- Advanced usage examples
|
|
19
|
-
- TypeScript type definitions
|
|
20
|
-
|
|
21
|
-
## Features โจ
|
|
22
|
-
|
|
23
|
-
- ๐ **Multi-Browser Support**: Works with Chrome, Firefox, and Safari
|
|
24
|
-
- ๐ **Secure**: Safe cookie extraction with proper encryption handling
|
|
25
|
-
- ๐ **TypeScript Ready**: Built with TypeScript for excellent type safety
|
|
26
|
-
- ๐ฏ **Flexible Querying**: Search by name, domain, or URL pattern
|
|
27
|
-
- ๐ **Multiple Output Formats**: JSON, rendered, or grouped results
|
|
28
|
-
- ๐ฅ **Profile Support**: Query cookies from different browser profiles
|
|
29
|
-
|
|
30
|
-
## Installation ๐ฆ
|
|
7
|
+
```bash
|
|
8
|
+
# Install globally
|
|
9
|
+
pnpm add -g @mherod/get-cookie
|
|
31
10
|
|
|
32
|
-
|
|
11
|
+
# Get a cookie
|
|
12
|
+
get-cookie auth example.com
|
|
33
13
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
14
|
+
# Get all cookies for a domain
|
|
15
|
+
get-cookie % example.com
|
|
16
|
+
```
|
|
37
17
|
|
|
38
|
-
|
|
39
|
-
|
|
18
|
+
```typescript
|
|
19
|
+
// Node.js usage
|
|
20
|
+
import { getCookie } from "@mherod/get-cookie";
|
|
40
21
|
|
|
41
|
-
|
|
42
|
-
|
|
22
|
+
const cookies = await getCookie({
|
|
23
|
+
name: "auth",
|
|
24
|
+
domain: "example.com",
|
|
25
|
+
});
|
|
43
26
|
```
|
|
44
27
|
|
|
45
|
-
|
|
28
|
+
โ ๏ธ **Platform Support**:
|
|
46
29
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
30
|
+
- Chrome: macOS only
|
|
31
|
+
- Firefox: macOS and Linux
|
|
32
|
+
- Safari: macOS only
|
|
50
33
|
|
|
51
|
-
|
|
52
|
-
npm install -g @mherod/get-cookie
|
|
34
|
+
## Installation ๐ฆ
|
|
53
35
|
|
|
54
|
-
|
|
55
|
-
|
|
36
|
+
```bash
|
|
37
|
+
pnpm add @mherod/get-cookie # recommended
|
|
38
|
+
npm install @mherod/get-cookie # or npm
|
|
39
|
+
yarn add @mherod/get-cookie # or yarn
|
|
56
40
|
```
|
|
57
41
|
|
|
58
|
-
|
|
42
|
+
## Common Use Cases ๐ฏ
|
|
59
43
|
|
|
60
|
-
|
|
44
|
+
- ๐ Get auth cookies for API testing
|
|
45
|
+
- ๐ Debug cookie issues across browsers
|
|
46
|
+
- ๐ค Automate cookie extraction
|
|
47
|
+
- ๐งช Use real cookies in integration tests
|
|
61
48
|
|
|
62
|
-
|
|
49
|
+
## Basic Usage Examples ๐ก
|
|
63
50
|
|
|
64
|
-
|
|
51
|
+
### CLI
|
|
65
52
|
|
|
66
53
|
```bash
|
|
67
|
-
# Get
|
|
54
|
+
# Get specific cookie
|
|
68
55
|
get-cookie auth example.com
|
|
69
56
|
|
|
70
|
-
#
|
|
71
|
-
get-cookie % example.com
|
|
72
|
-
|
|
73
|
-
# Get cookies with output formatting
|
|
57
|
+
# Pretty print
|
|
74
58
|
get-cookie auth example.com --render
|
|
75
|
-
get-cookie auth example.com --dump-grouped
|
|
76
59
|
|
|
77
|
-
#
|
|
60
|
+
# From URL
|
|
78
61
|
get-cookie --url https://example.com/path
|
|
79
62
|
```
|
|
80
63
|
|
|
81
|
-
### Node.js
|
|
82
|
-
|
|
83
|
-
Basic usage:
|
|
84
|
-
|
|
85
|
-
```typescript
|
|
86
|
-
import { getCookie } from "@mherod/get-cookie";
|
|
87
|
-
|
|
88
|
-
// Get a specific cookie
|
|
89
|
-
const authCookies = await getCookie({
|
|
90
|
-
name: "auth",
|
|
91
|
-
domain: "example.com",
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
// Get all cookies for a domain
|
|
95
|
-
const allCookies = await getCookie({
|
|
96
|
-
name: "%",
|
|
97
|
-
domain: "example.com",
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
// Get cookies from multiple specifications
|
|
101
|
-
import { comboQueryCookieSpec } from "@mherod/get-cookie";
|
|
102
|
-
|
|
103
|
-
const cookies = await comboQueryCookieSpec(
|
|
104
|
-
[
|
|
105
|
-
{ name: "session", domain: "api.example.com" },
|
|
106
|
-
{ name: "auth", domain: "auth.example.com" },
|
|
107
|
-
],
|
|
108
|
-
{
|
|
109
|
-
removeExpired: true,
|
|
110
|
-
limit: 10,
|
|
111
|
-
},
|
|
112
|
-
);
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### Advanced Usage ๐ง
|
|
116
|
-
|
|
117
|
-
Using browser-specific strategies:
|
|
64
|
+
### Node.js
|
|
118
65
|
|
|
119
66
|
```typescript
|
|
120
|
-
import {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
"
|
|
136
|
-
|
|
137
|
-
);
|
|
67
|
+
import { getCookie, type CookieSpec } from "@mherod/get-cookie";
|
|
68
|
+
|
|
69
|
+
try {
|
|
70
|
+
// Get specific cookie
|
|
71
|
+
const authCookie = await getCookie({
|
|
72
|
+
name: "auth",
|
|
73
|
+
domain: "example.com",
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
// Get multiple cookies
|
|
77
|
+
const cookies = await getCookie({
|
|
78
|
+
name: "%", // all cookies
|
|
79
|
+
domain: "example.com",
|
|
80
|
+
});
|
|
81
|
+
} catch (error) {
|
|
82
|
+
console.error("Failed:", error);
|
|
83
|
+
}
|
|
138
84
|
```
|
|
139
85
|
|
|
140
|
-
|
|
86
|
+
## Features โจ
|
|
141
87
|
|
|
142
|
-
|
|
143
|
-
|
|
88
|
+
- ๐ **Multi-Browser Support**:
|
|
89
|
+
- Chrome (macOS)
|
|
90
|
+
- Firefox (macOS, Linux)
|
|
91
|
+
- Safari (macOS)
|
|
92
|
+
- ๐ **Secure**: Browser-specific encryption handling
|
|
93
|
+
- ๐ **TypeScript Ready**: Full type safety with exported type definitions
|
|
94
|
+
- ๐ฏ **Flexible Querying**: Search by name, domain, or use wildcards
|
|
95
|
+
- ๐ **Multiple Output Formats**: JSON, rendered, or grouped results
|
|
96
|
+
- ๐ฅ **Profile Support**: Chrome and Firefox multi-profile support
|
|
144
97
|
|
|
145
|
-
|
|
146
|
-
const specs = cookieSpecsFromUrl("https://example.com/dashboard");
|
|
147
|
-
const cookies = await comboQueryCookieSpec(specs);
|
|
148
|
-
```
|
|
98
|
+
โ ๏ธ **Note: Platform support varies by browser. See our [Platform Support Guide](https://mherod.github.io/get-cookie/guide/platform-support.html) for details.**
|
|
149
99
|
|
|
150
100
|
## Output Formats ๐
|
|
151
101
|
|
|
@@ -165,6 +115,15 @@ get-cookie auth example.com --render
|
|
|
165
115
|
get-cookie auth example.com --dump-grouped
|
|
166
116
|
```
|
|
167
117
|
|
|
118
|
+
## Documentation ๐
|
|
119
|
+
|
|
120
|
+
Full docs at [mherod.github.io/get-cookie](https://mherod.github.io/get-cookie/)
|
|
121
|
+
|
|
122
|
+
- API Reference
|
|
123
|
+
- Advanced Usage
|
|
124
|
+
- TypeScript Types
|
|
125
|
+
- [Security Guide](https://mherod.github.io/get-cookie/guide/security.html) โ ๏ธ
|
|
126
|
+
|
|
168
127
|
## Contributing ๐ค
|
|
169
128
|
|
|
170
129
|
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
|
|
@@ -173,6 +132,6 @@ Contributions are welcome! Please feel free to submit a Pull Request. For major
|
|
|
173
132
|
|
|
174
133
|
This project is licensed under the MIT License - see the LICENSE file for details.
|
|
175
134
|
|
|
176
|
-
##
|
|
135
|
+
## Known Limitations ๐ง
|
|
177
136
|
|
|
178
|
-
|
|
137
|
+
For a comprehensive list of limitations and known issues, please see our [Known Limitations Guide](https://mherod.github.io/get-cookie/guide/limitations.html).
|
package/dist/cli.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var xn=Object.create;var Cr=Object.defineProperty;var yn=Object.getOwnPropertyDescriptor;var hn=Object.getOwnPropertyNames;var bn=Object.getPrototypeOf,Cn=Object.prototype.hasOwnProperty;var n=(e,r)=>()=>(e&&(r=e(e=0)),r);var wn=(e,r)=>{for(var t in r)Cr(e,t,{get:r[t],enumerable:!0})},kn=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of hn(r))!Cn.call(e,a)&&a!==t&&Cr(e,a,{get:()=>r[a],enumerable:!(o=yn(r,a))||o.enumerable});return e};var J=(e,r,t)=>(t=e!=null?xn(bn(e)):{},kn(r||!e||!e.__esModule?Cr(t,"default",{value:e,enumerable:!0}):t,e));var rt,tt,ce,Sn,kr,ot=n(()=>{"use strict";rt=require("os"),tt=require("dotenv"),ce=require("zod");(0,tt.config)();Sn=ce.z.object({LOG_LEVEL:ce.z.enum(["debug","info","warn","error"]).default("info"),HOME:ce.z.string().optional().transform(e=>e??process.env.USERPROFILE??"").pipe(ce.z.string().min(1))}),kr=Sn.parse({LOG_LEVEL:process.env.LOG_LEVEL,HOME:(0,rt.homedir)()})});var at,En,cm,m,O=n(()=>{"use strict";at=require("consola");ot();En=(0,at.createConsola)({fancy:!0,formatOptions:{showLogLevel:!1,colors:!0,date:!1,compact:!0,columns:typeof process.stdout.columns=="number"?process.stdout.columns:80},level:kr.LOG_LEVEL==="debug"?5:2}),cm=kr.LOG_LEVEL==="debug",m=En});function it(e,r,t){let a=`${r?"\u2705":"\u274C"} ${e} ${r?"succeeded":"failed"}`;r?m.success(a,t):m.error(a,t)}function y(e,r,t){let o={...t??{},error:r instanceof Error?{name:r.name,message:r.message,stack:r.stack}:r};m.error(e,o)}function P(e,r,t){m.withTag(e).debug(r,t)}function Pe(e){return m.withTag(e)}function C(e,r,t){m.withTag(e).warn(r,t)}var v=n(()=>{"use strict";O();O()});var On,Re,vr=n(()=>{"use strict";On=typeof global=="object"&&global&&global.Object===Object&&global,Re=On});var _n,An,b,T=n(()=>{"use strict";vr();_n=typeof self=="object"&&self&&self.Object===Object&&self,An=Re||_n||Function("return this")(),b=An});var Pn,S,xe=n(()=>{"use strict";T();Pn=b.Symbol,S=Pn});function Bn(e){var r=Tn.call(e,ye),t=e[ye];try{e[ye]=void 0;var o=!0}catch{}var a=Rn.call(e);return o&&(r?e[ye]=t:delete e[ye]),a}var nt,Tn,Rn,ye,st,ft=n(()=>{"use strict";xe();nt=Object.prototype,Tn=nt.hasOwnProperty,Rn=nt.toString,ye=S?S.toStringTag:void 0;st=Bn});function Fn(e){return Ln.call(e)}var In,Ln,pt,ut=n(()=>{"use strict";In=Object.prototype,Ln=In.toString;pt=Fn});function jn(e){return e==null?e===void 0?Mn:Dn:mt&&mt in Object(e)?st(e):pt(e)}var Dn,Mn,mt,_,V=n(()=>{"use strict";xe();ft();ut();Dn="[object Null]",Mn="[object Undefined]",mt=S?S.toStringTag:void 0;_=jn});function Nn(e){return e!=null&&typeof e=="object"}var A,Z=n(()=>{"use strict";A=Nn});function Hn(e){return typeof e=="symbol"||A(e)&&_(e)==Un}var Un,X,Be=n(()=>{"use strict";V();Z();Un="[object Symbol]";X=Hn});function zn(e,r){for(var t=-1,o=e==null?0:e.length,a=Array(o);++t<o;)a[t]=r(e[t],t,e);return a}var lt,dt=n(()=>{"use strict";lt=zn});var qn,h,R=n(()=>{"use strict";qn=Array.isArray,h=qn});function xt(e){if(typeof e=="string")return e;if(h(e))return lt(e,xt)+"";if(X(e))return gt?gt.call(e):"";var r=e+"";return r=="0"&&1/e==-Gn?"-0":r}var Gn,ct,gt,yt,ht=n(()=>{"use strict";xe();dt();R();Be();Gn=1/0,ct=S?S.prototype:void 0,gt=ct?ct.toString:void 0;yt=xt});function Qn(e){var r=typeof e;return e!=null&&(r=="object"||r=="function")}var Y,Ie=n(()=>{"use strict";Y=Qn});function Wn(e){return e}var bt,Ct=n(()=>{"use strict";bt=Wn});function Zn(e){if(!Y(e))return!1;var r=_(e);return r==Kn||r==Jn||r==$n||r==Vn}var $n,Kn,Jn,Vn,Le,Sr=n(()=>{"use strict";V();Ie();$n="[object AsyncFunction]",Kn="[object Function]",Jn="[object GeneratorFunction]",Vn="[object Proxy]";Le=Zn});var Xn,Fe,wt=n(()=>{"use strict";T();Xn=b["__core-js_shared__"],Fe=Xn});function Yn(e){return!!kt&&kt in e}var kt,vt,St=n(()=>{"use strict";wt();kt=function(){var e=/[^.]+$/.exec(Fe&&Fe.keys&&Fe.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();vt=Yn});function ts(e){if(e!=null){try{return rs.call(e)}catch{}try{return e+""}catch{}}return""}var es,rs,F,Er=n(()=>{"use strict";es=Function.prototype,rs=es.toString;F=ts});function us(e){if(!Y(e)||vt(e))return!1;var r=Le(e)?ps:as;return r.test(F(e))}var os,as,is,ns,ss,fs,ps,Et,Ot=n(()=>{"use strict";Sr();St();Ie();Er();os=/[\\^$.*+?()[\]{}|]/g,as=/^\[object .+?Constructor\]$/,is=Function.prototype,ns=Object.prototype,ss=is.toString,fs=ns.hasOwnProperty,ps=RegExp("^"+ss.call(fs).replace(os,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");Et=us});function ms(e,r){return e?.[r]}var _t,At=n(()=>{"use strict";_t=ms});function ls(e,r){var t=_t(e,r);return Et(t)?t:void 0}var w,j=n(()=>{"use strict";Ot();At();w=ls});var ds,De,Pt=n(()=>{"use strict";j();T();ds=w(b,"WeakMap"),De=ds});var cs,Or,Tt=n(()=>{"use strict";j();cs=function(){try{var e=w(Object,"defineProperty");return e({},"",{}),e}catch{}}(),Or=cs});function ys(e,r){var t=typeof e;return r=r??gs,!!r&&(t=="number"||t!="symbol"&&xs.test(e))&&e>-1&&e%1==0&&e<r}var gs,xs,Me,_r=n(()=>{"use strict";gs=9007199254740991,xs=/^(?:0|[1-9]\d*)$/;Me=ys});function hs(e,r,t){r=="__proto__"&&Or?Or(e,r,{configurable:!0,enumerable:!0,value:t,writable:!0}):e[r]=t}var Rt,Bt=n(()=>{"use strict";Tt();Rt=hs});function bs(e,r){return e===r||e!==e&&r!==r}var je,Ar=n(()=>{"use strict";je=bs});function ws(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Cs}var Cs,ee,Ne=n(()=>{"use strict";Cs=9007199254740991;ee=ws});function ks(e){return e!=null&&ee(e.length)&&!Le(e)}var Ue,Pr=n(()=>{"use strict";Sr();Ne();Ue=ks});function Ss(e){var r=e&&e.constructor,t=typeof r=="function"&&r.prototype||vs;return e===t}var vs,It,Lt=n(()=>{"use strict";vs=Object.prototype;It=Ss});function Es(e,r){for(var t=-1,o=Array(e);++t<e;)o[t]=r(t);return o}var Ft,Dt=n(()=>{"use strict";Ft=Es});function _s(e){return A(e)&&_(e)==Os}var Os,Tr,Mt=n(()=>{"use strict";V();Z();Os="[object Arguments]";Tr=_s});var jt,As,Ps,Ts,He,Rr=n(()=>{"use strict";Mt();Z();jt=Object.prototype,As=jt.hasOwnProperty,Ps=jt.propertyIsEnumerable,Ts=Tr(function(){return arguments}())?Tr:function(e){return A(e)&&As.call(e,"callee")&&!Ps.call(e,"callee")},He=Ts});function Rs(){return!1}var Nt,Ut=n(()=>{"use strict";Nt=Rs});var qt,Ht,Bs,zt,Is,Ls,he,Br=n(()=>{"use strict";T();Ut();qt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Ht=qt&&typeof module=="object"&&module&&!module.nodeType&&module,Bs=Ht&&Ht.exports===qt,zt=Bs?b.Buffer:void 0,Is=zt?zt.isBuffer:void 0,Ls=Is||Nt,he=Ls});function nf(e){return A(e)&&ee(e.length)&&!!x[_(e)]}var Fs,Ds,Ms,js,Ns,Us,Hs,zs,qs,Gs,Qs,Ws,$s,Ks,Js,Vs,Zs,Xs,Ys,ef,rf,tf,of,af,x,Gt,Qt=n(()=>{"use strict";V();Ne();Z();Fs="[object Arguments]",Ds="[object Array]",Ms="[object Boolean]",js="[object Date]",Ns="[object Error]",Us="[object Function]",Hs="[object Map]",zs="[object Number]",qs="[object Object]",Gs="[object RegExp]",Qs="[object Set]",Ws="[object String]",$s="[object WeakMap]",Ks="[object ArrayBuffer]",Js="[object DataView]",Vs="[object Float32Array]",Zs="[object Float64Array]",Xs="[object Int8Array]",Ys="[object Int16Array]",ef="[object Int32Array]",rf="[object Uint8Array]",tf="[object Uint8ClampedArray]",of="[object Uint16Array]",af="[object Uint32Array]",x={};x[Vs]=x[Zs]=x[Xs]=x[Ys]=x[ef]=x[rf]=x[tf]=x[of]=x[af]=!0;x[Fs]=x[Ds]=x[Ks]=x[Ms]=x[Js]=x[js]=x[Ns]=x[Us]=x[Hs]=x[zs]=x[qs]=x[Gs]=x[Qs]=x[Ws]=x[$s]=!1;Gt=nf});function sf(e){return function(r){return e(r)}}var Wt,$t=n(()=>{"use strict";Wt=sf});var Kt,be,ff,Ir,pf,Lr,Jt=n(()=>{"use strict";vr();Kt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,be=Kt&&typeof module=="object"&&module&&!module.nodeType&&module,ff=be&&be.exports===Kt,Ir=ff&&Re.process,pf=function(){try{var e=be&&be.require&&be.require("util").types;return e||Ir&&Ir.binding&&Ir.binding("util")}catch{}}(),Lr=pf});var Vt,uf,ze,Fr=n(()=>{"use strict";Qt();$t();Jt();Vt=Lr&&Lr.isTypedArray,uf=Vt?Wt(Vt):Gt,ze=uf});function df(e,r){var t=h(e),o=!t&&He(e),a=!t&&!o&&he(e),i=!t&&!o&&!a&&ze(e),s=t||o||a||i,f=s?Ft(e.length,String):[],p=f.length;for(var u in e)(r||lf.call(e,u))&&!(s&&(u=="length"||a&&(u=="offset"||u=="parent")||i&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||Me(u,p)))&&f.push(u);return f}var mf,lf,Zt,Xt=n(()=>{"use strict";Dt();Rr();R();Br();_r();Fr();mf=Object.prototype,lf=mf.hasOwnProperty;Zt=df});function cf(e,r){return function(t){return e(r(t))}}var Yt,eo=n(()=>{"use strict";Yt=cf});var gf,ro,to=n(()=>{"use strict";eo();gf=Yt(Object.keys,Object),ro=gf});function hf(e){if(!It(e))return ro(e);var r=[];for(var t in Object(e))yf.call(e,t)&&t!="constructor"&&r.push(t);return r}var xf,yf,oo,ao=n(()=>{"use strict";Lt();to();xf=Object.prototype,yf=xf.hasOwnProperty;oo=hf});function bf(e){return Ue(e)?Zt(e):oo(e)}var re,qe=n(()=>{"use strict";Xt();ao();Pr();re=bf});function kf(e,r){if(h(e))return!1;var t=typeof e;return t=="number"||t=="symbol"||t=="boolean"||e==null||X(e)?!0:wf.test(e)||!Cf.test(e)||r!=null&&e in Object(r)}var Cf,wf,te,Ge=n(()=>{"use strict";R();Be();Cf=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,wf=/^\w*$/;te=kf});var vf,D,Ce=n(()=>{"use strict";j();vf=w(Object,"create"),D=vf});function Sf(){this.__data__=D?D(null):{},this.size=0}var io,no=n(()=>{"use strict";Ce();io=Sf});function Ef(e){var r=this.has(e)&&delete this.__data__[e];return this.size-=r?1:0,r}var so,fo=n(()=>{"use strict";so=Ef});function Pf(e){var r=this.__data__;if(D){var t=r[e];return t===Of?void 0:t}return Af.call(r,e)?r[e]:void 0}var Of,_f,Af,po,uo=n(()=>{"use strict";Ce();Of="__lodash_hash_undefined__",_f=Object.prototype,Af=_f.hasOwnProperty;po=Pf});function Bf(e){var r=this.__data__;return D?r[e]!==void 0:Rf.call(r,e)}var Tf,Rf,mo,lo=n(()=>{"use strict";Ce();Tf=Object.prototype,Rf=Tf.hasOwnProperty;mo=Bf});function Lf(e,r){var t=this.__data__;return this.size+=this.has(e)?0:1,t[e]=D&&r===void 0?If:r,this}var If,co,go=n(()=>{"use strict";Ce();If="__lodash_hash_undefined__";co=Lf});function oe(e){var r=-1,t=e==null?0:e.length;for(this.clear();++r<t;){var o=e[r];this.set(o[0],o[1])}}var Dr,xo=n(()=>{"use strict";no();fo();uo();lo();go();oe.prototype.clear=io;oe.prototype.delete=so;oe.prototype.get=po;oe.prototype.has=mo;oe.prototype.set=co;Dr=oe});function Ff(){this.__data__=[],this.size=0}var yo,ho=n(()=>{"use strict";yo=Ff});function Df(e,r){for(var t=e.length;t--;)if(je(e[t][0],r))return t;return-1}var N,we=n(()=>{"use strict";Ar();N=Df});function Nf(e){var r=this.__data__,t=N(r,e);if(t<0)return!1;var o=r.length-1;return t==o?r.pop():jf.call(r,t,1),--this.size,!0}var Mf,jf,bo,Co=n(()=>{"use strict";we();Mf=Array.prototype,jf=Mf.splice;bo=Nf});function Uf(e){var r=this.__data__,t=N(r,e);return t<0?void 0:r[t][1]}var wo,ko=n(()=>{"use strict";we();wo=Uf});function Hf(e){return N(this.__data__,e)>-1}var vo,So=n(()=>{"use strict";we();vo=Hf});function zf(e,r){var t=this.__data__,o=N(t,e);return o<0?(++this.size,t.push([e,r])):t[o][1]=r,this}var Eo,Oo=n(()=>{"use strict";we();Eo=zf});function ae(e){var r=-1,t=e==null?0:e.length;for(this.clear();++r<t;){var o=e[r];this.set(o[0],o[1])}}var U,ke=n(()=>{"use strict";ho();Co();ko();So();Oo();ae.prototype.clear=yo;ae.prototype.delete=bo;ae.prototype.get=wo;ae.prototype.has=vo;ae.prototype.set=Eo;U=ae});var qf,H,Qe=n(()=>{"use strict";j();T();qf=w(b,"Map"),H=qf});function Gf(){this.size=0,this.__data__={hash:new Dr,map:new(H||U),string:new Dr}}var _o,Ao=n(()=>{"use strict";xo();ke();Qe();_o=Gf});function Qf(e){var r=typeof e;return r=="string"||r=="number"||r=="symbol"||r=="boolean"?e!=="__proto__":e===null}var Po,To=n(()=>{"use strict";Po=Qf});function Wf(e,r){var t=e.__data__;return Po(r)?t[typeof r=="string"?"string":"hash"]:t.map}var z,ve=n(()=>{"use strict";To();z=Wf});function $f(e){var r=z(this,e).delete(e);return this.size-=r?1:0,r}var Ro,Bo=n(()=>{"use strict";ve();Ro=$f});function Kf(e){return z(this,e).get(e)}var Io,Lo=n(()=>{"use strict";ve();Io=Kf});function Jf(e){return z(this,e).has(e)}var Fo,Do=n(()=>{"use strict";ve();Fo=Jf});function Vf(e,r){var t=z(this,e),o=t.size;return t.set(e,r),this.size+=t.size==o?0:1,this}var Mo,jo=n(()=>{"use strict";ve();Mo=Vf});function ie(e){var r=-1,t=e==null?0:e.length;for(this.clear();++r<t;){var o=e[r];this.set(o[0],o[1])}}var $,We=n(()=>{"use strict";Ao();Bo();Lo();Do();jo();ie.prototype.clear=_o;ie.prototype.delete=Ro;ie.prototype.get=Io;ie.prototype.has=Fo;ie.prototype.set=Mo;$=ie});function Mr(e,r){if(typeof e!="function"||r!=null&&typeof r!="function")throw new TypeError(Zf);var t=function(){var o=arguments,a=r?r.apply(this,o):o[0],i=t.cache;if(i.has(a))return i.get(a);var s=e.apply(this,o);return t.cache=i.set(a,s)||i,s};return t.cache=new(Mr.Cache||$),t}var Zf,B,jr=n(()=>{"use strict";We();Zf="Expected a function";Mr.Cache=$;B=Mr});function Yf(e){var r=B(e,function(o){return t.size===Xf&&t.clear(),o}),t=r.cache;return r}var Xf,No,Uo=n(()=>{"use strict";jr();Xf=500;No=Yf});var ep,rp,tp,Ho,zo=n(()=>{"use strict";Uo();ep=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,rp=/\\(\\)?/g,tp=No(function(e){var r=[];return e.charCodeAt(0)===46&&r.push(""),e.replace(ep,function(t,o,a,i){r.push(a?i.replace(rp,"$1"):o||t)}),r}),Ho=tp});function op(e){return e==null?"":yt(e)}var qo,Go=n(()=>{"use strict";ht();qo=op});function ap(e,r){return h(e)?e:te(e,r)?[e]:Ho(qo(e))}var $e,Nr=n(()=>{"use strict";R();Ge();zo();Go();$e=ap});function np(e){if(typeof e=="string"||X(e))return e;var r=e+"";return r=="0"&&1/e==-ip?"-0":r}var ip,q,Se=n(()=>{"use strict";Be();ip=1/0;q=np});function sp(e,r){r=$e(r,e);for(var t=0,o=r.length;e!=null&&t<o;)e=e[q(r[t++])];return t&&t==o?e:void 0}var Ke,Ur=n(()=>{"use strict";Nr();Se();Ke=sp});function fp(e,r,t){var o=e==null?void 0:Ke(e,r);return o===void 0?t:o}var Qo,Wo=n(()=>{"use strict";Ur();Qo=fp});function pp(e,r){for(var t=-1,o=r.length,a=e.length;++t<o;)e[a+t]=r[t];return e}var $o,Ko=n(()=>{"use strict";$o=pp});function up(){this.__data__=new U,this.size=0}var Jo,Vo=n(()=>{"use strict";ke();Jo=up});function mp(e){var r=this.__data__,t=r.delete(e);return this.size=r.size,t}var Zo,Xo=n(()=>{"use strict";Zo=mp});function lp(e){return this.__data__.get(e)}var Yo,ea=n(()=>{"use strict";Yo=lp});function dp(e){return this.__data__.has(e)}var ra,ta=n(()=>{"use strict";ra=dp});function gp(e,r){var t=this.__data__;if(t instanceof U){var o=t.__data__;if(!H||o.length<cp-1)return o.push([e,r]),this.size=++t.size,this;t=this.__data__=new $(o)}return t.set(e,r),this.size=t.size,this}var cp,oa,aa=n(()=>{"use strict";ke();Qe();We();cp=200;oa=gp});function ne(e){var r=this.__data__=new U(e);this.size=r.size}var se,Hr=n(()=>{"use strict";ke();Vo();Xo();ea();ta();aa();ne.prototype.clear=Jo;ne.prototype.delete=Zo;ne.prototype.get=Yo;ne.prototype.has=ra;ne.prototype.set=oa;se=ne});function xp(e,r){for(var t=-1,o=e==null?0:e.length,a=0,i=[];++t<o;){var s=e[t];r(s,t,e)&&(i[a++]=s)}return i}var ia,na=n(()=>{"use strict";ia=xp});function yp(){return[]}var sa,fa=n(()=>{"use strict";sa=yp});var hp,bp,pa,Cp,ua,ma=n(()=>{"use strict";na();fa();hp=Object.prototype,bp=hp.propertyIsEnumerable,pa=Object.getOwnPropertySymbols,Cp=pa?function(e){return e==null?[]:(e=Object(e),ia(pa(e),function(r){return bp.call(e,r)}))}:sa,ua=Cp});function wp(e,r,t){var o=r(e);return h(e)?o:$o(o,t(e))}var la,da=n(()=>{"use strict";Ko();R();la=wp});function kp(e){return la(e,re,ua)}var zr,ca=n(()=>{"use strict";da();ma();qe();zr=kp});var vp,Je,ga=n(()=>{"use strict";j();T();vp=w(b,"DataView"),Je=vp});var Sp,Ve,xa=n(()=>{"use strict";j();T();Sp=w(b,"Promise"),Ve=Sp});var Ep,Ze,ya=n(()=>{"use strict";j();T();Ep=w(b,"Set"),Ze=Ep});var ha,Op,ba,Ca,wa,ka,_p,Ap,Pp,Tp,Rp,K,qr,va=n(()=>{"use strict";ga();Qe();xa();ya();Pt();V();Er();ha="[object Map]",Op="[object Object]",ba="[object Promise]",Ca="[object Set]",wa="[object WeakMap]",ka="[object DataView]",_p=F(Je),Ap=F(H),Pp=F(Ve),Tp=F(Ze),Rp=F(De),K=_;(Je&&K(new Je(new ArrayBuffer(1)))!=ka||H&&K(new H)!=ha||Ve&&K(Ve.resolve())!=ba||Ze&&K(new Ze)!=Ca||De&&K(new De)!=wa)&&(K=function(e){var r=_(e),t=r==Op?e.constructor:void 0,o=t?F(t):"";if(o)switch(o){case _p:return ka;case Ap:return ha;case Pp:return ba;case Tp:return Ca;case Rp:return wa}return r});qr=K});var Bp,Gr,Sa=n(()=>{"use strict";T();Bp=b.Uint8Array,Gr=Bp});function Lp(e){return this.__data__.set(e,Ip),this}var Ip,Ea,Oa=n(()=>{"use strict";Ip="__lodash_hash_undefined__";Ea=Lp});function Fp(e){return this.__data__.has(e)}var _a,Aa=n(()=>{"use strict";_a=Fp});function Xe(e){var r=-1,t=e==null?0:e.length;for(this.__data__=new $;++r<t;)this.add(e[r])}var Pa,Ta=n(()=>{"use strict";We();Oa();Aa();Xe.prototype.add=Xe.prototype.push=Ea;Xe.prototype.has=_a;Pa=Xe});function Dp(e,r){for(var t=-1,o=e==null?0:e.length;++t<o;)if(r(e[t],t,e))return!0;return!1}var Ra,Ba=n(()=>{"use strict";Ra=Dp});function Mp(e,r){return e.has(r)}var Ia,La=n(()=>{"use strict";Ia=Mp});function Up(e,r,t,o,a,i){var s=t&jp,f=e.length,p=r.length;if(f!=p&&!(s&&p>f))return!1;var u=i.get(e),d=i.get(r);if(u&&d)return u==r&&d==e;var c=-1,g=!0,L=t&Np?new Pa:void 0;for(i.set(e,r),i.set(r,e);++c<f;){var k=e[c],E=r[c];if(o)var M=s?o(E,k,c,r,e,i):o(k,E,c,e,r,i);if(M!==void 0){if(M)continue;g=!1;break}if(L){if(!Ra(r,function(Q,W){if(!Ia(L,W)&&(k===Q||a(k,Q,t,o,i)))return L.push(W)})){g=!1;break}}else if(!(k===E||a(k,E,t,o,i))){g=!1;break}}return i.delete(e),i.delete(r),g}var jp,Np,Ye,Qr=n(()=>{"use strict";Ta();Ba();La();jp=1,Np=2;Ye=Up});function Hp(e){var r=-1,t=Array(e.size);return e.forEach(function(o,a){t[++r]=[a,o]}),t}var Fa,Da=n(()=>{"use strict";Fa=Hp});function zp(e){var r=-1,t=Array(e.size);return e.forEach(function(o){t[++r]=o}),t}var Ma,ja=n(()=>{"use strict";Ma=zp});function tu(e,r,t,o,a,i,s){switch(t){case ru:if(e.byteLength!=r.byteLength||e.byteOffset!=r.byteOffset)return!1;e=e.buffer,r=r.buffer;case eu:return!(e.byteLength!=r.byteLength||!i(new Gr(e),new Gr(r)));case Qp:case Wp:case Jp:return je(+e,+r);case $p:return e.name==r.name&&e.message==r.message;case Vp:case Xp:return e==r+"";case Kp:var f=Fa;case Zp:var p=o&qp;if(f||(f=Ma),e.size!=r.size&&!p)return!1;var u=s.get(e);if(u)return u==r;o|=Gp,s.set(e,r);var d=Ye(f(e),f(r),o,a,i,s);return s.delete(e),d;case Yp:if(Wr)return Wr.call(e)==Wr.call(r)}return!1}var qp,Gp,Qp,Wp,$p,Kp,Jp,Vp,Zp,Xp,Yp,eu,ru,Na,Wr,Ua,Ha=n(()=>{"use strict";xe();Sa();Ar();Qr();Da();ja();qp=1,Gp=2,Qp="[object Boolean]",Wp="[object Date]",$p="[object Error]",Kp="[object Map]",Jp="[object Number]",Vp="[object RegExp]",Zp="[object Set]",Xp="[object String]",Yp="[object Symbol]",eu="[object ArrayBuffer]",ru="[object DataView]",Na=S?S.prototype:void 0,Wr=Na?Na.valueOf:void 0;Ua=tu});function nu(e,r,t,o,a,i){var s=t&ou,f=zr(e),p=f.length,u=zr(r),d=u.length;if(p!=d&&!s)return!1;for(var c=p;c--;){var g=f[c];if(!(s?g in r:iu.call(r,g)))return!1}var L=i.get(e),k=i.get(r);if(L&&k)return L==r&&k==e;var E=!0;i.set(e,r),i.set(r,e);for(var M=s;++c<p;){g=f[c];var Q=e[g],W=r[g];if(o)var Xr=s?o(W,Q,g,r,e,i):o(Q,W,g,e,r,i);if(!(Xr===void 0?Q===W||a(Q,W,t,o,i):Xr)){E=!1;break}M||(M=g=="constructor")}if(E&&!M){var _e=e.constructor,Ae=r.constructor;_e!=Ae&&"constructor"in e&&"constructor"in r&&!(typeof _e=="function"&&_e instanceof _e&&typeof Ae=="function"&&Ae instanceof Ae)&&(E=!1)}return i.delete(e),i.delete(r),E}var ou,au,iu,za,qa=n(()=>{"use strict";ca();ou=1,au=Object.prototype,iu=au.hasOwnProperty;za=nu});function pu(e,r,t,o,a,i){var s=h(e),f=h(r),p=s?Qa:qr(e),u=f?Qa:qr(r);p=p==Ga?er:p,u=u==Ga?er:u;var d=p==er,c=u==er,g=p==u;if(g&&he(e)){if(!he(r))return!1;s=!0,d=!1}if(g&&!d)return i||(i=new se),s||ze(e)?Ye(e,r,t,o,a,i):Ua(e,r,p,t,o,a,i);if(!(t&su)){var L=d&&Wa.call(e,"__wrapped__"),k=c&&Wa.call(r,"__wrapped__");if(L||k){var E=L?e.value():e,M=k?r.value():r;return i||(i=new se),a(E,M,t,o,i)}}return g?(i||(i=new se),za(e,r,t,o,a,i)):!1}var su,Ga,Qa,er,fu,Wa,$a,Ka=n(()=>{"use strict";Hr();Qr();Ha();qa();va();R();Br();Fr();su=1,Ga="[object Arguments]",Qa="[object Array]",er="[object Object]",fu=Object.prototype,Wa=fu.hasOwnProperty;$a=pu});function Ja(e,r,t,o,a){return e===r?!0:e==null||r==null||!A(e)&&!A(r)?e!==e&&r!==r:$a(e,r,t,o,Ja,a)}var rr,$r=n(()=>{"use strict";Ka();Z();rr=Ja});function lu(e,r,t,o){var a=t.length,i=a,s=!o;if(e==null)return!i;for(e=Object(e);a--;){var f=t[a];if(s&&f[2]?f[1]!==e[f[0]]:!(f[0]in e))return!1}for(;++a<i;){f=t[a];var p=f[0],u=e[p],d=f[1];if(s&&f[2]){if(u===void 0&&!(p in e))return!1}else{var c=new se;if(o)var g=o(u,d,p,e,r,c);if(!(g===void 0?rr(d,u,uu|mu,o,c):g))return!1}}return!0}var uu,mu,Va,Za=n(()=>{"use strict";Hr();$r();uu=1,mu=2;Va=lu});function du(e){return e===e&&!Y(e)}var tr,Kr=n(()=>{"use strict";Ie();tr=du});function cu(e){for(var r=re(e),t=r.length;t--;){var o=r[t],a=e[o];r[t]=[o,a,tr(a)]}return r}var Xa,Ya=n(()=>{"use strict";Kr();qe();Xa=cu});function gu(e,r){return function(t){return t==null?!1:t[e]===r&&(r!==void 0||e in Object(t))}}var or,Jr=n(()=>{"use strict";or=gu});function xu(e){var r=Xa(e);return r.length==1&&r[0][2]?or(r[0][0],r[0][1]):function(t){return t===e||Va(t,e,r)}}var ei,ri=n(()=>{"use strict";Za();Ya();Jr();ei=xu});function yu(e,r){return e!=null&&r in Object(e)}var ti,oi=n(()=>{"use strict";ti=yu});function hu(e,r,t){r=$e(r,e);for(var o=-1,a=r.length,i=!1;++o<a;){var s=q(r[o]);if(!(i=e!=null&&t(e,s)))break;e=e[s]}return i||++o!=a?i:(a=e==null?0:e.length,!!a&&ee(a)&&Me(s,a)&&(h(e)||He(e)))}var ai,ii=n(()=>{"use strict";Nr();Rr();R();_r();Ne();Se();ai=hu});function bu(e,r){return e!=null&&ai(e,r,ti)}var ni,si=n(()=>{"use strict";oi();ii();ni=bu});function ku(e,r){return te(e)&&tr(r)?or(q(e),r):function(t){var o=Qo(t,e);return o===void 0&&o===r?ni(t,e):rr(r,o,Cu|wu)}}var Cu,wu,fi,pi=n(()=>{"use strict";$r();Wo();si();Ge();Kr();Jr();Se();Cu=1,wu=2;fi=ku});function vu(e){return function(r){return r?.[e]}}var ui,mi=n(()=>{"use strict";ui=vu});function Su(e){return function(r){return Ke(r,e)}}var li,di=n(()=>{"use strict";Ur();li=Su});function Eu(e){return te(e)?ui(q(e)):li(e)}var ci,gi=n(()=>{"use strict";mi();di();Ge();Se();ci=Eu});function Ou(e){return typeof e=="function"?e:e==null?bt:typeof e=="object"?h(e)?fi(e[0],e[1]):ei(e):ci(e)}var xi,yi=n(()=>{"use strict";ri();pi();Ct();R();gi();xi=Ou});function _u(e,r,t,o){for(var a=-1,i=e==null?0:e.length;++a<i;){var s=e[a];r(o,s,t(s),e)}return o}var hi,bi=n(()=>{"use strict";hi=_u});function Au(e){return function(r,t,o){for(var a=-1,i=Object(r),s=o(r),f=s.length;f--;){var p=s[e?f:++a];if(t(i[p],p,i)===!1)break}return r}}var Ci,wi=n(()=>{"use strict";Ci=Au});var Pu,ki,vi=n(()=>{"use strict";wi();Pu=Ci(),ki=Pu});function Tu(e,r){return e&&ki(e,r,re)}var Si,Ei=n(()=>{"use strict";vi();qe();Si=Tu});function Ru(e,r){return function(t,o){if(t==null)return t;if(!Ue(t))return e(t,o);for(var a=t.length,i=r?a:-1,s=Object(t);(r?i--:++i<a)&&o(s[i],i,s)!==!1;);return t}}var Oi,_i=n(()=>{"use strict";Pr();Oi=Ru});var Bu,Ai,Pi=n(()=>{"use strict";Ei();_i();Bu=Oi(Si),Ai=Bu});function Iu(e,r,t,o){return Ai(e,function(a,i,s){r(o,a,t(a),s)}),o}var Ti,Ri=n(()=>{"use strict";Pi();Ti=Iu});function Lu(e,r){return function(t,o){var a=h(t)?hi:Ti,i=r?r():{};return a(t,e,xi(o,2),i)}}var Bi,Ii=n(()=>{"use strict";bi();Ri();yi();R();Bi=Lu});var Fu,Du,Mu,Ee,Li=n(()=>{"use strict";Bt();Ii();Fu=Object.prototype,Du=Fu.hasOwnProperty,Mu=Bi(function(e,r,t){Du.call(e,t)?e[t].push(r):Rt(e,t,[r])}),Ee=Mu});var fe=n(()=>{"use strict";Li();jr();});function Ju(e,r){if(e instanceof G)throw y("Command execution failed",e,{command:e.command,originalError:e.originalError}),e;if(e instanceof Error){let o=new G(e.message,r,e);throw y("Failed to execute command",e,{command:r,stack:e.stack}),o}let t=new G("Unknown error occurred during command execution",r);throw y("Failed to execute command",null,{error:e,command:r}),t}async function $i(e,r={}){if(!e||typeof e!="string")throw new G("Command must be a non-empty string",e);let t={encoding:"utf8",maxBuffer:5*1024*1024,timeout:3e4};try{let{stdout:o,stderr:a}=await Ku(e,{...t,...r}),i=o.trim();if(!i)throw a?new G(`Command failed with stderr: ${a}`,e):new G("Command returned empty result",e);return i}catch(o){Ju(o,e)}}var Qi,Wi,Ku,G,Ki=n(()=>{"use strict";Qi=require("child_process"),Wi=require("util");v();Ku=(0,Wi.promisify)(Qi.exec),G=class extends Error{constructor(t,o,a){super(t);this.command=o;this.originalError=a;this.name="CommandExecutionError"}}});var Ji={};wn(Ji,{getChromePassword:()=>Zu});var Vu,Zu,Vi=n(()=>{"use strict";fe();Ki();Vu=async()=>$i('security find-generic-password -w -s "Chrome Safe Storage"'),Zu=B(Vu)});function vn(e){let r=e.split("."),t=[];t.push({name:"%",domain:e});for(let o=1;o<r.length-1;o++){let a=r.slice(o).join(".");t.push({name:"%",domain:a})}return t}function wr(e){if(!e.includes("://"))try{return wr(`https://${e}`)}catch{return[{name:"%",domain:e}]}try{let r=new URL(e);return vn(r.hostname)}catch{return[{name:"%",domain:e}]}}var Yr=J(require("minimist"),1);function et(e){let r=(0,Yr.default)(e,{string:["browser","profile","url","domain","name","output"],boolean:["help","version","verbose","dump","dump-grouped","render","render-grouped"],alias:{b:"browser",p:"profile",u:"url",d:"domain",n:"name",h:"help",v:"version",D:"dump-grouped",r:"render",R:"render-grouped"}}),{_:t,...o}=r;return{values:o,positionals:t}}O();v();O();var ge=class{canHandle(r){return!0}handle(r){let t=new Set(r.map(o=>o.value));for(let o of t)m.log(o)}};O();var Te=class{canHandle(r){return r.dump===!0||r.d===!0}handle(r){m.log(r)}};fe();O();var ar=class{canHandle(r){return r["dump-grouped"]===!0||r.D===!0}handle(r){let t=Ee(r,o=>o.meta?.file??"unknown");m.log(JSON.stringify(t,null,2))}};fe();function ir(e,r={}){let{format:t="merged",showFilePaths:o=!0,separator:a="; "}=r;if(e.length===0)return t==="merged"?"":[];if(t==="merged")return e.map(s=>s.value).join(a);let i=Ee(e,s=>s.meta?.file??"unknown");return Object.entries(i).map(([s,f])=>{let p=f.map(u=>u.value).join(a);return o?`${s}: ${p}`:p})}O();var nr=class{canHandle(r){return r["render-grouped"]===!0||r.R===!0}handle(r){m.log(ir(r,{format:"grouped"}))}};O();var sr=class{canHandle(r){return r.output==="json"}handle(r){m.log(JSON.stringify(r,null,2))}};O();var fr=class{canHandle(r){return r.render===!0||r["render-merged"]===!0||r.r===!0}handle(r){m.log(ir(r,{format:"merged"}))}};var pr=class{constructor(){this.handlers=[new Te,new ar,new fr,new nr,new sr,new ge]}getHandler(r){return this.handlers.find(t=>t.canHandle(r))??new ge}};var Vr=require("date-fns");function Fi(e){let r=new Date;return e.filter(t=>t.expiry==="Infinity"?!0:t.expiry instanceof Date?(0,Vr.isAfter)(t.expiry,r):typeof t.expiry=="number"?(0,Vr.isAfter)(new Date(t.expiry*1e3),r):!0)}var ur=class{constructor(r){this.strategy=r}async queryCookies(r,t){return this.strategy.queryCookies(r.name,r.domain)}};v();var Ni=require("fs"),lr=require("path"),Ui=J(require("fast-glob"),1);v();var Di=require("os"),Mi=require("path"),pe=(()=>{let e=(0,Di.homedir)();if(!e)throw new Error("Unable to determine user home directory");return(0,Mi.join)(e,"Library","Application Support","Google","Chrome")})();var ji=J(require("better-sqlite3"),1);v();function ju(e){try{return new ji.default(e,{readonly:!0,fileMustExist:!0})}catch(r){throw y("Database open failed",r,{file:e}),r}}function Nu(e){try{return e.close(),Promise.resolve()}catch(r){return y("Database close failed",r),Promise.reject(r instanceof Error?r:new Error("Failed to close database: Unknown error"))}}async function mr({file:e,sql:r,params:t,rowFilter:o,rowTransform:a}){let i;try{i=ju(e);let f=i.prepare(r).all(t),p=o?f.filter(o):f;return a?p.map(a):p}catch(s){throw y("Database query failed",s,{file:e,sql:r}),s}finally{i&&await Nu(i)}}function Uu(e){if(typeof e!="string")return!1;let r=e.trim();return r.length===0?!1:(0,Ni.existsSync)(r)}async function Hu(){let e=[(0,lr.join)(pe,"Default/Cookies"),(0,lr.join)(pe,"Profile */Cookies"),(0,lr.join)(pe,"Profile Default/Cookies")],r=[];for(let t of e){let o=await(0,Ui.default)(t);r.push(...o)}return P("ChromeCookies","Found cookie files",{count:r.length,files:r}),r}function zu(e,r){let t=e==="%",o=t?"SELECT name, encrypted_value, host_key, expires_utc FROM cookies WHERE host_key LIKE ?":"SELECT name, encrypted_value, host_key, expires_utc FROM cookies WHERE name = ? AND host_key LIKE ?",a=t?[`%${r}%`]:[e,`%${r}%`];return{sql:o,params:a}}async function qu(e,r,t){try{let{sql:o,params:a}=zu(r,t);P("ChromeCookies","Executing query",{sql:o,params:a});let i=await mr({file:e,sql:o,params:a,rowTransform:s=>({name:s.name,domain:s.host_key,value:s.encrypted_value,expiry:s.expires_utc})});return it("QueryCookies",!0,{file:e,count:i.length}),i}catch(o){return y("Failed to read cookie file",o,{file:e}),[]}}async function Hi({name:e,domain:r,file:t}){let o=typeof t=="string"&&t.length>0?[t]:await Hu();if(o.length===0)return P("ChromeCookies","No cookie files found"),[];let a=[];for(let i of o){if(!Uu(i)){P("ChromeCookies","Cookie file missing or invalid",{file:i});continue}let s=await qu(i,e,r);a.push(...s)}return P("ChromeCookies","Query complete",{totalCookies:a.length}),a}var zi=J(require("fast-glob"),1);O();var Gu=m.withTag("listChromeProfiles");function qi(){let e=zi.default.sync("./**/Cookies",{cwd:pe,absolute:!0});return Gu.debug("Found cookie files:",e),e}var dr=require("crypto");fe();var Qu=B(e=>e.length>=3&&e[0]===118&&e[1]===49&&e[2]===48?e.slice(3):e,e=>e.toString("hex")),Wu=B(e=>{let r=e[e.length-1];return r&&r<=16?e.slice(0,-r):e},e=>e.toString("hex"));function $u(e){let r=[/.*?0t(.+)$/,/.*?1e`(.+)$/,/.*?[`'](.+)$/,/[^\x20-\x7E]*([\x20-\x7E].+)$/];for(let t of r){let a=e.match(t)?.[1]??"";if(a.length>0)return a}return e}async function Gi(e,r){if(typeof r!="string")throw new Error("password must be a string");if(!Buffer.isBuffer(e))throw new Error("encryptedData must be a Buffer");return new Promise((t,o)=>{(0,dr.pbkdf2)(r,"saltysalt",1003,16,"sha1",(a,i)=>{try{if(a){o(new Error("Failed to derive key: "+a.message));return}let s=Qu(e);if(s.length%16!==0){o(new Error("Encrypted data length is not a multiple of 16"));return}let f=Buffer.alloc(16," "),p=(0,dr.createDecipheriv)("aes-128-cbc",i,f);p.setAutoPadding(!1);let u=p.update(s);try{p.final()}catch(c){o(new Error("Failed to finalize decryption: "+c.message));return}u=Wu(u);let d=u.toString("utf8");t($u(d))}catch(s){o(new Error("Decryption failed: "+s.message))}})})}fe();v();var Zi=B(async()=>{if(process.platform!=="darwin")throw y("Chrome password retrieval failed",new Error("This only works on macOS"),{platform:process.platform}),new Error("This only works on macOS");try{let{getChromePassword:e}=await Promise.resolve().then(()=>(Vi(),Ji)),r=await e();return P("ChromePassword","Retrieved password successfully",{platform:"macOS"}),r}catch(e){throw y("Chrome password retrieval failed",e,{platform:"macOS"}),e}});function Xu(e){return typeof e!="number"||e<=0?"Infinity":new Date(e)}function Xi(e,r,t,o,a,i){return{domain:e,name:r,value:t,expiry:Xu(o),meta:{file:a,browser:"Chrome",decrypted:i}}}var ue=class{constructor(){this.logger=Pe("ChromeCookieQueryStrategy");this.browserName="Chrome"}async queryCookies(r,t){try{if(this.logger.info("Querying cookies",{name:r,domain:t}),process.platform!=="darwin")return this.logger.warn("Platform not supported",{platform:process.platform}),[];let o=qi();if(o.length===0)return this.logger.warn("No Chrome cookie files found"),[];let a=await Zi();return(await Promise.all(o.map(s=>this.processFile(s,r,t,a)))).flat()}catch(o){return o instanceof Error?y("Failed to query cookies",o,{name:r,domain:t}):y("Failed to query cookies",new Error(String(o)),{name:r,domain:t}),[]}}async processFile(r,t,o,a){try{let i=await Hi({name:t,domain:o,file:r}),s={file:r,password:a};return(await Promise.allSettled(i.map(p=>this.processCookie(p,s)))).map(p=>p.status==="fulfilled"?p.value:null).filter(p=>p!==null)}catch(i){return i instanceof Error?this.logger.error("Failed to process cookie file",{error:i,file:r}):this.logger.error("Failed to process cookie file",{error:String(i),file:r}),[]}}async processCookie(r,t){try{let o=Buffer.isBuffer(r.value)?r.value:Buffer.from(String(r.value)),a=await Gi(o,t.password);return Xi(r.domain,r.name,a,r.expiry,t.file,!0)}catch(o){return o instanceof Error?this.logger.warn("Failed to decrypt cookie",{error:o}):this.logger.warn("Failed to decrypt cookie",{error:String(o)}),Xi(r.domain,r.name,r.value.toString("utf-8"),r.expiry,t.file,!1)}}};async function Yi(e,r,t=[]){return e.length===0?t:(await Promise.all(e.map(async a=>{try{return await r(a)}catch{return t}}))).flat()}v();var Oe=class{constructor(r){this.strategies=r;this.logger=Pe("CompositeCookieQueryStrategy");this.browserName="internal"}handleStrategyError(r,t){r instanceof Error?this.logger.error("Strategy failed",{error:r,strategy:t}):this.logger.error("Strategy failed with unknown error",{error:String(r),strategy:t})}async queryCookies(r,t){try{return this.logger.info("Querying cookies from all strategies",{name:r,domain:t,strategyCount:this.strategies.length}),await Yi(this.strategies,async o=>{try{return await o.queryCookies(r,t)}catch(a){return this.handleStrategyError(a,o),[]}},[])}catch(o){return o instanceof Error?this.logger.error("Failed to query cookies",{error:o}):this.logger.error("Failed to query cookies with unknown error",{error:String(o)}),[]}}};var en=require("os"),Zr=require("path"),rn=J(require("fast-glob"),1);v();function Yu(){let e=(0,en.homedir)();if(!e)return C("FirefoxCookieQuery","Failed to get home directory"),[];let r=[(0,Zr.join)(e,"Library/Application Support/Firefox/Profiles/*/cookies.sqlite"),(0,Zr.join)(e,".mozilla/firefox/*/cookies.sqlite")],t=[];for(let o of r){let a=rn.default.sync(o);t.push(...a)}return P("FirefoxCookieQuery","Found Firefox cookie files",{files:t}),t}var me=class{constructor(){this.browserName="Firefox"}async queryCookies(r,t){let o=Yu(),a=[];for(let i of o)try{let s=await mr({file:i,sql:"SELECT name, value, host as domain, expiry FROM moz_cookies WHERE name = ? AND host LIKE ?",params:[r,`%${t}%`],rowTransform:f=>({name:f.name,value:f.value,domain:f.domain,expiry:f.expiry>0?new Date(f.expiry*1e3):"Infinity",meta:{file:i,browser:"Firefox",decrypted:!1}})});a.push(...s)}catch(s){s instanceof Error?C("FirefoxCookieQuery",`Error reading Firefox cookie file ${i}`,{error:s.message}):C("FirefoxCookieQuery",`Error reading Firefox cookie file ${i}`)}return a}};var ln=require("os"),dn=require("path");v();var sn=require("buffer"),fn=require("fs"),pn=require("os"),un=require("path");v();v();var xr=require("buffer");var tn=J(require("destr"),1),l=require("zod"),cr=l.z.string().trim().min(1,"Domain cannot be empty").refine(e=>/^\.?[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e),"Invalid domain format"),gr=l.z.string().trim().min(1,"Cookie name cannot be empty").refine(e=>e==="%"||/^[!#$%&'()*+\-.:0-9A-Z \^_`a-z|~]+$/.test(e),"Invalid cookie name format - must contain only valid characters (letters, numbers, and certain symbols) or be '%' for wildcard"),on=l.z.string().trim().min(1,"Path cannot be empty").refine(e=>e.startsWith("/"),"Path must start with /").refine(e=>/^\/[!#$%&'()*+,\-./:=@\w~]*$/.test(e),"Invalid path format - must contain only valid URL path characters").default("/"),an=l.z.string().trim().transform(e=>(0,tn.default)(e)).pipe(l.z.any()),nn=l.z.object({name:gr,value:an,domain:cr,path:on,expiry:l.z.number().int(),creation:l.z.number().int(),flags:l.z.number().optional(),version:l.z.number().int().optional(),port:l.z.number().int().optional(),comment:l.z.string().optional(),commentURL:l.z.string().optional()}),Rh=l.z.object({name:gr,domain:cr}).strict(),em=l.z.object({file:l.z.string().trim().min(1,"File path cannot be empty").optional(),browser:l.z.string().trim().optional(),decrypted:l.z.boolean().optional(),secure:l.z.boolean().optional(),httpOnly:l.z.boolean().optional(),path:on.optional()}).catchall(l.z.unknown()).strict(),rm=l.z.object({domain:cr,name:gr,value:an,expiry:l.z.union([l.z.literal("Infinity"),l.z.date(),l.z.number().int().positive("Expiry must be a positive number")]).optional(),meta:em.optional()}).strict(),Bh=l.z.object({expiry:l.z.number().int().optional(),domain:cr,name:gr,value:l.z.union([l.z.string(),l.z.instanceof(Buffer)])}).strict(),Ih=l.z.object({format:l.z.enum(["merged","grouped"]).optional(),separator:l.z.string().optional(),showFilePaths:l.z.boolean().optional()}).strict(),tm=l.z.enum(["Chrome","Firefox","Safari","internal","unknown"]),Lh=l.z.object({browserName:tm,queryCookies:l.z.function().args(l.z.string(),l.z.string()).returns(l.z.promise(l.z.array(rm)))}).strict();var yr=class{constructor(r){this.version=0;this.url="";this.name="";this.path="";this.value="";this.flags={isSecure:!1,isHTTPOnly:!1,unknown1:!1,unknown2:!1};this.expiration=0;this.creation=0;let t={offset:0,buffer:r};this.decode(t)}decodeUrlValue(r){let t=r,o;do{o=t;try{t=decodeURIComponent(t)}catch{return o}}while(t!==o&&t.includes("%"));return t}decodeJwtPayload(r){let t=r.split(".");if(t.length!==3)return null;try{let o=xr.Buffer.from(t[1],"base64").toString("utf8"),a=JSON.parse(o);return JSON.stringify(a)}catch{return null}}parseJsonValue(r){try{let t=JSON.parse(r);return JSON.stringify(t)}catch{return null}}processValue(r){let t=this.decodeUrlValue(r);if(t.match(/^ey[A-Za-z0-9_-]+\.ey[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/)){let o=this.decodeJwtPayload(t);if(typeof o=="string"&&o.length>0)return o}if(t.startsWith("{")||t.startsWith("[")){let o=this.parseJsonValue(t);if(typeof o=="string"&&o.length>0)return o}return t}toCookieRow(){try{let r=this.convertFlags(),t=this.url.replace(/^https?:\/\//,"").replace(/\/.*$/,"")||"uk";return nn.parse({name:this.name.replace(/^: /,""),value:this.processValue(this.value)||"",domain:t,path:this.path||"/",expiry:this.expiration,creation:this.creation,flags:r,version:this.version,port:this.port,comment:this.comment,commentURL:this.commentURL})}catch{return null}}readNullTerminatedString(r,t){let o=t;for(;o<r.buffer.length&&r.buffer[o]!==0;)o++;return r.buffer.toString("utf8",t,o)||""}readHeader(r){let t=r.buffer.readUInt32LE(r.offset);r.offset+=4,r.offset+=4;let o=r.buffer.readUInt32LE(r.offset);r.offset+=4,this.flags={isSecure:(o&1)!==0,isHTTPOnly:(o&4)!==0,unknown1:(o&8)!==0,unknown2:(o&16)!==0};let a=r.buffer.readUInt32LE(r.offset);r.offset+=4;let i={urlOffset:r.buffer.readUInt32LE(r.offset),nameOffset:r.buffer.readUInt32LE(r.offset+4),pathOffset:r.buffer.readUInt32LE(r.offset+8),valueOffset:r.buffer.readUInt32LE(r.offset+12),commentOffset:r.buffer.readUInt32LE(r.offset+16),commentURLOffset:r.buffer.readUInt32LE(r.offset+20)};return{size:t,hasPort:a,offsets:i}}readTimestamps(r){let t=xr.Buffer.alloc(8);for(let s=0;s<8;s++)t[s]=r.buffer[r.offset+s];let o=t.readDoubleLE(0);r.offset+=8;let a=xr.Buffer.alloc(8);for(let s=0;s<8;s++)a[s]=r.buffer[r.offset+s];let i=a.readDoubleLE(0);r.offset+=8,this.expiration=o,this.creation=i}readStrings(r,t,o){let i=[{field:"url",offset:o.urlOffset},{field:"name",offset:o.nameOffset},{field:"path",offset:o.pathOffset},{field:"value",offset:o.valueOffset},{field:"comment",offset:o.commentOffset}].filter(s=>s.offset>0).sort((s,f)=>s.offset-f.offset);for(let s=0;s<i.length;s++){let{field:f,offset:p}=i[s],d=(s<i.length-1?i[s+1].offset:t)-p,c=0+p;for(;c<0+p+d&&r.buffer[c]!==0;)c++;let g=r.buffer.toString("utf8",0+p,c);switch(f){case"url":this.url=g;break;case"name":this.name=g;break;case"path":this.path=g;break;case"value":this.value=g;break;case"comment":this.comment=g;break}}}decode(r){let{size:t,hasPort:o,offsets:a}=this.readHeader(r),i=r.offset;r.offset=i+24,this.readTimestamps(r),o>0&&(this.port=r.buffer.readUInt16LE(r.offset),r.offset+=2),r.offset=i,this.readStrings(r,t,a)}convertFlags(){return(this.flags.isSecure?1:0)|(this.flags.isHTTPOnly?4:0)|(this.flags.unknown1?8:0)|(this.flags.unknown2?16:0)}};var le=class le{constructor(r){this.cookies=[];let t={offset:0,buffer:r};this.decode(t)}toCookieRows(){let r=[];for(let t of this.cookies)try{let o=t.toCookieRow();o!==null&&r.push(o)}catch(o){let a=o instanceof Error?o.message:String(o);C("BinaryCookies","Error converting cookie",{error:a})}return r}decode(r){let t=r.buffer.readUInt32BE(r.offset);if(r.offset+=4,t!==le.HEADER)throw new Error("Invalid page header");let o=r.buffer.readUInt32LE(r.offset);r.offset+=4;let a=r.offset-8,i=[];for(let f=0;f<o;f++){let p=r.buffer.readUInt32LE(r.offset);i.push(p),r.offset+=4}let s=r.buffer.readUInt32BE(r.offset);if(r.offset+=4,s!==le.FOOTER)throw new Error("Invalid page footer");for(let f=0;f<o;f++)try{let p=i[f],u=a+p,d=r.buffer.readUInt32LE(u);if(d<48){C("BinaryCookies",`Invalid cookie size ${d} at index ${f}`);continue}if(u+d>r.buffer.length){C("BinaryCookies",`Cookie size ${d} at index ${f} would exceed buffer length`);continue}let c=r.buffer.subarray(u,u+d),g=new yr(c);this.cookies.push(g)}catch(p){let u=p instanceof Error?p.message:String(p);C("BinaryCookies",`Error decoding cookie at index ${f}`,{error:u})}}};le.HEADER=256,le.FOOTER=0;var hr=le;var I=class I{constructor(r){let t={offset:0,buffer:r};this.pages=[],this.metadata={},this.decode(t)}static fromFile(r){let t=(0,fn.readFileSync)(r);return new I(t)}static fromDefaultPath(){return I.fromFile(I.DEFAULT_COOKIE_PATH)}toCookieRows(){let r=[];for(let t of this.pages)try{let o=t.toCookieRows();Array.isArray(o)&&r.push(...o)}catch(o){let a=o instanceof Error?o.message:String(o);C("BinaryCookies","Error converting page cookies",{error:a})}return r}decode(r){try{let t=r.buffer.subarray(r.offset,r.offset+4);if(r.offset+=4,!t.equals(I.MAGIC))throw new Error("Missing magic value");let o=r.buffer.readUInt32BE(r.offset);r.offset+=4;let a=[];for(let u=0;u<o;u++)a.push(r.buffer.readUInt32BE(r.offset)),r.offset+=4;let i=r.offset;for(let u of a)try{let d=r.buffer.subarray(i,i+u),c=new hr(d);this.pages.push(c),i+=u}catch(d){let c=d instanceof Error?d.message:String(d);C("BinaryCookies","Error decoding page",{error:c}),i+=u}r.offset=i;let s=r.buffer.readUInt32BE(r.offset);r.offset+=4;let f=r.buffer.readBigUInt64BE(r.offset);r.offset+=8,f!==I.FOOTER&&C("BinaryCookies","Invalid cookie file format: wrong footer");let p=r.buffer.subarray(r.offset);this.metadata={}}catch(t){let o=t instanceof Error?t.message:String(t);throw C("BinaryCookies","Error decoding binary cookies file",{error:o}),t}}};I.MAGIC=sn.Buffer.from("cook","utf8"),I.FOOTER=BigInt("0x071720050000004b"),I.DEFAULT_COOKIE_PATH=(0,un.join)((0,pn.homedir)(),"Library/Containers/com.apple.Safari/Data/Library/Cookies/Cookies.binarycookies");var br=I;function mn(e){return br.fromFile(e).toCookieRows()}var de=class{constructor(){this.browserName="Safari"}getCookieDbPath(r){return(0,dn.join)(r,"Library","Containers","com.apple.Safari","Data","Library","Cookies","Cookies.binarycookies")}decodeCookies(r,t,o){try{return mn(r).filter(i=>(t==="%"||i.name===t)&&(o==="%"||i.domain.includes(o))).map(i=>({domain:i.domain,name:i.name,value:Buffer.isBuffer(i.value)?i.value.toString():String(i.value),expiry:typeof i.expiry=="number"&&i.expiry>0?new Date(i.expiry*1e3):"Infinity",meta:{file:r,browser:"Safari",decrypted:!1}}))}catch(a){return a instanceof Error?y("SafariCookieQueryStrategy",`Error decoding ${r}`,{error:a,name:t,domain:o}):y("SafariCookieQueryStrategy",`Error decoding ${r}`,{error:"Unknown error",name:t,domain:o}),[]}}async queryCookies(r,t){let o=(0,ln.homedir)();if(typeof o!="string"||o.length===0)return y("SafariCookieQueryStrategy","Failed to get home directory"),Promise.resolve([]);let a=this.getCookieDbPath(o);return Promise.resolve(this.decodeCookies(a,r||"%",t||"%"))}};var cn={strategies:new Map([["safari",de],["firefox",me],["chrome",ue]]),createStrategy(e){if(typeof e!="string")return new Oe([new de,new me,new ue]);let r=this.strategies.get(e.toLowerCase());return r!==void 0?new r:new Oe([new de,new me,new ue])}};async function om(e,r,t){let o=[];for(let a of r){let i=await e.queryCookies(a,t);if(o.push(...i),typeof t=="number"&&t>0&&o.length>=t){o=o.slice(0,t);break}}return o}async function gn(e,r,t,o=!1){try{let a=typeof e.browser=="string"?e.browser:void 0,i=cn.createStrategy(a),s=new ur(i),f=Array.isArray(r)?r:[r],p=await om(s,f,t);if(o===!0&&(p=Fi(p)),p.length===0){m.error("No results");return}new pr().getHandler(e).handle(p)}catch(a){a instanceof Error?m.error(a.message):m.error("An unknown error occurred")}}function am(){m.log("Usage: get-cookie [name] [domain] [options]"),m.log("Options:"),m.log(" -h, --help: Show this help message"),m.log(" -v, --verbose: Enable verbose output"),m.log(" -d, --dump: Dump all results"),m.log(" -D, --dump-grouped: Dump all results, grouped by profile"),m.log(" -r, --render: Render all results"),m.log(" -u, --url: URL to extract cookie specs from"),m.log(" -n, --name: Cookie name pattern"),m.log(" -d, --domain: Cookie domain pattern"),m.log(" --output: Output format (e.g., json)")}function im(e,r){return{name:e||"%",domain:r||"%"}}function nm(e,r){let t=e.url;if(typeof t=="string"){let i=wr(t);return Array.isArray(i)?i:(m.error("Invalid cookie specs from URL"),[])}let o=e.name||r[0]||"%",a=e.domain||r[1]||"%";return[im(o,a)]}async function sm(e,r){let t=nm(e,r);e.verbose===!0&&m.log("cookieSpecs",t);try{await gn(e,t,void 0,e.removeExpired===!0)}catch(o){o instanceof Error?m.error("Error querying cookies:",o.message):m.error("An unknown error occurred while querying cookies")}}async function fm(){let e=process.argv.slice(2),{values:r,positionals:t}=et(e);if(r.help===!0){am();return}await sm(r,t)}fm().catch(e=>{e instanceof Error?m.error("Fatal error:",e.message):m.error("An unknown fatal error occurred"),process.exit(1)});
|
|
2
|
+
"use strict";var Sr=Object.create;var fe=Object.defineProperty;var vr=Object.getOwnPropertyDescriptor;var Er=Object.getOwnPropertyNames;var Or=Object.getPrototypeOf,Rr=Object.prototype.hasOwnProperty;var _r=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Er(e))!Rr.call(r,a)&&a!==t&&fe(r,a,{get:()=>e[a],enumerable:!(o=vr(e,a))||o.enumerable});return r};var E=(r,e,t)=>(t=r!=null?Sr(Or(r)):{},_r(e||!r||!r.__esModule?fe(t,"default",{value:r,enumerable:!0}):t,r));function Br(r){let e=r.split("."),t=[];t.push({name:"%",domain:r});for(let o=1;o<e.length-1;o++){let a=e.slice(o).join(".");t.push({name:"%",domain:a})}return t}function ee(r){if(!r.includes("://"))try{return ee(`https://${r}`)}catch{return[{name:"%",domain:r}]}try{let e=new URL(r);return Br(e.hostname)}catch{return[{name:"%",domain:r}]}}var pe=E(require("minimist"),1);function le(r){let e=(0,pe.default)(r,{string:["browser","profile","url","domain","name","output","store"],boolean:["help","version","verbose","dump","dump-grouped","render","render-grouped"],alias:{b:"browser",p:"profile",u:"url",d:"domain",n:"name",h:"help",v:"version",D:"dump-grouped",r:"render",R:"render-grouped"}}),{_:t,...o}=e;return{values:o,positionals:t}}var de=require("consola");var ue=require("os"),me=require("dotenv"),A=require("zod");(0,me.config)();var Pr=A.z.object({LOG_LEVEL:A.z.enum(["debug","info","warn","error"]).default("info"),HOME:A.z.string().optional().transform(r=>r??process.env.USERPROFILE??"").pipe(A.z.string().min(1))}),re=Pr.parse({LOG_LEVEL:process.env.LOG_LEVEL,HOME:(0,ue.homedir)()});var Ir=(0,de.createConsola)({fancy:!0,formatOptions:{showLogLevel:!1,colors:!0,date:!1,compact:!0,columns:typeof process.stdout.columns=="number"?process.stdout.columns:80},level:re.LOG_LEVEL==="debug"?5:2}),ko=re.LOG_LEVEL==="debug",Lr=Ir,l=Lr;function ce(r,e,t){e?l.success(`${r} succeeded`,t):l.error(`${r} failed`,t)}function c(r,e,t){let o=e instanceof Error?e.message:String(e);l.error(r,{...t,error:o})}function x(r,e,t){l.warn(`[${r}] ${e}`,t)}function d(r){return l.withTag(r)}var U=class{constructor(e){this.strategy=e}async queryCookies(e,t){return this.strategy.queryCookies(e.name,e.domain,t?.store)}};var ye=require("fs"),q=require("path"),Ce=E(require("fast-glob"),1);var ge=require("os"),xe=require("path"),O=(()=>{let r=(0,ge.homedir)();if(!r)throw new Error("Unable to determine user home directory");return(0,xe.join)(r,"Library","Application Support","Google","Chrome")})();var he=E(require("better-sqlite3"),1);function Tr(r){try{return new he.default(r,{readonly:!0,fileMustExist:!0})}catch(e){throw c("Database open failed",e,{file:r}),e}}function Fr(r){try{return r.close(),Promise.resolve()}catch(e){return c("Database close failed",e),Promise.reject(e instanceof Error?e:new Error("Failed to close database: Unknown error"))}}async function Q({file:r,sql:e,params:t,rowFilter:o,rowTransform:a}){let s;try{s=Tr(r);let p=s.prepare(e).all(t),f=o?p.filter(o):p;return a?f.map(a):f}catch(i){throw c("Database query failed",i,{file:r,sql:e}),i}finally{s&&await Fr(s)}}var j=d("getEncryptedChromeCookie");function Dr(r){if(typeof r!="string")return!1;let e=r.trim();return e.length===0?!1:(0,ye.existsSync)(e)}async function Ar(){let r=[(0,q.join)(O,"Default/Cookies"),(0,q.join)(O,"Profile */Cookies"),(0,q.join)(O,"Profile Default/Cookies")],e=[];for(let t of r){let o=await(0,Ce.default)(t);e.push(...o)}return j.debug("ChromeCookies","Found cookie files",{count:e.length,files:e}),e}function jr(r,e){let t=r==="%",o=t?"SELECT name, encrypted_value, host_key, expires_utc FROM cookies WHERE host_key LIKE ?":"SELECT name, encrypted_value, host_key, expires_utc FROM cookies WHERE name = ? AND host_key LIKE ?",a=t?[`%${e}%`]:[r,`%${e}%`];return{sql:o,params:a}}async function zr(r,e,t){try{let{sql:o,params:a}=jr(e,t);j.debug("ChromeCookies","Executing query",{sql:o,params:a});let s=await Q({file:r,sql:o,params:a,rowTransform:i=>({name:i.name,domain:i.host_key,value:i.encrypted_value,expiry:i.expires_utc})});return ce("QueryCookies",!0,{file:r,count:s.length}),s}catch(o){return c("Failed to read cookie file",o,{file:r}),[]}}async function be({name:r,domain:e,file:t}){let o=typeof t=="string"&&t.length>0?[t]:await Ar();if(o.length===0)return j.debug("ChromeCookies","No cookie files found"),[];let a=[];for(let s of o){if(!Dr(s)){j.debug("ChromeCookies","Cookie file missing or invalid",{file:s});continue}let i=await zr(s,r,e);a.push(...i)}return j.debug("ChromeCookies","Query complete",{totalCookies:a.length}),a}var ke=E(require("fast-glob"),1);var Nr=d("listChromeProfiles");function we(){let r=ke.default.sync("./**/Cookies",{cwd:O,absolute:!0});return Nr.debug("Found cookie files:",r),r}var V=require("crypto");var Ur=typeof global=="object"&&global&&global.Object===Object&&global,Se=Ur;var Qr=typeof self=="object"&&self&&self.Object===Object&&self,qr=Se||Qr||Function("return this")(),R=qr;var $r=R.Symbol,_=$r;var ve=Object.prototype,Mr=ve.hasOwnProperty,Wr=ve.toString,z=_?_.toStringTag:void 0;function Hr(r){var e=Mr.call(r,z),t=r[z];try{r[z]=void 0;var o=!0}catch{}var a=Wr.call(r);return o&&(e?r[z]=t:delete r[z]),a}var Ee=Hr;var Vr=Object.prototype,Gr=Vr.toString;function Jr(r){return Gr.call(r)}var Oe=Jr;var Kr="[object Null]",Zr="[object Undefined]",Re=_?_.toStringTag:void 0;function Xr(r){return r==null?r===void 0?Zr:Kr:Re&&Re in Object(r)?Ee(r):Oe(r)}var _e=Xr;function Yr(r){var e=typeof r;return r!=null&&(e=="object"||e=="function")}var $=Yr;var et="[object AsyncFunction]",rt="[object Function]",tt="[object GeneratorFunction]",ot="[object Proxy]";function at(r){if(!$(r))return!1;var e=_e(r);return e==rt||e==tt||e==et||e==ot}var Be=at;var st=R["__core-js_shared__"],M=st;var Pe=function(){var r=/[^.]+$/.exec(M&&M.keys&&M.keys.IE_PROTO||"");return r?"Symbol(src)_1."+r:""}();function it(r){return!!Pe&&Pe in r}var Ie=it;var nt=Function.prototype,ft=nt.toString;function pt(r){if(r!=null){try{return ft.call(r)}catch{}try{return r+""}catch{}}return""}var Le=pt;var lt=/[\\^$.*+?()[\]{}|]/g,ut=/^\[object .+?Constructor\]$/,mt=Function.prototype,dt=Object.prototype,ct=mt.toString,gt=dt.hasOwnProperty,xt=RegExp("^"+ct.call(gt).replace(lt,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ht(r){if(!$(r)||Ie(r))return!1;var e=Be(r)?xt:ut;return e.test(Le(r))}var Te=ht;function yt(r,e){return r?.[e]}var Fe=yt;function Ct(r,e){var t=Fe(r,e);return Te(t)?t:void 0}var W=Ct;function bt(r,e){return r===e||r!==r&&e!==e}var De=bt;var kt=W(Object,"create"),C=kt;function wt(){this.__data__=C?C(null):{},this.size=0}var Ae=wt;function St(r){var e=this.has(r)&&delete this.__data__[r];return this.size-=e?1:0,e}var je=St;var vt="__lodash_hash_undefined__",Et=Object.prototype,Ot=Et.hasOwnProperty;function Rt(r){var e=this.__data__;if(C){var t=e[r];return t===vt?void 0:t}return Ot.call(e,r)?e[r]:void 0}var ze=Rt;var _t=Object.prototype,Bt=_t.hasOwnProperty;function Pt(r){var e=this.__data__;return C?e[r]!==void 0:Bt.call(e,r)}var Ne=Pt;var It="__lodash_hash_undefined__";function Lt(r,e){var t=this.__data__;return this.size+=this.has(r)?0:1,t[r]=C&&e===void 0?It:e,this}var Ue=Lt;function B(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var o=r[e];this.set(o[0],o[1])}}B.prototype.clear=Ae;B.prototype.delete=je;B.prototype.get=ze;B.prototype.has=Ne;B.prototype.set=Ue;var te=B;function Tt(){this.__data__=[],this.size=0}var Qe=Tt;function Ft(r,e){for(var t=r.length;t--;)if(De(r[t][0],e))return t;return-1}var k=Ft;var Dt=Array.prototype,At=Dt.splice;function jt(r){var e=this.__data__,t=k(e,r);if(t<0)return!1;var o=e.length-1;return t==o?e.pop():At.call(e,t,1),--this.size,!0}var qe=jt;function zt(r){var e=this.__data__,t=k(e,r);return t<0?void 0:e[t][1]}var $e=zt;function Nt(r){return k(this.__data__,r)>-1}var Me=Nt;function Ut(r,e){var t=this.__data__,o=k(t,r);return o<0?(++this.size,t.push([r,e])):t[o][1]=e,this}var We=Ut;function P(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var o=r[e];this.set(o[0],o[1])}}P.prototype.clear=Qe;P.prototype.delete=qe;P.prototype.get=$e;P.prototype.has=Me;P.prototype.set=We;var He=P;var Qt=W(R,"Map"),Ve=Qt;function qt(){this.size=0,this.__data__={hash:new te,map:new(Ve||He),string:new te}}var Ge=qt;function $t(r){var e=typeof r;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?r!=="__proto__":r===null}var Je=$t;function Mt(r,e){var t=r.__data__;return Je(e)?t[typeof e=="string"?"string":"hash"]:t.map}var w=Mt;function Wt(r){var e=w(this,r).delete(r);return this.size-=e?1:0,e}var Ke=Wt;function Ht(r){return w(this,r).get(r)}var Ze=Ht;function Vt(r){return w(this,r).has(r)}var Xe=Vt;function Gt(r,e){var t=w(this,r),o=t.size;return t.set(r,e),this.size+=t.size==o?0:1,this}var Ye=Gt;function I(r){var e=-1,t=r==null?0:r.length;for(this.clear();++e<t;){var o=r[e];this.set(o[0],o[1])}}I.prototype.clear=Ge;I.prototype.delete=Ke;I.prototype.get=Ze;I.prototype.has=Xe;I.prototype.set=Ye;var oe=I;var Jt="Expected a function";function ae(r,e){if(typeof r!="function"||e!=null&&typeof e!="function")throw new TypeError(Jt);var t=function(){var o=arguments,a=e?e.apply(this,o):o[0],s=t.cache;if(s.has(a))return s.get(a);var i=r.apply(this,o);return t.cache=s.set(a,i)||s,i};return t.cache=new(ae.Cache||oe),t}ae.Cache=oe;var H=ae;var Kt=H(r=>r.length>=3&&r[0]===118&&r[1]===49&&r[2]===48?r.slice(3):r,r=>r.toString("hex")),Zt=H(r=>{let e=r[r.length-1];return e&&e<=16?r.slice(0,-e):r},r=>r.toString("hex"));function Xt(r){let e=[/.*?0t(.+)$/,/.*?1e`(.+)$/,/.*?[`'](.+)$/,/[^\x20-\x7E]*([\x20-\x7E].+)$/];for(let t of e){let a=r.match(t)?.[1]??"";if(a.length>0)return a}return r}async function er(r,e){if(typeof e!="string")throw new Error("password must be a string");if(!Buffer.isBuffer(r))throw new Error("encryptedData must be a Buffer");return new Promise((t,o)=>{(0,V.pbkdf2)(e,"saltysalt",1003,16,"sha1",(a,s)=>{try{if(a){o(new Error("Failed to derive key: "+a.message));return}let i=Kt(r);if(i.length%16!==0){o(new Error("Encrypted data length is not a multiple of 16"));return}let p=Buffer.alloc(16," "),f=(0,V.createDecipheriv)("aes-128-cbc",s,p);f.setAutoPadding(!1);let u=f.update(i);try{f.final()}catch(g){o(new Error("Failed to finalize decryption: "+g.message));return}u=Zt(u);let m=u.toString("utf8");t(Xt(m))}catch(i){o(new Error("Decryption failed: "+i.message))}})})}var ie=require("os");var rr=require("child_process"),tr=require("util");var Yt=(0,tr.promisify)(rr.exec),se=class extends Error{constructor(t,o,a){super(t);this.command=o;this.originalError=a;this.name="CommandExecutionError"}};async function or(r,e){try{let t=await Yt(r,{...e,encoding:"utf8"});return{stdout:t.stdout.toString(),stderr:t.stderr.toString()}}catch(t){throw c("Command execution failed",t,{command:r}),new se(t instanceof Error?t.message:String(t),r,t instanceof Error?t:void 0)}}async function ar(){return(await or('security find-generic-password -w -s "Chrome Safe Storage"')).stdout.trim()}async function sr(){switch((0,ie.platform)()){case"darwin":return ar();default:throw new Error(`Platform ${(0,ie.platform)()} is not supported`)}}function eo(r){return typeof r!="number"||r<=0?"Infinity":new Date(r)}function ir(r,e,t,o,a,s){return{domain:r,name:e,value:t,expiry:eo(o),meta:{file:a,browser:"Chrome",decrypted:s}}}var L=class{constructor(){this.logger=d("ChromeCookieQueryStrategy");this.browserName="Chrome"}async queryCookies(e,t,o){try{if(this.logger.info("Querying cookies",{name:e,domain:t,store:o}),process.platform!=="darwin")return this.logger.warn("Platform not supported",{platform:process.platform}),[];let a=o??we(),s=Array.isArray(a)?a:[a];if(s.length===0)return this.logger.warn("No Chrome cookie files found"),[];let i=await sr();return(await Promise.all(s.map(f=>this.processFile(f,e,t,i)))).flat()}catch(a){return a instanceof Error?c("Failed to query cookies",a,{name:e,domain:t}):c("Failed to query cookies",new Error(String(a)),{name:e,domain:t}),[]}}async processFile(e,t,o,a){try{let s=await be({name:t,domain:o,file:e}),i={file:e,password:a};return(await Promise.allSettled(s.map(f=>this.processCookie(f,i)))).map(f=>f.status==="fulfilled"?f.value:null).filter(f=>f!==null)}catch(s){return s instanceof Error?this.logger.error("Failed to process cookie file",{error:s,file:e}):this.logger.error("Failed to process cookie file",{error:String(s),file:e}),[]}}async processCookie(e,t){try{let o=Buffer.isBuffer(e.value)?e.value:Buffer.from(String(e.value)),a=await er(o,t.password);return ir(e.domain,e.name,a,e.expiry,t.file,!0)}catch(o){return o instanceof Error?this.logger.warn("Failed to decrypt cookie",{error:o}):this.logger.warn("Failed to decrypt cookie",{error:String(o)}),ir(e.domain,e.name,e.value.toString("utf-8"),e.expiry,t.file,!1)}}};async function nr(r,e,t=[]){return r.length===0?t:(await Promise.all(r.map(async a=>{try{return await e(a)}catch{return t}}))).flat()}var N=class{constructor(e){this.strategies=e;this.logger=d("CompositeCookieQueryStrategy");this.browserName="internal"}handleStrategyError(e,t){e instanceof Error?this.logger.error("Strategy failed",{error:e,strategy:t}):this.logger.error("Strategy failed with unknown error",{error:String(e),strategy:t})}async queryCookies(e,t,o){try{return this.logger.info("Querying cookies from all strategies",{name:e,domain:t,store:o,strategyCount:this.strategies.length}),await nr(this.strategies,async a=>{try{return await a.queryCookies(e,t,o)}catch(s){return this.handleStrategyError(s,a),[]}},[])}catch(a){return a instanceof Error?this.logger.error("Failed to query cookies",{error:a}):this.logger.error("Failed to query cookies with unknown error",{error:String(a)}),[]}}};var fr=require("os"),ne=require("path"),pr=E(require("fast-glob"),1);var ro=d("FirefoxCookieQueryStrategy");function to(){let r=(0,fr.homedir)();if(!r)return x("FirefoxCookieQuery","Failed to get home directory"),[];let e=[(0,ne.join)(r,"Library/Application Support/Firefox/Profiles/*/cookies.sqlite"),(0,ne.join)(r,".mozilla/firefox/*/cookies.sqlite")],t=[];for(let o of e){let a=pr.default.sync(o);t.push(...a)}return ro.debug("Found Firefox cookie files",{files:t}),t}var T=class{constructor(){this.browserName="Firefox"}async queryCookies(e,t,o){let a=o??to(),s=Array.isArray(a)?a:[a],i=[];for(let p of s)try{let f=await Q({file:p,sql:"SELECT name, value, host as domain, expiry FROM moz_cookies WHERE name = ? AND host LIKE ?",params:[e,`%${t}%`],rowTransform:u=>({name:u.name,value:u.value,domain:u.domain,expiry:u.expiry>0?new Date(u.expiry*1e3):"Infinity",meta:{file:p,browser:"Firefox",decrypted:!1}})});i.push(...f)}catch(f){f instanceof Error?x("FirefoxCookieQuery",`Error reading Firefox cookie file ${p}`,{error:f.message}):x("FirefoxCookieQuery",`Error reading Firefox cookie file ${p}`)}return i}};var Cr=require("os"),br=require("path");var cr=require("buffer"),gr=require("fs"),xr=require("os"),hr=require("path");var K=require("buffer");var lr=E(require("destr"),1),n=require("zod"),G=n.z.string().trim().min(1,"Domain cannot be empty").refine(r=>/^\.?[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(r),"Invalid domain format"),J=n.z.string().trim().min(1,"Cookie name cannot be empty").refine(r=>r==="%"||/^[!#$%&'()*+\-.:0-9A-Z \^_`a-z|~]+$/.test(r),"Invalid cookie name format - must contain only valid characters (letters, numbers, and certain symbols) or be '%' for wildcard"),ur=n.z.string().trim().min(1,"Path cannot be empty").refine(r=>r.startsWith("/"),"Path must start with /").refine(r=>/^\/[!#$%&'()*+,\-./:=@\w~]*$/.test(r),"Invalid path format - must contain only valid URL path characters").default("/"),mr=n.z.string().trim().transform(r=>(0,lr.default)(r)).pipe(n.z.any()),dr=n.z.object({name:J,value:mr,domain:G,path:ur,expiry:n.z.number().int(),creation:n.z.number().int(),flags:n.z.number().optional(),version:n.z.number().int().optional(),port:n.z.number().int().optional(),comment:n.z.string().optional(),commentURL:n.z.string().optional()}),Ws=n.z.object({name:J,domain:G}).strict(),oo=n.z.object({file:n.z.string().trim().min(1,"File path cannot be empty").optional(),browser:n.z.string().trim().optional(),decrypted:n.z.boolean().optional(),secure:n.z.boolean().optional(),httpOnly:n.z.boolean().optional(),path:ur.optional()}).catchall(n.z.unknown()).strict(),ao=n.z.object({domain:G,name:J,value:mr,expiry:n.z.union([n.z.literal("Infinity"),n.z.date(),n.z.number().int().positive("Expiry must be a positive number")]).optional(),meta:oo.optional()}).strict(),Hs=n.z.object({expiry:n.z.number().int().optional(),domain:G,name:J,value:n.z.union([n.z.string(),n.z.instanceof(Buffer)])}).strict(),Vs=n.z.object({format:n.z.enum(["merged","grouped"]).optional(),separator:n.z.string().optional(),showFilePaths:n.z.boolean().optional()}).strict(),so=n.z.enum(["Chrome","Firefox","Safari","internal","unknown"]),Gs=n.z.object({browserName:so,queryCookies:n.z.function().args(n.z.string(),n.z.string(),n.z.string().optional()).returns(n.z.promise(n.z.array(ao)))}).strict();var S=d("BinaryCodableCookie"),Z=class{constructor(e){this.version=0;this.url="";this.name="";this.path="";this.value="";this.flags={isSecure:!1,isHTTPOnly:!1,unknown1:!1,unknown2:!1};this.expiration=0;this.creation=0;let t={offset:0,buffer:e};this.decode(t)}decodeUrlValue(e){let t=e,o;do{o=t;try{t=decodeURIComponent(t)}catch{return o}}while(t!==o&&t.includes("%"));return t}decodeJwtPayload(e){let t=e.split(".");if(t.length!==3)return null;try{let o=K.Buffer.from(t[1],"base64").toString("utf8"),a=JSON.parse(o);return JSON.stringify(a)}catch{return null}}parseJsonValue(e){try{let t=JSON.parse(e);return JSON.stringify(t)}catch{return null}}processValue(e){let t=this.decodeUrlValue(e);if(t.match(/^ey[A-Za-z0-9_-]+\.ey[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/)){let o=this.decodeJwtPayload(t);if(typeof o=="string"&&o.length>0)return o}if(t.startsWith("{")||t.startsWith("[")){let o=this.parseJsonValue(t);if(typeof o=="string"&&o.length>0)return o}return t}toCookieRow(){try{let e=this.convertFlags(),t=this.url.replace(/^https?:\/\//,"").replace(/\/.*$/,"")||"uk",o=978307200,a=this.expiration>0?this.expiration+o:this.expiration,s=this.creation>0?this.creation+o:this.creation;return dr.parse({name:this.name.replace(/^: /,""),value:this.processValue(this.value)||"",domain:t,path:this.path||"/",expiry:a,creation:s,flags:e,version:this.version,port:this.port,comment:this.comment,commentURL:this.commentURL})}catch{return null}}readNullTerminatedString(e,t){let o=t;for(;o<e.buffer.length&&e.buffer[o]!==0;)o++;return e.buffer.toString("utf8",t,o)||""}readHeader(e){let t=e.buffer.readUInt32LE(e.offset);S.debug("Cookie size:",t),e.offset+=4;let o=e.buffer.readUInt32LE(e.offset);S.debug("Cookie version:",o),e.offset+=4;let a=e.buffer.readUInt32LE(e.offset);S.debug("Cookie flags:",a.toString(2).padStart(8,"0")),e.offset+=4,this.flags={isSecure:(a&1)!==0,isHTTPOnly:(a&4)!==0,unknown1:(a&8)!==0,unknown2:(a&16)!==0};let s=e.buffer.readUInt32LE(e.offset);S.debug("Has port:",s),e.offset+=4;let i={urlOffset:e.buffer.readUInt32LE(e.offset),nameOffset:e.buffer.readUInt32LE(e.offset+4),pathOffset:e.buffer.readUInt32LE(e.offset+8),valueOffset:e.buffer.readUInt32LE(e.offset+12),commentOffset:e.buffer.readUInt32LE(e.offset+16),commentURLOffset:e.buffer.readUInt32LE(e.offset+20)};return S.debug("String offsets:",i),{size:t,hasPort:s,offsets:i}}readTimestamps(e){let t=K.Buffer.alloc(8);for(let i=0;i<8;i++)t[i]=e.buffer[e.offset+i];let o=t.readDoubleLE(0);e.offset+=8;let a=K.Buffer.alloc(8);for(let i=0;i<8;i++)a[i]=e.buffer[e.offset+i];let s=a.readDoubleLE(0);e.offset+=8,this.expiration=o,this.creation=s}readStrings(e,t,o){S.debug("Reading strings from cookie buffer of size:",t);let s=[{field:"url",offset:o.urlOffset},{field:"name",offset:o.nameOffset},{field:"path",offset:o.pathOffset},{field:"value",offset:o.valueOffset},{field:"comment",offset:o.commentOffset}].filter(i=>i.offset>0).sort((i,p)=>i.offset-p.offset);S.debug("Reading strings in order:",s.map(i=>i.field));for(let i=0;i<s.length;i++){let{field:p,offset:f}=s[i],m=(i<s.length-1?s[i+1].offset:t)-f,g=0+f;for(;g<0+f+m&&e.buffer[g]!==0;)g++;let b=e.buffer.toString("utf8",0+f,g);switch(S.debug(`Read ${p}:`,b),p){case"url":this.url=b;break;case"name":this.name=b;break;case"path":this.path=b;break;case"value":this.value=b;break;case"comment":this.comment=b;break}}}decode(e){let{size:t,hasPort:o,offsets:a}=this.readHeader(e),s=e.offset;e.offset=s+24,this.readTimestamps(e),o>0&&(this.port=e.buffer.readUInt16LE(e.offset),e.offset+=2),e.offset=s,this.readStrings(e,t,a)}convertFlags(){return(this.flags.isSecure?1:0)|(this.flags.isHTTPOnly?4:0)|(this.flags.unknown1?8:0)|(this.flags.unknown2?16:0)}};var h=d("BinaryCodablePage"),F=class F{constructor(e){this.cookies=[];let t={offset:0,buffer:e};this.decode(t)}toCookieRows(){let e=[];for(let t of this.cookies)try{let o=t.toCookieRow();o!==null&&e.push(o)}catch(o){let a=o instanceof Error?o.message:String(o);x("BinaryCookies","Error converting cookie",{error:a})}return e}decode(e){let t=e.buffer.readUInt32BE(e.offset);if(h.debug("Page header:",t.toString(16)),e.offset+=4,t!==F.HEADER)throw new Error("Invalid page header");let o=e.buffer.readUInt32LE(e.offset);h.debug("Cookie count:",o),e.offset+=4;let a=e.offset-8;h.debug("Page start offset:",a);let s=[];for(let p=0;p<o;p++){let f=e.buffer.readUInt32LE(e.offset);s.push(f),h.debug(`Cookie ${p} offset:`,f),e.offset+=4}let i=e.buffer.readUInt32BE(e.offset);if(h.debug("Page footer:",i.toString(16)),e.offset+=4,i!==F.FOOTER)throw new Error("Invalid page footer");for(let p=0;p<o;p++)try{let f=s[p];h.debug(`Reading cookie ${p} at offset:`,f);let u=e.buffer.readUInt32LE(f);if(h.debug(`Cookie ${p} size:`,u),u<48){h.warn(`Invalid cookie size ${u} at index ${p}`);continue}if(f+u>e.buffer.length){h.warn(`Cookie size ${u} at index ${p} would exceed buffer length ${e.buffer.length}`);continue}let m=e.buffer.subarray(f,f+u),g=new Z(m);this.cookies.push(g)}catch(f){h.warn("Invalid cookie data",{error:f instanceof Error?f.message:String(f)})}}};F.HEADER=256,F.FOOTER=0;var X=F;var v=d("BinaryCodableCookies"),y=class y{constructor(e){let t={offset:0,buffer:e};this.pages=[],this.metadata={},this.decode(t)}static fromFile(e){let t=(0,gr.readFileSync)(e);return new y(t)}static fromDefaultPath(){return y.fromFile(y.DEFAULT_COOKIE_PATH)}toCookieRows(){let e=[];for(let t of this.pages)try{let o=t.toCookieRows();Array.isArray(o)&&e.push(...o)}catch(o){let a=o instanceof Error?o.message:String(o);x("BinaryCookies","Error converting page cookies",{error:a})}return e}decode(e){try{let t=e.buffer.subarray(e.offset,e.offset+4);if(e.offset+=4,v.debug("Magic bytes:",t.toString()),!t.equals(y.MAGIC))throw new Error("Missing magic value");let o=e.buffer.readUInt32BE(e.offset);v.debug("Page count:",o),e.offset+=4;let a=[];for(let u=0;u<o;u++){let m=e.buffer.readUInt32BE(e.offset);a.push(m),v.debug(`Page ${u} size:`,m),e.offset+=4}let s=e.offset;v.debug("Starting page data at offset:",s);for(let u of a)try{v.debug("Reading page at offset:",s,"with size:",u);let m=e.buffer.subarray(s,s+u),g=new X(m);this.pages.push(g),s+=u}catch(m){let g=m instanceof Error?m.message:String(m);v.warn("Error decoding page:",{error:g}),s+=u}e.offset=s;let i=e.buffer.readUInt32BE(e.offset);v.debug("Checksum:",i.toString(16)),e.offset+=4;let p=e.buffer.readBigUInt64BE(e.offset);v.debug("Footer:",p.toString(16)),e.offset+=8,p!==y.FOOTER&&x("BinaryCookies","Invalid cookie file format: wrong footer");let f=e.buffer.subarray(e.offset);this.metadata={}}catch(t){let o=t instanceof Error?t.message:String(t);throw x("BinaryCookies","Error decoding binary cookies file",{error:o}),t}}};y.MAGIC=cr.Buffer.from("cook","utf8"),y.FOOTER=BigInt("0x071720050000004b"),y.DEFAULT_COOKIE_PATH=(0,hr.join)((0,xr.homedir)(),"Library/Containers/com.apple.Safari/Data/Library/Cookies/Cookies.binarycookies");var Y=y;function yr(r){return Y.fromFile(r).toCookieRows()}var D=class{constructor(){this.browserName="Safari"}getCookieDbPath(e){return(0,br.join)(e,"Library","Containers","com.apple.Safari","Data","Library","Cookies","Cookies.binarycookies")}formatDomain(e){return e.startsWith(".")?e.slice(1):e}formatExpiry(e){return e<=0?"Infinity":new Date(e*1e3)}isFlagSet(e,t){return typeof e!="number"||isNaN(e)||e<=0?!1:(e&t)===t}formatCreation(e){if(!(typeof e!="number"||isNaN(e)||e<=0))return e*1e3}decodeCookies(e,t,o){try{return yr(e).filter(s=>(t==="%"||s.name===t)&&(o==="%"||this.formatDomain(s.domain).includes(o))).map(s=>({domain:this.formatDomain(s.domain),name:s.name,value:Buffer.isBuffer(s.value)?s.value.toString():String(s.value),expiry:this.formatExpiry(s.expiry),meta:{file:e,browser:"Safari",decrypted:!1,secure:this.isFlagSet(s.flags,1),httpOnly:this.isFlagSet(s.flags,4),path:s.path,version:s.version,comment:s.comment,commentURL:s.commentURL,port:s.port,creation:this.formatCreation(s.creation)}}))}catch(a){return a instanceof Error?c("SafariCookieQueryStrategy",`Error decoding ${e}`,{error:a,name:t,domain:o}):c("SafariCookieQueryStrategy",`Error decoding ${e}`,{error:"Unknown error",name:t,domain:o}),[]}}async queryCookies(e,t,o){let a=(0,Cr.homedir)();if(typeof a!="string"||a.length===0)return c("SafariCookieQueryStrategy","Failed to get home directory"),Promise.resolve([]);let s=o??this.getCookieDbPath(a);return Promise.resolve(this.decodeCookies(s,e||"%",t||"%"))}};var kr={strategies:new Map([["safari",D],["firefox",T],["chrome",L]]),createStrategy(r){if(typeof r!="string")return new N([new D,new T,new L]);let e=this.strategies.get(r.toLowerCase());return e!==void 0?new e:new N([new D,new T,new L])}};function io(r,e,t){if(!r||!(e in r))return null;let o=r[e];if(typeof o!==t)return null;let a=e.charAt(0).toUpperCase()+e.slice(1),s=t==="number"?o:String(o);return` ${a}: ${s}`}function no(r){let e=[],t=r.meta?.creation;if(typeof t=="number"){let o=new Date(t*1e3);e.push(` Creation: ${o.toISOString()}`)}if(r.expiry!=="Infinity"&&(typeof r.expiry=="number"||r.expiry instanceof Date)){let o=new Date(r.expiry);e.push(` Expiry: ${o.toISOString()}`)}return e}function fo(r){let e=["Cookie details:",` Name: ${r.name}`,` Domain: ${r.domain}`,` Value: ${r.value}`],t=["path","flags","version"];for(let o of t){let a=io(r.meta,o,o==="path"?"string":"number");a!==null&&e.push(a)}return e.push(...no(r)),e.push(""),e}async function po(r,e,t){let o=[];for(let a of e){let s=await r.queryCookies(a,t);if(o=[...o,...s],typeof t.limit=="number"&&t.limit>0&&o.length>=t.limit){o=o.slice(0,t.limit);break}}return o}async function wr(r,e,t,o=!1,a){try{let s=typeof r.browser=="string"?r.browser:void 0,i=kr.createStrategy(s),p=new U(i),f=Array.isArray(e)?e:[e],u=await po(p,f,{limit:t,removeExpired:o,store:a,strategy:i});if(u.length===0){l.error("No results");return}r["--json"]===!0?l.log(JSON.stringify(u,null,2)):u.forEach(m=>{fo(m).forEach(b=>l.log(b))})}catch(s){s instanceof Error?l.error(s.message):l.error("An unknown error occurred")}}function lo(){l.log("Usage: get-cookie [name] [domain] [options]"),l.log("Options:"),l.log(" -h, --help: Show this help message"),l.log(" -v, --verbose: Enable verbose output"),l.log(" -d, --dump: Dump all results"),l.log(" -D, --dump-grouped: Dump all results, grouped by profile"),l.log(" -r, --render: Render all results"),l.log(" -u, --url: URL to extract cookie specs from"),l.log(" -n, --name: Cookie name pattern"),l.log(" -d, --domain: Cookie domain pattern"),l.log(" --store: Path to a specific binarycookies store file"),l.log(" --output: Output format (e.g., json)")}function uo(r,e){return{name:r||"%",domain:e||"%"}}function mo(r,e){let t=r.url;if(typeof t=="string"){let s=ee(t);return Array.isArray(s)?s:(l.error("Invalid cookie specs from URL"),[])}let o=r.name||e[0]||"%",a=r.domain||e[1]||"%";return[uo(o,a)]}async function co(r,e){let t=mo(r,e);r.verbose===!0&&l.log("cookieSpecs",t);try{await wr(r,t,void 0,r.removeExpired===!0,r.store)}catch(o){o instanceof Error?l.error("Error querying cookies:",o.message):l.error("An unknown error occurred while querying cookies")}}async function go(){let r=process.argv.slice(2),{values:e,positionals:t}=le(r);if(e.help===!0){lo();return}await co(e,t)}go().catch(r=>{r instanceof Error?l.error("Fatal error:",r.message):l.error("An unknown fatal error occurred"),process.exit(1)});
|
|
3
3
|
/*! Bundled license information:
|
|
4
4
|
|
|
5
5
|
lodash-es/lodash.js:
|