tabby-sftp-ui 0.2.4 → 0.2.6

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.
@@ -1,6 +1,7 @@
1
1
  import { Injector, OnInit } from '@angular/core';
2
2
  import { AppService, BaseTabComponent, FileTransfer, ProfilesService } from 'tabby-core';
3
- import { SftpConnectionService, SFTPFile, SSHSessionLike } from './sftp.service';
3
+ import type { RecoveryToken } from 'tabby-core';
4
+ import { SftpConnectionService, SFTPFile, SSHSessionLike, SSHShellSessionLike } from './sftp.service';
4
5
  type LocalEntry = {
5
6
  name: string;
6
7
  fullPath: string;
@@ -13,7 +14,9 @@ export declare class SftpManagerTabComponent extends BaseTabComponent implements
13
14
  private profilesService;
14
15
  private app;
15
16
  sshSession: SSHSessionLike | null;
17
+ shellSession: SSHShellSessionLike | null;
16
18
  profile: any;
19
+ recoveredStub: boolean;
17
20
  connecting: boolean;
18
21
  connected: boolean;
19
22
  host: string;
@@ -25,6 +28,7 @@ export declare class SftpManagerTabComponent extends BaseTabComponent implements
25
28
  remotePath: string;
26
29
  remoteEntries: SFTPFile[];
27
30
  private sftpSession;
31
+ private connectPromise;
28
32
  localDropActive: boolean;
29
33
  remoteDropActive: boolean;
30
34
  transfers: Array<{
@@ -95,10 +99,14 @@ export declare class SftpManagerTabComponent extends BaseTabComponent implements
95
99
  constructor(injector: Injector, sftp: SftpConnectionService, profilesService: ProfilesService, app: AppService);
96
100
  ngOnInit(): void;
97
101
  connect(): Promise<void>;
102
+ private waitForConnection;
103
+ private connectInternal;
104
+ private initializeRemotePath;
98
105
  disconnect(): Promise<void>;
99
106
  canLocalUp(): boolean;
100
107
  localUp(): void;
101
108
  remoteUp(): void;
109
+ canRemoteUp(): boolean;
102
110
  refreshLocal(): Promise<void>;
103
111
  refreshRemote(): Promise<void>;
104
112
  openLocal(e: LocalEntry): void;
@@ -162,7 +170,17 @@ export declare class SftpManagerTabComponent extends BaseTabComponent implements
162
170
  }): void;
163
171
  private normalizeLocalPath;
164
172
  private normalizeRemotePath;
165
- private getDefaultRemotePath;
173
+ private resolveDefaultRemotePath;
174
+ private syncRemotePathFromInput;
175
+ private ensureRemoteDirectoryReady;
176
+ private getRemoteUsername;
177
+ private buildDefaultRemotePathCandidates;
178
+ private canonicalizeRemotePath;
179
+ private remotePathExists;
180
+ private toRemoteSftpPath;
181
+ private isWindowsSftpPath;
182
+ private getWindowsSftpBreadcrumbs;
183
+ private remoteParentPath;
166
184
  private loadRecentProfiles;
167
185
  getProfileLabel(p: any): string;
168
186
  launchProfileFromSFTP(p: any): void;
@@ -194,7 +212,7 @@ export declare class SftpManagerTabComponent extends BaseTabComponent implements
194
212
  getTransferProgress(transfer: FileTransfer): number;
195
213
  onKeyDown(event: KeyboardEvent): void;
196
214
  destroy(): void;
197
- getRecoveryToken(_options?: any): Promise<null>;
215
+ getRecoveryToken(_options?: any): Promise<RecoveryToken>;
198
216
  confirmDelete(): Promise<void>;
199
217
  cancelDelete(): void;
200
218
  private showReplaceConfirm;
