@flowscripter/dynamic-cli-framework 5.1.5 → 5.1.7
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/dist/src/service/plugin/DefaultPluginService.d.ts +7 -1
- package/dist/src/service/plugin/DefaultPluginService.d.ts.map +1 -1
- package/dist/src/service/plugin/DefaultPluginService.js +15 -0
- package/dist/src/service/plugin/PluginServiceProvider.d.ts.map +1 -1
- package/dist/src/service/plugin/PluginServiceProvider.js +2 -5
- package/dist/src/service/plugin/command/PluginAddSubCommand.d.ts.map +1 -1
- package/dist/src/service/plugin/command/PluginAddSubCommand.js +10 -0
- package/dist/src/service/printer/DefaultPrinterService.d.ts +0 -1
- package/dist/src/service/printer/DefaultPrinterService.d.ts.map +1 -1
- package/dist/src/service/printer/DefaultPrinterService.js +0 -3
- package/dist/src/service/printer/terminal/Quote.d.ts.map +1 -1
- package/dist/src/service/printer/terminal/Quote.js +4 -1
- package/dist/src/terminal/Ansi.d.ts +0 -2
- package/dist/src/terminal/Ansi.d.ts.map +1 -1
- package/dist/src/terminal/Ansi.js +0 -2
- package/dist/src/terminal/Styler.d.ts +0 -1
- package/dist/src/terminal/Styler.d.ts.map +1 -1
- package/dist/src/terminal/TtyStyler.d.ts +0 -1
- package/dist/src/terminal/TtyStyler.d.ts.map +1 -1
- package/dist/src/terminal/TtyStyler.js +1 -7
- package/package.json +3 -3
- package/src/service/plugin/DefaultPluginService.ts +20 -0
- package/src/service/plugin/PluginServiceProvider.ts +2 -5
- package/src/service/plugin/command/PluginAddSubCommand.ts +14 -0
- package/src/service/printer/DefaultPrinterService.ts +0 -4
- package/src/service/printer/terminal/Quote.ts +4 -1
- package/src/terminal/Ansi.ts +0 -2
- package/src/terminal/Styler.ts +0 -1
- package/src/terminal/TtyStyler.ts +0 -9
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import type { PluginService } from "@flowscripter/dynamic-cli-framework-api";
|
|
2
2
|
import type { KeyValueService } from "@flowscripter/dynamic-cli-framework-api";
|
|
3
|
-
import type { MarketplacePluginManager, SearchQuery, VersionedPluginDescriptor, NpmjsPluginRepositoryConfig, NpmPluginRepositoryConfig } from "@flowscripter/dynamic-plugin-framework";
|
|
3
|
+
import type { MarketplacePluginManager, SearchQuery, VersionedPluginDescriptor, NpmjsPluginRepositoryConfig, NpmPluginRepositoryConfig, FetchInterface } from "@flowscripter/dynamic-plugin-framework";
|
|
4
4
|
export default class DefaultPluginService implements PluginService {
|
|
5
5
|
#private;
|
|
6
6
|
constructor(remoteConfig: NpmjsPluginRepositoryConfig, localConfig: NpmPluginRepositoryConfig);
|
|
7
7
|
get pluginManager(): MarketplacePluginManager;
|
|
8
8
|
applyKeyValueOverrides(keyValueService: KeyValueService): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Supply the {@link FetchInterface} for the underlying `pluginManager` to delegate fetch calls
|
|
11
|
+
* to, so it respects the host CLI's shutdown handling and default timeout.
|
|
12
|
+
*/
|
|
13
|
+
setFetch(fetchInterface: FetchInterface): void;
|
|
14
|
+
checkAvailable(pluginId: string, version?: string): Promise<boolean>;
|
|
9
15
|
search(query: Readonly<SearchQuery>): AsyncIterable<Readonly<VersionedPluginDescriptor>>;
|
|
10
16
|
install(descriptor: Readonly<VersionedPluginDescriptor>): Promise<void>;
|
|
11
17
|
uninstall(pluginId: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultPluginService.d.ts","sourceRoot":"","sources":["../../../../src/service/plugin/DefaultPluginService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EACX,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,
|
|
1
|
+
{"version":3,"file":"DefaultPluginService.d.ts","sourceRoot":"","sources":["../../../../src/service/plugin/DefaultPluginService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EACX,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EAEzB,cAAc,EACf,MAAM,wCAAwC,CAAC;AAWhD,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,aAAa;;gBAKpD,YAAY,EAAE,2BAA2B,EAAE,WAAW,EAAE,yBAAyB;IAS7F,IAAI,aAAa,IAAI,wBAAwB,CAE5C;IAEK,sBAAsB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB7E;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAMxC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IAIlF,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,aAAa,IAAI,aAAa,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IAInE,eAAe,IAAI,aAAa,CAAC;QAC/B,UAAU,EAAE,QAAQ,CAAC,yBAAyB,CAAC,CAAC;QAChD,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CAGH"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { NpmPluginManager, NpmjsPluginRepository, NpmPluginRepository, } from "@flowscripter/dynamic-plugin-framework";
|
|
2
|
+
function isFetchCapable(value) {
|
|
3
|
+
return typeof value === "object" && value !== null && "setFetch" in value;
|
|
4
|
+
}
|
|
2
5
|
export default class DefaultPluginService {
|
|
3
6
|
#defaultRemoteConfig;
|
|
4
7
|
#defaultLocalConfig;
|
|
@@ -22,6 +25,18 @@ export default class DefaultPluginService {
|
|
|
22
25
|
}
|
|
23
26
|
this.#pluginManager = new NpmPluginManager(remotesConfig.map((config) => new NpmjsPluginRepository(config)), new NpmPluginRepository(localConfig));
|
|
24
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Supply the {@link FetchInterface} for the underlying `pluginManager` to delegate fetch calls
|
|
30
|
+
* to, so it respects the host CLI's shutdown handling and default timeout.
|
|
31
|
+
*/
|
|
32
|
+
setFetch(fetchInterface) {
|
|
33
|
+
if (isFetchCapable(this.#pluginManager)) {
|
|
34
|
+
this.#pluginManager.setFetch(fetchInterface);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async checkAvailable(pluginId, version) {
|
|
38
|
+
return this.#pluginManager.checkAvailable(pluginId, version);
|
|
39
|
+
}
|
|
25
40
|
search(query) {
|
|
26
41
|
return this.#pluginManager.search(query);
|
|
27
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/plugin/PluginServiceProvider.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;AAWzE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"PluginServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/service/plugin/PluginServiceProvider.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;AAWzE,OAAO,KAAK,EACV,2BAA2B,EAC3B,yBAAyB,EAE1B,MAAM,wCAAwC,CAAC;AAIhD,OAA8B,EAC5B,KAAK,4BAA4B,EAClC,MAAM,4BAA4B,CAAC;AACpC,OAA8B,EAC5B,KAAK,4BAA4B,EAClC,MAAM,4BAA4B,CAAC;AACpC,OAAO,sBAAsB,MAAM,kDAAkD,CAAC;AACtF,OAAO,8BAA8B,MAAM,0DAA0D,CAAC;AAMtG,MAAM,CAAC,OAAO,OAAO,qBAAsB,YAAW,eAAe;;IACnE,QAAQ,CAAC,SAAS,oBAAqB;IACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;gBAW/B,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,2BAA2B,EACzC,WAAW,EAAE,yBAAyB,EACtC,eAAe,EAAE,sBAAsB,EACvC,uBAAuB,EAAE,8BAA8B,EACvD,4BAA4B,GAAE,4BAAiC,EAC/D,4BAA4B,GAAE,4BAAiC;IAW3D,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAS1D,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAiEnD"}
|
|
@@ -60,15 +60,12 @@ export default class PluginServiceProvider {
|
|
|
60
60
|
pluginManager.setSpawn(adapter);
|
|
61
61
|
}
|
|
62
62
|
if (!context.doesServiceExist(FETCH_SERVICE_ID)) {
|
|
63
|
-
logger.debug("FetchService not available, plugin
|
|
64
|
-
}
|
|
65
|
-
else if (!("setFetch" in pluginManager)) {
|
|
66
|
-
logger.debug("Plugin manager does not support FetchCapable, skipping fetch injection");
|
|
63
|
+
logger.debug("FetchService not available, plugin service will fetch directly");
|
|
67
64
|
}
|
|
68
65
|
else {
|
|
69
66
|
const fetchService = context.getServiceById(FETCH_SERVICE_ID);
|
|
70
67
|
const adapter = new FetchInterfaceAdapter(fetchService, this.#fetchInterfaceAdapterOptions);
|
|
71
|
-
|
|
68
|
+
pluginService.setFetch(adapter);
|
|
72
69
|
}
|
|
73
70
|
await pluginManager.registerExtensions(DYNAMIC_CLI_FRAMEWORK_COMMAND_FACTORY_EXTENSION_POINT);
|
|
74
71
|
await pluginManager.registerExtensions(DYNAMIC_CLI_FRAMEWORK_SERVICE_PROVIDER_FACTORY_EXTENSION_POINT);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginAddSubCommand.d.ts","sourceRoot":"","sources":["../../../../../src/service/plugin/command/PluginAddSubCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AASxE,qBAAa,mBAAoB,YAAW,UAAU;IACpD,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,WAAW,6BAA6B;IACjD,QAAQ,CAAC,mBAAmB,SAAS;IACrC,QAAQ,CAAC,OAAO,UAAM;IACtB,QAAQ,CAAC,WAAW;;;;QAMlB;IAEI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"PluginAddSubCommand.d.ts","sourceRoot":"","sources":["../../../../../src/service/plugin/command/PluginAddSubCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AASxE,qBAAa,mBAAoB,YAAW,UAAU;IACpD,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,WAAW,6BAA6B;IACjD,QAAQ,CAAC,mBAAmB,SAAS;IACrC,QAAQ,CAAC,OAAO,UAAM;IACtB,QAAQ,CAAC,WAAW;;;;QAMlB;IAEI,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgEvE"}
|
|
@@ -52,6 +52,16 @@ export class PluginAddSubCommand {
|
|
|
52
52
|
const installLabel = descriptor.version && descriptor.version !== "latest"
|
|
53
53
|
? `${descriptor.pluginId}@${descriptor.version}`
|
|
54
54
|
: descriptor.pluginId;
|
|
55
|
+
// Confirm the package (and specific version/tag, if requested) actually exists on the
|
|
56
|
+
// remote marketplace before invoking the package manager - so a non-existent plugin or
|
|
57
|
+
// version is reported clearly instead of failing later (and less clearly) inside
|
|
58
|
+
// `bun add`/`npm install`.
|
|
59
|
+
const versionToCheck = descriptor.version === "latest" ? undefined : descriptor.version;
|
|
60
|
+
if (!(await pluginService.checkAvailable(descriptor.pluginId, versionToCheck))) {
|
|
61
|
+
throw new Error(versionToCheck
|
|
62
|
+
? `Version ${versionToCheck} of plugin ${descriptor.pluginId} was not found in the configured plugin registry`
|
|
63
|
+
: `Plugin ${descriptor.pluginId} was not found in the configured plugin registry`);
|
|
64
|
+
}
|
|
55
65
|
await printerService.info(`Installing ${installLabel}...\n`, Icon.INFORMATION);
|
|
56
66
|
await pluginService.install(descriptor);
|
|
57
67
|
await printerService.print(`Plugin ${descriptor.pluginId} installed.\n`, Icon.SUCCESS);
|
|
@@ -22,7 +22,6 @@ export default class DefaultPrinterService implements PrinterService {
|
|
|
22
22
|
emphasised(message: string): string;
|
|
23
23
|
selected(message: string): string;
|
|
24
24
|
italic(message: string): string;
|
|
25
|
-
dim(message: string): string;
|
|
26
25
|
yellow(message: string): string;
|
|
27
26
|
orange(message: string): string;
|
|
28
27
|
red(message: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultPrinterService.d.ts","sourceRoot":"","sources":["../../../../src/service/printer/DefaultPrinterService.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,EACL,KAAK,IAAI,EACT,KAAK,EACL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,QAAQ,MAAM,4BAA4B,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,qBAAsB,YAAW,cAAc;;IAClE,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;gBAyCtC,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;IAgBhB,IAAI,YAAY,CAAC,OAAO,EAAE,OAAO,EAQhC;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAErC;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAEM,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAI5C,aAAa,IAAI,MAAM;IAIvB,aAAa,IAAI,MAAM;IAI9B,IAAI,QAAQ,CAAC,UAAU,EAAE,OAAO,EAa/B;IAED,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAEM,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIhC,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIlC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAInC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIjC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI/B,
|
|
1
|
+
{"version":3,"file":"DefaultPrinterService.d.ts","sourceRoot":"","sources":["../../../../src/service/printer/DefaultPrinterService.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,9 +118,6 @@ export default class DefaultPrinterService {
|
|
|
118
118
|
italic(message) {
|
|
119
119
|
return this.#styler.italicText(message);
|
|
120
120
|
}
|
|
121
|
-
dim(message) {
|
|
122
|
-
return this.#styler.dimText(message);
|
|
123
|
-
}
|
|
124
121
|
yellow(message) {
|
|
125
122
|
return this.#styler.colorText(message, this.#theme[Color.YELLOW]);
|
|
126
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Quote.d.ts","sourceRoot":"","sources":["../../../../../src/service/printer/terminal/Quote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AAWtD,MAAM,CAAC,OAAO,OAAO,KAAK;;gBAIL,MAAM,EAAE,MAAM;IAIjC,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAEM,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzB,GAAG,IAAI,IAAI;IA6BX,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"Quote.d.ts","sourceRoot":"","sources":["../../../../../src/service/printer/terminal/Quote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AAWtD,MAAM,CAAC,OAAO,OAAO,KAAK;;gBAIL,MAAM,EAAE,MAAM;IAIjC,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAEM,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIzB,GAAG,IAAI,IAAI;IA6BX,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAY5C"}
|
|
@@ -44,7 +44,10 @@ export default class Quote {
|
|
|
44
44
|
}
|
|
45
45
|
const endsWithNewline = message.endsWith("\n");
|
|
46
46
|
const raw = endsWithNewline ? message.slice(0, -1) : message;
|
|
47
|
-
const
|
|
47
|
+
const color = this.#levels[this.#levels.length - 1].color;
|
|
48
|
+
const lines = raw
|
|
49
|
+
.split("\n")
|
|
50
|
+
.map((line) => this.#prefixLine() + this.#styler.colorText(line, color));
|
|
48
51
|
return lines.join("\n") + (endsWithNewline ? "\n" : "");
|
|
49
52
|
}
|
|
50
53
|
}
|
|
@@ -5,8 +5,6 @@ export declare const HIDE_CURSOR: string;
|
|
|
5
5
|
export declare const SHOW_CURSOR: string;
|
|
6
6
|
export declare const ITALIC_START: string;
|
|
7
7
|
export declare const ITALIC_END: string;
|
|
8
|
-
export declare const DIM_START: string;
|
|
9
|
-
export declare const DIM_END: string;
|
|
10
8
|
export declare const FOREGROUND_COLOR_END: string;
|
|
11
9
|
export declare const BACKGROUND_COLOR_END: string;
|
|
12
10
|
export declare const HYPERLINK_END = "\u001B]8;;\u0007";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ansi.d.ts","sourceRoot":"","sources":["../../../src/terminal/Ansi.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,QAAa,CAAC;AACrC,eAAO,MAAM,WAAW,QAAY,CAAC;AACrC,eAAO,MAAM,SAAS,QAAa,CAAC;AACpC,eAAO,MAAM,WAAW,QAAe,CAAC;AACxC,eAAO,MAAM,WAAW,QAAe,CAAC;AACxC,eAAO,MAAM,YAAY,QAAa,CAAC;AACvC,eAAO,MAAM,UAAU,QAAc,CAAC;AACtC,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"Ansi.d.ts","sourceRoot":"","sources":["../../../src/terminal/Ansi.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,QAAa,CAAC;AACrC,eAAO,MAAM,WAAW,QAAY,CAAC;AACrC,eAAO,MAAM,SAAS,QAAa,CAAC;AACpC,eAAO,MAAM,WAAW,QAAe,CAAC;AACxC,eAAO,MAAM,WAAW,QAAe,CAAC;AACxC,eAAO,MAAM,YAAY,QAAa,CAAC;AACvC,eAAO,MAAM,UAAU,QAAc,CAAC;AACtC,eAAO,MAAM,oBAAoB,QAAc,CAAC;AAChD,eAAO,MAAM,oBAAoB,QAAc,CAAC;AAChD,eAAO,MAAM,aAAa,qBAA8B,CAAC;AAEzD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
|
@@ -9,8 +9,6 @@ export const HIDE_CURSOR = CSI + "?25l";
|
|
|
9
9
|
export const SHOW_CURSOR = CSI + "?25h";
|
|
10
10
|
export const ITALIC_START = CSI + "3m";
|
|
11
11
|
export const ITALIC_END = CSI + "23m";
|
|
12
|
-
export const DIM_START = CSI + "2m";
|
|
13
|
-
export const DIM_END = CSI + "22m";
|
|
14
12
|
export const FOREGROUND_COLOR_END = CSI + "39m";
|
|
15
13
|
export const BACKGROUND_COLOR_END = CSI + "49m";
|
|
16
14
|
export const HYPERLINK_END = `${OSC}8${SEP}${SEP}${BEL}`;
|
|
@@ -4,7 +4,6 @@ export default interface Styler {
|
|
|
4
4
|
colorText(text: string, colorValue: number): string;
|
|
5
5
|
backgroundColorText(text: string, colorValue: number): string;
|
|
6
6
|
italicText(text: string): string;
|
|
7
|
-
dimText(text: string): string;
|
|
8
7
|
hyperlink(text: string, url: string): string;
|
|
9
8
|
}
|
|
10
9
|
//# sourceMappingURL=Styler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Styler.d.ts","sourceRoot":"","sources":["../../../src/terminal/Styler.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,MAAM;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IACpD,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9D,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,
|
|
1
|
+
{"version":3,"file":"Styler.d.ts","sourceRoot":"","sources":["../../../src/terminal/Styler.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,MAAM;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IACpD,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9D,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9C"}
|
|
@@ -15,7 +15,6 @@ export default class TtyStyler implements Styler {
|
|
|
15
15
|
colorText(text: string, colorValue: number): string;
|
|
16
16
|
backgroundColorText(text: string, colorValue: number): string;
|
|
17
17
|
italicText(text: string): string;
|
|
18
|
-
dimText(text: string): string;
|
|
19
18
|
hyperlink(text: string, url: string): string;
|
|
20
19
|
}
|
|
21
20
|
//# sourceMappingURL=TtyStyler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TtyStyler.d.ts","sourceRoot":"","sources":["../../../src/terminal/TtyStyler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TtyStyler.d.ts","sourceRoot":"","sources":["../../../src/terminal/TtyStyler.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,OAAO,OAAO,SAAU,YAAW,MAAM;IAC9C,YAAY,EAAE,OAAO,CAAQ;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAE3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;;;;;;OAOG;gBACS,UAAU,GAAE,MAAU,EAAE,iBAAiB,GAAE,OAAc;IAKrE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAgBnD,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAyB7D,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOhC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;CAM7C"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BACKGROUND_COLOR_END,
|
|
1
|
+
import { BACKGROUND_COLOR_END, FOREGROUND_COLOR_END, HYPERLINK_END, hyperlinkStart, ITALIC_END, ITALIC_START, } from "./Ansi.js";
|
|
2
2
|
export default class TtyStyler {
|
|
3
3
|
colorEnabled = true;
|
|
4
4
|
hyperlinksEnabled;
|
|
@@ -50,12 +50,6 @@ export default class TtyStyler {
|
|
|
50
50
|
}
|
|
51
51
|
return ITALIC_START + text + ITALIC_END;
|
|
52
52
|
}
|
|
53
|
-
dimText(text) {
|
|
54
|
-
if (!this.colorEnabled || this.colorLevel === 0) {
|
|
55
|
-
return text;
|
|
56
|
-
}
|
|
57
|
-
return DIM_START + text + DIM_END;
|
|
58
|
-
}
|
|
59
53
|
hyperlink(text, url) {
|
|
60
54
|
if (!this.hyperlinksEnabled) {
|
|
61
55
|
return `${text}: ${url}`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowscripter/dynamic-cli-framework",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.7",
|
|
4
4
|
"description": "A framework for developing CLI applications which supports dynamic discovery and installation of new commands",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"build": "tsc -p tsconfig.build.json"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@flowscripter/dynamic-cli-framework-api": "^2.
|
|
52
|
-
"@flowscripter/dynamic-plugin-framework": "2.
|
|
51
|
+
"@flowscripter/dynamic-cli-framework-api": "^2.3.0",
|
|
52
|
+
"@flowscripter/dynamic-plugin-framework": "^2.2.1",
|
|
53
53
|
"emphasize": "^7.0.0",
|
|
54
54
|
"fastest-levenshtein": "^1.0.16",
|
|
55
55
|
"figlet": "^1.11.0",
|
|
@@ -6,6 +6,8 @@ import type {
|
|
|
6
6
|
VersionedPluginDescriptor,
|
|
7
7
|
NpmjsPluginRepositoryConfig,
|
|
8
8
|
NpmPluginRepositoryConfig,
|
|
9
|
+
FetchCapable,
|
|
10
|
+
FetchInterface,
|
|
9
11
|
} from "@flowscripter/dynamic-plugin-framework";
|
|
10
12
|
import {
|
|
11
13
|
NpmPluginManager,
|
|
@@ -13,6 +15,10 @@ import {
|
|
|
13
15
|
NpmPluginRepository,
|
|
14
16
|
} from "@flowscripter/dynamic-plugin-framework";
|
|
15
17
|
|
|
18
|
+
function isFetchCapable(value: unknown): value is FetchCapable {
|
|
19
|
+
return typeof value === "object" && value !== null && "setFetch" in value;
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
export default class DefaultPluginService implements PluginService {
|
|
17
23
|
readonly #defaultRemoteConfig: NpmjsPluginRepositoryConfig;
|
|
18
24
|
readonly #defaultLocalConfig: NpmPluginRepositoryConfig;
|
|
@@ -50,6 +56,20 @@ export default class DefaultPluginService implements PluginService {
|
|
|
50
56
|
);
|
|
51
57
|
}
|
|
52
58
|
|
|
59
|
+
/**
|
|
60
|
+
* Supply the {@link FetchInterface} for the underlying `pluginManager` to delegate fetch calls
|
|
61
|
+
* to, so it respects the host CLI's shutdown handling and default timeout.
|
|
62
|
+
*/
|
|
63
|
+
setFetch(fetchInterface: FetchInterface): void {
|
|
64
|
+
if (isFetchCapable(this.#pluginManager)) {
|
|
65
|
+
this.#pluginManager.setFetch(fetchInterface);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
async checkAvailable(pluginId: string, version?: string): Promise<boolean> {
|
|
70
|
+
return this.#pluginManager.checkAvailable(pluginId, version);
|
|
71
|
+
}
|
|
72
|
+
|
|
53
73
|
search(query: Readonly<SearchQuery>): AsyncIterable<Readonly<VersionedPluginDescriptor>> {
|
|
54
74
|
return this.#pluginManager.search(query);
|
|
55
75
|
}
|
|
@@ -12,7 +12,6 @@ import { DYNAMIC_CLI_FRAMEWORK_SERVICE_PROVIDER_FACTORY_EXTENSION_POINT } from "
|
|
|
12
12
|
import type { CommandFactory } from "@flowscripter/dynamic-cli-framework-api";
|
|
13
13
|
import type { ServiceProviderFactory } from "@flowscripter/dynamic-cli-framework-api";
|
|
14
14
|
import type {
|
|
15
|
-
FetchCapable,
|
|
16
15
|
NpmjsPluginRepositoryConfig,
|
|
17
16
|
NpmPluginRepositoryConfig,
|
|
18
17
|
SpawnCapable,
|
|
@@ -98,13 +97,11 @@ export default class PluginServiceProvider implements ServiceProvider {
|
|
|
98
97
|
}
|
|
99
98
|
|
|
100
99
|
if (!context.doesServiceExist(FETCH_SERVICE_ID)) {
|
|
101
|
-
logger.debug("FetchService not available, plugin
|
|
102
|
-
} else if (!("setFetch" in pluginManager)) {
|
|
103
|
-
logger.debug("Plugin manager does not support FetchCapable, skipping fetch injection");
|
|
100
|
+
logger.debug("FetchService not available, plugin service will fetch directly");
|
|
104
101
|
} else {
|
|
105
102
|
const fetchService = context.getServiceById(FETCH_SERVICE_ID) as FetchService;
|
|
106
103
|
const adapter = new FetchInterfaceAdapter(fetchService, this.#fetchInterfaceAdapterOptions);
|
|
107
|
-
|
|
104
|
+
pluginService.setFetch(adapter);
|
|
108
105
|
}
|
|
109
106
|
|
|
110
107
|
await pluginManager.registerExtensions(DYNAMIC_CLI_FRAMEWORK_COMMAND_FACTORY_EXTENSION_POINT);
|
|
@@ -69,6 +69,20 @@ export class PluginAddSubCommand implements SubCommand {
|
|
|
69
69
|
descriptor.version && descriptor.version !== "latest"
|
|
70
70
|
? `${descriptor.pluginId}@${descriptor.version}`
|
|
71
71
|
: descriptor.pluginId;
|
|
72
|
+
|
|
73
|
+
// Confirm the package (and specific version/tag, if requested) actually exists on the
|
|
74
|
+
// remote marketplace before invoking the package manager - so a non-existent plugin or
|
|
75
|
+
// version is reported clearly instead of failing later (and less clearly) inside
|
|
76
|
+
// `bun add`/`npm install`.
|
|
77
|
+
const versionToCheck = descriptor.version === "latest" ? undefined : descriptor.version;
|
|
78
|
+
if (!(await pluginService.checkAvailable(descriptor.pluginId, versionToCheck))) {
|
|
79
|
+
throw new Error(
|
|
80
|
+
versionToCheck
|
|
81
|
+
? `Version ${versionToCheck} of plugin ${descriptor.pluginId} was not found in the configured plugin registry`
|
|
82
|
+
: `Plugin ${descriptor.pluginId} was not found in the configured plugin registry`,
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
|
|
72
86
|
await printerService.info(`Installing ${installLabel}...\n`, Icon.INFORMATION);
|
|
73
87
|
await pluginService.install(descriptor);
|
|
74
88
|
await printerService.print(`Plugin ${descriptor.pluginId} installed.\n`, Icon.SUCCESS);
|
|
@@ -152,10 +152,6 @@ export default class DefaultPrinterService implements PrinterService {
|
|
|
152
152
|
return this.#styler.italicText(message);
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
-
public dim(message: string): string {
|
|
156
|
-
return this.#styler.dimText(message);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
155
|
public yellow(message: string): string {
|
|
160
156
|
return this.#styler.colorText(message, this.#theme[Color.YELLOW]!);
|
|
161
157
|
}
|
|
@@ -60,7 +60,10 @@ export default class Quote {
|
|
|
60
60
|
}
|
|
61
61
|
const endsWithNewline = message.endsWith("\n");
|
|
62
62
|
const raw = endsWithNewline ? message.slice(0, -1) : message;
|
|
63
|
-
const
|
|
63
|
+
const color = this.#levels[this.#levels.length - 1]!.color;
|
|
64
|
+
const lines = raw
|
|
65
|
+
.split("\n")
|
|
66
|
+
.map((line) => this.#prefixLine() + this.#styler.colorText(line, color));
|
|
64
67
|
return lines.join("\n") + (endsWithNewline ? "\n" : "");
|
|
65
68
|
}
|
|
66
69
|
}
|
package/src/terminal/Ansi.ts
CHANGED
|
@@ -10,8 +10,6 @@ export const HIDE_CURSOR = CSI + "?25l";
|
|
|
10
10
|
export const SHOW_CURSOR = CSI + "?25h";
|
|
11
11
|
export const ITALIC_START = CSI + "3m";
|
|
12
12
|
export const ITALIC_END = CSI + "23m";
|
|
13
|
-
export const DIM_START = CSI + "2m";
|
|
14
|
-
export const DIM_END = CSI + "22m";
|
|
15
13
|
export const FOREGROUND_COLOR_END = CSI + "39m";
|
|
16
14
|
export const BACKGROUND_COLOR_END = CSI + "49m";
|
|
17
15
|
export const HYPERLINK_END = `${OSC}8${SEP}${SEP}${BEL}`;
|
package/src/terminal/Styler.ts
CHANGED
|
@@ -4,6 +4,5 @@ export default interface Styler {
|
|
|
4
4
|
colorText(text: string, colorValue: number): string;
|
|
5
5
|
backgroundColorText(text: string, colorValue: number): string;
|
|
6
6
|
italicText(text: string): string;
|
|
7
|
-
dimText(text: string): string;
|
|
8
7
|
hyperlink(text: string, url: string): string;
|
|
9
8
|
}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BACKGROUND_COLOR_END,
|
|
3
|
-
DIM_END,
|
|
4
|
-
DIM_START,
|
|
5
3
|
FOREGROUND_COLOR_END,
|
|
6
4
|
HYPERLINK_END,
|
|
7
5
|
hyperlinkStart,
|
|
@@ -77,13 +75,6 @@ export default class TtyStyler implements Styler {
|
|
|
77
75
|
return ITALIC_START + text + ITALIC_END;
|
|
78
76
|
}
|
|
79
77
|
|
|
80
|
-
dimText(text: string): string {
|
|
81
|
-
if (!this.colorEnabled || this.colorLevel === 0) {
|
|
82
|
-
return text;
|
|
83
|
-
}
|
|
84
|
-
return DIM_START + text + DIM_END;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
78
|
hyperlink(text: string, url: string): string {
|
|
88
79
|
if (!this.hyperlinksEnabled) {
|
|
89
80
|
return `${text}: ${url}`;
|