Skip to content

Commit e4828f9

Browse files
committed
fix(qui-cli.core)!: nest core config under core key
Per [this thread](https://stackoverflow.com/a/59898881) and this [issue](microsoft/TypeScript#17867) partially defined index types are not really working in TypeScript. BREAKING: invoking Core.configure() (or cli.configure() now requires core (i.e. Jackspeak) configuration options to be nested under the `core` property.
1 parent d89e8cb commit e4828f9

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

packages/core/src/Core.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import * as Plugin from '@battis/qui-cli.plugin';
22
import { Jack, JackOptions } from 'jackspeak';
33

4-
export type Configuration = JackOptions & {
5-
requirePositionals?: boolean | number;
6-
} & Record<string, Plugin.Configuration>;
4+
export type Configuration = Record<string, Plugin.Configuration> & {
5+
core?: JackOptions & {
6+
requirePositionals?: boolean | number;
7+
};
8+
};
79

810
export type Options = Plugin.Options & {
911
flag: {
@@ -26,24 +28,23 @@ function jack() {
2628

2729
let requirePositionals: boolean | number | undefined = undefined;
2830

29-
export async function configure(config: Configuration = {}) {
31+
export async function configure({ core, ...pluginConfig }: Configuration = {}) {
3032
requirePositionals = Plugin.hydrate(
31-
config.requirePositionals,
33+
core?.requirePositionals,
3234
requirePositionals
3335
);
3436

3537
_jack = new Jack({
36-
...config,
37-
allowPositionals:
38-
config.allowPositionals !== undefined
39-
? config.allowPositionals
40-
: !!requirePositionals
38+
...core,
39+
allowPositionals: !!requirePositionals
4140
});
4241

43-
await Plugin.Registrar.configure(config);
42+
await Plugin.Registrar.configure(pluginConfig);
4443
}
4544

46-
export async function options(options: Plugin.Options = {}): Promise<Options> {
45+
export async function options(
46+
externalOptions: Plugin.Options = {}
47+
): Promise<Options> {
4748
return Plugin.mergeOptions(
4849
Plugin.mergeOptions(
4950
{
@@ -56,7 +57,7 @@ export async function options(options: Plugin.Options = {}): Promise<Options> {
5657
},
5758
await Plugin.Registrar.options()
5859
),
59-
options
60+
externalOptions
6061
);
6162
}
6263

0 commit comments

Comments
 (0)