@gunshi/plugin 0.32.0 → 0.33.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.
- package/lib/index.d.ts +80 -51
- package/package.json +2 -2
package/lib/index.d.ts
CHANGED
|
@@ -581,15 +581,6 @@ type ArgExplicitlyProvided<A extends Args> = { [K in keyof A]: boolean };
|
|
|
581
581
|
*/
|
|
582
582
|
//#endregion
|
|
583
583
|
//#region ../gunshi/src/plugin/context.d.ts
|
|
584
|
-
/**
|
|
585
|
-
* Type helper to create GunshiParams from extracted args and extensions
|
|
586
|
-
*
|
|
587
|
-
* @internal
|
|
588
|
-
*/
|
|
589
|
-
type ExtractedParams<G extends GunshiParamsConstraint, L extends Record<string, unknown> = {}> = {
|
|
590
|
-
args: ExtractArgs<G>;
|
|
591
|
-
extensions: ExtractExtensions<G> & L;
|
|
592
|
-
};
|
|
593
584
|
/**
|
|
594
585
|
* Gunshi plugin context interface.
|
|
595
586
|
*
|
|
@@ -638,7 +629,7 @@ interface PluginContext<G extends GunshiParamsConstraint = DefaultGunshiParams>
|
|
|
638
629
|
*
|
|
639
630
|
* @param decorator - A decorator function that wraps the base header renderer.
|
|
640
631
|
*/
|
|
641
|
-
decorateHeaderRenderer<L extends Record<string, unknown> = DefaultGunshiParams['extensions']>(decorator: (baseRenderer: (ctx: Readonly<CommandContext<
|
|
632
|
+
decorateHeaderRenderer<L extends Record<string, unknown> = DefaultGunshiParams['extensions']>(decorator: (baseRenderer: (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Promise<string>, ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Promise<string>): void;
|
|
642
633
|
/**
|
|
643
634
|
* Decorate the usage renderer.
|
|
644
635
|
*
|
|
@@ -646,7 +637,7 @@ interface PluginContext<G extends GunshiParamsConstraint = DefaultGunshiParams>
|
|
|
646
637
|
*
|
|
647
638
|
* @param decorator - A decorator function that wraps the base usage renderer.
|
|
648
639
|
*/
|
|
649
|
-
decorateUsageRenderer<L extends Record<string, unknown> = DefaultGunshiParams['extensions']>(decorator: (baseRenderer: (ctx: Readonly<CommandContext<
|
|
640
|
+
decorateUsageRenderer<L extends Record<string, unknown> = DefaultGunshiParams['extensions']>(decorator: (baseRenderer: (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Promise<string>, ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Promise<string>): void;
|
|
650
641
|
/**
|
|
651
642
|
* Decorate the validation errors renderer.
|
|
652
643
|
*
|
|
@@ -654,7 +645,7 @@ interface PluginContext<G extends GunshiParamsConstraint = DefaultGunshiParams>
|
|
|
654
645
|
*
|
|
655
646
|
* @param decorator - A decorator function that wraps the base validation errors renderer.
|
|
656
647
|
*/
|
|
657
|
-
decorateValidationErrorsRenderer<L extends Record<string, unknown> = DefaultGunshiParams['extensions']>(decorator: (baseRenderer: (ctx: Readonly<CommandContext<
|
|
648
|
+
decorateValidationErrorsRenderer<L extends Record<string, unknown> = DefaultGunshiParams['extensions']>(decorator: (baseRenderer: (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>, error: AggregateError) => Promise<string>, ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>, error: AggregateError) => Promise<string>): void;
|
|
658
649
|
/**
|
|
659
650
|
* Decorate the command execution.
|
|
660
651
|
*
|
|
@@ -664,7 +655,7 @@ interface PluginContext<G extends GunshiParamsConstraint = DefaultGunshiParams>
|
|
|
664
655
|
*
|
|
665
656
|
* @param decorator - A decorator function that wraps the command runner
|
|
666
657
|
*/
|
|
667
|
-
decorateCommand<L extends Record<string, unknown> = DefaultGunshiParams['extensions']>(decorator: (baseRunner: (ctx: Readonly<CommandContext<
|
|
658
|
+
decorateCommand<L extends Record<string, unknown> = DefaultGunshiParams['extensions']>(decorator: (baseRunner: (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Awaitable<void | string>) => (ctx: Readonly<CommandContext<MergeGunshiExtensions<G, L>>>) => Awaitable<void | string>): void;
|
|
668
659
|
}
|
|
669
660
|
//#endregion
|
|
670
661
|
//#region ../gunshi/src/plugin/core.d.ts
|
|
@@ -730,6 +721,36 @@ type PluginExtension<T = Record<string, unknown>, G extends GunshiParams = Defau
|
|
|
730
721
|
type OnPluginExtension<G extends GunshiParams = DefaultGunshiParams> = (ctx: Readonly<CommandContext<G>>, cmd: Readonly<Command<G>>) => Awaitable<void>;
|
|
731
722
|
type IsStringLiteral<S extends string> = string extends S ? false : true;
|
|
732
723
|
type MergeExtension<Id, ResolvedDepExt extends ExtendContext, PluginExt extends ExtendContext> = Id extends infer I ? I extends string ? IsStringLiteral<I> extends true ? ResolvedDepExt & { [K in I]: PluginExt } : ResolvedDepExt : ResolvedDepExt : ResolvedDepExt;
|
|
724
|
+
/**
|
|
725
|
+
* Extensions resolved from the declared plugin dependencies.
|
|
726
|
+
*
|
|
727
|
+
* @internal
|
|
728
|
+
*/
|
|
729
|
+
type DependencyExtensions<Deps extends ReadonlyArray<PluginDependency | string>, Context extends ExtendContext> = InferDependencyExtensions<Deps, Context>;
|
|
730
|
+
/**
|
|
731
|
+
* Gunshi params available while a plugin extension resolves its dependencies.
|
|
732
|
+
*
|
|
733
|
+
* @internal
|
|
734
|
+
*/
|
|
735
|
+
type DependencyParams<Deps extends ReadonlyArray<PluginDependency | string>, Context extends ExtendContext> = GunshiParams<{
|
|
736
|
+
args: Args;
|
|
737
|
+
extensions: DependencyExtensions<Deps, Context>;
|
|
738
|
+
}>;
|
|
739
|
+
/**
|
|
740
|
+
* Extensions available after applying the current plugin extension.
|
|
741
|
+
*
|
|
742
|
+
* @internal
|
|
743
|
+
*/
|
|
744
|
+
type MergedPluginExtensions<Id extends string, Deps extends ReadonlyArray<PluginDependency | string>, Context extends ExtendContext, Ext extends ExtendContext> = MergeExtension<Id, DependencyExtensions<Deps, Context>, Ext>;
|
|
745
|
+
/**
|
|
746
|
+
* Gunshi params available after applying the current plugin extension.
|
|
747
|
+
*
|
|
748
|
+
* @internal
|
|
749
|
+
*/
|
|
750
|
+
type MergedPluginParams<Id extends string, Deps extends ReadonlyArray<PluginDependency | string>, Context extends ExtendContext, Ext extends ExtendContext> = GunshiParams<{
|
|
751
|
+
args: Args;
|
|
752
|
+
extensions: MergedPluginExtensions<Id, Deps, Context, Ext>;
|
|
753
|
+
}>;
|
|
733
754
|
/**
|
|
734
755
|
* Plugin definition options
|
|
735
756
|
*
|
|
@@ -743,13 +764,7 @@ Deps extends ReadonlyArray<PluginDependency | string> = (PluginDependency | stri
|
|
|
743
764
|
// for plugin dependencies
|
|
744
765
|
Ext extends Record<string, unknown> = {},
|
|
745
766
|
// for plugin extension type
|
|
746
|
-
ResolvedDepExt extends GunshiParams = GunshiParams<{
|
|
747
|
-
args: Args;
|
|
748
|
-
extensions: InferDependencyExtensions<Deps, DepExt>;
|
|
749
|
-
}>, PluginExt extends PluginExtension<Ext, ResolvedDepExt> = PluginExtension<Ext, ResolvedDepExt>, MergedExt extends GunshiParams = GunshiParams<{
|
|
750
|
-
args: Args;
|
|
751
|
-
extensions: MergeExtension<Id, InferDependencyExtensions<Deps, DepExt>, Awaited<ReturnType<PluginExt>>>;
|
|
752
|
-
}>> {
|
|
767
|
+
ResolvedDepExt extends GunshiParams = DependencyParams<Deps, DepExt>, PluginExt extends PluginExtension<Ext, ResolvedDepExt> = PluginExtension<Ext, ResolvedDepExt>, MergedExt extends GunshiParams = MergedPluginParams<Id, Deps, DepExt, Awaited<ReturnType<PluginExt>>>> {
|
|
753
768
|
/**
|
|
754
769
|
* Plugin unique identifier
|
|
755
770
|
*/
|
|
@@ -858,20 +873,11 @@ Deps extends ReadonlyArray<PluginDependency | string> = [],
|
|
|
858
873
|
// for plugin dependencies
|
|
859
874
|
Extension extends {} = {},
|
|
860
875
|
// for plugin extension type
|
|
861
|
-
ResolvedDepExtensions extends GunshiParams = GunshiParams<{
|
|
862
|
-
args: Args;
|
|
863
|
-
extensions: InferDependencyExtensions<Deps, Context>;
|
|
864
|
-
}>, PluginExt extends PluginExtension<Extension, DefaultGunshiParams> = PluginExtension<Extension, ResolvedDepExtensions>, MergedExtensions extends GunshiParams = GunshiParams<{
|
|
865
|
-
args: Args;
|
|
866
|
-
extensions: MergeExtension<Id, InferDependencyExtensions<Deps, Context>, Awaited<ReturnType<PluginExt>>>;
|
|
867
|
-
}>>(options: {
|
|
876
|
+
ResolvedDepExtensions extends GunshiParams = DependencyParams<Deps, Context>, PluginExt extends PluginExtension<Extension, DefaultGunshiParams> = PluginExtension<Extension, ResolvedDepExtensions>, MergedExtensions extends GunshiParams = MergedPluginParams<Id, Deps, Context, Awaited<ReturnType<PluginExt>>>>(options: {
|
|
868
877
|
id: Id;
|
|
869
878
|
name?: string;
|
|
870
879
|
dependencies?: Deps;
|
|
871
|
-
setup?: (ctx: Readonly<PluginContext<
|
|
872
|
-
args: Args;
|
|
873
|
-
extensions: MergeExtension<Id, InferDependencyExtensions<Deps, Context>, Awaited<ReturnType<PluginExt>>>;
|
|
874
|
-
}>>>) => Awaitable<void>;
|
|
880
|
+
setup?: (ctx: Readonly<PluginContext<MergedPluginParams<Id, Deps, Context, Awaited<ReturnType<PluginExt>>>>>) => Awaitable<void>;
|
|
875
881
|
extension: PluginExt;
|
|
876
882
|
onExtension?: OnPluginExtension<MergedExtensions>;
|
|
877
883
|
}): PluginWithExtension<Awaited<ReturnType<PluginExt>>>;
|
|
@@ -896,20 +902,11 @@ Deps extends ReadonlyArray<PluginDependency | string> = [],
|
|
|
896
902
|
// for plugin dependencies
|
|
897
903
|
Extension extends Record<string, unknown> = {},
|
|
898
904
|
// for plugin extension type
|
|
899
|
-
ResolvedDepExtensions extends GunshiParams = GunshiParams<{
|
|
900
|
-
args: Args;
|
|
901
|
-
extensions: InferDependencyExtensions<Deps, Context>;
|
|
902
|
-
}>, PluginExt extends PluginExtension<Extension, DefaultGunshiParams> = PluginExtension<Extension, ResolvedDepExtensions>, MergedExtensions extends GunshiParams = GunshiParams<{
|
|
903
|
-
args: Args;
|
|
904
|
-
extensions: MergeExtension<Id, InferDependencyExtensions<Deps, Context>, Awaited<ReturnType<PluginExt>>>;
|
|
905
|
-
}>>(options: {
|
|
905
|
+
ResolvedDepExtensions extends GunshiParams = DependencyParams<Deps, Context>, PluginExt extends PluginExtension<Extension, DefaultGunshiParams> = PluginExtension<Extension, ResolvedDepExtensions>, MergedExtensions extends GunshiParams = MergedPluginParams<Id, Deps, Context, Awaited<ReturnType<PluginExt>>>>(options: {
|
|
906
906
|
id: Id;
|
|
907
907
|
name?: string;
|
|
908
908
|
dependencies?: Deps;
|
|
909
|
-
setup?: (ctx: Readonly<PluginContext<
|
|
910
|
-
args: Args;
|
|
911
|
-
extensions: MergeExtension<Id, InferDependencyExtensions<Deps, Context>, Awaited<ReturnType<PluginExt>>>;
|
|
912
|
-
}>>>) => Awaitable<void>;
|
|
909
|
+
setup?: (ctx: Readonly<PluginContext<MergedPluginParams<Id, Deps, Context, Awaited<ReturnType<PluginExt>>>>>) => Awaitable<void>;
|
|
913
910
|
onExtension?: OnPluginExtension<MergedExtensions>;
|
|
914
911
|
}): PluginWithoutExtension<DefaultGunshiParams['extensions']>;
|
|
915
912
|
//#endregion
|
|
@@ -1011,11 +1008,37 @@ type ExtractExtensions<G> = G extends GunshiParams<any> ? G['extensions'] : G ex
|
|
|
1011
1008
|
* @internal
|
|
1012
1009
|
*/
|
|
1013
1010
|
type NormalizeToGunshiParams<G> = G extends GunshiParams<any> ? G : G extends {
|
|
1014
|
-
|
|
1011
|
+
args: infer A extends Args;
|
|
1012
|
+
extensions: infer E extends ExtendContext;
|
|
1013
|
+
} ? GunshiParams<{
|
|
1014
|
+
args: A;
|
|
1015
|
+
extensions: E;
|
|
1016
|
+
}> : G extends {
|
|
1017
|
+
args: infer A extends Args;
|
|
1018
|
+
} ? GunshiParams<{
|
|
1019
|
+
args: A;
|
|
1020
|
+
extensions: {};
|
|
1021
|
+
}> : G extends {
|
|
1022
|
+
extensions: infer E extends ExtendContext;
|
|
1015
1023
|
} ? GunshiParams<{
|
|
1016
1024
|
args: Args;
|
|
1017
|
-
extensions:
|
|
1025
|
+
extensions: E;
|
|
1018
1026
|
}> : DefaultGunshiParams;
|
|
1027
|
+
/**
|
|
1028
|
+
* Type helper to merge command context extensions into G
|
|
1029
|
+
*
|
|
1030
|
+
* @internal
|
|
1031
|
+
*/
|
|
1032
|
+
type MergeGunshiExtensions<G extends GunshiParamsConstraint, E extends ExtendContext> = GunshiParams<{
|
|
1033
|
+
/**
|
|
1034
|
+
* Command argument definitions.
|
|
1035
|
+
*/
|
|
1036
|
+
args: ExtractArgs<G>;
|
|
1037
|
+
/**
|
|
1038
|
+
* Merged command context extensions.
|
|
1039
|
+
*/
|
|
1040
|
+
extensions: ExtractExtensions<G> & E;
|
|
1041
|
+
}>;
|
|
1019
1042
|
/**
|
|
1020
1043
|
* Command environment.
|
|
1021
1044
|
*
|
|
@@ -1329,7 +1352,7 @@ interface CommandContext<G extends GunshiParamsConstraint = DefaultGunshiParams>
|
|
|
1329
1352
|
validationError?: AggregateError;
|
|
1330
1353
|
}
|
|
1331
1354
|
/**
|
|
1332
|
-
*
|
|
1355
|
+
* Readonly command context available to a command context extension factory.
|
|
1333
1356
|
*
|
|
1334
1357
|
* @typeParam G - A type extending {@linkcode GunshiParams} to specify the shape of command context.
|
|
1335
1358
|
*
|
|
@@ -1605,7 +1628,16 @@ declare const CLI_OPTIONS_DEFAULT: CliOptions<DefaultGunshiParams>;
|
|
|
1605
1628
|
*
|
|
1606
1629
|
* @internal
|
|
1607
1630
|
*/
|
|
1608
|
-
type
|
|
1631
|
+
type ExtractExtensionValues<E extends Record<string, CommandContextExtension>> = { [K in keyof E]: E[K] extends CommandContextExtension<infer T> ? T : never };
|
|
1632
|
+
/**
|
|
1633
|
+
* Return type of {@link createCommandContext}
|
|
1634
|
+
*
|
|
1635
|
+
* @internal
|
|
1636
|
+
*/
|
|
1637
|
+
type CommandContextResult<G extends GunshiParamsConstraint, E extends Record<string, CommandContextExtension>> = {} extends ExtractExtensionValues<E> ? Readonly<CommandContext<G>> : Readonly<CommandContext<GunshiParams<{
|
|
1638
|
+
args: ExtractArgs<G>;
|
|
1639
|
+
extensions: ExtractExtensionValues<E>;
|
|
1640
|
+
}>>>;
|
|
1609
1641
|
/**
|
|
1610
1642
|
* Parameters of {@link createCommandContext}
|
|
1611
1643
|
*/
|
|
@@ -1692,10 +1724,7 @@ declare function createCommandContext<G extends GunshiParamsConstraint = Default
|
|
|
1692
1724
|
commandPath,
|
|
1693
1725
|
omitted,
|
|
1694
1726
|
validationError
|
|
1695
|
-
}: CommandContextParams<G, V, C, E>): Promise<
|
|
1696
|
-
args: ExtractArgs<G>;
|
|
1697
|
-
extensions: ExtractExtensions$1<E>;
|
|
1698
|
-
}>>>>;
|
|
1727
|
+
}: CommandContextParams<G, V, C, E>): Promise<CommandContextResult<G, E>>;
|
|
1699
1728
|
//#endregion
|
|
1700
1729
|
//#region src/index.d.ts
|
|
1701
1730
|
/**
|
|
@@ -1704,4 +1733,4 @@ declare function createCommandContext<G extends GunshiParamsConstraint = Default
|
|
|
1704
1733
|
*/
|
|
1705
1734
|
|
|
1706
1735
|
//#endregion
|
|
1707
|
-
export { ANONYMOUS_COMMAND_NAME, type ArgSchema, type ArgToken, type ArgValues, type Args, Awaitable, CLI_OPTIONS_DEFAULT, Command, CommandContext, CommandContextCore, CommandContextExtension, CommandContextParams, CommandDecorator, CommandExamplesFetcher, CommandRunner, DefaultGunshiParams, ExtendContext, ExtractArgs, ExtractExtensions, GunshiParams, GunshiParamsConstraint, LazyCommand, NormalizeToGunshiParams, OnPluginExtension, Plugin, PluginContext, PluginDependency, PluginExtension, PluginFunction, PluginOptions, PluginWithExtension, PluginWithoutExtension, Prettify, RendererDecorator, ValidationErrorsDecorator, createCommandContext, plugin };
|
|
1736
|
+
export { ANONYMOUS_COMMAND_NAME, type ArgSchema, type ArgToken, type ArgValues, type Args, Awaitable, CLI_OPTIONS_DEFAULT, Command, CommandContext, CommandContextCore, CommandContextExtension, CommandContextParams, CommandDecorator, CommandExamplesFetcher, CommandRunner, DefaultGunshiParams, ExtendContext, ExtractArgs, ExtractExtensions, GunshiParams, GunshiParamsConstraint, LazyCommand, MergeGunshiExtensions, NormalizeToGunshiParams, OnPluginExtension, Plugin, PluginContext, PluginDependency, PluginExtension, PluginFunction, PluginOptions, PluginWithExtension, PluginWithoutExtension, Prettify, RendererDecorator, ValidationErrorsDecorator, createCommandContext, plugin };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gunshi/plugin",
|
|
3
3
|
"description": "plugin development kit for gunshi",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.33.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "kazuya kawaguchi",
|
|
7
7
|
"email": "kawakazu80@gmail.com"
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"jsr-exports-lint": "^0.4.2",
|
|
57
57
|
"publint": "^0.3.20",
|
|
58
58
|
"tsdown": "0.21.0",
|
|
59
|
-
"gunshi": "0.
|
|
59
|
+
"gunshi": "0.33.0"
|
|
60
60
|
},
|
|
61
61
|
"scripts": {
|
|
62
62
|
"build": "tsdown",
|