@mherod/get-cookie 4.2.0 → 4.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.husky/commit-msg +0 -0
- package/.husky/pre-commit +0 -0
- package/.husky/pre-push +0 -0
- package/README.md +76 -117
- package/dist/cli.cjs +1 -1
- package/dist/cli.cjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -7
- package/dist/index.d.ts +7 -7
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/eslint.config.js +6 -1
- package/examples/basic-usage.ts +9 -10
- package/examples/cli-examples.sh +0 -0
- package/package.json +29 -19
- package/dist/chunk-GVQTX3C5.js +0 -2
- package/dist/chunk-GVQTX3C5.js.map +0 -1
- package/dist/getChromePassword-6XZINNNO.js +0 -2
- package/dist/getChromePassword-6XZINNNO.js.map +0 -1
package/eslint.config.js
CHANGED
|
@@ -6,7 +6,12 @@ import globals from "globals";
|
|
|
6
6
|
|
|
7
7
|
export default [
|
|
8
8
|
{
|
|
9
|
-
ignores: [
|
|
9
|
+
ignores: [
|
|
10
|
+
"dist/**/*",
|
|
11
|
+
"node_modules/**/*",
|
|
12
|
+
"coverage/**/*",
|
|
13
|
+
"docs/.vitepress/cache/**/*",
|
|
14
|
+
],
|
|
10
15
|
},
|
|
11
16
|
{
|
|
12
17
|
files: ["**/*.js", "**/*.mjs"],
|
package/examples/basic-usage.ts
CHANGED
|
@@ -22,23 +22,22 @@
|
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
|
-
import { getCookie } from "
|
|
25
|
+
import { getCookie } from "@mherod/get-cookie";
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* @description
|
|
29
|
-
*
|
|
29
|
+
* Basic example showing how to retrieve cookies from browsers.
|
|
30
30
|
* @internal
|
|
31
|
-
* @returns A promise that resolves when all examples have completed.
|
|
32
31
|
*/
|
|
33
|
-
|
|
34
|
-
// Get
|
|
35
|
-
const
|
|
36
|
-
name: "
|
|
32
|
+
async function main(): Promise<void> {
|
|
33
|
+
// Get all session cookies from github.com
|
|
34
|
+
const cookies = await getCookie({
|
|
35
|
+
name: "user_session",
|
|
37
36
|
domain: "github.com",
|
|
38
37
|
});
|
|
39
38
|
|
|
40
|
-
console.log("
|
|
39
|
+
console.log("Found cookies:", cookies);
|
|
41
40
|
}
|
|
42
41
|
|
|
43
|
-
//
|
|
44
|
-
|
|
42
|
+
// Run the example
|
|
43
|
+
void main();
|
package/examples/cli-examples.sh
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mherod/get-cookie",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.2",
|
|
4
4
|
"description": "Node.js module for querying a local user's Chrome cookie",
|
|
5
|
+
"packageManager": "pnpm@9.15.2",
|
|
5
6
|
"type": "module",
|
|
6
7
|
"source": "src/index.ts",
|
|
7
8
|
"bin": {
|
|
@@ -24,6 +25,28 @@
|
|
|
24
25
|
"publishConfig": {
|
|
25
26
|
"access": "public"
|
|
26
27
|
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"clean": "rm -rf dist",
|
|
30
|
+
"build:lib": "tsup --config tsup.lib.ts",
|
|
31
|
+
"build:cli": "tsup --config tsup.cli.ts",
|
|
32
|
+
"build": "pnpm run build:lib && pnpm run build:cli",
|
|
33
|
+
"test": "jest",
|
|
34
|
+
"type-check": "tsc --noEmit --skipLibCheck",
|
|
35
|
+
"lint": "eslint . --format=codeframe",
|
|
36
|
+
"lint:fix": "eslint . --format=codeframe --fix",
|
|
37
|
+
"validate": "pnpm run type-check && pnpm run lint && pnpm run test && pnpm run check-links && pnpm run format:check",
|
|
38
|
+
"prepack": "pnpm run validate",
|
|
39
|
+
"prepublishOnly": "pnpm run clean && pnpm run validate && pnpm run build",
|
|
40
|
+
"format": "prettier --write .",
|
|
41
|
+
"format:check": "prettier --check \"**/*.{js,ts,json,md,yml,yaml}\" \"docs/**/*.{md,vue}\"",
|
|
42
|
+
"dev": "tsc -w -p tsconfig.json & tsc-alias -w -p tsconfig.json",
|
|
43
|
+
"read-github": "NODE_OPTIONS=\"-r tsconfig-paths/register\" tsx scripts/read-github-cookies.ts",
|
|
44
|
+
"prepare": "husky install",
|
|
45
|
+
"docs": "typedoc && ./scripts/fix-typedoc.sh && vitepress build docs",
|
|
46
|
+
"docs:dev": "vitepress dev docs",
|
|
47
|
+
"docs:preview": "vitepress preview docs",
|
|
48
|
+
"check-links": "./scripts/check-vitepress-links.sh"
|
|
49
|
+
},
|
|
27
50
|
"engines": {
|
|
28
51
|
"node": "^20.0.0 || ^22.0.0"
|
|
29
52
|
},
|
|
@@ -85,23 +108,10 @@
|
|
|
85
108
|
],
|
|
86
109
|
"*.{json,md,yml,yaml}": [
|
|
87
110
|
"prettier --write"
|
|
111
|
+
],
|
|
112
|
+
"docs/**/*.{md,vue}": [
|
|
113
|
+
"prettier --write",
|
|
114
|
+
"./scripts/check-vitepress-links.sh"
|
|
88
115
|
]
|
|
89
|
-
},
|
|
90
|
-
"scripts": {
|
|
91
|
-
"clean": "rm -rf dist",
|
|
92
|
-
"build:lib": "tsup --config tsup.lib.ts",
|
|
93
|
-
"build:cli": "tsup --config tsup.cli.ts",
|
|
94
|
-
"build": "pnpm run build:lib && pnpm run build:cli",
|
|
95
|
-
"test": "jest",
|
|
96
|
-
"type-check": "tsc --noEmit --skipLibCheck",
|
|
97
|
-
"lint": "eslint . --format=codeframe",
|
|
98
|
-
"lint:fix": "eslint . --format=codeframe --fix",
|
|
99
|
-
"validate": "pnpm run type-check && pnpm run lint && pnpm run test",
|
|
100
|
-
"format": "prettier --write .",
|
|
101
|
-
"dev": "tsc -w -p tsconfig.json & tsc-alias -w -p tsconfig.json",
|
|
102
|
-
"read-github": "NODE_OPTIONS=\"-r tsconfig-paths/register\" tsx scripts/read-github-cookies.ts",
|
|
103
|
-
"docs": "typedoc && ./scripts/fix-typedoc.sh && vitepress build docs",
|
|
104
|
-
"docs:dev": "vitepress dev docs",
|
|
105
|
-
"docs:preview": "vitepress preview docs"
|
|
106
116
|
}
|
|
107
|
-
}
|
|
117
|
+
}
|
package/dist/chunk-GVQTX3C5.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createConsola as m}from"consola";import{homedir as a}from"os";import{config as c}from"dotenv";import{z as s}from"zod";c();var p=s.object({LOG_LEVEL:s.enum(["debug","info","warn","error"]).default("info"),HOME:s.string().optional().transform(e=>e??process.env.USERPROFILE??"").pipe(s.string().min(1))}),i=p.parse({LOG_LEVEL:process.env.LOG_LEVEL,HOME:a()});var u=m({fancy:!0,formatOptions:{showLogLevel:!1,colors:!0,date:!1,compact:!0,columns:typeof process.stdout.columns=="number"?process.stdout.columns:80},level:i.LOG_LEVEL==="debug"?5:2}),x=i.LOG_LEVEL==="debug",t=u;function b(e,o,n){let g=`${o?"\u2705":"\u274C"} ${e} ${o?"succeeded":"failed"}`;o?t.success(g,n):t.error(g,n)}function h(e,o,n){let r={...n??{},error:o instanceof Error?{name:o.name,message:o.message,stack:o.stack}:o};t.error(e,r)}function k(e,o,n){t.withTag(e).debug(o,n)}function C(e){return t.withTag(e)}function T(e,o,n){t.withTag(e).warn(o,n)}export{t as a,b,h as c,k as d,C as e,T as f};
|
|
2
|
-
//# sourceMappingURL=chunk-GVQTX3C5.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/logger.ts","../src/config.ts","../src/utils/logHelpers.ts"],"sourcesContent":["import { createConsola } from \"consola\";\n\nimport { env } from \"../config\";\n\n/**\n * Standard log levels and their usage:\n * - debug: Detailed information for debugging\n * - info: General operational information\n * - success: Successful operations\n * - warn: Warning conditions\n * - error: Error conditions that might still allow the app to continue\n * - fatal: Critical errors that prevent the app from continuing\n */\nconst consola = createConsola({\n fancy: true,\n formatOptions: {\n showLogLevel: false,\n colors: true,\n date: false,\n compact: true,\n columns:\n typeof process.stdout.columns === \"number\" ? process.stdout.columns : 80,\n },\n level: env.LOG_LEVEL === \"debug\" ? 5 : 2,\n});\n\n/**\n * Indicates whether debug logging is enabled\n * @example\n * if (isDebug) {\n * logger.debug(\"Detailed debugging information\");\n * }\n */\nexport const isDebug = env.LOG_LEVEL === \"debug\";\n\n/**\n * Configured consola logger instance with standardized formatting and colored output.\n * Used for consistent logging throughout the application.\n * @example\n * // Basic usage\n * logger.info('Operation started');\n * logger.success('Task completed');\n * logger.error('Failed to process', error);\n *\n * // Tagged logging for module context\n * const moduleLogger = logger.withTag('ModuleName');\n * moduleLogger.info('Module specific log');\n *\n * // Structured logging\n * logger.info('User action', {\n * userId: '123',\n * action: 'login',\n * timestamp: new Date()\n * });\n *\n * // Error logging with full context\n * logger.error('Operation failed', {\n * error: error,\n * context: 'operation name',\n * input: data\n * });\n */\nexport default consola;\n","import { homedir } from \"os\";\n\nimport { config } from \"dotenv\";\nimport { z } from \"zod\";\n\n// Load environment variables from .env file\nconfig();\n\nconst EnvironmentSchema = z.object({\n LOG_LEVEL: z.enum([\"debug\", \"info\", \"warn\", \"error\"]).default(\"info\"),\n HOME: z\n .string()\n .optional()\n .transform((val) => val ?? process.env.USERPROFILE ?? \"\")\n .pipe(z.string().min(1)),\n});\n\n/**\n * Validated environment variables with type safety and fallbacks\n * @example\n * // Using the environment variables\n * if (env.LOG_LEVEL === \"debug\") {\n * console.log(\"Debug mode enabled\");\n * }\n *\n * // Accessing home directory\n * const cookiePath = join(env.HOME, \"Library/Cookies\");\n */\nexport const env = EnvironmentSchema.parse({\n LOG_LEVEL: process.env.LOG_LEVEL,\n HOME: homedir(),\n});\n","import logger from \"./logger\";\n\n/**\n * Helper functions for common logging patterns.\n * @module\n * @example\n * ```typescript\n * import { logOperationResult, logError } from './logHelpers';\n *\n * try {\n * const result = await someOperation();\n * logOperationResult('Operation', true, { data: result });\n * } catch (error) {\n * logError('Operation failed', error);\n * }\n * ```\n */\n\ninterface OperationContext {\n [key: string]: unknown;\n}\n\n/**\n * Logs the result of an operation with consistent formatting.\n * @param operation - Name of the operation.\n * @param success - Whether the operation succeeded.\n * @param [context] - Additional context about the operation.\n * @example\n * ```typescript\n * logOperationResult('Database Backup', true, { size: '1.2GB' });\n * // ✅ Database Backup succeeded\n *\n * logOperationResult('File Upload', false, { error: 'Network timeout' });\n * // ❌ File Upload failed\n * ```\n */\nexport function logOperationResult(\n operation: string,\n success: boolean,\n context?: OperationContext,\n): void {\n const icon = success ? \"✅\" : \"❌\";\n const message = `${icon} ${operation} ${success ? \"succeeded\" : \"failed\"}`;\n\n if (success) {\n logger.success(message, context);\n } else {\n logger.error(message, context);\n }\n}\n\n/**\n * Logs an error with consistent formatting and context.\n * @param message - Error message to display.\n * @param error - Error object or error information.\n * @param [context] - Additional context about the error.\n * @example\n * ```typescript\n * try {\n * throw new Error('Connection failed');\n * } catch (error) {\n * logError('Database error', error, { retries: 3 });\n * }\n * ```\n */\nexport function logError(\n message: string,\n error: unknown,\n context?: OperationContext,\n): void {\n const errorContext = {\n ...(context ?? {}),\n error:\n error instanceof Error\n ? {\n name: error.name,\n message: error.message,\n stack: error.stack,\n }\n : error,\n };\n\n logger.error(message, errorContext);\n}\n\n/**\n * Logs debug information with consistent formatting.\n * @param component - Component or module name.\n * @param message - Debug message to log.\n * @param [data] - Optional debug data to include.\n * @example\n * ```typescript\n * logDebug('AuthService', 'Token refresh started', { userId: '123' });\n * ```\n */\nexport function logDebug(\n component: string,\n message: string,\n data?: unknown,\n): void {\n const componentLogger = logger.withTag(component);\n componentLogger.debug(message, data);\n}\n\n/**\n * Creates a tagged logger with consistent naming.\n * @param component - Component or module name.\n * @returns A tagged logger instance.\n * @example\n * ```typescript\n * const dbLogger = createTaggedLogger('Database');\n * dbLogger.info('Connection established');\n * ```\n */\nexport function createTaggedLogger(\n component: string,\n): ReturnType<typeof logger.withTag> {\n return logger.withTag(component);\n}\n\n/**\n * Logs a warning with consistent formatting.\n * @param component - Component or module name.\n * @param message - Warning message to display.\n * @param [context] - Additional context about the warning.\n * @example\n * ```typescript\n * logWarn('Cache', 'Cache miss', { key: 'user-123' });\n * ```\n */\nexport function logWarn(\n component: string,\n message: string,\n context?: OperationContext,\n): void {\n const componentLogger = logger.withTag(component);\n componentLogger.warn(message, context);\n}\n\n// Re-export the base logger for direct usage\n/**\n * Re-export of the base logger for direct usage.\n */\nexport { default as logger } from \"./logger\";\n"],"mappings":"AAAA,OAAS,iBAAAA,MAAqB,UCA9B,OAAS,WAAAC,MAAe,KAExB,OAAS,UAAAC,MAAc,SACvB,OAAS,KAAAC,MAAS,MAGlBD,EAAO,EAEP,IAAME,EAAoBD,EAAE,OAAO,CACjC,UAAWA,EAAE,KAAK,CAAC,QAAS,OAAQ,OAAQ,OAAO,CAAC,EAAE,QAAQ,MAAM,EACpE,KAAMA,EACH,OAAO,EACP,SAAS,EACT,UAAWE,GAAQA,GAAO,QAAQ,IAAI,aAAe,EAAE,EACvD,KAAKF,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAC3B,CAAC,EAaYG,EAAMF,EAAkB,MAAM,CACzC,UAAW,QAAQ,IAAI,UACvB,KAAMH,EAAQ,CAChB,CAAC,EDlBD,IAAMM,EAAUC,EAAc,CAC5B,MAAO,GACP,cAAe,CACb,aAAc,GACd,OAAQ,GACR,KAAM,GACN,QAAS,GACT,QACE,OAAO,QAAQ,OAAO,SAAY,SAAW,QAAQ,OAAO,QAAU,EAC1E,EACA,MAAOC,EAAI,YAAc,QAAU,EAAI,CACzC,CAAC,EASYC,EAAUD,EAAI,YAAc,QA6BlCE,EAAQJ,EE1BR,SAASK,EACdC,EACAC,EACAC,EACM,CAEN,IAAMC,EAAU,GADHF,EAAU,SAAM,QACN,IAAID,CAAS,IAAIC,EAAU,YAAc,QAAQ,GAEpEA,EACFG,EAAO,QAAQD,EAASD,CAAO,EAE/BE,EAAO,MAAMD,EAASD,CAAO,CAEjC,CAgBO,SAASG,EACdF,EACAG,EACAJ,EACM,CACN,IAAMK,EAAe,CACnB,GAAIL,GAAW,CAAC,EAChB,MACEI,aAAiB,MACb,CACE,KAAMA,EAAM,KACZ,QAASA,EAAM,QACf,MAAOA,EAAM,KACf,EACAA,CACR,EAEAF,EAAO,MAAMD,EAASI,CAAY,CACpC,CAYO,SAASC,EACdC,EACAN,EACAO,EACM,CACkBN,EAAO,QAAQK,CAAS,EAChC,MAAMN,EAASO,CAAI,CACrC,CAYO,SAASC,EACdF,EACmC,CACnC,OAAOL,EAAO,QAAQK,CAAS,CACjC,CAYO,SAASG,EACdH,EACAN,EACAD,EACM,CACkBE,EAAO,QAAQK,CAAS,EAChC,KAAKN,EAASD,CAAO,CACvC","names":["createConsola","homedir","config","z","EnvironmentSchema","val","env","consola","createConsola","env","isDebug","logger_default","logOperationResult","operation","success","context","message","logger_default","logError","error","errorContext","logDebug","component","data","createTaggedLogger","logWarn"]}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{c as i}from"./chunk-GVQTX3C5.js";import{memoize as l}from"lodash-es";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-6XZINNNO.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/browsers/chrome/macos/getChromePassword.ts","../src/utils/execSimple.ts"],"sourcesContent":["import { memoize } from \"lodash-es\";\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: () => Promise<string> = memoize(\n getChromeSafeStoragePassword,\n);\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":"wCAAA,OAAS,WAAAA,MAAe,YCCxB,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,EAA2CC,EACtDH,CACF","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"]}
|