@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.
@@ -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 = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose));
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 = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose));
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 response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`);
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.12";
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.get(
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.get(
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.get(
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.setStatusText(`scp: downloading from ${server.name}`);
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.setStatusText(`scp: download ${pct}%`);
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.setStatusText(`scp: download ${formatBytes(received)}`);
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.get(
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.get(
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.get(
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.get(
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.setStatusText(`scp: uploading to ${server.name}`);
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.get(
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.get(
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.get(
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.get(
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.setStatusText(`scp: downloading from ${server.name}`);
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.setStatusText(`scp: download ${pct}%`);
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.setStatusText(`scp: download ${formatBytes(received)}`);
3446
+ context.notifier.info(`scp: download ${formatBytes(received)}`);
3428
3447
  }
3429
3448
  }
3430
3449
  );
3431
3450
  context.spinner?.hide();
3432
- const fileService = context.services.get(
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.get(
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.get(
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.setStatusText(`scp: reading ${localPath}`);
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.setStatusText(`scp: uploading to ${server.name}`);
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
- useValue: new ScpTransferService()
3623
+ useClass: ScpTransferService
3605
3624
  }
3606
3625
  ]
3607
3626
  };