@rosen-bridge/config 2.0.0 → 2.1.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/CHANGELOG.md +7 -0
- package/dist/cli.js +50 -4
- package/dist/config.d.ts +38 -15
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +403 -130
- package/dist/schema/Validators/fieldProperties.d.ts +7 -0
- package/dist/schema/Validators/fieldProperties.d.ts.map +1 -1
- package/dist/schema/Validators/fieldProperties.js +35 -1
- package/dist/schema/types/fields.d.ts +10 -2
- package/dist/schema/types/fields.d.ts.map +1 -1
- package/dist/schema/types/fields.js +1 -1
- package/dist/value/validators.d.ts.map +1 -1
- package/dist/value/validators.js +22 -3
- package/package.json +1 -2
package/CHANGELOG.md
CHANGED
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env -S node --experimental-specifier-resolution=node
|
|
2
|
-
import chalk from 'chalk';
|
|
3
2
|
import * as fs from 'fs';
|
|
4
3
|
import * as yaml from 'js-yaml';
|
|
5
4
|
import ora from 'ora';
|
|
@@ -51,7 +50,7 @@ yargs(hideBin(process.argv))
|
|
|
51
50
|
}
|
|
52
51
|
}
|
|
53
52
|
fs.writeFileSync(argv.output, output);
|
|
54
|
-
spinner.succeed(
|
|
53
|
+
spinner.succeed(`default config values were output at "${argv.output}"`);
|
|
55
54
|
})
|
|
56
55
|
.command('generate-ts-types', 'generates compatible TypeScript interface types for the passed schema', (yargs) => yargs
|
|
57
56
|
.option('schema', {
|
|
@@ -79,8 +78,55 @@ yargs(hideBin(process.argv))
|
|
|
79
78
|
const confValidator = ConfigValidator.fromSchema(schema);
|
|
80
79
|
const tsTypes = confValidator.generateTSTypes(argv.rootType);
|
|
81
80
|
fs.writeFileSync(argv.output, tsTypes);
|
|
82
|
-
spinner.succeed(
|
|
81
|
+
spinner.succeed(`TypeScript types were output at "${argv.output}"`);
|
|
82
|
+
})
|
|
83
|
+
.command('generate-env', 'generates custom-environment-variables file from schema', (yargs) => yargs
|
|
84
|
+
.option('schema', {
|
|
85
|
+
alias: 's',
|
|
86
|
+
demandOption: true,
|
|
87
|
+
description: 'input schema file path which should be in json format',
|
|
88
|
+
type: 'string',
|
|
89
|
+
})
|
|
90
|
+
.option('output', {
|
|
91
|
+
alias: 'o',
|
|
92
|
+
demandOption: true,
|
|
93
|
+
description: 'generated env output path',
|
|
94
|
+
type: 'string',
|
|
95
|
+
})
|
|
96
|
+
.option('format', {
|
|
97
|
+
alias: 'f',
|
|
98
|
+
demandOption: true,
|
|
99
|
+
description: 'output format',
|
|
100
|
+
choices: ['json', 'yaml'],
|
|
101
|
+
default: 'yaml',
|
|
102
|
+
type: 'string',
|
|
103
|
+
})
|
|
104
|
+
.option('all', {
|
|
105
|
+
alias: 'a',
|
|
106
|
+
type: 'boolean',
|
|
107
|
+
default: false,
|
|
108
|
+
description: 'generate environment variables for all non-array fields, regardless of secrecy',
|
|
109
|
+
}), async (argv) => {
|
|
110
|
+
const spinner = ora();
|
|
111
|
+
spinner.start(`Generating custom environment variables`);
|
|
112
|
+
const rawSchemaData = fs.readFileSync(argv.schema, 'utf-8');
|
|
113
|
+
const schema = JsonBigInt.parse(rawSchemaData);
|
|
114
|
+
const confValidator = ConfigValidator.fromSchema(schema);
|
|
115
|
+
const envConfig = confValidator.generateCustomEnvFile(argv['all']);
|
|
116
|
+
let output = '';
|
|
117
|
+
switch (argv.format) {
|
|
118
|
+
case 'json': {
|
|
119
|
+
output = JSON.stringify(envConfig, null, 2);
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
case 'yaml': {
|
|
123
|
+
output = yaml.dump(envConfig);
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
fs.writeFileSync(argv.output, output);
|
|
128
|
+
spinner.succeed(`env config was output at "${argv.output}"`);
|
|
83
129
|
})
|
|
84
130
|
.demandCommand(1)
|
|
85
131
|
.parse();
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUN0QixPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTFDLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDO0lBQ25DLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsZUFBZSxFQUFFLElBQUk7Q0FDdEIsQ0FBQyxDQUFDO0FBRUgsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekIsT0FBTyxDQUNOLGtCQUFrQixFQUNsQixtRUFBbUUsRUFDbkUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLEtBQUs7S0FDRixNQUFNLENBQUMsUUFBUSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxHQUFHO0lBQ1YsWUFBWSxFQUFFLElBQUk7SUFDbEIsV0FBVyxFQUFFLHVEQUF1RDtJQUNwRSxJQUFJLEVBQUUsUUFBUTtDQUNmLENBQUM7S0FDRCxNQUFNLENBQUMsUUFBUSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxHQUFHO0lBQ1YsWUFBWSxFQUFFLElBQUk7SUFDbEIsV0FBVyxFQUFFLHNDQUFzQztJQUNuRCxJQUFJLEVBQUUsUUFBUTtDQUNmLENBQUM7S0FDRCxNQUFNLENBQUMsUUFBUSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxHQUFHO0lBQ1YsWUFBWSxFQUFFLElBQUk7SUFDbEIsV0FBVyxFQUFFLHNDQUFzQztJQUNuRCxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ3pCLE9BQU8sRUFBRSxNQUFNO0lBQ2YsSUFBSSxFQUFFLFFBQVE7Q0FDZixDQUFDLEVBQ04sS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO0lBQ2IsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBRWxELE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RCxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRS9DLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBRXBELElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNoQixRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDWixNQUFNLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMzQyxNQUFNO1FBQ1IsQ0FBQztRQUNELEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNaLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2hDLE1BQU07UUFDUixDQUFDO0lBQ0gsQ0FBQztJQUVELEVBQUUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUV0QyxPQUFPLENBQUMsT0FBTyxDQUNiLEtBQUssQ0FBQyxLQUFLLENBQUMseUNBQXlDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUNyRSxDQUFDO0FBQ0osQ0FBQyxDQUNGO0tBQ0EsT0FBTyxDQUNOLG1CQUFtQixFQUNuQix1RUFBdUUsRUFDdkUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLEtBQUs7S0FDRixNQUFNLENBQUMsUUFBUSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxHQUFHO0lBQ1YsWUFBWSxFQUFFLElBQUk7SUFDbEIsV0FBVyxFQUFFLHVEQUF1RDtJQUNwRSxJQUFJLEVBQUUsUUFBUTtDQUNmLENBQUM7S0FDRCxNQUFNLENBQUMsUUFBUSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxHQUFHO0lBQ1YsWUFBWSxFQUFFLElBQUk7SUFDbEIsV0FBVyxFQUFFLGlDQUFpQztJQUM5QyxJQUFJLEVBQUUsUUFBUTtDQUNmLENBQUM7S0FDRCxNQUFNLENBQUMsV0FBVyxFQUFFO0lBQ25CLEtBQUssRUFBRSxHQUFHO0lBQ1YsWUFBWSxFQUFFLElBQUk7SUFDbEIsV0FBVyxFQUFFLDRCQUE0QjtJQUN6QyxJQUFJLEVBQUUsUUFBUTtDQUNmLENBQUMsRUFDTixLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDYixNQUFNLE9BQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUN0QixPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFFN0MsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFL0MsTUFBTSxhQUFhLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUU3RCxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFdkMsT0FBTyxDQUFDLE9BQU8sQ0FDYixLQUFLLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FDaEUsQ0FBQztBQUNKLENBQUMsQ0FDRjtLQUNBLGFBQWEsQ0FBQyxDQUFDLENBQUM7S0FDaEIsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiAtUyBub2RlIC0tZXhwZXJpbWVudGFsLXNwZWNpZmllci1yZXNvbHV0aW9uPW5vZGVcblxuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgaGlkZUJpbiB9IGZyb20gJ3lhcmdzL2hlbHBlcnMnO1xuXG5pbXBvcnQgeyBKc29uQmlnSW50RmFjdG9yeSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuXG5pbXBvcnQgeyBDb25maWdWYWxpZGF0b3IgfSBmcm9tICcuL2luZGV4JztcblxuY29uc3QgSnNvbkJpZ0ludCA9IEpzb25CaWdJbnRGYWN0b3J5KHtcbiAgYWx3YXlzUGFyc2VBc0JpZzogZmFsc2UsXG4gIHVzZU5hdGl2ZUJpZ0ludDogdHJ1ZSxcbn0pO1xuXG55YXJncyhoaWRlQmluKHByb2Nlc3MuYXJndikpXG4gIC5jb21tYW5kKFxuICAgICdnZW5lcmF0ZS1kZWZhdWx0JyxcbiAgICAnZ2VuZXJhdGVzIGFuIG9iamVjdCB1c2luZyB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIHBhc3NlZCBzY2hlbWEnLFxuICAgICh5YXJncykgPT5cbiAgICAgIHlhcmdzXG4gICAgICAgIC5vcHRpb24oJ3NjaGVtYScsIHtcbiAgICAgICAgICBhbGlhczogJ3MnLFxuICAgICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ2lucHV0IHNjaGVtYSBmaWxlIHBhdGggd2hpY2ggc2hvdWxkIGJlIGluIGpzb24gZm9ybWF0JyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbignb3V0cHV0Jywge1xuICAgICAgICAgIGFsaWFzOiAnbycsXG4gICAgICAgICAgZGVtYW5kT3B0aW9uOiB0cnVlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnZ2VuZXJhdGVkIGRlZmF1bHQgdmFsdWVzIG91dHB1dCBwYXRoJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbignZm9ybWF0Jywge1xuICAgICAgICAgIGFsaWFzOiAnZicsXG4gICAgICAgICAgZGVtYW5kT3B0aW9uOiB0cnVlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnZ2VuZXJhdGVkIGRlZmF1bHQgdmFsdWVzIG91dHB1dCBwYXRoJyxcbiAgICAgICAgICBjaG9pY2VzOiBbJ2pzb24nLCAneWFtbCddLFxuICAgICAgICAgIGRlZmF1bHQ6ICd5YW1sJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSksXG4gICAgYXN5bmMgKGFyZ3YpID0+IHtcbiAgICAgIGNvbnN0IHNwaW5uZXIgPSBvcmEoKTtcbiAgICAgIHNwaW5uZXIuc3RhcnQoYEdlbmVyYXRpbmcgY29uZmlnIGRlZmF1bHQgdmFsdWVzYCk7XG5cbiAgICAgIGNvbnN0IHJhd1NjaGVtYURhdGEgPSBmcy5yZWFkRmlsZVN5bmMoYXJndi5zY2hlbWEsICd1dGYtOCcpO1xuICAgICAgY29uc3Qgc2NoZW1hID0gSnNvbkJpZ0ludC5wYXJzZShyYXdTY2hlbWFEYXRhKTtcblxuICAgICAgY29uc3QgY29uZlZhbGlkYXRvciA9IENvbmZpZ1ZhbGlkYXRvci5mcm9tU2NoZW1hKHNjaGVtYSk7XG4gICAgICBjb25zdCBkZWZhdWx0Q29uZiA9IGNvbmZWYWxpZGF0b3IuZ2VuZXJhdGVEZWZhdWx0KCk7XG5cbiAgICAgIGxldCBvdXRwdXQgPSAnJztcbiAgICAgIHN3aXRjaCAoYXJndi5mb3JtYXQpIHtcbiAgICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgICBvdXRwdXQgPSBKc29uQmlnSW50LnN0cmluZ2lmeShkZWZhdWx0Q29uZik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAneWFtbCc6IHtcbiAgICAgICAgICBvdXRwdXQgPSB5YW1sLmR1bXAoZGVmYXVsdENvbmYpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoYXJndi5vdXRwdXQsIG91dHB1dCk7XG5cbiAgICAgIHNwaW5uZXIuc3VjY2VlZChcbiAgICAgICAgY2hhbGsuZ3JlZW4oYGRlZmF1bHQgY29uZmlnIHZhbHVlcyB3ZXJlIG91dHB1dCBhdCBcIiR7YXJndi5vdXRwdXR9XCJgKSxcbiAgICAgICk7XG4gICAgfSxcbiAgKVxuICAuY29tbWFuZChcbiAgICAnZ2VuZXJhdGUtdHMtdHlwZXMnLFxuICAgICdnZW5lcmF0ZXMgY29tcGF0aWJsZSBUeXBlU2NyaXB0IGludGVyZmFjZSB0eXBlcyBmb3IgdGhlIHBhc3NlZCBzY2hlbWEnLFxuICAgICh5YXJncykgPT5cbiAgICAgIHlhcmdzXG4gICAgICAgIC5vcHRpb24oJ3NjaGVtYScsIHtcbiAgICAgICAgICBhbGlhczogJ3MnLFxuICAgICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ2lucHV0IHNjaGVtYSBmaWxlIHBhdGggd2hpY2ggc2hvdWxkIGJlIGluIGpzb24gZm9ybWF0JyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbignb3V0cHV0Jywge1xuICAgICAgICAgIGFsaWFzOiAnbycsXG4gICAgICAgICAgZGVtYW5kT3B0aW9uOiB0cnVlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnZ2VuZXJhdGVkIFR5cGVTY3JpcHQgaW50ZXJmYWNlcycsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oJ3Jvb3QtdHlwZScsIHtcbiAgICAgICAgICBhbGlhczogJ3InLFxuICAgICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdG9wIHJvb3QgaW50ZXJmYWNlJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSksXG4gICAgYXN5bmMgKGFyZ3YpID0+IHtcbiAgICAgIGNvbnN0IHNwaW5uZXIgPSBvcmEoKTtcbiAgICAgIHNwaW5uZXIuc3RhcnQoYEdlbmVyYXRpbmcgVHlwZVNjcmlwdCB0eXBlc2ApO1xuXG4gICAgICBjb25zdCByYXdTY2hlbWFEYXRhID0gZnMucmVhZEZpbGVTeW5jKGFyZ3Yuc2NoZW1hLCAndXRmLTgnKTtcbiAgICAgIGNvbnN0IHNjaGVtYSA9IEpzb25CaWdJbnQucGFyc2UocmF3U2NoZW1hRGF0YSk7XG5cbiAgICAgIGNvbnN0IGNvbmZWYWxpZGF0b3IgPSBDb25maWdWYWxpZGF0b3IuZnJvbVNjaGVtYShzY2hlbWEpO1xuICAgICAgY29uc3QgdHNUeXBlcyA9IGNvbmZWYWxpZGF0b3IuZ2VuZXJhdGVUU1R5cGVzKGFyZ3Yucm9vdFR5cGUpO1xuXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGFyZ3Yub3V0cHV0LCB0c1R5cGVzKTtcblxuICAgICAgc3Bpbm5lci5zdWNjZWVkKFxuICAgICAgICBjaGFsay5ncmVlbihgVHlwZVNjcmlwdCB0eXBlcyB3ZXJlIG91dHB1dCBhdCBcIiR7YXJndi5vdXRwdXR9XCJgKSxcbiAgICAgICk7XG4gICAgfSxcbiAgKVxuICAuZGVtYW5kQ29tbWFuZCgxKVxuICAucGFyc2UoKTtcbiJdfQ==
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxLQUFLLElBQUksTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQ3RCLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFMUMsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7SUFDbkMsZ0JBQWdCLEVBQUUsS0FBSztJQUN2QixlQUFlLEVBQUUsSUFBSTtDQUN0QixDQUFDLENBQUM7QUFFSCxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN6QixPQUFPLENBQ04sa0JBQWtCLEVBQ2xCLG1FQUFtRSxFQUNuRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1IsS0FBSztLQUNGLE1BQU0sQ0FBQyxRQUFRLEVBQUU7SUFDaEIsS0FBSyxFQUFFLEdBQUc7SUFDVixZQUFZLEVBQUUsSUFBSTtJQUNsQixXQUFXLEVBQUUsdURBQXVEO0lBQ3BFLElBQUksRUFBRSxRQUFRO0NBQ2YsQ0FBQztLQUNELE1BQU0sQ0FBQyxRQUFRLEVBQUU7SUFDaEIsS0FBSyxFQUFFLEdBQUc7SUFDVixZQUFZLEVBQUUsSUFBSTtJQUNsQixXQUFXLEVBQUUsc0NBQXNDO0lBQ25ELElBQUksRUFBRSxRQUFRO0NBQ2YsQ0FBQztLQUNELE1BQU0sQ0FBQyxRQUFRLEVBQUU7SUFDaEIsS0FBSyxFQUFFLEdBQUc7SUFDVixZQUFZLEVBQUUsSUFBSTtJQUNsQixXQUFXLEVBQUUsc0NBQXND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QUFTLEdBQUcsYUFBYSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRW5FLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNoQixRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNwQixLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDWixNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE1BQU07UUFDUixDQUFDO1FBQ0QsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ1osTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUIsTUFBTTtRQUNSLENBQUM7SUFDSCxDQUFDO0lBRUQsRUFBRSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRXRDLE9BQU8sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQy9ELENBQUMsQ0FDRjtLQUNBLGFBQWEsQ0FBQyxDQUFDLENBQUM7S0FDaEIsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiAtUyBub2RlIC0tZXhwZXJpbWVudGFsLXNwZWNpZmllci1yZXNvbHV0aW9uPW5vZGVcblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICdqcy15YW1sJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCB5YXJncyBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyBoaWRlQmluIH0gZnJvbSAneWFyZ3MvaGVscGVycyc7XG5cbmltcG9ydCB7IEpzb25CaWdJbnRGYWN0b3J5IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9qc29uLWJpZ2ludCc7XG5cbmltcG9ydCB7IENvbmZpZ1ZhbGlkYXRvciB9IGZyb20gJy4vaW5kZXgnO1xuXG5jb25zdCBKc29uQmlnSW50ID0gSnNvbkJpZ0ludEZhY3Rvcnkoe1xuICBhbHdheXNQYXJzZUFzQmlnOiBmYWxzZSxcbiAgdXNlTmF0aXZlQmlnSW50OiB0cnVlLFxufSk7XG5cbnlhcmdzKGhpZGVCaW4ocHJvY2Vzcy5hcmd2KSlcbiAgLmNvbW1hbmQoXG4gICAgJ2dlbmVyYXRlLWRlZmF1bHQnLFxuICAgICdnZW5lcmF0ZXMgYW4gb2JqZWN0IHVzaW5nIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgcGFzc2VkIHNjaGVtYScsXG4gICAgKHlhcmdzKSA9PlxuICAgICAgeWFyZ3NcbiAgICAgICAgLm9wdGlvbignc2NoZW1hJywge1xuICAgICAgICAgIGFsaWFzOiAncycsXG4gICAgICAgICAgZGVtYW5kT3B0aW9uOiB0cnVlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnaW5wdXQgc2NoZW1hIGZpbGUgcGF0aCB3aGljaCBzaG91bGQgYmUgaW4ganNvbiBmb3JtYXQnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKCdvdXRwdXQnLCB7XG4gICAgICAgICAgYWxpYXM6ICdvJyxcbiAgICAgICAgICBkZW1hbmRPcHRpb246IHRydWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdnZW5lcmF0ZWQgZGVmYXVsdCB2YWx1ZXMgb3V0cHV0IHBhdGgnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKCdmb3JtYXQnLCB7XG4gICAgICAgICAgYWxpYXM6ICdmJyxcbiAgICAgICAgICBkZW1hbmRPcHRpb246IHRydWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdnZW5lcmF0ZWQgZGVmYXVsdCB2YWx1ZXMgb3V0cHV0IHBhdGgnLFxuICAgICAgICAgIGNob2ljZXM6IFsnanNvbicsICd5YW1sJ10sXG4gICAgICAgICAgZGVmYXVsdDogJ3lhbWwnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9KSxcbiAgICBhc3luYyAoYXJndikgPT4ge1xuICAgICAgY29uc3Qgc3Bpbm5lciA9IG9yYSgpO1xuICAgICAgc3Bpbm5lci5zdGFydChgR2VuZXJhdGluZyBjb25maWcgZGVmYXVsdCB2YWx1ZXNgKTtcblxuICAgICAgY29uc3QgcmF3U2NoZW1hRGF0YSA9IGZzLnJlYWRGaWxlU3luYyhhcmd2LnNjaGVtYSwgJ3V0Zi04Jyk7XG4gICAgICBjb25zdCBzY2hlbWEgPSBKc29uQmlnSW50LnBhcnNlKHJhd1NjaGVtYURhdGEpO1xuXG4gICAgICBjb25zdCBjb25mVmFsaWRhdG9yID0gQ29uZmlnVmFsaWRhdG9yLmZyb21TY2hlbWEoc2NoZW1hKTtcbiAgICAgIGNvbnN0IGRlZmF1bHRDb25mID0gY29uZlZhbGlkYXRvci5nZW5lcmF0ZURlZmF1bHQoKTtcblxuICAgICAgbGV0IG91dHB1dCA9ICcnO1xuICAgICAgc3dpdGNoIChhcmd2LmZvcm1hdCkge1xuICAgICAgICBjYXNlICdqc29uJzoge1xuICAgICAgICAgIG91dHB1dCA9IEpzb25CaWdJbnQuc3RyaW5naWZ5KGRlZmF1bHRDb25mKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICd5YW1sJzoge1xuICAgICAgICAgIG91dHB1dCA9IHlhbWwuZHVtcChkZWZhdWx0Q29uZik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZnMud3JpdGVGaWxlU3luYyhhcmd2Lm91dHB1dCwgb3V0cHV0KTtcblxuICAgICAgc3Bpbm5lci5zdWNjZWVkKGBkZWZhdWx0IGNvbmZpZyB2YWx1ZXMgd2VyZSBvdXRwdXQgYXQgXCIke2FyZ3Yub3V0cHV0fVwiYCk7XG4gICAgfSxcbiAgKVxuICAuY29tbWFuZChcbiAgICAnZ2VuZXJhdGUtdHMtdHlwZXMnLFxuICAgICdnZW5lcmF0ZXMgY29tcGF0aWJsZSBUeXBlU2NyaXB0IGludGVyZmFjZSB0eXBlcyBmb3IgdGhlIHBhc3NlZCBzY2hlbWEnLFxuICAgICh5YXJncykgPT5cbiAgICAgIHlhcmdzXG4gICAgICAgIC5vcHRpb24oJ3NjaGVtYScsIHtcbiAgICAgICAgICBhbGlhczogJ3MnLFxuICAgICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ2lucHV0IHNjaGVtYSBmaWxlIHBhdGggd2hpY2ggc2hvdWxkIGJlIGluIGpzb24gZm9ybWF0JyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbignb3V0cHV0Jywge1xuICAgICAgICAgIGFsaWFzOiAnbycsXG4gICAgICAgICAgZGVtYW5kT3B0aW9uOiB0cnVlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnZ2VuZXJhdGVkIFR5cGVTY3JpcHQgaW50ZXJmYWNlcycsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oJ3Jvb3QtdHlwZScsIHtcbiAgICAgICAgICBhbGlhczogJ3InLFxuICAgICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdG9wIHJvb3QgaW50ZXJmYWNlJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSksXG4gICAgYXN5bmMgKGFyZ3YpID0+IHtcbiAgICAgIGNvbnN0IHNwaW5uZXIgPSBvcmEoKTtcbiAgICAgIHNwaW5uZXIuc3RhcnQoYEdlbmVyYXRpbmcgVHlwZVNjcmlwdCB0eXBlc2ApO1xuXG4gICAgICBjb25zdCByYXdTY2hlbWFEYXRhID0gZnMucmVhZEZpbGVTeW5jKGFyZ3Yuc2NoZW1hLCAndXRmLTgnKTtcbiAgICAgIGNvbnN0IHNjaGVtYSA9IEpzb25CaWdJbnQucGFyc2UocmF3U2NoZW1hRGF0YSk7XG5cbiAgICAgIGNvbnN0IGNvbmZWYWxpZGF0b3IgPSBDb25maWdWYWxpZGF0b3IuZnJvbVNjaGVtYShzY2hlbWEpO1xuICAgICAgY29uc3QgdHNUeXBlcyA9IGNvbmZWYWxpZGF0b3IuZ2VuZXJhdGVUU1R5cGVzKGFyZ3Yucm9vdFR5cGUpO1xuXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGFyZ3Yub3V0cHV0LCB0c1R5cGVzKTtcblxuICAgICAgc3Bpbm5lci5zdWNjZWVkKGBUeXBlU2NyaXB0IHR5cGVzIHdlcmUgb3V0cHV0IGF0IFwiJHthcmd2Lm91dHB1dH1cImApO1xuICAgIH0sXG4gIClcbiAgLmNvbW1hbmQoXG4gICAgJ2dlbmVyYXRlLWVudicsXG4gICAgJ2dlbmVyYXRlcyBjdXN0b20tZW52aXJvbm1lbnQtdmFyaWFibGVzIGZpbGUgZnJvbSBzY2hlbWEnLFxuICAgICh5YXJncykgPT5cbiAgICAgIHlhcmdzXG4gICAgICAgIC5vcHRpb24oJ3NjaGVtYScsIHtcbiAgICAgICAgICBhbGlhczogJ3MnLFxuICAgICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ2lucHV0IHNjaGVtYSBmaWxlIHBhdGggd2hpY2ggc2hvdWxkIGJlIGluIGpzb24gZm9ybWF0JyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSlcbiAgICAgICAgLm9wdGlvbignb3V0cHV0Jywge1xuICAgICAgICAgIGFsaWFzOiAnbycsXG4gICAgICAgICAgZGVtYW5kT3B0aW9uOiB0cnVlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnZ2VuZXJhdGVkIGVudiBvdXRwdXQgcGF0aCcsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oJ2Zvcm1hdCcsIHtcbiAgICAgICAgICBhbGlhczogJ2YnLFxuICAgICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ291dHB1dCBmb3JtYXQnLFxuICAgICAgICAgIGNob2ljZXM6IFsnanNvbicsICd5YW1sJ10sXG4gICAgICAgICAgZGVmYXVsdDogJ3lhbWwnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKCdhbGwnLCB7XG4gICAgICAgICAgYWxpYXM6ICdhJyxcbiAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnZ2VuZXJhdGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciBhbGwgbm9uLWFycmF5IGZpZWxkcywgcmVnYXJkbGVzcyBvZiBzZWNyZWN5JyxcbiAgICAgICAgfSksXG4gICAgYXN5bmMgKGFyZ3YpID0+IHtcbiAgICAgIGNvbnN0IHNwaW5uZXIgPSBvcmEoKTtcbiAgICAgIHNwaW5uZXIuc3RhcnQoYEdlbmVyYXRpbmcgY3VzdG9tIGVudmlyb25tZW50IHZhcmlhYmxlc2ApO1xuXG4gICAgICBjb25zdCByYXdTY2hlbWFEYXRhID0gZnMucmVhZEZpbGVTeW5jKGFyZ3Yuc2NoZW1hLCAndXRmLTgnKTtcbiAgICAgIGNvbnN0IHNjaGVtYSA9IEpzb25CaWdJbnQucGFyc2UocmF3U2NoZW1hRGF0YSk7XG5cbiAgICAgIGNvbnN0IGNvbmZWYWxpZGF0b3IgPSBDb25maWdWYWxpZGF0b3IuZnJvbVNjaGVtYShzY2hlbWEpO1xuXG4gICAgICBjb25zdCBlbnZDb25maWcgPSBjb25mVmFsaWRhdG9yLmdlbmVyYXRlQ3VzdG9tRW52RmlsZShhcmd2WydhbGwnXSk7XG5cbiAgICAgIGxldCBvdXRwdXQgPSAnJztcbiAgICAgIHN3aXRjaCAoYXJndi5mb3JtYXQpIHtcbiAgICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgICBvdXRwdXQgPSBKU09OLnN0cmluZ2lmeShlbnZDb25maWcsIG51bGwsIDIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJ3lhbWwnOiB7XG4gICAgICAgICAgb3V0cHV0ID0geWFtbC5kdW1wKGVudkNvbmZpZyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZnMud3JpdGVGaWxlU3luYyhhcmd2Lm91dHB1dCwgb3V0cHV0KTtcblxuICAgICAgc3Bpbm5lci5zdWNjZWVkKGBlbnYgY29uZmlnIHdhcyBvdXRwdXQgYXQgXCIke2FyZ3Yub3V0cHV0fVwiYCk7XG4gICAgfSxcbiAgKVxuICAuZGVtYW5kQ29tbWFuZCgxKVxuICAucGFyc2UoKTtcbiJdfQ==
|
package/dist/config.d.ts
CHANGED
|
@@ -5,19 +5,12 @@ export declare class ConfigValidator {
|
|
|
5
5
|
private schema;
|
|
6
6
|
private constructor();
|
|
7
7
|
/**
|
|
8
|
-
* Builds the final configuration object
|
|
8
|
+
* Builds and returns the final configuration object by transforming and validating
|
|
9
9
|
*
|
|
10
|
-
*
|
|
10
|
+
* T - The type of the final normalized configuration object.
|
|
11
|
+
* @returns {T} The normalized configuration object
|
|
11
12
|
*/
|
|
12
|
-
buildConfigs: () =>
|
|
13
|
-
/**
|
|
14
|
-
* Recursively transforms a configuration object based on the provided schema.
|
|
15
|
-
* @param {any} data
|
|
16
|
-
* @param {any} schema
|
|
17
|
-
*
|
|
18
|
-
* @returns {Record<string, any>} A new object with transformed and normalized values
|
|
19
|
-
*/
|
|
20
|
-
private transformBySchema;
|
|
13
|
+
buildConfigs: <T>() => T;
|
|
21
14
|
/**
|
|
22
15
|
* create ConfigValidator from schema file path
|
|
23
16
|
*/
|
|
@@ -38,13 +31,30 @@ export declare class ConfigValidator {
|
|
|
38
31
|
* traverses and validates a subconfig using the subschema
|
|
39
32
|
*
|
|
40
33
|
* @private
|
|
41
|
-
* @param {Record<string, any>} config
|
|
42
|
-
* @param {Record<string, any>} subConfig
|
|
34
|
+
* @param {Record<string, any>} config - The full root configuration object
|
|
35
|
+
* @param {Record<string, any>} subConfig - The slice of config currently being
|
|
36
|
+
* validated
|
|
43
37
|
* @param {ConfigSchema} subSchema
|
|
44
38
|
* @param {string[]} path
|
|
39
|
+
* @param {Record<string, any>} context - he local scope object for
|
|
40
|
+
* resolving `when` conditions.
|
|
45
41
|
* @memberof ConfigValidator
|
|
46
42
|
*/
|
|
47
43
|
private validateSubConfig;
|
|
44
|
+
/**
|
|
45
|
+
* traverses and validates a union subconfig using the subschema
|
|
46
|
+
*
|
|
47
|
+
* @private
|
|
48
|
+
* @param {any} value
|
|
49
|
+
* @param {string} name
|
|
50
|
+
* @param {UnionField} field
|
|
51
|
+
* @param {Record<string, any>} config
|
|
52
|
+
* @param {string[]} childPath
|
|
53
|
+
*
|
|
54
|
+
* @param {Record<string, any>} context - he local scope object for
|
|
55
|
+
* resolving `when` conditions.
|
|
56
|
+
*/
|
|
57
|
+
private validateUnionValue;
|
|
48
58
|
/**
|
|
49
59
|
* sets an object's specific subtree to the specified value
|
|
50
60
|
*
|
|
@@ -63,6 +73,8 @@ export declare class ConfigValidator {
|
|
|
63
73
|
* @param {*} value
|
|
64
74
|
* @param {ConfigField} field the field specification in schema
|
|
65
75
|
* @param {Record<string, any>} config the config object
|
|
76
|
+
* @param {string[]} path
|
|
77
|
+
* @param {Record<string, any> | undefined} context
|
|
66
78
|
*/
|
|
67
79
|
private validateValue;
|
|
68
80
|
/**
|
|
@@ -71,9 +83,10 @@ export declare class ConfigValidator {
|
|
|
71
83
|
*
|
|
72
84
|
* @param {When} when
|
|
73
85
|
* @param {Record<string, any>} config
|
|
86
|
+
* @param {Record<string, any>} context
|
|
74
87
|
* @return {boolean}
|
|
75
88
|
*/
|
|
76
|
-
isWhenTrue: (when: When, config: Record<string, any>) => boolean;
|
|
89
|
+
isWhenTrue: (when: When, config: Record<string, any>, context?: Record<string, any>) => boolean;
|
|
77
90
|
/**
|
|
78
91
|
* returns the value at specified path in config object
|
|
79
92
|
*
|
|
@@ -82,7 +95,7 @@ export declare class ConfigValidator {
|
|
|
82
95
|
* @param {string[]} path
|
|
83
96
|
* @return {*}
|
|
84
97
|
*/
|
|
85
|
-
static valueAt: (config:
|
|
98
|
+
static valueAt: (config: any, path: string[]) => any;
|
|
86
99
|
/**
|
|
87
100
|
* validates this.schema and throws exception if any errors found
|
|
88
101
|
*/
|
|
@@ -152,6 +165,16 @@ export declare class ConfigValidator {
|
|
|
152
165
|
* @memberof ConfigValidator
|
|
153
166
|
*/
|
|
154
167
|
private static processConfigForLevelNode;
|
|
168
|
+
/**
|
|
169
|
+
* Generates a custom environment file based on the provided schema.
|
|
170
|
+
*
|
|
171
|
+
* @param {boolean} [options.allEnv] If true, includes all environment variables, otherwise only includes non-secret fields.
|
|
172
|
+
* @param {ConfigSchema} schema
|
|
173
|
+
* @param {string[]} path
|
|
174
|
+
*
|
|
175
|
+
* @returns {Record<string, unknown>}
|
|
176
|
+
*/
|
|
177
|
+
generateCustomEnvFile: (allEnv?: boolean, schema?: ConfigSchema, path?: string[]) => Record<string, unknown>;
|
|
155
178
|
/**
|
|
156
179
|
* returns a list of config sources used by node config package, ordered from
|
|
157
180
|
* the lowest to the highest priority
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,QAAQ,CAAC;AAQhD,OAAO,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,QAAQ,CAAC;AAQhD,OAAO,EACL,WAAW,EACX,YAAY,EAEZ,SAAS,EACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAYlD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO;IAKP;;;;;OAKG;IACH,YAAY,GAAI,CAAC,OAAK,CAAC,CAIrB;IAEF;;OAEG;IACH,MAAM,CAAC,QAAQ,GAAI,YAAY,MAAM,KAAG,eAAe,CAUrD;IAEF;;;;OAIG;IACH,MAAM,CAAC,UAAU,GAAI,QAAQ,YAAY,KAAG,eAAe,CAEzD;IAEF;;;;OAIG;IAEI,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAWjD;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,iBAAiB;IAyDzB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,kBAAkB;IAsE1B;;;;;;;;;OASG;IACH,MAAM,CAAC,YAAY,CAEjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACxB,QAAQ,EAAE,SAAS,EACnB,IAAI,EAAE,MAAM,EAAE;IAkBhB;;;;;;;;;OASG;IACH,OAAO,CAAC,aAAa,CAqFnB;IAEF;;;;;;;;OAQG;IACI,UAAU,GACf,MAAM,IAAI,EAEV,QAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAE3B,UAAU,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAC5B,OAAO,CAkBR;IAEF;;;;;;;OAOG;IAEH,MAAM,CAAC,OAAO,GAAI,QAAQ,GAAG,EAAE,MAAM,MAAM,EAAE,SAiB3C;IAEF;;OAEG;IACH,OAAO,CAAC,cAAc,CAgEpB;IAEF;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAIxB;IAEF;;;;OAIG;IACH,OAAO,CAAC,mBAAmB,CA4BzB;IAEF;;;;;OAKG;IACH,cAAc,GAAI,MAAM,MAAM,EAAE,KAAG,WAAW,GAAG,SAAS,CAwFxD;IAEF;;;;OAIG;IAEH,eAAe,GAAI,UAAU;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAMvE;IAGF,OAAO,CAAC,sBAAsB,CAsC5B;IAEF;;;;;OAKG;IACH,eAAe,GAAI,MAAM,MAAM,KAAG,MAAM,CA4MtC;IAEF;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,CAOpB;IAEF;;;;;;OAMG;IAEH,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAmCtE;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IA+CxC;;;;;;;;OAQG;IACH,qBAAqB,GACnB,SAAS,OAAO,EAChB,SAAQ,YAA0B,EAClC,OAAM,MAAM,EAAO,KAClB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiExB;IAEF;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAkDhC;IAEF;;;;;;;;OAQG;IACH,sBAAsB,GAEpB,WAAW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,QAAQ,OAAO,EACf,OAAO,MAAM,EACb,QAAQ,MAAM,UAqDd;CACH"}
|