@cqse/commons 1.0.0-beta.6 → 1.0.4

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.
@@ -1,576 +0,0 @@
1
- "use strict";
2
- /**
3
- * Configuration parser module that handles command-line arguments, environment variables,
4
- * and configuration files for TypeScript/JavaScript applications.
5
- *
6
- * @module ConfigParser
7
- */
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ConfigurationParameters = exports.CONFIG_GROUP_APP = void 0;
13
- exports.parameterNameToParameterId = parameterNameToParameterId;
14
- exports.longParameterToEnvironmentVariableName = longParameterToEnvironmentVariableName;
15
- exports.parseArguments = parseArguments;
16
- exports.parseConfigFile = parseConfigFile;
17
- exports.printHelp = printHelp;
18
- exports.checkArguments = checkArguments;
19
- exports.processCommandLine = processCommandLine;
20
- exports.parameterUnion = parameterUnion;
21
- const node_process_1 = __importDefault(require("node:process"));
22
- const Exceptions_1 = require("./Exceptions");
23
- /** Parameter group for --version and --help */
24
- exports.CONFIG_GROUP_APP = {
25
- order: 999,
26
- title: 'Application'
27
- };
28
- function expectedArgumentCount(parameterDescriptor) {
29
- if (parameterDescriptor.type === 'int' || parameterDescriptor.type === 'string') {
30
- return 1;
31
- }
32
- else if (parameterDescriptor.type === 'bool') {
33
- return 0;
34
- }
35
- else if (parameterDescriptor.type === 'string[]') {
36
- return Number.POSITIVE_INFINITY;
37
- }
38
- else {
39
- throw new Exceptions_1.InvalidConfigurationException(`Unsupported parameter type "${parameterDescriptor.type}" for parameter "${parameterDescriptor.longParameter}".`);
40
- }
41
- }
42
- /**
43
- * Converts a parameter name (with dashes) to a camelCase parameter ID.
44
- *
45
- * @param parameterName - The parameter name to convert (e.g., --my-param)
46
- * @returns The camelCase parameter ID (e.g., myParam)
47
- */
48
- function parameterNameToParameterId(parameterName) {
49
- const withoutLeadingDashes = parameterName.replace(/^-+/, '');
50
- return withoutLeadingDashes.replace(/-([a-z])/g, (_, char) => char.toUpperCase());
51
- }
52
- /**
53
- * Converts a long parameter name to an environment variable name.
54
- *
55
- * @param longParameter - The long parameter name (e.g., --my-param)
56
- * @returns The environment variable name (e.g., MY_PARAM)
57
- */
58
- function longParameterToEnvironmentVariableName(longParameter) {
59
- const withoutLeadingDashes = longParameter.replace(/^--/, '');
60
- return withoutLeadingDashes.toUpperCase().replace(/-/g, '_');
61
- }
62
- /**
63
- * Manages configuration parameters and their properties.
64
- * Provides functionality to add, describe, and parse parameters.
65
- */
66
- class ConfigurationParameters {
67
- constructor() {
68
- this.parameters = new Map();
69
- this.shortToLongParameterMap = new Map();
70
- this.sequentialParameters = [];
71
- this.argumentChecks = [];
72
- }
73
- /**
74
- * Adds a new parameter to the configuration.
75
- *
76
- * @param shortParameter - Optional short form of the parameter (e.g., -p)
77
- * @param longParameter - Long form of the parameter (e.g., --port)
78
- * @param type - Parameter's data type
79
- * @param options - Additional parameter options including a help text and default value
80
- */
81
- addParameter(shortParameter, longParameter, type, options = {}) {
82
- var _a, _b;
83
- const parameterId = parameterNameToParameterId(longParameter);
84
- const environmentVariableName = longParameterToEnvironmentVariableName(longParameter);
85
- this.describeParameter(parameterId, { parameterId, longParameter, type, shortParameter,
86
- help: (_a = options.help) !== null && _a !== void 0 ? _a : "",
87
- default: options.default,
88
- internal: (_b = options.internal) !== null && _b !== void 0 ? _b : false,
89
- group: options.group,
90
- environmentVariableName });
91
- }
92
- /**
93
- * Adds a new argument check function to the list of checks.
94
- *
95
- * @param check - A function that takes an options object as input and returns a string containing an
96
- * error message if a validation fails, or undefined if the validation passes.
97
- */
98
- addArgumentCheck(check) {
99
- this.argumentChecks.push(check);
100
- }
101
- /**
102
- * Makes the given parameter mandatory.
103
- */
104
- addRequiredArgumentFor(parameterId) {
105
- const parameter = this.lookupParameter(parameterId);
106
- if (parameter === undefined) {
107
- throw new Exceptions_1.InvalidConfigurationException(`Unknown parameter "${parameterId}".`);
108
- }
109
- if (parameter.default !== undefined) {
110
- throw new Exceptions_1.InvalidConfigurationException(`Parameter "${parameterId}" is required, but has a default value.`);
111
- }
112
- this.argumentChecks.push((parsedArguments) => {
113
- const argument = parsedArguments[parameterId];
114
- if (argument === undefined) {
115
- return `Missing required argument for parameter "${parameter.longParameter}"\n` +
116
- `\tParameter description: ${parameter.help}`;
117
- }
118
- return undefined;
119
- });
120
- }
121
- /**
122
- * Describes a parameter with its complete set of properties.
123
- *
124
- * @param parameterId - Internal identifier for the parameter
125
- * @param descriptor - Complete parameter descriptor
126
- * @throws Error if short parameter is invalid or already mapped
127
- */
128
- describeParameter(parameterId, descriptor) {
129
- this.parameters.set(parameterId, descriptor);
130
- // Store a mapping for short parameters to their expanded (long) counterpart.
131
- if (descriptor.shortParameter) {
132
- const shortParameterId = descriptor.shortParameter.replace(/^-/, '').trim().toLowerCase();
133
- if (shortParameterId.length < 1 || shortParameterId.length > 3) {
134
- throw new Exceptions_1.InvalidConfigurationException(`Short parameter "${shortParameterId}" is invalid.`);
135
- }
136
- const existingMapping = this.shortToLongParameterMap.get(shortParameterId);
137
- if (existingMapping !== undefined && existingMapping !== parameterId) {
138
- throw new Exceptions_1.InvalidConfigurationException(`Short parameter "${shortParameterId}" is already mapped to parameter "${existingMapping}".`);
139
- }
140
- this.shortToLongParameterMap.set(shortParameterId, descriptor.parameterId);
141
- }
142
- // Maybe it describes a sequential parameter.
143
- if (!descriptor.longParameter.startsWith('--')) {
144
- this.sequentialParameters.push(parameterId);
145
- }
146
- }
147
- /**
148
- * Looks up a parameter descriptor by its ID.
149
- *
150
- * @param parameterId - Parameter identifier to look up
151
- * @returns Parameter descriptor if found, undefined otherwise
152
- */
153
- lookupParameter(parameterId) {
154
- let result = this.parameters.get(parameterId);
155
- if (result === undefined) {
156
- const longParameterId = this.shortToLongParameterMap.get(parameterId);
157
- if (longParameterId !== undefined) {
158
- result = this.parameters.get(longParameterId);
159
- }
160
- }
161
- return result;
162
- }
163
- /**
164
- * Returns all registered parameter descriptors.
165
- *
166
- * @returns Array of all parameter descriptors
167
- */
168
- getParameters() {
169
- return Array.from(this.parameters.values());
170
- }
171
- /**
172
- * Retrieves the collection of functions used for argument validation.
173
- */
174
- getArgumentChecks() {
175
- return this.argumentChecks;
176
- }
177
- /**
178
- * Returns an array of parameter IDs that are configured as sequential parameters.
179
- * That is, parameters that are given without a name but where their mapping
180
- * to concrete parameters is defined by their position in the command line.
181
- */
182
- getSequentialParameters() {
183
- return this.sequentialParameters;
184
- }
185
- /**
186
- * @returns A new configuration object with the same parameters as this one.
187
- */
188
- clone() {
189
- const clone = new ConfigurationParameters();
190
- for (const parameter of this.parameters.values()) {
191
- clone.describeParameter(parameter.parameterId, parameter);
192
- }
193
- for (const check of this.argumentChecks) {
194
- clone.addArgumentCheck(check);
195
- }
196
- return clone;
197
- }
198
- /**
199
- * Adds all parameters and checks from the given configuration to this one.
200
- */
201
- addAllOf(toAdd) {
202
- for (const parameter of toAdd.getParameters()) {
203
- this.describeParameter(parameter.parameterId, parameter);
204
- }
205
- for (const check of toAdd.getArgumentChecks()) {
206
- this.addArgumentCheck(check);
207
- }
208
- }
209
- }
210
- exports.ConfigurationParameters = ConfigurationParameters;
211
- /**
212
- * Parses command line arguments according to parameter definitions.
213
- *
214
- * @param args - Array of command line arguments to parse
215
- * @param parameters - Configuration parameters defining valid options
216
- * @returns Parsed options object with parameter values
217
- * @throws Error if parameter values are invalid or missing
218
- */
219
- function parseArguments(args, parameters) {
220
- const result = {};
221
- let activeParameter;
222
- let activeArguments = [];
223
- let awaitingArguments = 0;
224
- function finishParameter() {
225
- if (!activeParameter) {
226
- return;
227
- }
228
- if (awaitingArguments < Number.POSITIVE_INFINITY && awaitingArguments > 0) {
229
- throw new Exceptions_1.InvalidConfigurationException(`Missing value for parameter "${activeParameter.longParameter}".`);
230
- }
231
- if (activeParameter.type === 'bool') {
232
- result[activeParameter.parameterId] = true;
233
- activeParameter = undefined;
234
- }
235
- else if (activeParameter.type === 'string[]') {
236
- const targetList = result[activeParameter.parameterId];
237
- // A list argument can be either provided by separating a string with commas
238
- // or by pasing multiple string arguments (separated by space) in a sequence.
239
- const argumentsNormalizedAsList = parseStringListArgument(activeArguments.join(","));
240
- if (isDefinedStringList(targetList)) {
241
- result[activeParameter.parameterId] = targetList.concat(argumentsNormalizedAsList);
242
- }
243
- else {
244
- result[activeParameter.parameterId] = argumentsNormalizedAsList;
245
- }
246
- }
247
- else {
248
- if (activeArguments.length !== 1) {
249
- throw new Exceptions_1.InvalidConfigurationException(`Invalid value for parameter "${activeParameter.longParameter}": Expected a single value, got ${activeArguments.length}.`);
250
- }
251
- result[activeParameter.parameterId] = parseWithProperType(activeArguments[0], activeParameter);
252
- }
253
- activeParameter = undefined;
254
- activeArguments = [];
255
- }
256
- for (const argument of args) {
257
- if (argument.startsWith('-')) {
258
- finishParameter();
259
- const parameterId = parameterNameToParameterId(argument);
260
- activeParameter = parameters.lookupParameter(parameterId);
261
- if (!activeParameter) {
262
- throw new Exceptions_1.InvalidConfigurationException(`Unknown configuration parameter: ${argument}`);
263
- }
264
- awaitingArguments = expectedArgumentCount(activeParameter);
265
- }
266
- else {
267
- if (!activeParameter) {
268
- throw new Exceptions_1.InvalidConfigurationException(`Unexpected or unnamed argument, or unknown parameter '${argument}' supplied. Please specify a parameter name (for example, --input) for each argument.`);
269
- }
270
- activeArguments.push(argument);
271
- awaitingArguments--;
272
- }
273
- if (awaitingArguments === 0) {
274
- finishParameter();
275
- }
276
- }
277
- finishParameter();
278
- // Set default values for parameters for which we did not receive an argument.
279
- // Or read the value from an ENVIRONMENT_VARIABLE.
280
- for (const parameter of parameters.getParameters()) {
281
- if (result[parameter.parameterId] === undefined) {
282
- result[parameter.parameterId] = parameter.default;
283
- const environmentValue = node_process_1.default.env[parameter.environmentVariableName];
284
- if (environmentValue && !parameter.disableEnvironmentVariableOverride) {
285
- result[parameter.parameterId] = parseWithProperType(environmentValue, parameter);
286
- }
287
- }
288
- }
289
- return result;
290
- }
291
- function unquoteString(text) {
292
- text = text.trim();
293
- if ((text.startsWith('"') && text.endsWith('"')) ||
294
- (text.startsWith('\'') && text.endsWith('\'')) ||
295
- (text.startsWith('`') && text.endsWith('`'))) {
296
- return text.substring(1, text.length - 1);
297
- }
298
- else {
299
- return text;
300
- }
301
- }
302
- function parseStringListArgument(value) {
303
- if (!value) {
304
- return [];
305
- }
306
- return value.split(',').map(item => unquoteString(item));
307
- }
308
- function parseWithProperType(value, parameterDescriptor) {
309
- if (parameterDescriptor.type === 'int') {
310
- const parsedValue = parseInt(value, 10);
311
- if (isNaN(parsedValue)) {
312
- throw new Exceptions_1.InvalidConfigurationException(`Invalid value for parameter "${parameterDescriptor.longParameter}": Expected an integer, got "${value}".`);
313
- }
314
- return parsedValue;
315
- }
316
- else if (parameterDescriptor.type === 'bool') {
317
- const lowerValue = value.toLowerCase();
318
- if (lowerValue === 'true' || lowerValue === '1') {
319
- return true;
320
- }
321
- else if (lowerValue === 'false' || lowerValue === '0') {
322
- return false;
323
- }
324
- else {
325
- throw new Exceptions_1.InvalidConfigurationException(`Invalid value for parameter "${parameterDescriptor.longParameter}": Expected a boolean, got "${value}".`);
326
- }
327
- }
328
- else if (parameterDescriptor.type === 'string') {
329
- return unquoteString(value);
330
- }
331
- else if (parameterDescriptor.type === 'string[]') {
332
- return parseStringListArgument(value);
333
- }
334
- else {
335
- throw new Exceptions_1.InvalidConfigurationException(`Unsupported parameter type "${parameterDescriptor.type}" for parameter "${parameterDescriptor.longParameter}".`);
336
- }
337
- }
338
- function isDefinedStringList(option) {
339
- return Array.isArray(option) && option.every(item => typeof item === 'string');
340
- }
341
- /**
342
- * Parses a configuration file content into options and unnamed arguments.
343
- *
344
- * @param fileContent - Content of the configuration file to parse
345
- * @param parameters - Configuration parameters defining valid options
346
- * @returns Object containing parsed options and unnamed arguments
347
- * @throws Error if the configuration file contains invalid parameters or values
348
- */
349
- function parseConfigFile(fileContent, parameters) {
350
- const options = {};
351
- const unnamedArguments = [];
352
- for (const line of fileContent.split('\n')) {
353
- const trimmedLine = line.trim();
354
- if (trimmedLine.startsWith('#') || trimmedLine.length === 0) {
355
- continue;
356
- }
357
- if (!trimmedLine.includes('=') && parameters.getSequentialParameters().length > 0) {
358
- unnamedArguments.push(trimmedLine);
359
- continue;
360
- }
361
- const [key, value] = trimmedLine.split('=');
362
- const parameterId = parameterNameToParameterId(key);
363
- const parameterDescriptor = parameters.lookupParameter(parameterId);
364
- if (parameterDescriptor) {
365
- if (isDefinedStringList(options[parameterId]) && parameterDescriptor.type === 'string[]') {
366
- const newListValue = parseWithProperType(value, parameterDescriptor);
367
- if (isDefinedStringList(newListValue)) {
368
- options[parameterId] = options[parameterId].concat(newListValue);
369
- }
370
- else {
371
- throw new Exceptions_1.InvalidConfigurationException(`Invalid value for parameter "${parameterDescriptor.longParameter}": Expected a list of strings, got "${value}".`);
372
- }
373
- }
374
- else {
375
- options[parameterId] = parseWithProperType(value, parameterDescriptor);
376
- }
377
- }
378
- else {
379
- throw new Exceptions_1.InvalidConfigurationException(`Unknown configuration parameter: ${key}`);
380
- }
381
- }
382
- return { options, unnamedArguments };
383
- }
384
- /**
385
- * Prints help information for all registered parameters.
386
- *
387
- * @param parameters - Configuration parameters to display help for
388
- * @param aboutText - Optional descriptive text to display before parameter help
389
- * @param printParamterId - Print the ID of the parameter instead of the command line parameter names?
390
- */
391
- function printHelp(parameters, aboutText, printParamterId = false) {
392
- const lines = [];
393
- if (aboutText) {
394
- lines.push(aboutText);
395
- lines.push('');
396
- }
397
- if (!printParamterId) {
398
- lines.push('Usage:');
399
- }
400
- const grouped = groupAndSortParameterDescriptors(parameters);
401
- for (const group of grouped) {
402
- if (group.groupTitle) {
403
- lines.push('');
404
- lines.push(`# ${group.groupTitle}`);
405
- lines.push('');
406
- }
407
- if (group.groupHint) {
408
- lines.push(restrictLineLengthTo(group.groupHint, 80));
409
- lines.push('');
410
- }
411
- for (const descriptor of group.parameters) {
412
- if (descriptor.internal) {
413
- // Do not print internal parameters.
414
- // Note that getting them via the command line would still not be a problem;
415
- // typically, it would only define a new default value.
416
- continue;
417
- }
418
- function getArgumentPlaceholder() {
419
- const singleArgumentName = descriptor.environmentVariableName;
420
- if (descriptor.type === "bool") {
421
- return "";
422
- }
423
- else if (descriptor.type === "string[]") {
424
- return ` ${singleArgumentName}, .., ${singleArgumentName}`;
425
- }
426
- else {
427
- return ` ${singleArgumentName}`;
428
- }
429
- }
430
- const options = [];
431
- if (printParamterId) {
432
- options.push(`Parameter "${descriptor.parameterId}" (${descriptor.type})`);
433
- }
434
- else {
435
- if (descriptor.shortParameter) {
436
- options.push(`${descriptor.shortParameter}${getArgumentPlaceholder()}`);
437
- }
438
- options.push(`${descriptor.longParameter}${getArgumentPlaceholder()}`);
439
- }
440
- const help = ensureTabAfterNewline(restrictLineLengthTo(descriptor.help, 80));
441
- const defaultValue = descriptor.default ? `Default: ${descriptor.default}` : undefined;
442
- lines.push(` ${options.join(', ')}`);
443
- if (help) {
444
- lines.push(`\t${help}`);
445
- }
446
- if (defaultValue) {
447
- lines.push(`\t${defaultValue}`);
448
- }
449
- }
450
- }
451
- lines.push('');
452
- console.log(lines.join('\n'));
453
- }
454
- /**
455
- * Add breaks after words (replace space by newline) in case a sentence gets longer
456
- * on one line than the specified `maxLineLength`.
457
- */
458
- function restrictLineLengthTo(text, maxLineLength) {
459
- text = text.replace(/\n/g, ' ');
460
- const words = text.split(' ');
461
- const lines = [];
462
- let currentLine = '';
463
- for (const word of words) {
464
- if (currentLine.length + word.length + 1 > maxLineLength) {
465
- lines.push(currentLine);
466
- currentLine = '';
467
- }
468
- if (currentLine.length > 0) {
469
- currentLine += ' ';
470
- }
471
- currentLine += word;
472
- }
473
- if (currentLine.length > 0) {
474
- lines.push(currentLine);
475
- }
476
- return lines.join('\n');
477
- }
478
- function ensureTabAfterNewline(text) {
479
- if (!text) {
480
- return undefined;
481
- }
482
- return text.replace(/\n/g, '\n\t');
483
- }
484
- function groupAndSortParameterDescriptors(parameters) {
485
- var _a, _b, _c;
486
- const parametersByGroup = new Map();
487
- const groupOrders = new Map();
488
- const groupHints = new Map();
489
- // Group parameters and collect group orders
490
- for (const parameter of parameters.getParameters()) {
491
- const groupTitle = (_a = parameter.group) === null || _a === void 0 ? void 0 : _a.title;
492
- if (parameter.group) {
493
- groupOrders.set(groupTitle, parameter.group.order);
494
- }
495
- if ((_b = parameter.group) === null || _b === void 0 ? void 0 : _b.hints) {
496
- groupHints.set(groupTitle, (_c = parameter.group) === null || _c === void 0 ? void 0 : _c.hints);
497
- }
498
- const groupParameters = parametersByGroup.get(groupTitle) || [];
499
- groupParameters.push(parameter);
500
- parametersByGroup.set(groupTitle, groupParameters);
501
- }
502
- // Convert to array and sort by group order
503
- return Array.from(parametersByGroup.entries())
504
- .sort(([groupTitle1], [groupTitle2]) => {
505
- var _a, _b;
506
- const order1 = (_a = groupOrders.get(groupTitle1)) !== null && _a !== void 0 ? _a : Number.MAX_VALUE;
507
- const order2 = (_b = groupOrders.get(groupTitle2)) !== null && _b !== void 0 ? _b : Number.MAX_VALUE;
508
- return order1 - order2;
509
- })
510
- .map(([groupTitle, parameters]) => ({
511
- groupTitle,
512
- groupHint: groupHints.get(groupTitle),
513
- parameters: parameters.sort((a, b) => a.longParameter.localeCompare(b.longParameter))
514
- }));
515
- }
516
- /**
517
- * Runs the config parameter checks for the given options.
518
- */
519
- function checkArguments(configParameters, options, errorReceiver) {
520
- let argumentsValid = true;
521
- if (!errorReceiver) {
522
- errorReceiver = (error) => {
523
- console.error(error);
524
- };
525
- }
526
- for (const argumentCheck of configParameters.getArgumentChecks()) {
527
- const checkError = argumentCheck(options);
528
- if (checkError) {
529
- errorReceiver('Invalid configuration: ' + checkError);
530
- argumentsValid = false;
531
- }
532
- }
533
- return argumentsValid;
534
- }
535
- /**
536
- * Parses the command-line arguments.
537
- */
538
- function processCommandLine(parameters, appInfos, args, beforeCheckCallback) {
539
- // Fall back to the NodeJS process's arguments if no arguments are given.
540
- args = args !== null && args !== void 0 ? args : node_process_1.default.argv.slice(2);
541
- const configParameters = parameters.clone();
542
- configParameters.addParameter('-h', '--help', 'bool', {
543
- help: 'Show this help message and exit.',
544
- group: exports.CONFIG_GROUP_APP, disableEnvironmentVariableOverride: true
545
- });
546
- configParameters.addParameter('-v', '--version', 'bool', {
547
- help: 'Show the version number and exit.',
548
- group: exports.CONFIG_GROUP_APP, disableEnvironmentVariableOverride: true
549
- });
550
- const options = parseArguments(args, configParameters);
551
- if (options.version) {
552
- console.log(`${appInfos.name} v${appInfos.version}`);
553
- node_process_1.default.exit(0);
554
- }
555
- if (options.help) {
556
- printHelp(configParameters, appInfos.about);
557
- node_process_1.default.exit(0);
558
- }
559
- if (beforeCheckCallback) {
560
- beforeCheckCallback(options);
561
- }
562
- if (!checkArguments(configParameters, options)) {
563
- console.error('\nArguments were missing or invalid. Please check the --help for more information. Exiting with error code 1.');
564
- node_process_1.default.exit(1);
565
- }
566
- return options;
567
- }
568
- /**
569
- * Creates a new configuration object by merging two configuration objects.
570
- */
571
- function parameterUnion(parameters1, parameters2) {
572
- const result = parameters1.clone();
573
- result.addAllOf(parameters2);
574
- return result;
575
- }
576
- //# sourceMappingURL=ConfigParser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfigParser.js","sourceRoot":"","sources":["../src/ConfigParser.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- import { ConfigurationParameters, ConfigValueType, Options } from './ConfigParser';
2
- /**
3
- * Configuration with a possibility to overwrite configuration values for this app run,
4
- * delegating to the base configuration if no overwrite was performed.
5
- * For type-safe access, use `makeConfigProxy` to create a proxy object.
6
- */
7
- export declare class ConfigurationWithOverwrites<BaseConfigType extends Options> {
8
- private readonly baseConfiguration;
9
- private readonly redefinableParameters;
10
- private readonly allParameters;
11
- private overwrites;
12
- private hash?;
13
- constructor(allParameters: ConfigurationParameters, redefinableParameters: ConfigurationParameters, baseConfiguration: Record<string, ConfigValueType>, overwrites?: Record<string, ConfigValueType>);
14
- /**
15
- * Retrieves the value of a configuration parameter based on the provided parameter ID.
16
- */
17
- get(parameterId: string): ConfigValueType;
18
- /**
19
- * Sets the specified parameter with a given value in the `overwrites` map.
20
- */
21
- set(parameterId: string, value: ConfigValueType): void;
22
- /**
23
- * Updates or removes a configuration-overwrite for the given parameter.
24
- */
25
- overwriteConfig(parameter: string, value: ConfigValueType | undefined): void;
26
- private castConfigArgument;
27
- private assertParameterExists;
28
- private getParameter;
29
- /**
30
- * Computes a hash for the given (possibly overwritten) configuration.
31
- */
32
- getHash(): string;
33
- /**
34
- * Copies the given configuration along with the overrides.
35
- */
36
- copy(): ConfigurationWithOverwrites<BaseConfigType>;
37
- }
38
- /**
39
- * Creates a proxy object to retrieve and set config options via the attributes in the `BaseConfigType` interface.
40
- */
41
- export declare function makeConfigProxy<BaseConfigType extends Options>(configuration: ConfigurationWithOverwrites<BaseConfigType>): BaseConfigType;
42
- //# sourceMappingURL=ConfigWithOverwrites.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConfigWithOverwrites.d.ts","sourceRoot":"","sources":["../src/ConfigWithOverwrites.ts"],"names":[],"mappings":"AACA,OAAO,EACN,uBAAuB,EACvB,eAAe,EACf,OAAO,EAGP,MAAM,gBAAgB,CAAC;AAGxB;;;;GAIG;AACH,qBAAa,2BAA2B,CAAC,cAAc,SAAS,OAAO;IAEtE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;IAEpE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0B;IAEhE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA0B;IAExD,OAAO,CAAC,UAAU,CAAkC;IAEpD,OAAO,CAAC,IAAI,CAAC,CAAS;gBAEV,aAAa,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,uBAAuB,EAC/F,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC;IAQnG;;OAEG;IACI,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe;IAKhD;;OAEG;IACI,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI;IAS7D;;OAEG;IACI,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI;IAWnF,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACI,OAAO,IAAI,MAAM;IAiBxB;;OAEG;IACI,IAAI,IAAI,2BAA2B,CAAC,cAAc,CAAC;CAM1D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,cAAc,SAAS,OAAO,EAC7D,aAAa,EAAE,2BAA2B,CAAC,cAAc,CAAC,GAAG,cAAc,CAU3E"}