@cli-forge/parser 0.8.1 → 0.10.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/package.json +1 -1
- package/src/index.d.ts +4 -0
- package/src/index.js +5 -0
- package/src/index.js.map +1 -1
- package/src/lib/config-files/configuration-loader.d.ts +21 -0
- package/src/lib/config-files/configuration-loader.js +30 -0
- package/src/lib/config-files/configuration-loader.js.map +1 -0
- package/src/lib/config-files/index.d.ts +3 -0
- package/src/lib/config-files/index.js +7 -0
- package/src/lib/config-files/index.js.map +1 -0
- package/src/lib/config-files/json-file-loader.d.ts +8 -0
- package/src/lib/config-files/json-file-loader.js +43 -0
- package/src/lib/config-files/json-file-loader.js.map +1 -0
- package/src/lib/config-files/package-json-loader.d.ts +7 -0
- package/src/lib/config-files/package-json-loader.js +16 -0
- package/src/lib/config-files/package-json-loader.js.map +1 -0
- package/src/lib/config-files/utils.d.ts +1 -0
- package/src/lib/config-files/utils.js +22 -0
- package/src/lib/config-files/utils.js.map +1 -0
- package/src/lib/option-types/common.d.ts +13 -1
- package/src/lib/option-types/option-config-to-type.d.ts +8 -2
- package/src/lib/parser.d.ts +126 -11
- package/src/lib/parser.js +73 -13
- package/src/lib/parser.js.map +1 -1
- package/src/lib/utils/chain.d.ts +67 -1
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -4,3 +4,7 @@ export * from './lib/helpers';
|
|
|
4
4
|
export * from './lib/option-types';
|
|
5
5
|
export * from './lib/utils/read-default-value';
|
|
6
6
|
export * from './lib/utils/chain';
|
|
7
|
+
/**
|
|
8
|
+
* Types and utilities for working with configuration files.
|
|
9
|
+
*/
|
|
10
|
+
export * as ConfigurationFiles from './lib/config-files';
|
package/src/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigurationFiles = void 0;
|
|
3
4
|
const tslib_1 = require("tslib");
|
|
4
5
|
tslib_1.__exportStar(require("./lib/parser"), exports);
|
|
5
6
|
tslib_1.__exportStar(require("./lib/utils/case-transformations"), exports);
|
|
@@ -7,4 +8,8 @@ tslib_1.__exportStar(require("./lib/helpers"), exports);
|
|
|
7
8
|
tslib_1.__exportStar(require("./lib/option-types"), exports);
|
|
8
9
|
tslib_1.__exportStar(require("./lib/utils/read-default-value"), exports);
|
|
9
10
|
tslib_1.__exportStar(require("./lib/utils/chain"), exports);
|
|
11
|
+
/**
|
|
12
|
+
* Types and utilities for working with configuration files.
|
|
13
|
+
*/
|
|
14
|
+
exports.ConfigurationFiles = tslib_1.__importStar(require("./lib/config-files"));
|
|
10
15
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/parser/src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/parser/src/index.ts"],"names":[],"mappings":";;;;AAAA,uDAA6B;AAC7B,2EAAiD;AACjD,wDAA8B;AAC9B,6DAAmC;AACnC,yEAA+C;AAC/C,4DAAkC;AAElC;;GAEG;AACH,iFAAyD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Implement this type to create a custom configuration provider.
|
|
3
|
+
*/
|
|
4
|
+
export type ConfigurationProvider<T> = {
|
|
5
|
+
/**
|
|
6
|
+
* A function that searches for a configuration file in the given directory and returns the path to the file.
|
|
7
|
+
* Should handle being passed either a directory to search, or a file to check.
|
|
8
|
+
* @param configurationRoot
|
|
9
|
+
* @returns The path to the configuration file, or undefined if no applicable file was found.
|
|
10
|
+
*/
|
|
11
|
+
resolve: (configurationRoot: string) => string | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* A function that loads the configuration from the given file.
|
|
14
|
+
* @param filename The path to the configuration file (resolved by {@link ConfigurationProvider#resolve}).
|
|
15
|
+
* @returns The loaded configuration object.
|
|
16
|
+
*/
|
|
17
|
+
load: (filename: string) => T & {
|
|
18
|
+
extends?: string;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export declare function resolveConfiguration<T>(configurationRoot: string, loaders: ConfigurationProvider<T>[]): T;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveConfiguration = resolveConfiguration;
|
|
4
|
+
const path_1 = require("path");
|
|
5
|
+
// Runs all the configuration loaders in order to resolve the configuration file.
|
|
6
|
+
// Recurses if the configuration file extends another configuration file.
|
|
7
|
+
function resolveConfiguration(configurationRoot, loaders) {
|
|
8
|
+
function loadConfiguration(filename, provider) {
|
|
9
|
+
const loaded = provider.load(filename);
|
|
10
|
+
if (loaded.extends) {
|
|
11
|
+
const extended = resolveConfiguration(loaded.extends.startsWith('.')
|
|
12
|
+
? (0, path_1.join)(configurationRoot, loaded.extends)
|
|
13
|
+
: loaded.extends, loaders);
|
|
14
|
+
return { ...extended, ...loaded };
|
|
15
|
+
}
|
|
16
|
+
return loaded;
|
|
17
|
+
}
|
|
18
|
+
let combined = {};
|
|
19
|
+
for (const loader of loaders) {
|
|
20
|
+
const filename = loader.resolve(configurationRoot);
|
|
21
|
+
if (filename) {
|
|
22
|
+
combined = {
|
|
23
|
+
...loadConfiguration(filename, loader),
|
|
24
|
+
...combined,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return combined;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=configuration-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configuration-loader.js","sourceRoot":"","sources":["../../../../../../packages/parser/src/lib/config-files/configuration-loader.ts"],"names":[],"mappings":";;AAwBA,oDAgCC;AAxDD,+BAA4B;AAsB5B,iFAAiF;AACjF,yEAAyE;AACzE,SAAgB,oBAAoB,CAClC,iBAAyB,EACzB,OAAmC;IAEnC,SAAS,iBAAiB,CACxB,QAAgB,EAChB,QAAkC;QAElC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,oBAAoB,CACnC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAC5B,CAAC,CAAC,IAAA,WAAI,EAAC,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC;gBACzC,CAAC,CAAC,MAAM,CAAC,OAAO,EAClB,OAAO,CACR,CAAC;YACF,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,QAAQ,GAAM,EAAO,CAAC;IAC1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,GAAG;gBACT,GAAG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC;gBACtC,GAAG,QAAQ;aACZ,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./configuration-loader"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./json-file-loader"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./package-json-loader"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/parser/src/lib/config-files/index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AACvC,6DAAmC;AACnC,gEAAsC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ConfigurationProvider } from './configuration-loader';
|
|
2
|
+
/**
|
|
3
|
+
* A factory function to create simple configuration providers that load configuration from a JSON file.
|
|
4
|
+
* @param filename The filename of the JSON file to load.
|
|
5
|
+
* @param transform The function to transform the loaded JSON object into the desired configuration object.
|
|
6
|
+
* @returns A `{@link ConfigurationProvider}` that loads configuration from the specified JSON file.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getJsonFileConfigLoader<T>(filename: string, transform?: (json: any) => T): ConfigurationProvider<T>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getJsonFileConfigLoader = getJsonFileConfigLoader;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const util_1 = require("util");
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
/**
|
|
8
|
+
* A factory function to create simple configuration providers that load configuration from a JSON file.
|
|
9
|
+
* @param filename The filename of the JSON file to load.
|
|
10
|
+
* @param transform The function to transform the loaded JSON object into the desired configuration object.
|
|
11
|
+
* @returns A `{@link ConfigurationProvider}` that loads configuration from the specified JSON file.
|
|
12
|
+
*/
|
|
13
|
+
function getJsonFileConfigLoader(filename, transform) {
|
|
14
|
+
function loadJsonFile(filepath) {
|
|
15
|
+
return JSON.parse((0, fs_1.readFileSync)(filepath, 'utf-8'));
|
|
16
|
+
}
|
|
17
|
+
class JsonFileConfigLoader {
|
|
18
|
+
seen = new Set();
|
|
19
|
+
resolve(configurationRoot) {
|
|
20
|
+
const nearestFile = (0, utils_1.traverseForFile)(filename, configurationRoot);
|
|
21
|
+
if (!nearestFile || !nearestFile.endsWith('.json')) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
if (this.seen.has(nearestFile)) {
|
|
25
|
+
throw new Error(`Circular reference detected in configuration file: ${nearestFile}. This is likely caused by an "extends" property pointing to a directory which doesn't contain a configuration file.`);
|
|
26
|
+
}
|
|
27
|
+
this.seen.add(nearestFile);
|
|
28
|
+
return nearestFile;
|
|
29
|
+
}
|
|
30
|
+
load(jsonFile) {
|
|
31
|
+
const json = loadJsonFile(jsonFile);
|
|
32
|
+
if (transform) {
|
|
33
|
+
return transform(json);
|
|
34
|
+
}
|
|
35
|
+
return json;
|
|
36
|
+
}
|
|
37
|
+
[util_1.inspect.custom]() {
|
|
38
|
+
return 'JsonFileConfigLoader: ' + filename;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return new JsonFileConfigLoader();
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=json-file-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-file-loader.js","sourceRoot":"","sources":["../../../../../../packages/parser/src/lib/config-files/json-file-loader.ts"],"names":[],"mappings":";;AAYA,0DAuCC;AAnDD,2BAAkC;AAClC,+BAA+B;AAG/B,mCAA0C;AAE1C;;;;;GAKG;AACH,SAAgB,uBAAuB,CACrC,QAAgB,EAChB,SAA4B;IAE5B,SAAS,YAAY,CAAC,QAAgB;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,oBAAoB;QAChB,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAEjC,OAAO,CAAC,iBAAyB;YAC/B,MAAM,WAAW,GAAG,IAAA,uBAAe,EAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;YACjE,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,sDAAsD,WAAW,sHAAsH,CACxL,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC3B,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,QAAgB;YACnB,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACpC,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,CAAC,cAAO,CAAC,MAAM,CAAC;YACd,OAAO,wBAAwB,GAAG,QAAQ,CAAC;QAC7C,CAAC;KACF;IAED,OAAO,IAAI,oBAAoB,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ConfigurationProvider } from './configuration-loader';
|
|
2
|
+
/**
|
|
3
|
+
* A factory function to create a configuration provider that loads configuration from a package.json file.
|
|
4
|
+
* @param key The key in the package.json file to load as configuration.
|
|
5
|
+
* @returns A `{@link ConfigurationProvider}` that loads configuration from the specified package.json file.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getPackageJsonConfigurationLoader<T>(key: string): ConfigurationProvider<T>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPackageJsonConfigurationLoader = getPackageJsonConfigurationLoader;
|
|
4
|
+
const node_util_1 = require("node:util");
|
|
5
|
+
const json_file_loader_1 = require("./json-file-loader");
|
|
6
|
+
/**
|
|
7
|
+
* A factory function to create a configuration provider that loads configuration from a package.json file.
|
|
8
|
+
* @param key The key in the package.json file to load as configuration.
|
|
9
|
+
* @returns A `{@link ConfigurationProvider}` that loads configuration from the specified package.json file.
|
|
10
|
+
*/
|
|
11
|
+
function getPackageJsonConfigurationLoader(key) {
|
|
12
|
+
const loader = (0, json_file_loader_1.getJsonFileConfigLoader)('package.json', (json) => json[key]);
|
|
13
|
+
loader[node_util_1.inspect.custom] = () => 'PackageJsonConfigurationLoader: ' + key;
|
|
14
|
+
return loader;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=package-json-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json-loader.js","sourceRoot":"","sources":["../../../../../../packages/parser/src/lib/config-files/package-json-loader.ts"],"names":[],"mappings":";;AAUA,8EAUC;AApBD,yCAAoC;AAGpC,yDAA6D;AAE7D;;;;GAIG;AACH,SAAgB,iCAAiC,CAC/C,GAAW;IAEX,MAAM,MAAM,GAAG,IAAA,0CAAuB,EACpC,cAAc,EACd,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CACpB,CAAC;IACD,MAAc,CAAC,mBAAO,CAAC,MAAM,CAAC,GAAG,GAAG,EAAE,CACrC,kCAAkC,GAAG,GAAG,CAAC;IAC3C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function traverseForFile(configFileName: string, searchDir?: string): string | undefined;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.traverseForFile = traverseForFile;
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
|
+
function traverseForFile(configFileName, searchDir = process.cwd()) {
|
|
7
|
+
// Traverse up file system to find json file
|
|
8
|
+
let prev;
|
|
9
|
+
let current = searchDir;
|
|
10
|
+
while (prev !== current) {
|
|
11
|
+
prev = current;
|
|
12
|
+
const testPath = (0, node_path_1.join)(current, configFileName);
|
|
13
|
+
if ((0, node_fs_1.existsSync)(testPath)) {
|
|
14
|
+
return testPath;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
current = (0, node_path_1.dirname)(current);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../packages/parser/src/lib/config-files/utils.ts"],"names":[],"mappings":";;AAGA,0CAiBC;AApBD,qCAAqC;AACrC,yCAA0C;AAE1C,SAAgB,eAAe,CAC7B,cAAsB,EACtB,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;IAEzB,4CAA4C;IAC5C,IAAI,IAAwB,CAAC;IAC7B,IAAI,OAAO,GAAG,SAAS,CAAC;IACxB,OAAO,IAAI,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,GAAG,OAAO,CAAC;QACf,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC/C,IAAI,IAAA,oBAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,IAAA,mBAAO,EAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -56,11 +56,23 @@ export type CommonOptionConfig<T, TCoerce = T, TChoices = T[]> = {
|
|
|
56
56
|
/**
|
|
57
57
|
* What key should the value be read from in process.env
|
|
58
58
|
*/
|
|
59
|
-
key
|
|
59
|
+
key?: string;
|
|
60
60
|
/**
|
|
61
61
|
* If set to false, ignore prefix provided by .env() call.
|
|
62
62
|
*/
|
|
63
63
|
prefix?: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* If set to false, the option will not be set in process.env, even if the global env option is set to reflect.
|
|
66
|
+
* If set to true, the option will be set in process.env, even if the global env option is set to ignore.
|
|
67
|
+
*/
|
|
68
|
+
reflect?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* If set to false the option will not be read from process.env. This is useful if you
|
|
71
|
+
* want to set the value in process.env, but not read it from there.
|
|
72
|
+
*
|
|
73
|
+
* @default true
|
|
74
|
+
*/
|
|
75
|
+
populate?: boolean;
|
|
64
76
|
};
|
|
65
77
|
/**
|
|
66
78
|
* If set, the option will be marked as deprecated, with the provided message. This will not effect runtime behavior,
|
|
@@ -4,13 +4,19 @@ import { ObjectOptionConfig } from './object';
|
|
|
4
4
|
/**
|
|
5
5
|
* Converts an OptionConfig to the TypeScript type for the parsed value.
|
|
6
6
|
*/
|
|
7
|
-
export type OptionConfigToType<TOptionConfig extends OptionConfig> = InferTChoice<TOptionConfig> extends [never] ? TOptionConfig['coerce'] extends (s: any) => any ? ReturnType<TOptionConfig['coerce']> : {
|
|
7
|
+
export type OptionConfigToType<TOptionConfig extends OptionConfig> = UndefinedIfRequiredAndNoDefault<TOptionConfig, InferTChoice<TOptionConfig> extends [never] ? TOptionConfig['coerce'] extends (s: any) => any ? ReturnType<TOptionConfig['coerce']> : {
|
|
8
8
|
string: string;
|
|
9
9
|
number: number;
|
|
10
10
|
boolean: boolean;
|
|
11
11
|
array: ArrayItems<TOptionConfig>[];
|
|
12
12
|
object: TOptionConfig extends ObjectOptionConfig ? ResolveTProperties<TOptionConfig['properties']> & AdditionalProperties<TOptionConfig> : never;
|
|
13
|
-
}[TOptionConfig['type']] : InferTChoice<TOptionConfig
|
|
13
|
+
}[TOptionConfig['type']] : InferTChoice<TOptionConfig>>;
|
|
14
|
+
export type UndefinedIfRequiredAndNoDefault<TOptionConfig extends OptionConfig, ResolvedValue> = TOptionConfig extends {
|
|
15
|
+
required: true;
|
|
16
|
+
} ? ResolvedValue : TOptionConfig extends {
|
|
17
|
+
default: unknown;
|
|
18
|
+
} ? ResolvedValue : // Option is not required and has no default value
|
|
19
|
+
ResolvedValue | undefined;
|
|
14
20
|
type ArrayItems<TOptionConfig extends OptionConfig> = TOptionConfig extends ArrayOptionConfig<string | number> ? TOptionConfig['items'] extends 'string' ? string : number : never;
|
|
15
21
|
type AdditionalProperties<TOptionConfig extends ObjectOptionConfig> = TOptionConfig['additionalProperties'] extends 'string' ? Record<string, string> : TOptionConfig['additionalProperties'] extends 'number' ? Record<string, number> : TOptionConfig['additionalProperties'] extends 'boolean' ? Record<string, boolean> : Record<string, never>;
|
|
16
22
|
type ResolveTProperties<TProperties extends Record<string, OptionConfig>> = {
|
package/src/lib/parser.d.ts
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { OptionConfigToType } from './option-types/option-config-to-type';
|
|
2
2
|
import { InternalOptionConfig, OptionConfig } from './option-types';
|
|
3
3
|
import { Parser, ParserContext } from './parsers/typings';
|
|
4
|
+
import { ConfigurationProvider } from './config-files/configuration-loader';
|
|
5
|
+
/**
|
|
6
|
+
* Defines the option configuration passed to {@link ArgvParser.env}.
|
|
7
|
+
*/
|
|
8
|
+
export type EnvOptionConfig = {
|
|
9
|
+
prefix?: string;
|
|
10
|
+
reflect?: boolean;
|
|
11
|
+
populate?: boolean;
|
|
12
|
+
};
|
|
4
13
|
/**
|
|
5
14
|
* Base type for parsed arguments.
|
|
6
15
|
*/
|
|
@@ -26,7 +35,7 @@ export type ParsedArgs<T = never> = [T] extends [never] ? {
|
|
|
26
35
|
/**
|
|
27
36
|
* Extra options for the parser
|
|
28
37
|
*/
|
|
29
|
-
export type ParserOptions = {
|
|
38
|
+
export type ParserOptions<T extends ParsedArgs = ParsedArgs> = {
|
|
30
39
|
/**
|
|
31
40
|
* Can be used to implement custom parser types.
|
|
32
41
|
*/
|
|
@@ -35,14 +44,14 @@ export type ParserOptions = {
|
|
|
35
44
|
* Can be used to implement custom handling for unmatched arguments.
|
|
36
45
|
* @returns true if the argument was handled, false if it was not
|
|
37
46
|
*/
|
|
38
|
-
unmatchedParser?: (arg: string, tokens: string[], parser: ArgvParser) => boolean;
|
|
47
|
+
unmatchedParser?: (arg: string, tokens: string[], parser: ArgvParser<T>) => boolean;
|
|
39
48
|
};
|
|
40
49
|
export interface ReadonlyArgvParser<TArgs extends ParsedArgs> {
|
|
41
50
|
configuredOptions: Readonly<{
|
|
42
51
|
[key in keyof TArgs]: InternalOptionConfig;
|
|
43
52
|
}>;
|
|
44
53
|
configuredPositionals: readonly Readonly<InternalOptionConfig>[];
|
|
45
|
-
options: Readonly<Required<ParserOptions
|
|
54
|
+
options: Readonly<Required<ParserOptions<TArgs>>>;
|
|
46
55
|
}
|
|
47
56
|
/**
|
|
48
57
|
* The main parser class. This class is used to configure and parse arguments.
|
|
@@ -73,21 +82,23 @@ export declare class ArgvParser<TArgs extends ParsedArgs = {
|
|
|
73
82
|
/**
|
|
74
83
|
* The configuration for the parser itself
|
|
75
84
|
*/
|
|
76
|
-
options: Required<ParserOptions
|
|
85
|
+
options: Required<ParserOptions<TArgs>>;
|
|
77
86
|
/**
|
|
78
87
|
* The parsers used to parse individual option types.
|
|
79
88
|
*/
|
|
80
89
|
parserMap: Record<string, Parser<any>>;
|
|
90
|
+
private configuredConfigurationProviders;
|
|
81
91
|
/**
|
|
82
92
|
* If set, options can be populated from environment variables of the form `${envPrefix}_${optionName}`.
|
|
83
93
|
*/
|
|
84
94
|
private envPrefix?;
|
|
85
95
|
private shouldReadFromEnv?;
|
|
96
|
+
private shouldReflectEnv?;
|
|
86
97
|
/**
|
|
87
98
|
* Creates a new parser. Normally using {@link parser} is preferred.
|
|
88
99
|
* @param options
|
|
89
100
|
*/
|
|
90
|
-
constructor(options?: ParserOptions);
|
|
101
|
+
constructor(options?: ParserOptions<TArgs>);
|
|
91
102
|
/**
|
|
92
103
|
* Registers a new option with the parser.
|
|
93
104
|
* @param name The name of the option
|
|
@@ -101,14 +112,108 @@ export declare class ArgvParser<TArgs extends ParsedArgs = {
|
|
|
101
112
|
* @param config The configuration for the positional argument. See {@link OptionConfig}
|
|
102
113
|
* @returns Updated parser instance with the new positional argument registered.
|
|
103
114
|
*/
|
|
104
|
-
positional<TOption extends string, const TOptionConfig extends OptionConfig<any>>(name: TOption, config: TOptionConfig): ArgvParser<TArgs & { [key in TOption]:
|
|
115
|
+
positional<TOption extends string, const TOptionConfig extends OptionConfig<any>>(name: TOption, config: TOptionConfig): ArgvParser<TArgs & { [key in TOption]: import("./option-types").UndefinedIfRequiredAndNoDefault<TOptionConfig & {
|
|
116
|
+
readonly positional: true;
|
|
117
|
+
}, ("choices" extends "positional" | keyof TOptionConfig ? (TOptionConfig & {
|
|
118
|
+
readonly positional: true;
|
|
119
|
+
})[keyof TOptionConfig & "choices"] extends (infer TChoice)[] ? TChoice : (TOptionConfig & {
|
|
120
|
+
readonly positional: true;
|
|
121
|
+
})[keyof TOptionConfig & "choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? (TOptionConfig & {
|
|
122
|
+
readonly positional: true;
|
|
123
|
+
})["coerce"] extends (s: any) => any ? ReturnType<(TOptionConfig & {
|
|
124
|
+
readonly positional: true;
|
|
125
|
+
})["coerce"]> : {
|
|
126
|
+
string: string;
|
|
127
|
+
number: number;
|
|
128
|
+
boolean: boolean;
|
|
129
|
+
array: (TOptionConfig & {
|
|
130
|
+
readonly positional: true;
|
|
131
|
+
} extends infer T ? T extends TOptionConfig & {
|
|
132
|
+
readonly positional: true;
|
|
133
|
+
} ? T extends import("./option-types").ArrayOptionConfig<string | number> ? T["items"] extends "string" ? string : number : never : never : never)[];
|
|
134
|
+
object: TOptionConfig & {
|
|
135
|
+
readonly positional: true;
|
|
136
|
+
} extends infer T_1 ? T_1 extends TOptionConfig & {
|
|
137
|
+
readonly positional: true;
|
|
138
|
+
} ? T_1 extends import("./option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_1["properties"] extends infer T_2 extends Record<string, OptionConfig> ? { [key_1 in keyof T_2]: import("./option-types").UndefinedIfRequiredAndNoDefault<T_1["properties"][key_1], ("choices" extends keyof T_1["properties"][key_1] ? T_1["properties"][key_1]["choices"] extends (infer TChoice)[] ? TChoice : T_1["properties"][key_1]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_1["properties"][key_1]["coerce"] extends (s: any) => any ? ReturnType<T_1["properties"][key_1]["coerce"]> : {
|
|
139
|
+
string: string;
|
|
140
|
+
number: number;
|
|
141
|
+
boolean: boolean;
|
|
142
|
+
array: (T_1["properties"][key_1] extends infer T_3 ? T_3 extends T_1["properties"][key_1] ? T_3 extends import("./option-types").ArrayOptionConfig<string | number> ? T_3["items"] extends "string" ? string : number : never : never : never)[];
|
|
143
|
+
object: T_1["properties"][key_1] extends infer T_4 ? T_4 extends T_1["properties"][key_1] ? T_4 extends import("./option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_4["properties"] extends infer T_5 extends Record<string, OptionConfig> ? { [key_2 in keyof T_5]: import("./option-types").UndefinedIfRequiredAndNoDefault<T_4["properties"][key_2], ("choices" extends keyof T_4["properties"][key_2] ? T_4["properties"][key_2]["choices"] extends (infer TChoice)[] ? TChoice : T_4["properties"][key_2]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_4["properties"][key_2]["coerce"] extends (s: any) => any ? ReturnType<T_4["properties"][key_2]["coerce"]> : {
|
|
144
|
+
string: string;
|
|
145
|
+
number: number;
|
|
146
|
+
boolean: boolean;
|
|
147
|
+
array: (T_4["properties"][key_2] extends infer T_6 ? T_6 extends T_4["properties"][key_2] ? T_6 extends import("./option-types").ArrayOptionConfig<string | number> ? T_6["items"] extends "string" ? string : number : never : never : never)[];
|
|
148
|
+
object: T_4["properties"][key_2] extends infer T_7 ? T_7 extends T_4["properties"][key_2] ? T_7 extends import("./option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_7["properties"] extends infer T_8 extends Record<string, OptionConfig> ? { [key_3 in keyof T_8]: import("./option-types").UndefinedIfRequiredAndNoDefault<T_7["properties"][key_3], ("choices" extends keyof T_7["properties"][key_3] ? T_7["properties"][key_3]["choices"] extends (infer TChoice)[] ? TChoice : T_7["properties"][key_3]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_7["properties"][key_3]["coerce"] extends (s: any) => any ? ReturnType<T_7["properties"][key_3]["coerce"]> : {
|
|
149
|
+
string: string;
|
|
150
|
+
number: number;
|
|
151
|
+
boolean: boolean;
|
|
152
|
+
array: (T_7["properties"][key_3] extends infer T_9 ? T_9 extends T_7["properties"][key_3] ? T_9 extends import("./option-types").ArrayOptionConfig<string | number> ? T_9["items"] extends "string" ? string : number : never : never : never)[];
|
|
153
|
+
object: T_7["properties"][key_3] extends infer T_10 ? T_10 extends T_7["properties"][key_3] ? T_10 extends import("./option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_10["properties"] extends infer T_11 extends Record<string, OptionConfig> ? { [key_4 in keyof T_11]: import("./option-types").UndefinedIfRequiredAndNoDefault<T_10["properties"][key_4], ("choices" extends keyof T_10["properties"][key_4] ? T_10["properties"][key_4]["choices"] extends (infer TChoice)[] ? TChoice : T_10["properties"][key_4]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_10["properties"][key_4]["coerce"] extends (s: any) => any ? ReturnType<T_10["properties"][key_4]["coerce"]> : {
|
|
154
|
+
string: string;
|
|
155
|
+
number: number;
|
|
156
|
+
boolean: boolean;
|
|
157
|
+
array: (T_10["properties"][key_4] extends infer T_12 ? T_12 extends T_10["properties"][key_4] ? T_12 extends import("./option-types").ArrayOptionConfig<string | number> ? T_12["items"] extends "string" ? string : number : never : never : never)[];
|
|
158
|
+
object: T_10["properties"][key_4] extends infer T_13 ? T_13 extends T_10["properties"][key_4] ? T_13 extends import("./option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_13["properties"] extends infer T_14 extends Record<string, OptionConfig> ? { [key_5 in keyof T_14]: import("./option-types").UndefinedIfRequiredAndNoDefault<T_13["properties"][key_5], ("choices" extends keyof T_13["properties"][key_5] ? T_13["properties"][key_5]["choices"] extends (infer TChoice)[] ? TChoice : T_13["properties"][key_5]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_13["properties"][key_5]["coerce"] extends (s: any) => any ? ReturnType<T_13["properties"][key_5]["coerce"]> : {
|
|
159
|
+
string: string;
|
|
160
|
+
number: number;
|
|
161
|
+
boolean: boolean;
|
|
162
|
+
array: (T_13["properties"][key_5] extends infer T_15 ? T_15 extends T_13["properties"][key_5] ? T_15 extends import("./option-types").ArrayOptionConfig<string | number> ? T_15["items"] extends "string" ? string : number : never : never : never)[];
|
|
163
|
+
object: T_13["properties"][key_5] extends infer T_16 ? T_16 extends T_13["properties"][key_5] ? T_16 extends import("./option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_16["properties"] extends infer T_17 extends Record<string, OptionConfig> ? { [key_6 in keyof T_17]: import("./option-types").UndefinedIfRequiredAndNoDefault<T_16["properties"][key_6], ("choices" extends keyof T_16["properties"][key_6] ? T_16["properties"][key_6]["choices"] extends (infer TChoice)[] ? TChoice : T_16["properties"][key_6]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_16["properties"][key_6]["coerce"] extends (s: any) => any ? ReturnType<T_16["properties"][key_6]["coerce"]> : {
|
|
164
|
+
string: string;
|
|
165
|
+
number: number;
|
|
166
|
+
boolean: boolean;
|
|
167
|
+
array: (T_16["properties"][key_6] extends infer T_18 ? T_18 extends T_16["properties"][key_6] ? T_18 extends import("./option-types").ArrayOptionConfig<string | number> ? T_18["items"] extends "string" ? string : number : never : never : never)[];
|
|
168
|
+
object: T_16["properties"][key_6] extends infer T_19 ? T_19 extends T_16["properties"][key_6] ? T_19 extends import("./option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_19["properties"] extends infer T_20 extends Record<string, OptionConfig> ? { [key_7 in keyof T_20]: import("./option-types").UndefinedIfRequiredAndNoDefault<T_19["properties"][key_7], ("choices" extends keyof T_19["properties"][key_7] ? T_19["properties"][key_7]["choices"] extends (infer TChoice)[] ? TChoice : T_19["properties"][key_7]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_19["properties"][key_7]["coerce"] extends (s: any) => any ? ReturnType<T_19["properties"][key_7]["coerce"]> : {
|
|
169
|
+
string: string;
|
|
170
|
+
number: number;
|
|
171
|
+
boolean: boolean;
|
|
172
|
+
array: (T_19["properties"][key_7] extends infer T_21 ? T_21 extends T_19["properties"][key_7] ? T_21 extends import("./option-types").ArrayOptionConfig<string | number> ? T_21["items"] extends "string" ? string : number : never : never : never)[];
|
|
173
|
+
object: T_19["properties"][key_7] extends infer T_22 ? T_22 extends T_19["properties"][key_7] ? T_22 extends import("./option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_22["properties"] extends infer T_23 extends Record<string, OptionConfig> ? { [key_8 in keyof T_23]: import("./option-types").UndefinedIfRequiredAndNoDefault<T_22["properties"][key_8], ("choices" extends keyof T_22["properties"][key_8] ? T_22["properties"][key_8]["choices"] extends (infer TChoice)[] ? TChoice : T_22["properties"][key_8]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_22["properties"][key_8]["coerce"] extends (s: any) => any ? ReturnType<T_22["properties"][key_8]["coerce"]> : {
|
|
174
|
+
string: string;
|
|
175
|
+
number: number;
|
|
176
|
+
boolean: boolean;
|
|
177
|
+
array: (T_22["properties"][key_8] extends infer T_24 ? T_24 extends T_22["properties"][key_8] ? T_24 extends import("./option-types").ArrayOptionConfig<string | number> ? T_24["items"] extends "string" ? string : number : never : never : never)[];
|
|
178
|
+
object: T_22["properties"][key_8] extends infer T_25 ? T_25 extends T_22["properties"][key_8] ? T_25 extends import("./option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_25["properties"] extends infer T_26 extends Record<string, OptionConfig> ? { [key_9 in keyof T_26]: import("./option-types").UndefinedIfRequiredAndNoDefault<T_25["properties"][key_9], ("choices" extends keyof T_25["properties"][key_9] ? T_25["properties"][key_9]["choices"] extends (infer TChoice)[] ? TChoice : T_25["properties"][key_9]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_25["properties"][key_9]["coerce"] extends (s: any) => any ? ReturnType<T_25["properties"][key_9]["coerce"]> : {
|
|
179
|
+
string: string;
|
|
180
|
+
number: number;
|
|
181
|
+
boolean: boolean;
|
|
182
|
+
array: (T_25["properties"][key_9] extends infer T_27 ? T_27 extends T_25["properties"][key_9] ? T_27 extends import("./option-types").ArrayOptionConfig<string | number> ? T_27["items"] extends "string" ? string : number : never : never : never)[];
|
|
183
|
+
object: T_25["properties"][key_9] extends infer T_28 ? T_28 extends T_25["properties"][key_9] ? T_28 extends import("./option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_28["properties"] extends infer T_29 extends Record<string, OptionConfig> ? { [key_10 in keyof T_29]: import("./option-types").UndefinedIfRequiredAndNoDefault<T_28["properties"][key_10], ("choices" extends keyof T_28["properties"][key_10] ? T_28["properties"][key_10]["choices"] extends (infer TChoice)[] ? TChoice : T_28["properties"][key_10]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_28["properties"][key_10]["coerce"] extends (s: any) => any ? ReturnType<T_28["properties"][key_10]["coerce"]> : {
|
|
184
|
+
string: string;
|
|
185
|
+
number: number;
|
|
186
|
+
boolean: boolean;
|
|
187
|
+
array: (T_28["properties"][key_10] extends infer T_30 ? T_30 extends T_28["properties"][key_10] ? T_30 extends import("./option-types").ArrayOptionConfig<string | number> ? T_30["items"] extends "string" ? string : number : never : never : never)[];
|
|
188
|
+
object: T_28["properties"][key_10] extends infer T_31 ? T_31 extends T_28["properties"][key_10] ? T_31 extends import("./option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_31["properties"] extends infer T_32 extends Record<string, OptionConfig> ? { [key_11 in keyof T_32]: import("./option-types").UndefinedIfRequiredAndNoDefault<T_31["properties"][key_11], any>; } : never) & (T_31["additionalProperties"] extends "string" ? Record<string, string> : T_31["additionalProperties"] extends "number" ? Record<string, number> : T_31["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
189
|
+
}[T_28["properties"][key_10]["type"]] : "choices" extends keyof T_28["properties"][key_10] ? T_28["properties"][key_10]["choices"] extends (infer TChoice)[] ? TChoice : T_28["properties"][key_10]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_28["additionalProperties"] extends "string" ? Record<string, string> : T_28["additionalProperties"] extends "number" ? Record<string, number> : T_28["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
190
|
+
}[T_25["properties"][key_9]["type"]] : "choices" extends keyof T_25["properties"][key_9] ? T_25["properties"][key_9]["choices"] extends (infer TChoice)[] ? TChoice : T_25["properties"][key_9]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_25["additionalProperties"] extends "string" ? Record<string, string> : T_25["additionalProperties"] extends "number" ? Record<string, number> : T_25["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
191
|
+
}[T_22["properties"][key_8]["type"]] : "choices" extends keyof T_22["properties"][key_8] ? T_22["properties"][key_8]["choices"] extends (infer TChoice)[] ? TChoice : T_22["properties"][key_8]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_22["additionalProperties"] extends "string" ? Record<string, string> : T_22["additionalProperties"] extends "number" ? Record<string, number> : T_22["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
192
|
+
}[T_19["properties"][key_7]["type"]] : "choices" extends keyof T_19["properties"][key_7] ? T_19["properties"][key_7]["choices"] extends (infer TChoice)[] ? TChoice : T_19["properties"][key_7]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_19["additionalProperties"] extends "string" ? Record<string, string> : T_19["additionalProperties"] extends "number" ? Record<string, number> : T_19["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
193
|
+
}[T_16["properties"][key_6]["type"]] : "choices" extends keyof T_16["properties"][key_6] ? T_16["properties"][key_6]["choices"] extends (infer TChoice)[] ? TChoice : T_16["properties"][key_6]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_16["additionalProperties"] extends "string" ? Record<string, string> : T_16["additionalProperties"] extends "number" ? Record<string, number> : T_16["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
194
|
+
}[T_13["properties"][key_5]["type"]] : "choices" extends keyof T_13["properties"][key_5] ? T_13["properties"][key_5]["choices"] extends (infer TChoice)[] ? TChoice : T_13["properties"][key_5]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_13["additionalProperties"] extends "string" ? Record<string, string> : T_13["additionalProperties"] extends "number" ? Record<string, number> : T_13["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
195
|
+
}[T_10["properties"][key_4]["type"]] : "choices" extends keyof T_10["properties"][key_4] ? T_10["properties"][key_4]["choices"] extends (infer TChoice)[] ? TChoice : T_10["properties"][key_4]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_10["additionalProperties"] extends "string" ? Record<string, string> : T_10["additionalProperties"] extends "number" ? Record<string, number> : T_10["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
196
|
+
}[T_7["properties"][key_3]["type"]] : "choices" extends keyof T_7["properties"][key_3] ? T_7["properties"][key_3]["choices"] extends (infer TChoice)[] ? TChoice : T_7["properties"][key_3]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_7["additionalProperties"] extends "string" ? Record<string, string> : T_7["additionalProperties"] extends "number" ? Record<string, number> : T_7["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
197
|
+
}[T_4["properties"][key_2]["type"]] : "choices" extends keyof T_4["properties"][key_2] ? T_4["properties"][key_2]["choices"] extends (infer TChoice)[] ? TChoice : T_4["properties"][key_2]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_4["additionalProperties"] extends "string" ? Record<string, string> : T_4["additionalProperties"] extends "number" ? Record<string, number> : T_4["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
198
|
+
}[T_1["properties"][key_1]["type"]] : "choices" extends keyof T_1["properties"][key_1] ? T_1["properties"][key_1]["choices"] extends (infer TChoice)[] ? TChoice : T_1["properties"][key_1]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_1["additionalProperties"] extends "string" ? Record<string, string> : T_1["additionalProperties"] extends "number" ? Record<string, number> : T_1["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
199
|
+
}[(TOptionConfig & {
|
|
200
|
+
readonly positional: true;
|
|
201
|
+
})["type"]] : "choices" extends "positional" | keyof TOptionConfig ? (TOptionConfig & {
|
|
202
|
+
readonly positional: true;
|
|
203
|
+
})[keyof TOptionConfig & "choices"] extends (infer TChoice)[] ? TChoice : (TOptionConfig & {
|
|
105
204
|
readonly positional: true;
|
|
106
|
-
}>; }>;
|
|
205
|
+
})[keyof TOptionConfig & "choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; }>;
|
|
107
206
|
/**
|
|
108
207
|
* Enables environment variable population for options.
|
|
109
208
|
* @param envPrefix Prefix for environment variables. The full environment variable name will be `${envPrefix}_${optionName}`.
|
|
110
209
|
*/
|
|
111
|
-
env(envPrefix?: string): this;
|
|
210
|
+
env(envPrefix?: string): typeof this;
|
|
211
|
+
env(options: EnvOptionConfig): typeof this;
|
|
212
|
+
/**
|
|
213
|
+
* Registers a configuration provider to read configuration from.
|
|
214
|
+
* @param provider The configuration provider to register.
|
|
215
|
+
*/
|
|
216
|
+
config(provider: ConfigurationProvider<TArgs>): this;
|
|
112
217
|
/**
|
|
113
218
|
* Parses an array of arguments into a structured object.
|
|
114
219
|
* @param argv The array of arguments to parse
|
|
@@ -118,6 +223,11 @@ export declare class ArgvParser<TArgs extends ParsedArgs = {
|
|
|
118
223
|
private normalizeOptions;
|
|
119
224
|
private validateAndNormalizeResults;
|
|
120
225
|
private readFromEnv;
|
|
226
|
+
private reflectEnv;
|
|
227
|
+
private cachedConfigKey;
|
|
228
|
+
private cachedConfig;
|
|
229
|
+
private getEnvKey;
|
|
230
|
+
private readFromConfig;
|
|
121
231
|
/**
|
|
122
232
|
* Registers that a set of options cannot be provided at the same time.
|
|
123
233
|
* @param options The options that cannot be provided together.
|
|
@@ -134,9 +244,7 @@ export declare class ArgvParser<TArgs extends ParsedArgs = {
|
|
|
134
244
|
* @returns The updated parser instance.
|
|
135
245
|
*/
|
|
136
246
|
augment<TAugment extends ParsedArgs>(parser: ArgvParser<TAugment>): ArgvParser<TArgs & TAugment>;
|
|
137
|
-
clone(parserOptions?: ParserOptions): ArgvParser<
|
|
138
|
-
unmatched: string[];
|
|
139
|
-
}>;
|
|
247
|
+
clone(parserOptions?: ParserOptions<TArgs>): ArgvParser<TArgs>;
|
|
140
248
|
asReadonly(): ReadonlyArgvParser<TArgs>;
|
|
141
249
|
}
|
|
142
250
|
/**
|
|
@@ -145,7 +253,14 @@ export declare class ArgvParser<TArgs extends ParsedArgs = {
|
|
|
145
253
|
* @returns new parser, see {@link ArgvParser}
|
|
146
254
|
*/
|
|
147
255
|
export declare function parser(opts?: ParserOptions): ArgvParser<{
|
|
256
|
+
/**
|
|
257
|
+
* Contains any unmatched arguments as originally passed to the parser.
|
|
258
|
+
*/
|
|
148
259
|
unmatched: string[];
|
|
260
|
+
/**
|
|
261
|
+
* Contains any arguments passed after `--`, which halts parsing of flags.
|
|
262
|
+
*/
|
|
263
|
+
'--'?: string[];
|
|
149
264
|
}>;
|
|
150
265
|
export declare function tryParseValue(parser: Parser<InternalOptionConfig>, input: ParserContext<InternalOptionConfig>): any;
|
|
151
266
|
export declare class ValidationFailedError<T> extends AggregateError {
|
package/src/lib/parser.js
CHANGED
|
@@ -10,6 +10,7 @@ const typings_1 = require("./parsers/typings");
|
|
|
10
10
|
const get_configured_key_1 = require("./utils/get-configured-key");
|
|
11
11
|
const flags_1 = require("./utils/flags");
|
|
12
12
|
const read_default_value_1 = require("./utils/read-default-value");
|
|
13
|
+
const configuration_loader_1 = require("./config-files/configuration-loader");
|
|
13
14
|
/**
|
|
14
15
|
* The main parser class. This class is used to configure and parse arguments.
|
|
15
16
|
*
|
|
@@ -40,11 +41,13 @@ class ArgvParser {
|
|
|
40
41
|
* The parsers used to parse individual option types.
|
|
41
42
|
*/
|
|
42
43
|
parserMap;
|
|
44
|
+
configuredConfigurationProviders = [];
|
|
43
45
|
/**
|
|
44
46
|
* If set, options can be populated from environment variables of the form `${envPrefix}_${optionName}`.
|
|
45
47
|
*/
|
|
46
48
|
envPrefix;
|
|
47
49
|
shouldReadFromEnv;
|
|
50
|
+
shouldReflectEnv;
|
|
48
51
|
/**
|
|
49
52
|
* Creates a new parser. Normally using {@link parser} is preferred.
|
|
50
53
|
* @param options
|
|
@@ -96,13 +99,24 @@ class ArgvParser {
|
|
|
96
99
|
positional: true,
|
|
97
100
|
});
|
|
98
101
|
}
|
|
102
|
+
env(a1) {
|
|
103
|
+
if (typeof a1 === 'object') {
|
|
104
|
+
this.envPrefix = a1.prefix;
|
|
105
|
+
this.shouldReadFromEnv = a1.populate ?? true;
|
|
106
|
+
this.shouldReflectEnv = a1.reflect ?? true;
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
this.envPrefix = a1;
|
|
110
|
+
this.shouldReadFromEnv = true;
|
|
111
|
+
this.shouldReflectEnv = true;
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
99
114
|
/**
|
|
100
|
-
*
|
|
101
|
-
* @param
|
|
115
|
+
* Registers a configuration provider to read configuration from.
|
|
116
|
+
* @param provider The configuration provider to register.
|
|
102
117
|
*/
|
|
103
|
-
|
|
104
|
-
this.
|
|
105
|
-
this.shouldReadFromEnv = true;
|
|
118
|
+
config(provider) {
|
|
119
|
+
this.configuredConfigurationProviders.push(provider);
|
|
106
120
|
return this;
|
|
107
121
|
}
|
|
108
122
|
/**
|
|
@@ -195,17 +209,32 @@ class ArgvParser {
|
|
|
195
209
|
for (const key in this.configuredOptions) {
|
|
196
210
|
const configuration = this.configuredOptions[key];
|
|
197
211
|
if (normalized[key] === undefined) {
|
|
198
|
-
if (
|
|
199
|
-
|
|
212
|
+
if (
|
|
213
|
+
// If env not disabled for this option, and env is enabled for parser
|
|
214
|
+
(configuration.env !== false &&
|
|
215
|
+
!(typeof configuration.env === 'object' &&
|
|
216
|
+
configuration.env.populate === false) &&
|
|
217
|
+
this.shouldReadFromEnv) ||
|
|
218
|
+
// OR the env is explicitly enabled for this option, and populate is not disabled
|
|
219
|
+
(configuration.env &&
|
|
220
|
+
!(typeof configuration.env === 'object' &&
|
|
221
|
+
configuration.env.populate === false))) {
|
|
200
222
|
const envValue = this.readFromEnv(configuration);
|
|
201
223
|
if (envValue) {
|
|
202
224
|
normalized[configuration.key] = envValue;
|
|
203
225
|
}
|
|
204
226
|
}
|
|
227
|
+
if (normalized[configuration.key] === undefined) {
|
|
228
|
+
const configValue = this.readFromConfig(configuration);
|
|
229
|
+
if (configValue !== undefined) {
|
|
230
|
+
normalized[configuration.key] = configValue;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
205
233
|
if (configuration.default !== undefined) {
|
|
206
234
|
normalized[configuration.key] ??= (0, read_default_value_1.readDefaultValue)(configuration)[0];
|
|
207
235
|
}
|
|
208
236
|
}
|
|
237
|
+
this.reflectEnv(configuration, normalized[configuration.key]);
|
|
209
238
|
}
|
|
210
239
|
return normalized;
|
|
211
240
|
}
|
|
@@ -264,6 +293,35 @@ class ArgvParser {
|
|
|
264
293
|
return normalized;
|
|
265
294
|
}
|
|
266
295
|
readFromEnv(configuration) {
|
|
296
|
+
const envKey = this.getEnvKey(configuration);
|
|
297
|
+
const envValue = process.env[envKey];
|
|
298
|
+
if (envValue) {
|
|
299
|
+
return tryParseValue(this.parserMap[configuration.type], {
|
|
300
|
+
config: configuration,
|
|
301
|
+
tokens: [envValue],
|
|
302
|
+
providedFlag: `--${configuration.key}`,
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
reflectEnv(configuration, value) {
|
|
307
|
+
// Skip reflection if:
|
|
308
|
+
if (
|
|
309
|
+
// - Global reflect is disabled, and local reflect is not enabled
|
|
310
|
+
(this.shouldReflectEnv !== true && configuration.env !== true) ||
|
|
311
|
+
// - Local reflect is explicitly disabled
|
|
312
|
+
configuration.env === false ||
|
|
313
|
+
(typeof configuration.env === 'object' &&
|
|
314
|
+
configuration.env.reflect === false)) {
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
const envKey = this.getEnvKey(configuration);
|
|
318
|
+
if (value !== undefined) {
|
|
319
|
+
process.env[envKey] = value;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
cachedConfigKey;
|
|
323
|
+
cachedConfig;
|
|
324
|
+
getEnvKey(configuration) {
|
|
267
325
|
const { envKey: configuredKey, prefix } = typeof configuration.env === 'string'
|
|
268
326
|
? { envKey: configuration.env, prefix: this.envPrefix }
|
|
269
327
|
: typeof configuration.env === 'boolean'
|
|
@@ -273,13 +331,15 @@ class ArgvParser {
|
|
|
273
331
|
prefix: configuration.env?.prefix === false ? undefined : this.envPrefix,
|
|
274
332
|
};
|
|
275
333
|
const envKey = (0, case_transformations_1.getEnvKey)(prefix, configuredKey);
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
334
|
+
return envKey;
|
|
335
|
+
}
|
|
336
|
+
readFromConfig(configuration) {
|
|
337
|
+
if (this.cachedConfig === undefined ||
|
|
338
|
+
this.cachedConfigKey !== this.configuredConfigurationProviders.length) {
|
|
339
|
+
this.cachedConfig = (0, configuration_loader_1.resolveConfiguration)(process.cwd(), this.configuredConfigurationProviders);
|
|
340
|
+
this.cachedConfigKey = this.configuredConfigurationProviders.length;
|
|
282
341
|
}
|
|
342
|
+
return this.cachedConfig?.[configuration.key];
|
|
283
343
|
}
|
|
284
344
|
/**
|
|
285
345
|
* Registers that a set of options cannot be provided at the same time.
|
package/src/lib/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../../packages/parser/src/lib/parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../../packages/parser/src/lib/parser.ts"],"names":[],"mappings":"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"}
|
package/src/lib/utils/chain.d.ts
CHANGED
|
@@ -327,5 +327,71 @@ export declare function chain<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
|
|
|
327
327
|
* @param config The configuration for the option
|
|
328
328
|
* @returns A unary function that adds an option to an {@link ArgvParser}.
|
|
329
329
|
*/
|
|
330
|
-
export declare function makeComposableOption<const TKey extends string, const TOptionConfig extends OptionConfig>(name: TKey, config: TOptionConfig): <const T extends ParsedArgs>(argv: ArgvParser<T>) => ArgvParser<T & { [key in TKey]: import("../option-types").
|
|
330
|
+
export declare function makeComposableOption<const TKey extends string, const TOptionConfig extends OptionConfig>(name: TKey, config: TOptionConfig): <const T extends ParsedArgs>(argv: ArgvParser<T>) => ArgvParser<T & { [key in TKey]: import("../option-types").UndefinedIfRequiredAndNoDefault<TOptionConfig, ("choices" extends keyof TOptionConfig ? TOptionConfig[keyof TOptionConfig & "choices"] extends (infer TChoice)[] ? TChoice : TOptionConfig[keyof TOptionConfig & "choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? TOptionConfig["coerce"] extends (s: any) => any ? ReturnType<TOptionConfig["coerce"]> : {
|
|
331
|
+
string: string;
|
|
332
|
+
number: number;
|
|
333
|
+
boolean: boolean;
|
|
334
|
+
array: (TOptionConfig extends import("../option-types").ArrayOptionConfig<string | number> ? TOptionConfig["items"] extends "string" ? string : number : never)[];
|
|
335
|
+
object: TOptionConfig extends import("../option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (TOptionConfig["properties"] extends infer T_1 extends Record<string, OptionConfig> ? { [key_1 in keyof T_1]: import("../option-types").UndefinedIfRequiredAndNoDefault<TOptionConfig["properties"][key_1], ("choices" extends keyof TOptionConfig["properties"][key_1] ? TOptionConfig["properties"][key_1]["choices"] extends (infer TChoice)[] ? TChoice : TOptionConfig["properties"][key_1]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? TOptionConfig["properties"][key_1]["coerce"] extends (s: any) => any ? ReturnType<TOptionConfig["properties"][key_1]["coerce"]> : {
|
|
336
|
+
string: string;
|
|
337
|
+
number: number;
|
|
338
|
+
boolean: boolean;
|
|
339
|
+
array: (TOptionConfig["properties"][key_1] extends infer T_2 ? T_2 extends TOptionConfig["properties"][key_1] ? T_2 extends import("../option-types").ArrayOptionConfig<string | number> ? T_2["items"] extends "string" ? string : number : never : never : never)[];
|
|
340
|
+
object: TOptionConfig["properties"][key_1] extends infer T_3 ? T_3 extends TOptionConfig["properties"][key_1] ? T_3 extends import("../option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_3["properties"] extends infer T_4 extends Record<string, OptionConfig> ? { [key_2 in keyof T_4]: import("../option-types").UndefinedIfRequiredAndNoDefault<T_3["properties"][key_2], ("choices" extends keyof T_3["properties"][key_2] ? T_3["properties"][key_2]["choices"] extends (infer TChoice)[] ? TChoice : T_3["properties"][key_2]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_3["properties"][key_2]["coerce"] extends (s: any) => any ? ReturnType<T_3["properties"][key_2]["coerce"]> : {
|
|
341
|
+
string: string;
|
|
342
|
+
number: number;
|
|
343
|
+
boolean: boolean;
|
|
344
|
+
array: (T_3["properties"][key_2] extends infer T_5 ? T_5 extends T_3["properties"][key_2] ? T_5 extends import("../option-types").ArrayOptionConfig<string | number> ? T_5["items"] extends "string" ? string : number : never : never : never)[];
|
|
345
|
+
object: T_3["properties"][key_2] extends infer T_6 ? T_6 extends T_3["properties"][key_2] ? T_6 extends import("../option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_6["properties"] extends infer T_7 extends Record<string, OptionConfig> ? { [key_3 in keyof T_7]: import("../option-types").UndefinedIfRequiredAndNoDefault<T_6["properties"][key_3], ("choices" extends keyof T_6["properties"][key_3] ? T_6["properties"][key_3]["choices"] extends (infer TChoice)[] ? TChoice : T_6["properties"][key_3]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_6["properties"][key_3]["coerce"] extends (s: any) => any ? ReturnType<T_6["properties"][key_3]["coerce"]> : {
|
|
346
|
+
string: string;
|
|
347
|
+
number: number;
|
|
348
|
+
boolean: boolean;
|
|
349
|
+
array: (T_6["properties"][key_3] extends infer T_8 ? T_8 extends T_6["properties"][key_3] ? T_8 extends import("../option-types").ArrayOptionConfig<string | number> ? T_8["items"] extends "string" ? string : number : never : never : never)[];
|
|
350
|
+
object: T_6["properties"][key_3] extends infer T_9 ? T_9 extends T_6["properties"][key_3] ? T_9 extends import("../option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_9["properties"] extends infer T_10 extends Record<string, OptionConfig> ? { [key_4 in keyof T_10]: import("../option-types").UndefinedIfRequiredAndNoDefault<T_9["properties"][key_4], ("choices" extends keyof T_9["properties"][key_4] ? T_9["properties"][key_4]["choices"] extends (infer TChoice)[] ? TChoice : T_9["properties"][key_4]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_9["properties"][key_4]["coerce"] extends (s: any) => any ? ReturnType<T_9["properties"][key_4]["coerce"]> : {
|
|
351
|
+
string: string;
|
|
352
|
+
number: number;
|
|
353
|
+
boolean: boolean;
|
|
354
|
+
array: (T_9["properties"][key_4] extends infer T_11 ? T_11 extends T_9["properties"][key_4] ? T_11 extends import("../option-types").ArrayOptionConfig<string | number> ? T_11["items"] extends "string" ? string : number : never : never : never)[];
|
|
355
|
+
object: T_9["properties"][key_4] extends infer T_12 ? T_12 extends T_9["properties"][key_4] ? T_12 extends import("../option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_12["properties"] extends infer T_13 extends Record<string, OptionConfig> ? { [key_5 in keyof T_13]: import("../option-types").UndefinedIfRequiredAndNoDefault<T_12["properties"][key_5], ("choices" extends keyof T_12["properties"][key_5] ? T_12["properties"][key_5]["choices"] extends (infer TChoice)[] ? TChoice : T_12["properties"][key_5]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_12["properties"][key_5]["coerce"] extends (s: any) => any ? ReturnType<T_12["properties"][key_5]["coerce"]> : {
|
|
356
|
+
string: string;
|
|
357
|
+
number: number;
|
|
358
|
+
boolean: boolean;
|
|
359
|
+
array: (T_12["properties"][key_5] extends infer T_14 ? T_14 extends T_12["properties"][key_5] ? T_14 extends import("../option-types").ArrayOptionConfig<string | number> ? T_14["items"] extends "string" ? string : number : never : never : never)[];
|
|
360
|
+
object: T_12["properties"][key_5] extends infer T_15 ? T_15 extends T_12["properties"][key_5] ? T_15 extends import("../option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_15["properties"] extends infer T_16 extends Record<string, OptionConfig> ? { [key_6 in keyof T_16]: import("../option-types").UndefinedIfRequiredAndNoDefault<T_15["properties"][key_6], ("choices" extends keyof T_15["properties"][key_6] ? T_15["properties"][key_6]["choices"] extends (infer TChoice)[] ? TChoice : T_15["properties"][key_6]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_15["properties"][key_6]["coerce"] extends (s: any) => any ? ReturnType<T_15["properties"][key_6]["coerce"]> : {
|
|
361
|
+
string: string;
|
|
362
|
+
number: number;
|
|
363
|
+
boolean: boolean;
|
|
364
|
+
array: (T_15["properties"][key_6] extends infer T_17 ? T_17 extends T_15["properties"][key_6] ? T_17 extends import("../option-types").ArrayOptionConfig<string | number> ? T_17["items"] extends "string" ? string : number : never : never : never)[];
|
|
365
|
+
object: T_15["properties"][key_6] extends infer T_18 ? T_18 extends T_15["properties"][key_6] ? T_18 extends import("../option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_18["properties"] extends infer T_19 extends Record<string, OptionConfig> ? { [key_7 in keyof T_19]: import("../option-types").UndefinedIfRequiredAndNoDefault<T_18["properties"][key_7], ("choices" extends keyof T_18["properties"][key_7] ? T_18["properties"][key_7]["choices"] extends (infer TChoice)[] ? TChoice : T_18["properties"][key_7]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_18["properties"][key_7]["coerce"] extends (s: any) => any ? ReturnType<T_18["properties"][key_7]["coerce"]> : {
|
|
366
|
+
string: string;
|
|
367
|
+
number: number;
|
|
368
|
+
boolean: boolean;
|
|
369
|
+
array: (T_18["properties"][key_7] extends infer T_20 ? T_20 extends T_18["properties"][key_7] ? T_20 extends import("../option-types").ArrayOptionConfig<string | number> ? T_20["items"] extends "string" ? string : number : never : never : never)[];
|
|
370
|
+
object: T_18["properties"][key_7] extends infer T_21 ? T_21 extends T_18["properties"][key_7] ? T_21 extends import("../option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_21["properties"] extends infer T_22 extends Record<string, OptionConfig> ? { [key_8 in keyof T_22]: import("../option-types").UndefinedIfRequiredAndNoDefault<T_21["properties"][key_8], ("choices" extends keyof T_21["properties"][key_8] ? T_21["properties"][key_8]["choices"] extends (infer TChoice)[] ? TChoice : T_21["properties"][key_8]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_21["properties"][key_8]["coerce"] extends (s: any) => any ? ReturnType<T_21["properties"][key_8]["coerce"]> : {
|
|
371
|
+
string: string;
|
|
372
|
+
number: number;
|
|
373
|
+
boolean: boolean;
|
|
374
|
+
array: (T_21["properties"][key_8] extends infer T_23 ? T_23 extends T_21["properties"][key_8] ? T_23 extends import("../option-types").ArrayOptionConfig<string | number> ? T_23["items"] extends "string" ? string : number : never : never : never)[];
|
|
375
|
+
object: T_21["properties"][key_8] extends infer T_24 ? T_24 extends T_21["properties"][key_8] ? T_24 extends import("../option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_24["properties"] extends infer T_25 extends Record<string, OptionConfig> ? { [key_9 in keyof T_25]: import("../option-types").UndefinedIfRequiredAndNoDefault<T_24["properties"][key_9], ("choices" extends keyof T_24["properties"][key_9] ? T_24["properties"][key_9]["choices"] extends (infer TChoice)[] ? TChoice : T_24["properties"][key_9]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_24["properties"][key_9]["coerce"] extends (s: any) => any ? ReturnType<T_24["properties"][key_9]["coerce"]> : {
|
|
376
|
+
string: string;
|
|
377
|
+
number: number;
|
|
378
|
+
boolean: boolean;
|
|
379
|
+
array: (T_24["properties"][key_9] extends infer T_26 ? T_26 extends T_24["properties"][key_9] ? T_26 extends import("../option-types").ArrayOptionConfig<string | number> ? T_26["items"] extends "string" ? string : number : never : never : never)[];
|
|
380
|
+
object: T_24["properties"][key_9] extends infer T_27 ? T_27 extends T_24["properties"][key_9] ? T_27 extends import("../option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_27["properties"] extends infer T_28 extends Record<string, OptionConfig> ? { [key_10 in keyof T_28]: import("../option-types").UndefinedIfRequiredAndNoDefault<T_27["properties"][key_10], ("choices" extends keyof T_27["properties"][key_10] ? T_27["properties"][key_10]["choices"] extends (infer TChoice)[] ? TChoice : T_27["properties"][key_10]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never) extends [never] ? T_27["properties"][key_10]["coerce"] extends (s: any) => any ? ReturnType<T_27["properties"][key_10]["coerce"]> : {
|
|
381
|
+
string: string;
|
|
382
|
+
number: number;
|
|
383
|
+
boolean: boolean;
|
|
384
|
+
array: (T_27["properties"][key_10] extends infer T_29 ? T_29 extends T_27["properties"][key_10] ? T_29 extends import("../option-types").ArrayOptionConfig<string | number> ? T_29["items"] extends "string" ? string : number : never : never : never)[];
|
|
385
|
+
object: T_27["properties"][key_10] extends infer T_30 ? T_30 extends T_27["properties"][key_10] ? T_30 extends import("../option-types").ObjectOptionConfig<Record<string, string>, Record<string, any>> ? (T_30["properties"] extends infer T_31 extends Record<string, OptionConfig> ? { [key_11 in keyof T_31]: import("../option-types").UndefinedIfRequiredAndNoDefault<T_30["properties"][key_11], any>; } : never) & (T_30["additionalProperties"] extends "string" ? Record<string, string> : T_30["additionalProperties"] extends "number" ? Record<string, number> : T_30["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
386
|
+
}[T_27["properties"][key_10]["type"]] : "choices" extends keyof T_27["properties"][key_10] ? T_27["properties"][key_10]["choices"] extends (infer TChoice)[] ? TChoice : T_27["properties"][key_10]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_27["additionalProperties"] extends "string" ? Record<string, string> : T_27["additionalProperties"] extends "number" ? Record<string, number> : T_27["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
387
|
+
}[T_24["properties"][key_9]["type"]] : "choices" extends keyof T_24["properties"][key_9] ? T_24["properties"][key_9]["choices"] extends (infer TChoice)[] ? TChoice : T_24["properties"][key_9]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_24["additionalProperties"] extends "string" ? Record<string, string> : T_24["additionalProperties"] extends "number" ? Record<string, number> : T_24["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
388
|
+
}[T_21["properties"][key_8]["type"]] : "choices" extends keyof T_21["properties"][key_8] ? T_21["properties"][key_8]["choices"] extends (infer TChoice)[] ? TChoice : T_21["properties"][key_8]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_21["additionalProperties"] extends "string" ? Record<string, string> : T_21["additionalProperties"] extends "number" ? Record<string, number> : T_21["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
389
|
+
}[T_18["properties"][key_7]["type"]] : "choices" extends keyof T_18["properties"][key_7] ? T_18["properties"][key_7]["choices"] extends (infer TChoice)[] ? TChoice : T_18["properties"][key_7]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_18["additionalProperties"] extends "string" ? Record<string, string> : T_18["additionalProperties"] extends "number" ? Record<string, number> : T_18["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
390
|
+
}[T_15["properties"][key_6]["type"]] : "choices" extends keyof T_15["properties"][key_6] ? T_15["properties"][key_6]["choices"] extends (infer TChoice)[] ? TChoice : T_15["properties"][key_6]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_15["additionalProperties"] extends "string" ? Record<string, string> : T_15["additionalProperties"] extends "number" ? Record<string, number> : T_15["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
391
|
+
}[T_12["properties"][key_5]["type"]] : "choices" extends keyof T_12["properties"][key_5] ? T_12["properties"][key_5]["choices"] extends (infer TChoice)[] ? TChoice : T_12["properties"][key_5]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_12["additionalProperties"] extends "string" ? Record<string, string> : T_12["additionalProperties"] extends "number" ? Record<string, number> : T_12["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
392
|
+
}[T_9["properties"][key_4]["type"]] : "choices" extends keyof T_9["properties"][key_4] ? T_9["properties"][key_4]["choices"] extends (infer TChoice)[] ? TChoice : T_9["properties"][key_4]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_9["additionalProperties"] extends "string" ? Record<string, string> : T_9["additionalProperties"] extends "number" ? Record<string, number> : T_9["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
393
|
+
}[T_6["properties"][key_3]["type"]] : "choices" extends keyof T_6["properties"][key_3] ? T_6["properties"][key_3]["choices"] extends (infer TChoice)[] ? TChoice : T_6["properties"][key_3]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_6["additionalProperties"] extends "string" ? Record<string, string> : T_6["additionalProperties"] extends "number" ? Record<string, number> : T_6["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
394
|
+
}[T_3["properties"][key_2]["type"]] : "choices" extends keyof T_3["properties"][key_2] ? T_3["properties"][key_2]["choices"] extends (infer TChoice)[] ? TChoice : T_3["properties"][key_2]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (T_3["additionalProperties"] extends "string" ? Record<string, string> : T_3["additionalProperties"] extends "number" ? Record<string, number> : T_3["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never : never : never;
|
|
395
|
+
}[TOptionConfig["properties"][key_1]["type"]] : "choices" extends keyof TOptionConfig["properties"][key_1] ? TOptionConfig["properties"][key_1]["choices"] extends (infer TChoice)[] ? TChoice : TOptionConfig["properties"][key_1]["choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; } : never) & (TOptionConfig["additionalProperties"] extends "string" ? Record<string, string> : TOptionConfig["additionalProperties"] extends "number" ? Record<string, number> : TOptionConfig["additionalProperties"] extends "boolean" ? Record<string, boolean> : Record<string, never>) : never;
|
|
396
|
+
}[TOptionConfig["type"]] : "choices" extends keyof TOptionConfig ? TOptionConfig[keyof TOptionConfig & "choices"] extends (infer TChoice)[] ? TChoice : TOptionConfig[keyof TOptionConfig & "choices"] extends () => Array<infer TChoice_1> ? TChoice_1 : never : never>; }>;
|
|
331
397
|
export {};
|