@jalsoedesign/filezilla-cli 1.1.0 → 1.2.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,7 +8,9 @@ Find saved FileZilla connection details from your terminal. Search by site name,
8
8
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
9
9
  [![CI](https://github.com/h2ooooooo/filezilla-js/actions/workflows/ci.yml/badge.svg)](https://github.com/h2ooooooo/filezilla-js/actions/workflows/ci.yml)
10
10
 
11
- Command-line interface for querying FileZilla `sitemanager.xml` files and optionally checking a connection without remote mutations. Metadata queries use [`@jalsoedesign/filezilla-core`](../core/README.md); the opt-in check uses the public FTP/SFTP connectors.
11
+ Command-line interface for querying FileZilla `sitemanager.xml` files and optionally checking a connection without remote mutations. Metadata queries use [`@jalsoedesign/filezilla-core`](../core/README.md); the opt-in check uses the shared Portline–Dockline bridge. Install the matching Dockline protocol client before checking a connection.
12
+
13
+ The CLI package does not install FTP/SFTP clients automatically. Use `npm install @jalsoedesign/filezilla-cli@rc @jalsoedesign/dockline-sftp-client@rc` for local SFTP checks, or select `@jalsoedesign/dockline-ftp-client@rc` for FTP/FTPS. A missing client reports `client-not-installed` with exit code `5` and the required installation command. SDK SSH command sessions use the shared bridge's `withSsh` API and the optional SSH client; they are not a new FileZilla CLI subcommand.
12
14
 
13
15
  ## Why
14
16
 
@@ -19,7 +21,7 @@ Connection details already live in FileZilla. This CLI lets you query them direc
19
21
  Use Node `^22.22.2 || ^24.15.0 || >=26.0.0`. Install from the public npm registry.
20
22
 
21
23
  ```bash
22
- npm install -g @jalsoedesign/filezilla-cli
24
+ npm install -g @jalsoedesign/filezilla-cli@rc
23
25
  ```
24
26
 
25
27
  ## Quick start
@@ -27,12 +29,12 @@ npm install -g @jalsoedesign/filezilla-cli
27
29
  Search your usual FileZilla configuration; the CLI finds it automatically on Windows, macOS and Linux.
28
30
 
29
31
  ```sh
30
- filezilla-js --search ordlab --show-password
31
- filezilla-js --search 206.189.28.138 --show-password
32
- filezilla-js search "squarechilli.co.uk" --json
32
+ filezilla-js --search clientName --show-password
33
+ filezilla-js --search 10.2.3.4 --show-password
34
+ filezilla-js search admin-user --json
33
35
  ```
34
36
 
35
- Each match gets a Label/Value table with Name, Path, Protocol, Host, Port, Username, Password and Remote. Passwords are hidden unless you pass `--show-password`. Use `--file <path>` to search another Site Manager XML file.
37
+ Each match gets a Label/Value table with Name, Path, Protocol, Host, Port, Username, Password, Private key and Remote. The private-key path is shown without `--show-password`; the key file itself is not read. Passwords are hidden unless you pass `--show-password`. Use `--file <path>` to search another Site Manager XML file.
36
38
 
37
39
  Search matches a case-insensitive substring across all loaded fields, including passwords, comments, local directories and decoded remote directories. It does not connect to the servers. JSON output is an array, including `[]` when nothing matches. The existing `list --search` and `get --search` options search names and folder paths.
38
40
 
@@ -214,3 +216,7 @@ See [connection checks](https://h2ooooooo.github.io/filezilla-js/guide/connectio
214
216
  ## License
215
217
 
216
218
  MIT © [JalsoeDesign](https://www.jalsoedesign.net)
219
+
220
+ Profile writing uses write/sync to produce previews, write-status to inspect availability and explicit apply to commit a reviewed plan with fresh guards. See the complete CLI input/output reference in the documentation.
221
+
222
+ Interactive SFTP checks can omit `--host-key-sha256` and approve the displayed server key. Redirected input and unattended runs require a pin. Approvals last only for the bridge instance and are not saved to disk.
@@ -1,7 +1,7 @@
1
1
  import { type Server } from '@jalsoedesign/filezilla-core';
2
- import { type ConnectionStage } from '@jalsoedesign/filezilla-connector-abstract';
2
+ import { type ConnectionStage } from '@jalsoedesign/dockline-abstract';
3
3
  export type ConnectionCheckStage = ConnectionStage | 'input' | 'list' | 'cleanup';
4
- export type ConnectionCheckStatus = 'ok' | 'invalid-options' | 'trust-rejected' | 'authentication-failed' | 'unsupported-protocol' | 'connection-failed' | 'directory-failed' | 'credentials-required' | 'invalid-site' | 'cleanup-failed' | 'listing-limit' | 'cancelled' | 'timeout';
4
+ export type ConnectionCheckStatus = 'ok' | 'invalid-options' | 'trust-rejected' | 'authentication-failed' | 'unsupported-protocol' | 'connection-failed' | 'directory-failed' | 'credentials-required' | 'invalid-site' | 'client-not-installed' | 'cleanup-failed' | 'listing-limit' | 'cancelled' | 'timeout';
5
5
  export interface ConnectionCheckResult {
6
6
  readonly schemaVersion: 1;
7
7
  readonly ok: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4C,KAAK,MAAM,EAAC,MAAM,8BAA8B,CAAC;AAGpG,OAAO,EAaH,KAAK,eAAe,EAGvB,MAAM,4CAA4C,CAAC;AAEpD,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAClF,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,uBAAuB,GACrG,sBAAsB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,sBAAsB,GAC1F,cAAc,GAAG,gBAAgB,GAAG,eAAe,GAAG,WAAW,GAAG,SAAS,CAAC;AAElF,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;CACxG;AAED,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACtC;AAsMD,2FAA2F;AAC3F,wBAAsB,eAAe,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACrC,OAAO,CAAC,qBAAqB,CAAC,CA2GhC;AAyHD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EnE"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiE,KAAK,MAAM,EAAC,MAAM,8BAA8B,CAAC;AAEzH,OAAO,EAA0O,KAAK,eAAe,EAAyD,MAAM,iCAAiC,CAAC;AAEtW,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAClF,MAAM,MAAM,qBAAqB,GAAG,IAAI,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,uBAAuB,GACrG,sBAAsB,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,sBAAsB,GAC1F,cAAc,GAAG,sBAAsB,GAAG,gBAAgB,GAAG,eAAe,GAAG,WAAW,GAAG,SAAS,CAAC;AAE3G,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;CACxG;AAED,MAAM,WAAW,sBAAsB;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACtC;AAyND,2FAA2F;AAC3F,wBAAsB,eAAe,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,sBAA2B,GACrC,OAAO,CAAC,qBAAqB,CAAC,CA2GhC;AAyHD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4EnE"}
@@ -1,10 +1,9 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { join } from 'node:path';
4
- import { getSiteManager, LogonType, ServerProtocol } from '@jalsoedesign/filezilla-core';
5
- import { FtpConnectorFactory } from '@jalsoedesign/filezilla-connector-ftp';
6
- import { SftpConnectorFactory } from '@jalsoedesign/filezilla-connector-sftp';
7
- import { AuthError, ConnectorError, CredentialProviderError, DirectoryAccessError, HostTrustError, NotFoundError, NotSupportedError, OperationAbortedError, OperationTimeoutError, PermissionError, ResourceLimitError, UnsupportedProtocolError, } from '@jalsoedesign/filezilla-connector-abstract';
4
+ import { getSiteManager, LogonType, ServerProtocol, toConnectionProfile } from '@jalsoedesign/filezilla-core';
5
+ import { createDocklineBridge, ProfileExecutionError } from '@jalsoedesign/portline-dockline';
6
+ import { AuthError, ConnectorError, CredentialProviderError, DirectoryAccessError, HostTrustError, NotFoundError, NotSupportedError, OperationAbortedError, OperationTimeoutError, PermissionError, ResourceLimitError, UnsupportedProtocolError } from '@jalsoedesign/dockline-abstract';
8
7
  const outcomes = {
9
8
  ok: { exitCode: 0, message: 'Connection check completed.' },
10
9
  'invalid-options': { exitCode: 2, message: 'Invalid check options. Run filezilla-js check --help.' },
@@ -15,6 +14,7 @@ const outcomes = {
15
14
  'directory-failed': { exitCode: 7, message: 'The requested directory could not be accessed.' },
16
15
  'credentials-required': { exitCode: 8, message: 'Credentials are unavailable. Supply a saved credential or --password-stdin.' },
17
16
  'invalid-site': { exitCode: 9, message: 'The Site Manager file or exact site selection is invalid or unavailable.' },
17
+ 'client-not-installed': { exitCode: 5, message: 'Install the Dockline client required by this connection.' },
18
18
  'cleanup-failed': { exitCode: 10, message: 'The check completed but connection cleanup did not finish successfully.' },
19
19
  'listing-limit': { exitCode: 11, message: 'The optional listing exceeded its configured entry limit.' },
20
20
  cancelled: { exitCode: 130, message: 'Connection check cancelled.' },
@@ -62,6 +62,20 @@ function safeStage(error, fallback) {
62
62
  }
63
63
  function failure(error, stage, connected) {
64
64
  const actualStage = safeStage(error, stage);
65
+ if (error instanceof ProfileExecutionError) {
66
+ if (error.code === 'MISSING_HANDLER') {
67
+ return { ...result('client-not-installed', actualStage, connected), message: error.message };
68
+ }
69
+ const bridgeStatuses = {
70
+ MISSING_CREDENTIAL: 'credentials-required',
71
+ MISSING_TRUST: 'trust-rejected',
72
+ UNSUPPORTED_PROFILE: 'unsupported-protocol',
73
+ CONNECTION_SELECTION_REQUIRED: 'unsupported-protocol',
74
+ INVALID_PROFILE: 'invalid-site',
75
+ PROFILE_NOT_FOUND: 'invalid-site',
76
+ };
77
+ return result(bridgeStatuses[error.code] ?? 'connection-failed', actualStage, connected);
78
+ }
65
79
  if (error instanceof OperationTimeoutError) {
66
80
  return result('timeout', actualStage, connected);
67
81
  }
@@ -122,36 +136,35 @@ function validateSiteSelection(server, options) {
122
136
  if (![LogonType.anonymous, LogonType.normal, LogonType.ask, LogonType.key].includes(logonType)) {
123
137
  throw new NotSupportedError('Unsupported saved authentication mode.');
124
138
  }
125
- if (protocol === ServerProtocol.SFTP && !/^SHA256:[A-Za-z0-9+/]{43}=?$/.test(options.hostKeySha256 ?? '')) {
139
+ if (protocol === ServerProtocol.SFTP &&
140
+ (options.hostKeySha256 === undefined ?
141
+ !(process.stdin.isTTY && process.stderr.isTTY) :
142
+ !/^SHA256:[A-Za-z0-9+/]{43}=?$/.test(options.hostKeySha256))) {
126
143
  throw new HostTrustError();
127
144
  }
128
145
  if (protocol !== ServerProtocol.SFTP && options.hostKeySha256 !== undefined) {
129
146
  throw new TypeError('SSH host-key pinning is only applicable to SFTP.');
130
147
  }
131
148
  }
132
- function createConnector(server, options) {
149
+ async function createConnector(server, options) {
133
150
  validateSiteSelection(server, options);
134
151
  const protocol = server.propertiesRaw.protocol;
135
152
  const logonType = server.propertiesRaw.logonType;
136
153
  const password = options.password ?? server.propertiesRaw.password;
137
- const operationOptions = { autoReconnect: false, maxTransientRetries: 0, timeoutMs: options.timeoutMs ?? 30000 };
154
+ const operationOptions = {
155
+ autoReconnect: false,
156
+ maxTransientRetries: 0,
157
+ timeoutMs: options.timeoutMs ?? 30000,
158
+ abortSignal: options.abortSignal,
159
+ };
138
160
  if (logonType !== LogonType.anonymous && logonType !== LogonType.key && password === undefined) {
139
161
  throw new CredentialProviderError();
140
162
  }
141
- if (protocol === ServerProtocol.SFTP) {
142
- const expected = options.hostKeySha256.replace(/=$/, '');
143
- return SftpConnectorFactory.fromServer(server, {
144
- ...operationOptions,
145
- password,
146
- passphrase: password,
147
- requireTrustPolicy: true,
148
- hasTrustPolicy: challenge => challenge.fingerprint === expected,
149
- acceptTrustPolicy: () => false,
150
- });
151
- }
152
- return FtpConnectorFactory.fromServer(server, {
163
+ return createDocklineBridge().createFileAdapter(toConnectionProfile(server), {
153
164
  ...operationOptions,
154
- ...(password === undefined ? {} : { credentialProvider: () => ({ type: 'password', password }) }),
165
+ password: logonType === LogonType.key || logonType === LogonType.anonymous ? undefined : password,
166
+ passphrase: logonType === LogonType.key ? password : undefined,
167
+ hostFingerprint: protocol === ServerProtocol.SFTP ? options.hostKeySha256?.replace(/=$/, '') : undefined,
155
168
  });
156
169
  }
157
170
  /** Ordinary read-only connector operations with fixed, credential-free result messages. */
@@ -174,7 +187,7 @@ export async function checkConnection(server, options = {}) {
174
187
  if (signal.aborted) {
175
188
  throw interruption(signal);
176
189
  }
177
- connector = createConnector(server, options);
190
+ connector = await abortable(createConnector(server, { ...options, abortSignal: signal }), signal);
178
191
  stage = 'connect';
179
192
  const operationOptions = {
180
193
  timeoutMs: options.timeoutMs ?? 30000,
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { CommandHandler } from '../types.js';
1
+ import type { CommandHandler } from '../types.js';
2
2
  export declare const getCommand: CommandHandler;
3
3
  //# sourceMappingURL=get.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../src/commands/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,cAAc,EAAe,MAAM,aAAa,CAAC;AAEzE,eAAO,MAAM,UAAU,EAAE,cAyExB,CAAC"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../src/commands/get.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAGhD,eAAO,MAAM,UAAU,EAAE,cAAgE,CAAC"}
@@ -1,67 +1,4 @@
1
- import { formatOutput } from '../types.js';
2
- export const getCommand = async (ctx) => {
3
- let server;
4
- let propertyName;
5
- if (ctx.options.search) {
6
- const matches = ctx.siteManager.searchServers(ctx.options.search);
7
- if (matches.length === 0) {
8
- throw new Error(`Could not find server matching "${ctx.options.search}"`);
9
- }
10
- else if (matches.length > 1) {
11
- throw new Error(`Multiple servers found matching "${ctx.options.search}". Please be more specific or use list --search.`);
12
- }
13
- server = matches[0];
14
- propertyName = ctx.args[0];
15
- }
16
- else {
17
- const serverPath = ctx.args[0];
18
- if (!serverPath) {
19
- throw new Error('No server path specified');
20
- }
21
- server = ctx.siteManager.getServerByPath(serverPath);
22
- if (!server) {
23
- throw new Error(`Could not find server by path "${serverPath}"`);
24
- }
25
- propertyName = ctx.args[1];
26
- }
27
- if (propertyName) {
28
- let value;
29
- if (propertyName === 'remoteDirectory') {
30
- value = server.getRemoteDirectory();
31
- }
32
- else if (propertyName === 'protocolName') {
33
- value = server.siteProtocolName;
34
- }
35
- else {
36
- value = server.properties[propertyName];
37
- }
38
- if (value === undefined) {
39
- throw new Error(`Property "${propertyName}" not found on server`);
40
- }
41
- if (propertyName === 'password' && !ctx.options.showPassword) {
42
- value = '(hidden)';
43
- }
44
- formatOutput(value, ctx.options);
45
- }
46
- else {
47
- const properties = { ...server.properties };
48
- if (!ctx.options.showPassword) {
49
- properties.password = '(hidden)';
50
- }
51
- if (ctx.options.json || ctx.options.table) {
52
- const data = { ...properties, protocolName: server.siteProtocolName };
53
- const tableData = {
54
- columns: ['Property', 'Value'],
55
- rows: [
56
- ...Object.entries(properties),
57
- ['protocolName', server.siteProtocolName],
58
- ],
59
- };
60
- formatOutput(data, ctx.options, tableData);
61
- }
62
- else {
63
- formatOutput(properties, ctx.options);
64
- }
65
- }
66
- };
1
+ import { getCommand as runCommand } from '@jalsoedesign/portline-cli';
2
+ import { fileZillaCommandContext } from '../source.js';
3
+ export const getCommand = ctx => runCommand(fileZillaCommandContext(ctx));
67
4
  //# sourceMappingURL=get.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/commands/get.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/commands/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,IAAI,UAAU,EAAC,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAC,uBAAuB,EAAC,MAAM,cAAc,CAAC;AAErD,MAAM,CAAC,MAAM,UAAU,GAAmB,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
- import { CommandHandler } from '../types.js';
1
+ import type { CommandHandler } from '../types.js';
2
2
  export declare const listCommand: CommandHandler;
3
3
  //# sourceMappingURL=list.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,cAAc,EAAe,MAAM,aAAa,CAAC;AAEzE,eAAO,MAAM,WAAW,EAAE,cAoDzB,CAAC"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAGhD,eAAO,MAAM,WAAW,EAAE,cAAgE,CAAC"}
@@ -1,62 +1,4 @@
1
- import { formatOutput } from '../types.js';
2
- export const listCommand = async (ctx) => {
3
- let servers = ctx.siteManager.getServers();
4
- if (ctx.options.search) {
5
- servers = ctx.siteManager.searchServers(ctx.options.search);
6
- }
7
- if (ctx.options.recurse && !ctx.options.json) {
8
- throw new Error('--recurse option requires --json');
9
- }
10
- if (ctx.options.json || ctx.options.table) {
11
- if (ctx.options.recurse && ctx.options.json) {
12
- const tree = ctx.siteManager.getServersTree(servers);
13
- const data = transformTree(tree, ctx.options);
14
- formatOutput(data, ctx.options);
15
- return;
16
- }
17
- const data = servers.map((server) => {
18
- if (ctx.options.full) {
19
- return fullProperties(server, ctx.options);
20
- }
21
- return {
22
- path: server.path,
23
- host: server.propertiesRaw.host,
24
- protocol: server.siteProtocolName,
25
- };
26
- });
27
- const tableData = ctx.options.full ? {
28
- columns: ['Path', 'Property', 'Value'],
29
- rows: data.flatMap(properties => Object.entries(properties)
30
- .filter(([key]) => key !== 'path')
31
- .map(([key, value]) => [properties.path, key, value])),
32
- } : {
33
- columns: ['Path', 'Host', 'Protocol'],
34
- rows: servers.map(server => [server.path, server.propertiesRaw.host, server.siteProtocolName]),
35
- };
36
- formatOutput(data, ctx.options, tableData);
37
- }
38
- else if (ctx.options.full) {
39
- for (const server of servers) {
40
- formatOutput(fullProperties(server, ctx.options), ctx.options);
41
- console.log('');
42
- }
43
- }
44
- else {
45
- formatOutput(servers.map((s) => s.path), ctx.options);
46
- }
47
- };
48
- function fullProperties(server, options) {
49
- const properties = { ...server.properties, protocolName: server.siteProtocolName };
50
- if (!options.showPassword) {
51
- properties.password = '(hidden)';
52
- }
53
- return properties;
54
- }
55
- function transformTree(folder, options) {
56
- return {
57
- name: folder.name,
58
- folders: folder.folders.map(f => transformTree(f, options)),
59
- servers: folder.servers.map(server => fullProperties(server, options)),
60
- };
61
- }
1
+ import { listCommand as runCommand } from '@jalsoedesign/portline-cli';
2
+ import { fileZillaCommandContext } from '../source.js';
3
+ export const listCommand = ctx => runCommand(fileZillaCommandContext(ctx));
62
4
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,IAAI,UAAU,EAAC,MAAM,4BAA4B,CAAC;AAErE,OAAO,EAAC,uBAAuB,EAAC,MAAM,cAAc,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAmB,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
- import { CommandHandler } from '../types.js';
1
+ import type { CommandHandler } from '../types.js';
2
2
  export declare const searchCommand: CommandHandler;
3
3
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,cAAc,EAAe,MAAM,aAAa,CAAC;AAwBzE,eAAO,MAAM,aAAa,EAAE,cAsC3B,CAAC"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAGhD,eAAO,MAAM,aAAa,EAAE,cAAgE,CAAC"}
@@ -1,54 +1,4 @@
1
- import { formatOutput } from '../types.js';
2
- function profileDetails(server, options) {
3
- const properties = server.propertiesRaw;
4
- let remoteDirectory = properties.remoteDirectory ?? '';
5
- try {
6
- remoteDirectory = server.getRemoteDirectory();
7
- }
8
- catch {
9
- remoteDirectory = `${remoteDirectory} (encoded; unsupported path)`;
10
- }
11
- return {
12
- path: server.path,
13
- name: properties.name,
14
- protocol: server.siteProtocolName,
15
- host: properties.host,
16
- port: properties.port,
17
- user: properties.user,
18
- password: options.showPassword ? properties.password ?? '' : '(hidden)',
19
- remoteDirectory,
20
- };
21
- }
22
- export const searchCommand = async (ctx) => {
23
- const term = ctx.options.search ?? ctx.args[0];
24
- if (term === undefined || ctx.args.length > (ctx.options.search === undefined ? 1 : 0)) {
25
- throw new Error('Specify one search term: filezilla-js search <term>');
26
- }
27
- if (ctx.options.recurse || ctx.options.full) {
28
- throw new Error('--recurse and --full are list options; search displays profile details');
29
- }
30
- const profiles = ctx.siteManager.searchServers(term, { fields: 'all' })
31
- .map(server => profileDetails(server, ctx.options));
32
- if (ctx.options.json) {
33
- formatOutput(profiles, ctx.options);
34
- return;
35
- }
36
- console.log(`Found ${profiles.length} ${profiles.length === 1 ? 'server' : 'servers'}`);
37
- for (const profile of profiles) {
38
- console.log('');
39
- formatOutput(profile, { ...ctx.options, table: true }, {
40
- columns: ['Label', 'Value'],
41
- rows: [
42
- ['Name', profile.name],
43
- ['Path', profile.path],
44
- ['Protocol', profile.protocol],
45
- ['Host', profile.host],
46
- ['Port', profile.port],
47
- ['Username', profile.user],
48
- ['Password', profile.password],
49
- ['Remote', profile.remoteDirectory],
50
- ],
51
- });
52
- }
53
- };
1
+ import { searchCommand as runCommand } from '@jalsoedesign/portline-cli';
2
+ import { fileZillaCommandContext } from '../source.js';
3
+ export const searchCommand = ctx => runCommand(fileZillaCommandContext(ctx));
54
4
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,IAAI,UAAU,EAAC,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAAC,uBAAuB,EAAC,MAAM,cAAc,CAAC;AAErD,MAAM,CAAC,MAAM,aAAa,GAAmB,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { checkConnection } from './commands/check.js';
2
2
  export type { ConnectionCheckOptions, ConnectionCheckResult, ConnectionCheckStage, ConnectionCheckStatus } from './commands/check.js';
3
+ export { createFileZillaCliSource } from './source.js';
3
4
  export declare function run(): Promise<void>;
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAC,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AA2EpI,wBAAsB,GAAG,kBAgExB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAC,sBAAsB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AACpI,OAAO,EAAC,wBAAwB,EAAC,MAAM,aAAa,CAAC;AA+ErD,wBAAsB,GAAG,kBAMxB"}
package/dist/index.js CHANGED
@@ -1,19 +1,23 @@
1
- import { getDefaultSiteManager, getSiteManager } from '@jalsoedesign/filezilla-core';
2
- import { listCommand } from './commands/list.js';
3
- import { getCommand } from './commands/get.js';
4
- import { searchCommand } from './commands/search.js';
1
+ import path from 'node:path';
2
+ import { getDefaultSiteManagerPath, getSiteManager, createFileZillaWriter } from '@jalsoedesign/filezilla-core';
3
+ import { createProfileCli, createProfileWriteCommands } from '@jalsoedesign/portline-cli';
4
+ import { createFileZillaCliSource } from './source.js';
5
5
  import { runCheckCommand } from './commands/check.js';
6
6
  export { checkConnection } from './commands/check.js';
7
- import * as process from 'process';
8
- function showHelp() {
9
- console.log(`
7
+ export { createFileZillaCliSource } from './source.js';
8
+ const help = `
10
9
  Usage: filezilla-js <command> [options] [args]
11
10
 
12
11
  Commands:
13
12
  list List all servers
14
13
  search <term> Search all saved fields and show profile details
14
+ source Show the selected configuration source
15
15
  get <path> [property] Get a server or a specific property value
16
16
  check <path> Check a connection without remote mutations (check --help)
17
+ write-status Show write availability and native diagnostic codes
18
+ write Preview normalized profile writes (write --help)
19
+ sync Preview one-way cross-app sync (sync --help)
20
+ apply Apply a reviewed preview with fresh lock checks (apply --help)
17
21
 
18
22
  Options:
19
23
  --file <path> Specify the sitemanager.xml file path
@@ -28,110 +32,56 @@ Options:
28
32
  --help, -h Show this help message
29
33
 
30
34
  Examples:
31
- filezilla-js --search ordlab --show-password
32
- filezilla-js search 206.189.28.138
35
+ filezilla-js --search clientName --show-password
36
+ filezilla-js search 10.2.3.4
33
37
  filezilla-js list
34
38
  filezilla-js list --json
35
39
  filezilla-js list --table
36
40
  filezilla-js get "My Server"
37
41
  filezilla-js get "My Server" host
38
42
  filezilla-js get "My Server" --json
39
- `);
40
- }
41
- function parseArgs() {
42
- const args = process.argv.slice(2);
43
- const options = {};
44
- const positional = [];
45
- for (let i = 0; i < args.length; i++) {
46
- const arg = args[i];
47
- if (arg === '--json') {
48
- options.json = true;
49
- }
50
- else if (arg === '--table') {
51
- options.table = true;
52
- }
53
- else if (arg === '--full') {
54
- options.full = true;
55
- }
56
- else if (arg === '--recurse') {
57
- options.recurse = true;
58
- }
59
- else if (arg === '--show-password') {
60
- options.showPassword = true;
61
- }
62
- else if (arg === '--file' && i + 1 < args.length) {
63
- options.file = args[++i];
64
- }
65
- else if (arg === '--search') {
66
- if (i + 1 >= args.length || args[i + 1].startsWith('--')) {
67
- throw new Error('--search requires a term');
68
- }
69
- options.search = args[++i];
70
- }
71
- else if (arg === '--help' || arg === '-h') {
72
- options.help = true;
73
- }
74
- else if (arg.startsWith('--')) {
75
- // ignore unknown flags
76
- }
77
- else {
78
- positional.push(arg);
79
- }
80
- }
81
- return { options, positional };
82
- }
43
+ `;
44
+ const cli = createProfileCli({
45
+ name: 'filezilla-js',
46
+ singular: 'server',
47
+ plural: 'servers',
48
+ help,
49
+ ignoreUnknownOptions: true,
50
+ commands: {
51
+ check: runCheckCommand,
52
+ ...createProfileWriteCommands({
53
+ application: 'filezilla',
54
+ importSource: name => import(name),
55
+ writer: async (options) => {
56
+ const location = path.resolve(options.file ?? getDefaultSiteManagerPath());
57
+ return createFileZillaWriter({
58
+ id: 'filezilla:' + location,
59
+ application: 'FileZilla',
60
+ location,
61
+ storage: [{ kind: 'file', path: location, format: 'xml' }],
62
+ }, {
63
+ mode: options.mode,
64
+ allowLossy: options.allowLossy === true,
65
+ registryMode: options.registryMode,
66
+ });
67
+ },
68
+ }),
69
+ },
70
+ loadSource: options => {
71
+ const filename = options.file ?? getDefaultSiteManagerPath();
72
+ const location = path.resolve(filename);
73
+ return createFileZillaCliSource(getSiteManager(filename), {
74
+ id: `filezilla:${location}`,
75
+ application: 'FileZilla',
76
+ location,
77
+ storage: [{ kind: 'file', path: location, format: 'xml' }],
78
+ });
79
+ },
80
+ });
83
81
  export async function run() {
84
- if (process.argv[2] === 'check') {
85
- await runCheckCommand(process.argv.slice(3));
86
- return;
87
- }
88
- let parsed;
89
- try {
90
- parsed = parseArgs();
91
- }
92
- catch (error) {
93
- console.error(process.argv.includes('--json') ?
94
- JSON.stringify({ error: error.message }) :
95
- `Error: ${error.message}`);
96
- process.exit(1);
97
- }
98
- const { options, positional } = parsed;
99
- if (options.help || (positional.length === 0 && options.search === undefined)) {
100
- showHelp();
101
- return;
102
- }
103
- const command = positional[0] ?? 'search';
104
- const commandArgs = positional.slice(1);
105
- const commands = {
106
- list: listCommand,
107
- get: getCommand,
108
- search: searchCommand,
109
- };
110
- const handler = commands[command];
111
- if (!handler) {
112
- console.error(`Error: Unknown command "${command}"`);
113
- showHelp();
114
- process.exit(1);
115
- }
116
- try {
117
- const siteManager = options.file ?
118
- getSiteManager(options.file) :
119
- getDefaultSiteManager();
120
- const context = {
121
- siteManager,
122
- args: commandArgs,
123
- options,
124
- };
125
- await handler(context);
126
- }
127
- catch (e) {
128
- if (options.json) {
129
- console.error(JSON.stringify({ error: e.message }));
130
- }
131
- else {
132
- console.error(`Error: ${e.message}`);
133
- }
134
- process.exit(1);
82
+ const exitCode = await cli.run();
83
+ if (exitCode !== 0) {
84
+ process.exit(exitCode);
135
85
  }
136
86
  }
137
87
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,yBAAyB,EAAE,cAAc,EAAE,qBAAqB,EAAC,MAAM,8BAA8B,CAAC;AAC9G,OAAO,EAAC,gBAAgB,EAAE,0BAA0B,EAAC,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAC,wBAAwB,EAAC,MAAM,aAAa,CAAC;AACrD,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAC,wBAAwB,EAAC,MAAM,aAAa,CAAC;AAErD,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCZ,CAAC;AAEF,MAAM,GAAG,GAAG,gBAAgB,CAAC;IACzB,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,SAAS;IACjB,IAAI;IACJ,oBAAoB,EAAE,IAAI;IAC1B,QAAQ,EAAE;QACN,KAAK,EAAE,eAAe;QACtB,GAAG,0BAA0B,CAAC;YAC1B,WAAW,EAAE,WAAW;YACxB,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAClC,MAAM,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE;gBACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,yBAAyB,EAAE,CAAC,CAAC;gBAE3E,OAAO,qBAAqB,CAAC;oBACzB,EAAE,EAAE,YAAY,GAAG,QAAQ;oBAC3B,WAAW,EAAE,WAAW;oBACxB,QAAQ;oBACR,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;iBAC3D,EAAE;oBACC,IAAI,EAAE,OAAO,CAAC,IAAkD;oBAChE,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,IAAI;oBACvC,YAAY,EAAE,OAAO,CAAC,YAAuD;iBAChF,CAAC,CAAC;YACP,CAAC;SACJ,CAAC;KACL;IACD,UAAU,EAAE,OAAO,CAAC,EAAE;QAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,IAAI,yBAAyB,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAExC,OAAO,wBAAwB,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;YACtD,EAAE,EAAE,aAAa,QAAQ,EAAE;YAC3B,WAAW,EAAE,WAAW;YACxB,QAAQ;YACR,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAC,CAAC;SAC3D,CAAC,CAAC;IACP,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,GAAG;IACrB,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;IAEjC,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Server, SiteManager } from '@jalsoedesign/filezilla-core';
2
+ import type { SourceReference } from '@jalsoedesign/portline-abstract';
3
+ import type { ProfileCliSource, ProfileCommandContext } from '@jalsoedesign/portline-cli';
4
+ import type { CommandContext } from './types.js';
5
+ export declare function remoteDirectoryFor(server: Server): string;
6
+ /** Preserves FileZilla's native properties, folder names and legacy JSON shapes. */
7
+ export declare function createFileZillaCliSource(manager: SiteManager, source?: SourceReference): ProfileCliSource<Server>;
8
+ export declare function fileZillaCommandContext(ctx: CommandContext): ProfileCommandContext<Server>;
9
+ //# sourceMappingURL=source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAC,gBAAgB,EAAE,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AACxF,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;AAE/C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,oFAAoF;AACpF,wBAAgB,wBAAwB,CACpC,OAAO,EAAE,WAAW,EACpB,MAAM,GAAE,eAA6D,GACtE,gBAAgB,CAAC,MAAM,CAAC,CAoC1B;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAS1F"}
package/dist/source.js ADDED
@@ -0,0 +1,53 @@
1
+ export function remoteDirectoryFor(server) {
2
+ try {
3
+ return server.getRemoteDirectory();
4
+ }
5
+ catch {
6
+ return `${server.propertiesRaw.remoteDirectory ?? ''} (encoded; unsupported path)`;
7
+ }
8
+ }
9
+ /** Preserves FileZilla's native properties, folder names and legacy JSON shapes. */
10
+ export function createFileZillaCliSource(manager, source = { id: 'filezilla', application: 'FileZilla' }) {
11
+ return {
12
+ source,
13
+ list: () => manager.getServers(),
14
+ get: path => manager.getServerByPath(path) ?? undefined,
15
+ search: (term, options) => manager.searchServers(term, options),
16
+ path: server => server.path,
17
+ folderNames: server => server.path.split('/').slice(0, -1).map(part => part.replace(/%(?:25|2f)/gi, value => value.toLowerCase() === '%2f' ? '/' : '%')),
18
+ treeProfilesKey: 'servers',
19
+ plainGetOmitFields: ['protocolName'],
20
+ summary: server => ({
21
+ path: server.path,
22
+ name: server.propertiesRaw.name,
23
+ protocol: server.siteProtocolName,
24
+ host: server.propertiesRaw.host,
25
+ port: server.propertiesRaw.port,
26
+ user: server.propertiesRaw.user,
27
+ password: server.propertiesRaw.password ?? '',
28
+ keyFile: server.propertiesRaw.keyFile ?? '',
29
+ remoteDirectory: remoteDirectoryFor(server),
30
+ }),
31
+ properties: server => ({ ...server.properties, protocolName: server.siteProtocolName }),
32
+ property: (server, name) => {
33
+ if (name === 'remoteDirectory') {
34
+ return server.getRemoteDirectory();
35
+ }
36
+ if (name === 'protocolName') {
37
+ return server.siteProtocolName;
38
+ }
39
+ return server.properties[name];
40
+ },
41
+ };
42
+ }
43
+ export function fileZillaCommandContext(ctx) {
44
+ return {
45
+ source: createFileZillaCliSource(ctx.siteManager),
46
+ args: ctx.args,
47
+ options: ctx.options,
48
+ executableName: 'filezilla-js',
49
+ singular: 'server',
50
+ plural: 'servers',
51
+ };
52
+ }
53
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC7C,IAAI,CAAC;QACD,OAAO,MAAM,CAAC,kBAAkB,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,eAAe,IAAI,EAAE,8BAA8B,CAAC;IACvF,CAAC;AACL,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,wBAAwB,CACpC,OAAoB,EACpB,SAA0B,EAAC,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAC;IAErE,OAAO;QACH,MAAM;QACN,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE;QAChC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,SAAS;QACvD,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC;QAC/D,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI;QAC3B,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAClE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CACnF;QACD,eAAe,EAAE,SAAS;QAC1B,kBAAkB,EAAE,CAAC,cAAc,CAAC;QACpC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI;YAC/B,QAAQ,EAAE,MAAM,CAAC,gBAAgB;YACjC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI;YAC/B,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI;YAC/B,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI;YAC/B,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE;YAC7C,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE;YAC3C,eAAe,EAAE,kBAAkB,CAAC,MAAM,CAAC;SAC9C,CAAC;QACF,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAAC,GAAG,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,gBAAgB,EAAC,CAAC;QACrF,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBAC7B,OAAO,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACvC,CAAC;YAED,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC1B,OAAO,MAAM,CAAC,gBAAgB,CAAC;YACnC,CAAC;YAED,OAAQ,MAAM,CAAC,UAAkB,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;KACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,GAAmB;IACvD,OAAO;QACH,MAAM,EAAE,wBAAwB,CAAC,GAAG,CAAC,WAAW,CAAC;QACjD,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,cAAc,EAAE,cAAc;QAC9B,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,SAAS;KACpB,CAAC;AACN,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,21 +1,11 @@
1
- import { SiteManager } from '@jalsoedesign/filezilla-core';
1
+ import type { SiteManager } from '@jalsoedesign/filezilla-core';
2
+ import type { ProfileCliOptions } from '@jalsoedesign/portline-cli';
3
+ export { formatOutput } from '@jalsoedesign/portline-cli';
4
+ export { remoteDirectoryFor } from './source.js';
2
5
  export interface CommandContext {
3
6
  siteManager: SiteManager;
4
7
  args: string[];
5
- options: {
6
- json?: boolean;
7
- table?: boolean;
8
- file?: string;
9
- help?: boolean;
10
- search?: string;
11
- recurse?: boolean;
12
- full?: boolean;
13
- showPassword?: boolean;
14
- };
8
+ options: ProfileCliOptions;
15
9
  }
16
10
  export type CommandHandler = (ctx: CommandContext) => Promise<void> | void;
17
- export declare function formatOutput(data: string | number | boolean | any[] | Record<string, any>, options: CommandContext['options'], tableData?: {
18
- columns: string[];
19
- rows: (string | number | boolean | undefined)[][];
20
- }): void;
21
11
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAGzD,MAAM,WAAW,cAAc;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE;QACL,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,YAAY,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;CACL;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAE3E,wBAAgB,YAAY,CACxB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7D,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,EAClC,SAAS,CAAC,EAAE;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAAE,EAAE,CAAA;CAAC,QAuDrF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC3B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,iBAAiB,CAAC;CAC9B;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC"}
package/dist/types.js CHANGED
@@ -1,48 +1,3 @@
1
- import chalk from 'chalk';
2
- export function formatOutput(data, options, tableData) {
3
- if (options.json) {
4
- console.log(JSON.stringify(data, null, 2));
5
- }
6
- else if (options.table && tableData) {
7
- const colWidths = tableData.columns.map((col, i) => Math.max(col.length, ...tableData.rows.map(row => String(row[i] ?? '').length)));
8
- const borderChars = {
9
- top: { start: '┌', mid: '┬', end: '┐' },
10
- middle: { start: '├', mid: '┼', end: '┤' },
11
- bottom: { start: '└', mid: '┴', end: '┘' },
12
- side: { start: '│', mid: '│', end: '│' },
13
- };
14
- const colored = Object.fromEntries(Object.entries(borderChars).map(([type, chars]) => [
15
- type,
16
- Object.fromEntries(Object.entries(chars).map(([k, v]) => [k, chalk.cyan(v)])),
17
- ]));
18
- const buildBorder = (widths, type) => {
19
- const c = colored[type];
20
- return c.start + widths.map(w => chalk.cyan('─'.repeat(w + 2))).join(c.mid) + c.end;
21
- };
22
- const side = colored.side.mid;
23
- const buildRow = (cells, widths) => side + ' ' + cells.map((cell, i) => String(cell ?? '').padEnd(widths[i])).join(' ' + side + ' ') + ' ' + side;
24
- console.log(buildBorder(colWidths, 'top'));
25
- console.log(side + ' ' + tableData.columns.map((col, i) => chalk.bold.white(col.padEnd(colWidths[i]))).join(' ' + side + ' ') + ' ' + side);
26
- console.log(buildBorder(colWidths, 'middle'));
27
- tableData.rows.forEach(row => console.log(buildRow(row, colWidths)));
28
- console.log(buildBorder(colWidths, 'bottom'));
29
- }
30
- else {
31
- if (typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean') {
32
- console.log(data);
33
- }
34
- else if (Array.isArray(data)) {
35
- data.forEach(item => console.log(chalk.green('• ') + item));
36
- }
37
- else {
38
- Object.entries(data).forEach(([key, value]) => {
39
- let displayValue = String(value);
40
- if (key === 'password' && !options.showPassword && value) {
41
- displayValue = chalk.gray('(hidden)');
42
- }
43
- console.log(`${chalk.yellow(key.padEnd(26))}: ${displayValue}`);
44
- });
45
- }
46
- }
47
- }
1
+ export { formatOutput } from '@jalsoedesign/portline-cli';
2
+ export { remoteDirectoryFor } from './source.js';
48
3
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC"}
@@ -2,19 +2,9 @@ import {createReadStream} from 'node:fs';
2
2
  import {open, stat, unlink} from 'node:fs/promises';
3
3
  import {Transform} from 'node:stream';
4
4
  import {pipeline} from 'node:stream/promises';
5
- import type {Server} from '@jalsoedesign/filezilla-core';
6
- import {SftpConnectorFactory, type SftpConnector} from '@jalsoedesign/filezilla-connector-sftp';
7
- import {
8
- checkAbort,
9
- IntegrityError,
10
- NotSupportedError,
11
- publishFile,
12
- ResourceLimitError,
13
- toReadable,
14
- type ConnectorOperationOptions,
15
- type PublicationResult,
16
- type TransferConnector,
17
- } from '@jalsoedesign/filezilla-connector-abstract';
5
+ import type {ConnectionProfile} from '@jalsoedesign/portline-abstract';
6
+ import type {DocklineBridge} from '@jalsoedesign/portline-dockline';
7
+ import {checkAbort, IntegrityError, NotSupportedError, publishFile, ResourceLimitError, toReadable, type ConnectorOperationOptions, type PublicationResult, type TransferConnector} from '@jalsoedesign/dockline-abstract';
18
8
 
19
9
  export interface RecipeConnector extends TransferConnector {
20
10
  connect(options?: ConnectorOperationOptions): Promise<void>;
@@ -22,29 +12,39 @@ export interface RecipeConnector extends TransferConnector {
22
12
  }
23
13
 
24
14
  /** The caller supplies an independently verified public fingerprint and owns saved credentials. */
25
- export function createPinnedSftp(server: Server, fingerprint: string): SftpConnector {
15
+ export async function createPinnedSftp(
16
+ bridge: DocklineBridge,
17
+ profile: ConnectionProfile | string,
18
+ fingerprint: string,
19
+ ): Promise<RecipeConnector> {
26
20
  if (!/^SHA256:[A-Za-z0-9+/]{43}$/.test(fingerprint)) {
27
21
  throw new TypeError('Provide a canonical, independently verified SHA256 host-key fingerprint.');
28
22
  }
29
23
 
30
- return SftpConnectorFactory.fromServer(server, {
31
- requireTrustPolicy: true,
32
- hasTrustPolicy: challenge => challenge.fingerprint === fingerprint,
33
- acceptTrustPolicy: () => false,
24
+ const config = await bridge.toConfig(profile, {
25
+ hostFingerprint: fingerprint,
34
26
  autoReconnect: false,
35
27
  maxTransientRetries: 0,
36
28
  });
29
+
30
+ if (config.protocol !== 'sftp') {
31
+ throw new NotSupportedError('This pinned SFTP recipe requires an SSH/SFTP connection definition.');
32
+ }
33
+
34
+ const {createConnector} = await import('@jalsoedesign/dockline-sftp-client');
35
+
36
+ return createConnector(config);
37
37
  }
38
38
 
39
39
  /** The callback must await complete stream consumption before returning. */
40
40
  export async function withConnectedSite<T>(
41
- createConnector: () => RecipeConnector,
41
+ createConnector: () => RecipeConnector | Promise<RecipeConnector>,
42
42
  options: ConnectorOperationOptions,
43
43
  operation: (connector: RecipeConnector) => Promise<T>,
44
44
  ): Promise<T> {
45
45
  checkAbort(options.abortSignal);
46
46
 
47
- const connector = createConnector();
47
+ const connector = await createConnector();
48
48
  let operationFailed = false;
49
49
  let operationError: unknown;
50
50
  let value: T | undefined;
@@ -82,7 +82,7 @@ export interface DownloadRecipeOptions extends ConnectorOperationOptions {
82
82
 
83
83
  /** Creates a new local file exclusively. Failure removes only the file this invocation created. */
84
84
  export async function downloadToNewFile(
85
- createConnector: () => RecipeConnector,
85
+ createConnector: () => RecipeConnector | Promise<RecipeConnector>,
86
86
  remotePath: string,
87
87
  localPath: string,
88
88
  options: DownloadRecipeOptions = {},
@@ -159,7 +159,7 @@ export interface PublishRecipeOptions extends ConnectorOperationOptions {
159
159
 
160
160
  /** Publishes to a new remote name with overwrite:'fail'; deployment replacement policy stays with the application. */
161
161
  export async function publishNewFile(
162
- createConnector: () => RecipeConnector,
162
+ createConnector: () => RecipeConnector | Promise<RecipeConnector>,
163
163
  localPath: string,
164
164
  remotePath: string,
165
165
  options: PublishRecipeOptions = {},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jalsoedesign/filezilla-cli",
3
- "version": "1.1.0",
3
+ "version": "1.2.0-rc.1",
4
4
  "type": "module",
5
5
  "description": "Command-line interface for querying FileZilla sitemanager.xml files",
6
6
  "main": "dist/index.js",
@@ -17,16 +17,16 @@
17
17
  "prepack": "npm run build"
18
18
  },
19
19
  "dependencies": {
20
- "@jalsoedesign/filezilla-connector-abstract": "^1.0.0",
21
- "@jalsoedesign/filezilla-connector-ftp": "^1.0.0",
22
- "@jalsoedesign/filezilla-connector-sftp": "^1.0.0",
23
- "@jalsoedesign/filezilla-core": "^1.1.0",
24
- "chalk": "6.0.0"
20
+ "@jalsoedesign/portline-abstract": "^1.0.0-rc.1",
21
+ "@jalsoedesign/filezilla-core": "^1.2.0-rc.1",
22
+ "@jalsoedesign/portline-cli": "^1.0.0-rc.1",
23
+ "@jalsoedesign/dockline-abstract": "^1.1.0-rc.1",
24
+ "@jalsoedesign/portline-dockline": "^1.0.0-rc.1"
25
25
  },
26
26
  "devDependencies": {
27
- "tsx": "4.23.13",
27
+ "tsx": "4.23.15",
28
28
  "typescript": "6.0.3",
29
- "vitest": "5.0.0"
29
+ "vitest": "5.1.0"
30
30
  },
31
31
  "license": "MIT",
32
32
  "engines": {
@@ -35,7 +35,8 @@
35
35
  "files": [
36
36
  "dist",
37
37
  "LICENSE",
38
- "examples"
38
+ "examples",
39
+ "README.md"
39
40
  ],
40
41
  "exports": {
41
42
  ".": {
@@ -55,6 +56,7 @@
55
56
  "url": "https://github.com/h2ooooooo/filezilla-js/issues"
56
57
  },
57
58
  "publishConfig": {
58
- "access": "public"
59
+ "access": "public",
60
+ "tag": "rc"
59
61
  }
60
62
  }