@mherod/get-cookie 2.1.2 → 4.0.1
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 +2 -0
- package/.husky/pre-commit +4 -0
- package/.husky/pre-push +4 -0
- package/README.md +163 -18
- package/commitlint.config.js +12 -0
- package/dist/chunk-4I5M3M7H.js +6 -0
- package/dist/chunk-4I5M3M7H.js.map +1 -0
- package/dist/chunk-ACXFQWII.js +2 -0
- package/dist/chunk-ACXFQWII.js.map +1 -0
- package/dist/chunk-BKU5PKJ5.js +2 -0
- package/dist/chunk-BKU5PKJ5.js.map +1 -0
- package/dist/chunk-DR2EQC4R.js +2 -0
- package/dist/chunk-DR2EQC4R.js.map +1 -0
- package/dist/chunk-FZ5IFH4R.js +2 -0
- package/dist/chunk-FZ5IFH4R.js.map +1 -0
- package/dist/chunk-S5FU4HO5.js +2 -0
- package/dist/chunk-S5FU4HO5.js.map +1 -0
- package/dist/chunk-TUGIEFXM.js +2 -0
- package/dist/chunk-TUGIEFXM.js.map +1 -0
- package/dist/cli/cli.cjs +8 -0
- package/dist/cli/cli.cjs.map +1 -0
- package/dist/cli/cli.d.cts +1 -0
- package/dist/cli/cli.d.ts +1 -0
- package/dist/cli/cli.js +4 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/getChromeCookie-P623SIWB.js +2 -0
- package/dist/getChromeCookie-P623SIWB.js.map +1 -0
- package/dist/getChromePassword-74BC3LXO.js +2 -0
- package/dist/getChromePassword-74BC3LXO.js.map +1 -0
- package/dist/getCookie-FBQKCKJB.js +2 -0
- package/dist/getCookie-FBQKCKJB.js.map +1 -0
- package/dist/getFirefoxCookie-CGJJJ7VC.js +2 -0
- package/dist/getFirefoxCookie-CGJJJ7VC.js.map +1 -0
- package/dist/getGroupedRenderedCookies-RNB6DKBL.js +2 -0
- package/dist/getGroupedRenderedCookies-RNB6DKBL.js.map +1 -0
- package/dist/getMergedRenderedCookies-NC3UTOIC.js +2 -0
- package/dist/getMergedRenderedCookies-NC3UTOIC.js.map +1 -0
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +252 -0
- package/dist/index.d.ts +252 -0
- package/dist/index.js +2 -24914
- package/dist/index.js.map +1 -0
- package/eslint.config.js +243 -0
- package/jest.setup.js +4 -0
- package/package.json +81 -35
- package/tsconfig.build.json +5 -0
- package/typedoc.json +22 -0
- package/.parcelrc +0 -7
- package/.prettierignore +0 -5
- package/.prettierrc +0 -12
- package/.terserrc +0 -26
- package/build-indexes.ts +0 -108
- package/bun.lockb +0 -0
- package/dist/cli.js +0 -18319
- package/dist/types.d.ts +0 -361
- package/jest.config.ts +0 -14
- package/package-lock.json +0 -5608
- package/src/CookieRow.ts +0 -43
- package/src/CookieSpec.ts +0 -42
- package/src/ExportedCookie.ts +0 -19
- package/src/FetchResponse.ts +0 -13
- package/src/SpecialCases.ts +0 -15
- package/src/StringToRegex.ts +0 -16
- package/src/argv.ts +0 -30
- package/src/browsers/CompositeCookieQueryStrategy.ts +0 -76
- package/src/browsers/CookieQueryStrategy.ts +0 -7
- package/src/browsers/CookieStoreQueryStrategy.ts +0 -115
- package/src/browsers/QuerySqliteThenTransform.ts +0 -48
- package/src/browsers/chrome/ChromeApplicationSupport.ts +0 -14
- package/src/browsers/chrome/ChromeCookieQueryStrategy.ts +0 -158
- package/src/browsers/chrome/decrypt.ts +0 -154
- package/src/browsers/chrome/getChromePassword.ts +0 -28
- package/src/browsers/firefox/FirefoxCookieQueryStrategy.ts +0 -109
- package/src/browsers/getEncryptedChromeCookie.ts +0 -122
- package/src/browsers/index.ts +0 -12
- package/src/browsers/mock/MockCookieQueryStrategy.ts +0 -22
- package/src/browsers/safari/SafariCookieQueryStrategy.ts +0 -42
- package/src/cli.ts +0 -94
- package/src/cliQueryCookies.ts +0 -65
- package/src/comboQueryCookieSpec.test.ts +0 -92
- package/src/comboQueryCookieSpec.ts +0 -26
- package/src/cookieQueryOptions.ts +0 -27
- package/src/cookieSpecsFromUrl.test.ts +0 -65
- package/src/cookieSpecsFromUrl.ts +0 -73
- package/src/decodeBinaryCookies.ts +0 -72
- package/src/execSimple.ts +0 -12
- package/src/fetchWithCookies.test.ts +0 -32
- package/src/fetchWithCookies.ts +0 -217
- package/src/findAllFiles.ts +0 -48
- package/src/getChromeCookie.ts +0 -19
- package/src/getCookie.ts +0 -22
- package/src/getFirefoxCookie.ts +0 -25
- package/src/getGroupedRenderedCookies.ts +0 -42
- package/src/getMergedRenderedCookies.test.ts +0 -43
- package/src/getMergedRenderedCookies.ts +0 -19
- package/src/global.ts +0 -8
- package/src/index.ts +0 -26
- package/src/isValidJwt.ts +0 -26
- package/src/listChromeProfiles.ts +0 -53
- package/src/logger.ts +0 -12
- package/src/processBeforeReturn.ts +0 -29
- package/src/queryCookies.ts +0 -41
- package/src/resultsRendered.ts +0 -24
- package/src/unpackHeaders.ts +0 -18
- package/src/util/flatMapAsync.test.ts +0 -55
- package/src/util/flatMapAsync.ts +0 -41
- package/src/util/index.ts +0 -1
- package/tsconfig.json +0 -26
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var i=Object.create;var f=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty;var h=a=>{throw TypeError(a)};var n=(a,b,c)=>b in a?f(a,b,{enumerable:!0,configurable:!0,writable:!0,value:c}):a[b]=c;var p=(a=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(a,{get:(b,c)=>(typeof require!="undefined"?require:b)[c]}):a)(function(a){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var q=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports);var o=(a,b,c,d)=>{if(b&&typeof b=="object"||typeof b=="function")for(let e of k(b))!m.call(a,e)&&e!==c&&f(a,e,{get:()=>b[e],enumerable:!(d=j(b,e))||d.enumerable});return a};var r=(a,b,c)=>(c=a!=null?i(l(a)):{},o(b||!a||!a.__esModule?f(c,"default",{value:a,enumerable:!0}):c,a));var s=(a,b,c)=>n(a,typeof b!="symbol"?b+"":b,c),g=(a,b,c)=>b.has(a)||h("Cannot "+c);var t=(a,b,c)=>(g(a,b,"read from private field"),c?c.call(a):b.get(a)),u=(a,b,c)=>b.has(a)?h("Cannot add the same private member more than once"):b instanceof WeakSet?b.add(a):b.set(a,c),v=(a,b,c,d)=>(g(a,b,"write to private field"),d?d.call(a,c):b.set(a,c),c),w=(a,b,c)=>(g(a,b,"access private method"),c);export{p as a,q as b,r as c,s as d,t as e,u as f,v as g,w as h};
|
|
2
|
+
//# sourceMappingURL=chunk-ACXFQWII.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as p,b as l}from"./chunk-4I5M3M7H.js";import{d as m,f as n}from"./chunk-TUGIEFXM.js";import{join as c}from"path";function u(){let o=[],e=process.env.HOME;if(typeof e!="string"||e.length===0)return n("FirefoxCookieQuery","HOME environment variable not set"),o;let a=[c(e,"Library/Application Support/Firefox/Profiles/*/cookies.sqlite"),c(e,".mozilla/firefox/*/cookies.sqlite")];for(let f of a){let i=l(f);o.push(...i)}return m("FirefoxCookieQuery","Found Firefox cookie files",{files:o}),o}var y=class{constructor(){this.browserName="Firefox"}async queryCookies(e,a){let f=u(),i=[];for(let t of f)try{let s=await p({file:t,sql:"SELECT name, value, host as domain, expiry FROM moz_cookies WHERE name = ? AND host LIKE ?",params:[e,`%${a}%`],rowTransform:r=>({name:r.name,value:r.value,domain:r.domain,expiry:r.expiry>0?new Date(r.expiry*1e3):"Infinity",meta:{file:t,browser:"Firefox",decrypted:!1}})});i.push(...s)}catch(s){s instanceof Error?n("FirefoxCookieQuery",`Error reading Firefox cookie file ${t}`,{error:s.message}):n("FirefoxCookieQuery",`Error reading Firefox cookie file ${t}`)}return i}};export{y as a};
|
|
2
|
+
//# sourceMappingURL=chunk-BKU5PKJ5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/browsers/firefox/FirefoxCookieQueryStrategy.ts"],"sourcesContent":["import { join } from \"path\";\n\nimport { sync } from \"glob\";\n\nimport { logDebug, logWarn } from \"@utils/logHelpers\";\n\nimport type { BrowserName } from \"../../../types/BrowserName\";\nimport type { CookieQueryStrategy } from \"../../../types/CookieQueryStrategy\";\nimport type { ExportedCookie } from \"../../../types/ExportedCookie\";\nimport { querySqliteThenTransform } from \"../QuerySqliteThenTransform\";\n\ninterface FirefoxCookieRow {\n name: string;\n value: string;\n domain: string;\n expiry: number;\n}\n\n/**\n * Find all Firefox cookie database files\n * @returns An array of file paths to Firefox cookie databases\n */\nfunction findFirefoxCookieFiles(): string[] {\n const files: string[] = [];\n const homedir = process.env.HOME;\n\n if (typeof homedir !== \"string\" || homedir.length === 0) {\n logWarn(\"FirefoxCookieQuery\", \"HOME environment variable not set\");\n return files;\n }\n\n const patterns = [\n join(\n homedir,\n \"Library/Application Support/Firefox/Profiles/*/cookies.sqlite\",\n ),\n join(homedir, \".mozilla/firefox/*/cookies.sqlite\"),\n ];\n\n for (const pattern of patterns) {\n const matches = sync(pattern);\n files.push(...matches);\n }\n\n logDebug(\"FirefoxCookieQuery\", \"Found Firefox cookie files\", { files });\n return files;\n}\n\n/**\n * Strategy for querying cookies from Firefox browser\n * @example\n */\nexport class FirefoxCookieQueryStrategy implements CookieQueryStrategy {\n /**\n *\n */\n public readonly browserName: BrowserName = \"Firefox\";\n\n /**\n * Queries cookies from Firefox's cookie store\n * @param name - The name pattern to match cookies against\n * @param domain - The domain pattern to match cookies against\n * @returns A promise that resolves to an array of exported cookies\n */\n public async queryCookies(\n name: string,\n domain: string,\n ): Promise<ExportedCookie[]> {\n const files = findFirefoxCookieFiles();\n const results: ExportedCookie[] = [];\n\n for (const file of files) {\n try {\n const cookies = await querySqliteThenTransform<\n FirefoxCookieRow,\n ExportedCookie\n >({\n file,\n sql: \"SELECT name, value, host as domain, expiry FROM moz_cookies WHERE name = ? AND host LIKE ?\",\n params: [name, `%${domain}%`],\n rowTransform: (row) => ({\n name: row.name,\n value: row.value,\n domain: row.domain,\n expiry: row.expiry > 0 ? new Date(row.expiry * 1000) : \"Infinity\",\n meta: {\n file,\n browser: \"Firefox\",\n decrypted: false,\n },\n }),\n });\n\n results.push(...cookies);\n } catch (error) {\n if (error instanceof Error) {\n logWarn(\n \"FirefoxCookieQuery\",\n `Error reading Firefox cookie file ${file}`,\n { error: error.message },\n );\n } else {\n logWarn(\n \"FirefoxCookieQuery\",\n `Error reading Firefox cookie file ${file}`,\n );\n }\n }\n }\n\n return results;\n }\n}\n"],"mappings":"8FAAA,OAAS,QAAAA,MAAY,OAsBrB,SAASC,GAAmC,CAC1C,IAAMC,EAAkB,CAAC,EACnBC,EAAU,QAAQ,IAAI,KAE5B,GAAI,OAAOA,GAAY,UAAYA,EAAQ,SAAW,EACpD,OAAAC,EAAQ,qBAAsB,mCAAmC,EAC1DF,EAGT,IAAMG,EAAW,CACfC,EACEH,EACA,+DACF,EACAG,EAAKH,EAAS,mCAAmC,CACnD,EAEA,QAAWI,KAAWF,EAAU,CAC9B,IAAMG,EAAUC,EAAKF,CAAO,EAC5BL,EAAM,KAAK,GAAGM,CAAO,CACvB,CAEA,OAAAE,EAAS,qBAAsB,6BAA8B,CAAE,MAAAR,CAAM,CAAC,EAC/DA,CACT,CAMO,IAAMS,EAAN,KAAgE,CAAhE,cAIL,KAAgB,YAA2B,UAQ3C,MAAa,aACXC,EACAC,EAC2B,CAC3B,IAAMX,EAAQD,EAAuB,EAC/Ba,EAA4B,CAAC,EAEnC,QAAWC,KAAQb,EACjB,GAAI,CACF,IAAMc,EAAU,MAAMC,EAGpB,CACA,KAAAF,EACA,IAAK,6FACL,OAAQ,CAACH,EAAM,IAAIC,CAAM,GAAG,EAC5B,aAAeK,IAAS,CACtB,KAAMA,EAAI,KACV,MAAOA,EAAI,MACX,OAAQA,EAAI,OACZ,OAAQA,EAAI,OAAS,EAAI,IAAI,KAAKA,EAAI,OAAS,GAAI,EAAI,WACvD,KAAM,CACJ,KAAAH,EACA,QAAS,UACT,UAAW,EACb,CACF,EACF,CAAC,EAEDD,EAAQ,KAAK,GAAGE,CAAO,CACzB,OAASG,EAAO,CACVA,aAAiB,MACnBf,EACE,qBACA,qCAAqCW,CAAI,GACzC,CAAE,MAAOI,EAAM,OAAQ,CACzB,EAEAf,EACE,qBACA,qCAAqCW,CAAI,EAC3C,CAEJ,CAGF,OAAOD,CACT,CACF","names":["join","findFirefoxCookieFiles","files","homedir","logWarn","patterns","join","pattern","matches","sync","logDebug","FirefoxCookieQueryStrategy","name","domain","results","file","cookies","querySqliteThenTransform","row","error"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as C,b as w}from"./chunk-4I5M3M7H.js";import{a as d,b as p,c,d as l,e as y}from"./chunk-TUGIEFXM.js";async function k(r,e,o=[]){return r.length===0?o:(await Promise.all(r.map(async i=>{try{return await e(i)}catch(n){return o}}))).flat()}import{existsSync as T}from"fs";import{join as h}from"path";import L from"fast-glob";import{join as q}from"path";import D from"lodash/merge";var E={};D(E,process.env);var u=E.HOME;if(typeof u!="string"||u.length===0)throw new Error("HOME environment variable is not set or empty");var x,m=q((x=u)!=null?x:"","Library","Application Support","Google","Chrome");function M(r){if(typeof r!="string")return!1;let e=r.trim();return e.length===0?!1:T(e)}async function Q(){let r=[h(m,"Default/Cookies"),h(m,"Profile */Cookies"),h(m,"Profile Default/Cookies")],e=[];for(let o of r){let t=await L(o);e.push(...t)}return l("ChromeCookies","Found cookie files",{count:e.length,files:e}),e}function A(r,e){let o=r==="%",t=o?"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 ?",i=o?[`%${e}%`]:[r,`%${e}%`];return{sql:t,params:i}}async function I(r,e,o){try{let{sql:t,params:i}=A(e,o);l("ChromeCookies","Executing query",{sql:t,params:i});let n=await C({file:r,sql:t,params:i,rowTransform:s=>({name:s.name,domain:s.host_key,value:s.encrypted_value,expiry:s.expires_utc})});return p("QueryCookies",!0,{file:r,count:n.length}),n}catch(t){return c("Failed to read cookie file",t,{file:r}),[]}}async function P({name:r,domain:e,file:o}){let t=typeof o=="string"&&o.length>0?[o]:await Q();if(t.length===0)return l("ChromeCookies","No cookie files found"),[];let i=[];for(let n of t){if(!M(n)){l("ChromeCookies","Cookie file missing or invalid",{file:n});continue}let s=await I(n,r,e);i.push(...s)}return l("ChromeCookies","Query complete",{totalCookies:i.length}),i}var N=d.withTag("listChromeProfiles");function _(){let r=w("./**/Cookies",{cwd:m,absolute:!0});return N.debug("Found cookie files:",r),r}import{createDecipheriv as H,pbkdf2 as $}from"crypto";import S from"lodash/memoize";var U=S(r=>r.length>=3&&r[0]===118&&r[1]===49&&r[2]===48?r.slice(3):r,r=>r.toString("hex")),z=S(r=>{let e=r[r.length-1];return e&&e<=16?r.slice(0,-e):r},r=>r.toString("hex"));function G(r){var o;let e=[/.*?0t(.+)$/,/.*?1e`(.+)$/,/.*?[`'](.+)$/,/[^\x20-\x7E]*([\x20-\x7E].+)$/];for(let t of e){let i=r.match(t),n=(o=i==null?void 0:i[1])!=null?o:"";if(n.length>0)return n}return r}async function v(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((o,t)=>{$(e,"saltysalt",1003,16,"sha1",(i,n)=>{try{if(i){t(new Error("Failed to derive key: "+i.message));return}let s=U(r);if(s.length%16!==0){t(new Error("Encrypted data length is not a multiple of 16"));return}let f=Buffer.alloc(16," "),a=H("aes-128-cbc",n,f);a.setAutoPadding(!1);let g=a.update(s);try{a.final()}catch(O){t(new Error("Failed to finalize decryption: "+O.message));return}g=z(g);let B=g.toString("utf8");o(G(B))}catch(s){t(new Error("Decryption failed: "+s.message))}})})}import W from"lodash/memoize";var b=W(async()=>{if(process.platform!=="darwin")throw c("Chrome password retrieval failed",new Error("This only works on macOS"),{platform:process.platform}),new Error("This only works on macOS");try{let{getChromePassword:r}=await import("./getChromePassword-74BC3LXO.js"),e=await r();return l("ChromePassword","Retrieved password successfully",{platform:"macOS"}),e}catch(r){throw c("Chrome password retrieval failed",r,{platform:"macOS"}),r}});function K(r){return typeof r!="number"||r<=0?"Infinity":new Date(r)}function R(r,e,o,t,i,n){return{domain:r,name:e,value:o,expiry:K(t),meta:{file:i,browser:"Chrome",decrypted:n}}}var F=class{constructor(){this.logger=y("ChromeCookieQueryStrategy");this.browserName="Chrome"}async queryCookies(e,o){try{if(this.logger.info("Querying cookies",{name:e,domain:o}),process.platform!=="darwin")return this.logger.warn("Platform not supported",{platform:process.platform}),[];let i=_().map(f=>f),n=await b(),s=await k(i,f=>this.processFile(f,e,o,n),[]);return p("Cookie query",!0,{count:s.length}),s}catch(t){return c("Failed to query cookies",t,{name:e,domain:o}),[]}}async processFile(e,o,t,i){try{let n=await P({name:o,domain:t,file:e}),s={file:e,password:i};return(await Promise.allSettled(n.map(a=>this.processCookie(a,s)))).map(a=>a.status==="fulfilled"?a.value:null).filter(a=>a!==null)}catch(n){return this.logger.error("Failed to process cookie file",{error:n,file:e}),[]}}async processCookie(e,o){try{let t=Buffer.isBuffer(e.value)?e.value:Buffer.from(String(e.value)),i=await v(t,o.password);return R(e.domain,e.name,i,e.expiry,o.file,!0)}catch(t){return this.logger.warn("Failed to decrypt cookie",{error:t}),R(e.domain,e.name,e.value.toString("utf-8"),e.expiry,o.file,!1)}}};export{k as a,F as b};
|
|
2
|
+
//# sourceMappingURL=chunk-DR2EQC4R.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/flatMapAsync.ts","../src/core/browsers/getEncryptedChromeCookie.ts","../src/core/browsers/chrome/ChromeApplicationSupport.ts","../src/global.ts","../src/core/browsers/listChromeProfiles.ts","../src/core/browsers/chrome/decrypt.ts","../src/core/browsers/chrome/getChromePassword.ts","../src/core/browsers/chrome/ChromeCookieQueryStrategy.ts"],"sourcesContent":["/**\n * Asynchronously maps over an array and flattens the result.\n * Similar to Array.prototype.flatMap but for async operations.\n * @param array - The input array to map over\n * @param callback - The async mapping function to apply to each element\n * @param defaultValue - The default value to return if the array is empty\n * @returns A flattened array of results\n * @example\n * // Basic usage with number arrays\n * const numbers = [1, 2, 3];\n * const result = await flatMapAsync(\n * numbers,\n * async (num) => [num, num * 2]\n * );\n * console.log(result); // [1, 2, 2, 4, 3, 6]\n * @example\n * // Error handling with default value\n * const data = ['valid', 'invalid'];\n * const result = await flatMapAsync(\n * data,\n * async (item) => {\n * if (item === 'invalid') throw new Error();\n * return [item.toUpperCase()];\n * },\n * ['DEFAULT']\n * );\n * console.log(result); // ['VALID', 'DEFAULT']\n */\nexport async function flatMapAsync<T, U>(\n array: T[],\n callback: (item: T) => Promise<U[]>,\n defaultValue: U[] = [],\n): Promise<U[]> {\n if (array.length === 0) {\n return defaultValue;\n }\n\n const results = await Promise.all(\n array.map(async (item) => {\n try {\n return await callback(item);\n } catch (_error) {\n return defaultValue;\n }\n }),\n );\n return results.flat();\n}\n","import { existsSync } from \"fs\";\nimport { join } from \"path\";\n\nimport glob from \"fast-glob\";\n\nimport { logError, logDebug, logOperationResult } from \"@utils/logHelpers\";\n\nimport type { CookieRow } from \"../../types/CookieRow\";\n\nimport { chromeApplicationSupport } from \"./chrome/ChromeApplicationSupport\";\nimport { querySqliteThenTransform } from \"./QuerySqliteThenTransform\";\n\ninterface ChromeCookieRow {\n encrypted_value: Buffer;\n name: string;\n host_key: string;\n expires_utc: number;\n}\n\ninterface GetEncryptedCookieOptions {\n name: string;\n domain: string;\n file?: string;\n}\n\ninterface SqlQuery {\n sql: string;\n params: string[];\n}\n\n/**\n * Validates if a path is a valid, existing file\n * @param path - Path to validate\n * @returns true if path is valid and file exists, false otherwise\n */\nfunction isValidFilePath(path: unknown): path is string {\n if (typeof path !== \"string\") {\n return false;\n }\n\n const trimmedPath = path.trim();\n if (trimmedPath.length === 0) {\n return false;\n }\n\n return existsSync(trimmedPath);\n}\n\n/**\n * Get paths to Chrome cookie files\n * @returns A promise that resolves to an array of file paths\n */\nasync function getCookieFiles(): Promise<string[]> {\n const patterns = [\n join(chromeApplicationSupport, \"Default/Cookies\"),\n join(chromeApplicationSupport, \"Profile */Cookies\"),\n join(chromeApplicationSupport, \"Profile Default/Cookies\"),\n ];\n\n const files: string[] = [];\n for (const pattern of patterns) {\n const matches = await glob(pattern);\n files.push(...matches);\n }\n\n logDebug(\"ChromeCookies\", \"Found cookie files\", {\n count: files.length,\n files,\n });\n return files;\n}\n\n/**\n * Builds the SQL query for retrieving cookies\n * @param name - Cookie name to search for\n * @param domain - Domain to filter by\n * @returns SQL query and parameters\n */\nfunction buildSqlQuery(name: string, domain: string): SqlQuery {\n const isWildcard = name === \"%\";\n const sql = isWildcard\n ? `SELECT name, encrypted_value, host_key, expires_utc FROM cookies WHERE host_key LIKE ?`\n : `SELECT name, encrypted_value, host_key, expires_utc FROM cookies WHERE name = ? AND host_key LIKE ?`;\n const params = isWildcard ? [`%${domain}%`] : [name, `%${domain}%`];\n\n return { sql, params };\n}\n\n/**\n * Processes a single cookie file to extract matching cookies\n * @param cookieFile - Path to the cookie file\n * @param name - Cookie name to search for\n * @param domain - Domain to filter by\n * @returns Array of matching cookies\n */\nasync function processCookieFile(\n cookieFile: string,\n name: string,\n domain: string,\n): Promise<CookieRow[]> {\n try {\n const { sql, params } = buildSqlQuery(name, domain);\n logDebug(\"ChromeCookies\", \"Executing query\", { sql, params });\n\n const rows = await querySqliteThenTransform<ChromeCookieRow, CookieRow>({\n file: cookieFile,\n sql,\n params,\n rowTransform: (row: ChromeCookieRow): CookieRow => ({\n name: row.name,\n domain: row.host_key,\n value: row.encrypted_value,\n expiry: row.expires_utc,\n }),\n });\n\n logOperationResult(\"QueryCookies\", true, {\n file: cookieFile,\n count: rows.length,\n });\n return rows;\n } catch (error) {\n logError(\"Failed to read cookie file\", error, { file: cookieFile });\n return [];\n }\n}\n\n/**\n * Retrieve encrypted cookies from Chrome's cookie store\n * @param options - Options for querying Chrome cookies\n * @param options.name - The name of the cookie to retrieve\n * @param options.domain - The domain to retrieve cookies from\n * @param options.file - Optional specific cookie file to query\n * @returns Promise resolving to array of encrypted cookies\n */\nexport async function getEncryptedChromeCookie({\n name,\n domain,\n file,\n}: GetEncryptedCookieOptions): Promise<CookieRow[]> {\n const cookieFiles =\n typeof file === \"string\" && file.length > 0\n ? [file]\n : await getCookieFiles();\n\n if (cookieFiles.length === 0) {\n logDebug(\"ChromeCookies\", \"No cookie files found\");\n return [];\n }\n\n const results: CookieRow[] = [];\n for (const cookieFile of cookieFiles) {\n if (!isValidFilePath(cookieFile)) {\n logDebug(\"ChromeCookies\", \"Cookie file missing or invalid\", {\n file: cookieFile,\n });\n continue;\n }\n\n const cookies = await processCookieFile(cookieFile, name, domain);\n results.push(...cookies);\n }\n\n logDebug(\"ChromeCookies\", \"Query complete\", { totalCookies: results.length });\n return results;\n}\n","import { join } from \"path\";\n\nimport { HOME } from \"../../../global\";\n\n/**\n * The path to Chrome's application support directory on macOS\n * This constant is used to locate Chrome's profile and cookie storage directories\n * @example\n */\nexport const chromeApplicationSupport = join(\n HOME ?? \"\",\n \"Library\",\n \"Application Support\",\n \"Google\",\n \"Chrome\",\n);\n","import merge from \"lodash/merge\";\n\n/**\n * Global environment variables object that merges with process.env\n * @example\n * // Access environment variables\n * const nodeEnv = env.NODE_ENV; // 'development'\n * const apiKey = env.API_KEY; // 'abc123'\n *\n * // Check if variable exists\n * if (env.DATABASE_URL) {\n * // Use database URL\n * }\n *\n * // Add new environment variables\n * env.CUSTOM_VAR = 'my-value';\n */\nexport const env: { [key: string]: string | undefined } = {};\nmerge(env, process.env);\n\n/**\n * User's home directory path from environment variables\n * @throws Error if HOME environment variable is not set\n * @example\n * // Access home directory path\n * const homePath = HOME; // '/home/username' or 'C:\\Users\\username'\n *\n * // Use in file path construction\n * const configPath = `${homePath}/.config/app`;\n *\n * // Error handling\n * if (typeof homePath === 'string' && homePath.length > 0) {\n * // Use home path\n * } else {\n * throw new Error('HOME environment variable is not set or empty');\n * }\n */\nexport const HOME: string | undefined = env[\"HOME\"];\nif (typeof HOME !== \"string\" || HOME.length === 0) {\n throw new Error(\"HOME environment variable is not set or empty\");\n}\n","// External imports\nimport { readFileSync } from \"fs\";\nimport { join } from \"path\";\n\nimport { sync } from \"glob\";\n\n// Internal imports\nimport logger from \"@utils/logger\";\n\nimport { chromeApplicationSupport } from \"./chrome/ChromeApplicationSupport\";\n\nconst consola = logger.withTag(\"listChromeProfiles\");\n\n/**\n * Lists all Chrome profile paths that contain cookie files\n * @internal\n * @returns An array of absolute paths to Chrome cookie files\n * @throws {Error} If Chrome's application support directory cannot be accessed\n * @example\n * ```typescript\n * // Get all Chrome cookie file paths\n * const cookiePaths = listChromeProfilePaths();\n * // Returns: [\n * // '/Users/name/Library/Application Support/Chrome/Profile 1/Cookies',\n * // '/Users/name/Library/Application Support/Chrome/Profile 2/Cookies'\n * // ]\n *\n * // Handle errors\n * try {\n * const paths = listChromeProfilePaths();\n * } catch (error) {\n * console.error('Failed to access Chrome profiles:', error);\n * }\n * ```\n */\nexport function listChromeProfilePaths(): string[] {\n const files: string[] = sync(`./**/Cookies`, {\n cwd: chromeApplicationSupport,\n absolute: true,\n });\n\n consola.debug(\"Found cookie files:\", files);\n return files;\n}\n\n/**\n * Chrome Local State file structure\n * @internal\n */\ninterface ChromeLocalState {\n profile: {\n info_cache: Record<string, ChromeProfileInfo>;\n };\n}\n\n/**\n * Chrome profile information structure\n * @property {string} name - The name of the profile\n * @property {number} active_time - Unix timestamp of last profile activity\n * @property {string} account_id - Unique identifier for the Chrome profile\n * @property {Record<string, unknown>} accountcapabilities - Account feature flags\n * @property {string} email - User's email address\n * @property {string} full_name - User's full name\n * @property {boolean} is_using_default_avatar - Whether using default profile picture\n * @property {boolean} is_using_default_name - Whether using default profile name\n * @property {string} last_downloaded_gaia_picture_url_with_size - Profile picture URL\n * @property {string} local_auth_credentials - Authentication credentials\n * @property {string} shortcut_name - Profile shortcut name\n * @property {string} user_name - Username associated with profile\n */\ninterface ChromeProfileInfo {\n /** The name of the profile */\n name: string;\n /** Unix timestamp of last profile activity */\n active_time: number;\n /** Unique identifier for the Chrome profile */\n account_id: string;\n /** Account feature flags */\n accountcapabilities: Record<string, unknown>;\n /** User's email address */\n email: string;\n /** User's full name */\n full_name: string;\n /** Whether using default profile picture */\n is_using_default_avatar: boolean;\n /** Whether using default profile name */\n is_using_default_name: boolean;\n /** Profile picture URL */\n last_downloaded_gaia_picture_url_with_size: string;\n /** Authentication credentials */\n local_auth_credentials: string;\n /** Profile shortcut name */\n shortcut_name: string;\n /** Username associated with profile */\n user_name: string;\n}\n\n/**\n * Lists all Chrome profiles and their associated information\n * @internal\n * @returns An array of Chrome profile information objects. Returns empty array if profiles cannot be read\n * @throws {Error} If Chrome's application support directory cannot be accessed\n * @example\n * ```typescript\n * // Get all Chrome profiles\n * const profiles = listChromeProfiles();\n * // Returns: [\n * // {\n * // name: \"Default\",\n * // email: \"user@example.com\",\n * // full_name: \"John Doe\",\n * // ...\n * // },\n * // ...\n * // ]\n *\n * // Handle empty or error case\n * const profiles = listChromeProfiles();\n * if (profiles.length === 0) {\n * console.log('No Chrome profiles found or error occurred');\n * }\n * ```\n */\nexport function listChromeProfiles(): ChromeProfileInfo[] {\n try {\n const localStatePath = join(chromeApplicationSupport, \"Local State\");\n const localState = JSON.parse(\n readFileSync(localStatePath, \"utf8\"),\n ) as ChromeLocalState;\n return Object.values(localState.profile.info_cache);\n } catch (error) {\n if (error instanceof Error) {\n consola.error(\"Failed to read Chrome profiles:\", error.message);\n } else {\n consola.error(\"Failed to read Chrome profiles: Unknown error\");\n }\n return [];\n }\n}\n","// External imports\nimport { createDecipheriv, pbkdf2 } from \"crypto\";\n\nimport memoize from \"lodash/memoize\";\n\n/**\n * Removes the v10 prefix from the encrypted value if present\n * @param value - The encrypted value\n * @returns The value without the v10 prefix\n */\nconst removeV10Prefix = memoize(\n (value: Buffer): Buffer => {\n if (\n value.length >= 3 &&\n value[0] === 0x76 && // 'v'\n value[1] === 0x31 && // '1'\n value[2] === 0x30\n ) {\n // '0'\n return value.slice(3);\n }\n return value;\n },\n (value: Buffer) => value.toString(\"hex\"),\n);\n\n/**\n * Removes PKCS7 padding from the decrypted value\n * @param decrypted - The decrypted buffer\n * @returns The buffer without padding\n */\nconst removePadding = memoize(\n (decrypted: Buffer): Buffer => {\n const padding = decrypted[decrypted.length - 1];\n if (padding && padding <= 16) {\n return decrypted.slice(0, -padding);\n }\n return decrypted;\n },\n (decrypted: Buffer) => decrypted.toString(\"hex\"),\n);\n\n/**\n * Extracts the actual value from the decoded string by removing Chrome's prefixes\n * @param decodedString - The decoded string to clean up\n * @returns The cleaned up value\n */\nfunction extractValue(decodedString: string): string {\n const cleanupPatterns = [\n /.*?0t(.+)$/, // Pattern ending in \"0t\" followed by value\n /.*?1e`(.+)$/, // Pattern ending in \"1e`\" followed by value\n /.*?[`'](.+)$/, // Any backtick or quote followed by value\n /[^\\x20-\\x7E]*([\\x20-\\x7E].+)$/, // Non-printable chars followed by printable chars\n ];\n\n for (const pattern of cleanupPatterns) {\n const match = decodedString.match(pattern);\n const value = match?.[1] ?? \"\";\n if (value.length > 0) {\n return value;\n }\n }\n return decodedString;\n}\n\n/**\n * Decrypts Chrome's encrypted cookie values\n * @param encryptedValue - The encrypted cookie value as a Buffer\n * @param password - The Chrome encryption password\n * @returns A promise that resolves to the decrypted cookie value\n * @throws {Error} If decryption fails\n * @example\n */\nexport async function decrypt(\n encryptedValue: Buffer,\n password: string,\n): Promise<string> {\n if (typeof password !== \"string\") {\n throw new Error(\"password must be a string\");\n }\n if (!Buffer.isBuffer(encryptedValue)) {\n throw new Error(\"encryptedData must be a Buffer\");\n }\n\n return new Promise((resolve, reject) => {\n pbkdf2(password, \"saltysalt\", 1003, 16, \"sha1\", (error, key) => {\n try {\n if (error) {\n reject(new Error(\"Failed to derive key: \" + error.message));\n return;\n }\n\n const value = removeV10Prefix(encryptedValue);\n if (value.length % 16 !== 0) {\n reject(new Error(\"Encrypted data length is not a multiple of 16\"));\n return;\n }\n\n // Chrome's encryption parameters\n const iv = Buffer.alloc(16, \" \"); // 16 spaces\n const decipher = createDecipheriv(\"aes-128-cbc\", key, iv);\n decipher.setAutoPadding(false);\n\n // Decrypt the value\n let decrypted = decipher.update(value);\n try {\n decipher.final();\n } catch (e) {\n reject(\n new Error(\"Failed to finalize decryption: \" + (e as Error).message),\n );\n return;\n }\n\n decrypted = removePadding(decrypted);\n const decodedString = decrypted.toString(\"utf8\");\n resolve(extractValue(decodedString));\n } catch (e) {\n reject(new Error(\"Decryption failed: \" + (e as Error).message));\n }\n });\n });\n}\n","import memoize from \"lodash/memoize\";\n\nimport { logError, logDebug } from \"@utils/logHelpers\";\n\n/**\n * Retrieves the Chrome password for decrypting cookies\n * This is only supported on macOS\n * @returns A promise that resolves to the Chrome password\n * @throws {Error} If the platform is not macOS or if password retrieval fails\n * @example\n */\nexport const getChromePassword = memoize(async (): Promise<string> => {\n if (process.platform !== \"darwin\") {\n logError(\n \"Chrome password retrieval failed\",\n new Error(\"This only works on macOS\"),\n {\n platform: process.platform,\n },\n );\n throw new Error(\"This only works on macOS\");\n }\n\n try {\n const { getChromePassword: getMacOSPassword } = await import(\n \"./macos/getChromePassword\"\n );\n const password = await getMacOSPassword();\n logDebug(\"ChromePassword\", \"Retrieved password successfully\", {\n platform: \"macOS\",\n });\n return password;\n } catch (error) {\n logError(\"Chrome password retrieval failed\", error, { platform: \"macOS\" });\n throw error;\n }\n});\n","import { flatMapAsync } from \"@utils/flatMapAsync\";\nimport {\n createTaggedLogger,\n logOperationResult,\n logError,\n} from \"@utils/logHelpers\";\n\nimport type { BrowserName } from \"../../../types/BrowserName\";\nimport type { CookieQueryStrategy } from \"../../../types/CookieQueryStrategy\";\nimport type { CookieRow } from \"../../../types/CookieRow\";\nimport type { ExportedCookie } from \"../../../types/ExportedCookie\";\nimport { getEncryptedChromeCookie } from \"../getEncryptedChromeCookie\";\nimport { listChromeProfilePaths } from \"../listChromeProfiles\";\n\nimport { decrypt } from \"./decrypt\";\nimport { getChromePassword } from \"./getChromePassword\";\n\ninterface DecryptionContext {\n file: string;\n password: string;\n}\n\nfunction getExpiryDate(expiry: number | undefined | null): Date | \"Infinity\" {\n if (typeof expiry !== \"number\" || expiry <= 0) {\n return \"Infinity\";\n }\n return new Date(expiry);\n}\n\nfunction createExportedCookie(\n domain: string,\n name: string,\n value: string,\n expiry: number | undefined | null,\n file: string,\n decrypted: boolean,\n): ExportedCookie {\n return {\n domain,\n name,\n value,\n expiry: getExpiryDate(expiry),\n meta: {\n file,\n browser: \"Chrome\",\n decrypted,\n },\n };\n}\n\n/**\n * Strategy for querying cookies from Chrome browser\n * @example\n */\nexport class ChromeCookieQueryStrategy implements CookieQueryStrategy {\n private readonly logger = createTaggedLogger(\"ChromeCookieQueryStrategy\");\n\n /**\n *\n */\n public readonly browserName: BrowserName = \"Chrome\";\n\n /**\n * Queries cookies from Chrome's cookie store\n * @param name - The name pattern to match cookies against\n * @param domain - The domain pattern to match cookies against\n * @returns A promise that resolves to an array of exported cookies\n */\n public async queryCookies(\n name: string,\n domain: string,\n ): Promise<ExportedCookie[]> {\n try {\n this.logger.info(\"Querying cookies\", { name, domain });\n\n if (process.platform !== \"darwin\") {\n this.logger.warn(\"Platform not supported\", {\n platform: process.platform,\n });\n return [];\n }\n\n const profilePaths = listChromeProfilePaths();\n const cookieFiles = profilePaths.map((path) => path);\n const password = await getChromePassword();\n\n const cookies = await flatMapAsync(\n cookieFiles,\n (file) => this.processFile(file, name, domain, password),\n [],\n );\n logOperationResult(\"Cookie query\", true, { count: cookies.length });\n return cookies;\n } catch (error) {\n logError(\"Failed to query cookies\", error, { name, domain });\n return [];\n }\n }\n\n private async processFile(\n file: string,\n name: string,\n domain: string,\n password: string,\n ): Promise<ExportedCookie[]> {\n try {\n const encryptedCookies = await getEncryptedChromeCookie({\n name,\n domain,\n file,\n });\n\n const context: DecryptionContext = { file, password };\n const results = await Promise.allSettled(\n encryptedCookies.map((cookie) => this.processCookie(cookie, context)),\n );\n\n return results\n .map((result) => (result.status === \"fulfilled\" ? result.value : null))\n .filter((cookie): cookie is ExportedCookie => cookie !== null);\n } catch (error) {\n this.logger.error(\"Failed to process cookie file\", { error, file });\n return [];\n }\n }\n\n private async processCookie(\n cookie: CookieRow,\n context: DecryptionContext,\n ): Promise<ExportedCookie> {\n try {\n const value = Buffer.isBuffer(cookie.value)\n ? cookie.value\n : Buffer.from(String(cookie.value));\n\n const decryptedValue = await decrypt(value, context.password);\n return createExportedCookie(\n cookie.domain,\n cookie.name,\n decryptedValue,\n cookie.expiry,\n context.file,\n true,\n );\n } catch (error) {\n this.logger.warn(\"Failed to decrypt cookie\", { error });\n return createExportedCookie(\n cookie.domain,\n cookie.name,\n cookie.value.toString(\"utf-8\"),\n cookie.expiry,\n context.file,\n false,\n );\n }\n }\n}\n"],"mappings":"8GA4BA,eAAsBA,EACpBC,EACAC,EACAC,EAAoB,CAAC,EACP,CACd,OAAIF,EAAM,SAAW,EACZE,GAGO,MAAM,QAAQ,IAC5BF,EAAM,IAAI,MAAOG,GAAS,CACxB,GAAI,CACF,OAAO,MAAMF,EAASE,CAAI,CAC5B,OAASC,EAAQ,CACf,OAAOF,CACT,CACF,CAAC,CACH,GACe,KAAK,CACtB,CC/CA,OAAS,cAAAG,MAAkB,KAC3B,OAAS,QAAAC,MAAY,OAErB,OAAOC,MAAU,YCHjB,OAAS,QAAAC,MAAY,OCArB,OAAOC,MAAW,eAiBX,IAAMC,EAA6C,CAAC,EAC3DD,EAAMC,EAAK,QAAQ,GAAG,EAmBf,IAAMC,EAA2BD,EAAI,KAC5C,GAAI,OAAOC,GAAS,UAAYA,EAAK,SAAW,EAC9C,MAAM,IAAI,MAAM,+CAA+C,EDvCjE,IAAAC,EASaC,EAA2BC,GACtCF,EAAAG,IAAA,KAAAH,EAAQ,GACR,UACA,sBACA,SACA,QACF,EDoBA,SAASI,EAAgBC,EAA+B,CACtD,GAAI,OAAOA,GAAS,SAClB,MAAO,GAGT,IAAMC,EAAcD,EAAK,KAAK,EAC9B,OAAIC,EAAY,SAAW,EAClB,GAGFC,EAAWD,CAAW,CAC/B,CAMA,eAAeE,GAAoC,CACjD,IAAMC,EAAW,CACfC,EAAKC,EAA0B,iBAAiB,EAChDD,EAAKC,EAA0B,mBAAmB,EAClDD,EAAKC,EAA0B,yBAAyB,CAC1D,EAEMC,EAAkB,CAAC,EACzB,QAAWC,KAAWJ,EAAU,CAC9B,IAAMK,EAAU,MAAMC,EAAKF,CAAO,EAClCD,EAAM,KAAK,GAAGE,CAAO,CACvB,CAEA,OAAAE,EAAS,gBAAiB,qBAAsB,CAC9C,MAAOJ,EAAM,OACb,MAAAA,CACF,CAAC,EACMA,CACT,CAQA,SAASK,EAAcC,EAAcC,EAA0B,CAC7D,IAAMC,EAAaF,IAAS,IACtBG,EAAMD,EACR,yFACA,sGACEE,EAASF,EAAa,CAAC,IAAID,CAAM,GAAG,EAAI,CAACD,EAAM,IAAIC,CAAM,GAAG,EAElE,MAAO,CAAE,IAAAE,EAAK,OAAAC,CAAO,CACvB,CASA,eAAeC,EACbC,EACAN,EACAC,EACsB,CACtB,GAAI,CACF,GAAM,CAAE,IAAAE,EAAK,OAAAC,CAAO,EAAIL,EAAcC,EAAMC,CAAM,EAClDH,EAAS,gBAAiB,kBAAmB,CAAE,IAAAK,EAAK,OAAAC,CAAO,CAAC,EAE5D,IAAMG,EAAO,MAAMC,EAAqD,CACtE,KAAMF,EACN,IAAAH,EACA,OAAAC,EACA,aAAeK,IAAqC,CAClD,KAAMA,EAAI,KACV,OAAQA,EAAI,SACZ,MAAOA,EAAI,gBACX,OAAQA,EAAI,WACd,EACF,CAAC,EAED,OAAAC,EAAmB,eAAgB,GAAM,CACvC,KAAMJ,EACN,MAAOC,EAAK,MACd,CAAC,EACMA,CACT,OAASI,EAAO,CACd,OAAAC,EAAS,6BAA8BD,EAAO,CAAE,KAAML,CAAW,CAAC,EAC3D,CAAC,CACV,CACF,CAUA,eAAsBO,EAAyB,CAC7C,KAAAb,EACA,OAAAC,EACA,KAAAa,CACF,EAAoD,CAClD,IAAMC,EACJ,OAAOD,GAAS,UAAYA,EAAK,OAAS,EACtC,CAACA,CAAI,EACL,MAAMxB,EAAe,EAE3B,GAAIyB,EAAY,SAAW,EACzB,OAAAjB,EAAS,gBAAiB,uBAAuB,EAC1C,CAAC,EAGV,IAAMkB,EAAuB,CAAC,EAC9B,QAAWV,KAAcS,EAAa,CACpC,GAAI,CAAC7B,EAAgBoB,CAAU,EAAG,CAChCR,EAAS,gBAAiB,iCAAkC,CAC1D,KAAMQ,CACR,CAAC,EACD,QACF,CAEA,IAAMW,EAAU,MAAMZ,EAAkBC,EAAYN,EAAMC,CAAM,EAChEe,EAAQ,KAAK,GAAGC,CAAO,CACzB,CAEA,OAAAnB,EAAS,gBAAiB,iBAAkB,CAAE,aAAckB,EAAQ,MAAO,CAAC,EACrEA,CACT,CG1JA,IAAME,EAAUC,EAAO,QAAQ,oBAAoB,EAwB5C,SAASC,GAAmC,CACjD,IAAMC,EAAkBC,EAAK,eAAgB,CAC3C,IAAKC,EACL,SAAU,EACZ,CAAC,EAED,OAAAL,EAAQ,MAAM,sBAAuBG,CAAK,EACnCA,CACT,CC1CA,OAAS,oBAAAG,EAAkB,UAAAC,MAAc,SAEzC,OAAOC,MAAa,iBAOpB,IAAMC,EAAkBD,EACrBE,GAEGA,EAAM,QAAU,GAChBA,EAAM,CAAC,IAAM,KACbA,EAAM,CAAC,IAAM,IACbA,EAAM,CAAC,IAAM,GAGNA,EAAM,MAAM,CAAC,EAEfA,EAERA,GAAkBA,EAAM,SAAS,KAAK,CACzC,EAOMC,EAAgBH,EACnBI,GAA8B,CAC7B,IAAMC,EAAUD,EAAUA,EAAU,OAAS,CAAC,EAC9C,OAAIC,GAAWA,GAAW,GACjBD,EAAU,MAAM,EAAG,CAACC,CAAO,EAE7BD,CACT,EACCA,GAAsBA,EAAU,SAAS,KAAK,CACjD,EAOA,SAASE,EAAaC,EAA+B,CA/CrD,IAAAC,EAgDE,IAAMC,EAAkB,CACtB,aACA,cACA,eACA,+BACF,EAEA,QAAWC,KAAWD,EAAiB,CACrC,IAAME,EAAQJ,EAAc,MAAMG,CAAO,EACnCR,GAAQM,EAAAG,GAAA,YAAAA,EAAQ,KAAR,KAAAH,EAAc,GAC5B,GAAIN,EAAM,OAAS,EACjB,OAAOA,CAEX,CACA,OAAOK,CACT,CAUA,eAAsBK,EACpBC,EACAC,EACiB,CACjB,GAAI,OAAOA,GAAa,SACtB,MAAM,IAAI,MAAM,2BAA2B,EAE7C,GAAI,CAAC,OAAO,SAASD,CAAc,EACjC,MAAM,IAAI,MAAM,gCAAgC,EAGlD,OAAO,IAAI,QAAQ,CAACE,EAASC,IAAW,CACtCjB,EAAOe,EAAU,YAAa,KAAM,GAAI,OAAQ,CAACG,EAAOC,IAAQ,CAC9D,GAAI,CACF,GAAID,EAAO,CACTD,EAAO,IAAI,MAAM,yBAA2BC,EAAM,OAAO,CAAC,EAC1D,MACF,CAEA,IAAMf,EAAQD,EAAgBY,CAAc,EAC5C,GAAIX,EAAM,OAAS,KAAO,EAAG,CAC3Bc,EAAO,IAAI,MAAM,+CAA+C,CAAC,EACjE,MACF,CAGA,IAAMG,EAAK,OAAO,MAAM,GAAI,GAAG,EACzBC,EAAWtB,EAAiB,cAAeoB,EAAKC,CAAE,EACxDC,EAAS,eAAe,EAAK,EAG7B,IAAIhB,EAAYgB,EAAS,OAAOlB,CAAK,EACrC,GAAI,CACFkB,EAAS,MAAM,CACjB,OAASC,EAAG,CACVL,EACE,IAAI,MAAM,kCAAqCK,EAAY,OAAO,CACpE,EACA,MACF,CAEAjB,EAAYD,EAAcC,CAAS,EACnC,IAAMG,EAAgBH,EAAU,SAAS,MAAM,EAC/CW,EAAQT,EAAaC,CAAa,CAAC,CACrC,OAASc,EAAG,CACVL,EAAO,IAAI,MAAM,sBAAyBK,EAAY,OAAO,CAAC,CAChE,CACF,CAAC,CACH,CAAC,CACH,CC1HA,OAAOC,MAAa,iBAWb,IAAMC,EAAoBC,EAAQ,SAA6B,CACpE,GAAI,QAAQ,WAAa,SACvB,MAAAC,EACE,mCACA,IAAI,MAAM,0BAA0B,EACpC,CACE,SAAU,QAAQ,QACpB,CACF,EACM,IAAI,MAAM,0BAA0B,EAG5C,GAAI,CACF,GAAM,CAAE,kBAAmBC,CAAiB,EAAI,KAAM,QACpD,iCACF,EACMC,EAAW,MAAMD,EAAiB,EACxC,OAAAE,EAAS,iBAAkB,kCAAmC,CAC5D,SAAU,OACZ,CAAC,EACMD,CACT,OAASE,EAAO,CACd,MAAAJ,EAAS,mCAAoCI,EAAO,CAAE,SAAU,OAAQ,CAAC,EACnEA,CACR,CACF,CAAC,ECdD,SAASC,EAAcC,EAAsD,CAC3E,OAAI,OAAOA,GAAW,UAAYA,GAAU,EACnC,WAEF,IAAI,KAAKA,CAAM,CACxB,CAEA,SAASC,EACPC,EACAC,EACAC,EACAJ,EACAK,EACAC,EACgB,CAChB,MAAO,CACL,OAAAJ,EACA,KAAAC,EACA,MAAAC,EACA,OAAQL,EAAcC,CAAM,EAC5B,KAAM,CACJ,KAAAK,EACA,QAAS,SACT,UAAAC,CACF,CACF,CACF,CAMO,IAAMC,EAAN,KAA+D,CAA/D,cACL,KAAiB,OAASC,EAAmB,2BAA2B,EAKxE,KAAgB,YAA2B,SAQ3C,MAAa,aACXL,EACAD,EAC2B,CAC3B,GAAI,CAGF,GAFA,KAAK,OAAO,KAAK,mBAAoB,CAAE,KAAAC,EAAM,OAAAD,CAAO,CAAC,EAEjD,QAAQ,WAAa,SACvB,YAAK,OAAO,KAAK,yBAA0B,CACzC,SAAU,QAAQ,QACpB,CAAC,EACM,CAAC,EAIV,IAAMO,EADeC,EAAuB,EACX,IAAKC,GAASA,CAAI,EAC7CC,EAAW,MAAMC,EAAkB,EAEnCC,EAAU,MAAMC,EACpBN,EACCJ,GAAS,KAAK,YAAYA,EAAMF,EAAMD,EAAQU,CAAQ,EACvD,CAAC,CACH,EACA,OAAAI,EAAmB,eAAgB,GAAM,CAAE,MAAOF,EAAQ,MAAO,CAAC,EAC3DA,CACT,OAASG,EAAO,CACd,OAAAC,EAAS,0BAA2BD,EAAO,CAAE,KAAAd,EAAM,OAAAD,CAAO,CAAC,EACpD,CAAC,CACV,CACF,CAEA,MAAc,YACZG,EACAF,EACAD,EACAU,EAC2B,CAC3B,GAAI,CACF,IAAMO,EAAmB,MAAMC,EAAyB,CACtD,KAAAjB,EACA,OAAAD,EACA,KAAAG,CACF,CAAC,EAEKgB,EAA6B,CAAE,KAAAhB,EAAM,SAAAO,CAAS,EAKpD,OAJgB,MAAM,QAAQ,WAC5BO,EAAiB,IAAKG,GAAW,KAAK,cAAcA,EAAQD,CAAO,CAAC,CACtE,GAGG,IAAKE,GAAYA,EAAO,SAAW,YAAcA,EAAO,MAAQ,IAAK,EACrE,OAAQD,GAAqCA,IAAW,IAAI,CACjE,OAASL,EAAO,CACd,YAAK,OAAO,MAAM,gCAAiC,CAAE,MAAAA,EAAO,KAAAZ,CAAK,CAAC,EAC3D,CAAC,CACV,CACF,CAEA,MAAc,cACZiB,EACAD,EACyB,CACzB,GAAI,CACF,IAAMjB,EAAQ,OAAO,SAASkB,EAAO,KAAK,EACtCA,EAAO,MACP,OAAO,KAAK,OAAOA,EAAO,KAAK,CAAC,EAE9BE,EAAiB,MAAMC,EAAQrB,EAAOiB,EAAQ,QAAQ,EAC5D,OAAOpB,EACLqB,EAAO,OACPA,EAAO,KACPE,EACAF,EAAO,OACPD,EAAQ,KACR,EACF,CACF,OAASJ,EAAO,CACd,YAAK,OAAO,KAAK,2BAA4B,CAAE,MAAAA,CAAM,CAAC,EAC/ChB,EACLqB,EAAO,OACPA,EAAO,KACPA,EAAO,MAAM,SAAS,OAAO,EAC7BA,EAAO,OACPD,EAAQ,KACR,EACF,CACF,CACF,CACF","names":["flatMapAsync","array","callback","defaultValue","item","_error","existsSync","join","glob","join","merge","env","HOME","_a","chromeApplicationSupport","join","HOME","isValidFilePath","path","trimmedPath","existsSync","getCookieFiles","patterns","join","chromeApplicationSupport","files","pattern","matches","glob","logDebug","buildSqlQuery","name","domain","isWildcard","sql","params","processCookieFile","cookieFile","rows","querySqliteThenTransform","row","logOperationResult","error","logError","getEncryptedChromeCookie","file","cookieFiles","results","cookies","consola","logger_default","listChromeProfilePaths","files","sync","chromeApplicationSupport","createDecipheriv","pbkdf2","memoize","removeV10Prefix","value","removePadding","decrypted","padding","extractValue","decodedString","_a","cleanupPatterns","pattern","match","decrypt","encryptedValue","password","resolve","reject","error","key","iv","decipher","e","memoize","getChromePassword","memoize","logError","getMacOSPassword","password","logDebug","error","getExpiryDate","expiry","createExportedCookie","domain","name","value","file","decrypted","ChromeCookieQueryStrategy","createTaggedLogger","cookieFiles","listChromeProfilePaths","path","password","getChromePassword","cookies","flatMapAsync","logOperationResult","error","logError","encryptedCookies","getEncryptedChromeCookie","context","cookie","result","decryptedValue","decrypt"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{b as i}from"./chunk-DR2EQC4R.js";import{a as p}from"./chunk-BKU5PKJ5.js";import{a as t}from"./chunk-TUGIEFXM.js";async function s(r){let o=[new i,new p];return(await Promise.allSettled(o.map(e=>e.queryCookies(r.name,r.domain)))).filter(e=>e.status==="fulfilled").flatMap(e=>e.value)}async function m(r){try{return await s(r)}catch(o){return t.warn("Error querying cookies:",o instanceof Error?o.message:String(o)),[]}}var l=m;export{m as a,l as b};
|
|
2
|
+
//# sourceMappingURL=chunk-FZ5IFH4R.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/cookies/queryCookies.ts","../src/core/cookies/getCookie.ts"],"sourcesContent":["import type { CookieSpec } from \"../../types/CookieSpec\";\nimport type { ExportedCookie } from \"../../types/ExportedCookie\";\nimport { ChromeCookieQueryStrategy } from \"../browsers/chrome/ChromeCookieQueryStrategy\";\nimport { FirefoxCookieQueryStrategy } from \"../browsers/firefox/FirefoxCookieQueryStrategy\";\n\n/**\n * Queries cookies from both Chrome and Firefox browsers.\n * @param cookieSpec - The cookie specification containing search criteria\n * @param cookieSpec.name - The name of the cookie to search for\n * @param cookieSpec.domain - (optional) The domain to filter cookies by\n * @returns An array of ExportedCookie objects that match the specification\n * @example\n * ```typescript\n * const cookies = await queryCookies({\n * name: 'sessionId',\n * domain: 'example.com'\n * });\n * ```\n */\nexport async function queryCookies(\n cookieSpec: CookieSpec,\n): Promise<ExportedCookie[]> {\n const strategies = [\n new ChromeCookieQueryStrategy(),\n new FirefoxCookieQueryStrategy(),\n ];\n\n const results = await Promise.allSettled(\n strategies.map((strategy) =>\n strategy.queryCookies(cookieSpec.name, cookieSpec.domain),\n ),\n );\n\n return results\n .filter(\n (result): result is PromiseFulfilledResult<ExportedCookie[]> =>\n result.status === \"fulfilled\",\n )\n .flatMap((result) => result.value);\n}\n\n/**\n * Default export of the queryCookies function.\n * @example\n * ```typescript\n * import { queryCookies } from './queryCookies';\n * const cookies = await queryCookies({\n * name: 'sessionId',\n * domain: 'example.com'\n * });\n * ```\n */\nexport default queryCookies;\n","import type { CookieSpec } from \"../../types/CookieSpec\";\nimport type { ExportedCookie } from \"../../types/ExportedCookie\";\nimport logger from \"../../utils/logger\";\n\nimport { queryCookies } from \"./queryCookies\";\n\n/**\n * Retrieves browser cookies that match the specified cookie name and domain criteria.\n * This function provides a way to search and filter cookies based on given specifications.\n * @param cookieSpec - The cookie specification containing search criteria\n * @param cookieSpec.name - The name of the cookie to search for\n * @param cookieSpec.domain - (optional) The domain to filter cookies by\n * @returns An array of ExportedCookie objects that match the specification\n * @throws Will catch and handle any errors during cookie querying, logging a warning\n * to the console without throwing to the caller\n * @example\n * ```typescript\n * // Get all cookies named \"sessionId\"\n * const cookies = await getCookie({ name: \"sessionId\" });\n * // Returns: [{ name: \"sessionId\", value: \"abc123\", domain: \".example.com\", ... }]\n *\n * // Get cookies named \"userPref\" from specific domain\n * const domainCookies = await getCookie({\n * name: \"userPref\",\n * domain: \"example.com\"\n * });\n * // Returns: [{ name: \"userPref\", value: \"darkMode\", domain: \"example.com\", ... }]\n * ```\n */\nexport async function getCookie(\n cookieSpec: CookieSpec,\n): Promise<ExportedCookie[]> {\n try {\n const cookies = await queryCookies(cookieSpec);\n return cookies;\n } catch (error: unknown) {\n logger.warn(\n \"Error querying cookies:\",\n error instanceof Error ? error.message : String(error),\n );\n return [];\n }\n}\n\n/**\n * Default export of the getCookie function.\n * @example\n * ```typescript\n * import getCookie from './getCookie';\n * const authCookies = await getCookie({\n * name: \"auth-token\",\n * domain: \"api.example.com\"\n * });\n * ```\n */\nexport default getCookie;\n"],"mappings":"wHAmBA,eAAsBA,EACpBC,EAC2B,CAC3B,IAAMC,EAAa,CACjB,IAAIC,EACJ,IAAIC,CACN,EAQA,OANgB,MAAM,QAAQ,WAC5BF,EAAW,IAAKG,GACdA,EAAS,aAAaJ,EAAW,KAAMA,EAAW,MAAM,CAC1D,CACF,GAGG,OACEK,GACCA,EAAO,SAAW,WACtB,EACC,QAASA,GAAWA,EAAO,KAAK,CACrC,CCVA,eAAsBC,EACpBC,EAC2B,CAC3B,GAAI,CAEF,OADgB,MAAMC,EAAaD,CAAU,CAE/C,OAASE,EAAgB,CACvB,OAAAC,EAAO,KACL,0BACAD,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CACvD,EACO,CAAC,CACV,CACF,CAaA,IAAOE,EAAQL","names":["queryCookies","cookieSpec","strategies","ChromeCookieQueryStrategy","FirefoxCookieQueryStrategy","strategy","result","getCookie","cookieSpec","queryCookies","error","logger_default","getCookie_default"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{groupBy as a}from"lodash";function f(o,p={}){let{format:n="merged",showFilePaths:m=!0,separator:i="; "}=p;if(o.length===0)return n==="merged"?"":[];if(n==="merged")return o.map(e=>e.value).join(i);let s=a(o,e=>{var t,r;return(r=(t=e.meta)==null?void 0:t.file)!=null?r:"unknown"});return Object.entries(s).map(([e,t])=>{let r=t.map(u=>u.value).join(i);return m?`${e}: ${r}`:r})}export{f as a};
|
|
2
|
+
//# sourceMappingURL=chunk-S5FU4HO5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/cookies/renderCookies.ts"],"sourcesContent":["import { groupBy } from \"lodash\";\n\nimport type { RenderOptions } from \"../../types/CookieRender\";\nimport type { ExportedCookie } from \"../../types/ExportedCookie\";\n\n/**\n * Renders cookies as a string or array of strings based on the provided format option.\n * Supports merged format for single string output or grouped format for file-based grouping.\n * @param cookies - The cookies to render\n * @param options - Options for rendering\n * @param options.format - The output format ('merged' or 'grouped')\n * @param options.showFilePaths - Whether to include file paths in grouped output\n * @param options.separator - Custom separator for cookie values\n * @returns A string for merged format, or array of strings for grouped format\n * @example\n * ```typescript\n * // Merged format (default)\n * const cookies = [\n * { value: 'sessionId=abc123' },\n * { value: 'theme=dark' }\n * ];\n * renderCookies(cookies);\n * // Returns: \"sessionId=abc123; theme=dark\"\n *\n * // Grouped format with file paths\n * const groupedCookies = [\n * { value: 'sessionId=abc123', meta: { file: 'auth.ts' } },\n * { value: 'theme=dark', meta: { file: 'preferences.ts' } }\n * ];\n * renderCookies(groupedCookies, { format: 'grouped', showFilePaths: true });\n * // Returns: [\"auth.ts: sessionId=abc123\", \"preferences.ts: theme=dark\"]\n * ```\n */\nexport function renderCookies(\n cookies: ExportedCookie[],\n options: RenderOptions = {},\n): string | string[] {\n const { format = \"merged\", showFilePaths = true, separator = \"; \" } = options;\n\n if (cookies.length === 0) {\n return format === \"merged\" ? \"\" : [];\n }\n\n if (format === \"merged\") {\n return cookies.map((c) => c.value).join(separator);\n }\n\n const groupedByFile = groupBy(cookies, (c) => c.meta?.file ?? \"unknown\");\n return Object.entries(groupedByFile).map(([file, fileCookies]) => {\n const values = fileCookies.map((c) => c.value).join(separator);\n return showFilePaths ? `${file}: ${values}` : values;\n });\n}\n"],"mappings":"AAAA,OAAS,WAAAA,MAAe,SAiCjB,SAASC,EACdC,EACAC,EAAyB,CAAC,EACP,CACnB,GAAM,CAAE,OAAAC,EAAS,SAAU,cAAAC,EAAgB,GAAM,UAAAC,EAAY,IAAK,EAAIH,EAEtE,GAAID,EAAQ,SAAW,EACrB,OAAOE,IAAW,SAAW,GAAK,CAAC,EAGrC,GAAIA,IAAW,SACb,OAAOF,EAAQ,IAAKK,GAAMA,EAAE,KAAK,EAAE,KAAKD,CAAS,EAGnD,IAAME,EAAgBR,EAAQE,EAAUK,GAAG,CA/C7C,IAAAE,EAAAC,EA+CgD,OAAAA,GAAAD,EAAAF,EAAE,OAAF,YAAAE,EAAQ,OAAR,KAAAC,EAAgB,UAAS,EACvE,OAAO,OAAO,QAAQF,CAAa,EAAE,IAAI,CAAC,CAACG,EAAMC,CAAW,IAAM,CAChE,IAAMC,EAASD,EAAY,IAAKL,GAAMA,EAAE,KAAK,EAAE,KAAKD,CAAS,EAC7D,OAAOD,EAAgB,GAAGM,CAAI,KAAKE,CAAM,GAAKA,CAChD,CAAC,CACH","names":["groupBy","renderCookies","cookies","options","format","showFilePaths","separator","c","groupedByFile","_a","_b","file","fileCookies","values"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{createConsola as s}from"consola";var a=s({fancy:!0,formatOptions:{showLogLevel:!0,colors:!0,date:!0,compact:!1,columns:process.stdout.columns||80},level:process.env.LOG_LEVEL==="debug"?5:3}),t=a;function u(n,o,e){let g=`${o?"\u2705":"\u274C"} ${n} ${o?"succeeded":"failed"}`;o?t.success(g,e):t.error(g,e)}function l(n,o,e){let r={...e!=null?e:{},error:o instanceof Error?{name:o.name,message:o.message,stack:o.stack}:o};t.error(n,r)}function f(n,o,e){t.withTag(n).debug(o,e)}function m(n){return t.withTag(n)}function d(n,o,e){t.withTag(n).warn(o,e)}export{t as a,u as b,l as c,f as d,m as e,d as f};
|
|
2
|
+
//# sourceMappingURL=chunk-TUGIEFXM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/logger.ts","../src/utils/logHelpers.ts"],"sourcesContent":["import { createConsola } from \"consola\";\n\n/**\n * Standard log levels and their usage:\n * - debug: Detailed information for debugging\n * - info: General operational information\n * - success: Successful operations\n * - warn: Warning conditions\n * - error: Error conditions that might still allow the app to continue\n * - fatal: Critical errors that prevent the app from continuing\n */\nconst consola = createConsola({\n fancy: true,\n formatOptions: {\n showLogLevel: true,\n colors: true,\n date: true,\n compact: false,\n columns: process.stdout.columns || 80,\n },\n level: process.env.LOG_LEVEL === \"debug\" ? 5 : 3,\n});\n\n/**\n * Configured consola logger instance with standardized formatting and colored output.\n * Used for consistent logging throughout the application.\n * @example\n * // Basic usage\n * logger.info('Operation started');\n * logger.success('Task completed');\n * logger.error('Failed to process', error);\n *\n * // Tagged logging for module context\n * const moduleLogger = logger.withTag('ModuleName');\n * moduleLogger.info('Module specific log');\n *\n * // Structured logging\n * logger.info('User action', {\n * userId: '123',\n * action: 'login',\n * timestamp: new Date()\n * });\n *\n * // Error logging with full context\n * logger.error('Operation failed', {\n * error: error,\n * context: 'operation name',\n * input: data\n * });\n */\nexport default consola;\n","import logger from \"./logger\";\n\n/**\n * Helper functions for common logging patterns.\n * @module\n * @example\n * ```typescript\n * import { logOperationResult, logError } from './logHelpers';\n *\n * try {\n * const result = await someOperation();\n * logOperationResult('Operation', true, { data: result });\n * } catch (error) {\n * logError('Operation failed', error);\n * }\n * ```\n */\n\ninterface OperationContext {\n [key: string]: unknown;\n}\n\n/**\n * Logs the result of an operation with consistent formatting.\n * @param operation - Name of the operation.\n * @param success - Whether the operation succeeded.\n * @param [context] - Additional context about the operation.\n * @example\n * ```typescript\n * logOperationResult('Database Backup', true, { size: '1.2GB' });\n * // ✅ Database Backup succeeded\n *\n * logOperationResult('File Upload', false, { error: 'Network timeout' });\n * // ❌ File Upload failed\n * ```\n */\nexport function logOperationResult(\n operation: string,\n success: boolean,\n context?: OperationContext,\n): void {\n const icon = success ? \"✅\" : \"❌\";\n const message = `${icon} ${operation} ${success ? \"succeeded\" : \"failed\"}`;\n\n if (success) {\n logger.success(message, context);\n } else {\n logger.error(message, context);\n }\n}\n\n/**\n * Logs an error with consistent formatting and context.\n * @param message - Error message to display.\n * @param error - Error object or error information.\n * @param [context] - Additional context about the error.\n * @example\n * ```typescript\n * try {\n * throw new Error('Connection failed');\n * } catch (error) {\n * logError('Database error', error, { retries: 3 });\n * }\n * ```\n */\nexport function logError(\n message: string,\n error: unknown,\n context?: OperationContext,\n): void {\n const errorContext = {\n ...(context ?? {}),\n error:\n error instanceof Error\n ? {\n name: error.name,\n message: error.message,\n stack: error.stack,\n }\n : error,\n };\n\n logger.error(message, errorContext);\n}\n\n/**\n * Logs debug information with consistent formatting.\n * @param component - Component or module name.\n * @param message - Debug message to log.\n * @param [data] - Optional debug data to include.\n * @example\n * ```typescript\n * logDebug('AuthService', 'Token refresh started', { userId: '123' });\n * ```\n */\nexport function logDebug(\n component: string,\n message: string,\n data?: unknown,\n): void {\n const componentLogger = logger.withTag(component);\n componentLogger.debug(message, data);\n}\n\n/**\n * Creates a tagged logger with consistent naming.\n * @param component - Component or module name.\n * @returns A tagged logger instance.\n * @example\n * ```typescript\n * const dbLogger = createTaggedLogger('Database');\n * dbLogger.info('Connection established');\n * ```\n */\nexport function createTaggedLogger(\n component: string,\n): ReturnType<typeof logger.withTag> {\n return logger.withTag(component);\n}\n\n/**\n * Logs a warning with consistent formatting.\n * @param component - Component or module name.\n * @param message - Warning message to display.\n * @param [context] - Additional context about the warning.\n * @example\n * ```typescript\n * logWarn('Cache', 'Cache miss', { key: 'user-123' });\n * ```\n */\nexport function logWarn(\n component: string,\n message: string,\n context?: OperationContext,\n): void {\n const componentLogger = logger.withTag(component);\n componentLogger.warn(message, context);\n}\n\n// Re-export the base logger for direct usage\n/**\n * Re-export of the base logger for direct usage.\n */\nexport { default as logger } from \"./logger\";\n"],"mappings":"AAAA,OAAS,iBAAAA,MAAqB,UAW9B,IAAMC,EAAUD,EAAc,CAC5B,MAAO,GACP,cAAe,CACb,aAAc,GACd,OAAQ,GACR,KAAM,GACN,QAAS,GACT,QAAS,QAAQ,OAAO,SAAW,EACrC,EACA,MAAO,QAAQ,IAAI,YAAc,QAAU,EAAI,CACjD,CAAC,EA6BME,EAAQD,ECdR,SAASE,EACdC,EACAC,EACAC,EACM,CAEN,IAAMC,EAAU,GADHF,EAAU,SAAM,QACN,IAAID,CAAS,IAAIC,EAAU,YAAc,QAAQ,GAEpEA,EACFG,EAAO,QAAQD,EAASD,CAAO,EAE/BE,EAAO,MAAMD,EAASD,CAAO,CAEjC,CAgBO,SAASG,EACdF,EACAG,EACAJ,EACM,CACN,IAAMK,EAAe,CACnB,GAAIL,GAAA,KAAAA,EAAW,CAAC,EAChB,MACEI,aAAiB,MACb,CACE,KAAMA,EAAM,KACZ,QAASA,EAAM,QACf,MAAOA,EAAM,KACf,EACAA,CACR,EAEAF,EAAO,MAAMD,EAASI,CAAY,CACpC,CAYO,SAASC,EACdC,EACAN,EACAO,EACM,CACkBN,EAAO,QAAQK,CAAS,EAChC,MAAMN,EAASO,CAAI,CACrC,CAYO,SAASC,EACdF,EACmC,CACnC,OAAOL,EAAO,QAAQK,CAAS,CACjC,CAYO,SAASG,EACdH,EACAN,EACAD,EACM,CACkBE,EAAO,QAAQK,CAAS,EAChC,KAAKN,EAASD,CAAO,CACvC","names":["createConsola","consola","logger_default","logOperationResult","operation","success","context","message","logger_default","logError","error","errorContext","logDebug","component","data","createTaggedLogger","logWarn"]}
|
package/dist/cli/cli.cjs
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";var gn=Object.create;var or=Object.defineProperty;var wn=Object.getOwnPropertyDescriptor;var yn=Object.getOwnPropertyNames;var bn=Object.getPrototypeOf,En=Object.prototype.hasOwnProperty;var Ni=i=>{throw TypeError(i)};var xn=(i,t,e)=>t in i?or(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var nr=(i,t)=>()=>(i&&(t=i(i=0)),t);var $=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),Sn=(i,t)=>{for(var e in t)or(i,e,{get:t[e],enumerable:!0})},kn=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of yn(t))!En.call(i,s)&&s!==e&&or(i,s,{get:()=>t[s],enumerable:!(r=wn(t,s))||r.enumerable});return i};var ct=(i,t,e)=>(e=i!=null?gn(bn(i)):{},kn(t||!i||!i.__esModule?or(e,"default",{value:i,enumerable:!0}):e,i));var u=(i,t,e)=>xn(i,typeof t!="symbol"?t+"":t,e),Jr=(i,t,e)=>t.has(i)||Ni("Cannot "+e);var a=(i,t,e)=>(Jr(i,t,"read from private field"),e?e.call(i):t.get(i)),w=(i,t,e)=>t.has(i)?Ni("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(i):t.set(i,e),p=(i,t,e,r)=>(Jr(i,t,"write to private field"),r?r.call(i,e):t.set(i,e),e),b=(i,t,e)=>(Jr(i,t,"access private method"),e);var ji,Cn,C,qt=nr(()=>{"use strict";ji=require("consola"),Cn=(0,ji.createConsola)({fancy:!0,formatOptions:{showLogLevel:!0,colors:!0,date:!0,compact:!1,columns:process.stdout.columns||80},level:process.env.LOG_LEVEL==="debug"?5:3}),C=Cn});function hr(i,t,e){let s=`${t?"\u2705":"\u274C"} ${i} ${t?"succeeded":"failed"}`;t?C.success(s,e):C.error(s,e)}function M(i,t,e){let r={...e!=null?e:{},error:t instanceof Error?{name:t.name,message:t.message,stack:t.stack}:t};C.error(i,r)}function ft(i,t,e){C.withTag(i).debug(t,e)}function _i(i){return C.withTag(i)}function cr(i,t,e){C.withTag(i).warn(t,e)}var Ot=nr(()=>{"use strict";qt();qt()});var ut=$(ur=>{"use strict";ur.getBooleanOption=(i,t)=>{let e=!1;if(t in i&&typeof(e=i[t])!="boolean")throw new TypeError(`Expected the "${t}" option to be a boolean`);return e};ur.cppdb=Symbol();ur.inspect=Symbol.for("nodejs.util.inspect.custom")});var Zr=$((oh,zi)=>{"use strict";var Yr={value:"SqliteError",writable:!0,enumerable:!1,configurable:!0};function Ut(i,t){if(new.target!==Ut)return new Ut(i,t);if(typeof t!="string")throw new TypeError("Expected second argument to be a string");Error.call(this,i),Yr.value=""+i,Object.defineProperty(this,"message",Yr),Error.captureStackTrace(this,Ut),this.code=t}Object.setPrototypeOf(Ut,Error);Object.setPrototypeOf(Ut.prototype,Error.prototype);Object.defineProperty(Ut.prototype,"name",Yr);zi.exports=Ut});var Qi=$((nh,Gi)=>{"use strict";var pr=require("path").sep||"/";Gi.exports=vn;function vn(i){if(typeof i!="string"||i.length<=7||i.substring(0,7)!="file://")throw new TypeError("must pass in a file:// URI to convert to a file path");var t=decodeURI(i.substring(7)),e=t.indexOf("/"),r=t.substring(0,e),s=t.substring(e+1);return r=="localhost"&&(r=""),r&&(r=pr+pr+r),s=s.replace(/^(.+)\|/,"$1:"),pr=="\\"&&(s=s.replace(/\//g,"\\")),/^.+\:/.test(s)||(s=pr+s),r+s}});var Ji=$((re,Ki)=>{"use strict";var Xr=require("fs"),mr=require("path"),Tn=Qi(),dr=mr.join,On=mr.dirname,Hi=Xr.accessSync&&function(i){try{Xr.accessSync(i)}catch(t){return!1}return!0}||Xr.existsSync||mr.existsSync,Vi={arrow:process.env.NODE_BINDINGS_ARROW||" \u2192 ",compiled:process.env.NODE_BINDINGS_COMPILED_DIR||"compiled",platform:process.platform,arch:process.arch,nodePreGyp:"node-v"+process.versions.modules+"-"+process.platform+"-"+process.arch,version:process.versions.node,bindings:"bindings.node",try:[["module_root","build","bindings"],["module_root","build","Debug","bindings"],["module_root","build","Release","bindings"],["module_root","out","Debug","bindings"],["module_root","Debug","bindings"],["module_root","out","Release","bindings"],["module_root","Release","bindings"],["module_root","build","default","bindings"],["module_root","compiled","version","platform","arch","bindings"],["module_root","addon-build","release","install-root","bindings"],["module_root","addon-build","debug","install-root","bindings"],["module_root","addon-build","default","install-root","bindings"],["module_root","lib","binding","nodePreGyp","bindings"]]};function Rn(i){typeof i=="string"?i={bindings:i}:i||(i={}),Object.keys(Vi).map(function(l){l in i||(i[l]=Vi[l])}),i.module_root||(i.module_root=re.getRoot(re.getFileName())),mr.extname(i.bindings)!=".node"&&(i.bindings+=".node");for(var t=typeof __webpack_require__=="function"?__non_webpack_require__:require,e=[],r=0,s=i.try.length,o,n,h;r<s;r++){o=dr.apply(null,i.try[r].map(function(l){return i[l]||l})),e.push(o);try{return n=i.path?t.resolve(o):t(o),i.path||(n.path=o),n}catch(l){if(l.code!=="MODULE_NOT_FOUND"&&l.code!=="QUALIFIED_PATH_RESOLUTION_FAILED"&&!/not find/i.test(l.message))throw l}}throw h=new Error(`Could not locate the bindings file. Tried:
|
|
3
|
+
`+e.map(function(l){return i.arrow+l}).join(`
|
|
4
|
+
`)),h.tries=e,h}Ki.exports=re=Rn;re.getFileName=function(t){var e=Error.prepareStackTrace,r=Error.stackTraceLimit,s={},o;Error.stackTraceLimit=10,Error.prepareStackTrace=function(h,l){for(var c=0,f=l.length;c<f;c++)if(o=l[c].getFileName(),o!==__filename)if(t){if(o!==t)return}else return},Error.captureStackTrace(s),s.stack,Error.prepareStackTrace=e,Error.stackTraceLimit=r;var n="file://";return o.indexOf(n)===0&&(o=Tn(o)),o};re.getRoot=function(t){for(var e=On(t),r;;){if(e==="."&&(e=process.cwd()),Hi(dr(e,"package.json"))||Hi(dr(e,"node_modules")))return e;if(r===e)throw new Error('Could not find module root given file: "'+t+'". Do you have a `package.json` file? ');r=e,e=dr(e,"..")}}});var Yi=$(Rt=>{"use strict";var{cppdb:st}=ut();Rt.prepare=function(t){return this[st].prepare(t,this,!1)};Rt.exec=function(t){return this[st].exec(t),this};Rt.close=function(){return this[st].close(),this};Rt.loadExtension=function(...t){return this[st].loadExtension(...t),this};Rt.defaultSafeIntegers=function(...t){return this[st].defaultSafeIntegers(...t),this};Rt.unsafeMode=function(...t){return this[st].unsafeMode(...t),this};Rt.getters={name:{get:function(){return this[st].name},enumerable:!0},open:{get:function(){return this[st].open},enumerable:!0},inTransaction:{get:function(){return this[st].inTransaction},enumerable:!0},readonly:{get:function(){return this[st].readonly},enumerable:!0},memory:{get:function(){return this[st].memory},enumerable:!0}}});var ts=$((lh,Xi)=>{"use strict";var{cppdb:Dn}=ut(),Zi=new WeakMap;Xi.exports=function(t){if(typeof t!="function")throw new TypeError("Expected first argument to be a function");let e=this[Dn],r=Pn(e,this),{apply:s}=Function.prototype,o={default:{value:gr(s,t,e,r.default)},deferred:{value:gr(s,t,e,r.deferred)},immediate:{value:gr(s,t,e,r.immediate)},exclusive:{value:gr(s,t,e,r.exclusive)},database:{value:this,enumerable:!0}};return Object.defineProperties(o.default.value,o),Object.defineProperties(o.deferred.value,o),Object.defineProperties(o.immediate.value,o),Object.defineProperties(o.exclusive.value,o),o.default.value};var Pn=(i,t)=>{let e=Zi.get(i);if(!e){let r={commit:i.prepare("COMMIT",t,!1),rollback:i.prepare("ROLLBACK",t,!1),savepoint:i.prepare("SAVEPOINT ` _bs3. `",t,!1),release:i.prepare("RELEASE ` _bs3. `",t,!1),rollbackTo:i.prepare("ROLLBACK TO ` _bs3. `",t,!1)};Zi.set(i,e={default:Object.assign({begin:i.prepare("BEGIN",t,!1)},r),deferred:Object.assign({begin:i.prepare("BEGIN DEFERRED",t,!1)},r),immediate:Object.assign({begin:i.prepare("BEGIN IMMEDIATE",t,!1)},r),exclusive:Object.assign({begin:i.prepare("BEGIN EXCLUSIVE",t,!1)},r)})}return e},gr=(i,t,e,{begin:r,commit:s,rollback:o,savepoint:n,release:h,rollbackTo:l})=>function(){let f,d,m;e.inTransaction?(f=n,d=h,m=l):(f=r,d=s,m=o),f.run();try{let y=i.call(t,this,arguments);return d.run(),y}catch(y){throw e.inTransaction&&(m.run(),m!==o&&d.run()),y}}});var rs=$((hh,es)=>{"use strict";var{getBooleanOption:An,cppdb:Mn}=ut();es.exports=function(t,e){if(e==null&&(e={}),typeof t!="string")throw new TypeError("Expected first argument to be a string");if(typeof e!="object")throw new TypeError("Expected second argument to be an options object");let r=An(e,"simple"),s=this[Mn].prepare(`PRAGMA ${t}`,this,!0);return r?s.pluck().get():s.all()}});var os=$((ch,ss)=>{"use strict";var Fn=require("fs"),In=require("path"),{promisify:Nn}=require("util"),{cppdb:Ln}=ut(),is=Nn(Fn.access);ss.exports=async function(t,e){if(e==null&&(e={}),typeof t!="string")throw new TypeError("Expected first argument to be a string");if(typeof e!="object")throw new TypeError("Expected second argument to be an options object");t=t.trim();let r="attached"in e?e.attached:"main",s="progress"in e?e.progress:null;if(!t)throw new TypeError("Backup filename cannot be an empty string");if(t===":memory:")throw new TypeError('Invalid backup filename ":memory:"');if(typeof r!="string")throw new TypeError('Expected the "attached" option to be a string');if(!r)throw new TypeError('The "attached" option cannot be an empty string');if(s!=null&&typeof s!="function")throw new TypeError('Expected the "progress" option to be a function');await is(In.dirname(t)).catch(()=>{throw new TypeError("Cannot save backup because the directory does not exist")});let o=await is(t).then(()=>!1,()=>!0);return Bn(this[Ln].backup(this,r,t,o),s||null)};var Bn=(i,t)=>{let e=0,r=!0;return new Promise((s,o)=>{setImmediate(function n(){try{let h=i.transfer(e);if(!h.remainingPages){i.close(),s(h);return}if(r&&(r=!1,e=100),t){let l=t(h);if(l!==void 0)if(typeof l=="number"&&l===l)e=Math.max(0,Math.min(2147483647,Math.round(l)));else throw new TypeError("Expected progress callback to return a number or undefined")}setImmediate(n)}catch(h){i.close(),o(h)}})})}});var as=$((fh,ns)=>{"use strict";var{cppdb:jn}=ut();ns.exports=function(t){if(t==null&&(t={}),typeof t!="object")throw new TypeError("Expected first argument to be an options object");let e="attached"in t?t.attached:"main";if(typeof e!="string")throw new TypeError('Expected the "attached" option to be a string');if(!e)throw new TypeError('The "attached" option cannot be an empty string');return this[jn].serialize(e)}});var hs=$((uh,ls)=>{"use strict";var{getBooleanOption:wr,cppdb:_n}=ut();ls.exports=function(t,e,r){if(e==null&&(e={}),typeof e=="function"&&(r=e,e={}),typeof t!="string")throw new TypeError("Expected first argument to be a string");if(typeof r!="function")throw new TypeError("Expected last argument to be a function");if(typeof e!="object")throw new TypeError("Expected second argument to be an options object");if(!t)throw new TypeError("User-defined function name cannot be an empty string");let s="safeIntegers"in e?+wr(e,"safeIntegers"):2,o=wr(e,"deterministic"),n=wr(e,"directOnly"),h=wr(e,"varargs"),l=-1;if(!h){if(l=r.length,!Number.isInteger(l)||l<0)throw new TypeError("Expected function.length to be a positive integer");if(l>100)throw new RangeError("User-defined functions cannot have more than 100 arguments")}return this[_n].function(r,t,l,s,o,n),this}});var us=$((ph,fs)=>{"use strict";var{getBooleanOption:yr,cppdb:$n}=ut();fs.exports=function(t,e){if(typeof t!="string")throw new TypeError("Expected first argument to be a string");if(typeof e!="object"||e===null)throw new TypeError("Expected second argument to be an options object");if(!t)throw new TypeError("User-defined function name cannot be an empty string");let r="start"in e?e.start:null,s=ti(e,"step",!0),o=ti(e,"inverse",!1),n=ti(e,"result",!1),h="safeIntegers"in e?+yr(e,"safeIntegers"):2,l=yr(e,"deterministic"),c=yr(e,"directOnly"),f=yr(e,"varargs"),d=-1;if(!f&&(d=Math.max(cs(s),o?cs(o):0),d>0&&(d-=1),d>100))throw new RangeError("User-defined functions cannot have more than 100 arguments");return this[$n].aggregate(r,s,o,n,t,d,h,l,c),this};var ti=(i,t,e)=>{let r=t in i?i[t]:null;if(typeof r=="function")return r;if(r!=null)throw new TypeError(`Expected the "${t}" option to be a function`);if(e)throw new TypeError(`Missing required option "${t}"`);return null},cs=({length:i})=>{if(Number.isInteger(i)&&i>=0)return i;throw new TypeError("Expected function.length to be a positive integer")}});var gs=$((dh,ms)=>{"use strict";var{cppdb:qn}=ut();ms.exports=function(t,e){if(typeof t!="string")throw new TypeError("Expected first argument to be a string");if(!t)throw new TypeError("Virtual table module name cannot be an empty string");let r=!1;if(typeof e=="object"&&e!==null)r=!0,e=Kn(ds(e,"used",t));else{if(typeof e!="function")throw new TypeError("Expected second argument to be a function or a table definition object");e=Un(e)}return this[qn].table(e,t,r),this};function Un(i){return function(e,r,s,...o){let n={module:e,database:r,table:s},h=Hn.call(i,n,o);if(typeof h!="object"||h===null)throw new TypeError(`Virtual table module "${e}" did not return a table definition object`);return ds(h,"returned",e)}}function ds(i,t,e){if(!ye.call(i,"rows"))throw new TypeError(`Virtual table module "${e}" ${t} a table definition without a "rows" property`);if(!ye.call(i,"columns"))throw new TypeError(`Virtual table module "${e}" ${t} a table definition without a "columns" property`);let r=i.rows;if(typeof r!="function"||Object.getPrototypeOf(r)!==Vn)throw new TypeError(`Virtual table module "${e}" ${t} a table definition with an invalid "rows" property (should be a generator function)`);let s=i.columns;if(!Array.isArray(s)||!(s=[...s]).every(c=>typeof c=="string"))throw new TypeError(`Virtual table module "${e}" ${t} a table definition with an invalid "columns" property (should be an array of strings)`);if(s.length!==new Set(s).size)throw new TypeError(`Virtual table module "${e}" ${t} a table definition with duplicate column names`);if(!s.length)throw new RangeError(`Virtual table module "${e}" ${t} a table definition with zero columns`);let o;if(ye.call(i,"parameters")){if(o=i.parameters,!Array.isArray(o)||!(o=[...o]).every(c=>typeof c=="string"))throw new TypeError(`Virtual table module "${e}" ${t} a table definition with an invalid "parameters" property (should be an array of strings)`)}else o=Qn(r);if(o.length!==new Set(o).size)throw new TypeError(`Virtual table module "${e}" ${t} a table definition with duplicate parameter names`);if(o.length>32)throw new RangeError(`Virtual table module "${e}" ${t} a table definition with more than the maximum number of 32 parameters`);for(let c of o)if(s.includes(c))throw new TypeError(`Virtual table module "${e}" ${t} a table definition with column "${c}" which was ambiguously defined as both a column and parameter`);let n=2;if(ye.call(i,"safeIntegers")){let c=i.safeIntegers;if(typeof c!="boolean")throw new TypeError(`Virtual table module "${e}" ${t} a table definition with an invalid "safeIntegers" property (should be a boolean)`);n=+c}let h=!1;if(ye.call(i,"directOnly")&&(h=i.directOnly,typeof h!="boolean"))throw new TypeError(`Virtual table module "${e}" ${t} a table definition with an invalid "directOnly" property (should be a boolean)`);return[`CREATE TABLE x(${[...o.map(ps).map(c=>`${c} HIDDEN`),...s.map(ps)].join(", ")});`,Wn(r,new Map(s.map((c,f)=>[c,o.length+f])),e),o,n,h]}function Wn(i,t,e){return function*(...s){let o=s.map(n=>Buffer.isBuffer(n)?Buffer.from(n):n);for(let n=0;n<t.size;++n)o.push(null);for(let n of i(...s))if(Array.isArray(n))zn(n,o,t.size,e),yield o;else if(typeof n=="object"&&n!==null)Gn(n,o,t,e),yield o;else throw new TypeError(`Virtual table module "${e}" yielded something that isn't a valid row object`)}}function zn(i,t,e,r){if(i.length!==e)throw new TypeError(`Virtual table module "${r}" yielded a row with an incorrect number of columns`);let s=t.length-e;for(let o=0;o<e;++o)t[o+s]=i[o]}function Gn(i,t,e,r){let s=0;for(let o of Object.keys(i)){let n=e.get(o);if(n===void 0)throw new TypeError(`Virtual table module "${r}" yielded a row with an undeclared column "${o}"`);t[n]=i[o],s+=1}if(s!==e.size)throw new TypeError(`Virtual table module "${r}" yielded a row with missing columns`)}function Qn({length:i}){if(!Number.isInteger(i)||i<0)throw new TypeError("Expected function.length to be a positive integer");let t=[];for(let e=0;e<i;++e)t.push(`$${e+1}`);return t}var{hasOwnProperty:ye}=Object.prototype,{apply:Hn}=Function.prototype,Vn=Object.getPrototypeOf(function*(){}),ps=i=>`"${i.replace(/"/g,'""')}"`,Kn=i=>()=>i});var ys=$((mh,ws)=>{"use strict";var Jn=function(){};ws.exports=function(t,e){return Object.assign(new Jn,this)}});var Ss=$((gh,xs)=>{"use strict";var Yn=require("fs"),bs=require("path"),br=ut(),Zn=Zr(),Es;function U(i,t){if(new.target==null)return new U(i,t);let e;if(Buffer.isBuffer(i)&&(e=i,i=":memory:"),i==null&&(i=""),t==null&&(t={}),typeof i!="string")throw new TypeError("Expected first argument to be a string");if(typeof t!="object")throw new TypeError("Expected second argument to be an options object");if("readOnly"in t)throw new TypeError('Misspelled option "readOnly" should be "readonly"');if("memory"in t)throw new TypeError('Option "memory" was removed in v7.0.0 (use ":memory:" filename instead)');let r=i.trim(),s=r===""||r===":memory:",o=br.getBooleanOption(t,"readonly"),n=br.getBooleanOption(t,"fileMustExist"),h="timeout"in t?t.timeout:5e3,l="verbose"in t?t.verbose:null,c="nativeBinding"in t?t.nativeBinding:null;if(o&&s&&!e)throw new TypeError("In-memory/temporary databases cannot be readonly");if(!Number.isInteger(h)||h<0)throw new TypeError('Expected the "timeout" option to be a positive integer');if(h>2147483647)throw new RangeError('Option "timeout" cannot be greater than 2147483647');if(l!=null&&typeof l!="function")throw new TypeError('Expected the "verbose" option to be a function');if(c!=null&&typeof c!="string"&&typeof c!="object")throw new TypeError('Expected the "nativeBinding" option to be a string or addon object');let f;if(c==null?f=Es||(Es=Ji()("better_sqlite3.node")):typeof c=="string"?f=(typeof __non_webpack_require__=="function"?__non_webpack_require__:require)(bs.resolve(c).replace(/(\.node)?$/,".node")):f=c,f.isInitialized||(f.setErrorConstructor(Zn),f.isInitialized=!0),!s&&!Yn.existsSync(bs.dirname(r)))throw new TypeError("Cannot open database because the directory does not exist");Object.defineProperties(this,{[br.cppdb]:{value:new f.Database(r,i,s,o,n,h,l||null,e||null)},...Wt.getters})}var Wt=Yi();U.prototype.prepare=Wt.prepare;U.prototype.transaction=ts();U.prototype.pragma=rs();U.prototype.backup=os();U.prototype.serialize=as();U.prototype.function=hs();U.prototype.aggregate=us();U.prototype.table=gs();U.prototype.loadExtension=Wt.loadExtension;U.prototype.exec=Wt.exec;U.prototype.close=Wt.close;U.prototype.defaultSafeIntegers=Wt.defaultSafeIntegers;U.prototype.unsafeMode=Wt.unsafeMode;U.prototype[br.inspect]=ys();xs.exports=U});var ks=$((wh,ei)=>{"use strict";ei.exports=Ss();ei.exports.SqliteError=Zr()});var Fs=$((vh,Ms)=>{"use strict";Ms.exports=Ps;function Ps(i,t,e){i instanceof RegExp&&(i=Ds(i,e)),t instanceof RegExp&&(t=Ds(t,e));var r=As(i,t,e);return r&&{start:r[0],end:r[1],pre:e.slice(0,r[0]),body:e.slice(r[0]+i.length,r[1]),post:e.slice(r[1]+t.length)}}function Ds(i,t){var e=t.match(i);return e?e[0]:null}Ps.range=As;function As(i,t,e){var r,s,o,n,h,l=e.indexOf(i),c=e.indexOf(t,l+1),f=l;if(l>=0&&c>0){if(i===t)return[l,c];for(r=[],o=e.length;f>=0&&!h;)f==l?(r.push(f),l=e.indexOf(i,f+1)):r.length==1?h=[r.pop(),c]:(s=r.pop(),s<o&&(o=s,n=c),c=e.indexOf(t,f+1)),f=l<c&&l>=0?l:c;r.length&&(h=[o,n])}return h}});var qs=$((Th,$s)=>{"use strict";var Is=Fs();$s.exports=aa;var Ns="\0SLASH"+Math.random()+"\0",Ls="\0OPEN"+Math.random()+"\0",ii="\0CLOSE"+Math.random()+"\0",Bs="\0COMMA"+Math.random()+"\0",js="\0PERIOD"+Math.random()+"\0";function ri(i){return parseInt(i,10)==i?parseInt(i,10):i.charCodeAt(0)}function oa(i){return i.split("\\\\").join(Ns).split("\\{").join(Ls).split("\\}").join(ii).split("\\,").join(Bs).split("\\.").join(js)}function na(i){return i.split(Ns).join("\\").split(Ls).join("{").split(ii).join("}").split(Bs).join(",").split(js).join(".")}function _s(i){if(!i)return[""];var t=[],e=Is("{","}",i);if(!e)return i.split(",");var r=e.pre,s=e.body,o=e.post,n=r.split(",");n[n.length-1]+="{"+s+"}";var h=_s(o);return o.length&&(n[n.length-1]+=h.shift(),n.push.apply(n,h)),t.push.apply(t,n),t}function aa(i){return i?(i.substr(0,2)==="{}"&&(i="\\{\\}"+i.substr(2)),be(oa(i),!0).map(na)):[]}function la(i){return"{"+i+"}"}function ha(i){return/^-?0\d/.test(i)}function ca(i,t){return i<=t}function fa(i,t){return i>=t}function be(i,t){var e=[],r=Is("{","}",i);if(!r)return[i];var s=r.pre,o=r.post.length?be(r.post,!1):[""];if(/\$$/.test(r.pre))for(var n=0;n<o.length;n++){var h=s+"{"+r.body+"}"+o[n];e.push(h)}else{var l=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(r.body),c=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(r.body),f=l||c,d=r.body.indexOf(",")>=0;if(!f&&!d)return r.post.match(/,.*\}/)?(i=r.pre+"{"+r.body+ii+r.post,be(i)):[i];var m;if(f)m=r.body.split(/\.\./);else if(m=_s(r.body),m.length===1&&(m=be(m[0],!1).map(la),m.length===1))return o.map(function(mn){return r.pre+m[0]+mn});var y;if(f){var v=ri(m[0]),g=ri(m[1]),k=Math.max(m[0].length,m[1].length),S=m.length==3?Math.abs(ri(m[2])):1,T=ca,O=g<v;O&&(S*=-1,T=fa);var A=m.some(ha);y=[];for(var K=v;T(K,g);K+=S){var X;if(c)X=String.fromCharCode(K),X==="\\"&&(X="");else if(X=String(K),A){var Fi=k-X.length;if(Fi>0){var Ii=new Array(Fi+1).join("0");K<0?X="-"+Ii+X.slice(1):X=Ii+X}}y.push(X)}}else{y=[];for(var $t=0;$t<m.length;$t++)y.push.apply(y,be(m[$t],!1))}for(var $t=0;$t<y.length;$t++)for(var n=0;n<o.length;n++){var h=s+y[$t]+o[n];(!t||f||h)&&e.push(h)}}return e}});function Sl(i,t){if(i instanceof _t)throw M("Command execution failed",i,{command:i.command,originalError:i.originalError}),i;if(i instanceof Error){let r=new _t(i.message,t,i);throw M("Failed to execute command",i,{command:t,stack:i.stack}),r}let e=new _t("Unknown error occurred during command execution",t);throw M("Failed to execute command",null,{error:i,command:t}),e}async function en(i,t={}){if(!i||typeof i!="string")throw new _t("Command must be a non-empty string",i);let e={encoding:"utf8",maxBuffer:5*1024*1024,timeout:3e4};try{let{stdout:r,stderr:s}=await xl(i,{...e,...t}),o=r.trim();if(!o)throw s?new _t(`Command failed with stderr: ${s}`,i):new _t("Command returned empty result",i);return o}catch(r){Sl(r,i)}}var Xo,tn,xl,_t,rn=nr(()=>{"use strict";Xo=require("child_process"),tn=require("util");Ot();xl=(0,tn.promisify)(Xo.exec),_t=class extends Error{constructor(e,r,s){super(e);this.command=r;this.originalError=s;this.name="CommandExecutionError"}}});var on={};Sn(on,{getChromePassword:()=>Cl});var sn,kl,Cl,nn=nr(()=>{"use strict";sn=ct(require("lodash/memoize"),1);rn();kl=async()=>en('security find-generic-password -w -s "Chrome Safe Storage"'),Cl=(0,sn.default)(kl)});function Li(i){if(!i)return[];try{let t=[],r=new URL(i).hostname,s=r.split(".");t.push({name:"%",domain:r});for(let o=1;o<s.length-1;o++)t.push({name:"%",domain:`%.${s.slice(o).join(".")}`}),t.push({name:"%",domain:s.slice(o).join(".")});return t}catch(t){throw t instanceof TypeError?new Error("Invalid URL"):t}}var Bi=require("util");function ar(i){let{values:t,positionals:e}=(0,Bi.parseArgs)({args:i,options:{browser:{type:"string",short:"b"},profile:{type:"string",short:"p"},url:{type:"string",short:"u"},domain:{type:"string",short:"d"},name:{type:"string",short:"n"},help:{type:"boolean",short:"h"},version:{type:"boolean",short:"v"},verbose:{type:"boolean"}},allowPositionals:!0});return{values:t,positionals:e}}qt();var Mi=require("lodash");async function lr(i,t,e=[]){return i.length===0?e:(await Promise.all(i.map(async s=>{try{return await t(s)}catch(o){return e}}))).flat()}qt();Ot();var Ts=require("fs"),xr=require("path"),Os=ct(require("fast-glob"),1);Ot();var Wi=require("path");var $i=ct(require("lodash/merge"),1),qi={};(0,$i.default)(qi,process.env);var fr=qi.HOME;if(typeof fr!="string"||fr.length===0)throw new Error("HOME environment variable is not set or empty");var Ui,ee=(0,Wi.join)((Ui=fr)!=null?Ui:"","Library","Application Support","Google","Chrome");var Cs=ct(ks(),1),vs=ct(require("lodash/memoize"),1);Ot();var Xn=(0,vs.default)(i=>{try{return Promise.resolve(new Cs.default(i,{readonly:!0}))}catch(t){throw M("Database open failed",t,{file:i}),t}});function ta(i){try{return i.close(),Promise.resolve()}catch(t){return M("Database close failed",t),Promise.reject(t instanceof Error?t:new Error("Failed to close database: Unknown error"))}}async function Er({file:i,sql:t,params:e,rowFilter:r,rowTransform:s}){let o;try{o=await Xn(i);let h=o.prepare(t).all(e),l=r?h.filter(r):h;return s?l.map(s):l}catch(n){throw M("Database query failed",n,{file:i,sql:t}),n}finally{o&&await ta(o)}}function ea(i){if(typeof i!="string")return!1;let t=i.trim();return t.length===0?!1:(0,Ts.existsSync)(t)}async function ra(){let i=[(0,xr.join)(ee,"Default/Cookies"),(0,xr.join)(ee,"Profile */Cookies"),(0,xr.join)(ee,"Profile Default/Cookies")],t=[];for(let e of i){let r=await(0,Os.default)(e);t.push(...r)}return ft("ChromeCookies","Found cookie files",{count:t.length,files:t}),t}function ia(i,t){let e=i==="%",r=e?"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 ?",s=e?[`%${t}%`]:[i,`%${t}%`];return{sql:r,params:s}}async function sa(i,t,e){try{let{sql:r,params:s}=ia(t,e);ft("ChromeCookies","Executing query",{sql:r,params:s});let o=await Er({file:i,sql:r,params:s,rowTransform:n=>({name:n.name,domain:n.host_key,value:n.encrypted_value,expiry:n.expires_utc})});return hr("QueryCookies",!0,{file:i,count:o.length}),o}catch(r){return M("Failed to read cookie file",r,{file:i}),[]}}async function Rs({name:i,domain:t,file:e}){let r=typeof e=="string"&&e.length>0?[e]:await ra();if(r.length===0)return ft("ChromeCookies","No cookie files found"),[];let s=[];for(let o of r){if(!ea(o)){ft("ChromeCookies","Cookie file missing or invalid",{file:o});continue}let n=await sa(o,i,t);s.push(...n)}return ft("ChromeCookies","Query complete",{totalCookies:s.length}),s}var Ys=ct(qs(),1);var Ee=i=>{if(typeof i!="string")throw new TypeError("invalid pattern");if(i.length>65536)throw new TypeError("pattern is too long")};var ua={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},xe=i=>i.replace(/[[\]\\-]/g,"\\$&"),pa=i=>i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Us=i=>i.join(""),Ws=(i,t)=>{let e=t;if(i.charAt(e)!=="[")throw new Error("not in a brace expression");let r=[],s=[],o=e+1,n=!1,h=!1,l=!1,c=!1,f=e,d="";t:for(;o<i.length;){let g=i.charAt(o);if((g==="!"||g==="^")&&o===e+1){c=!0,o++;continue}if(g==="]"&&n&&!l){f=o+1;break}if(n=!0,g==="\\"&&!l){l=!0,o++;continue}if(g==="["&&!l){for(let[k,[S,T,O]]of Object.entries(ua))if(i.startsWith(k,o)){if(d)return["$.",!1,i.length-e,!0];o+=k.length,O?s.push(S):r.push(S),h=h||T;continue t}}if(l=!1,d){g>d?r.push(xe(d)+"-"+xe(g)):g===d&&r.push(xe(g)),d="",o++;continue}if(i.startsWith("-]",o+1)){r.push(xe(g+"-")),o+=2;continue}if(i.startsWith("-",o+1)){d=g,o+=2;continue}r.push(xe(g)),o++}if(f<o)return["",!1,0,!1];if(!r.length&&!s.length)return["$.",!1,i.length-e,!0];if(s.length===0&&r.length===1&&/^\\?.$/.test(r[0])&&!c){let g=r[0].length===2?r[0].slice(-1):r[0];return[pa(g),!1,f-e,!1]}let m="["+(c?"^":"")+Us(r)+"]",y="["+(c?"":"^")+Us(s)+"]";return[r.length&&s.length?"("+m+"|"+y+")":r.length?m:y,h,f-e,!0]};var ot=(i,{windowsPathsNoEscape:t=!1}={})=>t?i.replace(/\[([^\/\\])\]/g,"$1"):i.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");var da=new Set(["!","?","+","*","@"]),zs=i=>da.has(i),ma="(?!(?:^|/)\\.\\.?(?:$|/))",Sr="(?!\\.)",ga=new Set(["[","."]),wa=new Set(["..","."]),ya=new Set("().*{}+?[]^$\\!"),ba=i=>i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),oi="[^/]",Gs=oi+"*?",Qs=oi+"+?",F,N,bt,R,P,Dt,zt,Pt,pt,Gt,Se,Qt,Hs,At,kr,si,Vs,G=class G{constructor(t,e,r={}){w(this,Qt);u(this,"type");w(this,F);w(this,N);w(this,bt,!1);w(this,R,[]);w(this,P);w(this,Dt);w(this,zt);w(this,Pt,!1);w(this,pt);w(this,Gt);w(this,Se,!1);this.type=t,t&&p(this,N,!0),p(this,P,e),p(this,F,a(this,P)?a(a(this,P),F):this),p(this,pt,a(this,F)===this?r:a(a(this,F),pt)),p(this,zt,a(this,F)===this?[]:a(a(this,F),zt)),t==="!"&&!a(a(this,F),Pt)&&a(this,zt).push(this),p(this,Dt,a(this,P)?a(a(this,P),R).length:0)}get hasMagic(){if(a(this,N)!==void 0)return a(this,N);for(let t of a(this,R))if(typeof t!="string"&&(t.type||t.hasMagic))return p(this,N,!0);return a(this,N)}toString(){return a(this,Gt)!==void 0?a(this,Gt):this.type?p(this,Gt,this.type+"("+a(this,R).map(t=>String(t)).join("|")+")"):p(this,Gt,a(this,R).map(t=>String(t)).join(""))}push(...t){for(let e of t)if(e!==""){if(typeof e!="string"&&!(e instanceof G&&a(e,P)===this))throw new Error("invalid part: "+e);a(this,R).push(e)}}toJSON(){var e;let t=this.type===null?a(this,R).slice().map(r=>typeof r=="string"?r:r.toJSON()):[this.type,...a(this,R).map(r=>r.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===a(this,F)||a(a(this,F),Pt)&&((e=a(this,P))==null?void 0:e.type)==="!")&&t.push({}),t}isStart(){var e;if(a(this,F)===this)return!0;if(!((e=a(this,P))!=null&&e.isStart()))return!1;if(a(this,Dt)===0)return!0;let t=a(this,P);for(let r=0;r<a(this,Dt);r++){let s=a(t,R)[r];if(!(s instanceof G&&s.type==="!"))return!1}return!0}isEnd(){var e,r,s;if(a(this,F)===this||((e=a(this,P))==null?void 0:e.type)==="!")return!0;if(!((r=a(this,P))!=null&&r.isEnd()))return!1;if(!this.type)return(s=a(this,P))==null?void 0:s.isEnd();let t=a(this,P)?a(a(this,P),R).length:0;return a(this,Dt)===t-1}copyIn(t){typeof t=="string"?this.push(t):this.push(t.clone(this))}clone(t){let e=new G(this.type,t);for(let r of a(this,R))e.copyIn(r);return e}static fromGlob(t,e={}){var s;let r=new G(null,void 0,e);return b(s=G,At,kr).call(s,t,r,0,e),r}toMMPattern(){if(this!==a(this,F))return a(this,F).toMMPattern();let t=this.toString(),[e,r,s,o]=this.toRegExpSource();if(!(s||a(this,N)||a(this,pt).nocase&&!a(this,pt).nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return r;let h=(a(this,pt).nocase?"i":"")+(o?"u":"");return Object.assign(new RegExp(`^${e}$`,h),{_src:e,_glob:t})}get options(){return a(this,pt)}toRegExpSource(t){var l;let e=t!=null?t:!!a(this,pt).dot;if(a(this,F)===this&&b(this,Qt,Hs).call(this),!this.type){let c=this.isStart()&&this.isEnd(),f=a(this,R).map(v=>{var O;let[g,k,S,T]=typeof v=="string"?b(O=G,At,Vs).call(O,v,a(this,N),c):v.toRegExpSource(t);return p(this,N,a(this,N)||S),p(this,bt,a(this,bt)||T),g}).join(""),d="";if(this.isStart()&&typeof a(this,R)[0]=="string"&&!(a(this,R).length===1&&wa.has(a(this,R)[0]))){let g=ga,k=e&&g.has(f.charAt(0))||f.startsWith("\\.")&&g.has(f.charAt(2))||f.startsWith("\\.\\.")&&g.has(f.charAt(4)),S=!e&&!t&&g.has(f.charAt(0));d=k?ma:S?Sr:""}let m="";return this.isEnd()&&a(a(this,F),Pt)&&((l=a(this,P))==null?void 0:l.type)==="!"&&(m="(?:$|\\/)"),[d+f+m,ot(f),p(this,N,!!a(this,N)),a(this,bt)]}let r=this.type==="*"||this.type==="+",s=this.type==="!"?"(?:(?!(?:":"(?:",o=b(this,Qt,si).call(this,e);if(this.isStart()&&this.isEnd()&&!o&&this.type!=="!"){let c=this.toString();return p(this,R,[c]),this.type=null,p(this,N,void 0),[c,ot(this.toString()),!1,!1]}let n=!r||t||e||!Sr?"":b(this,Qt,si).call(this,!0);n===o&&(n=""),n&&(o=`(?:${o})(?:${n})*?`);let h="";if(this.type==="!"&&a(this,Se))h=(this.isStart()&&!e?Sr:"")+Qs;else{let c=this.type==="!"?"))"+(this.isStart()&&!e&&!t?Sr:"")+Gs+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&n?")":this.type==="*"&&n?")?":`)${this.type}`;h=s+o+c}return[h,ot(o),p(this,N,!!a(this,N)),a(this,bt)]}};F=new WeakMap,N=new WeakMap,bt=new WeakMap,R=new WeakMap,P=new WeakMap,Dt=new WeakMap,zt=new WeakMap,Pt=new WeakMap,pt=new WeakMap,Gt=new WeakMap,Se=new WeakMap,Qt=new WeakSet,Hs=function(){if(this!==a(this,F))throw new Error("should only call on root");if(a(this,Pt))return this;this.toString(),p(this,Pt,!0);let t;for(;t=a(this,zt).pop();){if(t.type!=="!")continue;let e=t,r=a(e,P);for(;r;){for(let s=a(e,Dt)+1;!r.type&&s<a(r,R).length;s++)for(let o of a(t,R)){if(typeof o=="string")throw new Error("string part in extglob AST??");o.copyIn(a(r,R)[s])}e=r,r=a(e,P)}}return this},At=new WeakSet,kr=function(t,e,r,s){var y,v;let o=!1,n=!1,h=-1,l=!1;if(e.type===null){let g=r,k="";for(;g<t.length;){let S=t.charAt(g++);if(o||S==="\\"){o=!o,k+=S;continue}if(n){g===h+1?(S==="^"||S==="!")&&(l=!0):S==="]"&&!(g===h+2&&l)&&(n=!1),k+=S;continue}else if(S==="["){n=!0,h=g,l=!1,k+=S;continue}if(!s.noext&&zs(S)&&t.charAt(g)==="("){e.push(k),k="";let T=new G(S,e);g=b(y=G,At,kr).call(y,t,T,g,s),e.push(T);continue}k+=S}return e.push(k),g}let c=r+1,f=new G(null,e),d=[],m="";for(;c<t.length;){let g=t.charAt(c++);if(o||g==="\\"){o=!o,m+=g;continue}if(n){c===h+1?(g==="^"||g==="!")&&(l=!0):g==="]"&&!(c===h+2&&l)&&(n=!1),m+=g;continue}else if(g==="["){n=!0,h=c,l=!1,m+=g;continue}if(zs(g)&&t.charAt(c)==="("){f.push(m),m="";let k=new G(g,f);f.push(k),c=b(v=G,At,kr).call(v,t,k,c,s);continue}if(g==="|"){f.push(m),m="",d.push(f),f=new G(null,e);continue}if(g===")")return m===""&&a(e,R).length===0&&p(e,Se,!0),f.push(m),m="",e.push(...d,f),c;m+=g}return e.type=null,p(e,N,void 0),p(e,R,[t.substring(r-1)]),c},si=function(t){return a(this,R).map(e=>{if(typeof e=="string")throw new Error("string type in extglob ast??");let[r,s,o,n]=e.toRegExpSource(t);return p(this,bt,a(this,bt)||n),r}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join("|")},Vs=function(t,e,r=!1){let s=!1,o="",n=!1;for(let h=0;h<t.length;h++){let l=t.charAt(h);if(s){s=!1,o+=(ya.has(l)?"\\":"")+l;continue}if(l==="\\"){h===t.length-1?o+="\\\\":s=!0;continue}if(l==="["){let[c,f,d,m]=Ws(t,h);if(d){o+=c,n=n||f,h+=d-1,e=e||m;continue}}if(l==="*"){r&&t==="*"?o+=Qs:o+=Gs,e=!0;continue}if(l==="?"){o+=oi,e=!0;continue}o+=ba(l)}return[o,ot(t),!!e,n]},w(G,At);var ie=G;var se=(i,{windowsPathsNoEscape:t=!1}={})=>t?i.replace(/[?*()[\]]/g,"[$&]"):i.replace(/[?*()[\]\\]/g,"\\$&");var Q=(i,t,e={})=>(Ee(t),!e.nocomment&&t.charAt(0)==="#"?!1:new J(t,e).match(i)),Ea=/^\*+([^+@!?\*\[\(]*)$/,xa=i=>t=>!t.startsWith(".")&&t.endsWith(i),Sa=i=>t=>t.endsWith(i),ka=i=>(i=i.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(i)),Ca=i=>(i=i.toLowerCase(),t=>t.toLowerCase().endsWith(i)),va=/^\*+\.\*+$/,Ta=i=>!i.startsWith(".")&&i.includes("."),Oa=i=>i!=="."&&i!==".."&&i.includes("."),Ra=/^\.\*+$/,Da=i=>i!=="."&&i!==".."&&i.startsWith("."),Pa=/^\*+$/,Aa=i=>i.length!==0&&!i.startsWith("."),Ma=i=>i.length!==0&&i!=="."&&i!=="..",Fa=/^\?+([^+@!?\*\[\(]*)?$/,Ia=([i,t=""])=>{let e=Zs([i]);return t?(t=t.toLowerCase(),r=>e(r)&&r.toLowerCase().endsWith(t)):e},Na=([i,t=""])=>{let e=Xs([i]);return t?(t=t.toLowerCase(),r=>e(r)&&r.toLowerCase().endsWith(t)):e},La=([i,t=""])=>{let e=Xs([i]);return t?r=>e(r)&&r.endsWith(t):e},Ba=([i,t=""])=>{let e=Zs([i]);return t?r=>e(r)&&r.endsWith(t):e},Zs=([i])=>{let t=i.length;return e=>e.length===t&&!e.startsWith(".")},Xs=([i])=>{let t=i.length;return e=>e.length===t&&e!=="."&&e!==".."},to=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",Ks={win32:{sep:"\\"},posix:{sep:"/"}},ja=to==="win32"?Ks.win32.sep:Ks.posix.sep;Q.sep=ja;var q=Symbol("globstar **");Q.GLOBSTAR=q;var _a="[^/]",$a=_a+"*?",qa="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",Ua="(?:(?!(?:\\/|^)\\.).)*?",Wa=(i,t={})=>e=>Q(e,i,t);Q.filter=Wa;var tt=(i,t={})=>Object.assign({},i,t),za=i=>{if(!i||typeof i!="object"||!Object.keys(i).length)return Q;let t=Q;return Object.assign((r,s,o={})=>t(r,s,tt(i,o)),{Minimatch:class extends t.Minimatch{constructor(s,o={}){super(s,tt(i,o))}static defaults(s){return t.defaults(tt(i,s)).Minimatch}},AST:class extends t.AST{constructor(s,o,n={}){super(s,o,tt(i,n))}static fromGlob(s,o={}){return t.AST.fromGlob(s,tt(i,o))}},unescape:(r,s={})=>t.unescape(r,tt(i,s)),escape:(r,s={})=>t.escape(r,tt(i,s)),filter:(r,s={})=>t.filter(r,tt(i,s)),defaults:r=>t.defaults(tt(i,r)),makeRe:(r,s={})=>t.makeRe(r,tt(i,s)),braceExpand:(r,s={})=>t.braceExpand(r,tt(i,s)),match:(r,s,o={})=>t.match(r,s,tt(i,o)),sep:t.sep,GLOBSTAR:q})};Q.defaults=za;var eo=(i,t={})=>(Ee(i),t.nobrace||!/\{(?:(?!\{).)*\}/.test(i)?[i]:(0,Ys.default)(i));Q.braceExpand=eo;var Ga=(i,t={})=>new J(i,t).makeRe();Q.makeRe=Ga;var Qa=(i,t,e={})=>{let r=new J(t,e);return i=i.filter(s=>r.match(s)),r.options.nonull&&!i.length&&i.push(t),i};Q.match=Qa;var Js=/[?*]|[+@!]\(.*?\)|\[|\]/,Ha=i=>i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),J=class{constructor(t,e={}){u(this,"options");u(this,"set");u(this,"pattern");u(this,"windowsPathsNoEscape");u(this,"nonegate");u(this,"negate");u(this,"comment");u(this,"empty");u(this,"preserveMultipleSlashes");u(this,"partial");u(this,"globSet");u(this,"globParts");u(this,"nocase");u(this,"isWindows");u(this,"platform");u(this,"windowsNoMagicRoot");u(this,"regexp");Ee(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||to,this.isWindows=this.platform==="win32",this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=e.windowsNoMagicRoot!==void 0?e.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let e of t)if(typeof e!="string")return!0;return!1}debug(...t){}make(){let t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)==="#"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...o)=>console.error(...o)),this.debug(this.pattern,this.globSet);let r=this.globSet.map(o=>this.slashSplit(o));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let s=this.globParts.map((o,n,h)=>{if(this.isWindows&&this.windowsNoMagicRoot){let l=o[0]===""&&o[1]===""&&(o[2]==="?"||!Js.test(o[2]))&&!Js.test(o[3]),c=/^[a-z]:/i.test(o[0]);if(l)return[...o.slice(0,4),...o.slice(4).map(f=>this.parse(f))];if(c)return[o[0],...o.slice(1).map(f=>this.parse(f))]}return o.map(l=>this.parse(l))});if(this.debug(this.pattern,s),this.set=s.filter(o=>o.indexOf(!1)===-1),this.isWindows)for(let o=0;o<this.set.length;o++){let n=this.set[o];n[0]===""&&n[1]===""&&this.globParts[o][2]==="?"&&typeof n[3]=="string"&&/^[a-z]:$/i.test(n[3])&&(n[2]="?")}this.debug(this.pattern,this.set)}preprocess(t){if(this.options.noglobstar)for(let r=0;r<t.length;r++)for(let s=0;s<t[r].length;s++)t[r][s]==="**"&&(t[r][s]="*");let{optimizationLevel:e=1}=this.options;return e>=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):e>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(e=>{let r=-1;for(;(r=e.indexOf("**",r+1))!==-1;){let s=r;for(;e[s+1]==="**";)s++;s!==r&&e.splice(r,s-r)}return e})}levelOneOptimize(t){return t.map(e=>(e=e.reduce((r,s)=>{let o=r[r.length-1];return s==="**"&&o==="**"?r:s===".."&&o&&o!==".."&&o!=="."&&o!=="**"?(r.pop(),r):(r.push(s),r)},[]),e.length===0?[""]:e))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let s=1;s<t.length-1;s++){let o=t[s];s===1&&o===""&&t[0]===""||(o==="."||o==="")&&(e=!0,t.splice(s,1),s--)}t[0]==="."&&t.length===2&&(t[1]==="."||t[1]==="")&&(e=!0,t.pop())}let r=0;for(;(r=t.indexOf("..",r+1))!==-1;){let s=t[r-1];s&&s!=="."&&s!==".."&&s!=="**"&&(e=!0,t.splice(r-1,2),r-=2)}}while(e);return t.length===0?[""]:t}firstPhasePreProcess(t){let e=!1;do{e=!1;for(let r of t){let s=-1;for(;(s=r.indexOf("**",s+1))!==-1;){let n=s;for(;r[n+1]==="**";)n++;n>s&&r.splice(s+1,n-s);let h=r[s+1],l=r[s+2],c=r[s+3];if(h!==".."||!l||l==="."||l===".."||!c||c==="."||c==="..")continue;e=!0,r.splice(s,1);let f=r.slice(0);f[s]="**",t.push(f),s--}if(!this.preserveMultipleSlashes){for(let n=1;n<r.length-1;n++){let h=r[n];n===1&&h===""&&r[0]===""||(h==="."||h==="")&&(e=!0,r.splice(n,1),n--)}r[0]==="."&&r.length===2&&(r[1]==="."||r[1]==="")&&(e=!0,r.pop())}let o=0;for(;(o=r.indexOf("..",o+1))!==-1;){let n=r[o-1];if(n&&n!=="."&&n!==".."&&n!=="**"){e=!0;let l=o===1&&r[o+1]==="**"?["."]:[];r.splice(o-1,2,...l),r.length===0&&r.push(""),o-=2}}}}while(e);return t}secondPhasePreProcess(t){for(let e=0;e<t.length-1;e++)for(let r=e+1;r<t.length;r++){let s=this.partsMatch(t[e],t[r],!this.preserveMultipleSlashes);if(s){t[e]=[],t[r]=s;break}}return t.filter(e=>e.length)}partsMatch(t,e,r=!1){let s=0,o=0,n=[],h="";for(;s<t.length&&o<e.length;)if(t[s]===e[o])n.push(h==="b"?e[o]:t[s]),s++,o++;else if(r&&t[s]==="**"&&e[o]===t[s+1])n.push(t[s]),s++;else if(r&&e[o]==="**"&&t[s]===e[o+1])n.push(e[o]),o++;else if(t[s]==="*"&&e[o]&&(this.options.dot||!e[o].startsWith("."))&&e[o]!=="**"){if(h==="b")return!1;h="a",n.push(t[s]),s++,o++}else if(e[o]==="*"&&t[s]&&(this.options.dot||!t[s].startsWith("."))&&t[s]!=="**"){if(h==="a")return!1;h="b",n.push(e[o]),s++,o++}else return!1;return t.length===e.length&&n}parseNegate(){if(this.nonegate)return;let t=this.pattern,e=!1,r=0;for(let s=0;s<t.length&&t.charAt(s)==="!";s++)e=!e,r++;r&&(this.pattern=t.slice(r)),this.negate=e}matchOne(t,e,r=!1){let s=this.options;if(this.isWindows){let g=typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]),k=!g&&t[0]===""&&t[1]===""&&t[2]==="?"&&/^[a-z]:$/i.test(t[3]),S=typeof e[0]=="string"&&/^[a-z]:$/i.test(e[0]),T=!S&&e[0]===""&&e[1]===""&&e[2]==="?"&&typeof e[3]=="string"&&/^[a-z]:$/i.test(e[3]),O=k?3:g?0:void 0,A=T?3:S?0:void 0;if(typeof O=="number"&&typeof A=="number"){let[K,X]=[t[O],e[A]];K.toLowerCase()===X.toLowerCase()&&(e[A]=K,A>O?e=e.slice(A):O>A&&(t=t.slice(O)))}}let{optimizationLevel:o=1}=this.options;o>=2&&(t=this.levelTwoFileOptimize(t)),this.debug("matchOne",this,{file:t,pattern:e}),this.debug("matchOne",t.length,e.length);for(var n=0,h=0,l=t.length,c=e.length;n<l&&h<c;n++,h++){this.debug("matchOne loop");var f=e[h],d=t[n];if(this.debug(e,f,d),f===!1)return!1;if(f===q){this.debug("GLOBSTAR",[e,f,d]);var m=n,y=h+1;if(y===c){for(this.debug("** at the end");n<l;n++)if(t[n]==="."||t[n]===".."||!s.dot&&t[n].charAt(0)===".")return!1;return!0}for(;m<l;){var v=t[m];if(this.debug(`
|
|
5
|
+
globstar while`,t,m,e,y,v),this.matchOne(t.slice(m),e.slice(y),r))return this.debug("globstar found match!",m,l,v),!0;if(v==="."||v===".."||!s.dot&&v.charAt(0)==="."){this.debug("dot detected!",t,m,e,y);break}this.debug("globstar swallow a segment, and continue"),m++}return!!(r&&(this.debug(`
|
|
6
|
+
>>> no match, partial?`,t,m,e,y),m===l))}let g;if(typeof f=="string"?(g=d===f,this.debug("string match",f,d,g)):(g=f.test(d),this.debug("pattern match",f,d,g)),!g)return!1}if(n===l&&h===c)return!0;if(n===l)return r;if(h===c)return n===l-1&&t[n]==="";throw new Error("wtf?")}braceExpand(){return eo(this.pattern,this.options)}parse(t){Ee(t);let e=this.options;if(t==="**")return q;if(t==="")return"";let r,s=null;(r=t.match(Pa))?s=e.dot?Ma:Aa:(r=t.match(Ea))?s=(e.nocase?e.dot?Ca:ka:e.dot?Sa:xa)(r[1]):(r=t.match(Fa))?s=(e.nocase?e.dot?Na:Ia:e.dot?La:Ba)(r):(r=t.match(va))?s=e.dot?Oa:Ta:(r=t.match(Ra))&&(s=Da);let o=ie.fromGlob(t,this.options).toMMPattern();return s&&typeof o=="object"&&Reflect.defineProperty(o,"test",{value:s}),o}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let e=this.options,r=e.noglobstar?$a:e.dot?qa:Ua,s=new Set(e.nocase?["i"]:[]),o=t.map(l=>{let c=l.map(f=>{if(f instanceof RegExp)for(let d of f.flags.split(""))s.add(d);return typeof f=="string"?Ha(f):f===q?q:f._src});return c.forEach((f,d)=>{let m=c[d+1],y=c[d-1];f!==q||y===q||(y===void 0?m!==void 0&&m!==q?c[d+1]="(?:\\/|"+r+"\\/)?"+m:c[d]=r:m===void 0?c[d-1]=y+"(?:\\/|"+r+")?":m!==q&&(c[d-1]=y+"(?:\\/|\\/"+r+"\\/)"+m,c[d+1]=q))}),c.filter(f=>f!==q).join("/")}).join("|"),[n,h]=t.length>1?["(?:",")"]:["",""];o="^"+n+o+h+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...s].join(""))}catch(l){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return t==="";if(t==="/"&&e)return!0;let r=this.options;this.isWindows&&(t=t.split("\\").join("/"));let s=this.slashSplit(t);this.debug(this.pattern,"split",s);let o=this.set;this.debug(this.pattern,"set",o);let n=s[s.length-1];if(!n)for(let h=s.length-2;!n&&h>=0;h--)n=s[h];for(let h=0;h<o.length;h++){let l=o[h],c=s;if(r.matchBase&&l.length===1&&(c=[n]),this.matchOne(c,l,e))return r.flipNegate?!0:!this.negate}return r.flipNegate?!1:this.negate}static defaults(t){return Q.defaults(t).Minimatch}};Q.AST=ie;Q.Minimatch=J;Q.escape=se;Q.unescape=ot;var Go=require("url");var Si=require("lru-cache"),fe=require("path"),Ao=require("url"),yt=require("fs"),il=ct(require("fs"),1),Nt=require("fs/promises");var Pr=require("events"),ui=ct(require("stream"),1),To=require("string_decoder");var ro=typeof process=="object"&&process?process:{stdout:null,stderr:null},Va=i=>!!i&&typeof i=="object"&&(i instanceof Ft||i instanceof ui.default||Ka(i)||Ja(i)),Ka=i=>!!i&&typeof i=="object"&&i instanceof Pr.EventEmitter&&typeof i.pipe=="function"&&i.pipe!==ui.default.Writable.prototype.pipe,Ja=i=>!!i&&typeof i=="object"&&i instanceof Pr.EventEmitter&&typeof i.write=="function"&&typeof i.end=="function",Et=Symbol("EOF"),xt=Symbol("maybeEmitEnd"),Mt=Symbol("emittedEnd"),Cr=Symbol("emittingEnd"),ke=Symbol("emittedError"),vr=Symbol("closed"),io=Symbol("read"),Tr=Symbol("flush"),so=Symbol("flushChunk"),nt=Symbol("encoding"),oe=Symbol("decoder"),L=Symbol("flowing"),Ce=Symbol("paused"),ne=Symbol("resume"),B=Symbol("buffer"),H=Symbol("pipes"),j=Symbol("bufferLength"),ni=Symbol("bufferPush"),Or=Symbol("bufferShift"),W=Symbol("objectMode"),D=Symbol("destroyed"),ai=Symbol("error"),li=Symbol("emitData"),oo=Symbol("emitEnd"),hi=Symbol("emitEnd2"),dt=Symbol("async"),ci=Symbol("abort"),Rr=Symbol("aborted"),ve=Symbol("signal"),Ht=Symbol("dataListeners"),Y=Symbol("discarded"),Te=i=>Promise.resolve().then(i),Ya=i=>i(),Za=i=>i==="end"||i==="finish"||i==="prefinish",Xa=i=>i instanceof ArrayBuffer||!!i&&typeof i=="object"&&i.constructor&&i.constructor.name==="ArrayBuffer"&&i.byteLength>=0,tl=i=>!Buffer.isBuffer(i)&&ArrayBuffer.isView(i),Dr=class{constructor(t,e,r){u(this,"src");u(this,"dest");u(this,"opts");u(this,"ondrain");this.src=t,this.dest=e,this.opts=r,this.ondrain=()=>t[ne](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},fi=class extends Dr{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,r){super(t,e,r),this.proxyErrors=s=>e.emit("error",s),t.on("error",this.proxyErrors)}},el=i=>!!i.objectMode,rl=i=>!i.objectMode&&!!i.encoding&&i.encoding!=="buffer",no,ao,lo,ho,co,fo,uo,po,mo,go,wo,yo,bo,Eo,xo,So,ko,Co,vo,Ft=class extends Pr.EventEmitter{constructor(...e){let r=e[0]||{};super();u(this,vo,!1);u(this,Co,!1);u(this,ko,[]);u(this,So,[]);u(this,xo);u(this,Eo);u(this,bo);u(this,yo);u(this,wo,!1);u(this,go,!1);u(this,mo,!1);u(this,po,!1);u(this,uo,null);u(this,fo,0);u(this,co,!1);u(this,ho);u(this,lo,!1);u(this,ao,0);u(this,no,!1);u(this,"writable",!0);u(this,"readable",!0);if(r.objectMode&&typeof r.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");el(r)?(this[W]=!0,this[nt]=null):rl(r)?(this[nt]=r.encoding,this[W]=!1):(this[W]=!1,this[nt]=null),this[dt]=!!r.async,this[oe]=this[nt]?new To.StringDecoder(this[nt]):null,r&&r.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[B]}),r&&r.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[H]});let{signal:s}=r;s&&(this[ve]=s,s.aborted?this[ci]():s.addEventListener("abort",()=>this[ci]()))}get bufferLength(){return this[j]}get encoding(){return this[nt]}set encoding(e){throw new Error("Encoding must be set at instantiation time")}setEncoding(e){throw new Error("Encoding must be set at instantiation time")}get objectMode(){return this[W]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[dt]}set async(e){this[dt]=this[dt]||!!e}[(vo=L,Co=Ce,ko=H,So=B,xo=W,Eo=nt,bo=dt,yo=oe,wo=Et,go=Mt,mo=Cr,po=vr,uo=ke,fo=j,co=D,ho=ve,lo=Rr,ao=Ht,no=Y,ci)](){var e,r;this[Rr]=!0,this.emit("abort",(e=this[ve])==null?void 0:e.reason),this.destroy((r=this[ve])==null?void 0:r.reason)}get aborted(){return this[Rr]}set aborted(e){}write(e,r,s){var n;if(this[Rr])return!1;if(this[Et])throw new Error("write after end");if(this[D])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof r=="function"&&(s=r,r="utf8"),r||(r="utf8");let o=this[dt]?Te:Ya;if(!this[W]&&!Buffer.isBuffer(e)){if(tl(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(Xa(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[W]?(this[L]&&this[j]!==0&&this[Tr](!0),this[L]?this.emit("data",e):this[ni](e),this[j]!==0&&this.emit("readable"),s&&o(s),this[L]):e.length?(typeof e=="string"&&!(r===this[nt]&&!((n=this[oe])!=null&&n.lastNeed))&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[nt]&&(e=this[oe].write(e)),this[L]&&this[j]!==0&&this[Tr](!0),this[L]?this.emit("data",e):this[ni](e),this[j]!==0&&this.emit("readable"),s&&o(s),this[L]):(this[j]!==0&&this.emit("readable"),s&&o(s),this[L])}read(e){if(this[D])return null;if(this[Y]=!1,this[j]===0||e===0||e&&e>this[j])return this[xt](),null;this[W]&&(e=null),this[B].length>1&&!this[W]&&(this[B]=[this[nt]?this[B].join(""):Buffer.concat(this[B],this[j])]);let r=this[io](e||null,this[B][0]);return this[xt](),r}[io](e,r){if(this[W])this[Or]();else{let s=r;e===s.length||e===null?this[Or]():typeof s=="string"?(this[B][0]=s.slice(e),r=s.slice(0,e),this[j]-=e):(this[B][0]=s.subarray(e),r=s.subarray(0,e),this[j]-=e)}return this.emit("data",r),!this[B].length&&!this[Et]&&this.emit("drain"),r}end(e,r,s){return typeof e=="function"&&(s=e,e=void 0),typeof r=="function"&&(s=r,r="utf8"),e!==void 0&&this.write(e,r),s&&this.once("end",s),this[Et]=!0,this.writable=!1,(this[L]||!this[Ce])&&this[xt](),this}[ne](){this[D]||(!this[Ht]&&!this[H].length&&(this[Y]=!0),this[Ce]=!1,this[L]=!0,this.emit("resume"),this[B].length?this[Tr]():this[Et]?this[xt]():this.emit("drain"))}resume(){return this[ne]()}pause(){this[L]=!1,this[Ce]=!0,this[Y]=!1}get destroyed(){return this[D]}get flowing(){return this[L]}get paused(){return this[Ce]}[ni](e){this[W]?this[j]+=1:this[j]+=e.length,this[B].push(e)}[Or](){return this[W]?this[j]-=1:this[j]-=this[B][0].length,this[B].shift()}[Tr](e=!1){do;while(this[so](this[Or]())&&this[B].length);!e&&!this[B].length&&!this[Et]&&this.emit("drain")}[so](e){return this.emit("data",e),this[L]}pipe(e,r){if(this[D])return e;this[Y]=!1;let s=this[Mt];return r=r||{},e===ro.stdout||e===ro.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&e.end():(this[H].push(r.proxyErrors?new fi(this,e,r):new Dr(this,e,r)),this[dt]?Te(()=>this[ne]()):this[ne]()),e}unpipe(e){let r=this[H].find(s=>s.dest===e);r&&(this[H].length===1?(this[L]&&this[Ht]===0&&(this[L]=!1),this[H]=[]):this[H].splice(this[H].indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let s=super.on(e,r);if(e==="data")this[Y]=!1,this[Ht]++,!this[H].length&&!this[L]&&this[ne]();else if(e==="readable"&&this[j]!==0)super.emit("readable");else if(Za(e)&&this[Mt])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[ke]){let o=r;this[dt]?Te(()=>o.call(this,this[ke])):o.call(this,this[ke])}return s}removeListener(e,r){return this.off(e,r)}off(e,r){let s=super.off(e,r);return e==="data"&&(this[Ht]=this.listeners("data").length,this[Ht]===0&&!this[Y]&&!this[H].length&&(this[L]=!1)),s}removeAllListeners(e){let r=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Ht]=0,!this[Y]&&!this[H].length&&(this[L]=!1)),r}get emittedEnd(){return this[Mt]}[xt](){!this[Cr]&&!this[Mt]&&!this[D]&&this[B].length===0&&this[Et]&&(this[Cr]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[vr]&&this.emit("close"),this[Cr]=!1)}emit(e,...r){let s=r[0];if(e!=="error"&&e!=="close"&&e!==D&&this[D])return!1;if(e==="data")return!this[W]&&!s?!1:this[dt]?(Te(()=>this[li](s)),!0):this[li](s);if(e==="end")return this[oo]();if(e==="close"){if(this[vr]=!0,!this[Mt]&&!this[D])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[ke]=s,super.emit(ai,s);let n=!this[ve]||this.listeners("error").length?super.emit("error",s):!1;return this[xt](),n}else if(e==="resume"){let n=super.emit("resume");return this[xt](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let o=super.emit(e,...r);return this[xt](),o}[li](e){for(let s of this[H])s.dest.write(e)===!1&&this.pause();let r=this[Y]?!1:super.emit("data",e);return this[xt](),r}[oo](){return this[Mt]?!1:(this[Mt]=!0,this.readable=!1,this[dt]?(Te(()=>this[hi]()),!0):this[hi]())}[hi](){if(this[oe]){let r=this[oe].end();if(r){for(let s of this[H])s.dest.write(r);this[Y]||super.emit("data",r)}}for(let r of this[H])r.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[W]||(e.dataLength=0);let r=this.promise();return this.on("data",s=>{e.push(s),this[W]||(e.dataLength+=s.length)}),await r,e}async concat(){if(this[W])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[nt]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,r)=>{this.on(D,()=>r(new Error("stream destroyed"))),this.on("error",s=>r(s)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[Y]=!1;let e=!1,r=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return r();let o=this.read();if(o!==null)return Promise.resolve({done:!1,value:o});if(this[Et])return r();let n,h,l=m=>{this.off("data",c),this.off("end",f),this.off(D,d),r(),h(m)},c=m=>{this.off("error",l),this.off("end",f),this.off(D,d),this.pause(),n({value:m,done:!!this[Et]})},f=()=>{this.off("error",l),this.off("data",c),this.off(D,d),r(),n({done:!0,value:void 0})},d=()=>l(new Error("stream destroyed"));return new Promise((m,y)=>{h=y,n=m,this.once(D,d),this.once("error",l),this.once("end",f),this.once("data",c)})},throw:r,return:r,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[Y]=!1;let e=!1,r=()=>(this.pause(),this.off(ai,r),this.off(D,r),this.off("end",r),e=!0,{done:!0,value:void 0}),s=()=>{if(e)return r();let o=this.read();return o===null?r():{done:!1,value:o}};return this.once("end",r),this.once(ai,r),this.once(D,r),{next:s,throw:r,return:r,[Symbol.iterator](){return this}}}destroy(e){if(this[D])return e?this.emit("error",e):this.emit(D),this;this[D]=!0,this[Y]=!0,this[B].length=0,this[j]=0;let r=this;return typeof r.close=="function"&&!this[vr]&&r.close(),e?this.emit("error",e):this.emit(D),this}static get isStream(){return Va}};var sl=yt.realpathSync.native,Re={lstatSync:yt.lstatSync,readdir:yt.readdir,readdirSync:yt.readdirSync,readlinkSync:yt.readlinkSync,realpathSync:sl,promises:{lstat:Nt.lstat,readdir:Nt.readdir,readlink:Nt.readlink,realpath:Nt.realpath}},Mo=i=>!i||i===Re||i===il?Re:{...Re,...i,promises:{...Re.promises,...i.promises||{}}},Fo=/^\\\\\?\\([a-z]:)\\?$/i,ol=i=>i.replace(/\//g,"\\").replace(Fo,"$1\\"),nl=/[\\\/]/,rt=0,Io=1,No=2,mt=4,Lo=6,Bo=8,Vt=10,jo=12,et=15,Oe=~et,pi=16,Oo=32,De=64,at=128,Ar=256,Fr=512,Ro=De|at|Fr,al=1023,di=i=>i.isFile()?Bo:i.isDirectory()?mt:i.isSymbolicLink()?Vt:i.isCharacterDevice()?No:i.isBlockDevice()?Lo:i.isSocket()?jo:i.isFIFO()?Io:rt,Do=new Map,Pe=i=>{let t=Do.get(i);if(t)return t;let e=i.normalize("NFKD");return Do.set(i,e),e},Po=new Map,Mr=i=>{let t=Po.get(i);if(t)return t;let e=Pe(i.toLowerCase());return Po.set(i,e),e},Br=class extends Si.LRUCache{constructor(){super({max:256})}},mi=class extends Si.LRUCache{constructor(t=16*1024){super({maxSize:t,sizeCalculation:e=>e.length+1})}},_o=Symbol("PathScurry setAsCwd"),V,Ie,Ne,Le,Be,je,_e,$e,qe,Ue,We,ze,Ge,Qe,He,Ve,Ke,Je,Ye,It,Kt,gt,St,kt,Ct,x,Jt,vt,wt,E,gi,Ir,Ae,wi,yi,Me,Nr,bi,Ei,Lr,$o,qo,Uo,xi,ae,le,Wo,Yt,z=class{constructor(t,e=rt,r,s,o,n,h){w(this,E);u(this,"name");u(this,"root");u(this,"roots");u(this,"parent");u(this,"nocase");u(this,"isCWD",!1);w(this,V);w(this,Ie);w(this,Ne);w(this,Le);w(this,Be);w(this,je);w(this,_e);w(this,$e);w(this,qe);w(this,Ue);w(this,We);w(this,ze);w(this,Ge);w(this,Qe);w(this,He);w(this,Ve);w(this,Ke);w(this,Je);w(this,Ye);w(this,It);w(this,Kt);w(this,gt);w(this,St);w(this,kt);w(this,Ct);w(this,x);w(this,Jt);w(this,vt);w(this,wt);w(this,ae,[]);w(this,le,!1);w(this,Yt);this.name=t,p(this,It,o?Mr(t):Pe(t)),p(this,x,e&al),this.nocase=o,this.roots=s,this.root=r||this,p(this,Jt,n),p(this,gt,h.fullpath),p(this,kt,h.relative),p(this,Ct,h.relativePosix),this.parent=h.parent,this.parent?p(this,V,a(this.parent,V)):p(this,V,Mo(h.fs))}get dev(){return a(this,Ie)}get mode(){return a(this,Ne)}get nlink(){return a(this,Le)}get uid(){return a(this,Be)}get gid(){return a(this,je)}get rdev(){return a(this,_e)}get blksize(){return a(this,$e)}get ino(){return a(this,qe)}get size(){return a(this,Ue)}get blocks(){return a(this,We)}get atimeMs(){return a(this,ze)}get mtimeMs(){return a(this,Ge)}get ctimeMs(){return a(this,Qe)}get birthtimeMs(){return a(this,He)}get atime(){return a(this,Ve)}get mtime(){return a(this,Ke)}get ctime(){return a(this,Je)}get birthtime(){return a(this,Ye)}get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}depth(){return a(this,Kt)!==void 0?a(this,Kt):this.parent?p(this,Kt,this.parent.depth()+1):p(this,Kt,0)}childrenCache(){return a(this,Jt)}resolve(t){var n;if(!t)return this;let e=this.getRootString(t),s=t.substring(e.length).split(this.splitSep);return e?b(n=this.getRoot(e),E,gi).call(n,s):b(this,E,gi).call(this,s)}children(){let t=a(this,Jt).get(this);if(t)return t;let e=Object.assign([],{provisional:0});return a(this,Jt).set(this,e),p(this,x,a(this,x)&~pi),e}child(t,e){if(t===""||t===".")return this;if(t==="..")return this.parent||this;let r=this.children(),s=this.nocase?Mr(t):Pe(t);for(let l of r)if(a(l,It)===s)return l;let o=this.parent?this.sep:"",n=a(this,gt)?a(this,gt)+o+t:void 0,h=this.newChild(t,rt,{...e,parent:this,fullpath:n});return this.canReaddir()||p(h,x,a(h,x)|at),r.push(h),h}relative(){if(this.isCWD)return"";if(a(this,kt)!==void 0)return a(this,kt);let t=this.name,e=this.parent;if(!e)return p(this,kt,this.name);let r=e.relative();return r+(!r||!e.parent?"":this.sep)+t}relativePosix(){if(this.sep==="/")return this.relative();if(this.isCWD)return"";if(a(this,Ct)!==void 0)return a(this,Ct);let t=this.name,e=this.parent;if(!e)return p(this,Ct,this.fullpathPosix());let r=e.relativePosix();return r+(!r||!e.parent?"":"/")+t}fullpath(){if(a(this,gt)!==void 0)return a(this,gt);let t=this.name,e=this.parent;if(!e)return p(this,gt,this.name);let s=e.fullpath()+(e.parent?this.sep:"")+t;return p(this,gt,s)}fullpathPosix(){if(a(this,St)!==void 0)return a(this,St);if(this.sep==="/")return p(this,St,this.fullpath());if(!this.parent){let s=this.fullpath().replace(/\\/g,"/");return/^[a-z]:\//i.test(s)?p(this,St,`//?/${s}`):p(this,St,s)}let t=this.parent,e=t.fullpathPosix(),r=e+(!e||!t.parent?"":"/")+this.name;return p(this,St,r)}isUnknown(){return(a(this,x)&et)===rt}isType(t){return this[`is${t}`]()}getType(){return this.isUnknown()?"Unknown":this.isDirectory()?"Directory":this.isFile()?"File":this.isSymbolicLink()?"SymbolicLink":this.isFIFO()?"FIFO":this.isCharacterDevice()?"CharacterDevice":this.isBlockDevice()?"BlockDevice":this.isSocket()?"Socket":"Unknown"}isFile(){return(a(this,x)&et)===Bo}isDirectory(){return(a(this,x)&et)===mt}isCharacterDevice(){return(a(this,x)&et)===No}isBlockDevice(){return(a(this,x)&et)===Lo}isFIFO(){return(a(this,x)&et)===Io}isSocket(){return(a(this,x)&et)===jo}isSymbolicLink(){return(a(this,x)&Vt)===Vt}lstatCached(){return a(this,x)&Oo?this:void 0}readlinkCached(){return a(this,vt)}realpathCached(){return a(this,wt)}readdirCached(){let t=this.children();return t.slice(0,t.provisional)}canReadlink(){if(a(this,vt))return!0;if(!this.parent)return!1;let t=a(this,x)&et;return!(t!==rt&&t!==Vt||a(this,x)&Ar||a(this,x)&at)}calledReaddir(){return!!(a(this,x)&pi)}isENOENT(){return!!(a(this,x)&at)}isNamed(t){return this.nocase?a(this,It)===Mr(t):a(this,It)===Pe(t)}async readlink(){var e;let t=a(this,vt);if(t)return t;if(this.canReadlink()&&this.parent)try{let r=await a(this,V).promises.readlink(this.fullpath()),s=(e=await this.parent.realpath())==null?void 0:e.resolve(r);if(s)return p(this,vt,s)}catch(r){b(this,E,Ei).call(this,r.code);return}}readlinkSync(){var e;let t=a(this,vt);if(t)return t;if(this.canReadlink()&&this.parent)try{let r=a(this,V).readlinkSync(this.fullpath()),s=(e=this.parent.realpathSync())==null?void 0:e.resolve(r);if(s)return p(this,vt,s)}catch(r){b(this,E,Ei).call(this,r.code);return}}async lstat(){if(!(a(this,x)&at))try{return b(this,E,xi).call(this,await a(this,V).promises.lstat(this.fullpath())),this}catch(t){b(this,E,bi).call(this,t.code)}}lstatSync(){if(!(a(this,x)&at))try{return b(this,E,xi).call(this,a(this,V).lstatSync(this.fullpath())),this}catch(t){b(this,E,bi).call(this,t.code)}}readdirCB(t,e=!1){if(!this.canReaddir()){e?t(null,[]):queueMicrotask(()=>t(null,[]));return}let r=this.children();if(this.calledReaddir()){let o=r.slice(0,r.provisional);e?t(null,o):queueMicrotask(()=>t(null,o));return}if(a(this,ae).push(t),a(this,le))return;p(this,le,!0);let s=this.fullpath();a(this,V).readdir(s,{withFileTypes:!0},(o,n)=>{if(o)b(this,E,Nr).call(this,o.code),r.provisional=0;else{for(let h of n)b(this,E,Lr).call(this,h,r);b(this,E,Ir).call(this,r)}b(this,E,Wo).call(this,r.slice(0,r.provisional))})}async readdir(){if(!this.canReaddir())return[];let t=this.children();if(this.calledReaddir())return t.slice(0,t.provisional);let e=this.fullpath();if(a(this,Yt))await a(this,Yt);else{let r=()=>{};p(this,Yt,new Promise(s=>r=s));try{for(let s of await a(this,V).promises.readdir(e,{withFileTypes:!0}))b(this,E,Lr).call(this,s,t);b(this,E,Ir).call(this,t)}catch(s){b(this,E,Nr).call(this,s.code),t.provisional=0}p(this,Yt,void 0),r()}return t.slice(0,t.provisional)}readdirSync(){if(!this.canReaddir())return[];let t=this.children();if(this.calledReaddir())return t.slice(0,t.provisional);let e=this.fullpath();try{for(let r of a(this,V).readdirSync(e,{withFileTypes:!0}))b(this,E,Lr).call(this,r,t);b(this,E,Ir).call(this,t)}catch(r){b(this,E,Nr).call(this,r.code),t.provisional=0}return t.slice(0,t.provisional)}canReaddir(){if(a(this,x)&Ro)return!1;let t=et&a(this,x);return t===rt||t===mt||t===Vt}shouldWalk(t,e){return(a(this,x)&mt)===mt&&!(a(this,x)&Ro)&&!t.has(this)&&(!e||e(this))}async realpath(){if(a(this,wt))return a(this,wt);if(!((Fr|Ar|at)&a(this,x)))try{let t=await a(this,V).promises.realpath(this.fullpath());return p(this,wt,this.resolve(t))}catch(t){b(this,E,yi).call(this)}}realpathSync(){if(a(this,wt))return a(this,wt);if(!((Fr|Ar|at)&a(this,x)))try{let t=a(this,V).realpathSync(this.fullpath());return p(this,wt,this.resolve(t))}catch(t){b(this,E,yi).call(this)}}[_o](t){if(t===this)return;t.isCWD=!1,this.isCWD=!0;let e=new Set([]),r=[],s=this;for(;s&&s.parent;)e.add(s),p(s,kt,r.join(this.sep)),p(s,Ct,r.join("/")),s=s.parent,r.push("..");for(s=t;s&&s.parent&&!e.has(s);)p(s,kt,void 0),p(s,Ct,void 0),s=s.parent}};V=new WeakMap,Ie=new WeakMap,Ne=new WeakMap,Le=new WeakMap,Be=new WeakMap,je=new WeakMap,_e=new WeakMap,$e=new WeakMap,qe=new WeakMap,Ue=new WeakMap,We=new WeakMap,ze=new WeakMap,Ge=new WeakMap,Qe=new WeakMap,He=new WeakMap,Ve=new WeakMap,Ke=new WeakMap,Je=new WeakMap,Ye=new WeakMap,It=new WeakMap,Kt=new WeakMap,gt=new WeakMap,St=new WeakMap,kt=new WeakMap,Ct=new WeakMap,x=new WeakMap,Jt=new WeakMap,vt=new WeakMap,wt=new WeakMap,E=new WeakSet,gi=function(t){let e=this;for(let r of t)e=e.child(r);return e},Ir=function(t){var e;p(this,x,a(this,x)|pi);for(let r=t.provisional;r<t.length;r++){let s=t[r];s&&b(e=s,E,Ae).call(e)}},Ae=function(){a(this,x)&at||(p(this,x,(a(this,x)|at)&Oe),b(this,E,wi).call(this))},wi=function(){var e;let t=this.children();t.provisional=0;for(let r of t)b(e=r,E,Ae).call(e)},yi=function(){p(this,x,a(this,x)|Fr),b(this,E,Me).call(this)},Me=function(){if(a(this,x)&De)return;let t=a(this,x);(t&et)===mt&&(t&=Oe),p(this,x,t|De),b(this,E,wi).call(this)},Nr=function(t=""){t==="ENOTDIR"||t==="EPERM"?b(this,E,Me).call(this):t==="ENOENT"?b(this,E,Ae).call(this):this.children().provisional=0},bi=function(t=""){var e;if(t==="ENOTDIR"){let r=this.parent;b(e=r,E,Me).call(e)}else t==="ENOENT"&&b(this,E,Ae).call(this)},Ei=function(t=""){var r;let e=a(this,x);e|=Ar,t==="ENOENT"&&(e|=at),(t==="EINVAL"||t==="UNKNOWN")&&(e&=Oe),p(this,x,e),t==="ENOTDIR"&&this.parent&&b(r=this.parent,E,Me).call(r)},Lr=function(t,e){return b(this,E,qo).call(this,t,e)||b(this,E,$o).call(this,t,e)},$o=function(t,e){let r=di(t),s=this.newChild(t.name,r,{parent:this}),o=a(s,x)&et;return o!==mt&&o!==Vt&&o!==rt&&p(s,x,a(s,x)|De),e.unshift(s),e.provisional++,s},qo=function(t,e){for(let r=e.provisional;r<e.length;r++){let s=e[r];if((this.nocase?Mr(t.name):Pe(t.name))===a(s,It))return b(this,E,Uo).call(this,t,s,r,e)}},Uo=function(t,e,r,s){let o=e.name;return p(e,x,a(e,x)&Oe|di(t)),o!==t.name&&(e.name=t.name),r!==s.provisional&&(r===s.length-1?s.pop():s.splice(r,1),s.unshift(e)),s.provisional++,e},xi=function(t){let{atime:e,atimeMs:r,birthtime:s,birthtimeMs:o,blksize:n,blocks:h,ctime:l,ctimeMs:c,dev:f,gid:d,ino:m,mode:y,mtime:v,mtimeMs:g,nlink:k,rdev:S,size:T,uid:O}=t;p(this,Ve,e),p(this,ze,r),p(this,Ye,s),p(this,He,o),p(this,$e,n),p(this,We,h),p(this,Je,l),p(this,Qe,c),p(this,Ie,f),p(this,je,d),p(this,qe,m),p(this,Ne,y),p(this,Ke,v),p(this,Ge,g),p(this,Le,k),p(this,_e,S),p(this,Ue,T),p(this,Be,O);let A=di(t);p(this,x,a(this,x)&Oe|A|Oo),A!==rt&&A!==mt&&A!==Vt&&p(this,x,a(this,x)|De)},ae=new WeakMap,le=new WeakMap,Wo=function(t){p(this,le,!1);let e=a(this,ae).slice();a(this,ae).length=0,e.forEach(r=>r(null,t))},Yt=new WeakMap;var jr=class i extends z{constructor(e,r=rt,s,o,n,h,l){super(e,r,s,o,n,h,l);u(this,"sep","\\");u(this,"splitSep",nl)}newChild(e,r=rt,s={}){return new i(e,r,this.root,this.roots,this.nocase,this.childrenCache(),s)}getRootString(e){return fe.win32.parse(e).root}getRoot(e){if(e=ol(e.toUpperCase()),e===this.root.name)return this.root;for(let[r,s]of Object.entries(this.roots))if(this.sameRoot(e,r))return this.roots[e]=s;return this.roots[e]=new ue(e,this).root}sameRoot(e,r=this.root.name){return e=e.toUpperCase().replace(/\//g,"\\").replace(Fo,"$1\\"),e===r}},_r=class i extends z{constructor(e,r=rt,s,o,n,h,l){super(e,r,s,o,n,h,l);u(this,"splitSep","/");u(this,"sep","/")}getRootString(e){return e.startsWith("/")?"/":""}getRoot(e){return this.root}newChild(e,r=rt,s={}){return new i(e,r,this.root,this.roots,this.nocase,this.childrenCache(),s)}},he,ce,Ze,Xe,$r=class{constructor(t=process.cwd(),e,r,{nocase:s,childrenCacheSize:o=16*1024,fs:n=Re}={}){u(this,"root");u(this,"rootPath");u(this,"roots");u(this,"cwd");w(this,he);w(this,ce);w(this,Ze);u(this,"nocase");w(this,Xe);p(this,Xe,Mo(n)),(t instanceof URL||t.startsWith("file://"))&&(t=(0,Ao.fileURLToPath)(t));let h=e.resolve(t);this.roots=Object.create(null),this.rootPath=this.parseRootPath(h),p(this,he,new Br),p(this,ce,new Br),p(this,Ze,new mi(o));let l=h.substring(this.rootPath.length).split(r);if(l.length===1&&!l[0]&&l.pop(),s===void 0)throw new TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=s,this.root=this.newRoot(a(this,Xe)),this.roots[this.rootPath]=this.root;let c=this.root,f=l.length-1,d=e.sep,m=this.rootPath,y=!1;for(let v of l){let g=f--;c=c.child(v,{relative:new Array(g).fill("..").join(d),relativePosix:new Array(g).fill("..").join("/"),fullpath:m+=(y?"":d)+v}),y=!0}this.cwd=c}depth(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.depth()}childrenCache(){return a(this,Ze)}resolve(...t){let e="";for(let o=t.length-1;o>=0;o--){let n=t[o];if(!(!n||n===".")&&(e=e?`${n}/${e}`:n,this.isAbsolute(n)))break}let r=a(this,he).get(e);if(r!==void 0)return r;let s=this.cwd.resolve(e).fullpath();return a(this,he).set(e,s),s}resolvePosix(...t){let e="";for(let o=t.length-1;o>=0;o--){let n=t[o];if(!(!n||n===".")&&(e=e?`${n}/${e}`:n,this.isAbsolute(n)))break}let r=a(this,ce).get(e);if(r!==void 0)return r;let s=this.cwd.resolve(e).fullpathPosix();return a(this,ce).set(e,s),s}relative(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.relative()}relativePosix(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.relativePosix()}basename(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.name}dirname(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),(t.parent||t).fullpath()}async readdir(t=this.cwd,e={withFileTypes:!0}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t,t=this.cwd);let{withFileTypes:r}=e;if(t.canReaddir()){let s=await t.readdir();return r?s:s.map(o=>o.name)}else return[]}readdirSync(t=this.cwd,e={withFileTypes:!0}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t,t=this.cwd);let{withFileTypes:r=!0}=e;return t.canReaddir()?r?t.readdirSync():t.readdirSync().map(s=>s.name):[]}async lstat(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.lstat()}lstatSync(t=this.cwd){return typeof t=="string"&&(t=this.cwd.resolve(t)),t.lstatSync()}async readlink(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t.withFileTypes,t=this.cwd);let r=await t.readlink();return e?r:r==null?void 0:r.fullpath()}readlinkSync(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t.withFileTypes,t=this.cwd);let r=t.readlinkSync();return e?r:r==null?void 0:r.fullpath()}async realpath(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t.withFileTypes,t=this.cwd);let r=await t.realpath();return e?r:r==null?void 0:r.fullpath()}realpathSync(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t.withFileTypes,t=this.cwd);let r=t.realpathSync();return e?r:r==null?void 0:r.fullpath()}async walk(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t,t=this.cwd);let{withFileTypes:r=!0,follow:s=!1,filter:o,walkFilter:n}=e,h=[];(!o||o(t))&&h.push(r?t:t.fullpath());let l=new Set,c=(d,m)=>{l.add(d),d.readdirCB((y,v)=>{if(y)return m(y);let g=v.length;if(!g)return m();let k=()=>{--g===0&&m()};for(let S of v)(!o||o(S))&&h.push(r?S:S.fullpath()),s&&S.isSymbolicLink()?S.realpath().then(T=>T!=null&&T.isUnknown()?T.lstat():T).then(T=>T!=null&&T.shouldWalk(l,n)?c(T,k):k()):S.shouldWalk(l,n)?c(S,k):k()},!0)},f=t;return new Promise((d,m)=>{c(f,y=>{if(y)return m(y);d(h)})})}walkSync(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t,t=this.cwd);let{withFileTypes:r=!0,follow:s=!1,filter:o,walkFilter:n}=e,h=[];(!o||o(t))&&h.push(r?t:t.fullpath());let l=new Set([t]);for(let c of l){let f=c.readdirSync();for(let d of f){(!o||o(d))&&h.push(r?d:d.fullpath());let m=d;if(d.isSymbolicLink()){if(!(s&&(m=d.realpathSync())))continue;m.isUnknown()&&m.lstatSync()}m.shouldWalk(l,n)&&l.add(m)}}return h}[Symbol.asyncIterator](){return this.iterate()}iterate(t=this.cwd,e={}){return typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t,t=this.cwd),this.stream(t,e)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t,t=this.cwd);let{withFileTypes:r=!0,follow:s=!1,filter:o,walkFilter:n}=e;(!o||o(t))&&(yield r?t:t.fullpath());let h=new Set([t]);for(let l of h){let c=l.readdirSync();for(let f of c){(!o||o(f))&&(yield r?f:f.fullpath());let d=f;if(f.isSymbolicLink()){if(!(s&&(d=f.realpathSync())))continue;d.isUnknown()&&d.lstatSync()}d.shouldWalk(h,n)&&h.add(d)}}}stream(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t,t=this.cwd);let{withFileTypes:r=!0,follow:s=!1,filter:o,walkFilter:n}=e,h=new Ft({objectMode:!0});(!o||o(t))&&h.write(r?t:t.fullpath());let l=new Set,c=[t],f=0,d=()=>{let m=!1;for(;!m;){let y=c.shift();if(!y){f===0&&h.end();return}f++,l.add(y);let v=(k,S,T=!1)=>{if(k)return h.emit("error",k);if(s&&!T){let O=[];for(let A of S)A.isSymbolicLink()&&O.push(A.realpath().then(K=>K!=null&&K.isUnknown()?K.lstat():K));if(O.length){Promise.all(O).then(()=>v(null,S,!0));return}}for(let O of S)O&&(!o||o(O))&&(h.write(r?O:O.fullpath())||(m=!0));f--;for(let O of S){let A=O.realpathCached()||O;A.shouldWalk(l,n)&&c.push(A)}m&&!h.flowing?h.once("drain",d):g||d()},g=!0;y.readdirCB(v,!0),g=!1}};return d(),h}streamSync(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t,t=this.cwd);let{withFileTypes:r=!0,follow:s=!1,filter:o,walkFilter:n}=e,h=new Ft({objectMode:!0}),l=new Set;(!o||o(t))&&h.write(r?t:t.fullpath());let c=[t],f=0,d=()=>{let m=!1;for(;!m;){let y=c.shift();if(!y){f===0&&h.end();return}f++,l.add(y);let v=y.readdirSync();for(let g of v)(!o||o(g))&&(h.write(r?g:g.fullpath())||(m=!0));f--;for(let g of v){let k=g;if(g.isSymbolicLink()){if(!(s&&(k=g.realpathSync())))continue;k.isUnknown()&&k.lstatSync()}k.shouldWalk(l,n)&&c.push(k)}}m&&!h.flowing&&h.once("drain",d)};return d(),h}chdir(t=this.cwd){let e=this.cwd;this.cwd=typeof t=="string"?this.cwd.resolve(t):t,this.cwd[_o](e)}};he=new WeakMap,ce=new WeakMap,Ze=new WeakMap,Xe=new WeakMap;var ue=class extends $r{constructor(e=process.cwd(),r={}){let{nocase:s=!0}=r;super(e,fe.win32,"\\",{...r,nocase:s});u(this,"sep","\\");this.nocase=s;for(let o=this.cwd;o;o=o.parent)o.nocase=this.nocase}parseRootPath(e){return fe.win32.parse(e).root.toUpperCase()}newRoot(e){return new jr(this.rootPath,mt,void 0,this.roots,this.nocase,this.childrenCache(),{fs:e})}isAbsolute(e){return e.startsWith("/")||e.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(e)}},pe=class extends $r{constructor(e=process.cwd(),r={}){let{nocase:s=!1}=r;super(e,fe.posix,"/",{...r,nocase:s});u(this,"sep","/");this.nocase=s}parseRootPath(e){return"/"}newRoot(e){return new _r(this.rootPath,mt,void 0,this.roots,this.nocase,this.childrenCache(),{fs:e})}isAbsolute(e){return e.startsWith("/")}},Fe=class extends pe{constructor(t=process.cwd(),e={}){let{nocase:r=!0}=e;super(t,{...e,nocase:r})}},Kh=process.platform==="win32"?jr:_r,zo=process.platform==="win32"?ue:process.platform==="darwin"?Fe:pe;var ll=i=>i.length>=1,hl=i=>i.length>=1,I,Z,_,Zt,lt,tr,Lt,Bt,jt,de,ki=class ki{constructor(t,e,r,s){w(this,I);w(this,Z);w(this,_);u(this,"length");w(this,Zt);w(this,lt);w(this,tr);w(this,Lt);w(this,Bt);w(this,jt);w(this,de,!0);if(!ll(t))throw new TypeError("empty pattern list");if(!hl(e))throw new TypeError("empty glob list");if(e.length!==t.length)throw new TypeError("mismatched pattern list and glob list lengths");if(this.length=t.length,r<0||r>=this.length)throw new TypeError("index out of range");if(p(this,I,t),p(this,Z,e),p(this,_,r),p(this,Zt,s),a(this,_)===0){if(this.isUNC()){let[o,n,h,l,...c]=a(this,I),[f,d,m,y,...v]=a(this,Z);c[0]===""&&(c.shift(),v.shift());let g=[o,n,h,l,""].join("/"),k=[f,d,m,y,""].join("/");p(this,I,[g,...c]),p(this,Z,[k,...v]),this.length=a(this,I).length}else if(this.isDrive()||this.isAbsolute()){let[o,...n]=a(this,I),[h,...l]=a(this,Z);n[0]===""&&(n.shift(),l.shift());let c=o+"/",f=h+"/";p(this,I,[c,...n]),p(this,Z,[f,...l]),this.length=a(this,I).length}}}pattern(){return a(this,I)[a(this,_)]}isString(){return typeof a(this,I)[a(this,_)]=="string"}isGlobstar(){return a(this,I)[a(this,_)]===q}isRegExp(){return a(this,I)[a(this,_)]instanceof RegExp}globString(){return p(this,tr,a(this,tr)||(a(this,_)===0?this.isAbsolute()?a(this,Z)[0]+a(this,Z).slice(1).join("/"):a(this,Z).join("/"):a(this,Z).slice(a(this,_)).join("/")))}hasMore(){return this.length>a(this,_)+1}rest(){return a(this,lt)!==void 0?a(this,lt):this.hasMore()?(p(this,lt,new ki(a(this,I),a(this,Z),a(this,_)+1,a(this,Zt))),p(a(this,lt),jt,a(this,jt)),p(a(this,lt),Bt,a(this,Bt)),p(a(this,lt),Lt,a(this,Lt)),a(this,lt)):p(this,lt,null)}isUNC(){let t=a(this,I);return a(this,Bt)!==void 0?a(this,Bt):p(this,Bt,a(this,Zt)==="win32"&&a(this,_)===0&&t[0]===""&&t[1]===""&&typeof t[2]=="string"&&!!t[2]&&typeof t[3]=="string"&&!!t[3])}isDrive(){let t=a(this,I);return a(this,Lt)!==void 0?a(this,Lt):p(this,Lt,a(this,Zt)==="win32"&&a(this,_)===0&&this.length>1&&typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]))}isAbsolute(){let t=a(this,I);return a(this,jt)!==void 0?a(this,jt):p(this,jt,t[0]===""&&t.length>1||this.isDrive()||this.isUNC())}root(){let t=a(this,I)[0];return typeof t=="string"&&this.isAbsolute()&&a(this,_)===0?t:""}checkFollowGlobstar(){return!(a(this,_)===0||!this.isGlobstar()||!a(this,de))}markFollowGlobstar(){return a(this,_)===0||!this.isGlobstar()||!a(this,de)?!1:(p(this,de,!1),!0)}};I=new WeakMap,Z=new WeakMap,_=new WeakMap,Zt=new WeakMap,lt=new WeakMap,tr=new WeakMap,Lt=new WeakMap,Bt=new WeakMap,jt=new WeakMap,de=new WeakMap;var me=ki;var cl=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",ge=class{constructor(t,{nobrace:e,nocase:r,noext:s,noglobstar:o,platform:n=cl}){u(this,"relative");u(this,"relativeChildren");u(this,"absolute");u(this,"absoluteChildren");u(this,"platform");u(this,"mmopts");this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[],this.platform=n,this.mmopts={dot:!0,nobrace:e,nocase:r,noext:s,noglobstar:o,optimizationLevel:2,platform:n,nocomment:!0,nonegate:!0};for(let h of t)this.add(h)}add(t){let e=new J(t,this.mmopts);for(let r=0;r<e.set.length;r++){let s=e.set[r],o=e.globParts[r];if(!s||!o)throw new Error("invalid pattern object");for(;s[0]==="."&&o[0]===".";)s.shift(),o.shift();let n=new me(s,o,0,this.platform),h=new J(n.globString(),this.mmopts),l=o[o.length-1]==="**",c=n.isAbsolute();c?this.absolute.push(h):this.relative.push(h),l&&(c?this.absoluteChildren.push(h):this.relativeChildren.push(h))}}ignored(t){let e=t.fullpath(),r=`${e}/`,s=t.relative()||".",o=`${s}/`;for(let n of this.relative)if(n.match(s)||n.match(o))return!0;for(let n of this.absolute)if(n.match(e)||n.match(r))return!0;return!1}childrenIgnored(t){let e=t.fullpath()+"/",r=(t.relative()||".")+"/";for(let s of this.relativeChildren)if(s.match(r))return!0;for(let s of this.absoluteChildren)if(s.match(e))return!0;return!1}};var Ci=class i{constructor(t=new Map){u(this,"store");this.store=t}copy(){return new i(new Map(this.store))}hasWalked(t,e){var r;return(r=this.store.get(t.fullpath()))==null?void 0:r.has(e.globString())}storeWalked(t,e){let r=t.fullpath(),s=this.store.get(r);s?s.add(e.globString()):this.store.set(r,new Set([e.globString()]))}},vi=class{constructor(){u(this,"store",new Map)}add(t,e,r){let s=(e?2:0)|(r?1:0),o=this.store.get(t);this.store.set(t,o===void 0?s:s&o)}entries(){return[...this.store.entries()].map(([t,e])=>[t,!!(e&2),!!(e&1)])}},Ti=class{constructor(){u(this,"store",new Map)}add(t,e){if(!t.canReaddir())return;let r=this.store.get(t);r?r.find(s=>s.globString()===e.globString())||r.push(e):this.store.set(t,[e])}get(t){let e=this.store.get(t);if(!e)throw new Error("attempting to walk unknown path");return e}entries(){return this.keys().map(t=>[t,this.store.get(t)])}keys(){return[...this.store.keys()].filter(t=>t.canReaddir())}},er=class i{constructor(t,e){u(this,"hasWalkedCache");u(this,"matches",new vi);u(this,"subwalks",new Ti);u(this,"patterns");u(this,"follow");u(this,"dot");u(this,"opts");this.opts=t,this.follow=!!t.follow,this.dot=!!t.dot,this.hasWalkedCache=e?e.copy():new Ci}processPatterns(t,e){this.patterns=e;let r=e.map(s=>[t,s]);for(let[s,o]of r){this.hasWalkedCache.storeWalked(s,o);let n=o.root(),h=o.isAbsolute()&&this.opts.absolute!==!1;if(n){s=s.resolve(n==="/"&&this.opts.root!==void 0?this.opts.root:n);let d=o.rest();if(d)o=d;else{this.matches.add(s,!0,!1);continue}}if(s.isENOENT())continue;let l,c,f=!1;for(;typeof(l=o.pattern())=="string"&&(c=o.rest());)s=s.resolve(l),o=c,f=!0;if(l=o.pattern(),c=o.rest(),f){if(this.hasWalkedCache.hasWalked(s,o))continue;this.hasWalkedCache.storeWalked(s,o)}if(typeof l=="string"){let d=l===".."||l===""||l===".";this.matches.add(s.resolve(l),h,d);continue}else if(l===q){(!s.isSymbolicLink()||this.follow||o.checkFollowGlobstar())&&this.subwalks.add(s,o);let d=c==null?void 0:c.pattern(),m=c==null?void 0:c.rest();if(!c||(d===""||d===".")&&!m)this.matches.add(s,h,d===""||d===".");else if(d===".."){let y=s.parent||s;m?this.hasWalkedCache.hasWalked(y,m)||this.subwalks.add(y,m):this.matches.add(y,h,!0)}}else l instanceof RegExp&&this.subwalks.add(s,o)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new i(this.opts,this.hasWalkedCache)}filterEntries(t,e){let r=this.subwalks.get(t),s=this.child();for(let o of e)for(let n of r){let h=n.isAbsolute(),l=n.pattern(),c=n.rest();l===q?s.testGlobstar(o,n,c,h):l instanceof RegExp?s.testRegExp(o,l,c,h):s.testString(o,l,c,h)}return s}testGlobstar(t,e,r,s){if((this.dot||!t.name.startsWith("."))&&(e.hasMore()||this.matches.add(t,s,!1),t.canReaddir()&&(this.follow||!t.isSymbolicLink()?this.subwalks.add(t,e):t.isSymbolicLink()&&(r&&e.checkFollowGlobstar()?this.subwalks.add(t,r):e.markFollowGlobstar()&&this.subwalks.add(t,e)))),r){let o=r.pattern();if(typeof o=="string"&&o!==".."&&o!==""&&o!==".")this.testString(t,o,r.rest(),s);else if(o===".."){let n=t.parent||t;this.subwalks.add(n,r)}else o instanceof RegExp&&this.testRegExp(t,o,r.rest(),s)}}testRegExp(t,e,r,s){e.test(t.name)&&(r?this.subwalks.add(t,r):this.matches.add(t,s,!1))}testString(t,e,r,s){t.isNamed(e)&&(r?this.subwalks.add(t,r):this.matches.add(t,s,!1))}};var fl=(i,t)=>typeof i=="string"?new ge([i],t):Array.isArray(i)?new ge(i,t):i,we,Tt,te,it,Xt,Oi,qr=class{constructor(t,e,r){w(this,it);u(this,"path");u(this,"patterns");u(this,"opts");u(this,"seen",new Set);u(this,"paused",!1);u(this,"aborted",!1);w(this,we,[]);w(this,Tt);w(this,te);u(this,"signal");u(this,"maxDepth");u(this,"includeChildMatches");var s;if(this.patterns=t,this.path=e,this.opts=r,p(this,te,!r.posix&&r.platform==="win32"?"\\":"/"),this.includeChildMatches=r.includeChildMatches!==!1,(r.ignore||!this.includeChildMatches)&&(p(this,Tt,fl((s=r.ignore)!=null?s:[],r)),!this.includeChildMatches&&typeof a(this,Tt).add!="function")){let o="cannot ignore child matches, ignore lacks add() method.";throw new Error(o)}this.maxDepth=r.maxDepth||1/0,r.signal&&(this.signal=r.signal,this.signal.addEventListener("abort",()=>{a(this,we).length=0}))}pause(){this.paused=!0}resume(){var e;if((e=this.signal)!=null&&e.aborted)return;this.paused=!1;let t;for(;!this.paused&&(t=a(this,we).shift());)t()}onResume(t){var e;(e=this.signal)!=null&&e.aborted||(this.paused?a(this,we).push(t):t())}async matchCheck(t,e){if(e&&this.opts.nodir)return;let r;if(this.opts.realpath){if(r=t.realpathCached()||await t.realpath(),!r)return;t=r}let o=t.isUnknown()||this.opts.stat?await t.lstat():t;if(this.opts.follow&&this.opts.nodir&&(o!=null&&o.isSymbolicLink())){let n=await o.realpath();n&&(n.isUnknown()||this.opts.stat)&&await n.lstat()}return this.matchCheckTest(o,e)}matchCheckTest(t,e){var r;return t&&(this.maxDepth===1/0||t.depth()<=this.maxDepth)&&(!e||t.canReaddir())&&(!this.opts.nodir||!t.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!t.isSymbolicLink()||!((r=t.realpathCached())!=null&&r.isDirectory()))&&!b(this,it,Xt).call(this,t)?t:void 0}matchCheckSync(t,e){if(e&&this.opts.nodir)return;let r;if(this.opts.realpath){if(r=t.realpathCached()||t.realpathSync(),!r)return;t=r}let o=t.isUnknown()||this.opts.stat?t.lstatSync():t;if(this.opts.follow&&this.opts.nodir&&(o!=null&&o.isSymbolicLink())){let n=o.realpathSync();n&&(n!=null&&n.isUnknown()||this.opts.stat)&&n.lstatSync()}return this.matchCheckTest(o,e)}matchFinish(t,e){var o;if(b(this,it,Xt).call(this,t))return;if(!this.includeChildMatches&&((o=a(this,Tt))!=null&&o.add)){let n=`${t.relativePosix()}/**`;a(this,Tt).add(n)}let r=this.opts.absolute===void 0?e:this.opts.absolute;this.seen.add(t);let s=this.opts.mark&&t.isDirectory()?a(this,te):"";if(this.opts.withFileTypes)this.matchEmit(t);else if(r){let n=this.opts.posix?t.fullpathPosix():t.fullpath();this.matchEmit(n+s)}else{let n=this.opts.posix?t.relativePosix():t.relative(),h=this.opts.dotRelative&&!n.startsWith(".."+a(this,te))?"."+a(this,te):"";this.matchEmit(n?h+n+s:"."+s)}}async match(t,e,r){let s=await this.matchCheck(t,r);s&&this.matchFinish(s,e)}matchSync(t,e,r){let s=this.matchCheckSync(t,r);s&&this.matchFinish(s,e)}walkCB(t,e,r){var s;(s=this.signal)!=null&&s.aborted&&r(),this.walkCB2(t,e,new er(this.opts),r)}walkCB2(t,e,r,s){var h;if(b(this,it,Oi).call(this,t))return s();if((h=this.signal)!=null&&h.aborted&&s(),this.paused){this.onResume(()=>this.walkCB2(t,e,r,s));return}r.processPatterns(t,e);let o=1,n=()=>{--o===0&&s()};for(let[l,c,f]of r.matches.entries())b(this,it,Xt).call(this,l)||(o++,this.match(l,c,f).then(()=>n()));for(let l of r.subwalkTargets()){if(this.maxDepth!==1/0&&l.depth()>=this.maxDepth)continue;o++;let c=l.readdirCached();l.calledReaddir()?this.walkCB3(l,c,r,n):l.readdirCB((f,d)=>this.walkCB3(l,d,r,n),!0)}n()}walkCB3(t,e,r,s){r=r.filterEntries(t,e);let o=1,n=()=>{--o===0&&s()};for(let[h,l,c]of r.matches.entries())b(this,it,Xt).call(this,h)||(o++,this.match(h,l,c).then(()=>n()));for(let[h,l]of r.subwalks.entries())o++,this.walkCB2(h,l,r.child(),n);n()}walkCBSync(t,e,r){var s;(s=this.signal)!=null&&s.aborted&&r(),this.walkCB2Sync(t,e,new er(this.opts),r)}walkCB2Sync(t,e,r,s){var h;if(b(this,it,Oi).call(this,t))return s();if((h=this.signal)!=null&&h.aborted&&s(),this.paused){this.onResume(()=>this.walkCB2Sync(t,e,r,s));return}r.processPatterns(t,e);let o=1,n=()=>{--o===0&&s()};for(let[l,c,f]of r.matches.entries())b(this,it,Xt).call(this,l)||this.matchSync(l,c,f);for(let l of r.subwalkTargets()){if(this.maxDepth!==1/0&&l.depth()>=this.maxDepth)continue;o++;let c=l.readdirSync();this.walkCB3Sync(l,c,r,n)}n()}walkCB3Sync(t,e,r,s){r=r.filterEntries(t,e);let o=1,n=()=>{--o===0&&s()};for(let[h,l,c]of r.matches.entries())b(this,it,Xt).call(this,h)||this.matchSync(h,l,c);for(let[h,l]of r.subwalks.entries())o++,this.walkCB2Sync(h,l,r.child(),n);n()}};we=new WeakMap,Tt=new WeakMap,te=new WeakMap,it=new WeakSet,Xt=function(t){var e,r;return this.seen.has(t)||!!((r=(e=a(this,Tt))==null?void 0:e.ignored)!=null&&r.call(e,t))},Oi=function(t){var e,r;return!!((r=(e=a(this,Tt))==null?void 0:e.childrenIgnored)!=null&&r.call(e,t))};var rr=class extends qr{constructor(e,r,s){super(e,r,s);u(this,"matches",new Set)}matchEmit(e){this.matches.add(e)}async walk(){var e;if((e=this.signal)!=null&&e.aborted)throw this.signal.reason;return this.path.isUnknown()&&await this.path.lstat(),await new Promise((r,s)=>{this.walkCB(this.path,this.patterns,()=>{var o;(o=this.signal)!=null&&o.aborted?s(this.signal.reason):r(this.matches)})}),this.matches}walkSync(){var e;if((e=this.signal)!=null&&e.aborted)throw this.signal.reason;return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>{var r;if((r=this.signal)!=null&&r.aborted)throw this.signal.reason}),this.matches}},ir=class extends qr{constructor(e,r,s){super(e,r,s);u(this,"results");this.results=new Ft({signal:this.signal,objectMode:!0}),this.results.on("drain",()=>this.resume()),this.results.on("resume",()=>this.resume())}matchEmit(e){this.results.write(e),this.results.flowing||this.pause()}stream(){let e=this.path;return e.isUnknown()?e.lstat().then(()=>{this.walkCB(e,this.patterns,()=>this.results.end())}):this.walkCB(e,this.patterns,()=>this.results.end()),this.results}streamSync(){return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}};var ul=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",ht=class{constructor(t,e){u(this,"absolute");u(this,"cwd");u(this,"root");u(this,"dot");u(this,"dotRelative");u(this,"follow");u(this,"ignore");u(this,"magicalBraces");u(this,"mark");u(this,"matchBase");u(this,"maxDepth");u(this,"nobrace");u(this,"nocase");u(this,"nodir");u(this,"noext");u(this,"noglobstar");u(this,"pattern");u(this,"platform");u(this,"realpath");u(this,"scurry");u(this,"stat");u(this,"signal");u(this,"windowsPathsNoEscape");u(this,"withFileTypes");u(this,"includeChildMatches");u(this,"opts");u(this,"patterns");if(!e)throw new TypeError("glob options required");if(this.withFileTypes=!!e.withFileTypes,this.signal=e.signal,this.follow=!!e.follow,this.dot=!!e.dot,this.dotRelative=!!e.dotRelative,this.nodir=!!e.nodir,this.mark=!!e.mark,e.cwd?(e.cwd instanceof URL||e.cwd.startsWith("file://"))&&(e.cwd=(0,Go.fileURLToPath)(e.cwd)):this.cwd="",this.cwd=e.cwd||"",this.root=e.root,this.magicalBraces=!!e.magicalBraces,this.nobrace=!!e.nobrace,this.noext=!!e.noext,this.realpath=!!e.realpath,this.absolute=e.absolute,this.includeChildMatches=e.includeChildMatches!==!1,this.noglobstar=!!e.noglobstar,this.matchBase=!!e.matchBase,this.maxDepth=typeof e.maxDepth=="number"?e.maxDepth:1/0,this.stat=!!e.stat,this.ignore=e.ignore,this.withFileTypes&&this.absolute!==void 0)throw new Error("cannot set absolute and withFileTypes:true");if(typeof t=="string"&&(t=[t]),this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(t=t.map(l=>l.replace(/\\/g,"/"))),this.matchBase){if(e.noglobstar)throw new TypeError("base matching requires globstar");t=t.map(l=>l.includes("/")?l:`./**/${l}`)}if(this.pattern=t,this.platform=e.platform||ul,this.opts={...e,platform:this.platform},e.scurry){if(this.scurry=e.scurry,e.nocase!==void 0&&e.nocase!==e.scurry.nocase)throw new Error("nocase option contradicts provided scurry option")}else{let l=e.platform==="win32"?ue:e.platform==="darwin"?Fe:e.platform?pe:zo;this.scurry=new l(this.cwd,{nocase:e.nocase,fs:e.fs})}this.nocase=this.scurry.nocase;let r=this.platform==="darwin"||this.platform==="win32",s={...e,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:r,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},o=this.pattern.map(l=>new J(l,s)),[n,h]=o.reduce((l,c)=>(l[0].push(...c.set),l[1].push(...c.globParts),l),[[],[]]);this.patterns=n.map((l,c)=>{let f=h[c];if(!f)throw new Error("invalid pattern object");return new me(l,f,0,this.platform)})}async walk(){return[...await new rr(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return[...new rr(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new ir(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new ir(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}};var Ri=(i,t={})=>{Array.isArray(i)||(i=[i]);for(let e of i)if(new J(e,t).hasMagic())return!0;return!1};function Ur(i,t={}){return new ht(i,t).streamSync()}function Vo(i,t={}){return new ht(i,t).stream()}function Ko(i,t={}){return new ht(i,t).walkSync()}async function Qo(i,t={}){return new ht(i,t).walk()}function Wr(i,t={}){return new ht(i,t).iterateSync()}function Jo(i,t={}){return new ht(i,t).iterate()}var pl=Ur,dl=Object.assign(Vo,{sync:Ur}),ml=Wr,gl=Object.assign(Jo,{sync:Wr}),sr=Object.assign(Ko,{stream:Ur,iterate:Wr}),Ho=Object.assign(Qo,{glob:Qo,globSync:Ko,sync:sr,globStream:Vo,stream:dl,globStreamSync:Ur,streamSync:pl,globIterate:Jo,iterate:gl,globIterateSync:Wr,iterateSync:ml,Glob:ht,hasMagic:Ri,escape:se,unescape:ot});Ho.glob=Ho;qt();var wl=C.withTag("listChromeProfiles");function Yo(){let i=sr("./**/Cookies",{cwd:ee,absolute:!0});return wl.debug("Found cookie files:",i),i}var zr=require("crypto"),Di=ct(require("lodash/memoize"),1),yl=(0,Di.default)(i=>i.length>=3&&i[0]===118&&i[1]===49&&i[2]===48?i.slice(3):i,i=>i.toString("hex")),bl=(0,Di.default)(i=>{let t=i[i.length-1];return t&&t<=16?i.slice(0,-t):i},i=>i.toString("hex"));function El(i){var e;let t=[/.*?0t(.+)$/,/.*?1e`(.+)$/,/.*?[`'](.+)$/,/[^\x20-\x7E]*([\x20-\x7E].+)$/];for(let r of t){let s=i.match(r),o=(e=s==null?void 0:s[1])!=null?e:"";if(o.length>0)return o}return i}async function Zo(i,t){if(typeof t!="string")throw new Error("password must be a string");if(!Buffer.isBuffer(i))throw new Error("encryptedData must be a Buffer");return new Promise((e,r)=>{(0,zr.pbkdf2)(t,"saltysalt",1003,16,"sha1",(s,o)=>{try{if(s){r(new Error("Failed to derive key: "+s.message));return}let n=yl(i);if(n.length%16!==0){r(new Error("Encrypted data length is not a multiple of 16"));return}let h=Buffer.alloc(16," "),l=(0,zr.createDecipheriv)("aes-128-cbc",o,h);l.setAutoPadding(!1);let c=l.update(n);try{l.final()}catch(d){r(new Error("Failed to finalize decryption: "+d.message));return}c=bl(c);let f=c.toString("utf8");e(El(f))}catch(n){r(new Error("Decryption failed: "+n.message))}})})}var an=ct(require("lodash/memoize"),1);Ot();var ln=(0,an.default)(async()=>{if(process.platform!=="darwin")throw M("Chrome password retrieval failed",new Error("This only works on macOS"),{platform:process.platform}),new Error("This only works on macOS");try{let{getChromePassword:i}=await Promise.resolve().then(()=>(nn(),on)),t=await i();return ft("ChromePassword","Retrieved password successfully",{platform:"macOS"}),t}catch(i){throw M("Chrome password retrieval failed",i,{platform:"macOS"}),i}});function vl(i){return typeof i!="number"||i<=0?"Infinity":new Date(i)}function hn(i,t,e,r,s,o){return{domain:i,name:t,value:e,expiry:vl(r),meta:{file:s,browser:"Chrome",decrypted:o}}}var Gr=class{constructor(){this.logger=_i("ChromeCookieQueryStrategy");this.browserName="Chrome"}async queryCookies(t,e){try{if(this.logger.info("Querying cookies",{name:t,domain:e}),process.platform!=="darwin")return this.logger.warn("Platform not supported",{platform:process.platform}),[];let s=Yo().map(h=>h),o=await ln(),n=await lr(s,h=>this.processFile(h,t,e,o),[]);return hr("Cookie query",!0,{count:n.length}),n}catch(r){return M("Failed to query cookies",r,{name:t,domain:e}),[]}}async processFile(t,e,r,s){try{let o=await Rs({name:e,domain:r,file:t}),n={file:t,password:s};return(await Promise.allSettled(o.map(l=>this.processCookie(l,n)))).map(l=>l.status==="fulfilled"?l.value:null).filter(l=>l!==null)}catch(o){return this.logger.error("Failed to process cookie file",{error:o,file:t}),[]}}async processCookie(t,e){try{let r=Buffer.isBuffer(t.value)?t.value:Buffer.from(String(t.value)),s=await Zo(r,e.password);return hn(t.domain,t.name,s,t.expiry,e.file,!0)}catch(r){return this.logger.warn("Failed to decrypt cookie",{error:r}),hn(t.domain,t.name,t.value.toString("utf-8"),t.expiry,e.file,!1)}}};var Pi=require("path");Ot();function Tl(){let i=[],t=process.env.HOME;if(typeof t!="string"||t.length===0)return cr("FirefoxCookieQuery","HOME environment variable not set"),i;let e=[(0,Pi.join)(t,"Library/Application Support/Firefox/Profiles/*/cookies.sqlite"),(0,Pi.join)(t,".mozilla/firefox/*/cookies.sqlite")];for(let r of e){let s=sr(r);i.push(...s)}return ft("FirefoxCookieQuery","Found Firefox cookie files",{files:i}),i}var Qr=class{constructor(){this.browserName="Firefox"}async queryCookies(t,e){let r=Tl(),s=[];for(let o of r)try{let n=await Er({file:o,sql:"SELECT name, value, host as domain, expiry FROM moz_cookies WHERE name = ? AND host LIKE ?",params:[t,`%${e}%`],rowTransform:h=>({name:h.name,value:h.value,domain:h.domain,expiry:h.expiry>0?new Date(h.expiry*1e3):"Infinity",meta:{file:o,browser:"Firefox",decrypted:!1}})});s.push(...n)}catch(n){n instanceof Error?cr("FirefoxCookieQuery",`Error reading Firefox cookie file ${o}`,{error:n.message}):cr("FirefoxCookieQuery",`Error reading Firefox cookie file ${o}`)}return s}};var un=require("path");Ot();var cn=require("fs");var Ol=1706047360;function Hr(i,t){let e=t;for(;e<i.length&&i[e]!==0;)e++;return[i.toString("utf8",t,e),e+1]}function Rl(i,t){let e=i.readUInt32LE(t),r=t+43,o=i.readUInt32LE(r)-Ol,n=t+56,[h,l]=Hr(i,n);n=l;let[c,f]=Hr(i,n);n=f;let[d,m]=Hr(i,n);n=m;let[y,v]=Hr(i,n);return[{name:c,value:y,domain:h.startsWith(".")?h.slice(1):h,path:d||"/",expiry:o,creation:o},e]}function Dl(i,t,e){let r=t+5,s=i.readUInt32BE(r),o=t+s,n=[],h=t+e;for(;o<h-8;)try{let[l,c]=Rl(i,o);n.push(l),o+=c}catch(l){console.warn(`Error decoding cookie at offset ${o}:`,l);break}return n}function fn(i){let t=(0,cn.readFileSync)(i),e=t.readUInt32BE(4),r=[];for(let n=0;n<e;n++)r.push(t.readUInt32BE(8+n*4));let s=8+e*4,o=[];for(let n=0;n<e;n++)try{let h=Dl(t,s,r[n]);o.push(...h),s+=r[n]}catch(h){console.warn(`Error decoding page ${n}:`,h),s+=r[n]}return o}var Vr=class{constructor(){this.browserName="Safari"}getHomeDir(){let t=process.env.HOME;return typeof t!="string"||t.trim()===""?(M("SafariCookieQueryStrategy","HOME environment variable is not set"),null):t}getCookieDbPath(t){return(0,un.join)(t,"Library","Containers","com.apple.Safari","Data","Library","Cookies","Cookies.binarycookies")}decodeCookies(t,e,r){try{return fn(t).filter(o=>o.name===e&&o.domain.includes(r)).map(o=>({domain:o.domain,name:o.name,value:o.value.toString(),expiry:typeof o.expiry=="number"&&o.expiry>0?new Date(o.expiry*1e3):"Infinity",meta:{file:t,browser:"Safari",decrypted:!1}}))}catch(s){return s instanceof Error?M("SafariCookieQueryStrategy",`Error decoding ${t}`,{error:s,name:e,domain:r}):M("SafariCookieQueryStrategy",`Error decoding ${t}`,{error:"Unknown error",name:e,domain:r}),[]}}async queryCookies(t,e){let r=this.getHomeDir();if(typeof r!="string"||r.length===0)return Promise.resolve([]);let s=this.getCookieDbPath(r);return Promise.resolve(this.decodeCookies(s,t,e))}};var Kr=class{constructor(){this.browserName="all";this.strategies=[Gr,Qr,Vr]}async queryCookies(t,e){return C.info(`Querying cookies for name: ${t}, domain: ${e}`),lr(this.strategies,async r=>{try{return await new r().queryCookies(t,e)}catch(s){return s instanceof Error?C.error(`Error querying ${r.name}: ${s.message}`):C.error(`Error querying ${r.name}: Unknown error`),[]}})}};function Pl(i){return i.expiry==="Infinity"?{...i,expiry:"Infinity"}:typeof i.expiry=="number"?{...i,expiry:new Date(i.expiry*1e3)}:i}async function pn(i,t={}){var n;let e=(n=t.strategy)!=null?n:new Kr,r=async h=>(await e.queryCookies(h.name,h.domain)).map(Pl),s=Array.isArray(i)?await Promise.all(i.map(r)):await r(i),o=Array.isArray(s)?s.flat():s;if(t.removeExpired===!0){let h=Date.now();o=o.filter(l=>l.expiry==="Infinity"||l.expiry instanceof Date&&l.expiry.getTime()>h)}return typeof t.limit=="number"&&t.limit>0&&(o=o.slice(0,t.limit)),o}function Ai(i,t=!1){if(i.length===0)return"No cookies found.";let e=[];e.push(`Found ${i.length} cookie${i.length===1?"":"s"}:`);for(let r of i)if(e.push(`- ${r.name}=${r.value}`),t){if(e.push(` Domain: ${r.domain}`),r.expiry!==void 0){let s=typeof r.expiry=="number"||r.expiry==="Infinity"?r.expiry:r.expiry.toISOString();e.push(` Expires: ${s}`)}r.meta&&e.push(` Metadata: ${JSON.stringify(r.meta,null,2)}`)}return e.join(`
|
|
7
|
+
`)}qt();function Al(i){C.log(i)}function Ml(i){let t=(0,Mi.groupBy)(i,e=>{var r,s;return(s=(r=e.meta)==null?void 0:r.file)!=null?s:"unknown"});C.log(JSON.stringify(t,null,2))}function Fl(i){C.log(Ai(i))}function Il(i){let t=(0,Mi.groupBy)(i,e=>{var r,s;return(s=(r=e.meta)==null?void 0:r.file)!=null?s:"unknown"});for(let[e,r]of Object.entries(t))C.log(`${e}: ${Ai(r)}`)}function Nl(i){C.log(JSON.stringify(i,null,2))}function Ll(i){for(let t of i)C.log(t.value)}function Bl(i){return i.dump===!0||i.d===!0}function jl(i){return i["dump-grouped"]===!0||i.D===!0}function _l(i){return i.render===!0||i["render-merged"]===!0||i.r===!0}function $l(i){return i["render-grouped"]===!0||i.R===!0}function ql(i,t){if(Bl(t)){Al(i);return}if(jl(t)){Ml(i);return}if(_l(t)){Fl(i);return}if($l(t)){Il(i);return}if(t.output==="json"){Nl(i);return}Ll(i)}async function dn(i,t,e,r,s){try{let o=await pn(i,{limit:r,removeExpired:s});if(o.length===0){C.error("No results");return}let{values:n}=ar(process.argv.slice(2));ql(o,n)}catch(o){o instanceof Error?C.error(o.message):C.error("An unknown error occurred")}}function Ul(){C.log(`Usage: ${process.argv[1]} [name] [domain] [options]`),C.log("Options:"),C.log(" -h, --help: Show this help message"),C.log(" -v, --verbose: Enable verbose output"),C.log(" -d, --dump: Dump all results"),C.log(" -D, --dump-grouped: Dump all results, grouped by profile"),C.log(" -r, --render: Render all results")}function Wl(i){var r,s,o,n;let t=(r=i._[0])!=null?r:"%",e=(s=i._[1])!=null?s:"%";return{name:(o=i.name)!=null?o:t,domain:(n=i.domain)!=null?n:e}}function zl(i){var e;let t=(e=i.url)!=null?e:i.u;return typeof t=="string"?Li(t):[Wl(i)]}async function Gl(i){let t=zl(i);i.verbose===!0&&C.log("cookieSpecs",t);try{await dn(t,["chrome","firefox","safari"],["default"])}catch(e){e instanceof Error?C.error("Error querying cookies:",e.message):C.error("An unknown error occurred while querying cookies")}}async function Ql(){var e;let i=process.argv.slice(2),{values:t}=ar(i);if(t.help===!0||t.h===!0){Ul();return}t.verbose=(e=t.verbose)!=null?e:t.v,await Gl(t)}Ql().catch(i=>{i instanceof Error?C.error("Fatal error:",i.message):C.error("An unknown fatal error occurred"),process.exit(1)});
|
|
8
|
+
//# sourceMappingURL=cli.cjs.map
|