jackspeak 1.4.2 → 2.0.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/LICENSE.md +55 -0
- package/README.md +210 -300
- package/dist/cjs/index.d.ts +150 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +635 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/parse-args-cjs.d.ts.map +1 -0
- package/dist/cjs/parse-args-cjs.js.map +1 -0
- package/dist/cjs/parse-args.d.ts +4 -0
- package/dist/cjs/parse-args.js +42 -0
- package/dist/mjs/index.d.ts +150 -0
- package/dist/mjs/index.d.ts.map +1 -0
- package/dist/mjs/index.js +627 -0
- package/dist/mjs/index.js.map +1 -0
- package/dist/mjs/package.json +3 -0
- package/dist/mjs/parse-args-esm.d.ts.map +1 -0
- package/dist/mjs/parse-args-esm.js.map +1 -0
- package/dist/mjs/parse-args.d.ts +4 -0
- package/dist/mjs/parse-args.js +19 -0
- package/package.json +66 -12
- package/LICENSE +0 -15
- package/index.js +0 -653
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export type ConfigType = 'number' | 'string' | 'boolean';
|
|
3
|
+
import { inspect, InspectOptions } from 'node:util';
|
|
4
|
+
type ValidValue<T extends ConfigType, M extends boolean> = [T, M] extends [
|
|
5
|
+
'number',
|
|
6
|
+
true
|
|
7
|
+
] ? number[] : [T, M] extends ['string', true] ? string[] : [T, M] extends ['boolean', true] ? boolean[] : [T, M] extends ['number', false] ? number : [T, M] extends ['string', false] ? string : [T, M] extends ['boolean', false] ? boolean : [T, M] extends ['string', boolean] ? string | string[] : [T, M] extends ['boolean', boolean] ? boolean | boolean[] : [T, M] extends ['number', boolean] ? number | number[] : [T, M] extends [ConfigType, false] ? string | number | boolean : [T, M] extends [ConfigType, true] ? string[] | number[] | boolean[] : string | number | boolean | string[] | number[] | boolean[];
|
|
8
|
+
export type ConfigOptionMeta<T extends ConfigType, M extends boolean> = {
|
|
9
|
+
default?: ValidValue<T, M> | undefined;
|
|
10
|
+
description?: string;
|
|
11
|
+
validate?: ((v: any) => v is ValidValue<T, M>) | ((v: any) => boolean);
|
|
12
|
+
short?: string | undefined;
|
|
13
|
+
type?: T;
|
|
14
|
+
} & (T extends 'boolean' ? {} : {
|
|
15
|
+
hint?: string | undefined;
|
|
16
|
+
}) & (M extends false ? {} : {
|
|
17
|
+
multiple?: M | undefined;
|
|
18
|
+
delim?: string | undefined;
|
|
19
|
+
});
|
|
20
|
+
export type ConfigMetaSet<T extends ConfigType, M extends boolean> = {
|
|
21
|
+
[longOption: string]: ConfigOptionMeta<T, M>;
|
|
22
|
+
};
|
|
23
|
+
type ConfigSetFromMetaSet<T extends ConfigType, M extends boolean, S extends ConfigMetaSet<T, M>> = {
|
|
24
|
+
[longOption in keyof S]: ConfigOptionBase<T, M>;
|
|
25
|
+
};
|
|
26
|
+
type MultiType<M extends boolean> = M extends true ? {
|
|
27
|
+
multiple: true;
|
|
28
|
+
delim?: string | undefined;
|
|
29
|
+
} : M extends false ? {
|
|
30
|
+
multiple?: false | undefined;
|
|
31
|
+
delim?: undefined;
|
|
32
|
+
} : {
|
|
33
|
+
multiple?: boolean | undefined;
|
|
34
|
+
delim?: string | undefined;
|
|
35
|
+
};
|
|
36
|
+
type ConfigOptionBase<T extends ConfigType, M extends boolean> = {
|
|
37
|
+
type: T;
|
|
38
|
+
short?: string | undefined;
|
|
39
|
+
default?: ValidValue<T, M> | undefined;
|
|
40
|
+
description?: string;
|
|
41
|
+
hint?: T extends 'boolean' ? undefined : string | undefined;
|
|
42
|
+
validate?: (v: any) => v is ValidValue<T, M>;
|
|
43
|
+
} & MultiType<M>;
|
|
44
|
+
type ConfigSet = {
|
|
45
|
+
[longOption: string]: ConfigOptionBase<ConfigType, boolean>;
|
|
46
|
+
};
|
|
47
|
+
type OptionsResults<T extends ConfigSet> = {
|
|
48
|
+
[k in keyof T]?: T[k] extends ConfigOptionBase<'string', false> ? string : T[k] extends ConfigOptionBase<'string', true> ? string[] : T[k] extends ConfigOptionBase<'number', false> ? number : T[k] extends ConfigOptionBase<'number', true> ? number[] : T[k] extends ConfigOptionBase<'boolean', false> ? boolean : T[k] extends ConfigOptionBase<'boolean', true> ? boolean[] : never;
|
|
49
|
+
};
|
|
50
|
+
type Parsed<T extends ConfigSet> = {
|
|
51
|
+
values: OptionsResults<T>;
|
|
52
|
+
positionals: string[];
|
|
53
|
+
};
|
|
54
|
+
export interface JackOptions {
|
|
55
|
+
/**
|
|
56
|
+
* Whether to allow positional arguments
|
|
57
|
+
*
|
|
58
|
+
* @default true
|
|
59
|
+
*/
|
|
60
|
+
allowPositionals?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Prefix to use when reading/writing the environment variables
|
|
63
|
+
*
|
|
64
|
+
* If not specified, environment behavior will not be available.
|
|
65
|
+
*/
|
|
66
|
+
envPrefix?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Environment object to read/write. Defaults `process.env`.
|
|
69
|
+
* No effect if `envPrefix` is not set.
|
|
70
|
+
*/
|
|
71
|
+
env?: {
|
|
72
|
+
[k: string]: string | undefined;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* A short usage string. If not provided, will be generated from the
|
|
76
|
+
* options provided, but that can of course be rather verbose if
|
|
77
|
+
* there are a lot of options.
|
|
78
|
+
*/
|
|
79
|
+
usage?: string;
|
|
80
|
+
/**
|
|
81
|
+
* Stop parsing flags and opts at the first positional argument.
|
|
82
|
+
* This is to support cases like `cmd [flags] <subcmd> [options]`, where
|
|
83
|
+
* each subcommand may have different options. This effectively treats
|
|
84
|
+
* any positional as a `--` argument. Only relevant if `allowPositionals`
|
|
85
|
+
* is true.
|
|
86
|
+
*
|
|
87
|
+
* To do subcommands, set this option, look at the first positional, and
|
|
88
|
+
* parse the remaining positionals as appropriate.
|
|
89
|
+
*
|
|
90
|
+
* @default false
|
|
91
|
+
*/
|
|
92
|
+
stopAtPositional?: boolean;
|
|
93
|
+
}
|
|
94
|
+
export declare class Jack<C extends ConfigSet = {}> {
|
|
95
|
+
#private;
|
|
96
|
+
constructor(options?: JackOptions);
|
|
97
|
+
parse(args?: string[]): Parsed<C>;
|
|
98
|
+
validate(o: any): asserts o is Parsed<C>['values'];
|
|
99
|
+
heading(text: string): Jack<C>;
|
|
100
|
+
/**
|
|
101
|
+
* Add a long-form description to the usage output at this position.
|
|
102
|
+
*/
|
|
103
|
+
description(text: string): Jack<C>;
|
|
104
|
+
/**
|
|
105
|
+
* Add one or more number fields.
|
|
106
|
+
*/
|
|
107
|
+
num<F extends ConfigMetaSet<'number', false>>(fields: F): Jack<C & ConfigSetFromMetaSet<'number', false, F>>;
|
|
108
|
+
/**
|
|
109
|
+
* Add one or more multiple number fields.
|
|
110
|
+
*/
|
|
111
|
+
numList<F extends ConfigMetaSet<'number', true>>(fields: F): Jack<C & ConfigSetFromMetaSet<'number', true, F>>;
|
|
112
|
+
/**
|
|
113
|
+
* Add one or more string option fields.
|
|
114
|
+
*/
|
|
115
|
+
opt<F extends ConfigMetaSet<'string', false>>(fields: F): Jack<C & ConfigSetFromMetaSet<'string', false, F>>;
|
|
116
|
+
/**
|
|
117
|
+
* Add one or more multiple string option fields.
|
|
118
|
+
*/
|
|
119
|
+
optList<F extends ConfigMetaSet<'string', true>>(fields: F): Jack<C & ConfigSetFromMetaSet<'string', true, F>>;
|
|
120
|
+
/**
|
|
121
|
+
* Add one or more flag fields.
|
|
122
|
+
*/
|
|
123
|
+
flag<F extends ConfigMetaSet<'boolean', false>>(fields: F): Jack<C & ConfigSetFromMetaSet<'boolean', false, F>>;
|
|
124
|
+
/**
|
|
125
|
+
* Add one or more multiple flag fields.
|
|
126
|
+
*/
|
|
127
|
+
flagList<F extends ConfigMetaSet<'boolean', true>>(fields: F): Jack<C & ConfigSetFromMetaSet<'boolean', true, F>>;
|
|
128
|
+
/**
|
|
129
|
+
* Generic field definition method. Similar to flag/flagList/number/etc,
|
|
130
|
+
* but you must specify the `type` (and optionally `multiple` and `delim`)
|
|
131
|
+
* fields on each one, or Jack won't know how to define them.
|
|
132
|
+
*/
|
|
133
|
+
addFields<F extends ConfigSet>(fields: F): Jack<C & F>;
|
|
134
|
+
usage(): string;
|
|
135
|
+
toJSON(): {
|
|
136
|
+
[k: string]: {
|
|
137
|
+
default?: string | number | boolean | number[] | string[] | boolean[] | undefined;
|
|
138
|
+
validate?: ((v: any) => v is string | number | boolean | number[] | string[] | boolean[]) | undefined;
|
|
139
|
+
description?: string | undefined;
|
|
140
|
+
short?: string | undefined;
|
|
141
|
+
delim?: string | undefined;
|
|
142
|
+
multiple?: boolean | undefined;
|
|
143
|
+
type: ConfigType;
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
[inspect.custom](_: number, options: InspectOptions): string;
|
|
147
|
+
}
|
|
148
|
+
export declare const jack: (options?: JackOptions) => Jack<{}>;
|
|
149
|
+
export {};
|
|
150
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|