@flowscripter/dynamic-cli-framework 2.4.0 → 2.5.0

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.
Files changed (39) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -0
  4. package/dist/src/cli/BaseCLI.d.ts +1 -0
  5. package/dist/src/cli/BaseCLI.d.ts.map +1 -1
  6. package/dist/src/cli/BaseCLI.js +6 -0
  7. package/dist/src/cli/BaseCLIFeatureOptions.d.ts +1 -0
  8. package/dist/src/cli/BaseCLIFeatureOptions.d.ts.map +1 -1
  9. package/dist/src/service/fetch/DefaultFetchService.d.ts +7 -0
  10. package/dist/src/service/fetch/DefaultFetchService.d.ts.map +1 -0
  11. package/dist/src/service/fetch/DefaultFetchService.js +44 -0
  12. package/dist/src/service/fetch/FetchServiceProvider.d.ts +10 -0
  13. package/dist/src/service/fetch/FetchServiceProvider.d.ts.map +1 -0
  14. package/dist/src/service/fetch/FetchServiceProvider.js +22 -0
  15. package/dist/src/service/plugin/DefaultPluginServiceProvider.d.ts +2 -1
  16. package/dist/src/service/plugin/DefaultPluginServiceProvider.d.ts.map +1 -1
  17. package/dist/src/service/plugin/DefaultPluginServiceProvider.js +23 -8
  18. package/dist/src/service/plugin/FetchInterfaceAdapter.d.ts +17 -0
  19. package/dist/src/service/plugin/FetchInterfaceAdapter.d.ts.map +1 -0
  20. package/dist/src/service/plugin/FetchInterfaceAdapter.js +16 -0
  21. package/dist/src/service/plugin/SpawnInterfaceAdapter.js +1 -1
  22. package/dist/src/service/spawn/DefaultSpawnService.js +6 -6
  23. package/dist/src/service/upgrade/DefaultUpgradeService.d.ts +2 -2
  24. package/dist/src/service/upgrade/DefaultUpgradeService.d.ts.map +1 -1
  25. package/dist/src/service/upgrade/DefaultUpgradeService.js +33 -51
  26. package/dist/src/service/upgrade/UpgradeServiceProvider.d.ts.map +1 -1
  27. package/dist/src/service/upgrade/UpgradeServiceProvider.js +12 -9
  28. package/index.ts +5 -0
  29. package/package.json +3 -3
  30. package/src/cli/BaseCLI.ts +7 -0
  31. package/src/cli/BaseCLIFeatureOptions.ts +1 -0
  32. package/src/service/fetch/DefaultFetchService.ts +55 -0
  33. package/src/service/fetch/FetchServiceProvider.ts +33 -0
  34. package/src/service/plugin/DefaultPluginServiceProvider.ts +29 -12
  35. package/src/service/plugin/FetchInterfaceAdapter.ts +28 -0
  36. package/src/service/plugin/SpawnInterfaceAdapter.ts +1 -1
  37. package/src/service/spawn/DefaultSpawnService.ts +6 -6
  38. package/src/service/upgrade/DefaultUpgradeService.ts +66 -65
  39. package/src/service/upgrade/UpgradeServiceProvider.ts +13 -9
