@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.
Files changed (109) hide show
  1. package/.husky/commit-msg +2 -0
  2. package/.husky/pre-commit +4 -0
  3. package/.husky/pre-push +4 -0
  4. package/README.md +163 -18
  5. package/commitlint.config.js +12 -0
  6. package/dist/chunk-4I5M3M7H.js +6 -0
  7. package/dist/chunk-4I5M3M7H.js.map +1 -0
  8. package/dist/chunk-ACXFQWII.js +2 -0
  9. package/dist/chunk-ACXFQWII.js.map +1 -0
  10. package/dist/chunk-BKU5PKJ5.js +2 -0
  11. package/dist/chunk-BKU5PKJ5.js.map +1 -0
  12. package/dist/chunk-DR2EQC4R.js +2 -0
  13. package/dist/chunk-DR2EQC4R.js.map +1 -0
  14. package/dist/chunk-FZ5IFH4R.js +2 -0
  15. package/dist/chunk-FZ5IFH4R.js.map +1 -0
  16. package/dist/chunk-S5FU4HO5.js +2 -0
  17. package/dist/chunk-S5FU4HO5.js.map +1 -0
  18. package/dist/chunk-TUGIEFXM.js +2 -0
  19. package/dist/chunk-TUGIEFXM.js.map +1 -0
  20. package/dist/cli/cli.cjs +8 -0
  21. package/dist/cli/cli.cjs.map +1 -0
  22. package/dist/cli/cli.d.cts +1 -0
  23. package/dist/cli/cli.d.ts +1 -0
  24. package/dist/cli/cli.js +4 -0
  25. package/dist/cli/cli.js.map +1 -0
  26. package/dist/getChromeCookie-P623SIWB.js +2 -0
  27. package/dist/getChromeCookie-P623SIWB.js.map +1 -0
  28. package/dist/getChromePassword-74BC3LXO.js +2 -0
  29. package/dist/getChromePassword-74BC3LXO.js.map +1 -0
  30. package/dist/getCookie-FBQKCKJB.js +2 -0
  31. package/dist/getCookie-FBQKCKJB.js.map +1 -0
  32. package/dist/getFirefoxCookie-CGJJJ7VC.js +2 -0
  33. package/dist/getFirefoxCookie-CGJJJ7VC.js.map +1 -0
  34. package/dist/getGroupedRenderedCookies-RNB6DKBL.js +2 -0
  35. package/dist/getGroupedRenderedCookies-RNB6DKBL.js.map +1 -0
  36. package/dist/getMergedRenderedCookies-NC3UTOIC.js +2 -0
  37. package/dist/getMergedRenderedCookies-NC3UTOIC.js.map +1 -0
  38. package/dist/index.cjs +6 -0
  39. package/dist/index.cjs.map +1 -0
  40. package/dist/index.d.cts +252 -0
  41. package/dist/index.d.ts +252 -0
  42. package/dist/index.js +2 -24914
  43. package/dist/index.js.map +1 -0
  44. package/eslint.config.js +243 -0
  45. package/jest.setup.js +4 -0
  46. package/package.json +81 -35
  47. package/tsconfig.build.json +5 -0
  48. package/typedoc.json +22 -0
  49. package/.parcelrc +0 -7
  50. package/.prettierignore +0 -5
  51. package/.prettierrc +0 -12
  52. package/.terserrc +0 -26
  53. package/build-indexes.ts +0 -108
  54. package/bun.lockb +0 -0
  55. package/dist/cli.js +0 -18319
  56. package/dist/types.d.ts +0 -361
  57. package/jest.config.ts +0 -14
  58. package/package-lock.json +0 -5608
  59. package/src/CookieRow.ts +0 -43
  60. package/src/CookieSpec.ts +0 -42
  61. package/src/ExportedCookie.ts +0 -19
  62. package/src/FetchResponse.ts +0 -13
  63. package/src/SpecialCases.ts +0 -15
  64. package/src/StringToRegex.ts +0 -16
  65. package/src/argv.ts +0 -30
  66. package/src/browsers/CompositeCookieQueryStrategy.ts +0 -76
  67. package/src/browsers/CookieQueryStrategy.ts +0 -7
  68. package/src/browsers/CookieStoreQueryStrategy.ts +0 -115
  69. package/src/browsers/QuerySqliteThenTransform.ts +0 -48
  70. package/src/browsers/chrome/ChromeApplicationSupport.ts +0 -14
  71. package/src/browsers/chrome/ChromeCookieQueryStrategy.ts +0 -158
  72. package/src/browsers/chrome/decrypt.ts +0 -154
  73. package/src/browsers/chrome/getChromePassword.ts +0 -28
  74. package/src/browsers/firefox/FirefoxCookieQueryStrategy.ts +0 -109
  75. package/src/browsers/getEncryptedChromeCookie.ts +0 -122
  76. package/src/browsers/index.ts +0 -12
  77. package/src/browsers/mock/MockCookieQueryStrategy.ts +0 -22
  78. package/src/browsers/safari/SafariCookieQueryStrategy.ts +0 -42
  79. package/src/cli.ts +0 -94
  80. package/src/cliQueryCookies.ts +0 -65
  81. package/src/comboQueryCookieSpec.test.ts +0 -92
  82. package/src/comboQueryCookieSpec.ts +0 -26
  83. package/src/cookieQueryOptions.ts +0 -27
  84. package/src/cookieSpecsFromUrl.test.ts +0 -65
  85. package/src/cookieSpecsFromUrl.ts +0 -73
  86. package/src/decodeBinaryCookies.ts +0 -72
  87. package/src/execSimple.ts +0 -12
  88. package/src/fetchWithCookies.test.ts +0 -32
  89. package/src/fetchWithCookies.ts +0 -217
  90. package/src/findAllFiles.ts +0 -48
  91. package/src/getChromeCookie.ts +0 -19
  92. package/src/getCookie.ts +0 -22
  93. package/src/getFirefoxCookie.ts +0 -25
  94. package/src/getGroupedRenderedCookies.ts +0 -42
  95. package/src/getMergedRenderedCookies.test.ts +0 -43
  96. package/src/getMergedRenderedCookies.ts +0 -19
  97. package/src/global.ts +0 -8
  98. package/src/index.ts +0 -26
  99. package/src/isValidJwt.ts +0 -26
  100. package/src/listChromeProfiles.ts +0 -53
  101. package/src/logger.ts +0 -12
  102. package/src/processBeforeReturn.ts +0 -29
  103. package/src/queryCookies.ts +0 -41
  104. package/src/resultsRendered.ts +0 -24
  105. package/src/unpackHeaders.ts +0 -18
  106. package/src/util/flatMapAsync.test.ts +0 -55
  107. package/src/util/flatMapAsync.ts +0 -41
  108. package/src/util/index.ts +0 -1
  109. package/tsconfig.json +0 -26
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env node
2
+ import{a as k,b as C}from"../chunk-DR2EQC4R.js";import{a as h}from"../chunk-BKU5PKJ5.js";import"../chunk-4I5M3M7H.js";import{a,c as l}from"../chunk-TUGIEFXM.js";import"../chunk-ACXFQWII.js";function b(e){if(!e)return[];try{let o=[],t=new URL(e).hostname,i=t.split(".");o.push({name:"%",domain:t});for(let n=1;n<i.length-1;n++)o.push({name:"%",domain:`%.${i.slice(n).join(".")}`}),o.push({name:"%",domain:i.slice(n).join(".")});return o}catch(o){throw o instanceof TypeError?new Error("Invalid URL"):o}}import{parseArgs as A}from"node:util";function c(e){let{values:o,positionals:r}=A({args:e,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:o,positionals:r}}import{groupBy as E}from"lodash";import{join as I}from"path";import{readFileSync as Q}from"fs";var R=1706047360;function m(e,o){let r=o;for(;r<e.length&&e[r]!==0;)r++;return[e.toString("utf8",o,r),r+1]}function $(e,o){let r=e.readUInt32LE(o),t=o+43,n=e.readUInt32LE(t)-R,s=o+56,[p,u]=m(e,s);s=u;let[y,w]=m(e,s);s=w;let[P,O]=m(e,s);s=O;let[D,Y]=m(e,s);return[{name:y,value:D,domain:p.startsWith(".")?p.slice(1):p,path:P||"/",expiry:n,creation:n},r]}function B(e,o,r){let t=o+5,i=e.readUInt32BE(t),n=o+i,s=[],p=o+r;for(;n<p-8;)try{let[u,y]=$(e,n);s.push(u),n+=y}catch(u){console.warn(`Error decoding cookie at offset ${n}:`,u);break}return s}function x(e){let o=Q(e),r=o.readUInt32BE(4),t=[];for(let s=0;s<r;s++)t.push(o.readUInt32BE(8+s*4));let i=8+r*4,n=[];for(let s=0;s<r;s++)try{let p=B(o,i,t[s]);n.push(...p),i+=t[s]}catch(p){console.warn(`Error decoding page ${s}:`,p),i+=t[s]}return n}var d=class{constructor(){this.browserName="Safari"}getHomeDir(){let o=process.env.HOME;return typeof o!="string"||o.trim()===""?(l("SafariCookieQueryStrategy","HOME environment variable is not set"),null):o}getCookieDbPath(o){return I(o,"Library","Containers","com.apple.Safari","Data","Library","Cookies","Cookies.binarycookies")}decodeCookies(o,r,t){try{return x(o).filter(n=>n.name===r&&n.domain.includes(t)).map(n=>({domain:n.domain,name:n.name,value:n.value.toString(),expiry:typeof n.expiry=="number"&&n.expiry>0?new Date(n.expiry*1e3):"Infinity",meta:{file:o,browser:"Safari",decrypted:!1}}))}catch(i){return i instanceof Error?l("SafariCookieQueryStrategy",`Error decoding ${o}`,{error:i,name:r,domain:t}):l("SafariCookieQueryStrategy",`Error decoding ${o}`,{error:"Unknown error",name:r,domain:t}),[]}}async queryCookies(o,r){let t=this.getHomeDir();if(typeof t!="string"||t.length===0)return Promise.resolve([]);let i=this.getCookieDbPath(t);return Promise.resolve(this.decodeCookies(i,o,r))}};var f=class{constructor(){this.browserName="all";this.strategies=[C,h,d]}async queryCookies(o,r){return a.info(`Querying cookies for name: ${o}, domain: ${r}`),k(this.strategies,async t=>{try{return await new t().queryCookies(o,r)}catch(i){return i instanceof Error?a.error(`Error querying ${t.name}: ${i.message}`):a.error(`Error querying ${t.name}: Unknown error`),[]}})}};function U(e){return e.expiry==="Infinity"?{...e,expiry:"Infinity"}:typeof e.expiry=="number"?{...e,expiry:new Date(e.expiry*1e3)}:e}async function S(e,o={}){var s;let r=(s=o.strategy)!=null?s:new f,t=async p=>(await r.queryCookies(p.name,p.domain)).map(U),i=Array.isArray(e)?await Promise.all(e.map(t)):await t(e),n=Array.isArray(i)?i.flat():i;if(o.removeExpired===!0){let p=Date.now();n=n.filter(u=>u.expiry==="Infinity"||u.expiry instanceof Date&&u.expiry.getTime()>p)}return typeof o.limit=="number"&&o.limit>0&&(n=n.slice(0,o.limit)),n}function g(e,o=!1){if(e.length===0)return"No cookies found.";let r=[];r.push(`Found ${e.length} cookie${e.length===1?"":"s"}:`);for(let t of e)if(r.push(`- ${t.name}=${t.value}`),o){if(r.push(` Domain: ${t.domain}`),t.expiry!==void 0){let i=typeof t.expiry=="number"||t.expiry==="Infinity"?t.expiry:t.expiry.toISOString();r.push(` Expires: ${i}`)}t.meta&&r.push(` Metadata: ${JSON.stringify(t.meta,null,2)}`)}return r.join(`
3
+ `)}function F(e){a.log(e)}function N(e){let o=E(e,r=>{var t,i;return(i=(t=r.meta)==null?void 0:t.file)!=null?i:"unknown"});a.log(JSON.stringify(o,null,2))}function H(e){a.log(g(e))}function L(e){let o=E(e,r=>{var t,i;return(i=(t=r.meta)==null?void 0:t.file)!=null?i:"unknown"});for(let[r,t]of Object.entries(o))a.log(`${r}: ${g(t)}`)}function j(e){a.log(JSON.stringify(e,null,2))}function q(e){for(let o of e)a.log(o.value)}function M(e){return e.dump===!0||e.d===!0}function _(e){return e["dump-grouped"]===!0||e.D===!0}function T(e){return e.render===!0||e["render-merged"]===!0||e.r===!0}function G(e){return e["render-grouped"]===!0||e.R===!0}function J(e,o){if(M(o)){F(e);return}if(_(o)){N(e);return}if(T(o)){H(e);return}if(G(o)){L(e);return}if(o.output==="json"){j(e);return}q(e)}async function v(e,o,r,t,i){try{let n=await S(e,{limit:t,removeExpired:i});if(n.length===0){a.error("No results");return}let{values:s}=c(process.argv.slice(2));J(n,s)}catch(n){n instanceof Error?a.error(n.message):a.error("An unknown error occurred")}}function z(){a.log(`Usage: ${process.argv[1]} [name] [domain] [options]`),a.log("Options:"),a.log(" -h, --help: Show this help message"),a.log(" -v, --verbose: Enable verbose output"),a.log(" -d, --dump: Dump all results"),a.log(" -D, --dump-grouped: Dump all results, grouped by profile"),a.log(" -r, --render: Render all results")}function W(e){var t,i,n,s;let o=(t=e._[0])!=null?t:"%",r=(i=e._[1])!=null?i:"%";return{name:(n=e.name)!=null?n:o,domain:(s=e.domain)!=null?s:r}}function K(e){var r;let o=(r=e.url)!=null?r:e.u;return typeof o=="string"?b(o):[W(e)]}async function V(e){let o=K(e);e.verbose===!0&&a.log("cookieSpecs",o);try{await v(o,["chrome","firefox","safari"],["default"])}catch(r){r instanceof Error?a.error("Error querying cookies:",r.message):a.error("An unknown error occurred while querying cookies")}}async function X(){var r;let e=process.argv.slice(2),{values:o}=c(e);if(o.help===!0||o.h===!0){z();return}o.verbose=(r=o.verbose)!=null?r:o.v,await V(o)}X().catch(e=>{e instanceof Error?a.error("Fatal error:",e.message):a.error("An unknown fatal error occurred"),process.exit(1)});
4
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/cookies/cookieSpecsFromUrl.ts","../../src/utils/argv.ts","../../src/cli/cliQueryCookies.ts","../../src/core/browsers/safari/SafariCookieQueryStrategy.ts","../../src/core/browsers/decodeBinaryCookies.ts","../../src/core/browsers/CompositeCookieQueryStrategy.ts","../../src/core/cookies/comboQueryCookieSpec.ts","../../src/core/cookies/resultsRendered.ts","../../src/cli/cli.ts"],"sourcesContent":["import type { CookieSpec } from \"../../types/CookieSpec\";\n\n/**\n * Generate cookie specifications from a URL by creating specs for both the exact domain\n * and its parent domains. This allows for proper cookie matching across domain levels.\n * @internal\n * @param url - The URL to generate cookie specs from (e.g., 'https://example.com')\n * @returns An array of cookie specifications for the URL and its parent domains\n * @throws {Error} If the URL is invalid or cannot be parsed\n * @example\n * // Basic usage with a simple URL\n * cookieSpecsFromUrl('https://sub.example.com')\n * // Returns: [\n * // { name: '%', domain: 'sub.example.com' },\n * // { name: '%', domain: '%.example.com' },\n * // { name: '%', domain: 'example.com' }\n * // ]\n * @example\n * // Error handling\n * try {\n * cookieSpecsFromUrl('invalid-url')\n * } catch (error) {\n * console.error(error.message) // \"Invalid URL\"\n * }\n */\nexport function cookieSpecsFromUrl(url: string): CookieSpec[] {\n if (!url) {\n return [];\n }\n\n try {\n const cookieSpecs: CookieSpec[] = [];\n const urlObj = new URL(url);\n const domain = urlObj.hostname;\n const parts = domain.split(\".\");\n\n // Add exact domain match\n cookieSpecs.push({\n name: \"%\",\n domain: domain,\n });\n\n // Generate specs for each subdomain level\n for (let i = 1; i < parts.length - 1; i++) {\n // Add wildcard for current level\n cookieSpecs.push({\n name: \"%\",\n domain: `%.${parts.slice(i).join(\".\")}`,\n });\n\n // Add exact domain for current level\n cookieSpecs.push({\n name: \"%\",\n domain: parts.slice(i).join(\".\"),\n });\n }\n\n return cookieSpecs;\n } catch (error) {\n if (error instanceof TypeError) {\n throw new Error(\"Invalid URL\");\n }\n throw error;\n }\n}\n","import { parseArgs } from \"node:util\";\n\n/**\n * Interface representing parsed command line arguments.\n * @property values - Record of option values parsed from command line\n * @property positionals - Array of positional arguments\n * @example\n * ```typescript\n * const args: ParsedArgs = {\n * values: {\n * browser: 'chrome',\n * profile: 'default',\n * verbose: true\n * },\n * positionals: ['script.js', 'input.txt']\n * }\n * ```\n */\ninterface ParsedArgs {\n /** Record of option values parsed from command line */\n values: Record<string, string | boolean | string[]>;\n /** Array of positional arguments */\n positionals: string[];\n}\n\n/**\n * Parses command line arguments into a structured format.\n * @internal\n * @param argv - Array of command line arguments to parse\n * @returns Parsed command line arguments object\n * @example\n * ```typescript\n * // Basic usage\n * const args = parseArgv(['--browser', 'chrome', '--verbose', 'script.js']);\n * // Returns: { values: { browser: 'chrome', verbose: true }, positionals: ['script.js'] }\n *\n * // Using short options\n * const args = parseArgv(['-b', 'firefox', '-v', 'script.js']);\n * // Returns: { values: { browser: 'firefox', verbose: true }, positionals: ['script.js'] }\n *\n * // Error handling\n * const args = parseArgv(['--invalid']); // Will throw error for unknown option\n * ```\n */\nexport function parseArgv(argv: string[]): ParsedArgs {\n const { values, positionals } = parseArgs({\n args: argv,\n options: {\n browser: {\n type: \"string\",\n short: \"b\",\n },\n profile: {\n type: \"string\",\n short: \"p\",\n },\n url: {\n type: \"string\",\n short: \"u\",\n },\n domain: {\n type: \"string\",\n short: \"d\",\n },\n name: {\n type: \"string\",\n short: \"n\",\n },\n help: {\n type: \"boolean\",\n short: \"h\",\n },\n version: {\n type: \"boolean\",\n short: \"v\",\n },\n verbose: {\n type: \"boolean\",\n },\n },\n allowPositionals: true,\n });\n\n return { values, positionals };\n}\n","// Third-party imports\nimport { groupBy } from \"lodash\";\n\n// Local imports - types\nimport { comboQueryCookieSpec } from \"@core/cookies/comboQueryCookieSpec\";\nimport { resultsRendered } from \"@core/cookies/resultsRendered\";\nimport { parseArgv } from \"@utils/argv\";\nimport logger from \"@utils/logger\";\n\nimport type { CookieSpec } from \"../types/CookieSpec\";\nimport type { ExportedCookie } from \"../types/ExportedCookie\";\n\ninterface ParsedArgs {\n dump?: boolean;\n d?: boolean;\n \"dump-grouped\"?: boolean;\n D?: boolean;\n render?: boolean;\n \"render-merged\"?: boolean;\n r?: boolean;\n \"render-grouped\"?: boolean;\n R?: boolean;\n output?: string;\n [key: string]: unknown;\n}\n\nfunction handleDumpOutput(results: ExportedCookie[]): void {\n logger.log(results);\n}\n\nfunction handleGroupedDumpOutput(results: ExportedCookie[]): void {\n const groupedByFile = groupBy(results, (r) => r.meta?.file ?? \"unknown\");\n logger.log(JSON.stringify(groupedByFile, null, 2));\n}\n\nfunction handleRenderOutput(results: ExportedCookie[]): void {\n logger.log(resultsRendered(results));\n}\n\nfunction handleGroupedRenderOutput(results: ExportedCookie[]): void {\n const groupedByFile = groupBy(results, (r) => r.meta?.file ?? \"unknown\");\n for (const [file, fileResults] of Object.entries(groupedByFile)) {\n logger.log(`${file}: ${resultsRendered(fileResults)}`);\n }\n}\n\nfunction handleJsonOutput(results: ExportedCookie[]): void {\n logger.log(JSON.stringify(results, null, 2));\n}\n\nfunction handleDefaultOutput(results: ExportedCookie[]): void {\n for (const result of results) {\n logger.log(result.value);\n }\n}\n\nfunction shouldHandleDump(args: ParsedArgs): boolean {\n return args.dump === true || args.d === true;\n}\n\nfunction shouldHandleGroupedDump(args: ParsedArgs): boolean {\n return args[\"dump-grouped\"] === true || args.D === true;\n}\n\nfunction shouldHandleRender(args: ParsedArgs): boolean {\n return (\n args.render === true || args[\"render-merged\"] === true || args.r === true\n );\n}\n\nfunction shouldHandleGroupedRender(args: ParsedArgs): boolean {\n return args[\"render-grouped\"] === true || args.R === true;\n}\n\nfunction handleOutput(results: ExportedCookie[], args: ParsedArgs): void {\n if (shouldHandleDump(args)) {\n handleDumpOutput(results);\n return;\n }\n\n if (shouldHandleGroupedDump(args)) {\n handleGroupedDumpOutput(results);\n return;\n }\n\n if (shouldHandleRender(args)) {\n handleRenderOutput(results);\n return;\n }\n\n if (shouldHandleGroupedRender(args)) {\n handleGroupedRenderOutput(results);\n return;\n }\n\n if (args.output === \"json\") {\n handleJsonOutput(results);\n return;\n }\n\n handleDefaultOutput(results);\n}\n\n/**\n * Query cookies from browsers using the CLI interface\n * @param cookieSpec - Cookie specification(s) to query for\n * @param browsers - List of browsers to query from\n * @param profiles - List of browser profiles to query from\n * @param limit - Optional limit on the number of results\n * @param removeExpired - Whether to remove expired cookies from results\n * @example\n * // Query cookies from all browsers for a specific domain\n * const cookies = await cliQueryCookies(\n * { name: '*', domain: 'example.com' },\n * ['chrome', 'firefox'],\n * ['default'],\n * 10,\n * true\n * );\n *\n * // Query multiple cookie specs\n * const multiCookies = await cliQueryCookies(\n * [\n * { name: 'session', domain: 'app.example.com' },\n * { name: 'auth', domain: 'auth.example.com' }\n * ],\n * ['chrome'],\n * ['default', 'profile1']\n * );\n *\n * // Handle errors\n * try {\n * const cookies = await cliQueryCookies(\n * { name: 'token', domain: 'api.example.com' },\n * ['chrome']\n * );\n * console.log(`Found ${cookies.length} cookies`);\n * } catch (error) {\n * console.error('Failed to query cookies:', error);\n * }\n */\nexport async function cliQueryCookies(\n cookieSpec: CookieSpec | CookieSpec[],\n browsers: string[],\n profiles: string[],\n limit?: number,\n removeExpired?: boolean,\n): Promise<void> {\n try {\n const results = await comboQueryCookieSpec(cookieSpec, {\n limit,\n removeExpired,\n });\n\n if (results.length === 0) {\n logger.error(\"No results\");\n return;\n }\n\n const { values: args } = parseArgv(process.argv.slice(2));\n handleOutput(results, args as ParsedArgs);\n } catch (error) {\n if (error instanceof Error) {\n logger.error(error.message);\n } else {\n logger.error(\"An unknown error occurred\");\n }\n }\n}\n","import { join } from \"path\";\n\nimport { logError } from \"@utils/logHelpers\";\n\nimport type { BrowserName } from \"../../../types/BrowserName\";\nimport type { CookieQueryStrategy } from \"../../../types/CookieQueryStrategy\";\nimport type { ExportedCookie } from \"../../../types/ExportedCookie\";\nimport { decodeBinaryCookies } from \"../decodeBinaryCookies\";\n\n/**\n * Strategy for querying cookies from Safari browser\n */\nexport class SafariCookieQueryStrategy implements CookieQueryStrategy {\n /**\n *\n */\n public readonly browserName: BrowserName = \"Safari\";\n\n /**\n * Gets the user's home directory from environment variables\n * @returns The home directory path or null if not set\n */\n private getHomeDir(): string | null {\n const homeDir = process.env.HOME;\n if (typeof homeDir !== \"string\" || homeDir.trim() === \"\") {\n logError(\n \"SafariCookieQueryStrategy\",\n \"HOME environment variable is not set\",\n );\n return null;\n }\n return homeDir;\n }\n\n /**\n * Gets the path to Safari's cookie database\n * @param homeDir - User's home directory path\n * @returns Path to Safari's cookie database\n */\n private getCookieDbPath(homeDir: string): string {\n return join(\n homeDir,\n \"Library\",\n \"Containers\",\n \"com.apple.Safari\",\n \"Data\",\n \"Library\",\n \"Cookies\",\n \"Cookies.binarycookies\",\n );\n }\n\n /**\n * Decodes cookies from Safari's binary cookie file\n * @param cookieDbPath - Path to the cookie database\n * @param name - Name of the cookie to find\n * @param domain - Domain to filter cookies by\n * @returns Array of exported cookies\n */\n private decodeCookies(\n cookieDbPath: string,\n name: string,\n domain: string,\n ): ExportedCookie[] {\n try {\n const cookies = decodeBinaryCookies(cookieDbPath);\n return cookies\n .filter(\n (cookie) => cookie.name === name && cookie.domain.includes(domain),\n )\n .map((cookie) => ({\n domain: cookie.domain,\n name: cookie.name,\n value: cookie.value.toString(),\n expiry:\n typeof cookie.expiry === \"number\" && cookie.expiry > 0\n ? new Date(cookie.expiry * 1000)\n : \"Infinity\",\n meta: {\n file: cookieDbPath,\n browser: \"Safari\" as const,\n decrypted: false,\n },\n }));\n } catch (error) {\n if (error instanceof Error) {\n logError(\n \"SafariCookieQueryStrategy\",\n `Error decoding ${cookieDbPath}`,\n { error, name, domain },\n );\n } else {\n logError(\n \"SafariCookieQueryStrategy\",\n `Error decoding ${cookieDbPath}`,\n { error: \"Unknown error\", name, domain },\n );\n }\n return [];\n }\n }\n\n /**\n * Query Safari's cookie storage for cookies matching the given criteria\n * @param name - Name of the cookie to find\n * @param domain - Domain to filter cookies by\n * @returns Array of matching cookies, or empty array if none found\n */\n public async queryCookies(\n name: string,\n domain: string,\n ): Promise<ExportedCookie[]> {\n const homeDir = this.getHomeDir();\n if (typeof homeDir !== \"string\" || homeDir.length === 0) {\n return Promise.resolve([]);\n }\n\n const cookieDbPath = this.getCookieDbPath(homeDir);\n return Promise.resolve(this.decodeCookies(cookieDbPath, name, domain));\n }\n}\n","import { readFileSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { join } from \"path\";\n\ninterface CookieRow {\n name: string;\n value: string;\n domain: string;\n path: string;\n expiry: number;\n creation: number;\n flags?: number;\n}\n\n// The date offset for Safari cookies (until 2017)\nconst SAFARI_DATE_OFFSET = 1706047360;\n\nfunction readNullTerminatedString(\n buffer: Buffer,\n offset: number,\n): [string, number] {\n let end = offset;\n while (end < buffer.length && buffer[end] !== 0) {\n end++;\n }\n return [buffer.toString(\"utf8\", offset, end), end + 1];\n}\n\nfunction decodeCookieHeader(\n buffer: Buffer,\n offset: number,\n): [CookieRow, number] {\n // First 4 bytes are the cookie size in little-endian\n const size = buffer.readUInt32LE(offset);\n\n // Read the date at offset 0x2B (43 bytes from start)\n const dateOffset = offset + 0x2b;\n const date = buffer.readUInt32LE(dateOffset);\n const timestamp = date - SAFARI_DATE_OFFSET;\n\n // Dynamic fields start at offset 0x38 (56 bytes from start)\n let currentOffset = offset + 0x38;\n const [domain, nextOffset] = readNullTerminatedString(buffer, currentOffset);\n currentOffset = nextOffset;\n\n const [name, nextOffset2] = readNullTerminatedString(buffer, currentOffset);\n currentOffset = nextOffset2;\n\n // The fields are path, then value\n const [path, nextOffset3] = readNullTerminatedString(buffer, currentOffset);\n currentOffset = nextOffset3;\n\n const [value, _] = readNullTerminatedString(buffer, currentOffset);\n\n return [\n {\n name,\n value,\n domain: domain.startsWith(\".\") ? domain.slice(1) : domain,\n path: path || \"/\", // Default to root path if empty\n expiry: timestamp,\n creation: timestamp, // We don't have creation time in this format\n },\n size,\n ];\n}\n\nfunction decodePage(\n buffer: Buffer,\n offset: number,\n pageSize: number,\n): CookieRow[] {\n // Skip first 5 bytes\n const headerLengthOffset = offset + 5;\n // Next 4 bytes contain header length\n const headerLength = buffer.readUInt32BE(headerLengthOffset);\n\n let currentOffset = offset + headerLength;\n const cookies: CookieRow[] = [];\n const pageEnd = offset + pageSize;\n\n // Read cookies until we reach the page end\n while (currentOffset < pageEnd - 8) {\n try {\n const [cookie, size] = decodeCookieHeader(buffer, currentOffset);\n cookies.push(cookie);\n currentOffset += size;\n } catch (error) {\n console.warn(`Error decoding cookie at offset ${currentOffset}:`, error);\n break;\n }\n }\n\n return cookies;\n}\n\n/**\n * Decodes a Safari binary cookie file into an array of cookie objects.\n * @param cookieDbPath - Path to the Safari Cookies.binarycookies file\n * @returns Array of decoded cookie objects\n * @throws {Error} If the file cannot be read or has invalid format\n */\nexport function decodeBinaryCookies(cookieDbPath: string): CookieRow[] {\n const buffer = readFileSync(cookieDbPath);\n\n // Skip first 4 bytes (header)\n const numPages = buffer.readUInt32BE(4);\n\n // Read the page sizes array (4 bytes per page)\n const pageSizes: number[] = [];\n for (let i = 0; i < numPages; i++) {\n pageSizes.push(buffer.readUInt32BE(8 + i * 4));\n }\n\n // Skip the page sizes array\n let offset = 8 + numPages * 4;\n const cookies: CookieRow[] = [];\n\n // Process each page\n for (let i = 0; i < numPages; i++) {\n try {\n const pageCookies = decodePage(buffer, offset, pageSizes[i]);\n cookies.push(...pageCookies);\n offset += pageSizes[i];\n } catch (error) {\n console.warn(`Error decoding page ${i}:`, error);\n offset += pageSizes[i];\n }\n }\n\n return cookies;\n}\n\n/**\n * Retrieves cookies from Safari's binary cookie store.\n * @returns Array of decoded Safari cookies\n */\nexport function getSafariCookies(): CookieRow[] {\n const cookieDbPath = join(\n homedir(),\n \"Library/Containers/com.apple.Safari/Data/Library/Cookies/Cookies.binarycookies\",\n );\n return decodeBinaryCookies(cookieDbPath);\n}\n","import { flatMapAsync } from \"@utils/flatMapAsync\";\nimport logger from \"@utils/logger\";\n\nimport type { CookieQueryStrategy } from \"../../types/CookieQueryStrategy\";\nimport type { ExportedCookie } from \"../../types/ExportedCookie\";\n\nimport { ChromeCookieQueryStrategy } from \"./chrome/ChromeCookieQueryStrategy\";\nimport { FirefoxCookieQueryStrategy } from \"./firefox/FirefoxCookieQueryStrategy\";\nimport { SafariCookieQueryStrategy } from \"./safari/SafariCookieQueryStrategy\";\n\ntype CookieStrategyConstructor = new () => CookieQueryStrategy;\n\n/**\n * A composite strategy that combines multiple cookie query strategies\n * This allows querying cookies from multiple browsers simultaneously\n * @example\n */\nexport class CompositeCookieQueryStrategy implements CookieQueryStrategy {\n /**\n *\n */\n public browserName = \"all\";\n\n private readonly strategies: CookieStrategyConstructor[];\n\n /**\n * Initializes with an empty array of strategies that can be added later\n */\n public constructor() {\n this.strategies = [\n ChromeCookieQueryStrategy,\n FirefoxCookieQueryStrategy,\n SafariCookieQueryStrategy,\n ];\n }\n\n /**\n * Queries cookies from all registered strategies\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 from all strategies\n */\n public async queryCookies(\n name: string,\n domain: string,\n ): Promise<ExportedCookie[]> {\n logger.info(`Querying cookies for name: ${name}, domain: ${domain}`);\n\n return flatMapAsync(this.strategies, async (Strategy) => {\n try {\n const strategy = new Strategy();\n const cookies = await strategy.queryCookies(name, domain);\n return cookies;\n } catch (error) {\n if (error instanceof Error) {\n logger.error(`Error querying ${Strategy.name}: ${error.message}`);\n } else {\n logger.error(`Error querying ${Strategy.name}: Unknown error`);\n }\n return [];\n }\n });\n }\n}\n","import type { CookieQueryStrategy } from \"../../types/CookieQueryStrategy\";\nimport type { CookieSpec, MultiCookieSpec } from \"../../types/CookieSpec\";\nimport type { ExportedCookie } from \"../../types/ExportedCookie\";\nimport { CompositeCookieQueryStrategy } from \"../browsers/CompositeCookieQueryStrategy\";\n\n/**\n * Configuration options for cookie queries\n * @property {CookieQueryStrategy} [strategy] - Strategy to use for querying cookies\n * @property {number} [limit] - Maximum number of cookies to return\n * @property {boolean} [removeExpired] - Whether to filter out expired cookies\n */\ninterface QueryOptions {\n strategy?: CookieQueryStrategy;\n limit?: number;\n removeExpired?: boolean;\n}\n\n/**\n * Converts cookie expiry to consistent format\n * @internal\n * @param cookie - The cookie object to convert expiry for\n * @returns The cookie object with converted expiry\n */\nfunction convertExpiry(cookie: ExportedCookie): ExportedCookie {\n if (cookie.expiry === \"Infinity\") {\n return { ...cookie, expiry: \"Infinity\" };\n }\n if (typeof cookie.expiry === \"number\") {\n return { ...cookie, expiry: new Date(cookie.expiry * 1000) };\n }\n return cookie;\n}\n\n/**\n * Query cookies using multiple cookie specifications\n *\n * Allows querying cookies using either a single specification or multiple specifications\n * in parallel. Handles expiry dates and provides filtering options.\n * @param cookieSpec - The cookie specification(s) to query\n * @param options - Optional configuration for the query operation\n * @returns A promise that resolves to an array of matching cookies\n * @example\n * // Query single cookie spec\n * const cookies = await comboQueryCookieSpec({\n * name: \"session\",\n * domain: \"example.com\"\n * });\n * @example\n * // Query multiple specs with expired cookie removal\n * const cookies = await comboQueryCookieSpec([\n * { name: \"auth\", domain: \"api.example.com\" },\n * { name: \"prefs\", domain: \"example.com\" }\n * ], { removeExpired: true });\n */\nexport async function comboQueryCookieSpec(\n cookieSpec: MultiCookieSpec,\n options: QueryOptions = {},\n): Promise<ExportedCookie[]> {\n const strategy = options.strategy ?? new CompositeCookieQueryStrategy();\n\n const queryFn = async (cs: CookieSpec): Promise<ExportedCookie[]> => {\n const cookies = await strategy.queryCookies(cs.name, cs.domain);\n return cookies.map(convertExpiry);\n };\n\n const results = Array.isArray(cookieSpec)\n ? await Promise.all(cookieSpec.map(queryFn))\n : await queryFn(cookieSpec);\n\n let processed = Array.isArray(results) ? results.flat() : results;\n\n if (options.removeExpired === true) {\n const now = Date.now();\n processed = processed.filter(\n (cookie) =>\n cookie.expiry === \"Infinity\" ||\n (cookie.expiry instanceof Date && cookie.expiry.getTime() > now),\n );\n }\n\n if (typeof options.limit === \"number\" && options.limit > 0) {\n processed = processed.slice(0, options.limit);\n }\n\n return processed;\n}\n","import type { ExportedCookie } from \"../../types/ExportedCookie\";\n\n/**\n * Formats cookie query results into a human-readable string representation.\n * Supports both basic and verbose output formats.\n * @param cookies - Array of cookie objects to format. Each cookie must have at least name and value properties\n * @param verbose - When true, includes additional details like domain, expiry, and metadata\n * @returns A formatted string with one cookie per line\n * @example\n * // Basic usage\n * const cookies = [{ name: 'sessionId', value: '123abc' }];\n * resultsRendered(cookies);\n * // Returns:\n * // Found 1 cookie:\n * // - sessionId=123abc\n * @example\n * // Verbose output with multiple cookies\n * const cookies = [{\n * name: 'sessionId',\n * value: '123abc',\n * domain: 'example.com',\n * expiry: '2024-01-01T00:00:00.000Z'\n * }];\n * resultsRendered(cookies, true);\n * // Returns:\n * // Found 1 cookie:\n * // - sessionId=123abc\n * // Domain: example.com\n * // Expires: 2024-01-01T00:00:00.000Z\n */\nexport function resultsRendered(\n cookies: ExportedCookie[],\n verbose = false,\n): string {\n if (cookies.length === 0) {\n return \"No cookies found.\";\n }\n\n const lines: string[] = [];\n lines.push(\n `Found ${cookies.length} cookie${cookies.length === 1 ? \"\" : \"s\"}:`,\n );\n\n for (const cookie of cookies) {\n lines.push(`- ${cookie.name}=${cookie.value}`);\n if (verbose) {\n lines.push(` Domain: ${cookie.domain}`);\n if (cookie.expiry !== undefined) {\n const expiry =\n typeof cookie.expiry === \"number\" || cookie.expiry === \"Infinity\"\n ? cookie.expiry\n : cookie.expiry.toISOString();\n lines.push(` Expires: ${expiry}`);\n }\n if (cookie.meta) {\n lines.push(` Metadata: ${JSON.stringify(cookie.meta, null, 2)}`);\n }\n }\n }\n\n return lines.join(\"\\n\");\n}\n\n/**\n * @internal\n */\nexport default resultsRendered;\n","#!/usr/bin/env node\n\n// Local imports - core\nimport { cookieSpecsFromUrl } from \"@core/cookies/cookieSpecsFromUrl\";\nimport { parseArgv } from \"@utils/argv\";\nimport logger from \"@utils/logger\";\n\nimport type { CookieSpec } from \"../types/CookieSpec\";\n\nimport { cliQueryCookies } from \"./cliQueryCookies\";\n\n// Type definitions\ninterface ParsedArgs {\n _: string[];\n help?: boolean;\n h?: boolean;\n verbose?: boolean;\n v?: boolean;\n dump?: boolean;\n d?: boolean;\n \"dump-grouped\"?: boolean;\n D?: boolean;\n render?: boolean;\n r?: boolean;\n url?: string;\n u?: string;\n name?: string;\n domain?: string;\n [key: string]: unknown;\n}\n\nfunction showHelp(): void {\n logger.log(`Usage: ${process.argv[1]} [name] [domain] [options]`);\n logger.log(`Options:`);\n logger.log(` -h, --help: Show this help message`);\n logger.log(` -v, --verbose: Enable verbose output`);\n logger.log(` -d, --dump: Dump all results`);\n logger.log(` -D, --dump-grouped: Dump all results, grouped by profile`);\n logger.log(` -r, --render: Render all results`);\n}\n\nfunction createCookieSpec(parsedArgs: ParsedArgs): CookieSpec {\n const defaultName = parsedArgs._[0] ?? \"%\";\n const defaultDomain = parsedArgs._[1] ?? \"%\";\n\n return {\n name: parsedArgs.name ?? defaultName,\n domain: parsedArgs.domain ?? defaultDomain,\n };\n}\n\nfunction getCookieSpecs(parsedArgs: ParsedArgs): CookieSpec[] {\n const argUrl = parsedArgs.url ?? parsedArgs.u;\n\n if (typeof argUrl === \"string\") {\n return cookieSpecsFromUrl(argUrl);\n }\n\n return [createCookieSpec(parsedArgs)];\n}\n\nasync function handleCookieQuery(parsedArgs: ParsedArgs): Promise<void> {\n const cookieSpecs = getCookieSpecs(parsedArgs);\n\n if (parsedArgs.verbose === true) {\n logger.log(\"cookieSpecs\", cookieSpecs);\n }\n\n try {\n await cliQueryCookies(\n cookieSpecs,\n [\"chrome\", \"firefox\", \"safari\"],\n [\"default\"],\n );\n } catch (error) {\n if (error instanceof Error) {\n logger.error(\"Error querying cookies:\", error.message);\n } else {\n logger.error(\"An unknown error occurred while querying cookies\");\n }\n }\n}\n\nasync function main(): Promise<void> {\n const args = process.argv.slice(2);\n const { values: parsedArgs } = parseArgv(args) as unknown as {\n values: ParsedArgs;\n };\n\n if (parsedArgs.help === true || parsedArgs.h === true) {\n showHelp();\n return;\n }\n\n parsedArgs.verbose = parsedArgs.verbose ?? parsedArgs.v;\n await handleCookieQuery(parsedArgs);\n}\n\nmain().catch((error) => {\n if (error instanceof Error) {\n logger.error(\"Fatal error:\", error.message);\n } else {\n logger.error(\"An unknown fatal error occurred\");\n }\n process.exit(1);\n});\n"],"mappings":"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","names":["cookieSpecsFromUrl","url","cookieSpecs","domain","parts","i","error","parseArgs","parseArgv","argv","values","positionals","groupBy","join","readFileSync","SAFARI_DATE_OFFSET","readNullTerminatedString","buffer","offset","end","decodeCookieHeader","size","dateOffset","timestamp","currentOffset","domain","nextOffset","name","nextOffset2","path","nextOffset3","value","_","decodePage","pageSize","headerLengthOffset","headerLength","cookies","pageEnd","cookie","error","decodeBinaryCookies","cookieDbPath","readFileSync","numPages","pageSizes","i","pageCookies","SafariCookieQueryStrategy","homeDir","logError","join","cookieDbPath","name","domain","decodeBinaryCookies","cookie","error","CompositeCookieQueryStrategy","ChromeCookieQueryStrategy","FirefoxCookieQueryStrategy","SafariCookieQueryStrategy","name","domain","logger_default","flatMapAsync","Strategy","error","convertExpiry","cookie","comboQueryCookieSpec","cookieSpec","options","_a","strategy","CompositeCookieQueryStrategy","queryFn","cs","results","processed","now","resultsRendered","cookies","verbose","lines","cookie","expiry","handleDumpOutput","results","logger_default","handleGroupedDumpOutput","groupedByFile","groupBy","_a","_b","handleRenderOutput","resultsRendered","handleGroupedRenderOutput","file","fileResults","handleJsonOutput","handleDefaultOutput","result","shouldHandleDump","args","shouldHandleGroupedDump","shouldHandleRender","shouldHandleGroupedRender","handleOutput","cliQueryCookies","cookieSpec","browsers","profiles","limit","removeExpired","comboQueryCookieSpec","parseArgv","error","showHelp","logger_default","createCookieSpec","parsedArgs","_a","_b","_c","_d","defaultName","defaultDomain","getCookieSpecs","argUrl","cookieSpecsFromUrl","handleCookieQuery","cookieSpecs","cliQueryCookies","error","main","args","parseArgv"]}
@@ -0,0 +1,2 @@
1
+ import{b as t}from"./chunk-DR2EQC4R.js";import"./chunk-4I5M3M7H.js";import{a as r}from"./chunk-TUGIEFXM.js";import"./chunk-ACXFQWII.js";async function i(o){try{return await new t().queryCookies(o.name,o.domain)}catch(e){return r.warn("Error querying Chrome cookies:",e),[]}}var k=i;export{k as default,i as getChromeCookie};
2
+ //# sourceMappingURL=getChromeCookie-P623SIWB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/cookies/getChromeCookie.ts"],"sourcesContent":["import type { CookieSpec } from \"../../types/CookieSpec\";\nimport type { ExportedCookie } from \"../../types/ExportedCookie\";\nimport logger from \"../../utils/logger\";\nimport { ChromeCookieQueryStrategy } from \"../browsers/chrome/ChromeCookieQueryStrategy\";\n\n/**\n * Retrieves cookies from Chrome browser storage that match the specified criteria.\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\" from Chrome\n * const cookies = await getChromeCookie({ name: \"sessionId\" });\n *\n * // Get cookies named \"userPref\" from specific domain in Chrome\n * const domainCookies = await getChromeCookie({\n * name: \"userPref\",\n * domain: \"example.com\"\n * });\n * ```\n */\nexport async function getChromeCookie(\n cookieSpec: CookieSpec,\n): Promise<ExportedCookie[]> {\n try {\n const strategy = new ChromeCookieQueryStrategy();\n const cookies = await strategy.queryCookies(\n cookieSpec.name,\n cookieSpec.domain,\n );\n return cookies;\n } catch (error: unknown) {\n logger.warn(\"Error querying Chrome cookies:\", error);\n return [];\n }\n}\n\n/**\n * Default export of the getChromeCookie function.\n * @example\n * ```typescript\n * import getChromeCookie from './getChromeCookie';\n * const cookies = await getChromeCookie({\n * name: \"sessionId\",\n * domain: \"example.com\"\n * });\n * ```\n */\nexport default getChromeCookie;\n"],"mappings":"wIAyBA,eAAsBA,EACpBC,EAC2B,CAC3B,GAAI,CAMF,OAJgB,MADC,IAAIC,EAA0B,EAChB,aAC7BD,EAAW,KACXA,EAAW,MACb,CAEF,OAASE,EAAgB,CACvB,OAAAC,EAAO,KAAK,iCAAkCD,CAAK,EAC5C,CAAC,CACV,CACF,CAaA,IAAOE,EAAQL","names":["getChromeCookie","cookieSpec","ChromeCookieQueryStrategy","error","logger_default","getChromeCookie_default"]}
@@ -0,0 +1,2 @@
1
+ import{c as i}from"./chunk-TUGIEFXM.js";import"./chunk-ACXFQWII.js";import l from"lodash/memoize";import{exec as m}from"child_process";import{promisify as u}from"util";var f=u(m),o=class extends Error{constructor(n,e,s){super(n);this.command=e;this.originalError=s;this.name="CommandExecutionError"}};function d(t,r){if(t instanceof o)throw i("Command execution failed",t,{command:t.command,originalError:t.originalError}),t;if(t instanceof Error){let e=new o(t.message,r,t);throw i("Failed to execute command",t,{command:r,stack:t.stack}),e}let n=new o("Unknown error occurred during command execution",r);throw i("Failed to execute command",null,{error:t,command:r}),n}async function a(t,r={}){if(!t||typeof t!="string")throw new o("Command must be a non-empty string",t);let n={encoding:"utf8",maxBuffer:5*1024*1024,timeout:3e4};try{let{stdout:e,stderr:s}=await f(t,{...n,...r}),c=e.trim();if(!c)throw s?new o(`Command failed with stderr: ${s}`,t):new o("Command returned empty result",t);return c}catch(e){d(e,t)}}var g=async()=>a('security find-generic-password -w -s "Chrome Safe Storage"'),P=l(g);export{P as getChromePassword};
2
+ //# sourceMappingURL=getChromePassword-74BC3LXO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/browsers/chrome/macos/getChromePassword.ts","../src/utils/execSimple.ts"],"sourcesContent":["import memoize from \"lodash/memoize\";\n\nimport { execSimple } from \"@utils/execSimple\";\n\n/**\n * Retrieves the Chrome Safe Storage password from the macOS keychain\n * @returns A promise that resolves to the Chrome Safe Storage password\n * @throws {Error} If the password cannot be retrieved from the keychain\n */\nconst getChromeSafeStoragePassword = async (): Promise<string> => {\n const command = 'security find-generic-password -w -s \"Chrome Safe Storage\"';\n return execSimple(command);\n};\n\n/**\n * Memoized version of getChromeSafeStoragePassword that caches the result\n * to avoid repeated keychain queries\n * @returns A promise that resolves to the Chrome Safe Storage password\n * @throws {Error} If the password cannot be retrieved from the keychain\n * @example\n */\nexport const getChromePassword = memoize(getChromeSafeStoragePassword);\n","// External imports\nimport { exec, ExecOptions } from \"child_process\";\nimport { promisify } from \"util\";\n\n// Internal imports\nimport { logError } from \"@utils/logHelpers\";\n\nconst execPromise = promisify(exec);\n\n/**\n * Custom error class for command execution failures.\n * @property {string} command - The command that failed to execute\n * @property {Error} [originalError] - The underlying error that caused the failure\n * @throws CommandExecutionError Always throws with appropriate error context\n * @example\n * ```typescript\n * throw new CommandExecutionError(\n * 'Command timed out',\n * 'git status',\n * originalError\n * );\n * ```\n */\nclass CommandExecutionError extends Error {\n public constructor(\n message: string,\n public readonly command: string,\n public readonly originalError?: Error,\n ) {\n super(message);\n this.name = \"CommandExecutionError\";\n }\n}\n\n/**\n * Handles execution errors and throws appropriate CommandExecutionError.\n * @internal\n * @param error - The error that occurred during command execution\n * @param command - The command that was being executed when the error occurred\n * @throws CommandExecutionError Always throws with appropriate error context\n * @example\n * ```typescript\n * try {\n * await execPromise('invalid-command');\n * } catch (error) {\n * handleExecutionError(error, 'invalid-command');\n * }\n * ```\n */\nfunction handleExecutionError(error: unknown, command: string): never {\n if (error instanceof CommandExecutionError) {\n logError(\"Command execution failed\", error, {\n command: error.command,\n originalError: error.originalError,\n });\n throw error;\n }\n\n if (error instanceof Error) {\n const commandError = new CommandExecutionError(\n error.message,\n command,\n error,\n );\n logError(\"Failed to execute command\", error, {\n command,\n stack: error.stack,\n });\n throw commandError;\n }\n\n // Handle unknown error types\n const commandError = new CommandExecutionError(\n \"Unknown error occurred during command execution\",\n command,\n );\n logError(\"Failed to execute command\", null, {\n error,\n command,\n });\n throw commandError;\n}\n\n/**\n * Executes a shell command asynchronously and returns its output as a string.\n * @param command - The shell command to execute\n * @param options - Optional execution options that override the defaults\n * @returns A promise that resolves to the trimmed command output\n * @throws CommandExecutionError if the command returns an empty result, times out, or fails to execute\n * @example\n * ```typescript\n * // Basic usage\n * const gitStatus = await execSimple('git status');\n *\n * // With custom timeout\n * const output = await execSimple('long-running-command', { timeout: 60000 });\n *\n * // Error handling\n * try {\n * const result = await execSimple('git push');\n * } catch (error) {\n * if (error instanceof CommandExecutionError) {\n * console.error('Push failed:', error.message);\n * }\n * }\n * ```\n */\nexport async function execSimple(\n command: string,\n options: Partial<ExecOptions> = {},\n): Promise<string> {\n if (!command || typeof command !== \"string\") {\n throw new CommandExecutionError(\n \"Command must be a non-empty string\",\n command,\n );\n }\n\n const defaultOptions = {\n encoding: \"utf8\" as BufferEncoding,\n maxBuffer: 5 * 1024 * 1024, // 5MB buffer\n timeout: 30000, // 30 second timeout\n };\n\n try {\n const { stdout, stderr } = await execPromise(command, {\n ...defaultOptions,\n ...options,\n });\n const result = stdout.trim();\n\n if (!result) {\n if (stderr) {\n throw new CommandExecutionError(\n `Command failed with stderr: ${stderr}`,\n command,\n );\n }\n throw new CommandExecutionError(\"Command returned empty result\", command);\n }\n\n return result;\n } catch (error) {\n handleExecutionError(error, command);\n }\n}\n"],"mappings":"oEAAA,OAAOA,MAAa,iBCCpB,OAAS,QAAAC,MAAyB,gBAClC,OAAS,aAAAC,MAAiB,OAK1B,IAAMC,EAAcC,EAAUC,CAAI,EAgB5BC,EAAN,cAAoC,KAAM,CACjC,YACLC,EACgBC,EACAC,EAChB,CACA,MAAMF,CAAO,EAHG,aAAAC,EACA,mBAAAC,EAGhB,KAAK,KAAO,uBACd,CACF,EAiBA,SAASC,EAAqBC,EAAgBH,EAAwB,CACpE,GAAIG,aAAiBL,EACnB,MAAAM,EAAS,2BAA4BD,EAAO,CAC1C,QAASA,EAAM,QACf,cAAeA,EAAM,aACvB,CAAC,EACKA,EAGR,GAAIA,aAAiB,MAAO,CAC1B,IAAME,EAAe,IAAIP,EACvBK,EAAM,QACNH,EACAG,CACF,EACA,MAAAC,EAAS,4BAA6BD,EAAO,CAC3C,QAAAH,EACA,MAAOG,EAAM,KACf,CAAC,EACKE,CACR,CAGA,IAAMA,EAAe,IAAIP,EACvB,kDACAE,CACF,EACA,MAAAI,EAAS,4BAA6B,KAAM,CAC1C,MAAAD,EACA,QAAAH,CACF,CAAC,EACKK,CACR,CA0BA,eAAsBC,EACpBN,EACAO,EAAgC,CAAC,EAChB,CACjB,GAAI,CAACP,GAAW,OAAOA,GAAY,SACjC,MAAM,IAAIF,EACR,qCACAE,CACF,EAGF,IAAMQ,EAAiB,CACrB,SAAU,OACV,UAAW,EAAI,KAAO,KACtB,QAAS,GACX,EAEA,GAAI,CACF,GAAM,CAAE,OAAAC,EAAQ,OAAAC,CAAO,EAAI,MAAMf,EAAYK,EAAS,CACpD,GAAGQ,EACH,GAAGD,CACL,CAAC,EACKI,EAASF,EAAO,KAAK,EAE3B,GAAI,CAACE,EACH,MAAID,EACI,IAAIZ,EACR,+BAA+BY,CAAM,GACrCV,CACF,EAEI,IAAIF,EAAsB,gCAAiCE,CAAO,EAG1E,OAAOW,CACT,OAASR,EAAO,CACdD,EAAqBC,EAAOH,CAAO,CACrC,CACF,CDxIA,IAAMY,EAA+B,SAE5BC,EADS,4DACS,EAUdC,EAAoBC,EAAQH,CAA4B","names":["memoize","exec","promisify","execPromise","promisify","exec","CommandExecutionError","message","command","originalError","handleExecutionError","error","logError","commandError","execSimple","options","defaultOptions","stdout","stderr","result","getChromeSafeStoragePassword","execSimple","getChromePassword","memoize"]}
@@ -0,0 +1,2 @@
1
+ import{a,b}from"./chunk-FZ5IFH4R.js";import"./chunk-DR2EQC4R.js";import"./chunk-BKU5PKJ5.js";import"./chunk-4I5M3M7H.js";import"./chunk-TUGIEFXM.js";import"./chunk-ACXFQWII.js";export{b as default,a as getCookie};
2
+ //# sourceMappingURL=getCookie-FBQKCKJB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,2 @@
1
+ import{a as t}from"./chunk-BKU5PKJ5.js";import"./chunk-4I5M3M7H.js";import{a as r}from"./chunk-TUGIEFXM.js";import"./chunk-ACXFQWII.js";async function i(e){try{return await new t().queryCookies(e.name,e.domain)}catch(o){return r.warn("Error querying Firefox cookies:",o instanceof Error?o.message:String(o)),[]}}var a=i;export{a as default,i as getFirefoxCookie};
2
+ //# sourceMappingURL=getFirefoxCookie-CGJJJ7VC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/cookies/getFirefoxCookie.ts"],"sourcesContent":["import type { CookieSpec } from \"../../types/CookieSpec\";\nimport type { ExportedCookie } from \"../../types/ExportedCookie\";\nimport logger from \"../../utils/logger\";\nimport { FirefoxCookieQueryStrategy } from \"../browsers/firefox/FirefoxCookieQueryStrategy\";\n\n/**\n * Retrieves cookies from Firefox browser storage that match the specified criteria.\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\" from Firefox\n * const cookies = await getFirefoxCookie({ name: \"sessionId\" });\n *\n * // Get cookies named \"userPref\" from specific domain in Firefox\n * const domainCookies = await getFirefoxCookie({\n * name: \"userPref\",\n * domain: \"example.com\"\n * });\n * ```\n */\nexport async function getFirefoxCookie(\n cookieSpec: CookieSpec,\n): Promise<ExportedCookie[]> {\n try {\n const strategy = new FirefoxCookieQueryStrategy();\n const cookies = await strategy.queryCookies(\n cookieSpec.name,\n cookieSpec.domain,\n );\n return cookies;\n } catch (error: unknown) {\n logger.warn(\n \"Error querying Firefox cookies:\",\n error instanceof Error ? error.message : String(error),\n );\n return [];\n }\n}\n\n/**\n * Default export of the getFirefoxCookie function.\n * @example\n * ```typescript\n * import getFirefoxCookie from './getFirefoxCookie';\n * const sessionCookies = await getFirefoxCookie({\n * name: \"PHPSESSID\",\n * domain: \"example.com\"\n * });\n * ```\n */\nexport default getFirefoxCookie;\n"],"mappings":"wIAyBA,eAAsBA,EACpBC,EAC2B,CAC3B,GAAI,CAMF,OAJgB,MADC,IAAIC,EAA2B,EACjB,aAC7BD,EAAW,KACXA,EAAW,MACb,CAEF,OAASE,EAAgB,CACvB,OAAAC,EAAO,KACL,kCACAD,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CACvD,EACO,CAAC,CACV,CACF,CAaA,IAAOE,EAAQL","names":["getFirefoxCookie","cookieSpec","FirefoxCookieQueryStrategy","error","logger_default","getFirefoxCookie_default"]}
@@ -0,0 +1,2 @@
1
+ import{a as t}from"./chunk-S5FU4HO5.js";import{a as r}from"./chunk-FZ5IFH4R.js";import"./chunk-DR2EQC4R.js";import"./chunk-BKU5PKJ5.js";import"./chunk-4I5M3M7H.js";import{a as o}from"./chunk-TUGIEFXM.js";import"./chunk-ACXFQWII.js";async function p(i,n={}){try{let e=await r(i);return t(e,{...n,format:"grouped"})}catch(e){return o.warn("Error getting grouped rendered cookies:",e instanceof Error?e.message:String(e)),[]}}var g=p;export{g as default,p as getGroupedRenderedCookies};
2
+ //# sourceMappingURL=getGroupedRenderedCookies-RNB6DKBL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/cookies/getGroupedRenderedCookies.ts"],"sourcesContent":["import type { RenderOptions } from \"../../types/CookieRender\";\nimport type { CookieSpec } from \"../../types/CookieSpec\";\nimport logger from \"../../utils/logger\";\n\nimport { getCookie } from \"./getCookie\";\nimport { renderCookies } from \"./renderCookies\";\n\n/**\n * Retrieves and renders cookies in a grouped format based on their source files.\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 * @param options - Options for rendering the cookies\n * @param options.showFilePaths - Whether to include file paths in the output\n * @param options.separator - Custom separator for cookie values\n * @returns An array of strings, each representing a group of cookies from a source file\n * @example\n * ```typescript\n * // Basic usage - get all cookies named \"sessionId\" grouped by source file\n * const cookies = await getGroupedRenderedCookies({ name: \"sessionId\" });\n *\n * // Get cookies with domain filter and custom rendering options\n * const domainCookies = await getGroupedRenderedCookies(\n * {\n * name: \"userPref\",\n * domain: \"example.com\"\n * },\n * {\n * showFilePaths: true,\n * separator: \" | \"\n * }\n * );\n * ```\n */\nexport async function getGroupedRenderedCookies(\n cookieSpec: CookieSpec,\n options: Omit<RenderOptions, \"format\"> = {},\n): Promise<string[]> {\n try {\n const cookies = await getCookie(cookieSpec);\n return renderCookies(cookies, {\n ...options,\n format: \"grouped\",\n }) as string[];\n } catch (error: unknown) {\n logger.warn(\n \"Error getting grouped rendered cookies:\",\n error instanceof Error ? error.message : String(error),\n );\n return [];\n }\n}\n\n/**\n * Default export of the getGroupedRenderedCookies function\n * @example\n * ```typescript\n * import getGroupedCookies from './getGroupedRenderedCookies';\n *\n * // Get all session cookies with custom separator\n * const sessionCookies = await getGroupedCookies(\n * { name: \"session_*\" },\n * { separator: \"\\n\" }\n * );\n *\n * // Get cookies from multiple domains\n * const multiDomainCookies = await getGroupedCookies({\n * name: \"tracking\",\n * domain: [\"site1.com\", \"site2.com\"]\n * });\n * ```\n */\nexport default getGroupedRenderedCookies;\n"],"mappings":"wOAkCA,eAAsBA,EACpBC,EACAC,EAAyC,CAAC,EACvB,CACnB,GAAI,CACF,IAAMC,EAAU,MAAMC,EAAUH,CAAU,EAC1C,OAAOI,EAAcF,EAAS,CAC5B,GAAGD,EACH,OAAQ,SACV,CAAC,CACH,OAASI,EAAgB,CACvB,OAAAC,EAAO,KACL,0CACAD,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CACvD,EACO,CAAC,CACV,CACF,CAqBA,IAAOE,EAAQR","names":["getGroupedRenderedCookies","cookieSpec","options","cookies","getCookie","renderCookies","error","logger_default","getGroupedRenderedCookies_default"]}
@@ -0,0 +1,2 @@
1
+ import{a as t}from"./chunk-S5FU4HO5.js";import{a as o}from"./chunk-FZ5IFH4R.js";import"./chunk-DR2EQC4R.js";import"./chunk-BKU5PKJ5.js";import"./chunk-4I5M3M7H.js";import{a as r}from"./chunk-TUGIEFXM.js";import"./chunk-ACXFQWII.js";async function m(i,n={}){try{let e=await o(i);return t(e,{...n,format:"merged"})}catch(e){return r.warn("Error getting merged rendered cookies:",e instanceof Error?e.message:String(e)),""}}var d=m;export{d as default,m as getMergedRenderedCookies};
2
+ //# sourceMappingURL=getMergedRenderedCookies-NC3UTOIC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/cookies/getMergedRenderedCookies.ts"],"sourcesContent":["import type { RenderOptions } from \"../../types/CookieRender\";\nimport type { CookieSpec } from \"../../types/CookieSpec\";\nimport logger from \"../../utils/logger\";\n\nimport { getCookie } from \"./getCookie\";\nimport { renderCookies } from \"./renderCookies\";\n\n/**\n * Retrieves and renders cookies in a merged format.\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 * @param options - Options for rendering the cookies\n * @param options.showFilePaths - Whether to include file paths in the output\n * @param options.separator - Custom separator for cookie values\n * @returns A string containing all cookie values merged with the specified separator\n * @example\n * ```typescript\n * const cookies = await getMergedRenderedCookies({\n * name: \"sessionId\",\n * domain: \"example.com\"\n * });\n * ```\n */\nexport async function getMergedRenderedCookies(\n cookieSpec: CookieSpec,\n options: Omit<RenderOptions, \"format\"> = {},\n): Promise<string> {\n try {\n const cookies = await getCookie(cookieSpec);\n return renderCookies(cookies, { ...options, format: \"merged\" }) as string;\n } catch (error: unknown) {\n logger.warn(\n \"Error getting merged rendered cookies:\",\n error instanceof Error ? error.message : String(error),\n );\n return \"\";\n }\n}\n\n/**\n * Default export of the getMergedRenderedCookies function.\n * @example\n * ```typescript\n * import { getMergedRenderedCookies } from './getMergedRenderedCookies';\n * const cookies = await getMergedRenderedCookies({\n * name: 'sessionId',\n * domain: 'example.com'\n * });\n * ```\n */\nexport default getMergedRenderedCookies;\n"],"mappings":"wOAwBA,eAAsBA,EACpBC,EACAC,EAAyC,CAAC,EACzB,CACjB,GAAI,CACF,IAAMC,EAAU,MAAMC,EAAUH,CAAU,EAC1C,OAAOI,EAAcF,EAAS,CAAE,GAAGD,EAAS,OAAQ,QAAS,CAAC,CAChE,OAASI,EAAgB,CACvB,OAAAC,EAAO,KACL,yCACAD,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CACvD,EACO,EACT,CACF,CAaA,IAAOE,EAAQR","names":["getMergedRenderedCookies","cookieSpec","options","cookies","getCookie","renderCookies","error","logger_default","getMergedRenderedCookies_default"]}
package/dist/index.cjs ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";var Jn=Object.create;var Ce=Object.defineProperty;var Yn=Object.getOwnPropertyDescriptor;var Zn=Object.getOwnPropertyNames;var Xn=Object.getPrototypeOf,ta=Object.prototype.hasOwnProperty;var Hs=s=>{throw TypeError(s)};var ea=(s,t,e)=>t in s?Ce(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e;var C=(s,t)=>()=>(s&&(t=s(s=0)),t);var $=(s,t)=>()=>(t||s((t={exports:{}}).exports,t),t.exports),Ut=(s,t)=>{for(var e in t)Ce(s,e,{get:t[e],enumerable:!0})},Qs=(s,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Zn(t))!ta.call(s,r)&&r!==e&&Ce(s,r,{get:()=>t[r],enumerable:!(i=Yn(t,r))||i.enumerable});return s};var ft=(s,t,e)=>(e=s!=null?Jn(Xn(s)):{},Qs(t||!s||!s.__esModule?Ce(e,"default",{value:s,enumerable:!0}):e,s)),ia=s=>Qs(Ce({},"__esModule",{value:!0}),s);var u=(s,t,e)=>ea(s,typeof t!="symbol"?t+"":t,e),Yi=(s,t,e)=>t.has(s)||Hs("Cannot "+e);var a=(s,t,e)=>(Yi(s,t,"read from private field"),e?e.call(s):t.get(s)),w=(s,t,e)=>t.has(s)?Hs("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(s):t.set(s,e),p=(s,t,e,i)=>(Yi(s,t,"write to private field"),i?i.call(s,e):t.set(s,e),e),b=(s,t,e)=>(Yi(s,t,"access private method"),e);var Ks,sa,D,Et=C(()=>{"use strict";Ks=require("consola"),sa=(0,Ks.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}),D=sa});async function Js(s,t,e=[]){return s.length===0?e:(await Promise.all(s.map(async r=>{try{return await t(r)}catch(o){return e}}))).flat()}var Ys=C(()=>{"use strict"});function ui(s,t,e){let r=`${t?"\u2705":"\u274C"} ${s} ${t?"succeeded":"failed"}`;t?D.success(r,e):D.error(r,e)}function G(s,t,e){let i={...e!=null?e:{},error:t instanceof Error?{name:t.name,message:t.message,stack:t.stack}:t};D.error(s,i)}function ut(s,t,e){D.withTag(s).debug(t,e)}function Zs(s){return D.withTag(s)}function pi(s,t,e){D.withTag(s).warn(t,e)}var zt=C(()=>{"use strict";Et();Et()});var Xs,tr,di,er=C(()=>{"use strict";Xs=ft(require("lodash/merge"),1),tr={};(0,Xs.default)(tr,process.env);di=tr.HOME;if(typeof di!="string"||di.length===0)throw new Error("HOME environment variable is not set or empty")});var sr,ir,re,Zi=C(()=>{"use strict";sr=require("path");er();re=(0,sr.join)((ir=di)!=null?ir:"","Library","Application Support","Google","Chrome")});var pt=$(mi=>{"use strict";mi.getBooleanOption=(s,t)=>{let e=!1;if(t in s&&typeof(e=s[t])!="boolean")throw new TypeError(`Expected the "${t}" option to be a boolean`);return e};mi.cppdb=Symbol();mi.inspect=Symbol.for("nodejs.util.inspect.custom")});var ts=$((Rl,rr)=>{"use strict";var Xi={value:"SqliteError",writable:!0,enumerable:!1,configurable:!0};function Gt(s,t){if(new.target!==Gt)return new Gt(s,t);if(typeof t!="string")throw new TypeError("Expected second argument to be a string");Error.call(this,s),Xi.value=""+s,Object.defineProperty(this,"message",Xi),Error.captureStackTrace(this,Gt),this.code=t}Object.setPrototypeOf(Gt,Error);Object.setPrototypeOf(Gt.prototype,Error.prototype);Object.defineProperty(Gt.prototype,"name",Xi);rr.exports=Gt});var nr=$((Ol,or)=>{"use strict";var gi=require("path").sep||"/";or.exports=ra;function ra(s){if(typeof s!="string"||s.length<=7||s.substring(0,7)!="file://")throw new TypeError("must pass in a file:// URI to convert to a file path");var t=decodeURI(s.substring(7)),e=t.indexOf("/"),i=t.substring(0,e),r=t.substring(e+1);return i=="localhost"&&(i=""),i&&(i=gi+gi+i),r=r.replace(/^(.+)\|/,"$1:"),gi=="\\"&&(r=r.replace(/\//g,"\\")),/^.+\:/.test(r)||(r=gi+r),i+r}});var cr=$((oe,lr)=>{"use strict";var es=require("fs"),yi=require("path"),oa=nr(),wi=yi.join,na=yi.dirname,ar=es.accessSync&&function(s){try{es.accessSync(s)}catch(t){return!1}return!0}||es.existsSync||yi.existsSync,hr={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 aa(s){typeof s=="string"?s={bindings:s}:s||(s={}),Object.keys(hr).map(function(h){h in s||(s[h]=hr[h])}),s.module_root||(s.module_root=oe.getRoot(oe.getFileName())),yi.extname(s.bindings)!=".node"&&(s.bindings+=".node");for(var t=typeof __webpack_require__=="function"?__non_webpack_require__:require,e=[],i=0,r=s.try.length,o,n,l;i<r;i++){o=wi.apply(null,s.try[i].map(function(h){return s[h]||h})),e.push(o);try{return n=s.path?t.resolve(o):t(o),s.path||(n.path=o),n}catch(h){if(h.code!=="MODULE_NOT_FOUND"&&h.code!=="QUALIFIED_PATH_RESOLUTION_FAILED"&&!/not find/i.test(h.message))throw h}}throw l=new Error(`Could not locate the bindings file. Tried:
2
+ `+e.map(function(h){return s.arrow+h}).join(`
3
+ `)),l.tries=e,l}lr.exports=oe=aa;oe.getFileName=function(t){var e=Error.prepareStackTrace,i=Error.stackTraceLimit,r={},o;Error.stackTraceLimit=10,Error.prepareStackTrace=function(l,h){for(var c=0,f=h.length;c<f;c++)if(o=h[c].getFileName(),o!==__filename)if(t){if(o!==t)return}else return},Error.captureStackTrace(r),r.stack,Error.prepareStackTrace=e,Error.stackTraceLimit=i;var n="file://";return o.indexOf(n)===0&&(o=oa(o)),o};oe.getRoot=function(t){for(var e=na(t),i;;){if(e==="."&&(e=process.cwd()),ar(wi(e,"package.json"))||ar(wi(e,"node_modules")))return e;if(i===e)throw new Error('Could not find module root given file: "'+t+'". Do you have a `package.json` file? ');i=e,e=wi(e,"..")}}});var fr=$(Pt=>{"use strict";var{cppdb:ot}=pt();Pt.prepare=function(t){return this[ot].prepare(t,this,!1)};Pt.exec=function(t){return this[ot].exec(t),this};Pt.close=function(){return this[ot].close(),this};Pt.loadExtension=function(...t){return this[ot].loadExtension(...t),this};Pt.defaultSafeIntegers=function(...t){return this[ot].defaultSafeIntegers(...t),this};Pt.unsafeMode=function(...t){return this[ot].unsafeMode(...t),this};Pt.getters={name:{get:function(){return this[ot].name},enumerable:!0},open:{get:function(){return this[ot].open},enumerable:!0},inTransaction:{get:function(){return this[ot].inTransaction},enumerable:!0},readonly:{get:function(){return this[ot].readonly},enumerable:!0},memory:{get:function(){return this[ot].memory},enumerable:!0}}});var dr=$((Dl,pr)=>{"use strict";var{cppdb:ha}=pt(),ur=new WeakMap;pr.exports=function(t){if(typeof t!="function")throw new TypeError("Expected first argument to be a function");let e=this[ha],i=la(e,this),{apply:r}=Function.prototype,o={default:{value:bi(r,t,e,i.default)},deferred:{value:bi(r,t,e,i.deferred)},immediate:{value:bi(r,t,e,i.immediate)},exclusive:{value:bi(r,t,e,i.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 la=(s,t)=>{let e=ur.get(s);if(!e){let i={commit:s.prepare("COMMIT",t,!1),rollback:s.prepare("ROLLBACK",t,!1),savepoint:s.prepare("SAVEPOINT ` _bs3. `",t,!1),release:s.prepare("RELEASE ` _bs3. `",t,!1),rollbackTo:s.prepare("ROLLBACK TO ` _bs3. `",t,!1)};ur.set(s,e={default:Object.assign({begin:s.prepare("BEGIN",t,!1)},i),deferred:Object.assign({begin:s.prepare("BEGIN DEFERRED",t,!1)},i),immediate:Object.assign({begin:s.prepare("BEGIN IMMEDIATE",t,!1)},i),exclusive:Object.assign({begin:s.prepare("BEGIN EXCLUSIVE",t,!1)},i)})}return e},bi=(s,t,e,{begin:i,commit:r,rollback:o,savepoint:n,release:l,rollbackTo:h})=>function(){let f,d,m;e.inTransaction?(f=n,d=l,m=h):(f=i,d=r,m=o),f.run();try{let y=s.call(t,this,arguments);return d.run(),y}catch(y){throw e.inTransaction&&(m.run(),m!==o&&d.run()),y}}});var gr=$((Ml,mr)=>{"use strict";var{getBooleanOption:ca,cppdb:fa}=pt();mr.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 i=ca(e,"simple"),r=this[fa].prepare(`PRAGMA ${t}`,this,!0);return i?r.pluck().get():r.all()}});var br=$((Fl,yr)=>{"use strict";var ua=require("fs"),pa=require("path"),{promisify:da}=require("util"),{cppdb:ma}=pt(),wr=da(ua.access);yr.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 i="attached"in e?e.attached:"main",r="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 i!="string")throw new TypeError('Expected the "attached" option to be a string');if(!i)throw new TypeError('The "attached" option cannot be an empty string');if(r!=null&&typeof r!="function")throw new TypeError('Expected the "progress" option to be a function');await wr(pa.dirname(t)).catch(()=>{throw new TypeError("Cannot save backup because the directory does not exist")});let o=await wr(t).then(()=>!1,()=>!0);return ga(this[ma].backup(this,i,t,o),r||null)};var ga=(s,t)=>{let e=0,i=!0;return new Promise((r,o)=>{setImmediate(function n(){try{let l=s.transfer(e);if(!l.remainingPages){s.close(),r(l);return}if(i&&(i=!1,e=100),t){let h=t(l);if(h!==void 0)if(typeof h=="number"&&h===h)e=Math.max(0,Math.min(2147483647,Math.round(h)));else throw new TypeError("Expected progress callback to return a number or undefined")}setImmediate(n)}catch(l){s.close(),o(l)}})})}});var xr=$((Al,Er)=>{"use strict";var{cppdb:wa}=pt();Er.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[wa].serialize(e)}});var kr=$((Nl,Sr)=>{"use strict";var{getBooleanOption:Ei,cppdb:ya}=pt();Sr.exports=function(t,e,i){if(e==null&&(e={}),typeof e=="function"&&(i=e,e={}),typeof t!="string")throw new TypeError("Expected first argument to be a string");if(typeof i!="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 r="safeIntegers"in e?+Ei(e,"safeIntegers"):2,o=Ei(e,"deterministic"),n=Ei(e,"directOnly"),l=Ei(e,"varargs"),h=-1;if(!l){if(h=i.length,!Number.isInteger(h)||h<0)throw new TypeError("Expected function.length to be a positive integer");if(h>100)throw new RangeError("User-defined functions cannot have more than 100 arguments")}return this[ya].function(i,t,h,r,o,n),this}});var Tr=$((jl,vr)=>{"use strict";var{getBooleanOption:xi,cppdb:ba}=pt();vr.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 i="start"in e?e.start:null,r=is(e,"step",!0),o=is(e,"inverse",!1),n=is(e,"result",!1),l="safeIntegers"in e?+xi(e,"safeIntegers"):2,h=xi(e,"deterministic"),c=xi(e,"directOnly"),f=xi(e,"varargs"),d=-1;if(!f&&(d=Math.max(Cr(r),o?Cr(o):0),d>0&&(d-=1),d>100))throw new RangeError("User-defined functions cannot have more than 100 arguments");return this[ba].aggregate(i,r,o,n,t,d,l,h,c),this};var is=(s,t,e)=>{let i=t in s?s[t]:null;if(typeof i=="function")return i;if(i!=null)throw new TypeError(`Expected the "${t}" option to be a function`);if(e)throw new TypeError(`Missing required option "${t}"`);return null},Cr=({length:s})=>{if(Number.isInteger(s)&&s>=0)return s;throw new TypeError("Expected function.length to be a positive integer")}});var Dr=$((Il,Pr)=>{"use strict";var{cppdb:Ea}=pt();Pr.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 i=!1;if(typeof e=="object"&&e!==null)i=!0,e=Oa(Or(e,"used",t));else{if(typeof e!="function")throw new TypeError("Expected second argument to be a function or a table definition object");e=xa(e)}return this[Ea].table(e,t,i),this};function xa(s){return function(e,i,r,...o){let n={module:e,database:i,table:r},l=Ta.call(s,n,o);if(typeof l!="object"||l===null)throw new TypeError(`Virtual table module "${e}" did not return a table definition object`);return Or(l,"returned",e)}}function Or(s,t,e){if(!ve.call(s,"rows"))throw new TypeError(`Virtual table module "${e}" ${t} a table definition without a "rows" property`);if(!ve.call(s,"columns"))throw new TypeError(`Virtual table module "${e}" ${t} a table definition without a "columns" property`);let i=s.rows;if(typeof i!="function"||Object.getPrototypeOf(i)!==Ra)throw new TypeError(`Virtual table module "${e}" ${t} a table definition with an invalid "rows" property (should be a generator function)`);let r=s.columns;if(!Array.isArray(r)||!(r=[...r]).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(r.length!==new Set(r).size)throw new TypeError(`Virtual table module "${e}" ${t} a table definition with duplicate column names`);if(!r.length)throw new RangeError(`Virtual table module "${e}" ${t} a table definition with zero columns`);let o;if(ve.call(s,"parameters")){if(o=s.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=va(i);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(r.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(ve.call(s,"safeIntegers")){let c=s.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 l=!1;if(ve.call(s,"directOnly")&&(l=s.directOnly,typeof l!="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(Rr).map(c=>`${c} HIDDEN`),...r.map(Rr)].join(", ")});`,Sa(i,new Map(r.map((c,f)=>[c,o.length+f])),e),o,n,l]}function Sa(s,t,e){return function*(...r){let o=r.map(n=>Buffer.isBuffer(n)?Buffer.from(n):n);for(let n=0;n<t.size;++n)o.push(null);for(let n of s(...r))if(Array.isArray(n))ka(n,o,t.size,e),yield o;else if(typeof n=="object"&&n!==null)Ca(n,o,t,e),yield o;else throw new TypeError(`Virtual table module "${e}" yielded something that isn't a valid row object`)}}function ka(s,t,e,i){if(s.length!==e)throw new TypeError(`Virtual table module "${i}" yielded a row with an incorrect number of columns`);let r=t.length-e;for(let o=0;o<e;++o)t[o+r]=s[o]}function Ca(s,t,e,i){let r=0;for(let o of Object.keys(s)){let n=e.get(o);if(n===void 0)throw new TypeError(`Virtual table module "${i}" yielded a row with an undeclared column "${o}"`);t[n]=s[o],r+=1}if(r!==e.size)throw new TypeError(`Virtual table module "${i}" yielded a row with missing columns`)}function va({length:s}){if(!Number.isInteger(s)||s<0)throw new TypeError("Expected function.length to be a positive integer");let t=[];for(let e=0;e<s;++e)t.push(`$${e+1}`);return t}var{hasOwnProperty:ve}=Object.prototype,{apply:Ta}=Function.prototype,Ra=Object.getPrototypeOf(function*(){}),Rr=s=>`"${s.replace(/"/g,'""')}"`,Oa=s=>()=>s});var Fr=$((Ll,Mr)=>{"use strict";var Pa=function(){};Mr.exports=function(t,e){return Object.assign(new Pa,this)}});var Ir=$((_l,jr)=>{"use strict";var Da=require("fs"),Ar=require("path"),Si=pt(),Ma=ts(),Nr;function W(s,t){if(new.target==null)return new W(s,t);let e;if(Buffer.isBuffer(s)&&(e=s,s=":memory:"),s==null&&(s=""),t==null&&(t={}),typeof s!="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 i=s.trim(),r=i===""||i===":memory:",o=Si.getBooleanOption(t,"readonly"),n=Si.getBooleanOption(t,"fileMustExist"),l="timeout"in t?t.timeout:5e3,h="verbose"in t?t.verbose:null,c="nativeBinding"in t?t.nativeBinding:null;if(o&&r&&!e)throw new TypeError("In-memory/temporary databases cannot be readonly");if(!Number.isInteger(l)||l<0)throw new TypeError('Expected the "timeout" option to be a positive integer');if(l>2147483647)throw new RangeError('Option "timeout" cannot be greater than 2147483647');if(h!=null&&typeof h!="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=Nr||(Nr=cr()("better_sqlite3.node")):typeof c=="string"?f=(typeof __non_webpack_require__=="function"?__non_webpack_require__:require)(Ar.resolve(c).replace(/(\.node)?$/,".node")):f=c,f.isInitialized||(f.setErrorConstructor(Ma),f.isInitialized=!0),!r&&!Da.existsSync(Ar.dirname(i)))throw new TypeError("Cannot open database because the directory does not exist");Object.defineProperties(this,{[Si.cppdb]:{value:new f.Database(i,s,r,o,n,l,h||null,e||null)},...Vt.getters})}var Vt=fr();W.prototype.prepare=Vt.prepare;W.prototype.transaction=dr();W.prototype.pragma=gr();W.prototype.backup=br();W.prototype.serialize=xr();W.prototype.function=kr();W.prototype.aggregate=Tr();W.prototype.table=Dr();W.prototype.loadExtension=Vt.loadExtension;W.prototype.exec=Vt.exec;W.prototype.close=Vt.close;W.prototype.defaultSafeIntegers=Vt.defaultSafeIntegers;W.prototype.unsafeMode=Vt.unsafeMode;W.prototype[Si.inspect]=Fr();jr.exports=W});var Lr=$((Bl,ss)=>{"use strict";ss.exports=Ir();ss.exports.SqliteError=ts()});function Aa(s){try{return s.close(),Promise.resolve()}catch(t){return G("Database close failed",t),Promise.reject(t instanceof Error?t:new Error("Failed to close database: Unknown error"))}}async function ki({file:s,sql:t,params:e,rowFilter:i,rowTransform:r}){let o;try{o=await Fa(s);let l=o.prepare(t).all(e),h=i?l.filter(i):l;return r?h.map(r):h}catch(n){throw G("Database query failed",n,{file:s,sql:t}),n}finally{o&&await Aa(o)}}var _r,Br,Fa,rs=C(()=>{"use strict";_r=ft(Lr(),1),Br=ft(require("lodash/memoize"),1);zt();Fa=(0,Br.default)(s=>{try{return Promise.resolve(new _r.default(s,{readonly:!0}))}catch(t){throw G("Database open failed",t,{file:s}),t}})});function Na(s){if(typeof s!="string")return!1;let t=s.trim();return t.length===0?!1:(0,$r.existsSync)(t)}async function ja(){let s=[(0,Ci.join)(re,"Default/Cookies"),(0,Ci.join)(re,"Profile */Cookies"),(0,Ci.join)(re,"Profile Default/Cookies")],t=[];for(let e of s){let i=await(0,qr.default)(e);t.push(...i)}return ut("ChromeCookies","Found cookie files",{count:t.length,files:t}),t}function Ia(s,t){let e=s==="%",i=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 ?",r=e?[`%${t}%`]:[s,`%${t}%`];return{sql:i,params:r}}async function La(s,t,e){try{let{sql:i,params:r}=Ia(t,e);ut("ChromeCookies","Executing query",{sql:i,params:r});let o=await ki({file:s,sql:i,params:r,rowTransform:n=>({name:n.name,domain:n.host_key,value:n.encrypted_value,expiry:n.expires_utc})});return ui("QueryCookies",!0,{file:s,count:o.length}),o}catch(i){return G("Failed to read cookie file",i,{file:s}),[]}}async function Wr({name:s,domain:t,file:e}){let i=typeof e=="string"&&e.length>0?[e]:await ja();if(i.length===0)return ut("ChromeCookies","No cookie files found"),[];let r=[];for(let o of i){if(!Na(o)){ut("ChromeCookies","Cookie file missing or invalid",{file:o});continue}let n=await La(o,s,t);r.push(...n)}return ut("ChromeCookies","Query complete",{totalCookies:r.length}),r}var $r,Ci,qr,Ur=C(()=>{"use strict";$r=require("fs"),Ci=require("path"),qr=ft(require("fast-glob"),1);zt();Zi();rs()});var Qr=$((Hl,Hr)=>{"use strict";Hr.exports=Gr;function Gr(s,t,e){s instanceof RegExp&&(s=zr(s,e)),t instanceof RegExp&&(t=zr(t,e));var i=Vr(s,t,e);return i&&{start:i[0],end:i[1],pre:e.slice(0,i[0]),body:e.slice(i[0]+s.length,i[1]),post:e.slice(i[1]+t.length)}}function zr(s,t){var e=t.match(s);return e?e[0]:null}Gr.range=Vr;function Vr(s,t,e){var i,r,o,n,l,h=e.indexOf(s),c=e.indexOf(t,h+1),f=h;if(h>=0&&c>0){if(s===t)return[h,c];for(i=[],o=e.length;f>=0&&!l;)f==h?(i.push(f),h=e.indexOf(s,f+1)):i.length==1?l=[i.pop(),c]:(r=i.pop(),r<o&&(o=r,n=c),c=e.indexOf(t,f+1)),f=h<c&&h>=0?h:c;i.length&&(l=[o,n])}return l}});var io=$((Ql,eo)=>{"use strict";var Kr=Qr();eo.exports=$a;var Jr="\0SLASH"+Math.random()+"\0",Yr="\0OPEN"+Math.random()+"\0",ns="\0CLOSE"+Math.random()+"\0",Zr="\0COMMA"+Math.random()+"\0",Xr="\0PERIOD"+Math.random()+"\0";function os(s){return parseInt(s,10)==s?parseInt(s,10):s.charCodeAt(0)}function _a(s){return s.split("\\\\").join(Jr).split("\\{").join(Yr).split("\\}").join(ns).split("\\,").join(Zr).split("\\.").join(Xr)}function Ba(s){return s.split(Jr).join("\\").split(Yr).join("{").split(ns).join("}").split(Zr).join(",").split(Xr).join(".")}function to(s){if(!s)return[""];var t=[],e=Kr("{","}",s);if(!e)return s.split(",");var i=e.pre,r=e.body,o=e.post,n=i.split(",");n[n.length-1]+="{"+r+"}";var l=to(o);return o.length&&(n[n.length-1]+=l.shift(),n.push.apply(n,l)),t.push.apply(t,n),t}function $a(s){return s?(s.substr(0,2)==="{}"&&(s="\\{\\}"+s.substr(2)),Te(_a(s),!0).map(Ba)):[]}function qa(s){return"{"+s+"}"}function Wa(s){return/^-?0\d/.test(s)}function Ua(s,t){return s<=t}function za(s,t){return s>=t}function Te(s,t){var e=[],i=Kr("{","}",s);if(!i)return[s];var r=i.pre,o=i.post.length?Te(i.post,!1):[""];if(/\$$/.test(i.pre))for(var n=0;n<o.length;n++){var l=r+"{"+i.body+"}"+o[n];e.push(l)}else{var h=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),c=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),f=h||c,d=i.body.indexOf(",")>=0;if(!f&&!d)return i.post.match(/,.*\}/)?(s=i.pre+"{"+i.body+ns+i.post,Te(s)):[s];var m;if(f)m=i.body.split(/\.\./);else if(m=to(i.body),m.length===1&&(m=Te(m[0],!1).map(qa),m.length===1))return o.map(function(Kn){return i.pre+m[0]+Kn});var y;if(f){var v=os(m[0]),g=os(m[1]),k=Math.max(m[0].length,m[1].length),S=m.length==3?Math.abs(os(m[2])):1,T=Ua,R=g<v;R&&(S*=-1,T=za);var F=m.some(Wa);y=[];for(var J=v;T(J,g);J+=S){var tt;if(c)tt=String.fromCharCode(J),tt==="\\"&&(tt="");else if(tt=String(J),F){var Gs=k-tt.length;if(Gs>0){var Vs=new Array(Gs+1).join("0");J<0?tt="-"+Vs+tt.slice(1):tt=Vs+tt}}y.push(tt)}}else{y=[];for(var Wt=0;Wt<m.length;Wt++)y.push.apply(y,Te(m[Wt],!1))}for(var Wt=0;Wt<y.length;Wt++)for(var n=0;n<o.length;n++){var l=r+y[Wt]+o[n];(!t||f||l)&&e.push(l)}}return e}});var Re,so=C(()=>{"use strict";Re=s=>{if(typeof s!="string")throw new TypeError("invalid pattern");if(s.length>65536)throw new TypeError("pattern is too long")}});var Ga,Oe,Va,ro,oo,no=C(()=>{"use strict";Ga={"[: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]},Oe=s=>s.replace(/[[\]\\-]/g,"\\$&"),Va=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),ro=s=>s.join(""),oo=(s,t)=>{let e=t;if(s.charAt(e)!=="[")throw new Error("not in a brace expression");let i=[],r=[],o=e+1,n=!1,l=!1,h=!1,c=!1,f=e,d="";t:for(;o<s.length;){let g=s.charAt(o);if((g==="!"||g==="^")&&o===e+1){c=!0,o++;continue}if(g==="]"&&n&&!h){f=o+1;break}if(n=!0,g==="\\"&&!h){h=!0,o++;continue}if(g==="["&&!h){for(let[k,[S,T,R]]of Object.entries(Ga))if(s.startsWith(k,o)){if(d)return["$.",!1,s.length-e,!0];o+=k.length,R?r.push(S):i.push(S),l=l||T;continue t}}if(h=!1,d){g>d?i.push(Oe(d)+"-"+Oe(g)):g===d&&i.push(Oe(g)),d="",o++;continue}if(s.startsWith("-]",o+1)){i.push(Oe(g+"-")),o+=2;continue}if(s.startsWith("-",o+1)){d=g,o+=2;continue}i.push(Oe(g)),o++}if(f<o)return["",!1,0,!1];if(!i.length&&!r.length)return["$.",!1,s.length-e,!0];if(r.length===0&&i.length===1&&/^\\?.$/.test(i[0])&&!c){let g=i[0].length===2?i[0].slice(-1):i[0];return[Va(g),!1,f-e,!1]}let m="["+(c?"^":"")+ro(i)+"]",y="["+(c?"":"^")+ro(r)+"]";return[i.length&&r.length?"("+m+"|"+y+")":i.length?m:y,l,f-e,!0]}});var nt,vi=C(()=>{"use strict";nt=(s,{windowsPathsNoEscape:t=!1}={})=>t?s.replace(/\[([^\/\\])\]/g,"$1"):s.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")});var Ha,ao,Qa,Ti,Ka,Ja,Ya,Za,hs,ho,lo,A,j,xt,O,M,Dt,Ht,Mt,dt,Qt,Pe,Kt,co,Ft,Ri,as,fo,V,ne,ls=C(()=>{"use strict";no();vi();Ha=new Set(["!","?","+","*","@"]),ao=s=>Ha.has(s),Qa="(?!(?:^|/)\\.\\.?(?:$|/))",Ti="(?!\\.)",Ka=new Set(["[","."]),Ja=new Set(["..","."]),Ya=new Set("().*{}+?[]^$\\!"),Za=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),hs="[^/]",ho=hs+"*?",lo=hs+"+?",V=class V{constructor(t,e,i={}){w(this,Kt);u(this,"type");w(this,A);w(this,j);w(this,xt,!1);w(this,O,[]);w(this,M);w(this,Dt);w(this,Ht);w(this,Mt,!1);w(this,dt);w(this,Qt);w(this,Pe,!1);this.type=t,t&&p(this,j,!0),p(this,M,e),p(this,A,a(this,M)?a(a(this,M),A):this),p(this,dt,a(this,A)===this?i:a(a(this,A),dt)),p(this,Ht,a(this,A)===this?[]:a(a(this,A),Ht)),t==="!"&&!a(a(this,A),Mt)&&a(this,Ht).push(this),p(this,Dt,a(this,M)?a(a(this,M),O).length:0)}get hasMagic(){if(a(this,j)!==void 0)return a(this,j);for(let t of a(this,O))if(typeof t!="string"&&(t.type||t.hasMagic))return p(this,j,!0);return a(this,j)}toString(){return a(this,Qt)!==void 0?a(this,Qt):this.type?p(this,Qt,this.type+"("+a(this,O).map(t=>String(t)).join("|")+")"):p(this,Qt,a(this,O).map(t=>String(t)).join(""))}push(...t){for(let e of t)if(e!==""){if(typeof e!="string"&&!(e instanceof V&&a(e,M)===this))throw new Error("invalid part: "+e);a(this,O).push(e)}}toJSON(){var e;let t=this.type===null?a(this,O).slice().map(i=>typeof i=="string"?i:i.toJSON()):[this.type,...a(this,O).map(i=>i.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===a(this,A)||a(a(this,A),Mt)&&((e=a(this,M))==null?void 0:e.type)==="!")&&t.push({}),t}isStart(){var e;if(a(this,A)===this)return!0;if(!((e=a(this,M))!=null&&e.isStart()))return!1;if(a(this,Dt)===0)return!0;let t=a(this,M);for(let i=0;i<a(this,Dt);i++){let r=a(t,O)[i];if(!(r instanceof V&&r.type==="!"))return!1}return!0}isEnd(){var e,i,r;if(a(this,A)===this||((e=a(this,M))==null?void 0:e.type)==="!")return!0;if(!((i=a(this,M))!=null&&i.isEnd()))return!1;if(!this.type)return(r=a(this,M))==null?void 0:r.isEnd();let t=a(this,M)?a(a(this,M),O).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 V(this.type,t);for(let i of a(this,O))e.copyIn(i);return e}static fromGlob(t,e={}){var r;let i=new V(null,void 0,e);return b(r=V,Ft,Ri).call(r,t,i,0,e),i}toMMPattern(){if(this!==a(this,A))return a(this,A).toMMPattern();let t=this.toString(),[e,i,r,o]=this.toRegExpSource();if(!(r||a(this,j)||a(this,dt).nocase&&!a(this,dt).nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return i;let l=(a(this,dt).nocase?"i":"")+(o?"u":"");return Object.assign(new RegExp(`^${e}$`,l),{_src:e,_glob:t})}get options(){return a(this,dt)}toRegExpSource(t){var h;let e=t!=null?t:!!a(this,dt).dot;if(a(this,A)===this&&b(this,Kt,co).call(this),!this.type){let c=this.isStart()&&this.isEnd(),f=a(this,O).map(v=>{var R;let[g,k,S,T]=typeof v=="string"?b(R=V,Ft,fo).call(R,v,a(this,j),c):v.toRegExpSource(t);return p(this,j,a(this,j)||S),p(this,xt,a(this,xt)||T),g}).join(""),d="";if(this.isStart()&&typeof a(this,O)[0]=="string"&&!(a(this,O).length===1&&Ja.has(a(this,O)[0]))){let g=Ka,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?Qa:S?Ti:""}let m="";return this.isEnd()&&a(a(this,A),Mt)&&((h=a(this,M))==null?void 0:h.type)==="!"&&(m="(?:$|\\/)"),[d+f+m,nt(f),p(this,j,!!a(this,j)),a(this,xt)]}let i=this.type==="*"||this.type==="+",r=this.type==="!"?"(?:(?!(?:":"(?:",o=b(this,Kt,as).call(this,e);if(this.isStart()&&this.isEnd()&&!o&&this.type!=="!"){let c=this.toString();return p(this,O,[c]),this.type=null,p(this,j,void 0),[c,nt(this.toString()),!1,!1]}let n=!i||t||e||!Ti?"":b(this,Kt,as).call(this,!0);n===o&&(n=""),n&&(o=`(?:${o})(?:${n})*?`);let l="";if(this.type==="!"&&a(this,Pe))l=(this.isStart()&&!e?Ti:"")+lo;else{let c=this.type==="!"?"))"+(this.isStart()&&!e&&!t?Ti:"")+ho+")":this.type==="@"?")":this.type==="?"?")?":this.type==="+"&&n?")":this.type==="*"&&n?")?":`)${this.type}`;l=r+o+c}return[l,nt(o),p(this,j,!!a(this,j)),a(this,xt)]}};A=new WeakMap,j=new WeakMap,xt=new WeakMap,O=new WeakMap,M=new WeakMap,Dt=new WeakMap,Ht=new WeakMap,Mt=new WeakMap,dt=new WeakMap,Qt=new WeakMap,Pe=new WeakMap,Kt=new WeakSet,co=function(){if(this!==a(this,A))throw new Error("should only call on root");if(a(this,Mt))return this;this.toString(),p(this,Mt,!0);let t;for(;t=a(this,Ht).pop();){if(t.type!=="!")continue;let e=t,i=a(e,M);for(;i;){for(let r=a(e,Dt)+1;!i.type&&r<a(i,O).length;r++)for(let o of a(t,O)){if(typeof o=="string")throw new Error("string part in extglob AST??");o.copyIn(a(i,O)[r])}e=i,i=a(e,M)}}return this},Ft=new WeakSet,Ri=function(t,e,i,r){var y,v;let o=!1,n=!1,l=-1,h=!1;if(e.type===null){let g=i,k="";for(;g<t.length;){let S=t.charAt(g++);if(o||S==="\\"){o=!o,k+=S;continue}if(n){g===l+1?(S==="^"||S==="!")&&(h=!0):S==="]"&&!(g===l+2&&h)&&(n=!1),k+=S;continue}else if(S==="["){n=!0,l=g,h=!1,k+=S;continue}if(!r.noext&&ao(S)&&t.charAt(g)==="("){e.push(k),k="";let T=new V(S,e);g=b(y=V,Ft,Ri).call(y,t,T,g,r),e.push(T);continue}k+=S}return e.push(k),g}let c=i+1,f=new V(null,e),d=[],m="";for(;c<t.length;){let g=t.charAt(c++);if(o||g==="\\"){o=!o,m+=g;continue}if(n){c===l+1?(g==="^"||g==="!")&&(h=!0):g==="]"&&!(c===l+2&&h)&&(n=!1),m+=g;continue}else if(g==="["){n=!0,l=c,h=!1,m+=g;continue}if(ao(g)&&t.charAt(c)==="("){f.push(m),m="";let k=new V(g,f);f.push(k),c=b(v=V,Ft,Ri).call(v,t,k,c,r);continue}if(g==="|"){f.push(m),m="",d.push(f),f=new V(null,e);continue}if(g===")")return m===""&&a(e,O).length===0&&p(e,Pe,!0),f.push(m),m="",e.push(...d,f),c;m+=g}return e.type=null,p(e,j,void 0),p(e,O,[t.substring(i-1)]),c},as=function(t){return a(this,O).map(e=>{if(typeof e=="string")throw new Error("string type in extglob ast??");let[i,r,o,n]=e.toRegExpSource(t);return p(this,xt,a(this,xt)||n),i}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join("|")},fo=function(t,e,i=!1){let r=!1,o="",n=!1;for(let l=0;l<t.length;l++){let h=t.charAt(l);if(r){r=!1,o+=(Ya.has(h)?"\\":"")+h;continue}if(h==="\\"){l===t.length-1?o+="\\\\":r=!0;continue}if(h==="["){let[c,f,d,m]=oo(t,l);if(d){o+=c,n=n||f,l+=d-1,e=e||m;continue}}if(h==="*"){i&&t==="*"?o+=lo:o+=ho,e=!0;continue}if(h==="?"){o+=hs,e=!0;continue}o+=Za(h)}return[o,nt(t),!!e,n]},w(V,Ft);ne=V});var ae,cs=C(()=>{"use strict";ae=(s,{windowsPathsNoEscape:t=!1}={})=>t?s.replace(/[?*()[\]]/g,"[$&]"):s.replace(/[?*()[\]\\]/g,"\\$&")});var mo,H,Xa,th,eh,ih,sh,rh,oh,nh,ah,hh,lh,ch,fh,uh,ph,dh,mh,gh,go,wo,yo,uo,wh,q,yh,bh,Eh,xh,Sh,et,kh,bo,Ch,vh,po,Th,Y,At=C(()=>{"use strict";mo=ft(io(),1);so();ls();cs();vi();ls();cs();vi();H=(s,t,e={})=>(Re(t),!e.nocomment&&t.charAt(0)==="#"?!1:new Y(t,e).match(s)),Xa=/^\*+([^+@!?\*\[\(]*)$/,th=s=>t=>!t.startsWith(".")&&t.endsWith(s),eh=s=>t=>t.endsWith(s),ih=s=>(s=s.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(s)),sh=s=>(s=s.toLowerCase(),t=>t.toLowerCase().endsWith(s)),rh=/^\*+\.\*+$/,oh=s=>!s.startsWith(".")&&s.includes("."),nh=s=>s!=="."&&s!==".."&&s.includes("."),ah=/^\.\*+$/,hh=s=>s!=="."&&s!==".."&&s.startsWith("."),lh=/^\*+$/,ch=s=>s.length!==0&&!s.startsWith("."),fh=s=>s.length!==0&&s!=="."&&s!=="..",uh=/^\?+([^+@!?\*\[\(]*)?$/,ph=([s,t=""])=>{let e=go([s]);return t?(t=t.toLowerCase(),i=>e(i)&&i.toLowerCase().endsWith(t)):e},dh=([s,t=""])=>{let e=wo([s]);return t?(t=t.toLowerCase(),i=>e(i)&&i.toLowerCase().endsWith(t)):e},mh=([s,t=""])=>{let e=wo([s]);return t?i=>e(i)&&i.endsWith(t):e},gh=([s,t=""])=>{let e=go([s]);return t?i=>e(i)&&i.endsWith(t):e},go=([s])=>{let t=s.length;return e=>e.length===t&&!e.startsWith(".")},wo=([s])=>{let t=s.length;return e=>e.length===t&&e!=="."&&e!==".."},yo=typeof process=="object"&&process?typeof process.env=="object"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix",uo={win32:{sep:"\\"},posix:{sep:"/"}},wh=yo==="win32"?uo.win32.sep:uo.posix.sep;H.sep=wh;q=Symbol("globstar **");H.GLOBSTAR=q;yh="[^/]",bh=yh+"*?",Eh="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",xh="(?:(?!(?:\\/|^)\\.).)*?",Sh=(s,t={})=>e=>H(e,s,t);H.filter=Sh;et=(s,t={})=>Object.assign({},s,t),kh=s=>{if(!s||typeof s!="object"||!Object.keys(s).length)return H;let t=H;return Object.assign((i,r,o={})=>t(i,r,et(s,o)),{Minimatch:class extends t.Minimatch{constructor(r,o={}){super(r,et(s,o))}static defaults(r){return t.defaults(et(s,r)).Minimatch}},AST:class extends t.AST{constructor(r,o,n={}){super(r,o,et(s,n))}static fromGlob(r,o={}){return t.AST.fromGlob(r,et(s,o))}},unescape:(i,r={})=>t.unescape(i,et(s,r)),escape:(i,r={})=>t.escape(i,et(s,r)),filter:(i,r={})=>t.filter(i,et(s,r)),defaults:i=>t.defaults(et(s,i)),makeRe:(i,r={})=>t.makeRe(i,et(s,r)),braceExpand:(i,r={})=>t.braceExpand(i,et(s,r)),match:(i,r,o={})=>t.match(i,r,et(s,o)),sep:t.sep,GLOBSTAR:q})};H.defaults=kh;bo=(s,t={})=>(Re(s),t.nobrace||!/\{(?:(?!\{).)*\}/.test(s)?[s]:(0,mo.default)(s));H.braceExpand=bo;Ch=(s,t={})=>new Y(s,t).makeRe();H.makeRe=Ch;vh=(s,t,e={})=>{let i=new Y(t,e);return s=s.filter(r=>i.match(r)),i.options.nonull&&!s.length&&s.push(t),s};H.match=vh;po=/[?*]|[+@!]\(.*?\)|\[|\]/,Th=s=>s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),Y=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");Re(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||yo,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 i=this.globSet.map(o=>this.slashSplit(o));this.globParts=this.preprocess(i),this.debug(this.pattern,this.globParts);let r=this.globParts.map((o,n,l)=>{if(this.isWindows&&this.windowsNoMagicRoot){let h=o[0]===""&&o[1]===""&&(o[2]==="?"||!po.test(o[2]))&&!po.test(o[3]),c=/^[a-z]:/i.test(o[0]);if(h)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(h=>this.parse(h))});if(this.debug(this.pattern,r),this.set=r.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 i=0;i<t.length;i++)for(let r=0;r<t[i].length;r++)t[i][r]==="**"&&(t[i][r]="*");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 i=-1;for(;(i=e.indexOf("**",i+1))!==-1;){let r=i;for(;e[r+1]==="**";)r++;r!==i&&e.splice(i,r-i)}return e})}levelOneOptimize(t){return t.map(e=>(e=e.reduce((i,r)=>{let o=i[i.length-1];return r==="**"&&o==="**"?i:r===".."&&o&&o!==".."&&o!=="."&&o!=="**"?(i.pop(),i):(i.push(r),i)},[]),e.length===0?[""]:e))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let r=1;r<t.length-1;r++){let o=t[r];r===1&&o===""&&t[0]===""||(o==="."||o==="")&&(e=!0,t.splice(r,1),r--)}t[0]==="."&&t.length===2&&(t[1]==="."||t[1]==="")&&(e=!0,t.pop())}let i=0;for(;(i=t.indexOf("..",i+1))!==-1;){let r=t[i-1];r&&r!=="."&&r!==".."&&r!=="**"&&(e=!0,t.splice(i-1,2),i-=2)}}while(e);return t.length===0?[""]:t}firstPhasePreProcess(t){let e=!1;do{e=!1;for(let i of t){let r=-1;for(;(r=i.indexOf("**",r+1))!==-1;){let n=r;for(;i[n+1]==="**";)n++;n>r&&i.splice(r+1,n-r);let l=i[r+1],h=i[r+2],c=i[r+3];if(l!==".."||!h||h==="."||h===".."||!c||c==="."||c==="..")continue;e=!0,i.splice(r,1);let f=i.slice(0);f[r]="**",t.push(f),r--}if(!this.preserveMultipleSlashes){for(let n=1;n<i.length-1;n++){let l=i[n];n===1&&l===""&&i[0]===""||(l==="."||l==="")&&(e=!0,i.splice(n,1),n--)}i[0]==="."&&i.length===2&&(i[1]==="."||i[1]==="")&&(e=!0,i.pop())}let o=0;for(;(o=i.indexOf("..",o+1))!==-1;){let n=i[o-1];if(n&&n!=="."&&n!==".."&&n!=="**"){e=!0;let h=o===1&&i[o+1]==="**"?["."]:[];i.splice(o-1,2,...h),i.length===0&&i.push(""),o-=2}}}}while(e);return t}secondPhasePreProcess(t){for(let e=0;e<t.length-1;e++)for(let i=e+1;i<t.length;i++){let r=this.partsMatch(t[e],t[i],!this.preserveMultipleSlashes);if(r){t[e]=[],t[i]=r;break}}return t.filter(e=>e.length)}partsMatch(t,e,i=!1){let r=0,o=0,n=[],l="";for(;r<t.length&&o<e.length;)if(t[r]===e[o])n.push(l==="b"?e[o]:t[r]),r++,o++;else if(i&&t[r]==="**"&&e[o]===t[r+1])n.push(t[r]),r++;else if(i&&e[o]==="**"&&t[r]===e[o+1])n.push(e[o]),o++;else if(t[r]==="*"&&e[o]&&(this.options.dot||!e[o].startsWith("."))&&e[o]!=="**"){if(l==="b")return!1;l="a",n.push(t[r]),r++,o++}else if(e[o]==="*"&&t[r]&&(this.options.dot||!t[r].startsWith("."))&&t[r]!=="**"){if(l==="a")return!1;l="b",n.push(e[o]),r++,o++}else return!1;return t.length===e.length&&n}parseNegate(){if(this.nonegate)return;let t=this.pattern,e=!1,i=0;for(let r=0;r<t.length&&t.charAt(r)==="!";r++)e=!e,i++;i&&(this.pattern=t.slice(i)),this.negate=e}matchOne(t,e,i=!1){let r=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]),R=k?3:g?0:void 0,F=T?3:S?0:void 0;if(typeof R=="number"&&typeof F=="number"){let[J,tt]=[t[R],e[F]];J.toLowerCase()===tt.toLowerCase()&&(e[F]=J,F>R?e=e.slice(F):R>F&&(t=t.slice(R)))}}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,l=0,h=t.length,c=e.length;n<h&&l<c;n++,l++){this.debug("matchOne loop");var f=e[l],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=l+1;if(y===c){for(this.debug("** at the end");n<h;n++)if(t[n]==="."||t[n]===".."||!r.dot&&t[n].charAt(0)===".")return!1;return!0}for(;m<h;){var v=t[m];if(this.debug(`
4
+ globstar while`,t,m,e,y,v),this.matchOne(t.slice(m),e.slice(y),i))return this.debug("globstar found match!",m,h,v),!0;if(v==="."||v===".."||!r.dot&&v.charAt(0)==="."){this.debug("dot detected!",t,m,e,y);break}this.debug("globstar swallow a segment, and continue"),m++}return!!(i&&(this.debug(`
5
+ >>> no match, partial?`,t,m,e,y),m===h))}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===h&&l===c)return!0;if(n===h)return i;if(l===c)return n===h-1&&t[n]==="";throw new Error("wtf?")}braceExpand(){return bo(this.pattern,this.options)}parse(t){Re(t);let e=this.options;if(t==="**")return q;if(t==="")return"";let i,r=null;(i=t.match(lh))?r=e.dot?fh:ch:(i=t.match(Xa))?r=(e.nocase?e.dot?sh:ih:e.dot?eh:th)(i[1]):(i=t.match(uh))?r=(e.nocase?e.dot?dh:ph:e.dot?mh:gh)(i):(i=t.match(rh))?r=e.dot?nh:oh:(i=t.match(ah))&&(r=hh);let o=ne.fromGlob(t,this.options).toMMPattern();return r&&typeof o=="object"&&Reflect.defineProperty(o,"test",{value:r}),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,i=e.noglobstar?bh:e.dot?Eh:xh,r=new Set(e.nocase?["i"]:[]),o=t.map(h=>{let c=h.map(f=>{if(f instanceof RegExp)for(let d of f.flags.split(""))r.add(d);return typeof f=="string"?Th(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]="(?:\\/|"+i+"\\/)?"+m:c[d]=i:m===void 0?c[d-1]=y+"(?:\\/|"+i+")?":m!==q&&(c[d-1]=y+"(?:\\/|\\/"+i+"\\/)"+m,c[d+1]=q))}),c.filter(f=>f!==q).join("/")}).join("|"),[n,l]=t.length>1?["(?:",")"]:["",""];o="^"+n+o+l+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...r].join(""))}catch(h){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 i=this.options;this.isWindows&&(t=t.split("\\").join("/"));let r=this.slashSplit(t);this.debug(this.pattern,"split",r);let o=this.set;this.debug(this.pattern,"set",o);let n=r[r.length-1];if(!n)for(let l=r.length-2;!n&&l>=0;l--)n=r[l];for(let l=0;l<o.length;l++){let h=o[l],c=r;if(i.matchBase&&h.length===1&&(c=[n]),this.matchOne(c,h,e))return i.flipNegate?!0:!this.negate}return i.flipNegate?!1:this.negate}static defaults(t){return H.defaults(t).Minimatch}};H.AST=ne;H.Minimatch=Y;H.escape=ae;H.unescape=nt});var Ni,ws,Uo,Eo,Rh,Oh,Ph,St,kt,Nt,Oi,De,Pi,xo,Di,So,at,he,I,Me,le,L,Q,_,fs,Mi,U,P,us,ps,ko,ds,mt,ms,Fi,Fe,Jt,Z,Ae,Dh,Mh,Fh,Ah,Ai,gs,Nh,jh,Co,vo,To,Ro,Oo,Po,Do,Mo,Fo,Ao,No,jo,Io,Lo,_o,Bo,$o,qo,Wo,jt,ys=C(()=>{"use strict";Ni=require("events"),ws=ft(require("stream"),1),Uo=require("string_decoder"),Eo=typeof process=="object"&&process?process:{stdout:null,stderr:null},Rh=s=>!!s&&typeof s=="object"&&(s instanceof jt||s instanceof ws.default||Oh(s)||Ph(s)),Oh=s=>!!s&&typeof s=="object"&&s instanceof Ni.EventEmitter&&typeof s.pipe=="function"&&s.pipe!==ws.default.Writable.prototype.pipe,Ph=s=>!!s&&typeof s=="object"&&s instanceof Ni.EventEmitter&&typeof s.write=="function"&&typeof s.end=="function",St=Symbol("EOF"),kt=Symbol("maybeEmitEnd"),Nt=Symbol("emittedEnd"),Oi=Symbol("emittingEnd"),De=Symbol("emittedError"),Pi=Symbol("closed"),xo=Symbol("read"),Di=Symbol("flush"),So=Symbol("flushChunk"),at=Symbol("encoding"),he=Symbol("decoder"),I=Symbol("flowing"),Me=Symbol("paused"),le=Symbol("resume"),L=Symbol("buffer"),Q=Symbol("pipes"),_=Symbol("bufferLength"),fs=Symbol("bufferPush"),Mi=Symbol("bufferShift"),U=Symbol("objectMode"),P=Symbol("destroyed"),us=Symbol("error"),ps=Symbol("emitData"),ko=Symbol("emitEnd"),ds=Symbol("emitEnd2"),mt=Symbol("async"),ms=Symbol("abort"),Fi=Symbol("aborted"),Fe=Symbol("signal"),Jt=Symbol("dataListeners"),Z=Symbol("discarded"),Ae=s=>Promise.resolve().then(s),Dh=s=>s(),Mh=s=>s==="end"||s==="finish"||s==="prefinish",Fh=s=>s instanceof ArrayBuffer||!!s&&typeof s=="object"&&s.constructor&&s.constructor.name==="ArrayBuffer"&&s.byteLength>=0,Ah=s=>!Buffer.isBuffer(s)&&ArrayBuffer.isView(s),Ai=class{constructor(t,e,i){u(this,"src");u(this,"dest");u(this,"opts");u(this,"ondrain");this.src=t,this.dest=e,this.opts=i,this.ondrain=()=>t[le](),this.dest.on("drain",this.ondrain)}unpipe(){this.dest.removeListener("drain",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},gs=class extends Ai{unpipe(){this.src.removeListener("error",this.proxyErrors),super.unpipe()}constructor(t,e,i){super(t,e,i),this.proxyErrors=r=>e.emit("error",r),t.on("error",this.proxyErrors)}},Nh=s=>!!s.objectMode,jh=s=>!s.objectMode&&!!s.encoding&&s.encoding!=="buffer",jt=class extends Ni.EventEmitter{constructor(...e){let i=e[0]||{};super();u(this,Wo,!1);u(this,qo,!1);u(this,$o,[]);u(this,Bo,[]);u(this,_o);u(this,Lo);u(this,Io);u(this,jo);u(this,No,!1);u(this,Ao,!1);u(this,Fo,!1);u(this,Mo,!1);u(this,Do,null);u(this,Po,0);u(this,Oo,!1);u(this,Ro);u(this,To,!1);u(this,vo,0);u(this,Co,!1);u(this,"writable",!0);u(this,"readable",!0);if(i.objectMode&&typeof i.encoding=="string")throw new TypeError("Encoding and objectMode may not be used together");Nh(i)?(this[U]=!0,this[at]=null):jh(i)?(this[at]=i.encoding,this[U]=!1):(this[U]=!1,this[at]=null),this[mt]=!!i.async,this[he]=this[at]?new Uo.StringDecoder(this[at]):null,i&&i.debugExposeBuffer===!0&&Object.defineProperty(this,"buffer",{get:()=>this[L]}),i&&i.debugExposePipes===!0&&Object.defineProperty(this,"pipes",{get:()=>this[Q]});let{signal:r}=i;r&&(this[Fe]=r,r.aborted?this[ms]():r.addEventListener("abort",()=>this[ms]()))}get bufferLength(){return this[_]}get encoding(){return this[at]}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[U]}set objectMode(e){throw new Error("objectMode must be set at instantiation time")}get async(){return this[mt]}set async(e){this[mt]=this[mt]||!!e}[(Wo=I,qo=Me,$o=Q,Bo=L,_o=U,Lo=at,Io=mt,jo=he,No=St,Ao=Nt,Fo=Oi,Mo=Pi,Do=De,Po=_,Oo=P,Ro=Fe,To=Fi,vo=Jt,Co=Z,ms)](){var e,i;this[Fi]=!0,this.emit("abort",(e=this[Fe])==null?void 0:e.reason),this.destroy((i=this[Fe])==null?void 0:i.reason)}get aborted(){return this[Fi]}set aborted(e){}write(e,i,r){var n;if(this[Fi])return!1;if(this[St])throw new Error("write after end");if(this[P])return this.emit("error",Object.assign(new Error("Cannot call write after a stream was destroyed"),{code:"ERR_STREAM_DESTROYED"})),!0;typeof i=="function"&&(r=i,i="utf8"),i||(i="utf8");let o=this[mt]?Ae:Dh;if(!this[U]&&!Buffer.isBuffer(e)){if(Ah(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(Fh(e))e=Buffer.from(e);else if(typeof e!="string")throw new Error("Non-contiguous data written to non-objectMode stream")}return this[U]?(this[I]&&this[_]!==0&&this[Di](!0),this[I]?this.emit("data",e):this[fs](e),this[_]!==0&&this.emit("readable"),r&&o(r),this[I]):e.length?(typeof e=="string"&&!(i===this[at]&&!((n=this[he])!=null&&n.lastNeed))&&(e=Buffer.from(e,i)),Buffer.isBuffer(e)&&this[at]&&(e=this[he].write(e)),this[I]&&this[_]!==0&&this[Di](!0),this[I]?this.emit("data",e):this[fs](e),this[_]!==0&&this.emit("readable"),r&&o(r),this[I]):(this[_]!==0&&this.emit("readable"),r&&o(r),this[I])}read(e){if(this[P])return null;if(this[Z]=!1,this[_]===0||e===0||e&&e>this[_])return this[kt](),null;this[U]&&(e=null),this[L].length>1&&!this[U]&&(this[L]=[this[at]?this[L].join(""):Buffer.concat(this[L],this[_])]);let i=this[xo](e||null,this[L][0]);return this[kt](),i}[xo](e,i){if(this[U])this[Mi]();else{let r=i;e===r.length||e===null?this[Mi]():typeof r=="string"?(this[L][0]=r.slice(e),i=r.slice(0,e),this[_]-=e):(this[L][0]=r.subarray(e),i=r.subarray(0,e),this[_]-=e)}return this.emit("data",i),!this[L].length&&!this[St]&&this.emit("drain"),i}end(e,i,r){return typeof e=="function"&&(r=e,e=void 0),typeof i=="function"&&(r=i,i="utf8"),e!==void 0&&this.write(e,i),r&&this.once("end",r),this[St]=!0,this.writable=!1,(this[I]||!this[Me])&&this[kt](),this}[le](){this[P]||(!this[Jt]&&!this[Q].length&&(this[Z]=!0),this[Me]=!1,this[I]=!0,this.emit("resume"),this[L].length?this[Di]():this[St]?this[kt]():this.emit("drain"))}resume(){return this[le]()}pause(){this[I]=!1,this[Me]=!0,this[Z]=!1}get destroyed(){return this[P]}get flowing(){return this[I]}get paused(){return this[Me]}[fs](e){this[U]?this[_]+=1:this[_]+=e.length,this[L].push(e)}[Mi](){return this[U]?this[_]-=1:this[_]-=this[L][0].length,this[L].shift()}[Di](e=!1){do;while(this[So](this[Mi]())&&this[L].length);!e&&!this[L].length&&!this[St]&&this.emit("drain")}[So](e){return this.emit("data",e),this[I]}pipe(e,i){if(this[P])return e;this[Z]=!1;let r=this[Nt];return i=i||{},e===Eo.stdout||e===Eo.stderr?i.end=!1:i.end=i.end!==!1,i.proxyErrors=!!i.proxyErrors,r?i.end&&e.end():(this[Q].push(i.proxyErrors?new gs(this,e,i):new Ai(this,e,i)),this[mt]?Ae(()=>this[le]()):this[le]()),e}unpipe(e){let i=this[Q].find(r=>r.dest===e);i&&(this[Q].length===1?(this[I]&&this[Jt]===0&&(this[I]=!1),this[Q]=[]):this[Q].splice(this[Q].indexOf(i),1),i.unpipe())}addListener(e,i){return this.on(e,i)}on(e,i){let r=super.on(e,i);if(e==="data")this[Z]=!1,this[Jt]++,!this[Q].length&&!this[I]&&this[le]();else if(e==="readable"&&this[_]!==0)super.emit("readable");else if(Mh(e)&&this[Nt])super.emit(e),this.removeAllListeners(e);else if(e==="error"&&this[De]){let o=i;this[mt]?Ae(()=>o.call(this,this[De])):o.call(this,this[De])}return r}removeListener(e,i){return this.off(e,i)}off(e,i){let r=super.off(e,i);return e==="data"&&(this[Jt]=this.listeners("data").length,this[Jt]===0&&!this[Z]&&!this[Q].length&&(this[I]=!1)),r}removeAllListeners(e){let i=super.removeAllListeners(e);return(e==="data"||e===void 0)&&(this[Jt]=0,!this[Z]&&!this[Q].length&&(this[I]=!1)),i}get emittedEnd(){return this[Nt]}[kt](){!this[Oi]&&!this[Nt]&&!this[P]&&this[L].length===0&&this[St]&&(this[Oi]=!0,this.emit("end"),this.emit("prefinish"),this.emit("finish"),this[Pi]&&this.emit("close"),this[Oi]=!1)}emit(e,...i){let r=i[0];if(e!=="error"&&e!=="close"&&e!==P&&this[P])return!1;if(e==="data")return!this[U]&&!r?!1:this[mt]?(Ae(()=>this[ps](r)),!0):this[ps](r);if(e==="end")return this[ko]();if(e==="close"){if(this[Pi]=!0,!this[Nt]&&!this[P])return!1;let n=super.emit("close");return this.removeAllListeners("close"),n}else if(e==="error"){this[De]=r,super.emit(us,r);let n=!this[Fe]||this.listeners("error").length?super.emit("error",r):!1;return this[kt](),n}else if(e==="resume"){let n=super.emit("resume");return this[kt](),n}else if(e==="finish"||e==="prefinish"){let n=super.emit(e);return this.removeAllListeners(e),n}let o=super.emit(e,...i);return this[kt](),o}[ps](e){for(let r of this[Q])r.dest.write(e)===!1&&this.pause();let i=this[Z]?!1:super.emit("data",e);return this[kt](),i}[ko](){return this[Nt]?!1:(this[Nt]=!0,this.readable=!1,this[mt]?(Ae(()=>this[ds]()),!0):this[ds]())}[ds](){if(this[he]){let i=this[he].end();if(i){for(let r of this[Q])r.dest.write(i);this[Z]||super.emit("data",i)}}for(let i of this[Q])i.end();let e=super.emit("end");return this.removeAllListeners("end"),e}async collect(){let e=Object.assign([],{dataLength:0});this[U]||(e.dataLength=0);let i=this.promise();return this.on("data",r=>{e.push(r),this[U]||(e.dataLength+=r.length)}),await i,e}async concat(){if(this[U])throw new Error("cannot concat in objectMode");let e=await this.collect();return this[at]?e.join(""):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,i)=>{this.on(P,()=>i(new Error("stream destroyed"))),this.on("error",r=>i(r)),this.on("end",()=>e())})}[Symbol.asyncIterator](){this[Z]=!1;let e=!1,i=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return i();let o=this.read();if(o!==null)return Promise.resolve({done:!1,value:o});if(this[St])return i();let n,l,h=m=>{this.off("data",c),this.off("end",f),this.off(P,d),i(),l(m)},c=m=>{this.off("error",h),this.off("end",f),this.off(P,d),this.pause(),n({value:m,done:!!this[St]})},f=()=>{this.off("error",h),this.off("data",c),this.off(P,d),i(),n({done:!0,value:void 0})},d=()=>h(new Error("stream destroyed"));return new Promise((m,y)=>{l=y,n=m,this.once(P,d),this.once("error",h),this.once("end",f),this.once("data",c)})},throw:i,return:i,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[Z]=!1;let e=!1,i=()=>(this.pause(),this.off(us,i),this.off(P,i),this.off("end",i),e=!0,{done:!0,value:void 0}),r=()=>{if(e)return i();let o=this.read();return o===null?i():{done:!1,value:o}};return this.once("end",i),this.once(us,i),this.once(P,i),{next:r,throw:i,return:i,[Symbol.iterator](){return this}}}destroy(e){if(this[P])return e?this.emit("error",e):this.emit(P),this;this[P]=!0,this[Z]=!0,this[L].length=0,this[_]=0;let i=this;return typeof i.close=="function"&&!this[Pi]&&i.close(),e?this.emit("error",e):this.emit(P),this}static get isStream(){return Rh}}});var Os,de,Qo,bt,Ih,Lt,Lh,je,Ko,Jo,_h,Bh,st,Yo,Zo,gt,Xo,tn,Yt,en,it,Ne,bs,zo,Ie,ht,ji,Li,Go,$h,Es,Vo,Le,Ho,Ii,qi,xs,sn,K,qe,We,Ue,ze,Ge,Ve,He,Qe,Ke,Je,Ye,Ze,Xe,ti,ei,ii,si,ri,It,Zt,wt,Ct,vt,Tt,x,Xt,Rt,yt,E,Ss,_i,_e,ks,Cs,Be,Bi,vs,Ts,$i,rn,on,nn,Rs,ce,fe,an,te,z,Wi,Ui,ue,pe,oi,ni,zi,me,ge,$e,wc,hn,ln=C(()=>{"use strict";Os=require("lru-cache"),de=require("path"),Qo=require("url"),bt=require("fs"),Ih=ft(require("fs"),1),Lt=require("fs/promises");ys();Lh=bt.realpathSync.native,je={lstatSync:bt.lstatSync,readdir:bt.readdir,readdirSync:bt.readdirSync,readlinkSync:bt.readlinkSync,realpathSync:Lh,promises:{lstat:Lt.lstat,readdir:Lt.readdir,readlink:Lt.readlink,realpath:Lt.realpath}},Ko=s=>!s||s===je||s===Ih?je:{...je,...s,promises:{...je.promises,...s.promises||{}}},Jo=/^\\\\\?\\([a-z]:)\\?$/i,_h=s=>s.replace(/\//g,"\\").replace(Jo,"$1\\"),Bh=/[\\\/]/,st=0,Yo=1,Zo=2,gt=4,Xo=6,tn=8,Yt=10,en=12,it=15,Ne=~it,bs=16,zo=32,Ie=64,ht=128,ji=256,Li=512,Go=Ie|ht|Li,$h=1023,Es=s=>s.isFile()?tn:s.isDirectory()?gt:s.isSymbolicLink()?Yt:s.isCharacterDevice()?Zo:s.isBlockDevice()?Xo:s.isSocket()?en:s.isFIFO()?Yo:st,Vo=new Map,Le=s=>{let t=Vo.get(s);if(t)return t;let e=s.normalize("NFKD");return Vo.set(s,e),e},Ho=new Map,Ii=s=>{let t=Ho.get(s);if(t)return t;let e=Le(s.toLowerCase());return Ho.set(s,e),e},qi=class extends Os.LRUCache{constructor(){super({max:256})}},xs=class extends Os.LRUCache{constructor(t=16*1024){super({maxSize:t,sizeCalculation:e=>e.length+1})}},sn=Symbol("PathScurry setAsCwd"),z=class{constructor(t,e=st,i,r,o,n,l){w(this,E);u(this,"name");u(this,"root");u(this,"roots");u(this,"parent");u(this,"nocase");u(this,"isCWD",!1);w(this,K);w(this,qe);w(this,We);w(this,Ue);w(this,ze);w(this,Ge);w(this,Ve);w(this,He);w(this,Qe);w(this,Ke);w(this,Je);w(this,Ye);w(this,Ze);w(this,Xe);w(this,ti);w(this,ei);w(this,ii);w(this,si);w(this,ri);w(this,It);w(this,Zt);w(this,wt);w(this,Ct);w(this,vt);w(this,Tt);w(this,x);w(this,Xt);w(this,Rt);w(this,yt);w(this,ce,[]);w(this,fe,!1);w(this,te);this.name=t,p(this,It,o?Ii(t):Le(t)),p(this,x,e&$h),this.nocase=o,this.roots=r,this.root=i||this,p(this,Xt,n),p(this,wt,l.fullpath),p(this,vt,l.relative),p(this,Tt,l.relativePosix),this.parent=l.parent,this.parent?p(this,K,a(this.parent,K)):p(this,K,Ko(l.fs))}get dev(){return a(this,qe)}get mode(){return a(this,We)}get nlink(){return a(this,Ue)}get uid(){return a(this,ze)}get gid(){return a(this,Ge)}get rdev(){return a(this,Ve)}get blksize(){return a(this,He)}get ino(){return a(this,Qe)}get size(){return a(this,Ke)}get blocks(){return a(this,Je)}get atimeMs(){return a(this,Ye)}get mtimeMs(){return a(this,Ze)}get ctimeMs(){return a(this,Xe)}get birthtimeMs(){return a(this,ti)}get atime(){return a(this,ei)}get mtime(){return a(this,ii)}get ctime(){return a(this,si)}get birthtime(){return a(this,ri)}get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}depth(){return a(this,Zt)!==void 0?a(this,Zt):this.parent?p(this,Zt,this.parent.depth()+1):p(this,Zt,0)}childrenCache(){return a(this,Xt)}resolve(t){var n;if(!t)return this;let e=this.getRootString(t),r=t.substring(e.length).split(this.splitSep);return e?b(n=this.getRoot(e),E,Ss).call(n,r):b(this,E,Ss).call(this,r)}children(){let t=a(this,Xt).get(this);if(t)return t;let e=Object.assign([],{provisional:0});return a(this,Xt).set(this,e),p(this,x,a(this,x)&~bs),e}child(t,e){if(t===""||t===".")return this;if(t==="..")return this.parent||this;let i=this.children(),r=this.nocase?Ii(t):Le(t);for(let h of i)if(a(h,It)===r)return h;let o=this.parent?this.sep:"",n=a(this,wt)?a(this,wt)+o+t:void 0,l=this.newChild(t,st,{...e,parent:this,fullpath:n});return this.canReaddir()||p(l,x,a(l,x)|ht),i.push(l),l}relative(){if(this.isCWD)return"";if(a(this,vt)!==void 0)return a(this,vt);let t=this.name,e=this.parent;if(!e)return p(this,vt,this.name);let i=e.relative();return i+(!i||!e.parent?"":this.sep)+t}relativePosix(){if(this.sep==="/")return this.relative();if(this.isCWD)return"";if(a(this,Tt)!==void 0)return a(this,Tt);let t=this.name,e=this.parent;if(!e)return p(this,Tt,this.fullpathPosix());let i=e.relativePosix();return i+(!i||!e.parent?"":"/")+t}fullpath(){if(a(this,wt)!==void 0)return a(this,wt);let t=this.name,e=this.parent;if(!e)return p(this,wt,this.name);let r=e.fullpath()+(e.parent?this.sep:"")+t;return p(this,wt,r)}fullpathPosix(){if(a(this,Ct)!==void 0)return a(this,Ct);if(this.sep==="/")return p(this,Ct,this.fullpath());if(!this.parent){let r=this.fullpath().replace(/\\/g,"/");return/^[a-z]:\//i.test(r)?p(this,Ct,`//?/${r}`):p(this,Ct,r)}let t=this.parent,e=t.fullpathPosix(),i=e+(!e||!t.parent?"":"/")+this.name;return p(this,Ct,i)}isUnknown(){return(a(this,x)&it)===st}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)&it)===tn}isDirectory(){return(a(this,x)&it)===gt}isCharacterDevice(){return(a(this,x)&it)===Zo}isBlockDevice(){return(a(this,x)&it)===Xo}isFIFO(){return(a(this,x)&it)===Yo}isSocket(){return(a(this,x)&it)===en}isSymbolicLink(){return(a(this,x)&Yt)===Yt}lstatCached(){return a(this,x)&zo?this:void 0}readlinkCached(){return a(this,Rt)}realpathCached(){return a(this,yt)}readdirCached(){let t=this.children();return t.slice(0,t.provisional)}canReadlink(){if(a(this,Rt))return!0;if(!this.parent)return!1;let t=a(this,x)&it;return!(t!==st&&t!==Yt||a(this,x)&ji||a(this,x)&ht)}calledReaddir(){return!!(a(this,x)&bs)}isENOENT(){return!!(a(this,x)&ht)}isNamed(t){return this.nocase?a(this,It)===Ii(t):a(this,It)===Le(t)}async readlink(){var e;let t=a(this,Rt);if(t)return t;if(this.canReadlink()&&this.parent)try{let i=await a(this,K).promises.readlink(this.fullpath()),r=(e=await this.parent.realpath())==null?void 0:e.resolve(i);if(r)return p(this,Rt,r)}catch(i){b(this,E,Ts).call(this,i.code);return}}readlinkSync(){var e;let t=a(this,Rt);if(t)return t;if(this.canReadlink()&&this.parent)try{let i=a(this,K).readlinkSync(this.fullpath()),r=(e=this.parent.realpathSync())==null?void 0:e.resolve(i);if(r)return p(this,Rt,r)}catch(i){b(this,E,Ts).call(this,i.code);return}}async lstat(){if(!(a(this,x)&ht))try{return b(this,E,Rs).call(this,await a(this,K).promises.lstat(this.fullpath())),this}catch(t){b(this,E,vs).call(this,t.code)}}lstatSync(){if(!(a(this,x)&ht))try{return b(this,E,Rs).call(this,a(this,K).lstatSync(this.fullpath())),this}catch(t){b(this,E,vs).call(this,t.code)}}readdirCB(t,e=!1){if(!this.canReaddir()){e?t(null,[]):queueMicrotask(()=>t(null,[]));return}let i=this.children();if(this.calledReaddir()){let o=i.slice(0,i.provisional);e?t(null,o):queueMicrotask(()=>t(null,o));return}if(a(this,ce).push(t),a(this,fe))return;p(this,fe,!0);let r=this.fullpath();a(this,K).readdir(r,{withFileTypes:!0},(o,n)=>{if(o)b(this,E,Bi).call(this,o.code),i.provisional=0;else{for(let l of n)b(this,E,$i).call(this,l,i);b(this,E,_i).call(this,i)}b(this,E,an).call(this,i.slice(0,i.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,te))await a(this,te);else{let i=()=>{};p(this,te,new Promise(r=>i=r));try{for(let r of await a(this,K).promises.readdir(e,{withFileTypes:!0}))b(this,E,$i).call(this,r,t);b(this,E,_i).call(this,t)}catch(r){b(this,E,Bi).call(this,r.code),t.provisional=0}p(this,te,void 0),i()}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 i of a(this,K).readdirSync(e,{withFileTypes:!0}))b(this,E,$i).call(this,i,t);b(this,E,_i).call(this,t)}catch(i){b(this,E,Bi).call(this,i.code),t.provisional=0}return t.slice(0,t.provisional)}canReaddir(){if(a(this,x)&Go)return!1;let t=it&a(this,x);return t===st||t===gt||t===Yt}shouldWalk(t,e){return(a(this,x)&gt)===gt&&!(a(this,x)&Go)&&!t.has(this)&&(!e||e(this))}async realpath(){if(a(this,yt))return a(this,yt);if(!((Li|ji|ht)&a(this,x)))try{let t=await a(this,K).promises.realpath(this.fullpath());return p(this,yt,this.resolve(t))}catch(t){b(this,E,Cs).call(this)}}realpathSync(){if(a(this,yt))return a(this,yt);if(!((Li|ji|ht)&a(this,x)))try{let t=a(this,K).realpathSync(this.fullpath());return p(this,yt,this.resolve(t))}catch(t){b(this,E,Cs).call(this)}}[sn](t){if(t===this)return;t.isCWD=!1,this.isCWD=!0;let e=new Set([]),i=[],r=this;for(;r&&r.parent;)e.add(r),p(r,vt,i.join(this.sep)),p(r,Tt,i.join("/")),r=r.parent,i.push("..");for(r=t;r&&r.parent&&!e.has(r);)p(r,vt,void 0),p(r,Tt,void 0),r=r.parent}};K=new WeakMap,qe=new WeakMap,We=new WeakMap,Ue=new WeakMap,ze=new WeakMap,Ge=new WeakMap,Ve=new WeakMap,He=new WeakMap,Qe=new WeakMap,Ke=new WeakMap,Je=new WeakMap,Ye=new WeakMap,Ze=new WeakMap,Xe=new WeakMap,ti=new WeakMap,ei=new WeakMap,ii=new WeakMap,si=new WeakMap,ri=new WeakMap,It=new WeakMap,Zt=new WeakMap,wt=new WeakMap,Ct=new WeakMap,vt=new WeakMap,Tt=new WeakMap,x=new WeakMap,Xt=new WeakMap,Rt=new WeakMap,yt=new WeakMap,E=new WeakSet,Ss=function(t){let e=this;for(let i of t)e=e.child(i);return e},_i=function(t){var e;p(this,x,a(this,x)|bs);for(let i=t.provisional;i<t.length;i++){let r=t[i];r&&b(e=r,E,_e).call(e)}},_e=function(){a(this,x)&ht||(p(this,x,(a(this,x)|ht)&Ne),b(this,E,ks).call(this))},ks=function(){var e;let t=this.children();t.provisional=0;for(let i of t)b(e=i,E,_e).call(e)},Cs=function(){p(this,x,a(this,x)|Li),b(this,E,Be).call(this)},Be=function(){if(a(this,x)&Ie)return;let t=a(this,x);(t&it)===gt&&(t&=Ne),p(this,x,t|Ie),b(this,E,ks).call(this)},Bi=function(t=""){t==="ENOTDIR"||t==="EPERM"?b(this,E,Be).call(this):t==="ENOENT"?b(this,E,_e).call(this):this.children().provisional=0},vs=function(t=""){var e;if(t==="ENOTDIR"){let i=this.parent;b(e=i,E,Be).call(e)}else t==="ENOENT"&&b(this,E,_e).call(this)},Ts=function(t=""){var i;let e=a(this,x);e|=ji,t==="ENOENT"&&(e|=ht),(t==="EINVAL"||t==="UNKNOWN")&&(e&=Ne),p(this,x,e),t==="ENOTDIR"&&this.parent&&b(i=this.parent,E,Be).call(i)},$i=function(t,e){return b(this,E,on).call(this,t,e)||b(this,E,rn).call(this,t,e)},rn=function(t,e){let i=Es(t),r=this.newChild(t.name,i,{parent:this}),o=a(r,x)&it;return o!==gt&&o!==Yt&&o!==st&&p(r,x,a(r,x)|Ie),e.unshift(r),e.provisional++,r},on=function(t,e){for(let i=e.provisional;i<e.length;i++){let r=e[i];if((this.nocase?Ii(t.name):Le(t.name))===a(r,It))return b(this,E,nn).call(this,t,r,i,e)}},nn=function(t,e,i,r){let o=e.name;return p(e,x,a(e,x)&Ne|Es(t)),o!==t.name&&(e.name=t.name),i!==r.provisional&&(i===r.length-1?r.pop():r.splice(i,1),r.unshift(e)),r.provisional++,e},Rs=function(t){let{atime:e,atimeMs:i,birthtime:r,birthtimeMs:o,blksize:n,blocks:l,ctime:h,ctimeMs:c,dev:f,gid:d,ino:m,mode:y,mtime:v,mtimeMs:g,nlink:k,rdev:S,size:T,uid:R}=t;p(this,ei,e),p(this,Ye,i),p(this,ri,r),p(this,ti,o),p(this,He,n),p(this,Je,l),p(this,si,h),p(this,Xe,c),p(this,qe,f),p(this,Ge,d),p(this,Qe,m),p(this,We,y),p(this,ii,v),p(this,Ze,g),p(this,Ue,k),p(this,Ve,S),p(this,Ke,T),p(this,ze,R);let F=Es(t);p(this,x,a(this,x)&Ne|F|zo),F!==st&&F!==gt&&F!==Yt&&p(this,x,a(this,x)|Ie)},ce=new WeakMap,fe=new WeakMap,an=function(t){p(this,fe,!1);let e=a(this,ce).slice();a(this,ce).length=0,e.forEach(i=>i(null,t))},te=new WeakMap;Wi=class s extends z{constructor(e,i=st,r,o,n,l,h){super(e,i,r,o,n,l,h);u(this,"sep","\\");u(this,"splitSep",Bh)}newChild(e,i=st,r={}){return new s(e,i,this.root,this.roots,this.nocase,this.childrenCache(),r)}getRootString(e){return de.win32.parse(e).root}getRoot(e){if(e=_h(e.toUpperCase()),e===this.root.name)return this.root;for(let[i,r]of Object.entries(this.roots))if(this.sameRoot(e,i))return this.roots[e]=r;return this.roots[e]=new me(e,this).root}sameRoot(e,i=this.root.name){return e=e.toUpperCase().replace(/\//g,"\\").replace(Jo,"$1\\"),e===i}},Ui=class s extends z{constructor(e,i=st,r,o,n,l,h){super(e,i,r,o,n,l,h);u(this,"splitSep","/");u(this,"sep","/")}getRootString(e){return e.startsWith("/")?"/":""}getRoot(e){return this.root}newChild(e,i=st,r={}){return new s(e,i,this.root,this.roots,this.nocase,this.childrenCache(),r)}},zi=class{constructor(t=process.cwd(),e,i,{nocase:r,childrenCacheSize:o=16*1024,fs:n=je}={}){u(this,"root");u(this,"rootPath");u(this,"roots");u(this,"cwd");w(this,ue);w(this,pe);w(this,oi);u(this,"nocase");w(this,ni);p(this,ni,Ko(n)),(t instanceof URL||t.startsWith("file://"))&&(t=(0,Qo.fileURLToPath)(t));let l=e.resolve(t);this.roots=Object.create(null),this.rootPath=this.parseRootPath(l),p(this,ue,new qi),p(this,pe,new qi),p(this,oi,new xs(o));let h=l.substring(this.rootPath.length).split(i);if(h.length===1&&!h[0]&&h.pop(),r===void 0)throw new TypeError("must provide nocase setting to PathScurryBase ctor");this.nocase=r,this.root=this.newRoot(a(this,ni)),this.roots[this.rootPath]=this.root;let c=this.root,f=h.length-1,d=e.sep,m=this.rootPath,y=!1;for(let v of h){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,oi)}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 i=a(this,ue).get(e);if(i!==void 0)return i;let r=this.cwd.resolve(e).fullpath();return a(this,ue).set(e,r),r}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 i=a(this,pe).get(e);if(i!==void 0)return i;let r=this.cwd.resolve(e).fullpathPosix();return a(this,pe).set(e,r),r}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:i}=e;if(t.canReaddir()){let r=await t.readdir();return i?r:r.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:i=!0}=e;return t.canReaddir()?i?t.readdirSync():t.readdirSync().map(r=>r.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 i=await t.readlink();return e?i:i==null?void 0:i.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 i=t.readlinkSync();return e?i:i==null?void 0:i.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 i=await t.realpath();return e?i:i==null?void 0:i.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 i=t.realpathSync();return e?i:i==null?void 0:i.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:i=!0,follow:r=!1,filter:o,walkFilter:n}=e,l=[];(!o||o(t))&&l.push(i?t:t.fullpath());let h=new Set,c=(d,m)=>{h.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))&&l.push(i?S:S.fullpath()),r&&S.isSymbolicLink()?S.realpath().then(T=>T!=null&&T.isUnknown()?T.lstat():T).then(T=>T!=null&&T.shouldWalk(h,n)?c(T,k):k()):S.shouldWalk(h,n)?c(S,k):k()},!0)},f=t;return new Promise((d,m)=>{c(f,y=>{if(y)return m(y);d(l)})})}walkSync(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t,t=this.cwd);let{withFileTypes:i=!0,follow:r=!1,filter:o,walkFilter:n}=e,l=[];(!o||o(t))&&l.push(i?t:t.fullpath());let h=new Set([t]);for(let c of h){let f=c.readdirSync();for(let d of f){(!o||o(d))&&l.push(i?d:d.fullpath());let m=d;if(d.isSymbolicLink()){if(!(r&&(m=d.realpathSync())))continue;m.isUnknown()&&m.lstatSync()}m.shouldWalk(h,n)&&h.add(m)}}return l}[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:i=!0,follow:r=!1,filter:o,walkFilter:n}=e;(!o||o(t))&&(yield i?t:t.fullpath());let l=new Set([t]);for(let h of l){let c=h.readdirSync();for(let f of c){(!o||o(f))&&(yield i?f:f.fullpath());let d=f;if(f.isSymbolicLink()){if(!(r&&(d=f.realpathSync())))continue;d.isUnknown()&&d.lstatSync()}d.shouldWalk(l,n)&&l.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:i=!0,follow:r=!1,filter:o,walkFilter:n}=e,l=new jt({objectMode:!0});(!o||o(t))&&l.write(i?t:t.fullpath());let h=new Set,c=[t],f=0,d=()=>{let m=!1;for(;!m;){let y=c.shift();if(!y){f===0&&l.end();return}f++,h.add(y);let v=(k,S,T=!1)=>{if(k)return l.emit("error",k);if(r&&!T){let R=[];for(let F of S)F.isSymbolicLink()&&R.push(F.realpath().then(J=>J!=null&&J.isUnknown()?J.lstat():J));if(R.length){Promise.all(R).then(()=>v(null,S,!0));return}}for(let R of S)R&&(!o||o(R))&&(l.write(i?R:R.fullpath())||(m=!0));f--;for(let R of S){let F=R.realpathCached()||R;F.shouldWalk(h,n)&&c.push(F)}m&&!l.flowing?l.once("drain",d):g||d()},g=!0;y.readdirCB(v,!0),g=!1}};return d(),l}streamSync(t=this.cwd,e={}){typeof t=="string"?t=this.cwd.resolve(t):t instanceof z||(e=t,t=this.cwd);let{withFileTypes:i=!0,follow:r=!1,filter:o,walkFilter:n}=e,l=new jt({objectMode:!0}),h=new Set;(!o||o(t))&&l.write(i?t:t.fullpath());let c=[t],f=0,d=()=>{let m=!1;for(;!m;){let y=c.shift();if(!y){f===0&&l.end();return}f++,h.add(y);let v=y.readdirSync();for(let g of v)(!o||o(g))&&(l.write(i?g:g.fullpath())||(m=!0));f--;for(let g of v){let k=g;if(g.isSymbolicLink()){if(!(r&&(k=g.realpathSync())))continue;k.isUnknown()&&k.lstatSync()}k.shouldWalk(h,n)&&c.push(k)}}m&&!l.flowing&&l.once("drain",d)};return d(),l}chdir(t=this.cwd){let e=this.cwd;this.cwd=typeof t=="string"?this.cwd.resolve(t):t,this.cwd[sn](e)}};ue=new WeakMap,pe=new WeakMap,oi=new WeakMap,ni=new WeakMap;me=class extends zi{constructor(e=process.cwd(),i={}){let{nocase:r=!0}=i;super(e,de.win32,"\\",{...i,nocase:r});u(this,"sep","\\");this.nocase=r;for(let o=this.cwd;o;o=o.parent)o.nocase=this.nocase}parseRootPath(e){return de.win32.parse(e).root.toUpperCase()}newRoot(e){return new Wi(this.rootPath,gt,void 0,this.roots,this.nocase,this.childrenCache(),{fs:e})}isAbsolute(e){return e.startsWith("/")||e.startsWith("\\")||/^[a-z]:(\/|\\)/i.test(e)}},ge=class extends zi{constructor(e=process.cwd(),i={}){let{nocase:r=!1}=i;super(e,de.posix,"/",{...i,nocase:r});u(this,"sep","/");this.nocase=r}parseRootPath(e){return"/"}newRoot(e){return new Ui(this.rootPath,gt,void 0,this.roots,this.nocase,this.childrenCache(),{fs:e})}isAbsolute(e){return e.startsWith("/")}},$e=class extends ge{constructor(t=process.cwd(),e={}){let{nocase:i=!0}=e;super(t,{...e,nocase:i})}},wc=process.platform==="win32"?Wi:Ui,hn=process.platform==="win32"?me:process.platform==="darwin"?$e:ge});var qh,Wh,N,X,B,ee,lt,ai,_t,Bt,$t,we,Ps,ye,Ds=C(()=>{"use strict";At();qh=s=>s.length>=1,Wh=s=>s.length>=1,Ps=class Ps{constructor(t,e,i,r){w(this,N);w(this,X);w(this,B);u(this,"length");w(this,ee);w(this,lt);w(this,ai);w(this,_t);w(this,Bt);w(this,$t);w(this,we,!0);if(!qh(t))throw new TypeError("empty pattern list");if(!Wh(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,i<0||i>=this.length)throw new TypeError("index out of range");if(p(this,N,t),p(this,X,e),p(this,B,i),p(this,ee,r),a(this,B)===0){if(this.isUNC()){let[o,n,l,h,...c]=a(this,N),[f,d,m,y,...v]=a(this,X);c[0]===""&&(c.shift(),v.shift());let g=[o,n,l,h,""].join("/"),k=[f,d,m,y,""].join("/");p(this,N,[g,...c]),p(this,X,[k,...v]),this.length=a(this,N).length}else if(this.isDrive()||this.isAbsolute()){let[o,...n]=a(this,N),[l,...h]=a(this,X);n[0]===""&&(n.shift(),h.shift());let c=o+"/",f=l+"/";p(this,N,[c,...n]),p(this,X,[f,...h]),this.length=a(this,N).length}}}pattern(){return a(this,N)[a(this,B)]}isString(){return typeof a(this,N)[a(this,B)]=="string"}isGlobstar(){return a(this,N)[a(this,B)]===q}isRegExp(){return a(this,N)[a(this,B)]instanceof RegExp}globString(){return p(this,ai,a(this,ai)||(a(this,B)===0?this.isAbsolute()?a(this,X)[0]+a(this,X).slice(1).join("/"):a(this,X).join("/"):a(this,X).slice(a(this,B)).join("/")))}hasMore(){return this.length>a(this,B)+1}rest(){return a(this,lt)!==void 0?a(this,lt):this.hasMore()?(p(this,lt,new Ps(a(this,N),a(this,X),a(this,B)+1,a(this,ee))),p(a(this,lt),$t,a(this,$t)),p(a(this,lt),Bt,a(this,Bt)),p(a(this,lt),_t,a(this,_t)),a(this,lt)):p(this,lt,null)}isUNC(){let t=a(this,N);return a(this,Bt)!==void 0?a(this,Bt):p(this,Bt,a(this,ee)==="win32"&&a(this,B)===0&&t[0]===""&&t[1]===""&&typeof t[2]=="string"&&!!t[2]&&typeof t[3]=="string"&&!!t[3])}isDrive(){let t=a(this,N);return a(this,_t)!==void 0?a(this,_t):p(this,_t,a(this,ee)==="win32"&&a(this,B)===0&&this.length>1&&typeof t[0]=="string"&&/^[a-z]:$/i.test(t[0]))}isAbsolute(){let t=a(this,N);return a(this,$t)!==void 0?a(this,$t):p(this,$t,t[0]===""&&t.length>1||this.isDrive()||this.isUNC())}root(){let t=a(this,N)[0];return typeof t=="string"&&this.isAbsolute()&&a(this,B)===0?t:""}checkFollowGlobstar(){return!(a(this,B)===0||!this.isGlobstar()||!a(this,we))}markFollowGlobstar(){return a(this,B)===0||!this.isGlobstar()||!a(this,we)?!1:(p(this,we,!1),!0)}};N=new WeakMap,X=new WeakMap,B=new WeakMap,ee=new WeakMap,lt=new WeakMap,ai=new WeakMap,_t=new WeakMap,Bt=new WeakMap,$t=new WeakMap,we=new WeakMap;ye=Ps});var Uh,be,Ms=C(()=>{"use strict";At();Ds();Uh=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",be=class{constructor(t,{nobrace:e,nocase:i,noext:r,noglobstar:o,platform:n=Uh}){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:i,noext:r,noglobstar:o,optimizationLevel:2,platform:n,nocomment:!0,nonegate:!0};for(let l of t)this.add(l)}add(t){let e=new Y(t,this.mmopts);for(let i=0;i<e.set.length;i++){let r=e.set[i],o=e.globParts[i];if(!r||!o)throw new Error("invalid pattern object");for(;r[0]==="."&&o[0]===".";)r.shift(),o.shift();let n=new ye(r,o,0,this.platform),l=new Y(n.globString(),this.mmopts),h=o[o.length-1]==="**",c=n.isAbsolute();c?this.absolute.push(l):this.relative.push(l),h&&(c?this.absoluteChildren.push(l):this.relativeChildren.push(l))}}ignored(t){let e=t.fullpath(),i=`${e}/`,r=t.relative()||".",o=`${r}/`;for(let n of this.relative)if(n.match(r)||n.match(o))return!0;for(let n of this.absolute)if(n.match(e)||n.match(i))return!0;return!1}childrenIgnored(t){let e=t.fullpath()+"/",i=(t.relative()||".")+"/";for(let r of this.relativeChildren)if(r.match(i))return!0;for(let r of this.absoluteChildren)if(r.match(e))return!0;return!1}}});var Fs,As,Ns,hi,cn=C(()=>{"use strict";At();Fs=class s{constructor(t=new Map){u(this,"store");this.store=t}copy(){return new s(new Map(this.store))}hasWalked(t,e){var i;return(i=this.store.get(t.fullpath()))==null?void 0:i.has(e.globString())}storeWalked(t,e){let i=t.fullpath(),r=this.store.get(i);r?r.add(e.globString()):this.store.set(i,new Set([e.globString()]))}},As=class{constructor(){u(this,"store",new Map)}add(t,e,i){let r=(e?2:0)|(i?1:0),o=this.store.get(t);this.store.set(t,o===void 0?r:r&o)}entries(){return[...this.store.entries()].map(([t,e])=>[t,!!(e&2),!!(e&1)])}},Ns=class{constructor(){u(this,"store",new Map)}add(t,e){if(!t.canReaddir())return;let i=this.store.get(t);i?i.find(r=>r.globString()===e.globString())||i.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())}},hi=class s{constructor(t,e){u(this,"hasWalkedCache");u(this,"matches",new As);u(this,"subwalks",new Ns);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 Fs}processPatterns(t,e){this.patterns=e;let i=e.map(r=>[t,r]);for(let[r,o]of i){this.hasWalkedCache.storeWalked(r,o);let n=o.root(),l=o.isAbsolute()&&this.opts.absolute!==!1;if(n){r=r.resolve(n==="/"&&this.opts.root!==void 0?this.opts.root:n);let d=o.rest();if(d)o=d;else{this.matches.add(r,!0,!1);continue}}if(r.isENOENT())continue;let h,c,f=!1;for(;typeof(h=o.pattern())=="string"&&(c=o.rest());)r=r.resolve(h),o=c,f=!0;if(h=o.pattern(),c=o.rest(),f){if(this.hasWalkedCache.hasWalked(r,o))continue;this.hasWalkedCache.storeWalked(r,o)}if(typeof h=="string"){let d=h===".."||h===""||h===".";this.matches.add(r.resolve(h),l,d);continue}else if(h===q){(!r.isSymbolicLink()||this.follow||o.checkFollowGlobstar())&&this.subwalks.add(r,o);let d=c==null?void 0:c.pattern(),m=c==null?void 0:c.rest();if(!c||(d===""||d===".")&&!m)this.matches.add(r,l,d===""||d===".");else if(d===".."){let y=r.parent||r;m?this.hasWalkedCache.hasWalked(y,m)||this.subwalks.add(y,m):this.matches.add(y,l,!0)}}else h instanceof RegExp&&this.subwalks.add(r,o)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new s(this.opts,this.hasWalkedCache)}filterEntries(t,e){let i=this.subwalks.get(t),r=this.child();for(let o of e)for(let n of i){let l=n.isAbsolute(),h=n.pattern(),c=n.rest();h===q?r.testGlobstar(o,n,c,l):h instanceof RegExp?r.testRegExp(o,h,c,l):r.testString(o,h,c,l)}return r}testGlobstar(t,e,i,r){if((this.dot||!t.name.startsWith("."))&&(e.hasMore()||this.matches.add(t,r,!1),t.canReaddir()&&(this.follow||!t.isSymbolicLink()?this.subwalks.add(t,e):t.isSymbolicLink()&&(i&&e.checkFollowGlobstar()?this.subwalks.add(t,i):e.markFollowGlobstar()&&this.subwalks.add(t,e)))),i){let o=i.pattern();if(typeof o=="string"&&o!==".."&&o!==""&&o!==".")this.testString(t,o,i.rest(),r);else if(o===".."){let n=t.parent||t;this.subwalks.add(n,i)}else o instanceof RegExp&&this.testRegExp(t,o,i.rest(),r)}}testRegExp(t,e,i,r){e.test(t.name)&&(i?this.subwalks.add(t,i):this.matches.add(t,r,!1))}testString(t,e,i,r){t.isNamed(e)&&(i?this.subwalks.add(t,i):this.matches.add(t,r,!1))}}});var zh,Ee,Ot,se,rt,ie,js,Gi,li,ci,fn=C(()=>{"use strict";ys();Ms();cn();zh=(s,t)=>typeof s=="string"?new be([s],t):Array.isArray(s)?new be(s,t):s,Gi=class{constructor(t,e,i){w(this,rt);u(this,"path");u(this,"patterns");u(this,"opts");u(this,"seen",new Set);u(this,"paused",!1);u(this,"aborted",!1);w(this,Ee,[]);w(this,Ot);w(this,se);u(this,"signal");u(this,"maxDepth");u(this,"includeChildMatches");var r;if(this.patterns=t,this.path=e,this.opts=i,p(this,se,!i.posix&&i.platform==="win32"?"\\":"/"),this.includeChildMatches=i.includeChildMatches!==!1,(i.ignore||!this.includeChildMatches)&&(p(this,Ot,zh((r=i.ignore)!=null?r:[],i)),!this.includeChildMatches&&typeof a(this,Ot).add!="function")){let o="cannot ignore child matches, ignore lacks add() method.";throw new Error(o)}this.maxDepth=i.maxDepth||1/0,i.signal&&(this.signal=i.signal,this.signal.addEventListener("abort",()=>{a(this,Ee).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,Ee).shift());)t()}onResume(t){var e;(e=this.signal)!=null&&e.aborted||(this.paused?a(this,Ee).push(t):t())}async matchCheck(t,e){if(e&&this.opts.nodir)return;let i;if(this.opts.realpath){if(i=t.realpathCached()||await t.realpath(),!i)return;t=i}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 i;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()||!((i=t.realpathCached())!=null&&i.isDirectory()))&&!b(this,rt,ie).call(this,t)?t:void 0}matchCheckSync(t,e){if(e&&this.opts.nodir)return;let i;if(this.opts.realpath){if(i=t.realpathCached()||t.realpathSync(),!i)return;t=i}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,rt,ie).call(this,t))return;if(!this.includeChildMatches&&((o=a(this,Ot))!=null&&o.add)){let n=`${t.relativePosix()}/**`;a(this,Ot).add(n)}let i=this.opts.absolute===void 0?e:this.opts.absolute;this.seen.add(t);let r=this.opts.mark&&t.isDirectory()?a(this,se):"";if(this.opts.withFileTypes)this.matchEmit(t);else if(i){let n=this.opts.posix?t.fullpathPosix():t.fullpath();this.matchEmit(n+r)}else{let n=this.opts.posix?t.relativePosix():t.relative(),l=this.opts.dotRelative&&!n.startsWith(".."+a(this,se))?"."+a(this,se):"";this.matchEmit(n?l+n+r:"."+r)}}async match(t,e,i){let r=await this.matchCheck(t,i);r&&this.matchFinish(r,e)}matchSync(t,e,i){let r=this.matchCheckSync(t,i);r&&this.matchFinish(r,e)}walkCB(t,e,i){var r;(r=this.signal)!=null&&r.aborted&&i(),this.walkCB2(t,e,new hi(this.opts),i)}walkCB2(t,e,i,r){var l;if(b(this,rt,js).call(this,t))return r();if((l=this.signal)!=null&&l.aborted&&r(),this.paused){this.onResume(()=>this.walkCB2(t,e,i,r));return}i.processPatterns(t,e);let o=1,n=()=>{--o===0&&r()};for(let[h,c,f]of i.matches.entries())b(this,rt,ie).call(this,h)||(o++,this.match(h,c,f).then(()=>n()));for(let h of i.subwalkTargets()){if(this.maxDepth!==1/0&&h.depth()>=this.maxDepth)continue;o++;let c=h.readdirCached();h.calledReaddir()?this.walkCB3(h,c,i,n):h.readdirCB((f,d)=>this.walkCB3(h,d,i,n),!0)}n()}walkCB3(t,e,i,r){i=i.filterEntries(t,e);let o=1,n=()=>{--o===0&&r()};for(let[l,h,c]of i.matches.entries())b(this,rt,ie).call(this,l)||(o++,this.match(l,h,c).then(()=>n()));for(let[l,h]of i.subwalks.entries())o++,this.walkCB2(l,h,i.child(),n);n()}walkCBSync(t,e,i){var r;(r=this.signal)!=null&&r.aborted&&i(),this.walkCB2Sync(t,e,new hi(this.opts),i)}walkCB2Sync(t,e,i,r){var l;if(b(this,rt,js).call(this,t))return r();if((l=this.signal)!=null&&l.aborted&&r(),this.paused){this.onResume(()=>this.walkCB2Sync(t,e,i,r));return}i.processPatterns(t,e);let o=1,n=()=>{--o===0&&r()};for(let[h,c,f]of i.matches.entries())b(this,rt,ie).call(this,h)||this.matchSync(h,c,f);for(let h of i.subwalkTargets()){if(this.maxDepth!==1/0&&h.depth()>=this.maxDepth)continue;o++;let c=h.readdirSync();this.walkCB3Sync(h,c,i,n)}n()}walkCB3Sync(t,e,i,r){i=i.filterEntries(t,e);let o=1,n=()=>{--o===0&&r()};for(let[l,h,c]of i.matches.entries())b(this,rt,ie).call(this,l)||this.matchSync(l,h,c);for(let[l,h]of i.subwalks.entries())o++,this.walkCB2Sync(l,h,i.child(),n);n()}};Ee=new WeakMap,Ot=new WeakMap,se=new WeakMap,rt=new WeakSet,ie=function(t){var e,i;return this.seen.has(t)||!!((i=(e=a(this,Ot))==null?void 0:e.ignored)!=null&&i.call(e,t))},js=function(t){var e,i;return!!((i=(e=a(this,Ot))==null?void 0:e.childrenIgnored)!=null&&i.call(e,t))};li=class extends Gi{constructor(e,i,r){super(e,i,r);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((i,r)=>{this.walkCB(this.path,this.patterns,()=>{var o;(o=this.signal)!=null&&o.aborted?r(this.signal.reason):i(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 i;if((i=this.signal)!=null&&i.aborted)throw this.signal.reason}),this.matches}},ci=class extends Gi{constructor(e,i,r){super(e,i,r);u(this,"results");this.results=new jt({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 un,Gh,ct,Is=C(()=>{"use strict";At();un=require("url");ln();Ds();fn();Gh=typeof process=="object"&&process&&typeof process.platform=="string"?process.platform:"linux",ct=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,un.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(h=>h.replace(/\\/g,"/"))),this.matchBase){if(e.noglobstar)throw new TypeError("base matching requires globstar");t=t.map(h=>h.includes("/")?h:`./**/${h}`)}if(this.pattern=t,this.platform=e.platform||Gh,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 h=e.platform==="win32"?me:e.platform==="darwin"?$e:e.platform?ge:hn;this.scurry=new h(this.cwd,{nocase:e.nocase,fs:e.fs})}this.nocase=this.scurry.nocase;let i=this.platform==="darwin"||this.platform==="win32",r={...e,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:i,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},o=this.pattern.map(h=>new Y(h,r)),[n,l]=o.reduce((h,c)=>(h[0].push(...c.set),h[1].push(...c.globParts),h),[[],[]]);this.patterns=n.map((h,c)=>{let f=l[c];if(!f)throw new Error("invalid pattern object");return new ye(h,f,0,this.platform)})}async walk(){return[...await new li(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 li(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 ci(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 ci(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 Ls,_s=C(()=>{"use strict";At();Ls=(s,t={})=>{Array.isArray(s)||(s=[s]);for(let e of s)if(new Y(e,t).hasMagic())return!0;return!1}});function Vi(s,t={}){return new ct(s,t).streamSync()}function mn(s,t={}){return new ct(s,t).stream()}function gn(s,t={}){return new ct(s,t).walkSync()}async function pn(s,t={}){return new ct(s,t).walk()}function Hi(s,t={}){return new ct(s,t).iterateSync()}function wn(s,t={}){return new ct(s,t).iterate()}var Vh,Hh,Qh,Kh,fi,dn,Bs=C(()=>{"use strict";At();Is();_s();At();Is();_s();Ms();Vh=Vi,Hh=Object.assign(mn,{sync:Vi}),Qh=Hi,Kh=Object.assign(wn,{sync:Hi}),fi=Object.assign(gn,{stream:Vi,iterate:Hi}),dn=Object.assign(pn,{glob:pn,globSync:gn,sync:fi,globStream:mn,stream:Hh,globStreamSync:Vi,streamSync:Vh,globIterate:wn,iterate:Kh,globIterateSync:Hi,iterateSync:Qh,Glob:ct,hasMagic:Ls,escape:ae,unescape:nt});dn.glob=dn});function yn(){let s=fi("./**/Cookies",{cwd:re,absolute:!0});return Jh.debug("Found cookie files:",s),s}var Jh,bn=C(()=>{"use strict";Bs();Et();Zi();Jh=D.withTag("listChromeProfiles")});function Xh(s){var e;let t=[/.*?0t(.+)$/,/.*?1e`(.+)$/,/.*?[`'](.+)$/,/[^\x20-\x7E]*([\x20-\x7E].+)$/];for(let i of t){let r=s.match(i),o=(e=r==null?void 0:r[1])!=null?e:"";if(o.length>0)return o}return s}async function En(s,t){if(typeof t!="string")throw new Error("password must be a string");if(!Buffer.isBuffer(s))throw new Error("encryptedData must be a Buffer");return new Promise((e,i)=>{(0,Qi.pbkdf2)(t,"saltysalt",1003,16,"sha1",(r,o)=>{try{if(r){i(new Error("Failed to derive key: "+r.message));return}let n=Yh(s);if(n.length%16!==0){i(new Error("Encrypted data length is not a multiple of 16"));return}let l=Buffer.alloc(16," "),h=(0,Qi.createDecipheriv)("aes-128-cbc",o,l);h.setAutoPadding(!1);let c=h.update(n);try{h.final()}catch(d){i(new Error("Failed to finalize decryption: "+d.message));return}c=Zh(c);let f=c.toString("utf8");e(Xh(f))}catch(n){i(new Error("Decryption failed: "+n.message))}})})}var Qi,$s,Yh,Zh,xn=C(()=>{"use strict";Qi=require("crypto"),$s=ft(require("lodash/memoize"),1),Yh=(0,$s.default)(s=>s.length>=3&&s[0]===118&&s[1]===49&&s[2]===48?s.slice(3):s,s=>s.toString("hex")),Zh=(0,$s.default)(s=>{let t=s[s.length-1];return t&&t<=16?s.slice(0,-t):s},s=>s.toString("hex"))});function el(s,t){if(s instanceof qt)throw G("Command execution failed",s,{command:s.command,originalError:s.originalError}),s;if(s instanceof Error){let i=new qt(s.message,t,s);throw G("Failed to execute command",s,{command:t,stack:s.stack}),i}let e=new qt("Unknown error occurred during command execution",t);throw G("Failed to execute command",null,{error:s,command:t}),e}async function Cn(s,t={}){if(!s||typeof s!="string")throw new qt("Command must be a non-empty string",s);let e={encoding:"utf8",maxBuffer:5*1024*1024,timeout:3e4};try{let{stdout:i,stderr:r}=await tl(s,{...e,...t}),o=i.trim();if(!o)throw r?new qt(`Command failed with stderr: ${r}`,s):new qt("Command returned empty result",s);return o}catch(i){el(i,s)}}var Sn,kn,tl,qt,vn=C(()=>{"use strict";Sn=require("child_process"),kn=require("util");zt();tl=(0,kn.promisify)(Sn.exec),qt=class extends Error{constructor(e,i,r){super(e);this.command=i;this.originalError=r;this.name="CommandExecutionError"}}});var Rn={};Ut(Rn,{getChromePassword:()=>sl});var Tn,il,sl,On=C(()=>{"use strict";Tn=ft(require("lodash/memoize"),1);vn();il=async()=>Cn('security find-generic-password -w -s "Chrome Safe Storage"'),sl=(0,Tn.default)(il)});var Pn,Dn,Mn=C(()=>{"use strict";Pn=ft(require("lodash/memoize"),1);zt();Dn=(0,Pn.default)(async()=>{if(process.platform!=="darwin")throw G("Chrome password retrieval failed",new Error("This only works on macOS"),{platform:process.platform}),new Error("This only works on macOS");try{let{getChromePassword:s}=await Promise.resolve().then(()=>(On(),Rn)),t=await s();return ut("ChromePassword","Retrieved password successfully",{platform:"macOS"}),t}catch(s){throw G("Chrome password retrieval failed",s,{platform:"macOS"}),s}})});function rl(s){return typeof s!="number"||s<=0?"Infinity":new Date(s)}function Fn(s,t,e,i,r,o){return{domain:s,name:t,value:e,expiry:rl(i),meta:{file:r,browser:"Chrome",decrypted:o}}}var xe,qs=C(()=>{"use strict";Ys();zt();Ur();bn();xn();Mn();xe=class{constructor(){this.logger=Zs("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 r=yn().map(l=>l),o=await Dn(),n=await Js(r,l=>this.processFile(l,t,e,o),[]);return ui("Cookie query",!0,{count:n.length}),n}catch(i){return G("Failed to query cookies",i,{name:t,domain:e}),[]}}async processFile(t,e,i,r){try{let o=await Wr({name:e,domain:i,file:t}),n={file:t,password:r};return(await Promise.allSettled(o.map(h=>this.processCookie(h,n)))).map(h=>h.status==="fulfilled"?h.value:null).filter(h=>h!==null)}catch(o){return this.logger.error("Failed to process cookie file",{error:o,file:t}),[]}}async processCookie(t,e){try{let i=Buffer.isBuffer(t.value)?t.value:Buffer.from(String(t.value)),r=await En(i,e.password);return Fn(t.domain,t.name,r,t.expiry,e.file,!0)}catch(i){return this.logger.warn("Failed to decrypt cookie",{error:i}),Fn(t.domain,t.name,t.value.toString("utf-8"),t.expiry,e.file,!1)}}}});function ol(){let s=[],t=process.env.HOME;if(typeof t!="string"||t.length===0)return pi("FirefoxCookieQuery","HOME environment variable not set"),s;let e=[(0,Ws.join)(t,"Library/Application Support/Firefox/Profiles/*/cookies.sqlite"),(0,Ws.join)(t,".mozilla/firefox/*/cookies.sqlite")];for(let i of e){let r=fi(i);s.push(...r)}return ut("FirefoxCookieQuery","Found Firefox cookie files",{files:s}),s}var Ws,Se,Us=C(()=>{"use strict";Ws=require("path");Bs();zt();rs();Se=class{constructor(){this.browserName="Firefox"}async queryCookies(t,e){let i=ol(),r=[];for(let o of i)try{let n=await ki({file:o,sql:"SELECT name, value, host as domain, expiry FROM moz_cookies WHERE name = ? AND host LIKE ?",params:[t,`%${e}%`],rowTransform:l=>({name:l.name,value:l.value,domain:l.domain,expiry:l.expiry>0?new Date(l.expiry*1e3):"Infinity",meta:{file:o,browser:"Firefox",decrypted:!1}})});r.push(...n)}catch(n){n instanceof Error?pi("FirefoxCookieQuery",`Error reading Firefox cookie file ${o}`,{error:n.message}):pi("FirefoxCookieQuery",`Error reading Firefox cookie file ${o}`)}return r}}});async function An(s){let t=[new xe,new Se];return(await Promise.allSettled(t.map(i=>i.queryCookies(s.name,s.domain)))).filter(i=>i.status==="fulfilled").flatMap(i=>i.value)}var Nn=C(()=>{"use strict";qs();Us()});var jn={};Ut(jn,{default:()=>nl,getCookie:()=>ke});async function ke(s){try{return await An(s)}catch(t){return D.warn("Error querying cookies:",t instanceof Error?t.message:String(t)),[]}}var nl,Ki=C(()=>{"use strict";Et();Nn();nl=ke});var Ln={};Ut(Ln,{default:()=>al,getChromeCookie:()=>In});async function In(s){try{return await new xe().queryCookies(s.name,s.domain)}catch(t){return D.warn("Error querying Chrome cookies:",t),[]}}var al,_n=C(()=>{"use strict";Et();qs();al=In});var $n={};Ut($n,{default:()=>hl,getFirefoxCookie:()=>Bn});async function Bn(s){try{return await new Se().queryCookies(s.name,s.domain)}catch(t){return D.warn("Error querying Firefox cookies:",t instanceof Error?t.message:String(t)),[]}}var hl,qn=C(()=>{"use strict";Et();Us();hl=Bn});function Ji(s,t={}){let{format:e="merged",showFilePaths:i=!0,separator:r="; "}=t;if(s.length===0)return e==="merged"?"":[];if(e==="merged")return s.map(n=>n.value).join(r);let o=(0,Wn.groupBy)(s,n=>{var l,h;return(h=(l=n.meta)==null?void 0:l.file)!=null?h:"unknown"});return Object.entries(o).map(([n,l])=>{let h=l.map(c=>c.value).join(r);return i?`${n}: ${h}`:h})}var Wn,zs=C(()=>{"use strict";Wn=require("lodash")});var zn={};Ut(zn,{default:()=>ll,getGroupedRenderedCookies:()=>Un});async function Un(s,t={}){try{let e=await ke(s);return Ji(e,{...t,format:"grouped"})}catch(e){return D.warn("Error getting grouped rendered cookies:",e instanceof Error?e.message:String(e)),[]}}var ll,Gn=C(()=>{"use strict";Et();Ki();zs();ll=Un});var Hn={};Ut(Hn,{default:()=>cl,getMergedRenderedCookies:()=>Vn});async function Vn(s,t={}){try{let e=await ke(s);return Ji(e,{...t,format:"merged"})}catch(e){return D.warn("Error getting merged rendered cookies:",e instanceof Error?e.message:String(e)),""}}var cl,Qn=C(()=>{"use strict";Et();Ki();zs();cl=Vn});var gl={};Ut(gl,{getChromeCookie:()=>ul,getCookie:()=>fl,getFirefoxCookie:()=>pl,getGroupedRenderedCookies:()=>dl,getMergedRenderedCookies:()=>ml});module.exports=ia(gl);var fl=()=>Promise.resolve().then(()=>(Ki(),jn)).then(s=>s.getCookie),ul=()=>Promise.resolve().then(()=>(_n(),Ln)).then(s=>s.getChromeCookie),pl=()=>Promise.resolve().then(()=>(qn(),$n)).then(s=>s.getFirefoxCookie),dl=()=>Promise.resolve().then(()=>(Gn(),zn)).then(s=>s.getGroupedRenderedCookies),ml=()=>Promise.resolve().then(()=>(Qn(),Hn)).then(s=>s.getMergedRenderedCookies);0&&(module.exports={getChromeCookie,getCookie,getFirefoxCookie,getGroupedRenderedCookies,getMergedRenderedCookies});
6
+ //# sourceMappingURL=index.cjs.map