@@ -0,0 +1,8 @@
1
+ import { NewTabParameters, RecoveryToken, TabRecoveryProvider } from 'tabby-core';
2
+ import { SftpManagerTabComponent } from './sftp-manager-tab.component';
3
+ declare const SFTP_RECOVERY_TYPE = "tabby-sftp-ui:sftp-tab";
4
+ export declare class SftpTabRecoveryProvider extends TabRecoveryProvider<SftpManagerTabComponent> {
5
+ applicableTo(recoveryToken: RecoveryToken): Promise<boolean>;
6
+ recover(_recoveryToken: RecoveryToken): Promise<NewTabParameters<SftpManagerTabComponent>>;
7
+ }
8
+ export { SFTP_RECOVERY_TYPE };
@@ -15,6 +15,13 @@ export type SFTPSessionLike = {
15
15
  rename: (oldPath: string, newPath: string) => Promise<void>;
16
16
  upload: (remotePath: string, transfer: import('tabby-core').FileUpload) => Promise<void>;
17
17
  download: (remotePath: string, transfer: import('tabby-core').FileDownload) => Promise<void>;
18
+ stat?: (p: string) => Promise<{
19
+ isDirectory: boolean;
20
+ }>;
21
+ };
22
+ export type SSHShellSessionLike = {
23
+ getWorkingDirectory?: () => Promise<string | null>;
24
+ supportsWorkingDirectory?: () => boolean;
18
25
  };
19
26
  export type SSHSessionLike = {
20
27
  openSFTP: () => Promise<SFTPSessionLike>;
package/package.json CHANGED
@@ -1,44 +1,44 @@
1
- {
2
- "name": "tabby-sftp-ui",
3
- "version": "0.2.4",
4
- "description": "SFTP UI for Tabby (Termius-like file manager).",
5
- "keywords": [
6
- "tabby-plugin"
7
- ],
8
- "main": "dist/index.js",
9
- "typings": "dist/index.d.ts",
10
- "scripts": {
11
- "build": "webpack --progress --color",
12
- "watch": "webpack --progress --color --watch",
13
- "prepublishOnly": "npm run build"
14
- },
15
- "files": [
16
- "dist"
17
- ],
18
- "author": "gr0w1ng",
19
- "license": "MIT",
20
- "dependencies": {},
21
- "devDependencies": {
22
- "@angular/animations": "^9.1.13",
23
- "@angular/common": "^9.1.13",
24
- "@angular/core": "^9.1.13",
25
- "@angular/forms": "^9.1.13",
26
- "@angular/platform-browser": "^9.1.13",
27
- "@angular/platform-browser-dynamic": "^9.1.13",
28
- "@types/node": "^22.13.10",
29
- "@types/webpack-env": "^1.18.8",
30
- "apply-loader": "^2.0.0",
31
- "css-loader": "^7.1.2",
32
- "rxjs": "^6.6.7",
33
- "sass": "^1.86.0",
34
- "sass-loader": "^16.0.5",
35
- "style-loader": "^4.0.0",
36
- "tabby-core": "^1.0.163",
37
- "tabby-settings": "^1.0.163",
38
- "tabby-terminal": "^1.0.163",
39
- "ts-loader": "^9.5.2",
40
- "typescript": "^5.8.2",
41
- "webpack": "^5.98.0",
42
- "webpack-cli": "^6.0.1"
43
- }
44
- }
1
+ {
2
+ "name": "tabby-sftp-ui",
3
+ "version": "0.2.6",
4
+ "description": "SFTP UI for Tabby (Termius-like file manager).",
5
+ "keywords": [
6
+ "tabby-plugin"
7
+ ],
8
+ "main": "dist/index.js",
9
+ "typings": "dist/index.d.ts",
10
+ "scripts": {
11
+ "build": "webpack --progress --color",
12
+ "watch": "webpack --progress --color --watch",
13
+ "prepublishOnly": "npm run build"
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "author": "gr0w1ng",
19
+ "license": "MIT",
20
+ "dependencies": {},
21
+ "devDependencies": {
22
+ "@angular/animations": "^9.1.13",
23
+ "@angular/common": "^9.1.13",
24
+ "@angular/core": "^9.1.13",
25
+ "@angular/forms": "^9.1.13",
26
+ "@angular/platform-browser": "^9.1.13",
27
+ "@angular/platform-browser-dynamic": "^9.1.13",
28
+ "@types/node": "^22.13.10",
29
+ "@types/webpack-env": "^1.18.8",
30
+ "apply-loader": "^2.0.0",
31
+ "css-loader": "^7.1.2",
32
+ "rxjs": "^6.6.7",
33
+ "sass": "^1.86.0",
34
+ "sass-loader": "^16.0.5",
35
+ "style-loader": "^4.0.0",
36
+ "tabby-core": "^1.0.163",
37
+ "tabby-settings": "^1.0.163",
38
+ "tabby-terminal": "^1.0.163",
39
+ "ts-loader": "^9.5.2",
40
+ "typescript": "^5.8.2",
41
+ "webpack": "^5.98.0",
42
+ "webpack-cli": "^6.0.1"
43
+ }
44
+ }