{
  "version": 3,
  "sources": ["../src/tools/index.ts", "../src/tools/crypto/argon2.ts", "../src/tools/crypto/keygen.ts", "../src/manage/client.ts", "../src/tools/mkcert.ts", "../src/tools/build.ts"],
  "sourcesContent": ["export * as argon2 from './crypto/argon2.ts';\nexport * as keygen from './crypto/keygen.ts';\nexport * as manage from '../manage/client.ts';\nexport * as mkcert from './mkcert.ts';\nexport * as build from './build.ts';\n", "import type {\n    Argon2Algorithm,\n    Argon2Parameters\n} from 'node:crypto';\n\nimport { createSalt } from './keygen.ts';\nimport type { Argon2Hash, Argon2HashParameters } from '../../../types/crypto/argon2';\n\n// Lazy import for argon2 (added in Node.js 24.7.0)\n// This allows the module to load on older Node.js versions\nlet argon2: typeof import('node:crypto').argon2 | undefined;\n\nasync function getArgon2() {\n    if (argon2 === undefined) {\n        try {\n            const crypto = await import('node:crypto');\n            if (!crypto.argon2) {\n                throw new Error('argon2 not available');\n            }\n            argon2 = crypto.argon2;\n        } catch (err) {\n            throw new Error(\n                'argon2 is not available in this Node.js version. ' +\n                'Node.js 24.7.0 or later is required for Argon2 password encoding. ' +\n                'Please upgrade Node.js or use a different authentication method.'\n            );\n        }\n    }\n    return argon2;\n}\n\n// Argon2 version constants\nexport const ARGON2_VERSION_10 = 0x10; // 16\nexport const ARGON2_VERSION_13 = 0x13; // 19\nexport const ARGON2_VERSION = ARGON2_VERSION_13;\n\n// Default parameters for Argon2 hashing\nexport const DEFAULT_ALGORITHM: Argon2Algorithm = 'argon2id';\nexport const DEFAULT_SALT_LENGTH = 16;\nexport const DEFAULT_HASH_LENGTH = 32;\nexport const DEFAULT_PARALLELISM = 4;\nexport const DEFAULT_MEMORY = 65536; // 64 MB in KiB\nexport const DEFAULT_PASSES = 3;\n\n/**\n * Decode an encoded Argon2 hash string into its components.\n * Format: $argon2id$v=19$m=65536,t=3,p=4$base64salt$base64hash\n *\n * @param encodedHash - The encoded Argon2 hash string\n * @returns Decoded hash components\n * @see https://github.com/P-H-C/phc-winner-argon2/blob/master/src/encoding.c#L244\n */\nexport function decode(encodedHash: string): Argon2Hash {\n    const parts = encodedHash.split('$'); // ['', 'argon2id', 'v=19', 'm=65536,t=3,p=4', 'base64salt', 'base64hash']\n    if (parts.length < 4) {\n        throw new Error('Invalid encoded Argon2 hash');\n    }\n    let current = 1;\n    const algorithm = parts[current++];\n    if (algorithm !== 'argon2d' && algorithm !== 'argon2i' && algorithm !== 'argon2id') {\n        throw new Error('Invalid Argon2 type');\n    }\n    let version = ARGON2_VERSION_10;\n    if (parts[current].startsWith('v=')) {\n        version = parseInt(parts[current].substring(2), 10);\n        current++;\n    }\n    const parameters: Partial<Argon2HashParameters> = {};\n    const paramsParts = parts[current++].split(',');\n\n    for (const param of paramsParts) {\n        const [key, value] = param.split('=');\n        switch (key) {\n            case 'm':\n                parameters.memory = parseInt(value, 10);\n                break;\n            case 't':\n                parameters.passes = parseInt(value, 10);\n                break;\n            case 'p':\n                parameters.parallelism = parseInt(value, 10);\n                break;\n        }\n    }\n    parameters.nonce = Buffer.from(parts[current++], 'base64url');\n    const hash = Buffer.from(parts[current++], 'base64url');\n\n    return { algorithm, version, parameters: parameters as Argon2Hash['parameters'], hash };\n}\n\n/**\n * Encode Argon2 hash components into a standard string format.\n * Format: $argon2id$v=19$m=65536,t=3,p=4$base64salt$base64hash\n *\n * @param hashData - The hash components to encode\n * @returns Encoded hash string\n */\nexport function encode(hashData: Argon2Hash): string {\n    const { algorithm, version, parameters, hash } = hashData;\n    return `$${algorithm}$v=${version}$m=${parameters.memory},t=${parameters.passes},p=${parameters.parallelism}$${parameters.nonce.toString('base64url')}$${hash.toString('base64url')}`;\n}\n\n\n/**\n * Create an Argon2 hash from parameters.\n * Low-level wrapper around node:crypto's argon2.\n *\n * @param algorithm - Argon2 algorithm variant ('argon2d' | 'argon2i' | 'argon2id')\n * @param password - The password to hash\n * @param hashLength - Length of the output hash in bytes\n * @param parameters - Argon2 parameters (nonce, memory, passes, parallelism). If not provided, defaults will be used.\n * @returns The hash buffer\n */\nexport async function createHash(\n    algorithm: Argon2Algorithm,\n    password: string,\n    hashLength: number,\n    parameters?: Argon2Hash['parameters']\n): Promise<Buffer> {\n    const nonce = parameters?.nonce ?? createSalt(DEFAULT_SALT_LENGTH);\n    const memory = parameters?.memory ?? DEFAULT_MEMORY;\n    const passes = parameters?.passes ?? DEFAULT_PASSES;\n    const parallelism = parameters?.parallelism ?? DEFAULT_PARALLELISM;\n\n    const argon2Params: Argon2Parameters = {\n        message: password,\n        tagLength: hashLength,\n        nonce,\n        memory,\n        passes,\n        parallelism\n    };\n    const argon2Fn = await getArgon2();\n\n    // Wrap callback-based argon2 in a Promise\n    return new Promise((resolve, reject) => {\n        argon2Fn(algorithm, argon2Params, (err: Error | null, result?: Uint8Array) => {\n            if (err) {\n                reject(err);\n            }\n            else if (result) {\n                resolve(Buffer.from(result));\n            }\n            else {\n                reject(new Error('argon2 returned no result'));\n            }\n        });\n    });\n}\n\n\n/**\n * Hash a password using Argon2.\n *\n * @param password - The plain text password to hash\n * @param options - Optional parameters object. If not provided, defaults will be used.\n * @returns The encoded Argon2 hash string\n */\nexport async function hash(\n    password: string,\n    options?: {\n        algorithm?: Argon2Algorithm;\n        saltLength?: number;\n        hashLength?: number;\n        parallelism?: number;\n        memory?: number;\n        passes?: number;\n    }\n): Promise<string> {\n    const algorithm = options?.algorithm ?? 'argon2id';\n    const saltLength = options?.saltLength ?? DEFAULT_SALT_LENGTH;\n    const hashLength = options?.hashLength ?? DEFAULT_HASH_LENGTH;\n    const parallelism = options?.parallelism ?? DEFAULT_PARALLELISM;\n    const memory = options?.memory ?? DEFAULT_MEMORY;\n    const passes = options?.passes ?? DEFAULT_PASSES;\n\n    const nonce = createSalt(saltLength);\n    const parameters = { memory, passes, parallelism, nonce };\n    const hashBuffer = await createHash(algorithm, password, hashLength, parameters);\n    return encode({\n        algorithm,\n        version: ARGON2_VERSION,\n        parameters,\n        hash: hashBuffer\n    });\n}\n\n/**\n * Verify a password against an Argon2 hash.\n *\n * @param encodedHash - The encoded Argon2 hash to verify against\n * @param password - The plain text password to verify\n * @returns true if password matches the hash, false otherwise\n */\nexport async function verify(encodedHash: string, password: string): Promise<boolean> {\n    try {\n        const decoded = decode(encodedHash);\n        const hashBuffer = await createHash(\n            decoded.algorithm,\n            password,\n            decoded.hash.length,\n            decoded.parameters\n        );\n        return decoded.hash.equals(hashBuffer);\n    } catch {\n        return false;\n    }\n}\n\n", "import { getRandomValues } from 'node:crypto';\n\n/**\n * Create a random salt (nonce) for cryptographic operations.\n *\n * @param length - Length of the salt in bytes\n * @returns Random salt buffer\n */\nexport function createSalt(length: number): Buffer {\n    return getRandomValues(Buffer.alloc(length));\n}\n\n", "import net from 'net';\nimport type { ManagementCommand, ManagementEndpoint, SendCommandOptions } from '../../types/manage.d.ts';\n\nexport function sendCommand(\n    server: ManagementEndpoint,\n    command: ManagementCommand,\n    options: SendCommandOptions = {}\n): Promise<unknown> {\n    const { timeout = 5000 } = options;\n\n    // Determine connection target: named pipe/socket path or port\n    const connectOptions: net.NetConnectOpts = server?.path\n        ? { path: server.path }\n        : { port: server?.port ?? 0 };\n\n    const target = server?.path ?? `port ${server?.port}`;\n\n    return new Promise((resolve, reject) => {\n        const client = net.connect(connectOptions, () => {\n            client.write(JSON.stringify(command));\n        });\n\n        const timeoutId = setTimeout(() => {\n            client.destroy();\n            reject(new Error(`Connection timed out after ${timeout}`));\n        }, timeout);\n\n        client.on('data', (data) => {\n            clearTimeout(timeoutId);\n            try {\n                const response = JSON.parse(data.toString());\n                if (response.error) {\n                    reject(new Error(response.error));\n                }\n                else {\n                    resolve(response.result);\n                }\n            }\n            catch {\n                // Not JSON, return as raw string\n                resolve(data.toString());\n            }\n            client.end();\n        });\n\n        client.on('error', (err: NodeJS.ErrnoException) => {\n            clearTimeout(timeoutId);\n            if (err.code === 'ENOENT' || err.code === 'ECONNREFUSED') {\n                reject(new Error(`Cannot connect to gateway at ${target}. Make sure the gateway server is running and the path is correct.`, { cause: err }));\n            }\n            else {\n                reject(err);\n            }\n        });\n    });\n}\n\n", "import { KEYUTIL, KJUR, RSAKey, datetozulu } from \"jsrsasign\";\nimport { userInfo, hostname } from 'node:os';\nimport { randomBytes } from 'node:crypto';\n\nconst userAndHost = `${userInfo().username}@${hostname()}`;\n\nfunction randomSerialNumber(): string {\n    const bytes = randomBytes(16);\n    return bytes.toString('hex');\n}\n\nconst DEFAULT_ORGANISATION = `io.Gateway Dev CA`;\nexport const DEFAULT_CA_NAME = `${DEFAULT_ORGANISATION} ${userAndHost}`;\n\nexport function generateRootCA(options?: { name?: string, passphrase?: string } ): { key: string, cert: string } {\n\n    const commonName = options?.name || DEFAULT_CA_NAME;\n    const passphrase = options?.passphrase;\n\n    // STEP 1. generate a key pair for Root CA (secp384r1 for higher security)\n    const kp = KEYUTIL.generateKeypair(\"EC\", \"secp384r1\");\n    const prv = kp.prvKeyObj;\n    const pub = kp.pubKeyObj;\n\n    const prvPem = passphrase\n        ? KEYUTIL.getPEM(prv, \"PKCS8PRV\", passphrase, \"AES-256-CBC\")\n        : KEYUTIL.getPEM(prv, \"PKCS8PRV\");\n\n    // STEP 2: create self-signed CA certificate\n    const cert = new KJUR.asn1.x509.Certificate({\n        version: 3,\n        serial: { hex: randomSerialNumber() },\n        issuer: { str: `/CN=${commonName}/O=${DEFAULT_ORGANISATION}/OU=${userAndHost}` },\n        subject: { str: `/CN=${commonName}/O=${DEFAULT_ORGANISATION}/OU=${userAndHost}` },\n\n        notbefore: datetozulu(new Date(Date.now() - 60 * 1000), false, false),\n        notafter: datetozulu(new Date(Date.now() + 10 * 365 * 24 * 60 * 60 * 1000), false, false), // 10 years\n\n        sbjpubkey: pub,\n\n        ext: [\n            {extname: \"basicConstraints\", critical: true, cA: true},\n            {extname: \"keyUsage\", critical: true, names: [\"keyCertSign\"]}\n        ],\n\n        sigalg: \"SHA384withECDSA\",\n        cakey: prv\n    });\n\n    const certPem = cert.getPEM();\n\n    return {\n        key: prvPem,\n        cert: certPem\n    };\n}\n\n\n/**\n * Generate a certificate with custom SAN entries\n * @param cakey - CA private key\n * @param issuer - Issuer DN string\n * @param sanEntries - Array of SAN entry strings (e.g., \"localhost\", \"IP:192.168.1.1\", \"EMAIL:user@example.com\")\n * @param isClient - Generate client cert (clientAuth) vs server cert (serverAuth)\n * @param validityDays - Certificate validity period\n */\nexport function generateCert(\n    cakey: string | RSAKey | KJUR.crypto.DSA | KJUR.crypto.ECDSA,\n    issuer: string,\n    sanEntries: string[],\n    isClient: boolean = false,\n    validityDays: number = 7\n): {\n    key: string,\n    cert: string\n} {\n    // STEP 1. generate key pair (secp256r1 for faster generation)\n    const kp = KEYUTIL.generateKeypair(\"EC\", \"secp256r1\");\n    const prv = kp.prvKeyObj;\n    const pub = kp.pubKeyObj;\n\n    const prvPem = KEYUTIL.getPEM(prv, \"PKCS8PRV\");\n\n    // Parse SAN entries\n    const sanArray: Array<{dns?: string, ip?: string, rfc822?: string}> = [];\n    let commonName = isClient ? 'dev-user' : 'localhost';\n\n    for (const entry of sanEntries) {\n        if (entry.toLowerCase().startsWith('ip:')) {\n            sanArray.push({ip: entry.substring(3)});\n        }\n        else if (entry.toLowerCase().startsWith('email:')) {\n            sanArray.push({rfc822: entry.substring(6)});\n        }\n        else {\n            const dnsPrefixed = entry.toLowerCase().startsWith('dns:');\n            if (isClient) {\n                commonName = dnsPrefixed ? entry.substring(4) : entry;\n            }\n            else {\n                const dns = dnsPrefixed ? entry.substring(4) : entry;\n                sanArray.push({dns});\n                if (sanArray.length === 1) {\n                    commonName = dns; // Use first DNS as CN\n                }\n            }\n        }\n    }\n\n    // STEP 2: create certificate signed by CA\n    const extensions: Array<{\n        extname: string;\n        cA?: boolean;\n        critical?: boolean;\n        names?: string[];\n        array?: (string[] | Array<{dns?: string, ip?: string, rfc822?: string}>);\n    }> = [\n        {extname: \"basicConstraints\", cA: false},\n        {\n            extname: \"keyUsage\",\n            critical: true,\n            names: [\"digitalSignature\", \"keyEncipherment\"]\n        },\n        {\n            extname: \"extKeyUsage\",\n            array: [isClient ? \"clientAuth\" : \"serverAuth\"]\n        }\n    ];\n\n    // Add SAN only if we have entries\n    if (sanArray.length > 0) {\n        extensions.push({\n            extname: \"subjectAltName\",\n            array: sanArray\n        });\n    }\n\n    const cert = new KJUR.asn1.x509.Certificate({\n        version: 3,\n        serial: { hex: randomSerialNumber() },\n        issuer: { str: issuer },\n        subject: { str: `/CN=${commonName}/O=${DEFAULT_ORGANISATION}/OU=${userAndHost}`},\n\n        notbefore: datetozulu(new Date(Date.now() - 60 * 1000), false, false),\n        notafter: datetozulu(new Date(Date.now() + validityDays * 24 * 60 * 60 * 1000), false, false),\n\n        sbjpubkey: pub,\n        ext: extensions,\n\n        sigalg: \"SHA256withECDSA\",\n        cakey: cakey\n    });\n\n    const certPem = cert.getPEM();\n\n    return {\n        key: prvPem,\n        cert: certPem\n    };\n}\n", "import { access, copyFile, readdir, readFile, writeFile } from 'node:fs/promises';\nimport { execFile as execFileCb } from 'node:child_process';\nimport { promisify } from 'node:util';\nimport { createHash } from 'node:crypto';\nimport { basename, resolve } from 'node:path';\n\nimport type { BuildSeaOptions } from '../../types/build.d.ts';\n\nconst execFile = promisify(execFileCb);\n\n/**\n * Escapes a string for safe interpolation inside a single-quoted JS string literal.\n */\nfunction escapeForSingleQuotedString(value: string): string {\n    return value.replace(/\\\\/g, '\\\\\\\\').replace(/'/g, \"\\\\'\");\n}\n\nexport async function buildSea(name: string, options?: BuildSeaOptions): Promise<string> {\n    const outDir = options?.outDir ?? './build';\n    const nodeExecutable = options?.config?.executable ?? process.execPath;\n\n    const safeName = escapeForSingleQuotedString(name);\n    const safeVersion = escapeForSingleQuotedString(options?.version ?? '');\n    const safeOutDir = escapeForSingleQuotedString(outDir.replace(/\\\\/g, '/'));\n\n    // Use the target node executable to create the output directory and resolve\n    // platform-specific paths. This also validates the executable is functional.\n    const { stdout } = await execFile(nodeExecutable, ['-e', `\n        const { mkdirSync } = require('node:fs');\n        const path = require('node:path');\n        const appVersion = '${safeVersion}'.trim();\n        const dirName = '${safeName}' + (appVersion ? '-v' + appVersion : '') + '.' + process.platform + '-' + process.arch;\n        const dir = path.resolve('${safeOutDir}', dirName);\n        mkdirSync(dir, { recursive: true });\n        process.stdout.write(JSON.stringify({ dirName, nodeVersion: process.version, platform: process.platform, arch: process.arch }));\n    `.trim()]);\n\n    const { dirName, nodeVersion, platform, arch } = JSON.parse(stdout);\n\n    // Step 1: Produce the SEA JavaScript file\n    let seaMain: string;\n    if (options?.esbuild) {\n        let esbuild: typeof import('esbuild');\n        try {\n            esbuild = await import('esbuild');\n        }\n        catch {\n            throw new Error('esbuild is required to bundle the entry point. Install it with:\\n\\n  npm install --save-dev esbuild\\n');\n        }\n        seaMain = `${outDir}/${name}.js`;\n        await esbuild.build({\n            format: 'cjs',\n            target: 'node20',\n            platform: 'node',\n            bundle: true,\n            external: ['esbuild', 'postject'], // exclude esbuild from the bundle since it's only needed at build time\n            loader: {\n                \".md\": \"file\",\n                \".d.ts\": \"file\",\n            },\n            assetNames: `${dirName}/[name]`,\n            entryNames: '[name]',\n            outdir: outDir,\n            minify: true,\n            logLevel: 'info',\n            ...options.esbuild,\n        });\n    }\n    else if (options?.config?.main) {\n        seaMain = resolve(options.config.main);\n    }\n    else {\n        throw new Error('Either esbuild options (with entryPoints) or config.main must be provided.');\n    }\n\n    // Write SEA config file in the build folder\n    const blobPath = resolve(`${outDir}/${name}.sea.node-${nodeVersion}-${platform}-${arch}.blob`);\n    const configPath = resolve(`${outDir}/${name}.sea-config.${dirName}.json`);\n    const seaConfig = {\n        disableExperimentalSEAWarning: true,\n        useSnapshot: false,\n        useCodeCache: false,\n        ...options?.config,\n        main: resolve(seaMain),\n        output: blobPath,\n    };\n    await writeFile(configPath, JSON.stringify(seaConfig, null, 2));\n\n    const nativePath = resolve(outDir, dirName);\n\n    const isWindows = platform === 'win32';\n    const isMacos = platform === 'darwin';\n    const targetFile = isWindows ? `${name}.exe` : name;\n    const targetPath = `${nativePath}/${targetFile}`;\n\n\n    // Check if we can skip the SEA build\n    const seaJsContent = await readFile(seaMain);\n    const shaPath = `${outDir}/${basename(seaMain)}.sha`;\n\n    const currentSha = createHash('sha256').update(seaJsContent).digest('hex');\n    let canSkip = false;\n\n    try {\n        const [previousSha] = await Promise.all([\n            readFile(shaPath, 'utf8'),\n            access(targetPath)\n        ]);\n        canSkip = previousSha === currentSha;\n    }\n    catch {\n        // SHA file or target doesn't exist, need to build\n    }\n    if (canSkip) {\n        console.log('SEA build skipped - esbuild output unchanged and target exists');\n        return targetPath;\n    }\n\n    // Step 3: Generate the blob to be injected\n    await execFile(nodeExecutable, ['--experimental-sea-config', configPath]);\n\n    // Step 4: Copy the Node.js executable to the target path\n    await copyFile(nodeExecutable, targetPath);\n\n    // Step 5: Remove the signature of the binary\n    if (isWindows) {\n        try {\n            const signtool = await findSigntool();\n            if (signtool) {\n                console.log(`Found signtool at: ${signtool}`);\n                await execFile(signtool, ['remove', '/s', targetPath]);\n                console.log(`Signature removed from ${targetPath} executable`);\n            }\n        }\n        catch (e: any) {\n            console.warn('Failed to remove signature:', e.message);\n        }\n    }\n    else if (isMacos) {\n        try {\n            await execFile('codesign', ['--remove-signature', targetPath]);\n            console.log(`Signature removed from ${targetPath} executable`);\n        }\n        catch (e: any) {\n            console.warn('Failed to remove signature:', e.message);\n        }\n    }\n\n    // Step 6: Inject the SEA blob into the binary\n    type InjectOptions = {\n        /**\n         * @default '__POSTJECT'\n         */\n        machoSegmentName?: string;\n        /**\n         * @default false\n         */\n        overwrite?: boolean;\n        /**\n         * @default 'POSTJECT_SENTINEL_fce680ab2cc467b6e072b8b5df1996b2'\n         */\n        sentinelFuse?: string\n    };\n    type Inject = (filename: string, resourceName: string, resourceData: Buffer, options?: InjectOptions) => Promise<void>;\n\n    let inject: Inject;\n    try {\n        ({ inject } = await import('postject') as { inject: Inject });\n    }\n    catch {\n        throw new Error('postject is required to build a SEA. Install it with:\\n\\n  npm install --save-dev postject\\n');\n    }\n\n    const resourceData = await readFile(blobPath);\n\n    // Construct the sentinel fuse at runtime to avoid the literal appearing in the\n    // bundled SEA output \u2014 postject would otherwise find multiple occurrences.\n    const sentinelFuse = ['NODE', 'SEA', 'FUSE', 'fce680ab2cc467b6e072b8b5df1996b2'].join('_');\n\n    await inject(\n        targetPath,\n        'NODE_SEA_BLOB',\n        resourceData,\n        {\n            overwrite: true,\n            sentinelFuse,\n            ...(isMacos ? { machoSegmentName: 'NODE_SEA' } : {})\n        });\n\n    // Step 7: Sign the binary\n    if (isWindows) {\n        try {\n            const signtool = await findSigntool();\n            if (signtool) {\n                console.log(`Signing executable with signtool at: ${signtool}`);\n                await execFile(signtool, ['sign', '/fd', 'SHA256', targetPath]);\n                console.log(`Executable signed successfully`);\n            }\n        }\n        catch (e: any) {\n            console.warn('Failed to sign executable:', e.message);\n        }\n    }\n    else if (isMacos) {\n        try {\n            await execFile('codesign', ['--sign', '-', targetPath]);\n            console.log(`Executable signed successfully`);\n        }\n        catch (e: any) {\n            console.warn('Failed to sign executable:', e.message);\n        }\n    }\n\n    // Save SHA for next build comparison\n    await writeFile(shaPath, currentSha);\n    return targetPath;\n}\n\nasync function findSigntool(): Promise<string | null> {\n    const windowsKitsPath = 'C:\\\\Program Files (x86)\\\\Windows Kits\\\\10\\\\bin';\n\n    try {\n        const entries = await readdir(windowsKitsPath, { withFileTypes: true });\n\n        // Filter directories that match version pattern (e.g., 10.0.22621.0)\n        const versionDirs = entries\n            .filter(entry => entry.isDirectory() && /^10\\.0\\.\\d+\\.\\d+$/.test(entry.name))\n            .map(entry => entry.name)\n            .sort((a, b) => {\n                // Sort by version number descending to get the latest\n                const partsA = a.split('.').map(Number);\n                const partsB = b.split('.').map(Number);\n                for (let i = 0; i < partsA.length; i++) {\n                    if (partsA[i] !== partsB[i]) {\n                        return partsB[i] - partsA[i];\n                    }\n                }\n                return 0;\n            });\n\n        // Try each version directory, starting with the latest\n        for (const version of versionDirs) {\n            const signtoolPath = `${windowsKitsPath}\\\\${version}\\\\${process.arch}\\\\signtool.exe`;\n            try {\n                await access(signtoolPath);\n                return signtoolPath;\n            }\n            catch {\n                // signtool not found in this version, try next\n            }\n        }\n\n        console.warn('signtool.exe not found in any Windows SDK version');\n        return null;\n    }\n    catch (e: any) {\n        console.warn(`Windows SDK not found at ${windowsKitsPath}: ${e.message}`);\n        return null;\n    }\n}\n\n"],
  "mappings": "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",
  "names": ["index_exports", "__export", "argon2_exports", "build_exports", "keygen_exports", "client_exports", "mkcert_exports", "__toCommonJS", "argon2_exports", "__export", "ARGON2_VERSION", "ARGON2_VERSION_10", "ARGON2_VERSION_13", "DEFAULT_ALGORITHM", "DEFAULT_HASH_LENGTH", "DEFAULT_MEMORY", "DEFAULT_PARALLELISM", "DEFAULT_PASSES", "DEFAULT_SALT_LENGTH", "createHash", "decode", "encode", "hash", "verify", "keygen_exports", "__export", "createSalt", "import_node_crypto", "length", "argon2", "getArgon2", "crypto", "ARGON2_VERSION_10", "ARGON2_VERSION_13", "ARGON2_VERSION", "DEFAULT_ALGORITHM", "DEFAULT_SALT_LENGTH", "DEFAULT_HASH_LENGTH", "DEFAULT_PARALLELISM", "DEFAULT_MEMORY", "DEFAULT_PASSES", "decode", "encodedHash", "parts", "current", "algorithm", "version", "parameters", "paramsParts", "param", "key", "value", "hash", "encode", "hashData", "createHash", "password", "hashLength", "nonce", "createSalt", "memory", "passes", "parallelism", "argon2Params", "argon2Fn", "resolve", "reject", "err", "result", "options", "saltLength", "hashBuffer", "verify", "decoded", "client_exports", "__export", "sendCommand", "import_net", "server", "command", "options", "timeout", "connectOptions", "target", "resolve", "reject", "client", "net", "timeoutId", "data", "response", "err", "mkcert_exports", "__export", "DEFAULT_CA_NAME", "generateCert", "generateRootCA", "import_jsrsasign", "import_node_os", "import_node_crypto", "userAndHost", "randomSerialNumber", "DEFAULT_ORGANISATION", "options", "commonName", "passphrase", "kp", "prv", "pub", "prvPem", "certPem", "cakey", "issuer", "sanEntries", "isClient", "validityDays", "sanArray", "entry", "dnsPrefixed", "dns", "extensions", "build_exports", "__export", "buildSea", "import_promises", "import_node_child_process", "import_node_util", "import_node_crypto", "import_node_path", "execFile", "execFileCb", "escapeForSingleQuotedString", "value", "name", "options", "outDir", "nodeExecutable", "safeName", "safeVersion", "safeOutDir", "stdout", "dirName", "nodeVersion", "platform", "arch", "seaMain", "esbuild", "blobPath", "configPath", "seaConfig", "nativePath", "isWindows", "isMacos", "targetFile", "targetPath", "seaJsContent", "shaPath", "currentSha", "canSkip", "previousSha", "signtool", "findSigntool", "e", "inject", "resourceData", "sentinelFuse", "windowsKitsPath", "versionDirs", "entry", "a", "b", "partsA", "partsB", "version", "signtoolPath"]
}
