scp-next 1.1.2 → 1.1.3

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/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client/client.ts","../src/client/transport.ts","../src/security/redact.ts","../src/errors/index.ts","../src/client/ssh-options.ts","../src/security/host-verification.ts","../src/paths/local-path.ts","../src/client/command-executor.ts","../src/client/walk.ts","../src/paths/remote-path.ts","../src/config/validation.ts","../src/config/post-upload-commands.ts","../src/client/upload.ts","../src/client/download.ts","../src/client/copy.ts"],"sourcesContent":["import { access, mkdir, stat } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport { Ssh2SftpTransport } from \"./transport.js\";\nimport type { SftpTransport } from \"./transport.js\";\nimport { SshCommandExecutor } from \"./command-executor.js\";\nimport type { CommandExecutor } from \"./command-executor.js\";\nimport { walkLocalFiles, walkRemoteFiles } from \"./walk.js\";\nimport { RemoteCommandError, TransferError, ValidationError } from \"../errors/index.js\";\nimport { getLocalPathKind, resolveLocalPath } from \"../paths/local-path.js\";\nimport { redactKnownSensitiveValues } from \"../security/redact.js\";\nimport { normalizeRemotePath, remoteDirname, remoteJoin } from \"../paths/remote-path.js\";\nimport type {\n DownloadOptions,\n ExecOptions,\n ExecResult,\n ScpNextClient,\n ScpServerOptions,\n TransferOptions,\n UploadOptions\n} from \"../types/index.js\";\nimport {\n validateDownloadOptions,\n validateServerOptions,\n validateUploadOptions\n} from \"../config/validation.js\";\nimport { getPostUploadCommands } from \"../config/post-upload-commands.js\";\n\nexport interface ScpNextClientDependencies {\n transport?: SftpTransport;\n commandExecutor?: CommandExecutor;\n}\n\nfunction percentage(transferredBytes: number, totalBytes?: number): number | undefined {\n if (!totalBytes || totalBytes <= 0) {\n return undefined;\n }\n return Math.min(100, Math.round((transferredBytes / totalBytes) * 100));\n}\n\nfunction mergeOptions<T extends TransferOptions>(\n serverOptions: ScpServerOptions,\n transferOptions: T | undefined\n): ScpServerOptions & T {\n return { ...serverOptions, ...(transferOptions ?? {}) } as ScpServerOptions & T;\n}\n\nfunction shouldCreateDirectories(options: TransferOptions): boolean {\n return options.createDirectories ?? true;\n}\n\nfunction hasTrailingPathSeparator(inputPath: string): boolean {\n return /[\\\\/]$/.test(inputPath);\n}\n\nfunction trimmedRemoteDirectory(remotePath: string): string {\n return remotePath.replace(/\\/+$/g, \"\") || \"/\";\n}\n\nfunction remoteBasename(remotePath: string): string {\n return path.posix.basename(trimmedRemoteDirectory(remotePath));\n}\n\nasync function isExistingLocalDirectory(localPath: string): Promise<boolean> {\n try {\n return (await stat(localPath)).isDirectory();\n } catch {\n return false;\n }\n}\n\nasync function ensureLocalDirectory(localPath: string, createParents = false): Promise<void> {\n try {\n const stats = await stat(localPath);\n if (stats.isDirectory()) {\n return;\n }\n throw new TransferError(`Local destination already exists and is not a directory: ${localPath}`, {\n context: { localPath }\n });\n } catch (error) {\n if (error instanceof TransferError) {\n throw error;\n }\n await mkdir(localPath, { recursive: createParents });\n }\n}\n\nexport class ScpNextClientImpl implements ScpNextClient {\n private readonly serverOptions: ScpServerOptions;\n private readonly transport: SftpTransport;\n private readonly commandExecutor: CommandExecutor;\n private connected = false;\n private commandExecutorConnected = false;\n\n constructor(serverOptions: ScpServerOptions, dependencies: ScpNextClientDependencies = {}) {\n this.serverOptions = serverOptions;\n this.transport = dependencies.transport ?? new Ssh2SftpTransport();\n this.commandExecutor = dependencies.commandExecutor ?? new SshCommandExecutor();\n }\n\n async connect(): Promise<void> {\n await validateServerOptions(this.serverOptions);\n await this.transport.connect(this.serverOptions);\n this.connected = true;\n }\n\n async upload(\n localPath: string,\n remotePath: string,\n options: TransferOptions = {}\n ): Promise<ExecResult[]> {\n const uploadOptions: UploadOptions = {\n ...mergeOptions(this.serverOptions, options),\n localPath,\n remotePath\n };\n await validateUploadOptions(uploadOptions);\n\n if (options.dryRun) {\n return [];\n }\n\n await this.ensureConnected();\n await this.uploadWithTransport(uploadOptions);\n const results: ExecResult[] = [];\n for (const command of getPostUploadCommands(options) ?? []) {\n results.push(await this.exec(command));\n }\n return results;\n }\n\n async download(\n remotePath: string,\n localPath: string,\n options: TransferOptions = {}\n ): Promise<void> {\n const downloadOptions: DownloadOptions = {\n ...mergeOptions(this.serverOptions, options),\n remotePath,\n localPath\n };\n await validateDownloadOptions(downloadOptions);\n\n if (options.dryRun) {\n return;\n }\n\n await this.ensureConnected();\n await this.downloadWithTransport(downloadOptions);\n }\n\n async exec(command: string, options: ExecOptions = {}): Promise<ExecResult> {\n if (typeof command !== \"string\" || !command.trim()) {\n throw new ValidationError(\"Remote command must not be empty.\");\n }\n if (options.timeout !== undefined && (!Number.isFinite(options.timeout) || options.timeout <= 0)) {\n throw new ValidationError(\"Command timeout must be a positive number.\");\n }\n if (\n options.maxBuffer !== undefined &&\n (!Number.isInteger(options.maxBuffer) || options.maxBuffer <= 0)\n ) {\n throw new ValidationError(\"Command maxBuffer must be a positive integer.\");\n }\n if (\n options.failOnStderr !== undefined &&\n typeof options.failOnStderr !== \"boolean\"\n ) {\n throw new ValidationError(\"Command failOnStderr must be a boolean.\");\n }\n\n await this.ensureCommandExecutorConnected();\n let result: ExecResult;\n try {\n result = await this.commandExecutor.exec(command, options);\n } catch (error) {\n if (error instanceof RemoteCommandError) {\n throw new RemoteCommandError(error.message, {\n exitCode: error.exitCode,\n signal: error.signal,\n stdout: redactKnownSensitiveValues(error.stdout, this.serverOptions),\n stderr: redactKnownSensitiveValues(error.stderr, this.serverOptions)\n });\n }\n throw error;\n }\n if (result.exitCode !== 0 || (options.failOnStderr && result.stderr.length > 0)) {\n const reason =\n result.exitCode === null\n ? \"Remote command ended without an exit code.\"\n : result.exitCode !== 0\n ? `Remote command failed with exit code ${String(result.exitCode)}.`\n : \"Remote command wrote to stderr.\";\n throw new RemoteCommandError(reason, {\n exitCode: result.exitCode,\n signal: result.signal,\n stdout: redactKnownSensitiveValues(result.stdout, this.serverOptions),\n stderr: redactKnownSensitiveValues(result.stderr, this.serverOptions)\n });\n }\n return result;\n }\n\n async close(): Promise<void> {\n const closures: Promise<void>[] = [];\n if (this.connected) closures.push(this.transport.close());\n if (this.commandExecutorConnected) closures.push(this.commandExecutor.close());\n const results = await Promise.allSettled(closures);\n this.connected = false;\n this.commandExecutorConnected = false;\n const failure = results.find(\n (result): result is PromiseRejectedResult => result.status === \"rejected\"\n );\n if (failure) {\n throw failure.reason;\n }\n }\n\n private async ensureConnected(): Promise<void> {\n if (!this.connected) {\n await this.connect();\n }\n }\n\n private async ensureCommandExecutorConnected(): Promise<void> {\n if (!this.commandExecutorConnected) {\n await validateServerOptions(this.serverOptions);\n await this.commandExecutor.connect(this.serverOptions);\n this.commandExecutorConnected = true;\n }\n }\n\n private async uploadWithTransport(options: UploadOptions): Promise<void> {\n const localKind = await getLocalPathKind(options.localPath);\n const remotePath = normalizeRemotePath(options.remotePath);\n\n if (localKind === \"directory\" && !options.recursive) {\n throw new ValidationError(\"Uploading a directory requires recursive mode.\");\n }\n\n if (localKind === \"file\") {\n const destinationFile = await this.resolveRemoteDestinationForLocalFile(options, remotePath);\n const totalBytes = undefined;\n await this.transport.uploadFile(resolveLocalPath(options.localPath), destinationFile, (step) => {\n options.onProgress?.({\n operation: \"upload\",\n source: options.localPath,\n destination: options.remotePath,\n transferredBytes: step.transferredBytes,\n totalBytes: step.totalBytes || totalBytes,\n percentage: percentage(step.transferredBytes, step.totalBytes),\n currentFile: options.localPath\n });\n });\n return;\n }\n\n const files = await walkLocalFiles(options.localPath);\n const totalBytes = files.reduce((sum, file) => sum + file.size, 0);\n let completedBytes = 0;\n let completedFiles = 0;\n const destinationRoot = await this.resolveRemoteDestinationForLocalDirectory(\n options,\n remotePath\n );\n\n for (const file of files) {\n const destinationFile = remoteJoin(\n destinationRoot,\n file.relativePath.split(path.sep).join(\"/\")\n );\n await this.ensureRemoteParent(destinationFile, true);\n await this.assertRemoteOverwrite(destinationFile, options.overwrite);\n\n await this.transport.uploadFile(file.absolutePath, destinationFile, (step) => {\n const transferredBytes = completedBytes + step.transferredBytes;\n options.onProgress?.({\n operation: \"upload\",\n source: options.localPath,\n destination: options.remotePath,\n transferredBytes,\n totalBytes,\n percentage: percentage(transferredBytes, totalBytes),\n currentFile: file.relativePath,\n completedFiles,\n totalFiles: files.length\n });\n });\n\n completedBytes += file.size;\n completedFiles += 1;\n }\n }\n\n private async resolveRemoteDestinationForLocalFile(\n options: UploadOptions,\n remotePath: string\n ): Promise<string> {\n const remoteKind = await this.transport.exists(remotePath);\n const isDirectoryLikeDestination = remoteKind === \"d\" || remotePath.endsWith(\"/\");\n\n if (!isDirectoryLikeDestination) {\n await this.ensureRemoteParent(remotePath, shouldCreateDirectories(options));\n await this.assertRemoteOverwrite(remotePath, options.overwrite);\n return remotePath;\n }\n\n if (remoteKind && remoteKind !== \"d\") {\n throw new TransferError(`Remote destination already exists and is not a directory: ${remotePath}`, {\n context: { remotePath }\n });\n }\n\n const remoteDirectory = remotePath.replace(/\\/+$/g, \"\") || \"/\";\n if (!remoteKind) {\n if (!shouldCreateDirectories(options)) {\n throw new TransferError(`Remote destination directory does not exist: ${remoteDirectory}`, {\n context: { remotePath }\n });\n }\n await this.transport.mkdir(remoteDirectory, true);\n }\n\n const destinationFile = remoteJoin(\n remoteDirectory,\n path.basename(resolveLocalPath(options.localPath))\n );\n await this.assertRemoteOverwrite(destinationFile, options.overwrite);\n return destinationFile;\n }\n\n private async resolveRemoteDestinationForLocalDirectory(\n options: UploadOptions,\n remotePath: string\n ): Promise<string> {\n const remoteKind = await this.transport.exists(remotePath);\n const isDirectoryLikeDestination = remoteKind === \"d\" || remotePath.endsWith(\"/\");\n const localDirectoryName = path.basename(resolveLocalPath(options.localPath));\n\n if (remoteKind && remoteKind !== \"d\") {\n throw new TransferError(`Remote destination already exists and is not a directory: ${remotePath}`, {\n context: { remotePath }\n });\n }\n\n if (isDirectoryLikeDestination) {\n const remoteDirectory = trimmedRemoteDirectory(remotePath);\n if (!remoteKind) {\n if (!shouldCreateDirectories(options)) {\n throw new TransferError(`Remote destination directory does not exist: ${remoteDirectory}`, {\n context: { remotePath }\n });\n }\n await this.transport.mkdir(remoteDirectory, true);\n }\n\n const destinationRoot = remoteJoin(remoteDirectory, localDirectoryName);\n await this.ensureRemoteDirectory(destinationRoot);\n return destinationRoot;\n }\n\n if (!remoteKind) {\n if (!shouldCreateDirectories(options)) {\n throw new TransferError(`Remote destination directory does not exist: ${remotePath}`, {\n context: { remotePath }\n });\n }\n await this.transport.mkdir(remotePath, true);\n }\n\n return remotePath;\n }\n\n private async downloadWithTransport(options: DownloadOptions): Promise<void> {\n const remotePath = normalizeRemotePath(options.remotePath);\n const remoteKind = await this.transport.exists(remotePath);\n\n if (!remoteKind) {\n throw new TransferError(`Remote path does not exist: ${options.remotePath}`, {\n context: { remotePath: options.remotePath }\n });\n }\n\n if (remoteKind === \"d\") {\n if (!options.recursive) {\n throw new ValidationError(\"Downloading a directory requires recursive mode.\");\n }\n await this.downloadDirectory(options);\n return;\n }\n\n await this.downloadSingleFile(options, remotePath);\n }\n\n private async downloadSingleFile(options: DownloadOptions, remotePath: string): Promise<void> {\n const localPath = await this.resolveLocalDestinationForRemoteFile(options, remotePath);\n await this.assertLocalOverwrite(localPath, options.overwrite);\n if (shouldCreateDirectories(options)) {\n await mkdir(path.dirname(localPath), { recursive: true });\n }\n await this.transport.downloadFile(remotePath, localPath, (step) => {\n options.onProgress?.({\n operation: \"download\",\n source: options.remotePath,\n destination: options.localPath,\n transferredBytes: step.transferredBytes,\n totalBytes: step.totalBytes,\n percentage: percentage(step.transferredBytes, step.totalBytes),\n currentFile: options.remotePath\n });\n });\n }\n\n private async downloadDirectory(options: DownloadOptions): Promise<void> {\n const remotePath = normalizeRemotePath(options.remotePath);\n const localRoot = await this.resolveLocalDestinationForRemoteDirectory(options, remotePath);\n const files = await walkRemoteFiles(this.transport, remotePath);\n const totalBytes = files.reduce((sum, file) => sum + file.size, 0);\n let completedBytes = 0;\n let completedFiles = 0;\n\n await ensureLocalDirectory(localRoot, shouldCreateDirectories(options));\n\n for (const file of files) {\n const localFile = path.join(localRoot, ...file.relativePath.split(\"/\"));\n await this.assertLocalOverwrite(localFile, options.overwrite);\n await mkdir(path.dirname(localFile), { recursive: true });\n await this.transport.downloadFile(file.remotePath, localFile, (step) => {\n const transferredBytes = completedBytes + step.transferredBytes;\n options.onProgress?.({\n operation: \"download\",\n source: options.remotePath,\n destination: options.localPath,\n transferredBytes,\n totalBytes,\n percentage: percentage(transferredBytes, totalBytes),\n currentFile: file.relativePath,\n completedFiles,\n totalFiles: files.length\n });\n });\n completedBytes += file.size;\n completedFiles += 1;\n }\n }\n\n private async resolveLocalDestinationForRemoteFile(\n options: DownloadOptions,\n remotePath: string\n ): Promise<string> {\n const localDestination = resolveLocalPath(options.localPath);\n const isDirectoryLikeDestination =\n hasTrailingPathSeparator(options.localPath) || (await isExistingLocalDirectory(localDestination));\n\n if (!isDirectoryLikeDestination) {\n return localDestination;\n }\n\n if (!(await isExistingLocalDirectory(localDestination))) {\n if (!shouldCreateDirectories(options)) {\n throw new TransferError(`Local destination directory does not exist: ${localDestination}`, {\n context: { localPath: options.localPath }\n });\n }\n await mkdir(localDestination, { recursive: true });\n }\n\n return path.join(localDestination, remoteBasename(remotePath));\n }\n\n private async resolveLocalDestinationForRemoteDirectory(\n options: DownloadOptions,\n remotePath: string\n ): Promise<string> {\n const localDestination = resolveLocalPath(options.localPath);\n const isDirectoryLikeDestination =\n hasTrailingPathSeparator(options.localPath) || (await isExistingLocalDirectory(localDestination));\n\n if (!isDirectoryLikeDestination) {\n return localDestination;\n }\n\n if (!(await isExistingLocalDirectory(localDestination))) {\n if (!shouldCreateDirectories(options)) {\n throw new TransferError(`Local destination directory does not exist: ${localDestination}`, {\n context: { localPath: options.localPath }\n });\n }\n await mkdir(localDestination, { recursive: true });\n }\n\n return path.join(localDestination, remoteBasename(remotePath));\n }\n\n private async ensureRemoteParent(remotePath: string, createDirectories = false): Promise<void> {\n const parent = remoteDirname(remotePath);\n if (parent === \".\" || parent === \"/\") {\n return;\n }\n\n if (createDirectories) {\n await this.transport.mkdir(parent, true);\n return;\n }\n\n const exists = await this.transport.exists(parent);\n if (exists !== \"d\") {\n throw new TransferError(`Remote destination parent does not exist: ${parent}`, {\n context: { remotePath }\n });\n }\n }\n\n private async ensureRemoteDirectory(remotePath: string): Promise<void> {\n const exists = await this.transport.exists(remotePath);\n if (exists && exists !== \"d\") {\n throw new TransferError(`Remote destination already exists and is not a directory: ${remotePath}`, {\n context: { remotePath }\n });\n }\n if (!exists) {\n await this.transport.mkdir(remotePath, true);\n }\n }\n\n private async assertRemoteOverwrite(remotePath: string, overwrite = false): Promise<void> {\n if (overwrite) {\n return;\n }\n const exists = await this.transport.exists(remotePath);\n if (exists) {\n throw new TransferError(\n `Remote destination already exists: ${remotePath}. Use --overwrite to overwrite it.`,\n {\n context: { remotePath }\n }\n );\n }\n }\n\n private async assertLocalOverwrite(localPath: string, overwrite = false): Promise<void> {\n if (overwrite) {\n return;\n }\n\n try {\n await access(localPath);\n throw new TransferError(`Local destination already exists: ${localPath}`, {\n context: { localPath }\n });\n } catch (error) {\n if (error instanceof TransferError) {\n throw error;\n }\n }\n }\n}\n\nexport function createClient(options: ScpServerOptions): ScpNextClient {\n return new ScpNextClientImpl(options);\n}\n","import SftpClient from \"ssh2-sftp-client\";\nimport type {\n ConnectOptions as SftpConnectOptions,\n FileInfo,\n TransferOptions as SftpTransferOptions\n} from \"ssh2-sftp-client\";\n\nimport {\n ConnectionError,\n HostVerificationError,\n TransferError,\n toScpNextError\n} from \"../errors/index.js\";\nimport { formatErrorMessage } from \"../security/redact.js\";\nimport type { ScpServerOptions } from \"../types/index.js\";\nimport { createSshConnectOptions } from \"./ssh-options.js\";\n\nexport interface RemoteFileInfo {\n type: \"-\" | \"d\" | \"l\";\n name: string;\n size: number;\n}\n\nexport interface TransferStep {\n transferredBytes: number;\n chunkBytes: number;\n totalBytes: number;\n}\n\nexport interface SftpTransport {\n connect(options: ScpServerOptions): Promise<void>;\n close(): Promise<void>;\n exists(remotePath: string): Promise<false | \"-\" | \"d\" | \"l\">;\n mkdir(remotePath: string, recursive?: boolean): Promise<void>;\n list(remotePath: string): Promise<RemoteFileInfo[]>;\n uploadFile(\n localPath: string,\n remotePath: string,\n onStep?: (step: TransferStep) => void\n ): Promise<void>;\n downloadFile(\n remotePath: string,\n localPath: string,\n onStep?: (step: TransferStep) => void\n ): Promise<void>;\n}\n\nfunction toRemoteFileInfo(info: FileInfo): RemoteFileInfo {\n return {\n type: info.type,\n name: info.name,\n size: info.size\n };\n}\n\nexport class Ssh2SftpTransport implements SftpTransport {\n private readonly client: SftpClient;\n\n constructor(name = \"scp-next\") {\n this.client = new SftpClient(name, {\n error: () => undefined,\n end: () => undefined,\n close: () => undefined\n });\n }\n\n async connect(options: ScpServerOptions): Promise<void> {\n const connectOptions = await createSshConnectOptions(options);\n\n try {\n await this.client.connect(connectOptions as SftpConnectOptions);\n } catch (error) {\n const converted = toScpNextError(error);\n if (converted instanceof HostVerificationError) {\n throw new HostVerificationError(\n `SSH host verification failed during connection: ${formatErrorMessage(\n error\n )}.${hostVerificationTroubleshooting(options.host)}`,\n { cause: error, context: connectionContext(options) }\n );\n }\n if (isLikelyHostVerificationFailure(error)) {\n throw new HostVerificationError(\n `SSH host verification failed during connection.${hostVerificationTroubleshooting(\n options.host\n )}`,\n { cause: error, context: connectionContext(options) }\n );\n }\n throw new ConnectionError(`Unable to connect to SSH server: ${formatErrorMessage(error)}`, {\n cause: error,\n context: connectionContext(options)\n });\n }\n }\n\n async close(): Promise<void> {\n await this.client.end();\n }\n\n async exists(remotePath: string): Promise<false | \"-\" | \"d\" | \"l\"> {\n return this.client.exists(remotePath);\n }\n\n async mkdir(remotePath: string, recursive = true): Promise<void> {\n await this.client.mkdir(remotePath, recursive);\n }\n\n async list(remotePath: string): Promise<RemoteFileInfo[]> {\n const files = await this.client.list(remotePath);\n return files.map(toRemoteFileInfo);\n }\n\n async uploadFile(\n localPath: string,\n remotePath: string,\n onStep?: (step: TransferStep) => void\n ): Promise<void> {\n try {\n await this.client.fastPut(localPath, remotePath, this.transferOptions(onStep));\n } catch (error) {\n throw new TransferError(`Upload failed for ${localPath}: ${formatErrorMessage(error)}`, {\n cause: error,\n context: { localPath, remotePath }\n });\n }\n }\n\n async downloadFile(\n remotePath: string,\n localPath: string,\n onStep?: (step: TransferStep) => void\n ): Promise<void> {\n try {\n await this.client.fastGet(remotePath, localPath, this.transferOptions(onStep));\n } catch (error) {\n throw new TransferError(`Download failed for ${remotePath}: ${formatErrorMessage(error)}`, {\n cause: error,\n context: { remotePath, localPath }\n });\n }\n }\n\n private transferOptions(onStep?: (step: TransferStep) => void): SftpTransferOptions | undefined {\n if (!onStep) {\n return undefined;\n }\n return {\n step(transferredBytes, chunkBytes, totalBytes) {\n onStep({ transferredBytes, chunkBytes, totalBytes });\n }\n };\n }\n}\n\nfunction connectionContext(options: ScpServerOptions): Record<string, unknown> {\n return {\n host: options.host,\n port: options.port,\n username: options.username\n };\n}\n\nfunction isLikelyHostVerificationFailure(error: unknown): boolean {\n const message = error instanceof Error ? error.message.toLowerCase() : String(error).toLowerCase();\n return (\n message.includes(\"host\") &&\n (message.includes(\"verif\") ||\n message.includes(\"fingerprint\") ||\n message.includes(\"host key\") ||\n message.includes(\"key mismatch\") ||\n message.includes(\"denied\"))\n );\n}\n\nfunction hostVerificationTroubleshooting(host: string | undefined): string {\n const displayHost = host ?? \"<host>\";\n return [\n \"\",\n \"\",\n \"Typical fix:\",\n ` ssh ${displayHost}`,\n \"\",\n \"If plain ssh works but scp-next fails, check that the host entry is available in\",\n \"`~/.ssh/known_hosts` for the same host and port used by scp-next. For non-default ports,\",\n \"OpenSSH usually stores entries as `[host]:port`.\",\n \"You can also configure hostFingerprint or knownHostsFile explicitly.\"\n ].join(\"\\n\");\n}\n","const SENSITIVE_KEYS = [\n \"password\",\n \"passphrase\",\n \"privatekey\",\n \"privatekeyfile\",\n \"token\",\n \"authorization\",\n \"credential\",\n \"secret\"\n];\n\nconst PRIVATE_KEY_PATTERN =\n /-----BEGIN [A-Z ]*PRIVATE KEY-----[\\s\\S]*?-----END [A-Z ]*PRIVATE KEY-----/g;\nconst SECRET_OPTION_PATTERN =\n /(--(?:password|passphrase|token|secret|authorization|credential)(?:=|\\s+))(?:\"[^\"]*\"|'[^']*'|\\S+)/gi;\nconst SECRET_ASSIGNMENT_PATTERN =\n /(\\b(?:password|passphrase|token|secret|authorization|credential)[A-Z0-9_-]*\\s*=\\s*)(?:\"[^\"]*\"|'[^']*'|[^\\s&]+)/gi;\n\nfunction isSensitiveKey(key: string): boolean {\n const normalized = key.replace(/[-_\\s]/g, \"\").toLowerCase();\n return SENSITIVE_KEYS.some((sensitive) => normalized.includes(sensitive));\n}\n\nexport function redactSensitiveValues(value: unknown): unknown {\n if (typeof value === \"string\") {\n return value.replace(PRIVATE_KEY_PATTERN, \"[REDACTED]\");\n }\n\n if (Array.isArray(value)) {\n const redacted: unknown[] = value.map((item: unknown) => redactSensitiveValues(item));\n return redacted;\n }\n\n if (value && typeof value === \"object\") {\n const redacted: Record<string, unknown> = {};\n for (const [key, nestedValue] of Object.entries(value)) {\n redacted[key] = isSensitiveKey(key) ? \"[REDACTED]\" : redactSensitiveValues(nestedValue);\n }\n return redacted;\n }\n\n return value;\n}\n\nexport function formatErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return redactKnownSensitiveValues(error.message, {});\n }\n return redactKnownSensitiveValues(String(error), {});\n}\n\nexport function redactKnownSensitiveValues(\n text: string,\n source: object\n): string {\n const sensitiveValues = collectSensitiveValues(source);\n const redactedKnownValues = sensitiveValues.reduce(\n (redacted, value) => redacted.split(value).join(\"[REDACTED]\"),\n String(redactSensitiveValues(text))\n );\n return redactedKnownValues\n .replace(SECRET_OPTION_PATTERN, \"$1[REDACTED]\")\n .replace(SECRET_ASSIGNMENT_PATTERN, \"$1[REDACTED]\");\n}\n\nfunction collectSensitiveValues(value: unknown, key = \"\"): string[] {\n if (isSensitiveKey(key)) {\n if (typeof value === \"string\" && value) {\n return [value];\n }\n if (Buffer.isBuffer(value) && value.length > 0) {\n return [value.toString(\"utf8\")];\n }\n return [];\n }\n\n if (!value || typeof value !== \"object\") {\n return [];\n }\n\n return Object.entries(value).flatMap(([nestedKey, nestedValue]) =>\n collectSensitiveValues(nestedValue, nestedKey)\n );\n}\n","import { redactSensitiveValues } from \"../security/redact.js\";\n\nexport type ScpNextErrorCode =\n | \"SCP_NEXT_ERROR\"\n | \"SCP_NEXT_CONFIGURATION_ERROR\"\n | \"SCP_NEXT_VALIDATION_ERROR\"\n | \"SCP_NEXT_AUTHENTICATION_ERROR\"\n | \"SCP_NEXT_CONNECTION_ERROR\"\n | \"SCP_NEXT_TRANSFER_ERROR\"\n | \"SCP_NEXT_REMOTE_COMMAND_ERROR\"\n | \"SCP_NEXT_FILESYSTEM_ERROR\"\n | \"SCP_NEXT_HOST_VERIFICATION_ERROR\";\n\nexport interface ScpNextErrorOptions {\n code?: ScpNextErrorCode;\n cause?: unknown;\n context?: Record<string, unknown>;\n}\n\nexport class ScpNextError extends Error {\n readonly code: ScpNextErrorCode;\n readonly context: Record<string, unknown>;\n\n constructor(message: string, options: ScpNextErrorOptions = {}) {\n super(message, { cause: options.cause });\n this.name = new.target.name;\n this.code = options.code ?? \"SCP_NEXT_ERROR\";\n this.context = redactSensitiveValues(options.context ?? {}) as Record<string, unknown>;\n }\n}\n\nexport class ConfigurationError extends ScpNextError {\n constructor(message: string, options: Omit<ScpNextErrorOptions, \"code\"> = {}) {\n super(message, { ...options, code: \"SCP_NEXT_CONFIGURATION_ERROR\" });\n }\n}\n\nexport class ValidationError extends ScpNextError {\n constructor(message: string, options: Omit<ScpNextErrorOptions, \"code\"> = {}) {\n super(message, { ...options, code: \"SCP_NEXT_VALIDATION_ERROR\" });\n }\n}\n\nexport class AuthenticationError extends ScpNextError {\n constructor(message: string, options: Omit<ScpNextErrorOptions, \"code\"> = {}) {\n super(message, { ...options, code: \"SCP_NEXT_AUTHENTICATION_ERROR\" });\n }\n}\n\nexport class ConnectionError extends ScpNextError {\n constructor(message: string, options: Omit<ScpNextErrorOptions, \"code\"> = {}) {\n super(message, { ...options, code: \"SCP_NEXT_CONNECTION_ERROR\" });\n }\n}\n\nexport class TransferError extends ScpNextError {\n constructor(message: string, options: Omit<ScpNextErrorOptions, \"code\"> = {}) {\n super(message, { ...options, code: \"SCP_NEXT_TRANSFER_ERROR\" });\n }\n}\n\nexport interface RemoteCommandErrorOptions extends Omit<ScpNextErrorOptions, \"code\"> {\n exitCode: number | null;\n signal?: string | undefined;\n stdout?: string | undefined;\n stderr?: string | undefined;\n}\n\nexport class RemoteCommandError extends ScpNextError {\n readonly exitCode: number | null;\n readonly signal?: string | undefined;\n readonly stdout: string;\n readonly stderr: string;\n\n constructor(message: string, options: RemoteCommandErrorOptions) {\n super(message, {\n code: \"SCP_NEXT_REMOTE_COMMAND_ERROR\",\n ...(options.cause !== undefined ? { cause: options.cause } : {}),\n ...(options.context !== undefined ? { context: options.context } : {})\n });\n this.exitCode = options.exitCode;\n this.signal = options.signal;\n this.stdout = options.stdout ?? \"\";\n this.stderr = options.stderr ?? \"\";\n }\n}\n\nexport class FileSystemError extends ScpNextError {\n constructor(message: string, options: Omit<ScpNextErrorOptions, \"code\"> = {}) {\n super(message, { ...options, code: \"SCP_NEXT_FILESYSTEM_ERROR\" });\n }\n}\n\nexport class HostVerificationError extends ScpNextError {\n constructor(message: string, options: Omit<ScpNextErrorOptions, \"code\"> = {}) {\n super(message, { ...options, code: \"SCP_NEXT_HOST_VERIFICATION_ERROR\" });\n }\n}\n\nexport function toScpNextError(error: unknown): ScpNextError {\n if (error instanceof ScpNextError) {\n return error;\n }\n\n const message = error instanceof Error ? error.message : \"Unexpected scp-next error.\";\n const lowerMessage = message.toLowerCase();\n\n if (lowerMessage.includes(\"authentication\") || lowerMessage.includes(\"permission denied\")) {\n return new AuthenticationError(\"SSH authentication failed.\", { cause: error });\n }\n\n if (\n lowerMessage.includes(\"host verification\") ||\n lowerMessage.includes(\"host key\") ||\n lowerMessage.includes(\"fingerprint\") ||\n (lowerMessage.includes(\"host\") && lowerMessage.includes(\"denied\"))\n ) {\n return new HostVerificationError(\"SSH host verification failed.\", { cause: error });\n }\n\n if (\n lowerMessage.includes(\"timed out\") ||\n lowerMessage.includes(\"connection\") ||\n lowerMessage.includes(\"econn\")\n ) {\n return new ConnectionError(\"SSH connection failed.\", { cause: error });\n }\n\n return new TransferError(String(redactSensitiveValues(message)), { cause: error });\n}\n","import { readFile } from \"node:fs/promises\";\n\nimport type { ConnectConfig } from \"ssh2\";\n\nimport {\n createHostVerifier,\n resolveAllowedFingerprints\n} from \"../security/host-verification.js\";\nimport { expandHome } from \"../paths/local-path.js\";\nimport type { ScpServerOptions } from \"../types/index.js\";\n\nexport async function createSshConnectOptions(\n options: ScpServerOptions\n): Promise<ConnectConfig> {\n const connectOptions: ConnectConfig = {};\n if (options.host !== undefined) connectOptions.host = options.host;\n if (options.port !== undefined) connectOptions.port = options.port;\n if (options.username !== undefined) connectOptions.username = options.username;\n if (options.password !== undefined) connectOptions.password = options.password;\n if (options.privateKey !== undefined) {\n connectOptions.privateKey = options.privateKey;\n } else if (options.privateKeyFile) {\n connectOptions.privateKey = await readFile(\n expandHome(options.privateKeyFile),\n \"utf8\"\n );\n }\n if (options.passphrase !== undefined) connectOptions.passphrase = options.passphrase;\n const agent = options.agent ?? process.env.SSH_AUTH_SOCK;\n if (agent !== undefined) connectOptions.agent = agent;\n if (options.timeout !== undefined) connectOptions.readyTimeout = options.timeout;\n\n const allowedFingerprints = await resolveAllowedFingerprints(options);\n const hostVerifier = createHostVerifier(allowedFingerprints);\n if (hostVerifier) {\n connectOptions.hostHash = \"sha256\";\n connectOptions.hostVerifier = hostVerifier;\n }\n\n return connectOptions;\n}\n","import { createHash } from \"node:crypto\";\nimport { access, readFile } from \"node:fs/promises\";\n\nimport { HostVerificationError } from \"../errors/index.js\";\nimport { expandHome } from \"../paths/local-path.js\";\n\nfunction normalizeFingerprint(fingerprint: string): string {\n return fingerprint\n .trim()\n .replace(/^SHA256:/i, \"\")\n .replace(/^sha256:/i, \"\")\n .replace(/=+$/g, \"\");\n}\n\nfunction isHexFingerprint(fingerprint: string): boolean {\n return /^[0-9a-f]+$/i.test(fingerprint);\n}\n\nfunction fingerprintCandidates(fingerprint: string): string[] {\n const normalized = normalizeFingerprint(fingerprint);\n const candidates = new Set([normalized]);\n\n if (isHexFingerprint(normalized)) {\n candidates.add(normalized.toLowerCase());\n } else {\n try {\n candidates.add(Buffer.from(normalized, \"base64\").toString(\"hex\"));\n } catch {\n // Keep the original normalized value when it is not valid base64.\n }\n }\n\n return [...candidates];\n}\n\nexport function isFingerprintMatch(actual: string, expected: string): boolean {\n const normalizedActual = normalizeFingerprint(actual);\n const normalizedExpected = normalizeFingerprint(expected);\n if (normalizedActual === normalizedExpected) {\n return true;\n }\n return (\n isHexFingerprint(normalizedActual) &&\n isHexFingerprint(normalizedExpected) &&\n normalizedActual.toLowerCase() === normalizedExpected.toLowerCase()\n );\n}\n\nexport interface HostVerifierConfig {\n host?: string | undefined;\n port?: number | undefined;\n hostFingerprint?: string | undefined;\n knownHostsFile?: string | undefined;\n}\n\nfunction hostVerificationHint(host: string): string {\n return [\n \"\",\n \"Typical fix:\",\n ` ssh ${host}`,\n \"\",\n \"If you trust the host key, accept it and retry the scp-next command.\",\n \"Alternatively configure hostFingerprint or knownHostsFile explicitly.\"\n ].join(\"\\n\");\n}\n\nexport async function resolveAllowedFingerprints(\n options: HostVerifierConfig\n): Promise<Set<string>> {\n const fingerprints = new Set<string>();\n const knownHostsFile = options.knownHostsFile ?? \"~/.ssh/known_hosts\";\n\n if (!options.host) {\n throw new HostVerificationError(\"A host is required for SSH host verification.\");\n }\n\n if (options.hostFingerprint) {\n for (const fingerprint of fingerprintCandidates(options.hostFingerprint)) {\n fingerprints.add(fingerprint);\n }\n }\n\n try {\n await access(expandHome(knownHostsFile));\n const content = await readFile(expandHome(knownHostsFile), \"utf8\");\n for (const line of content.split(/\\r?\\n/)) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"#\") || trimmed.startsWith(\"@\")) {\n continue;\n }\n\n const [hosts, algorithm, key] = trimmed.split(/\\s+/);\n const hostPatterns = hosts?.split(\",\") ?? [];\n const portHost = options.port ? `[${options.host}]:${options.port}` : undefined;\n const matchesHost =\n hostPatterns.includes(options.host) || Boolean(portHost && hostPatterns.includes(portHost));\n if (!hosts || !algorithm || !key || !matchesHost) {\n continue;\n }\n\n const keyBuffer = Buffer.from(key, \"base64\");\n fingerprints.add(createHash(\"sha256\").update(keyBuffer).digest(\"base64\").replace(/=+$/g, \"\"));\n fingerprints.add(createHash(\"sha256\").update(keyBuffer).digest(\"hex\"));\n }\n } catch (error) {\n if (options.knownHostsFile || !options.hostFingerprint) {\n throw new HostVerificationError(\n \"SSH host verification requires hostFingerprint or an accessible knownHostsFile.\",\n { cause: error, context: { knownHostsFile } }\n );\n }\n }\n\n if (fingerprints.size === 0) {\n throw new HostVerificationError(\n `SSH host verification failed before connecting: no matching host fingerprint was configured.${hostVerificationHint(\n options.host\n )}`\n );\n }\n\n return fingerprints;\n}\n\nexport function createHostVerifier(allowedFingerprints: Set<string>) {\n return (hashedKey: string): boolean => {\n for (const expected of allowedFingerprints) {\n if (isFingerprintMatch(hashedKey, expected)) {\n return true;\n }\n }\n return false;\n };\n}\n","import { constants } from \"node:fs\";\nimport { access, mkdir, stat } from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport { FileSystemError, ValidationError } from \"../errors/index.js\";\n\nexport function expandHome(inputPath: string): string {\n if (inputPath === \"~\") {\n return os.homedir();\n }\n if (inputPath.startsWith(`~${path.sep}`) || inputPath.startsWith(\"~/\")) {\n return path.join(os.homedir(), inputPath.slice(2));\n }\n return inputPath;\n}\n\nexport function resolveLocalPath(inputPath: string, baseDir = process.cwd()): string {\n const expanded = expandHome(inputPath);\n return path.isAbsolute(expanded) ? path.normalize(expanded) : path.resolve(baseDir, expanded);\n}\n\nexport async function assertLocalPathExists(inputPath: string): Promise<void> {\n try {\n await access(resolveLocalPath(inputPath), constants.F_OK);\n } catch (error) {\n throw new FileSystemError(`Local path does not exist: ${inputPath}`, {\n cause: error,\n context: { path: inputPath }\n });\n }\n}\n\nexport async function assertLocalFileReadable(inputPath: string): Promise<void> {\n try {\n await access(resolveLocalPath(inputPath), constants.R_OK);\n } catch (error) {\n throw new FileSystemError(`Local file is not readable: ${inputPath}`, {\n cause: error,\n context: { path: inputPath }\n });\n }\n}\n\nexport async function assertDownloadDestination(inputPath: string, createDirectories = false) {\n const resolved = resolveLocalPath(inputPath);\n const parent = path.dirname(resolved);\n\n if (createDirectories) {\n await mkdir(parent, { recursive: true });\n return;\n }\n\n try {\n await access(parent, constants.W_OK);\n } catch (error) {\n throw new FileSystemError(`Local destination parent does not exist or is not writable: ${parent}`, {\n cause: error,\n context: { path: inputPath }\n });\n }\n}\n\nexport async function getLocalPathKind(inputPath: string): Promise<\"file\" | \"directory\"> {\n const stats = await stat(resolveLocalPath(inputPath));\n if (stats.isDirectory()) {\n return \"directory\";\n }\n if (stats.isFile()) {\n return \"file\";\n }\n throw new ValidationError(`Local path must be a file or directory: ${inputPath}`, {\n context: { path: inputPath }\n });\n}\n\nexport async function getLocalFileSize(inputPath: string): Promise<number> {\n const stats = await stat(resolveLocalPath(inputPath));\n return stats.size;\n}\n","import { Client } from \"ssh2\";\nimport type { ClientChannel } from \"ssh2\";\n\nimport {\n ConnectionError,\n HostVerificationError,\n RemoteCommandError,\n toScpNextError\n} from \"../errors/index.js\";\nimport { formatErrorMessage } from \"../security/redact.js\";\nimport type { ExecOptions, ExecResult, ScpServerOptions } from \"../types/index.js\";\nimport { createSshConnectOptions } from \"./ssh-options.js\";\n\nexport interface CommandExecutor {\n connect(options: ScpServerOptions): Promise<void>;\n exec(command: string, options?: ExecOptions): Promise<ExecResult>;\n close(): Promise<void>;\n}\n\nexport class SshCommandExecutor implements CommandExecutor {\n private readonly client: Client;\n private connected = false;\n private closed = true;\n\n constructor(client: Client = new Client()) {\n this.client = client;\n this.client.on(\"error\", () => {\n this.connected = false;\n });\n this.client.on(\"close\", () => {\n this.connected = false;\n this.closed = true;\n });\n }\n\n async connect(options: ScpServerOptions): Promise<void> {\n const connectOptions = await createSshConnectOptions(options);\n this.closed = false;\n\n await new Promise<void>((resolve, reject) => {\n const onReady = () => {\n cleanup();\n this.connected = true;\n resolve();\n };\n const onError = (error: Error) => {\n cleanup();\n this.connected = false;\n this.closed = true;\n try {\n this.client.end();\n } catch {\n // The failed connection may not have a writable socket.\n }\n const converted = toScpNextError(error);\n if (converted instanceof HostVerificationError) {\n reject(converted);\n return;\n }\n reject(\n new ConnectionError(\n `Unable to connect command executor to SSH server: ${formatErrorMessage(error)}`,\n {\n cause: error,\n context: {\n host: options.host,\n port: options.port,\n username: options.username\n }\n }\n )\n );\n };\n const onClose = () => {\n cleanup();\n reject(new ConnectionError(\"SSH connection closed before it was ready.\"));\n };\n const cleanup = () => {\n this.client.off(\"ready\", onReady);\n this.client.off(\"error\", onError);\n this.client.off(\"close\", onClose);\n };\n\n this.client.once(\"ready\", onReady);\n this.client.once(\"error\", onError);\n this.client.once(\"close\", onClose);\n try {\n this.client.connect(connectOptions);\n } catch (error) {\n cleanup();\n this.closed = true;\n reject(\n new ConnectionError(\n `Unable to start SSH connection: ${formatErrorMessage(error)}`\n )\n );\n }\n });\n }\n\n async exec(command: string, options: ExecOptions = {}): Promise<ExecResult> {\n if (!this.connected) {\n throw new ConnectionError(\"Command executor is not connected.\");\n }\n\n return new Promise<ExecResult>((resolve, reject) => {\n try {\n this.client.exec(command, (error, stream) => {\n if (error) {\n reject(\n new RemoteCommandError(\"Unable to start remote command.\", {\n exitCode: null\n })\n );\n return;\n }\n collectCommandResult(command, stream, options, resolve, reject);\n });\n } catch (error) {\n reject(\n new ConnectionError(\n `Unable to start remote command: ${formatErrorMessage(error)}`\n )\n );\n }\n });\n }\n\n async close(): Promise<void> {\n if (this.closed) {\n return;\n }\n\n this.connected = false;\n await new Promise<void>((resolve) => {\n this.client.once(\"close\", resolve);\n this.client.end();\n });\n }\n}\n\nfunction collectCommandResult(\n command: string,\n stream: ClientChannel,\n options: ExecOptions,\n resolve: (result: ExecResult) => void,\n reject: (error: RemoteCommandError) => void\n): void {\n let stdout = \"\";\n let stderr = \"\";\n let outputBytes = 0;\n let settled = false;\n const maxBuffer = options.maxBuffer ?? 10 * 1024 * 1024;\n const cleanup = () => {\n if (timer) clearTimeout(timer);\n stream.off(\"data\", onStdoutData);\n stream.stderr.off(\"data\", onStderrData);\n stream.off(\"close\", onClose);\n stream.off(\"error\", onStreamError);\n stream.stderr.off(\"error\", onStreamError);\n };\n const fail = (error: RemoteCommandError) => {\n if (settled) return;\n settled = true;\n cleanup();\n try {\n stream.close();\n } catch {\n // The connection may already be closed.\n }\n reject(error);\n };\n const appendOutput = (target: \"stdout\" | \"stderr\", chunk: string) => {\n outputBytes += Buffer.byteLength(chunk);\n if (outputBytes > maxBuffer) {\n fail(\n new RemoteCommandError(\n `Remote command output exceeded maxBuffer of ${maxBuffer} bytes.`,\n {\n exitCode: null,\n stdout,\n stderr\n }\n )\n );\n return;\n }\n if (target === \"stdout\") stdout += chunk;\n else stderr += chunk;\n };\n const onStreamError = () => {\n fail(\n new RemoteCommandError(\"Remote command stream failed.\", {\n exitCode: null,\n stdout,\n stderr\n })\n );\n };\n const onStdoutData = (chunk: string) => {\n appendOutput(\"stdout\", chunk);\n };\n const onStderrData = (chunk: string) => {\n appendOutput(\"stderr\", chunk);\n };\n const onClose = (exitCode: number | null | undefined, signal: string | undefined) => {\n if (settled) return;\n settled = true;\n cleanup();\n resolve({\n command,\n stdout,\n stderr,\n exitCode: typeof exitCode === \"number\" ? exitCode : null,\n ...(signal ? { signal } : {})\n });\n };\n const timer =\n options.timeout === undefined\n ? undefined\n : setTimeout(() => {\n fail(\n new RemoteCommandError(\n `Remote command timed out after ${options.timeout} ms.`,\n {\n exitCode: null,\n stdout,\n stderr\n }\n )\n );\n }, options.timeout);\n\n stream.setEncoding(\"utf8\");\n stream.stderr.setEncoding(\"utf8\");\n stream.on(\"data\", onStdoutData);\n stream.stderr.on(\"data\", onStderrData);\n stream.once(\"error\", onStreamError);\n stream.stderr.once(\"error\", onStreamError);\n stream.once(\"close\", onClose);\n}\n","import { readdir, stat } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nimport type { RemoteFileInfo, SftpTransport } from \"./transport.js\";\nimport { resolveLocalPath } from \"../paths/local-path.js\";\nimport { remoteJoin } from \"../paths/remote-path.js\";\n\nexport interface LocalFileEntry {\n absolutePath: string;\n relativePath: string;\n size: number;\n}\n\nexport async function walkLocalFiles(rootPath: string): Promise<LocalFileEntry[]> {\n const resolvedRoot = resolveLocalPath(rootPath);\n const stats = await stat(resolvedRoot);\n\n if (stats.isFile()) {\n return [\n {\n absolutePath: resolvedRoot,\n relativePath: path.basename(resolvedRoot),\n size: stats.size\n }\n ];\n }\n\n const files: LocalFileEntry[] = [];\n\n async function visit(directory: string): Promise<void> {\n const entries = await readdir(directory, { withFileTypes: true });\n for (const entry of entries) {\n const absolutePath = path.join(directory, entry.name);\n if (entry.isDirectory()) {\n await visit(absolutePath);\n } else if (entry.isFile()) {\n const entryStats = await stat(absolutePath);\n files.push({\n absolutePath,\n relativePath: path.relative(resolvedRoot, absolutePath),\n size: entryStats.size\n });\n }\n }\n }\n\n await visit(resolvedRoot);\n return files;\n}\n\nexport interface RemoteFileEntry {\n remotePath: string;\n relativePath: string;\n size: number;\n}\n\nexport async function walkRemoteFiles(\n transport: SftpTransport,\n rootPath: string\n): Promise<RemoteFileEntry[]> {\n const rootEntries = await transport.list(rootPath);\n const files: RemoteFileEntry[] = [];\n\n async function visit(directory: string, relativeBase: string, entries: RemoteFileInfo[]): Promise<void> {\n for (const entry of entries) {\n const fullPath = remoteJoin(directory, entry.name);\n const relativePath = relativeBase ? remoteJoin(relativeBase, entry.name) : entry.name;\n if (entry.type === \"d\") {\n await visit(fullPath, relativePath, await transport.list(fullPath));\n } else if (entry.type === \"-\") {\n files.push({\n remotePath: fullPath,\n relativePath,\n size: entry.size\n });\n }\n }\n }\n\n await visit(rootPath, \"\", rootEntries);\n return files;\n}\n","import path from \"node:path\";\n\nimport { ValidationError } from \"../errors/index.js\";\n\nexport function assertRemotePath(inputPath: string, label = \"remote path\"): void {\n if (!inputPath || inputPath.trim().length === 0) {\n throw new ValidationError(`Invalid ${label}: remote paths must not be empty.`, {\n context: { path: inputPath }\n });\n }\n}\n\nexport function normalizeRemotePath(inputPath: string): string {\n assertRemotePath(inputPath);\n return path.posix.normalize(inputPath.replace(/\\\\/g, \"/\"));\n}\n\nexport function restoreMsysConvertedRemotePath(inputPath: string): string {\n const normalized = inputPath.replace(/\\\\/g, \"/\");\n const match = /^[A-Za-z]:\\/(?:Program Files\\/Git|Program Files \\(x86\\)\\/Git|Git|msys64)\\/(.+)$/i.exec(\n normalized\n );\n\n return match ? `/${match[1]}` : inputPath;\n}\n\nexport function remoteJoin(...parts: string[]): string {\n const joined = path.posix.join(...parts);\n assertRemotePath(joined);\n return joined;\n}\n\nexport function remoteDirname(inputPath: string): string {\n assertRemotePath(inputPath);\n return path.posix.dirname(inputPath);\n}\n","import { access } from \"node:fs/promises\";\n\nimport { ValidationError } from \"../errors/index.js\";\nimport { assertDownloadDestination, assertLocalPathExists, resolveLocalPath } from \"../paths/local-path.js\";\nimport { assertRemotePath } from \"../paths/remote-path.js\";\nimport type { DownloadOptions, ScpServerOptions, UploadOptions } from \"../types/index.js\";\nimport { getPostUploadCommands } from \"./post-upload-commands.js\";\n\nfunction validatePort(port: number | undefined): void {\n if (port === undefined) {\n return;\n }\n if (!Number.isInteger(port) || port < 1 || port > 65535) {\n throw new ValidationError(\"Port must be an integer between 1 and 65535.\", {\n context: { port }\n });\n }\n}\n\nfunction validateTimeout(timeout: number | undefined): void {\n if (timeout === undefined) {\n return;\n }\n if (!Number.isFinite(timeout) || timeout <= 0) {\n throw new ValidationError(\"Timeout must be a positive number.\", {\n context: { timeout }\n });\n }\n}\n\nexport async function validateServerOptions(options: ScpServerOptions): Promise<void> {\n if (!options.host) {\n throw new ValidationError(\"Host is required.\");\n }\n if (!options.username) {\n throw new ValidationError(\"Username is required.\");\n }\n\n validatePort(options.port);\n validateTimeout(options.timeout);\n\n if (options.privateKeyFile) {\n try {\n await access(resolveLocalPath(options.privateKeyFile));\n } catch (error) {\n throw new ValidationError(`Private key file does not exist: ${options.privateKeyFile}`, {\n cause: error,\n context: { privateKeyFile: options.privateKeyFile }\n });\n }\n }\n\n const hasAuthentication =\n Boolean(options.password) ||\n Boolean(options.privateKey) ||\n Boolean(options.privateKeyFile) ||\n Boolean(options.agent) ||\n Boolean(process.env.SSH_AUTH_SOCK);\n\n if (!hasAuthentication) {\n throw new ValidationError(\n \"Authentication is required. Provide a password, private key, private key file, or SSH agent.\"\n );\n }\n}\n\nexport async function validateUploadOptions(options: UploadOptions): Promise<void> {\n if (!options.localPath) {\n throw new ValidationError(\"Missing localPath.\");\n }\n if (!options.remotePath) {\n throw new ValidationError(\"Missing remotePath.\");\n }\n assertRemotePath(options.remotePath, \"remotePath\");\n validateTimeout(options.timeout);\n getPostUploadCommands(options);\n await assertLocalPathExists(options.localPath);\n\n if (!options.dryRun) {\n await validateServerOptions(options);\n }\n}\n\nexport async function validateDownloadOptions(options: DownloadOptions): Promise<void> {\n if (!options.remotePath) {\n throw new ValidationError(\"Missing remotePath.\");\n }\n if (!options.localPath) {\n throw new ValidationError(\"Missing localPath.\");\n }\n assertRemotePath(options.remotePath, \"remotePath\");\n validateTimeout(options.timeout);\n if (getPostUploadCommands(options)?.length) {\n throw new ValidationError(\"Post-upload commands are not supported for downloads.\");\n }\n await assertDownloadDestination(options.localPath, options.createDirectories ?? true);\n\n if (!options.dryRun) {\n await validateServerOptions(options);\n }\n}\n","import { ValidationError } from \"../errors/index.js\";\n\nfunction isPostUploadCommands(value: unknown): value is string[] {\n return (\n Array.isArray(value) &&\n value.every(\n (command: unknown): command is string =>\n typeof command === \"string\" && command.trim().length > 0\n )\n );\n}\n\nexport function getPostUploadCommands(\n source: unknown\n): string[] | undefined {\n const commands: unknown = readPostUploadCommands(source);\n if (commands === undefined) {\n return undefined;\n }\n if (!isPostUploadCommands(commands)) {\n throw new ValidationError(\n \"postUploadCommands must be an array of non-empty command strings.\"\n );\n }\n return commands;\n}\n\nexport function readPostUploadCommands(\n source: unknown\n): unknown {\n if (typeof source !== \"object\" || source === null) {\n return undefined;\n }\n\n return (source as { postUploadCommands?: unknown })\n .postUploadCommands;\n}\n\nexport function clearPostUploadCommands(source: object): void {\n (source as { postUploadCommands?: string[] | undefined }).postUploadCommands =\n undefined;\n}\n","import { ScpNextClientImpl } from \"./client.js\";\nimport type { ExecResult, UploadOptions } from \"../types/index.js\";\n\nexport async function upload(options: UploadOptions): Promise<ExecResult[]> {\n const client = new ScpNextClientImpl(options);\n let result: ExecResult[];\n try {\n result = await client.upload(options.localPath, options.remotePath, options);\n } catch (error) {\n try {\n await client.close();\n } catch {\n // Preserve the upload or command failure as the primary error.\n }\n throw error;\n }\n await client.close();\n return result;\n}\n","import { ScpNextClientImpl } from \"./client.js\";\nimport type { DownloadOptions } from \"../types/index.js\";\n\nexport async function download(options: DownloadOptions): Promise<void> {\n const client = new ScpNextClientImpl(options);\n try {\n await client.download(options.remotePath, options.localPath, options);\n } finally {\n await client.close();\n }\n}\n","import { download } from \"./download.js\";\nimport { upload } from \"./upload.js\";\nimport { ValidationError } from \"../errors/index.js\";\nimport type { CopyOptions } from \"../types/index.js\";\n\nexport async function copy(options: CopyOptions): Promise<void> {\n if (options.source.type === \"local\" && options.destination.type === \"remote\") {\n await upload({\n ...options,\n localPath: options.source.path,\n remotePath: options.destination.path\n });\n return;\n }\n\n if (options.source.type === \"remote\" && options.destination.type === \"local\") {\n await download({\n ...options,\n remotePath: options.source.path,\n localPath: options.destination.path\n });\n return;\n }\n\n throw new ValidationError(\"copy() supports only local-to-remote or remote-to-local transfers.\", {\n context: {\n sourceType: options.source.type,\n destinationType: options.destination.type\n }\n });\n}\n"],"mappings":"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","names":["access","mkdir","stat","path","readFile","access","access","readFile","stat","path","path","path","path","stat","path","access","access","path","stat","mkdir","totalBytes","access"]}
1
+ {"version":3,"file":"index.js","sources":["../src/security/redact.ts","../src/errors/index.ts","../src/paths/local-path.ts","../src/security/host-verification.ts","../src/client/ssh-options.ts","../src/client/transport.ts","../src/client/command-executor.ts","../src/paths/remote-path.ts","../src/client/walk.ts","../src/config/post-upload-commands.ts","../src/config/validation.ts","../src/client/client.ts","../src/client/upload.ts","../src/client/download.ts","../src/client/copy.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
@@ -20,9 +20,25 @@
20
20
  - `commander`: small CLI parser with solid help/version support.
21
21
  - `mazey`: shared utilities for defined-value assignment and byte-size formatting.
22
22
  - `zod`: validates configuration file shape without exposing schema objects in the public API.
23
- - `tsup`: emits ESM, CommonJS, declarations, and source maps with minimal packaging overhead.
23
+ - `rollup`: emits ESM, CommonJS, declarations, the CLI entry, and source maps while keeping
24
+ runtime dependencies external.
25
+ - `webpack`: builds only the public website and interactive example generator.
26
+ - `typedoc`: generates API documentation before the deterministic Pages assembly step.
27
+ - `bootstrap`: provides the website layout and color-mode foundation as a development dependency.
24
28
  - `vitest`: fast TypeScript-friendly unit and integration tests.
25
29
 
30
+ ## Website Build Boundary
31
+
32
+ `project.config.js` derives package identity, repository URLs, GitHub Pages routes, SEO metadata,
33
+ theme colors, and PWA settings from package metadata. Webpack injects only a browser-safe runtime
34
+ subset into `site/`; package source under `src/` never imports website configuration.
35
+
36
+ Rollup remains the sole npm package bundler. Webpack emits the homepage and `/examples/` route to
37
+ `dist-dev/`, TypeDoc emits API HTML to `.pages-api/`, and `scripts/build-pages.js` assembles both
38
+ into `docs/`. The assembly step also transforms TypeDoc HTML and generates crawler, manifest,
39
+ icon, and service-worker files. These output directories are generated and must not be edited by
40
+ hand.
41
+
26
42
  ## Transfer Terminology
27
43
 
28
44
  CLI commands always use `<source> <destination>`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scp-next",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
4
4
  "description": "An SCP CLI and library for secure SSH file transfers using SFTP.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -8,9 +8,14 @@
8
8
  "types": "./dist/index.d.ts",
9
9
  "exports": {
10
10
  ".": {
11
- "types": "./dist/index.d.ts",
12
- "import": "./dist/index.js",
13
- "require": "./dist/index.cjs"
11
+ "import": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/index.d.cts",
17
+ "default": "./dist/index.cjs"
18
+ }
14
19
  },
15
20
  "./package.json": "./package.json"
16
21
  },
@@ -25,17 +30,25 @@
25
30
  "guides"
26
31
  ],
