@gunshi/bone 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.
Files changed (2) hide show
  1. package/lib/index.d.ts +34 -17
  2. package/package.json +5 -5
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<ExtractedParams<G, L>>>) => Promise<string>, ctx: Readonly<CommandContext<ExtractedParams<G, L>>>) => Promise<string>): void;
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<ExtractedParams<G, L>>>) => Promise<string>, ctx: Readonly<CommandContext<ExtractedParams<G, L>>>) => Promise<string>): void;
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<ExtractedParams<G, L>>>, error: AggregateError) => Promise<string>, ctx: Readonly<CommandContext<ExtractedParams<G, L>>>, error: AggregateError) => Promise<string>): void;
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<ExtractedParams<G, L>>>) => Awaitable<void | string>) => (ctx: Readonly<CommandContext<ExtractedParams<G, L>>>) => Awaitable<void | string>): void;
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
@@ -807,11 +798,37 @@ type ExtractExtensions<G> = G extends GunshiParams<any> ? G['extensions'] : G ex
807
798
  * @internal
808
799
  */
809
800
  type NormalizeToGunshiParams<G> = G extends GunshiParams<any> ? G : G extends {
810
- extensions: ExtendContext;
801
+ args: infer A extends Args;
802
+ extensions: infer E extends ExtendContext;
803
+ } ? GunshiParams<{
804
+ args: A;
805
+ extensions: E;
806
+ }> : G extends {
807
+ args: infer A extends Args;
808
+ } ? GunshiParams<{
809
+ args: A;
810
+ extensions: {};
811
+ }> : G extends {
812
+ extensions: infer E extends ExtendContext;
811
813
  } ? GunshiParams<{
812
814
  args: Args;
813
- extensions: G['extensions'];
815
+ extensions: E;
814
816
  }> : DefaultGunshiParams;
817
+ /**
818
+ * Type helper to merge command context extensions into G
819
+ *
820
+ * @internal
821
+ */
822
+ type MergeGunshiExtensions<G extends GunshiParamsConstraint, E extends ExtendContext> = GunshiParams<{
823
+ /**
824
+ * Command argument definitions.
825
+ */
826
+ args: ExtractArgs<G>;
827
+ /**
828
+ * Merged command context extensions.
829
+ */
830
+ extensions: ExtractExtensions<G> & E;
831
+ }>;
815
832
  /**
816
833
  * Command environment.
817
834
  *
@@ -1125,7 +1142,7 @@ interface CommandContext<G extends GunshiParamsConstraint = DefaultGunshiParams>
1125
1142
  validationError?: AggregateError;
1126
1143
  }
1127
1144
  /**
1128
- * CommandContextCore type (base type without extensions)
1145
+ * Readonly command context available to a command context extension factory.
1129
1146
  *
1130
1147
  * @typeParam G - A type extending {@linkcode GunshiParams} to specify the shape of command context.
1131
1148
  *
@@ -1456,4 +1473,4 @@ declare function cli<G extends GunshiParams = DefaultGunshiParams>(args: string[
1456
1473
  */
1457
1474
 
1458
1475
  //#endregion
1459
- export { type ArgSchema, type ArgToken, type ArgValues, type Args, Awaitable, CliOptions, Command, CommandCallMode, CommandContext, CommandContextCore, CommandContextExtension, CommandDecorator, CommandEnvironment, CommandExamplesFetcher, CommandLoader, CommandRunner, Commandable, DefaultGunshiParams, ExtendContext, ExtractArgExplicitlyProvided, ExtractArgs, ExtractExtensions, GunshiParams, GunshiParamsConstraint, LazyCommand, NormalizeToGunshiParams, Prettify, RendererDecorator, RenderingOptions, SubCommandable, ValidationErrorsDecorator, cli };
1476
+ export { type ArgSchema, type ArgToken, type ArgValues, type Args, Awaitable, CliOptions, Command, CommandCallMode, CommandContext, CommandContextCore, CommandContextExtension, CommandDecorator, CommandEnvironment, CommandExamplesFetcher, CommandLoader, CommandRunner, Commandable, DefaultGunshiParams, ExtendContext, ExtractArgExplicitlyProvided, ExtractArgs, ExtractExtensions, GunshiParams, GunshiParamsConstraint, LazyCommand, MergeGunshiExtensions, NormalizeToGunshiParams, Prettify, RendererDecorator, RenderingOptions, SubCommandable, ValidationErrorsDecorator, cli };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gunshi/bone",
3
3
  "description": "gunshi minimum",
4
- "version": "0.32.0",
4
+ "version": "0.33.0",
5
5
  "author": {
6
6
  "name": "kazuya kawaguchi",
7
7
  "email": "kawakazu80@gmail.com"
@@ -56,10 +56,10 @@
56
56
  "jsr-exports-lint": "^0.4.2",
57
57
  "publint": "^0.3.20",
58
58
  "tsdown": "0.21.0",
59
- "@gunshi/definition": "0.32.0",
60
- "@gunshi/plugin-global": "0.32.0",
61
- "@gunshi/plugin-renderer": "0.32.0",
62
- "gunshi": "0.32.0"
59
+ "@gunshi/plugin-renderer": "0.33.0",
60
+ "gunshi": "0.33.0",
61
+ "@gunshi/plugin-global": "0.33.0",
62
+ "@gunshi/definition": "0.33.0"
63
63
  },
64
64
  "scripts": {
65
65
  "build": "tsdown",