package/dist/index.d.ts CHANGED
@@ -43,6 +43,10 @@ export { SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
43
43
  export type { ShutdownService } from "@flowscripter/dynamic-cli-framework-api";
44
44
  export { default as DefaultShutdownService } from "./src/service/shutdown/DefaultShutdownService.ts";
45
45
  export { default as ShutdownServiceProvider } from "./src/service/shutdown/ShutdownServiceProvider.ts";
46
+ export { FETCH_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
47
+ export type { FetchOptions, FetchService } from "@flowscripter/dynamic-cli-framework-api";
48
+ export { default as DefaultFetchService } from "./src/service/fetch/DefaultFetchService.ts";
49
+ export { default as FetchServiceProvider } from "./src/service/fetch/FetchServiceProvider.ts";
46
50
  export { SPAWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
47
51
  export type { SpawnOptions, SpawnResult, SpawnService, } from "@flowscripter/dynamic-cli-framework-api";
48
52
  export { default as DefaultSpawnService } from "./src/service/spawn/DefaultSpawnService.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,6 +20,9 @@ export { default as PrinterServiceProvider } from "./src/service/printer/Printer
20
20
  export { SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
21
21
  export { default as DefaultShutdownService } from "./src/service/shutdown/DefaultShutdownService.js";
22
22
  export { default as ShutdownServiceProvider } from "./src/service/shutdown/ShutdownServiceProvider.js";
23
+ export { FETCH_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
24
+ export { default as DefaultFetchService } from "./src/service/fetch/DefaultFetchService.js";
25
+ export { default as FetchServiceProvider } from "./src/service/fetch/FetchServiceProvider.js";
23
26
  export { SPAWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
24
27
  export { default as DefaultSpawnService } from "./src/service/spawn/DefaultSpawnService.js";
25
28
  export { default as SpawnServiceProvider } from "./src/service/spawn/SpawnServiceProvider.js";
@@ -25,6 +25,7 @@ import type BaseCLIFeatureOptions from "./BaseCLIFeatureOptions.ts";
25
25
  *
26
26
  * * {@link ImagePrinterServiceProvider}
27
27
  * * {@link SpawnServiceProvider}
28
+ * * {@link FetchServiceProvider}
28
29
  * * {@link CompletionServiceProvider}
29
30
  * * {@link UpgradeServiceProvider}
30
31
  *
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCLI.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAGvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4BzE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAGpD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AAcpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,YAAW,GAAG;;gBAavC,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,cAAc,EACpC,oBAAoB,EAAE,cAAc,EACpC,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,OAAO,EACtB,cAAc,EAAE,QAAQ,EACxB,cAAc,EAAE,QAAQ,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,qBAAqB;IA8DjC;;;;;;;OAOG;IACI,kBAAkB,CAAC,eAAe,EAAE,eAAe;IAI1D;;;;;;;;OAQG;IACI,UAAU,CAAC,OAAO,EAAE,OAAO;IAU5B,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;CA2L3D"}
1
+ {"version":3,"file":"BaseCLI.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCLI.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAGvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA4BzE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAGpD,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAC;AAepE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,OAAO,OAAO,OAAQ,YAAW,GAAG;;gBAavC,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,cAAc,EACpC,oBAAoB,EAAE,cAAc,EACpC,aAAa,EAAE,OAAO,EACtB,aAAa,EAAE,OAAO,EACtB,cAAc,EAAE,QAAQ,EACxB,cAAc,EAAE,QAAQ,EACxB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE,qBAAqB;IA+DjC;;;;;;;OAOG;IACI,kBAAkB,CAAC,eAAe,EAAE,eAAe;IAI1D;;;;;;;;OAQG;IACI,UAAU,CAAC,OAAO,EAAE,OAAO;IAU5B,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;CA+L3D"}
@@ -26,6 +26,7 @@ import DefaultCompletionService from "../service/completion/DefaultCompletionSer
26
26
  import CompletionServiceProvider from "../service/completion/CompletionServiceProvider.js";
27
27
  import ImagePrinterServiceProvider from "../service/imagePrinter/ImagePrinterServiceProvider.js";
28
28
  import SpawnServiceProvider from "../service/spawn/SpawnServiceProvider.js";
29
+ import FetchServiceProvider from "../service/fetch/FetchServiceProvider.js";
29
30
  import UpgradeServiceProvider from "../service/upgrade/UpgradeServiceProvider.js";
30
31
  const logger = getLogger("BaseCLI");
31
32
  /**
@@ -45,6 +46,7 @@ const logger = getLogger("BaseCLI");
45
46
  *
46
47
  * * {@link ImagePrinterServiceProvider}
47
48
  * * {@link SpawnServiceProvider}
49
+ * * {@link FetchServiceProvider}
48
50
  * * {@link CompletionServiceProvider}
49
51
  * * {@link UpgradeServiceProvider}
50
52
  *
@@ -95,6 +97,7 @@ export default class BaseCLI {
95
97
  completionServiceEnabled: false,
96
98
  imagePrinterServiceEnabled: false,
97
99
  spawnServiceEnabled: false,
100
+ fetchServiceEnabled: false,
98
101
  upgradeServiceEnabled: false,
99
102
  upgradeLocationsConfig: { supportedPlatforms: [] },
100
103
  validateAllCommands: false,
@@ -192,6 +195,9 @@ export default class BaseCLI {
192
195
  if (this.#options.spawnServiceEnabled) {
193
196
  this.addServiceProvider(new SpawnServiceProvider(58));
194
197
  }
198
+ if (this.#options.fetchServiceEnabled) {
199
+ this.addServiceProvider(new FetchServiceProvider(57));
200
+ }
195
201
  if (this.#options.completionServiceEnabled) {
196
202
  const completionService = new DefaultCompletionService();
197
203
  this.addServiceProvider(new CompletionServiceProvider(5, completionService, this.#commandRegistry));
@@ -8,6 +8,7 @@ export default interface BaseCLIFeatureOptions {
8
8
  readonly completionServiceEnabled?: boolean;
9
9
  readonly imagePrinterServiceEnabled?: boolean;
10
10
  readonly spawnServiceEnabled?: boolean;
11
+ readonly fetchServiceEnabled?: boolean;
11
12
  readonly upgradeServiceEnabled?: boolean;
12
13
  readonly upgradeLocationsConfig?: UpgradeLocationsConfig;
13
14
  readonly validateAllCommands?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCLIFeatureOptions.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCLIFeatureOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAE3F,MAAM,CAAC,OAAO,WAAW,qBAAqB;IAC5C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAClD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAC9C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IACzD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC"}
1
+ {"version":3,"file":"BaseCLIFeatureOptions.d.ts","sourceRoot":"","sources":["../../../src/cli/BaseCLIFeatureOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AAE3F,MAAM,CAAC,OAAO,WAAW,qBAAqB;IAC5C,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAClD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAC9C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IACzD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC"}
@@ -0,0 +1,7 @@
1
+ import type { FetchOptions, FetchService, ShutdownService } from "@flowscripter/dynamic-cli-framework-api";
2
+ export default class DefaultFetchService implements FetchService {
3
+ #private;
4
+ setDependencies(shutdownService: ShutdownService): void;
5
+ fetch(input: string | URL, options?: FetchOptions): Promise<Response>;
6
+ }
7
+ //# sourceMappingURL=DefaultFetchService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultFetchService.d.ts","sourceRoot":"","sources":["../../../../src/service/fetch/DefaultFetchService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EAChB,MAAM,yCAAyC,CAAC;AAKjD,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,YAAY;;IAGvD,eAAe,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAIjD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAsCvF"}
@@ -0,0 +1,44 @@
1
+ import getLogger from "../../util/logger.js";
2
+ const logger = getLogger("DefaultFetchService");
3
+ export default class DefaultFetchService {
4
+ #shutdownService;
5
+ setDependencies(shutdownService) {
6
+ this.#shutdownService = shutdownService;
7
+ }
8
+ async fetch(input, options = {}) {
9
+ if (this.#shutdownService === undefined) {
10
+ throw new Error("DefaultFetchService.fetch() called before setDependencies()");
11
+ }
12
+ const shutdownService = this.#shutdownService;
13
+ const { timeoutMs, longRunning = false, signal: callerSignal, ...requestInit } = options;
14
+ const controller = new AbortController();
15
+ const signals = [controller.signal];
16
+ if (callerSignal) {
17
+ signals.push(callerSignal);
18
+ }
19
+ if (timeoutMs !== undefined) {
20
+ signals.push(AbortSignal.timeout(timeoutMs));
21
+ }
22
+ const signal = signals.length === 1 ? signals[0] : AbortSignal.any(signals);
23
+ let settled = false;
24
+ if (longRunning) {
25
+ shutdownService.enterLongRunningMode();
26
+ shutdownService.addShutdownListener(async () => {
27
+ if (settled) {
28
+ return;
29
+ }
30
+ logger.debug(() => `Aborting fetch of '${input.toString()}' due to shutdown`);
31
+ controller.abort();
32
+ });
33
+ }
34
+ try {
35
+ return await fetch(input, { ...requestInit, signal });
36
+ }
37
+ finally {
38
+ settled = true;
39
+ if (longRunning) {
40
+ shutdownService.leaveLongRunningMode();
41
+ }
42
+ }
43
+ }
44
+ }
@@ -0,0 +1,10 @@
1
+ import type { CLIConfig, Context, ServiceInfo, ServiceProvider } from "@flowscripter/dynamic-cli-framework-api";
2
+ export default class FetchServiceProvider implements ServiceProvider {
3
+ #private;
4
+ readonly serviceId: string;
5
+ readonly servicePriority: number;
6
+ constructor(servicePriority: number);
7
+ getServiceInfo(_cliConfig: CLIConfig): Promise<ServiceInfo>;
8
+ initService(context: Context): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=FetchServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FetchServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/fetch/FetchServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,OAAO,EACP,WAAW,EACX,eAAe,EAEhB,MAAM,yCAAyC,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,eAAe;;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAoB;IAC9C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;gBAGd,eAAe,EAAE,MAAM;IAInC,cAAc,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3D,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAKpD"}
@@ -0,0 +1,22 @@
1
+ import { FETCH_SERVICE_ID, SHUTDOWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
2
+ import DefaultFetchService from "./DefaultFetchService.js";
3
+ export default class FetchServiceProvider {
4
+ serviceId = FETCH_SERVICE_ID;
5
+ servicePriority;
6
+ #fetchService;
7
+ constructor(servicePriority) {
8
+ this.servicePriority = servicePriority;
9
+ }
10
+ getServiceInfo(_cliConfig) {
11
+ this.#fetchService = new DefaultFetchService();
12
+ return Promise.resolve({
13
+ service: this.#fetchService,
14
+ commands: [],
15
+ });
16
+ }
17
+ initService(context) {
18
+ const shutdownService = context.getServiceById(SHUTDOWN_SERVICE_ID);
19
+ this.#fetchService.setDependencies(shutdownService);
20
+ return Promise.resolve();
21
+ }
22
+ }
@@ -3,11 +3,12 @@ import type { Context } from "@flowscripter/dynamic-cli-framework-api";
3
3
  import type { CLIConfig } from "@flowscripter/dynamic-cli-framework-api";
4
4
  import type { MarketplacePluginManager } from "@flowscripter/dynamic-plugin-framework";
5
5
  import { type SpawnInterfaceAdapterOptions } from "./SpawnInterfaceAdapter.ts";
6
+ import { type FetchInterfaceAdapterOptions } from "./FetchInterfaceAdapter.ts";
6
7
  export default class DefaultPluginServiceProvider implements ServiceProvider {
7
8
  #private;
8
9
  readonly serviceId = "PLUGIN_SERVICE";
9
10
  readonly servicePriority: number;
10
- constructor(pluginManager: MarketplacePluginManager, servicePriority?: number, spawnInterfaceAdapterOptions?: SpawnInterfaceAdapterOptions);
11
+ constructor(pluginManager: MarketplacePluginManager, servicePriority?: number, spawnInterfaceAdapterOptions?: SpawnInterfaceAdapterOptions, fetchInterfaceAdapterOptions?: FetchInterfaceAdapterOptions);
11
12
  getServiceInfo(_cliConfig: CLIConfig): Promise<ServiceInfo>;
12
13
  initService(context: Context): Promise<void>;
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultPluginServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/plugin/DefaultPluginServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,wCAAwC,CAAC;AAIhD,OAA8B,EAC5B,KAAK,4BAA4B,EAClC,MAAM,4BAA4B,CAAC;AAKpC,MAAM,CAAC,OAAO,OAAO,4BAA6B,YAAW,eAAe;;IAC1E,QAAQ,CAAC,SAAS,oBAAqB;IACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;gBAM/B,aAAa,EAAE,wBAAwB,EACvC,eAAe,SAAK,EACpB,4BAA4B,GAAE,4BAAiC;IAO3D,cAAc,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAQjE,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAoB7C"}
1
+ {"version":3,"file":"DefaultPluginServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/plugin/DefaultPluginServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAEV,wBAAwB,EAEzB,MAAM,wCAAwC,CAAC;AAIhD,OAA8B,EAC5B,KAAK,4BAA4B,EAClC,MAAM,4BAA4B,CAAC;AACpC,OAA8B,EAC5B,KAAK,4BAA4B,EAClC,MAAM,4BAA4B,CAAC;AAKpC,MAAM,CAAC,OAAO,OAAO,4BAA6B,YAAW,eAAe;;IAC1E,QAAQ,CAAC,SAAS,oBAAqB;IACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;gBAO/B,aAAa,EAAE,wBAAwB,EACvC,eAAe,SAAK,EACpB,4BAA4B,GAAE,4BAAiC,EAC/D,4BAA4B,GAAE,4BAAiC;IAQ3D,cAAc,CAAC,UAAU,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAQjE,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CA4B7C"}
@@ -1,8 +1,10 @@
1
1
  import { PRINTER_SERVICE_ID, SPAWN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
2
+ import { FETCH_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
2
3
  import { PLUGIN_SERVICE_ID } from "@flowscripter/dynamic-cli-framework-api";
3
4
  import DefaultPluginService from "./DefaultPluginService.js";
4
5
  import { PluginGroupCommand } from "./command/PluginGroupCommand.js";
5
6
  import SpawnInterfaceAdapter, {} from "./SpawnInterfaceAdapter.js";
7
+ import FetchInterfaceAdapter, {} from "./FetchInterfaceAdapter.js";
6
8
  import getLogger from "../../util/logger.js";
7
9
  const logger = getLogger("DefaultPluginServiceProvider");
8
10
  export default class DefaultPluginServiceProvider {
@@ -10,11 +12,13 @@ export default class DefaultPluginServiceProvider {
10
12
  servicePriority;
11
13
  #pluginManager;
12
14
  #spawnInterfaceAdapterOptions;
15
+ #fetchInterfaceAdapterOptions;
13
16
  #pluginService;
14
- constructor(pluginManager, servicePriority = 50, spawnInterfaceAdapterOptions = {}) {
17
+ constructor(pluginManager, servicePriority = 50, spawnInterfaceAdapterOptions = {}, fetchInterfaceAdapterOptions = {}) {
15
18
  this.#pluginManager = pluginManager;
16
19
  this.servicePriority = servicePriority;
17
20
  this.#spawnInterfaceAdapterOptions = spawnInterfaceAdapterOptions;
21
+ this.#fetchInterfaceAdapterOptions = fetchInterfaceAdapterOptions;
18
22
  }
19
23
  async getServiceInfo(_cliConfig) {
20
24
  this.#pluginService = new DefaultPluginService(this.#pluginManager);
@@ -26,16 +30,27 @@ export default class DefaultPluginServiceProvider {
26
30
  initService(context) {
27
31
  if (!context.doesServiceExist(SPAWN_SERVICE_ID)) {
28
32
  logger.debug("SpawnService not available, plugin manager will spawn processes directly");
29
- return Promise.resolve();
30
33
  }
31
- if (!("setSpawn" in this.#pluginManager)) {
34
+ else if (!("setSpawn" in this.#pluginManager)) {
32
35
  logger.debug("Plugin manager does not support SpawnCapable, skipping spawn injection");
33
- return Promise.resolve();
34
36
  }
35
- const spawnService = context.getServiceById(SPAWN_SERVICE_ID);
36
- const printerService = context.getServiceById(PRINTER_SERVICE_ID);
37
- const adapter = new SpawnInterfaceAdapter(spawnService, printerService, this.#spawnInterfaceAdapterOptions);
38
- this.#pluginManager.setSpawn(adapter);
37
+ else {
38
+ const spawnService = context.getServiceById(SPAWN_SERVICE_ID);
39
+ const printerService = context.getServiceById(PRINTER_SERVICE_ID);
40
+ const adapter = new SpawnInterfaceAdapter(spawnService, printerService, this.#spawnInterfaceAdapterOptions);
41
+ this.#pluginManager.setSpawn(adapter);
42
+ }
43
+ if (!context.doesServiceExist(FETCH_SERVICE_ID)) {
44
+ logger.debug("FetchService not available, plugin manager will fetch directly");
45
+ }
46
+ else if (!("setFetch" in this.#pluginManager)) {
47
+ logger.debug("Plugin manager does not support FetchCapable, skipping fetch injection");
48
+ }
49
+ else {
50
+ const fetchService = context.getServiceById(FETCH_SERVICE_ID);
51
+ const adapter = new FetchInterfaceAdapter(fetchService, this.#fetchInterfaceAdapterOptions);
52
+ this.#pluginManager.setFetch(adapter);
53
+ }
39
54
  return Promise.resolve();
40
55
  }
41
56
  }
@@ -0,0 +1,17 @@
1
+ import type { FetchService } from "@flowscripter/dynamic-cli-framework-api";
2
+ import type { FetchInterface } from "@flowscripter/dynamic-plugin-framework";
3
+ export interface FetchInterfaceAdapterOptions {
4
+ timeoutMs?: number;
5
+ }
6
+ /**
7
+ * Adapts a {@link FetchService} to dynamic-plugin-framework's {@link FetchInterface}, so plugin
8
+ * manager/repository fetches respect the host CLI's shutdown handling and default timeout.
9
+ */
10
+ export default class FetchInterfaceAdapter implements FetchInterface {
11
+ #private;
12
+ constructor(fetchService: FetchService, options?: FetchInterfaceAdapterOptions);
13
+ fetch(input: string, init?: RequestInit & {
14
+ timeoutMs?: number;
15
+ }): Promise<Response>;
16
+ }
17
+ //# sourceMappingURL=FetchInterfaceAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FetchInterfaceAdapter.d.ts","sourceRoot":"","sources":["../../../../src/service/plugin/FetchInterfaceAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE7E,MAAM,WAAW,4BAA4B;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAsB,YAAW,cAAc;;gBAI/C,YAAY,EAAE,YAAY,EAAE,OAAO,GAAE,4BAAiC;IAK5E,KAAK,CAChB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,WAAW,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,QAAQ,CAAC;CAIrB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Adapts a {@link FetchService} to dynamic-plugin-framework's {@link FetchInterface}, so plugin
3
+ * manager/repository fetches respect the host CLI's shutdown handling and default timeout.
4
+ */
5
+ export default class FetchInterfaceAdapter {
6
+ #fetchService;
7
+ #timeoutMs;
8
+ constructor(fetchService, options = {}) {
9
+ this.#fetchService = fetchService;
10
+ this.#timeoutMs = options.timeoutMs;
11
+ }
12
+ async fetch(input, init) {
13
+ const { timeoutMs = this.#timeoutMs, ...requestInit } = init ?? {};
14
+ return this.#fetchService.fetch(input, { ...requestInit, timeoutMs });
15
+ }
16
+ }
@@ -26,7 +26,7 @@ export default class SpawnInterfaceAdapter {
26
26
  };
27
27
  const result = await this.#spawnService.spawn(command, {
28
28
  cwd: options.cwd,
29
- stdio: "wrapped",
29
+ mode: "wrapped",
30
30
  onOutput,
31
31
  });
32
32
  await writeQueue;
@@ -70,9 +70,9 @@ export default class DefaultSpawnService {
70
70
  }
71
71
  const printerService = this.#printerService;
72
72
  const shutdownService = this.#shutdownService;
73
- const stdio = options.stdio ?? "inherit";
73
+ const mode = options.mode ?? "inherit";
74
74
  const longRunning = options.longRunning ?? true;
75
- if (stdio === "inherit") {
75
+ if (mode === "inherit") {
76
76
  await printerService.hideSpinner();
77
77
  await printerService.hideAllProgressBars();
78
78
  }
@@ -80,9 +80,9 @@ export default class DefaultSpawnService {
80
80
  try {
81
81
  proc = Bun.spawn(resolveForPlatform(command), {
82
82
  cwd: options.cwd,
83
- stdin: stdio === "wrapped" ? "ignore" : "inherit",
84
- stdout: stdio === "wrapped" ? "pipe" : "inherit",
85
- stderr: stdio === "wrapped" ? "pipe" : "inherit",
83
+ stdin: mode === "inherit" ? "inherit" : "ignore",
84
+ stdout: mode === "wrapped" ? "pipe" : mode === "ignore" ? "ignore" : "inherit",
85
+ stderr: mode === "wrapped" ? "pipe" : mode === "ignore" ? "ignore" : "inherit",
86
86
  });
87
87
  }
88
88
  catch (error) {
@@ -99,7 +99,7 @@ export default class DefaultSpawnService {
99
99
  }
100
100
  await this.#terminate(proc, command);
101
101
  });
102
- if (stdio === "wrapped" && options.onOutput) {
102
+ if (mode === "wrapped" && options.onOutput) {
103
103
  const onOutput = options.onOutput;
104
104
  void this.#pipeLines(proc.stdout, "stdout", onOutput);
105
105
  void this.#pipeLines(proc.stderr, "stderr", onOutput);
@@ -1,11 +1,11 @@
1
- import type { CLIConfig, ShutdownService, SpawnService, UpgradeCheckResult, UpgradeResult } from "@flowscripter/dynamic-cli-framework-api";
1
+ import type { CLIConfig, FetchService, SpawnService, UpgradeCheckResult, UpgradeResult } from "@flowscripter/dynamic-cli-framework-api";
2
2
  import { InstallMethod, SupportedArch, SupportedOs, type UpgradeService } from "@flowscripter/dynamic-cli-framework-api";
3
3
  import type { UpgradeLocationsConfig } from "./UpgradeLocationsConfig.ts";
4
4
  export declare const VERSION_CHECK_TIMEOUT_MS = 250;
5
5
  export default class DefaultUpgradeService implements UpgradeService {
6
6
  #private;
7
7
  constructor(config: UpgradeLocationsConfig, cliConfig: CLIConfig);
8
- setDependencies(spawnService: SpawnService, shutdownService?: ShutdownService): void;
8
+ setDependencies(spawnService: SpawnService | undefined, fetchService: FetchService | undefined): void;
9
9
  getUpgradeCheckResult(waitForResult?: boolean): Promise<UpgradeCheckResult | undefined>;
10
10
  detectOs(): SupportedOs | undefined;
11
11
  detectArch(): SupportedArch | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultUpgradeService.d.ts","sourceRoot":"","sources":["../../../../src/service/upgrade/DefaultUpgradeService.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EAEf,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACd,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,aAAa,EACb,aAAa,EACb,WAAW,EACX,KAAK,cAAc,EACpB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAO1E,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAc5C,MAAM,CAAC,OAAO,OAAO,qBAAsB,YAAW,cAAc;;gBAO/C,MAAM,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS;IAKhE,eAAe,CAAC,YAAY,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE,eAAe,GAAG,IAAI;IAKpF,qBAAqB,CAAC,aAAa,UAAQ,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAerF,QAAQ,IAAI,WAAW,GAAG,SAAS;IAanC,UAAU,IAAI,aAAa,GAAG,SAAS;IAWjC,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAgBxE,eAAe,CAC1B,UAAU,CAAC,EAAE,WAAW,EACxB,YAAY,CAAC,EAAE,aAAa,EAC5B,qBAAqB,CAAC,EAAE,aAAa,GACpC,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAmC7B,OAAO,CAClB,UAAU,CAAC,EAAE,WAAW,EACxB,YAAY,CAAC,EAAE,aAAa,EAC5B,qBAAqB,CAAC,EAAE,aAAa,GACpC,OAAO,CAAC,aAAa,CAAC;CAyQ1B"}
1
+ {"version":3,"file":"DefaultUpgradeService.d.ts","sourceRoot":"","sources":["../../../../src/service/upgrade/DefaultUpgradeService.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EAEZ,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACd,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,aAAa,EACb,aAAa,EACb,WAAW,EACX,KAAK,cAAc,EACpB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAO1E,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAc5C,MAAM,CAAC,OAAO,OAAO,qBAAsB,YAAW,cAAc;;gBAO/C,MAAM,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS;IAKhE,eAAe,CACpB,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,YAAY,EAAE,YAAY,GAAG,SAAS,GACrC,IAAI;IAKA,qBAAqB,CAAC,aAAa,UAAQ,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAerF,QAAQ,IAAI,WAAW,GAAG,SAAS;IAanC,UAAU,IAAI,aAAa,GAAG,SAAS;IAWjC,mBAAmB,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAgBxE,eAAe,CAC1B,UAAU,CAAC,EAAE,WAAW,EACxB,YAAY,CAAC,EAAE,aAAa,EAC5B,qBAAqB,CAAC,EAAE,aAAa,GACpC,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAmC7B,OAAO,CAClB,UAAU,CAAC,EAAE,WAAW,EACxB,YAAY,CAAC,EAAE,aAAa,EAC5B,qBAAqB,CAAC,EAAE,aAAa,GACpC,OAAO,CAAC,aAAa,CAAC;CAuQ1B"}
@@ -21,7 +21,7 @@ const OS_LABELS = {
21
21
  };
22
22
  export default class DefaultUpgradeService {
23
23
  #spawnService;
24
- #shutdownService;
24
+ #fetchService;
25
25
  #upgradeCheckPromise;
26
26
  #config;
27
27
  #cliConfig;
@@ -29,9 +29,9 @@ export default class DefaultUpgradeService {
29
29
  this.#config = config;
30
30
  this.#cliConfig = cliConfig;
31
31
  }
32
- setDependencies(spawnService, shutdownService) {
32
+ setDependencies(spawnService, fetchService) {
33
33
  this.#spawnService = spawnService;
34
- this.#shutdownService = shutdownService;
34
+ this.#fetchService = fetchService;
35
35
  }
36
36
  getUpgradeCheckResult(waitForResult = false) {
37
37
  if (!this.#upgradeCheckPromise) {
@@ -128,6 +128,9 @@ export default class DefaultUpgradeService {
128
128
  if (!this.#spawnService) {
129
129
  return { ok: false, oldVersion, error: new Error("SpawnService is not available") };
130
130
  }
131
+ if (checkResult.installMethod === InstallMethod.GITHUB_RELEASE && !this.#fetchService) {
132
+ return { ok: false, oldVersion, error: new Error("FetchService is not available") };
133
+ }
131
134
  try {
132
135
  switch (checkResult.installMethod) {
133
136
  case InstallMethod.LINUX_SCRIPT:
@@ -156,14 +159,14 @@ export default class DefaultUpgradeService {
156
159
  if (!this.#spawnService || !this.#config.homebrew) {
157
160
  return false;
158
161
  }
159
- const result = await this.#spawnService.spawn(["brew", "list", "--versions", this.#config.homebrew.formula], { stdio: "wrapped", longRunning: false, timeoutMs: VERSION_CHECK_TIMEOUT_MS });
162
+ const result = await this.#spawnService.spawn(["brew", "list", "--versions", this.#config.homebrew.formula], { mode: "ignore", longRunning: false, timeoutMs: VERSION_CHECK_TIMEOUT_MS });
160
163
  return result.ok;
161
164
  }
162
165
  async #isWingetInstalled() {
163
166
  if (!this.#spawnService || !this.#config.winget) {
164
167
  return false;
165
168
  }
166
- const result = await this.#spawnService.spawn(["winget", "list", "--id", this.#config.winget.packageId], { stdio: "wrapped", longRunning: false, timeoutMs: VERSION_CHECK_TIMEOUT_MS });
169
+ const result = await this.#spawnService.spawn(["winget", "list", "--id", this.#config.winget.packageId], { mode: "ignore", longRunning: false, timeoutMs: VERSION_CHECK_TIMEOUT_MS });
167
170
  return result.ok;
168
171
  }
169
172
  #isLinuxScriptInstall() {
@@ -183,12 +186,12 @@ export default class DefaultUpgradeService {
183
186
  }
184
187
  }
185
188
  async #getLatestGithubReleaseVersion() {
186
- if (!this.#config.githubRelease) {
189
+ if (!this.#config.githubRelease || !this.#fetchService) {
187
190
  return undefined;
188
191
  }
189
192
  const { owner, repo } = this.#config.githubRelease;
190
193
  try {
191
- const response = await fetch(`https://api.github.com/repos/${owner}/${repo}/releases/latest`, { signal: AbortSignal.timeout(VERSION_CHECK_TIMEOUT_MS) });
194
+ const response = await this.#fetchService.fetch(`https://api.github.com/repos/${owner}/${repo}/releases/latest`, { timeoutMs: VERSION_CHECK_TIMEOUT_MS });
192
195
  if (!response.ok) {
193
196
  return undefined;
194
197
  }
@@ -201,7 +204,7 @@ export default class DefaultUpgradeService {
201
204
  }
202
205
  }
203
206
  async #getLatestHomebrewVersion() {
204
- if (!this.#config.homebrew) {
207
+ if (!this.#config.homebrew || !this.#fetchService) {
205
208
  return undefined;
206
209
  }
207
210
  const { tap, formula } = this.#config.homebrew;
@@ -210,7 +213,7 @@ export default class DefaultUpgradeService {
210
213
  return undefined;
211
214
  }
212
215
  try {
213
- const response = await fetch(`https://raw.githubusercontent.com/${tapOwner}/homebrew-${tapName}/main/${formula}.rb`, { signal: AbortSignal.timeout(VERSION_CHECK_TIMEOUT_MS) });
216
+ const response = await this.#fetchService.fetch(`https://raw.githubusercontent.com/${tapOwner}/homebrew-${tapName}/main/${formula}.rb`, { timeoutMs: VERSION_CHECK_TIMEOUT_MS });
214
217
  if (!response.ok) {
215
218
  return undefined;
216
219
  }
@@ -228,7 +231,7 @@ export default class DefaultUpgradeService {
228
231
  }
229
232
  const lines = [];
230
233
  const result = await this.#spawnService.spawn(["winget", "show", "--id", this.#config.winget.packageId], {
231
- stdio: "wrapped",
234
+ mode: "wrapped",
232
235
  longRunning: false,
233
236
  timeoutMs: VERSION_CHECK_TIMEOUT_MS,
234
237
  onOutput: (line) => lines.push(line),
@@ -246,14 +249,18 @@ export default class DefaultUpgradeService {
246
249
  }
247
250
  async #upgradeViaLinuxScript() {
248
251
  const { scriptUrl } = this.#config.linuxScript;
249
- const result = await this.#spawnService.spawn(["sh", "-c", `curl -fsSL ${scriptUrl} | sh`]);
252
+ const result = await this.#spawnService.spawn(["sh", "-c", `curl -fsSL ${scriptUrl} | sh`], {
253
+ mode: "ignore",
254
+ });
250
255
  if (!result.ok) {
251
256
  throw new Error(`Install script failed: ${describeSpawnFailure(result)}`);
252
257
  }
253
258
  }
254
259
  async #upgradeViaHomebrew() {
255
260
  const { tap, formula } = this.#config.homebrew;
256
- const result = await this.#spawnService.spawn(["brew", "upgrade", `${tap}/${formula}`]);
261
+ const result = await this.#spawnService.spawn(["brew", "upgrade", `${tap}/${formula}`], {
262
+ mode: "ignore",
263
+ });
257
264
  if (!result.ok) {
258
265
  throw new Error(`brew upgrade failed: ${describeSpawnFailure(result)}`);
259
266
  }
@@ -268,7 +275,7 @@ export default class DefaultUpgradeService {
268
275
  "--silent",
269
276
  "--accept-package-agreements",
270
277
  "--accept-source-agreements",
271
- ]);
278
+ ], { mode: "ignore" });
272
279
  if (!result.ok) {
273
280
  throw new Error(`winget upgrade failed: ${describeSpawnFailure(result)}`);
274
281
  }
@@ -278,20 +285,13 @@ export default class DefaultUpgradeService {
278
285
  const archLabel = os === SupportedOs.MACOS ? "aarch64" : arch === SupportedArch.X64 ? "x64" : "arm64";
279
286
  const assetName = assetPattern.replace("{os}", OS_LABELS[os]).replace("{arch}", archLabel);
280
287
  const url = `https://github.com/${owner}/${repo}/releases/latest/download/${assetName}`;
281
- // Downloading the release asset but enter long-running mode to get cooperative
282
- // Ctrl-C handling during what can be the slowest step of the upgrade.
283
- this.#shutdownService?.enterLongRunningMode();
284
- let archiveData;
285
- try {
286
- const response = await fetch(url);
287
- if (!response.ok) {
288
- throw new Error(`Failed to download release asset '${assetName}': HTTP ${response.status}`);
289
- }
290
- archiveData = await response.arrayBuffer();
291
- }
292
- finally {
293
- this.#shutdownService?.leaveLongRunningMode();
288
+ // longRunning: true gets cooperative Ctrl-C handling during what can be the slowest step of
289
+ // the upgrade.
290
+ const response = await this.#fetchService.fetch(url, { longRunning: true });
291
+ if (!response.ok) {
292
+ throw new Error(`Failed to download release asset '${assetName}': HTTP ${response.status}`);
294
293
  }
294
+ const archiveData = await response.arrayBuffer();
295
295
  const tmpDir = await mkdtemp(join(tmpdir(), "upgrade-"));
296
296
  const archivePath = join(tmpDir, assetName);
297
297
  await Bun.write(archivePath, archiveData);
@@ -301,49 +301,31 @@ export default class DefaultUpgradeService {
301
301
  "powershell",
302
302
  "-Command",
303
303
  `Expand-Archive -Path '${archivePath}' -DestinationPath '${tmpDir}' -Force`,
304
- ]);
304
+ ], { mode: "ignore" });
305
305
  if (!extractResult.ok) {
306
306
  throw new Error("Failed to extract release archive");
307
307
  }
308
308
  const extractedBinary = join(tmpDir, `${this.#cliConfig.name}.exe`);
309
309
  const oldPath = `${currentExecutable}.old.exe`;
310
- const moveResult = await this.#spawnService.spawn([
311
- "cmd",
312
- "/c",
313
- "move",
314
- "/y",
315
- currentExecutable,
316
- oldPath,
317
- ]);
310
+ const moveResult = await this.#spawnService.spawn(["cmd", "/c", "move", "/y", currentExecutable, oldPath], { mode: "ignore" });
318
311
  if (!moveResult.ok) {
319
312
  throw new Error("Failed to move current executable aside");
320
313
  }
321
- const copyResult = await this.#spawnService.spawn([
322
- "cmd",
323
- "/c",
324
- "copy",
325
- "/y",
326
- extractedBinary,
327
- currentExecutable,
328
- ]);
314
+ const copyResult = await this.#spawnService.spawn(["cmd", "/c", "copy", "/y", extractedBinary, currentExecutable], { mode: "ignore" });
329
315
  if (!copyResult.ok) {
330
316
  throw new Error("Failed to copy new executable into place");
331
317
  }
332
318
  }
333
319
  else {
334
- const extractResult = await this.#spawnService.spawn([
335
- "unzip",
336
- "-o",
337
- archivePath,
338
- "-d",
339
- tmpDir,
340
- ]);
320
+ const extractResult = await this.#spawnService.spawn(["unzip", "-o", archivePath, "-d", tmpDir], {
321
+ mode: "ignore",
322
+ });
341
323
  if (!extractResult.ok) {
342
324
  throw new Error("Failed to extract release archive");
343
325
  }
344
326
  const extractedBinary = join(tmpDir, this.#cliConfig.name);
345
327
  await Bun.write(currentExecutable, Bun.file(extractedBinary));
346
- await this.#spawnService.spawn(["chmod", "+x", currentExecutable]);
328
+ await this.#spawnService.spawn(["chmod", "+x", currentExecutable], { mode: "ignore" });
347
329
  }
348
330
  }
349
331
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UpgradeServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/upgrade/UpgradeServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAK1E,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,eAAe;;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAsB;IAChD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;gBAKd,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB;IAKnE,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IASpD,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAkH1D"}
1
+ {"version":3,"file":"UpgradeServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/upgrade/UpgradeServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC5F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAK1E,MAAM,CAAC,OAAO,OAAO,sBAAuB,YAAW,eAAe;;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAsB;IAChD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;gBAKd,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB;IAKnE,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IASpD,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAsH1D"}