27
32
  "scripts": {
28
- "build": "tsup",
29
- "clean": "rimraf dist docs coverage",
30
- "dev": "tsx src/cli/index.ts",
33
+ "build": "rollup --config ./scripts/rollup.config.mjs",
34
+ "build:dev": "webpack --config ./scripts/webpack.config.dev.js",
35
+ "build:site": "cross-env GITHUB_PAGES=true webpack --mode production --config ./scripts/webpack.config.dev.js",
36
+ "clean": "rimraf dist dist-dev .pages-api docs coverage",
37
+ "dev": "webpack serve --config ./scripts/webpack.config.dev.js",
38
+ "cli:dev": "tsx src/cli/index.ts",
31
39
  "lint": "eslint .",
32
40
  "format": "prettier --write .",
33
41
  "format:check": "prettier --check .",
34
- "docs:build": "npm run docs:links && node scripts/build-pages.js",
42
+ "docs": "npm run docs:links && typedoc --out .pages-api --entryPoints src/index.ts --readme README.md --excludeProtected --excludePrivate --excludeInternal --hideGenerator && npm run build:site && node scripts/build-pages.js && npm run seo:validate && npm run pwa:validate",
43
+ "docs:build": "npm run docs",
35
44
  "docs:links": "node scripts/validate-doc-links.js",
45
+ "seo:validate": "node scripts/validate-seo.js",
46
+ "pwa:validate": "node scripts/validate-pwa.js",
47
+ "pages:preview": "npm run docs && node scripts/preview-pages.js",
48
+ "preview": "npm run typecheck && npm run lint && npm test && npm run build && npm run docs",
36
49
  "test": "vitest run",
37
50
  "test:coverage": "vitest run --coverage",
38
- "typecheck": "tsc --noEmit",
51
+ "typecheck": "tsc --noEmit && tsc --noEmit --project tsconfig.site.json",
39
52
  "prepublishOnly": "npm run clean && npm run typecheck && npm run lint && npm test && npm run build"
40
53
  },
