@qodalis/cli-scp 2.0.0-beta.12 → 2.0.0-beta.14
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/package.json +2 -2
- package/public-api.d.mts +1 -1
- package/public-api.d.ts +1 -1
- package/public-api.js +40 -52
- package/public-api.js.map +1 -1
- package/public-api.mjs +41 -53
- package/public-api.mjs.map +1 -1
- package/umd/index.global.js +64 -45
package/umd/index.global.js
CHANGED
|
@@ -628,14 +628,14 @@ var scp = (() => {
|
|
|
628
628
|
var require_sort = __commonJS({
|
|
629
629
|
"../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/sort.js"(exports$1, module2) {
|
|
630
630
|
var compareBuild = require_compare_build();
|
|
631
|
-
var sort = (
|
|
631
|
+
var sort = (list2, loose) => list2.sort((a, b) => compareBuild(a, b, loose));
|
|
632
632
|
module2.exports = sort;
|
|
633
633
|
}
|
|
634
634
|
});
|
|
635
635
|
var require_rsort = __commonJS({
|
|
636
636
|
"../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/functions/rsort.js"(exports$1, module2) {
|
|
637
637
|
var compareBuild = require_compare_build();
|
|
638
|
-
var rsort = (
|
|
638
|
+
var rsort = (list2, loose) => list2.sort((a, b) => compareBuild(b, a, loose));
|
|
639
639
|
module2.exports = rsort;
|
|
640
640
|
}
|
|
641
641
|
});
|
|
@@ -1822,6 +1822,22 @@ var scp = (() => {
|
|
|
1822
1822
|
}
|
|
1823
1823
|
});
|
|
1824
1824
|
var ICliFileTransferService_TOKEN = "cli-file-transfer-service";
|
|
1825
|
+
var ICliServerAuthService_TOKEN = "cli-server-auth-service";
|
|
1826
|
+
function resolveHeaders(provider) {
|
|
1827
|
+
if (!provider) return {};
|
|
1828
|
+
return typeof provider === "function" ? provider() : provider;
|
|
1829
|
+
}
|
|
1830
|
+
function resolveServerHeaders(services, serverName, configHeaders) {
|
|
1831
|
+
if (services) {
|
|
1832
|
+
const authService = services.get(
|
|
1833
|
+
ICliServerAuthService_TOKEN
|
|
1834
|
+
);
|
|
1835
|
+
if (authService) {
|
|
1836
|
+
return authService.getHeaders(serverName, configHeaders);
|
|
1837
|
+
}
|
|
1838
|
+
}
|
|
1839
|
+
return resolveHeaders(configHeaders);
|
|
1840
|
+
}
|
|
1825
1841
|
var DefaultLibraryAuthor = {
|
|
1826
1842
|
name: "Nicolae Lupei",
|
|
1827
1843
|
email: "nicolae.lupei@qodalis.com"
|
|
@@ -1848,9 +1864,12 @@ var scp = (() => {
|
|
|
1848
1864
|
* Returns the negotiated API version and the base path for all subsequent calls,
|
|
1849
1865
|
* or null if the server is unreachable or incompatible.
|
|
1850
1866
|
*/
|
|
1851
|
-
static async discover(baseUrl) {
|
|
1867
|
+
static async discover(baseUrl, headers) {
|
|
1852
1868
|
try {
|
|
1853
|
-
const
|
|
1869
|
+
const resolved = resolveHeaders(headers);
|
|
1870
|
+
const response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`, {
|
|
1871
|
+
headers: Object.keys(resolved).length > 0 ? resolved : void 0
|
|
1872
|
+
});
|
|
1854
1873
|
if (!response.ok) return null;
|
|
1855
1874
|
const info = await response.json();
|
|
1856
1875
|
const version = this.negotiate(info);
|
|
@@ -2682,7 +2701,7 @@ var scp = (() => {
|
|
|
2682
2701
|
};
|
|
2683
2702
|
|
|
2684
2703
|
// src/lib/version.ts
|
|
2685
|
-
var LIBRARY_VERSION = "2.0.0-beta.
|
|
2704
|
+
var LIBRARY_VERSION = "2.0.0-beta.14";
|
|
2686
2705
|
var API_VERSION2 = 2;
|
|
2687
2706
|
|
|
2688
2707
|
// src/lib/interfaces/index.ts
|
|
@@ -2773,7 +2792,7 @@ var scp = (() => {
|
|
|
2773
2792
|
const [serverName, path] = parsed;
|
|
2774
2793
|
const server = resolveServer(serverName, context);
|
|
2775
2794
|
if (!server) return;
|
|
2776
|
-
const transferService = context.services.
|
|
2795
|
+
const transferService = context.services.getRequired(
|
|
2777
2796
|
IScpTransferService_TOKEN
|
|
2778
2797
|
);
|
|
2779
2798
|
if (!transferService) {
|
|
@@ -2785,7 +2804,7 @@ var scp = (() => {
|
|
|
2785
2804
|
const entries = await transferService.ls(
|
|
2786
2805
|
serverUrl(server),
|
|
2787
2806
|
path,
|
|
2788
|
-
server.headers
|
|
2807
|
+
resolveServerHeaders(context.services, server.name, server.headers)
|
|
2789
2808
|
);
|
|
2790
2809
|
context.spinner?.hide();
|
|
2791
2810
|
if (entries.length === 0) {
|
|
@@ -2842,7 +2861,7 @@ var scp = (() => {
|
|
|
2842
2861
|
const [serverName, path] = parsed;
|
|
2843
2862
|
const server = resolveServer(serverName, context);
|
|
2844
2863
|
if (!server) return;
|
|
2845
|
-
const transferService = context.services.
|
|
2864
|
+
const transferService = context.services.getRequired(
|
|
2846
2865
|
IScpTransferService_TOKEN
|
|
2847
2866
|
);
|
|
2848
2867
|
if (!transferService) {
|
|
@@ -2854,7 +2873,7 @@ var scp = (() => {
|
|
|
2854
2873
|
const content = await transferService.cat(
|
|
2855
2874
|
serverUrl(server),
|
|
2856
2875
|
path,
|
|
2857
|
-
server.headers
|
|
2876
|
+
resolveServerHeaders(context.services, server.name, server.headers)
|
|
2858
2877
|
);
|
|
2859
2878
|
context.spinner?.hide();
|
|
2860
2879
|
context.writer.writeln(content);
|
|
@@ -2935,7 +2954,7 @@ var scp = (() => {
|
|
|
2935
2954
|
localPath = localPath || remotePath.split("/").pop() || "download";
|
|
2936
2955
|
const server = resolveServer(serverName, context);
|
|
2937
2956
|
if (!server) return;
|
|
2938
|
-
const transferService = context.services.
|
|
2957
|
+
const transferService = context.services.getRequired(
|
|
2939
2958
|
IScpTransferService_TOKEN
|
|
2940
2959
|
);
|
|
2941
2960
|
if (!transferService) {
|
|
@@ -2944,7 +2963,7 @@ var scp = (() => {
|
|
|
2944
2963
|
}
|
|
2945
2964
|
const useBrowserDownload = command.args?.["save"] === true;
|
|
2946
2965
|
context.spinner?.show(`Downloading ${remotePath} from ${server.name}...`);
|
|
2947
|
-
context.
|
|
2966
|
+
context.notifier.info(`scp: downloading from ${server.name}`);
|
|
2948
2967
|
const abortController = new AbortController();
|
|
2949
2968
|
const abortSub = context.onAbort.subscribe(() => abortController.abort());
|
|
2950
2969
|
try {
|
|
@@ -2952,7 +2971,7 @@ var scp = (() => {
|
|
|
2952
2971
|
const { content, size } = await transferService.download(
|
|
2953
2972
|
serverUrl(server),
|
|
2954
2973
|
remotePath,
|
|
2955
|
-
server.headers,
|
|
2974
|
+
resolveServerHeaders(context.services, server.name, server.headers),
|
|
2956
2975
|
(received, total) => {
|
|
2957
2976
|
const now = Date.now();
|
|
2958
2977
|
if (now - lastProgressUpdate < 200) return;
|
|
@@ -2962,19 +2981,19 @@ var scp = (() => {
|
|
|
2962
2981
|
context.spinner?.show(
|
|
2963
2982
|
`Downloading ${remotePath}... ${pct}% (${formatBytes(received)}/${formatBytes(total)})`
|
|
2964
2983
|
);
|
|
2965
|
-
context.
|
|
2984
|
+
context.notifier.info(`scp: download ${pct}%`);
|
|
2966
2985
|
} else {
|
|
2967
2986
|
context.spinner?.show(
|
|
2968
2987
|
`Downloading ${remotePath}... ${formatBytes(received)}`
|
|
2969
2988
|
);
|
|
2970
|
-
context.
|
|
2989
|
+
context.notifier.info(`scp: download ${formatBytes(received)}`);
|
|
2971
2990
|
}
|
|
2972
2991
|
},
|
|
2973
2992
|
abortController.signal
|
|
2974
2993
|
);
|
|
2975
2994
|
context.spinner?.hide();
|
|
2976
2995
|
if (useBrowserDownload) {
|
|
2977
|
-
const fileService = context.services.
|
|
2996
|
+
const fileService = context.services.getRequired(
|
|
2978
2997
|
ICliFileTransferService_TOKEN
|
|
2979
2998
|
);
|
|
2980
2999
|
if (fileService) {
|
|
@@ -2986,7 +3005,7 @@ var scp = (() => {
|
|
|
2986
3005
|
context.writer.writeError("File transfer service not available for browser download.");
|
|
2987
3006
|
}
|
|
2988
3007
|
} else {
|
|
2989
|
-
const fileService = context.services.
|
|
3008
|
+
const fileService = context.services.getRequired(
|
|
2990
3009
|
ICliFileTransferService_TOKEN
|
|
2991
3010
|
);
|
|
2992
3011
|
if (fileService) {
|
|
@@ -3091,14 +3110,14 @@ var scp = (() => {
|
|
|
3091
3110
|
}
|
|
3092
3111
|
const server = resolveServer(serverName, context);
|
|
3093
3112
|
if (!server) return;
|
|
3094
|
-
const fileService = context.services.
|
|
3113
|
+
const fileService = context.services.getRequired(
|
|
3095
3114
|
ICliFileTransferService_TOKEN
|
|
3096
3115
|
);
|
|
3097
3116
|
if (!fileService) {
|
|
3098
3117
|
context.writer.writeError("File transfer service not available.");
|
|
3099
3118
|
return;
|
|
3100
3119
|
}
|
|
3101
|
-
const transferService = context.services.
|
|
3120
|
+
const transferService = context.services.getRequired(
|
|
3102
3121
|
IScpTransferService_TOKEN
|
|
3103
3122
|
);
|
|
3104
3123
|
if (!transferService) {
|
|
@@ -3128,14 +3147,14 @@ var scp = (() => {
|
|
|
3128
3147
|
context.spinner?.show(
|
|
3129
3148
|
`Uploading "${filename}" (${formatBytes(content.length)}) to ${server.name}:${remotePath}...`
|
|
3130
3149
|
);
|
|
3131
|
-
context.
|
|
3150
|
+
context.notifier.info(`scp: uploading to ${server.name}`);
|
|
3132
3151
|
try {
|
|
3133
3152
|
await transferService.upload(
|
|
3134
3153
|
serverUrl(server),
|
|
3135
3154
|
remotePath,
|
|
3136
3155
|
content,
|
|
3137
3156
|
filename,
|
|
3138
|
-
server.headers
|
|
3157
|
+
resolveServerHeaders(context.services, server.name, server.headers)
|
|
3139
3158
|
);
|
|
3140
3159
|
context.spinner?.hide();
|
|
3141
3160
|
context.writer.writeSuccess(
|
|
@@ -3186,7 +3205,7 @@ var scp = (() => {
|
|
|
3186
3205
|
const [serverName, path] = parsed;
|
|
3187
3206
|
const server = resolveServer(serverName, context);
|
|
3188
3207
|
if (!server) return;
|
|
3189
|
-
const transferService = context.services.
|
|
3208
|
+
const transferService = context.services.getRequired(
|
|
3190
3209
|
IScpTransferService_TOKEN
|
|
3191
3210
|
);
|
|
3192
3211
|
if (!transferService) {
|
|
@@ -3198,7 +3217,7 @@ var scp = (() => {
|
|
|
3198
3217
|
await transferService.rm(
|
|
3199
3218
|
serverUrl(server),
|
|
3200
3219
|
path,
|
|
3201
|
-
server.headers
|
|
3220
|
+
resolveServerHeaders(context.services, server.name, server.headers)
|
|
3202
3221
|
);
|
|
3203
3222
|
context.spinner?.hide();
|
|
3204
3223
|
context.writer.writeSuccess(`Deleted: ${server.name}:${path}`);
|
|
@@ -3243,7 +3262,7 @@ var scp = (() => {
|
|
|
3243
3262
|
const [serverName, path] = parsed;
|
|
3244
3263
|
const server = resolveServer(serverName, context);
|
|
3245
3264
|
if (!server) return;
|
|
3246
|
-
const transferService = context.services.
|
|
3265
|
+
const transferService = context.services.getRequired(
|
|
3247
3266
|
IScpTransferService_TOKEN
|
|
3248
3267
|
);
|
|
3249
3268
|
if (!transferService) {
|
|
@@ -3255,7 +3274,7 @@ var scp = (() => {
|
|
|
3255
3274
|
await transferService.mkdir(
|
|
3256
3275
|
serverUrl(server),
|
|
3257
3276
|
path,
|
|
3258
|
-
server.headers
|
|
3277
|
+
resolveServerHeaders(context.services, server.name, server.headers)
|
|
3259
3278
|
);
|
|
3260
3279
|
context.spinner?.hide();
|
|
3261
3280
|
context.writer.writeSuccess(`Created directory: ${server.name}:${path}`);
|
|
@@ -3300,7 +3319,7 @@ var scp = (() => {
|
|
|
3300
3319
|
const [serverName, path] = parsed;
|
|
3301
3320
|
const server = resolveServer(serverName, context);
|
|
3302
3321
|
if (!server) return;
|
|
3303
|
-
const transferService = context.services.
|
|
3322
|
+
const transferService = context.services.getRequired(
|
|
3304
3323
|
IScpTransferService_TOKEN
|
|
3305
3324
|
);
|
|
3306
3325
|
if (!transferService) {
|
|
@@ -3312,7 +3331,7 @@ var scp = (() => {
|
|
|
3312
3331
|
const stat = await transferService.stat(
|
|
3313
3332
|
serverUrl(server),
|
|
3314
3333
|
path,
|
|
3315
|
-
server.headers
|
|
3334
|
+
resolveServerHeaders(context.services, server.name, server.headers)
|
|
3316
3335
|
);
|
|
3317
3336
|
context.spinner?.hide();
|
|
3318
3337
|
const entries = {
|
|
@@ -3394,7 +3413,7 @@ var scp = (() => {
|
|
|
3394
3413
|
async doDownload(serverName, remotePath, localPath, command, context) {
|
|
3395
3414
|
const server = resolveServer(serverName, context);
|
|
3396
3415
|
if (!server) return;
|
|
3397
|
-
const transferService = context.services.
|
|
3416
|
+
const transferService = context.services.getRequired(
|
|
3398
3417
|
IScpTransferService_TOKEN
|
|
3399
3418
|
);
|
|
3400
3419
|
if (!transferService) {
|
|
@@ -3403,13 +3422,13 @@ var scp = (() => {
|
|
|
3403
3422
|
}
|
|
3404
3423
|
const useBrowserDownload = command.args?.["save"] === true;
|
|
3405
3424
|
context.spinner?.show(`Downloading ${remotePath} from ${server.name}...`);
|
|
3406
|
-
context.
|
|
3425
|
+
context.notifier.info(`scp: downloading from ${server.name}`);
|
|
3407
3426
|
try {
|
|
3408
3427
|
let lastProgressUpdate = 0;
|
|
3409
3428
|
const { content, size } = await transferService.download(
|
|
3410
3429
|
serverUrl(server),
|
|
3411
3430
|
remotePath,
|
|
3412
|
-
server.headers,
|
|
3431
|
+
resolveServerHeaders(context.services, server.name, server.headers),
|
|
3413
3432
|
(received, total) => {
|
|
3414
3433
|
const now = Date.now();
|
|
3415
3434
|
if (now - lastProgressUpdate < 200) return;
|
|
@@ -3419,17 +3438,17 @@ var scp = (() => {
|
|
|
3419
3438
|
context.spinner?.show(
|
|
3420
3439
|
`Downloading ${remotePath}... ${pct}% (${formatBytes(received)}/${formatBytes(total)})`
|
|
3421
3440
|
);
|
|
3422
|
-
context.
|
|
3441
|
+
context.notifier.info(`scp: download ${pct}%`);
|
|
3423
3442
|
} else {
|
|
3424
3443
|
context.spinner?.show(
|
|
3425
3444
|
`Downloading ${remotePath}... ${formatBytes(received)}`
|
|
3426
3445
|
);
|
|
3427
|
-
context.
|
|
3446
|
+
context.notifier.info(`scp: download ${formatBytes(received)}`);
|
|
3428
3447
|
}
|
|
3429
3448
|
}
|
|
3430
3449
|
);
|
|
3431
3450
|
context.spinner?.hide();
|
|
3432
|
-
const fileService = context.services.
|
|
3451
|
+
const fileService = context.services.getRequired(
|
|
3433
3452
|
ICliFileTransferService_TOKEN
|
|
3434
3453
|
);
|
|
3435
3454
|
if (!fileService) {
|
|
@@ -3455,14 +3474,14 @@ var scp = (() => {
|
|
|
3455
3474
|
async doUpload(serverName, localPath, remotePath, context) {
|
|
3456
3475
|
const server = resolveServer(serverName, context);
|
|
3457
3476
|
if (!server) return;
|
|
3458
|
-
const fileService = context.services.
|
|
3477
|
+
const fileService = context.services.getRequired(
|
|
3459
3478
|
ICliFileTransferService_TOKEN
|
|
3460
3479
|
);
|
|
3461
3480
|
if (!fileService) {
|
|
3462
3481
|
context.writer.writeError("File transfer service not available.");
|
|
3463
3482
|
return;
|
|
3464
3483
|
}
|
|
3465
|
-
const transferService = context.services.
|
|
3484
|
+
const transferService = context.services.getRequired(
|
|
3466
3485
|
IScpTransferService_TOKEN
|
|
3467
3486
|
);
|
|
3468
3487
|
if (!transferService) {
|
|
@@ -3470,7 +3489,7 @@ var scp = (() => {
|
|
|
3470
3489
|
return;
|
|
3471
3490
|
}
|
|
3472
3491
|
context.spinner?.show(`Reading local file "${localPath}"...`);
|
|
3473
|
-
context.
|
|
3492
|
+
context.notifier.info(`scp: reading ${localPath}`);
|
|
3474
3493
|
try {
|
|
3475
3494
|
const content = await fileService.readFile(localPath);
|
|
3476
3495
|
if (content === null) {
|
|
@@ -3482,13 +3501,13 @@ var scp = (() => {
|
|
|
3482
3501
|
context.spinner?.show(
|
|
3483
3502
|
`Uploading "${filename}" (${formatBytes(content.length)}) to ${server.name}:${remotePath}...`
|
|
3484
3503
|
);
|
|
3485
|
-
context.
|
|
3504
|
+
context.notifier.info(`scp: uploading to ${server.name}`);
|
|
3486
3505
|
await transferService.upload(
|
|
3487
3506
|
serverUrl(server),
|
|
3488
3507
|
remotePath,
|
|
3489
3508
|
content,
|
|
3490
3509
|
filename,
|
|
3491
|
-
server.headers
|
|
3510
|
+
resolveServerHeaders(context.services, server.name, server.headers)
|
|
3492
3511
|
);
|
|
3493
3512
|
context.spinner?.hide();
|
|
3494
3513
|
context.writer.writeSuccess(
|
|
@@ -3505,27 +3524,27 @@ var scp = (() => {
|
|
|
3505
3524
|
var ScpTransferService = class {
|
|
3506
3525
|
async ls(serverUrl2, path, headers) {
|
|
3507
3526
|
const res = await this._fetch(`${serverUrl2}/api/qcli/fs/ls?path=${encodeURIComponent(path)}`, {
|
|
3508
|
-
headers
|
|
3527
|
+
headers: resolveHeaders(headers)
|
|
3509
3528
|
});
|
|
3510
3529
|
const data = await res.json();
|
|
3511
3530
|
return data.entries;
|
|
3512
3531
|
}
|
|
3513
3532
|
async cat(serverUrl2, path, headers) {
|
|
3514
3533
|
const res = await this._fetch(`${serverUrl2}/api/qcli/fs/cat?path=${encodeURIComponent(path)}`, {
|
|
3515
|
-
headers
|
|
3534
|
+
headers: resolveHeaders(headers)
|
|
3516
3535
|
});
|
|
3517
3536
|
const data = await res.json();
|
|
3518
3537
|
return data.content;
|
|
3519
3538
|
}
|
|
3520
3539
|
async stat(serverUrl2, path, headers) {
|
|
3521
3540
|
const res = await this._fetch(`${serverUrl2}/api/qcli/fs/stat?path=${encodeURIComponent(path)}`, {
|
|
3522
|
-
headers
|
|
3541
|
+
headers: resolveHeaders(headers)
|
|
3523
3542
|
});
|
|
3524
3543
|
return await res.json();
|
|
3525
3544
|
}
|
|
3526
3545
|
async download(serverUrl2, path, headers, onProgress, signal) {
|
|
3527
3546
|
const res = await this._fetch(`${serverUrl2}/api/qcli/fs/download?path=${encodeURIComponent(path)}`, {
|
|
3528
|
-
headers,
|
|
3547
|
+
headers: resolveHeaders(headers),
|
|
3529
3548
|
signal
|
|
3530
3549
|
});
|
|
3531
3550
|
const contentLength = parseInt(res.headers.get("content-length") || "0", 10);
|
|
@@ -3561,20 +3580,20 @@ var scp = (() => {
|
|
|
3561
3580
|
await this._fetch(`${serverUrl2}/api/qcli/fs/upload`, {
|
|
3562
3581
|
method: "POST",
|
|
3563
3582
|
body: formData,
|
|
3564
|
-
headers
|
|
3583
|
+
headers: resolveHeaders(headers)
|
|
3565
3584
|
});
|
|
3566
3585
|
}
|
|
3567
3586
|
async mkdir(serverUrl2, path, headers) {
|
|
3568
3587
|
await this._fetch(`${serverUrl2}/api/qcli/fs/mkdir`, {
|
|
3569
3588
|
method: "POST",
|
|
3570
|
-
headers: { "Content-Type": "application/json", ...headers },
|
|
3589
|
+
headers: { "Content-Type": "application/json", ...resolveHeaders(headers) },
|
|
3571
3590
|
body: JSON.stringify({ path })
|
|
3572
3591
|
});
|
|
3573
3592
|
}
|
|
3574
3593
|
async rm(serverUrl2, path, headers) {
|
|
3575
3594
|
await this._fetch(`${serverUrl2}/api/qcli/fs/rm?path=${encodeURIComponent(path)}`, {
|
|
3576
3595
|
method: "DELETE",
|
|
3577
|
-
headers
|
|
3596
|
+
headers: resolveHeaders(headers)
|
|
3578
3597
|
});
|
|
3579
3598
|
}
|
|
3580
3599
|
async _fetch(url, init) {
|
|
@@ -3601,7 +3620,7 @@ var scp = (() => {
|
|
|
3601
3620
|
services: [
|
|
3602
3621
|
{
|
|
3603
3622
|
provide: IScpTransferService_TOKEN,
|
|
3604
|
-
|
|
3623
|
+
useClass: ScpTransferService
|
|
3605
3624
|
}
|
|
3606
3625
|
]
|
|
3607
3626
|
};
|