41
54
  "keywords": [
@@ -65,25 +78,39 @@
65
78
  },
66
79
  "dependencies": {
67
80
  "commander": "^12.1.0",
68
- "mazey": "^5.5.0",
81
+ "mazey": "^5.6.1",
69
82
  "ssh2": "^1.17.0",
70
83
  "ssh2-sftp-client": "^11.0.0",
71
84
  "zod": "^3.23.8"
72
85
  },
73
86
  "devDependencies": {
74
87
  "@eslint/js": "^9.17.0",
88
+ "@rollup/plugin-node-resolve": "^16.0.3",
89
+ "@rollup/plugin-typescript": "^12.3.0",
75
90
  "@types/node": "^22.10.2",
76
91
  "@types/ssh2": "^1.15.5",
77
92
  "@types/ssh2-sftp-client": "^9.0.4",
78
93
  "@vitest/coverage-v8": "^4.1.9",
94
+ "bootstrap": "5.3.8",
95
+ "cross-env": "^10.1.0",
96
+ "css-loader": "^7.1.4",
79
97
  "eslint": "^9.17.0",
98
+ "html-webpack-plugin": "^5.6.7",
99
+ "mini-css-extract-plugin": "^2.10.2",
80
100
  "prettier": "^3.4.2",
81
101
  "rimraf": "^6.0.1",
82
- "tsup": "^8.3.5",
102
+ "rollup": "^4.62.2",
103
+ "rollup-plugin-dts": "^6.4.1",
104
+ "ts-loader": "^9.6.2",
105
+ "tslib": "^2.8.1",
106
+ "typedoc": "^0.28.20",
83
107
  "tsx": "^4.19.2",
84
108
  "typescript": "^5.7.2",
85
109
  "typescript-eslint": "^8.18.1",
86
- "vitest": "^4.1.9"
110
+ "vitest": "^4.1.9",
111
+ "webpack": "^5.108.4",
112
+ "webpack-cli": "^7.2.1",
113
+ "webpack-dev-server": "^6.0.0"
87
114
  },
88
115
  "overrides": {
89
116
  "esbuild": "^0.28.1"