@rosen-bridge/config 0.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/.eslintignore +1 -0
- package/CHANGELOG.md +8 -0
- package/README.md +24 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +102 -0
- package/dist/config.d.ts +131 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +578 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/schema/Validators/fieldProperties.d.ts +29 -0
- package/dist/schema/Validators/fieldProperties.d.ts.map +1 -0
- package/dist/schema/Validators/fieldProperties.js +254 -0
- package/dist/schema/types/fields.d.ts +37 -0
- package/dist/schema/types/fields.d.ts.map +1 -0
- package/dist/schema/types/fields.js +2 -0
- package/dist/schema/types/validations.d.ts +46 -0
- package/dist/schema/types/validations.d.ts.map +1 -0
- package/dist/schema/types/validations.js +2 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils.d.ts +36 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +59 -0
- package/dist/value/validators.d.ts +3 -0
- package/dist/value/validators.d.ts.map +1 -0
- package/dist/value/validators.js +188 -0
- package/lib/cli.ts +113 -0
- package/lib/config.ts +664 -0
- package/lib/index.ts +1 -0
- package/lib/schema/Validators/fieldProperties.ts +273 -0
- package/lib/schema/types/fields.ts +46 -0
- package/lib/schema/types/validations.ts +63 -0
- package/lib/utils.ts +68 -0
- package/lib/value/validators.ts +268 -0
- package/package.json +48 -0
- package/tests/.gitkeep +0 -0
- package/tests/config.spec.ts +895 -0
- package/tests/configEnvSetup.ts +34 -0
- package/tests/configTestData.ts +977 -0
- package/tests/configTestFiles/custom-environment-variables.json +5 -0
- package/tests/configTestFiles/default.json +12 -0
- package/tests/configTestFiles/local.json +5 -0
- package/tests/utils.spec.ts +117 -0
- package/tests/utilsTestData.ts +26 -0
- package/tsconfig.build.json +7 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/tsconfig.json +7 -0
- package/vitest.config.ts +11 -0
package/.eslintignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dist
|
package/CHANGELOG.md
ADDED
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# @rosen-bridge/config
|
|
2
|
+
|
|
3
|
+
## Table of contents
|
|
4
|
+
|
|
5
|
+
- [Introduction](#introduction)
|
|
6
|
+
- [Installation](#installation)
|
|
7
|
+
|
|
8
|
+
## Introduction
|
|
9
|
+
|
|
10
|
+
a package to manage configs of rosen bridge projects
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
npm:
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
npm i @rosen-bridge/config
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
yarn:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
yarn add @rosen-bridge/config
|
|
24
|
+
```
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../lib/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --experimental-specifier-resolution=node
|
|
2
|
+
import yargs from 'yargs';
|
|
3
|
+
import { hideBin } from 'yargs/helpers';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import ora from 'ora';
|
|
6
|
+
import { ConfigValidator } from './index';
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import JsonBigIntFactory from 'json-bigint';
|
|
9
|
+
import * as yaml from 'js-yaml';
|
|
10
|
+
const JsonBigInt = JsonBigIntFactory({
|
|
11
|
+
alwaysParseAsBig: false,
|
|
12
|
+
useNativeBigInt: true,
|
|
13
|
+
});
|
|
14
|
+
yargs(hideBin(process.argv))
|
|
15
|
+
.command(
|
|
16
|
+
'generate-default',
|
|
17
|
+
'generates an object using the default values of the passed schema',
|
|
18
|
+
(yargs) =>
|
|
19
|
+
yargs
|
|
20
|
+
.option('schema', {
|
|
21
|
+
alias: 's',
|
|
22
|
+
demandOption: true,
|
|
23
|
+
description: 'input schema file path which should be in json format',
|
|
24
|
+
type: 'string',
|
|
25
|
+
})
|
|
26
|
+
.option('output', {
|
|
27
|
+
alias: 'o',
|
|
28
|
+
demandOption: true,
|
|
29
|
+
description: 'generated default values output path',
|
|
30
|
+
type: 'string',
|
|
31
|
+
})
|
|
32
|
+
.option('format', {
|
|
33
|
+
alias: 'f',
|
|
34
|
+
demandOption: true,
|
|
35
|
+
description: 'generated default values output path',
|
|
36
|
+
choices: ['json', 'yaml'],
|
|
37
|
+
default: 'yaml',
|
|
38
|
+
type: 'string',
|
|
39
|
+
}),
|
|
40
|
+
async (argv) => {
|
|
41
|
+
const spinner = ora();
|
|
42
|
+
spinner.start(`Generating config default values`);
|
|
43
|
+
const rawSchemaData = fs.readFileSync(argv.schema, 'utf-8');
|
|
44
|
+
const schema = JsonBigInt.parse(rawSchemaData);
|
|
45
|
+
const confValidator = new ConfigValidator(schema);
|
|
46
|
+
const defaultConf = confValidator.generateDefault();
|
|
47
|
+
let output = '';
|
|
48
|
+
switch (argv.format) {
|
|
49
|
+
case 'json': {
|
|
50
|
+
output = JsonBigInt.stringify(defaultConf);
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
case 'yaml': {
|
|
54
|
+
output = yaml.dump(defaultConf);
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
fs.writeFileSync(argv.output, output);
|
|
59
|
+
spinner.succeed(
|
|
60
|
+
chalk.green(`default config values were output at "${argv.output}"`)
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
.command(
|
|
65
|
+
'generate-ts-types',
|
|
66
|
+
'generates compatible TypeScript interface types for the passed schema',
|
|
67
|
+
(yargs) =>
|
|
68
|
+
yargs
|
|
69
|
+
.option('schema', {
|
|
70
|
+
alias: 's',
|
|
71
|
+
demandOption: true,
|
|
72
|
+
description: 'input schema file path which should be in json format',
|
|
73
|
+
type: 'string',
|
|
74
|
+
})
|
|
75
|
+
.option('output', {
|
|
76
|
+
alias: 'o',
|
|
77
|
+
demandOption: true,
|
|
78
|
+
description: 'generated TypeScript interfaces',
|
|
79
|
+
type: 'string',
|
|
80
|
+
})
|
|
81
|
+
.option('root-type', {
|
|
82
|
+
alias: 'r',
|
|
83
|
+
demandOption: true,
|
|
84
|
+
description: 'Name of top root interface',
|
|
85
|
+
type: 'string',
|
|
86
|
+
}),
|
|
87
|
+
async (argv) => {
|
|
88
|
+
const spinner = ora();
|
|
89
|
+
spinner.start(`Generating TypeScript types`);
|
|
90
|
+
const rawSchemaData = fs.readFileSync(argv.schema, 'utf-8');
|
|
91
|
+
const schema = JsonBigInt.parse(rawSchemaData);
|
|
92
|
+
const confValidator = new ConfigValidator(schema);
|
|
93
|
+
const tsTypes = confValidator.generateTSTypes(argv.rootType);
|
|
94
|
+
fs.writeFileSync(argv.output, tsTypes);
|
|
95
|
+
spinner.succeed(
|
|
96
|
+
chalk.green(`TypeScript types were output at "${argv.output}"`)
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
.demandCommand(1)
|
|
101
|
+
.parse();
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sR0FBRyxNQUFNLEtBQUssQ0FBQztBQUN0QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8saUJBQWlCLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBRWhDLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDO0lBQ25DLGdCQUFnQixFQUFFLEtBQUs7SUFDdkIsZUFBZSxFQUFFLElBQUk7Q0FDdEIsQ0FBQyxDQUFDO0FBRUgsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekIsT0FBTyxDQUNOLGtCQUFrQixFQUNsQixtRUFBbUUsRUFDbkUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLEtBQUs7S0FDRixNQUFNLENBQUMsUUFBUSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxHQUFHO0lBQ1YsWUFBWSxFQUFFLElBQUk7SUFDbEIsV0FBVyxFQUFFLHVEQUF1RDtJQUNwRSxJQUFJLEVBQUUsUUFBUTtDQUNmLENBQUM7S0FDRCxNQUFNLENBQUMsUUFBUSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxHQUFHO0lBQ1YsWUFBWSxFQUFFLElBQUk7SUFDbEIsV0FBVyxFQUFFLHNDQUFzQztJQUNuRCxJQUFJLEVBQUUsUUFBUTtDQUNmLENBQUM7S0FDRCxNQUFNLENBQUMsUUFBUSxFQUFFO0lBQ2hCLEtBQUssRUFBRSxHQUFHO0lBQ1YsWUFBWSxFQUFFLElBQUk7SUFD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O0FBQ0osQ0FBQyxDQUNGO0tBQ0EsYUFBYSxDQUFDLENBQUMsQ0FBQztLQUNoQixLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IC1TIG5vZGUgLS1leHBlcmltZW50YWwtc3BlY2lmaWVyLXJlc29sdXRpb249bm9kZVxuXG5pbXBvcnQgeWFyZ3MgZnJvbSAneWFyZ3MnO1xuaW1wb3J0IHsgaGlkZUJpbiB9IGZyb20gJ3lhcmdzL2hlbHBlcnMnO1xuaW1wb3J0IGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCB7IENvbmZpZ1ZhbGlkYXRvciB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IEpzb25CaWdJbnRGYWN0b3J5IGZyb20gJ2pzb24tYmlnaW50JztcbmltcG9ydCAqIGFzIHlhbWwgZnJvbSAnanMteWFtbCc7XG5cbmNvbnN0IEpzb25CaWdJbnQgPSBKc29uQmlnSW50RmFjdG9yeSh7XG4gIGFsd2F5c1BhcnNlQXNCaWc6IGZhbHNlLFxuICB1c2VOYXRpdmVCaWdJbnQ6IHRydWUsXG59KTtcblxueWFyZ3MoaGlkZUJpbihwcm9jZXNzLmFyZ3YpKVxuICAuY29tbWFuZChcbiAgICAnZ2VuZXJhdGUtZGVmYXVsdCcsXG4gICAgJ2dlbmVyYXRlcyBhbiBvYmplY3QgdXNpbmcgdGhlIGRlZmF1bHQgdmFsdWVzIG9mIHRoZSBwYXNzZWQgc2NoZW1hJyxcbiAgICAoeWFyZ3MpID0+XG4gICAgICB5YXJnc1xuICAgICAgICAub3B0aW9uKCdzY2hlbWEnLCB7XG4gICAgICAgICAgYWxpYXM6ICdzJyxcbiAgICAgICAgICBkZW1hbmRPcHRpb246IHRydWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdpbnB1dCBzY2hlbWEgZmlsZSBwYXRoIHdoaWNoIHNob3VsZCBiZSBpbiBqc29uIGZvcm1hdCcsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oJ291dHB1dCcsIHtcbiAgICAgICAgICBhbGlhczogJ28nLFxuICAgICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ2dlbmVyYXRlZCBkZWZhdWx0IHZhbHVlcyBvdXRwdXQgcGF0aCcsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oJ2Zvcm1hdCcsIHtcbiAgICAgICAgICBhbGlhczogJ2YnLFxuICAgICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ2dlbmVyYXRlZCBkZWZhdWx0IHZhbHVlcyBvdXRwdXQgcGF0aCcsXG4gICAgICAgICAgY2hvaWNlczogWydqc29uJywgJ3lhbWwnXSxcbiAgICAgICAgICBkZWZhdWx0OiAneWFtbCcsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0pLFxuICAgIGFzeW5jIChhcmd2KSA9PiB7XG4gICAgICBjb25zdCBzcGlubmVyID0gb3JhKCk7XG4gICAgICBzcGlubmVyLnN0YXJ0KGBHZW5lcmF0aW5nIGNvbmZpZyBkZWZhdWx0IHZhbHVlc2ApO1xuXG4gICAgICBjb25zdCByYXdTY2hlbWFEYXRhID0gZnMucmVhZEZpbGVTeW5jKGFyZ3Yuc2NoZW1hLCAndXRmLTgnKTtcbiAgICAgIGNvbnN0IHNjaGVtYSA9IEpzb25CaWdJbnQucGFyc2UocmF3U2NoZW1hRGF0YSk7XG5cbiAgICAgIGNvbnN0IGNvbmZWYWxpZGF0b3IgPSBuZXcgQ29uZmlnVmFsaWRhdG9yKHNjaGVtYSk7XG4gICAgICBjb25zdCBkZWZhdWx0Q29uZiA9IGNvbmZWYWxpZGF0b3IuZ2VuZXJhdGVEZWZhdWx0KCk7XG5cbiAgICAgIGxldCBvdXRwdXQgPSAnJztcbiAgICAgIHN3aXRjaCAoYXJndi5mb3JtYXQpIHtcbiAgICAgICAgY2FzZSAnanNvbic6IHtcbiAgICAgICAgICBvdXRwdXQgPSBKc29uQmlnSW50LnN0cmluZ2lmeShkZWZhdWx0Q29uZik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAneWFtbCc6IHtcbiAgICAgICAgICBvdXRwdXQgPSB5YW1sLmR1bXAoZGVmYXVsdENvbmYpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoYXJndi5vdXRwdXQsIG91dHB1dCk7XG5cbiAgICAgIHNwaW5uZXIuc3VjY2VlZChcbiAgICAgICAgY2hhbGsuZ3JlZW4oYGRlZmF1bHQgY29uZmlnIHZhbHVlcyB3ZXJlIG91dHB1dCBhdCBcIiR7YXJndi5vdXRwdXR9XCJgKVxuICAgICAgKTtcbiAgICB9XG4gIClcbiAgLmNvbW1hbmQoXG4gICAgJ2dlbmVyYXRlLXRzLXR5cGVzJyxcbiAgICAnZ2VuZXJhdGVzIGNvbXBhdGlibGUgVHlwZVNjcmlwdCBpbnRlcmZhY2UgdHlwZXMgZm9yIHRoZSBwYXNzZWQgc2NoZW1hJyxcbiAgICAoeWFyZ3MpID0+XG4gICAgICB5YXJnc1xuICAgICAgICAub3B0aW9uKCdzY2hlbWEnLCB7XG4gICAgICAgICAgYWxpYXM6ICdzJyxcbiAgICAgICAgICBkZW1hbmRPcHRpb246IHRydWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdpbnB1dCBzY2hlbWEgZmlsZSBwYXRoIHdoaWNoIHNob3VsZCBiZSBpbiBqc29uIGZvcm1hdCcsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0pXG4gICAgICAgIC5vcHRpb24oJ291dHB1dCcsIHtcbiAgICAgICAgICBhbGlhczogJ28nLFxuICAgICAgICAgIGRlbWFuZE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ2dlbmVyYXRlZCBUeXBlU2NyaXB0IGludGVyZmFjZXMnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9KVxuICAgICAgICAub3B0aW9uKCdyb290LXR5cGUnLCB7XG4gICAgICAgICAgYWxpYXM6ICdyJyxcbiAgICAgICAgICBkZW1hbmRPcHRpb246IHRydWUsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRvcCByb290IGludGVyZmFjZScsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0pLFxuICAgIGFzeW5jIChhcmd2KSA9PiB7XG4gICAgICBjb25zdCBzcGlubmVyID0gb3JhKCk7XG4gICAgICBzcGlubmVyLnN0YXJ0KGBHZW5lcmF0aW5nIFR5cGVTY3JpcHQgdHlwZXNgKTtcblxuICAgICAgY29uc3QgcmF3U2NoZW1hRGF0YSA9IGZzLnJlYWRGaWxlU3luYyhhcmd2LnNjaGVtYSwgJ3V0Zi04Jyk7XG4gICAgICBjb25zdCBzY2hlbWEgPSBKc29uQmlnSW50LnBhcnNlKHJhd1NjaGVtYURhdGEpO1xuXG4gICAgICBjb25zdCBjb25mVmFsaWRhdG9yID0gbmV3IENvbmZpZ1ZhbGlkYXRvcihzY2hlbWEpO1xuICAgICAgY29uc3QgdHNUeXBlcyA9IGNvbmZWYWxpZGF0b3IuZ2VuZXJhdGVUU1R5cGVzKGFyZ3Yucm9vdFR5cGUpO1xuXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKGFyZ3Yub3V0cHV0LCB0c1R5cGVzKTtcblxuICAgICAgc3Bpbm5lci5zdWNjZWVkKFxuICAgICAgICBjaGFsay5ncmVlbihgVHlwZVNjcmlwdCB0eXBlcyB3ZXJlIG91dHB1dCBhdCBcIiR7YXJndi5vdXRwdXR9XCJgKVxuICAgICAgKTtcbiAgICB9XG4gIClcbiAgLmRlbWFuZENvbW1hbmQoMSlcbiAgLnBhcnNlKCk7XG4iXX0=
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { IConfig } from 'config';
|
|
2
|
+
import { ConfigField, ConfigSchema } from './schema/types/fields';
|
|
3
|
+
import { When } from './schema/types/validations';
|
|
4
|
+
export declare class ConfigValidator {
|
|
5
|
+
private schema;
|
|
6
|
+
constructor(schema: ConfigSchema);
|
|
7
|
+
/**
|
|
8
|
+
* validates the passed config against the instance's schema
|
|
9
|
+
*
|
|
10
|
+
* @param {Record<string, any>} config
|
|
11
|
+
*/
|
|
12
|
+
validateConfig(config: Record<string, any>): void;
|
|
13
|
+
/**
|
|
14
|
+
* validates a value in config object
|
|
15
|
+
*
|
|
16
|
+
* @private
|
|
17
|
+
* @param {*} value
|
|
18
|
+
* @param {ConfigField} field the field specification in schema
|
|
19
|
+
* @param {Record<string, any>} config the config object
|
|
20
|
+
*/
|
|
21
|
+
private validateValue;
|
|
22
|
+
/**
|
|
23
|
+
* determines if a when clause in validations section of a schema field is
|
|
24
|
+
* satisfied
|
|
25
|
+
*
|
|
26
|
+
* @param {When} when
|
|
27
|
+
* @param {Record<string, any>} config
|
|
28
|
+
* @return {boolean}
|
|
29
|
+
*/
|
|
30
|
+
isWhenTrue: (when: When, config: Record<string, any>) => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* returns the value at specified path in config object
|
|
33
|
+
*
|
|
34
|
+
* @static
|
|
35
|
+
* @param {Record<string, any>} config
|
|
36
|
+
* @param {string[]} path
|
|
37
|
+
* @return {*}
|
|
38
|
+
*/
|
|
39
|
+
static valueAt: (config: Record<string, any>, path: string[]) => any;
|
|
40
|
+
/**
|
|
41
|
+
* validates this.schema and throws exception if any errors found
|
|
42
|
+
*/
|
|
43
|
+
private validateSchema;
|
|
44
|
+
/**
|
|
45
|
+
* validates config key name
|
|
46
|
+
*
|
|
47
|
+
* @param {string} name
|
|
48
|
+
*/
|
|
49
|
+
private validateConfigName;
|
|
50
|
+
/**
|
|
51
|
+
* validates passed schema field structure
|
|
52
|
+
*
|
|
53
|
+
* @param {ConfigField} field
|
|
54
|
+
*/
|
|
55
|
+
private validateSchemaField;
|
|
56
|
+
/**
|
|
57
|
+
* returns a field corresponding to a path in schema tree
|
|
58
|
+
*
|
|
59
|
+
* @param {string[]} path
|
|
60
|
+
* @return {(ConfigField | undefined)} returns undefined if field is not found
|
|
61
|
+
*/
|
|
62
|
+
getSchemaField: (path: string[]) => ConfigField | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* extracts default values from a schema
|
|
65
|
+
*
|
|
66
|
+
* @return {Record<string, any>} object of default values
|
|
67
|
+
*/
|
|
68
|
+
generateDefault: () => Record<string, any>;
|
|
69
|
+
/**
|
|
70
|
+
* generates compatible TypeScript interface for this instance's schema
|
|
71
|
+
*
|
|
72
|
+
* @param {string} name the name of root type
|
|
73
|
+
* @return {string}
|
|
74
|
+
*/
|
|
75
|
+
generateTSTypes: (name: string) => string;
|
|
76
|
+
/**
|
|
77
|
+
* generates a TypeScript interface definition for passed name and attributes
|
|
78
|
+
*
|
|
79
|
+
* @param {string} name
|
|
80
|
+
* @param {Array<[string, string]>} attributes
|
|
81
|
+
* @return {string}
|
|
82
|
+
*/
|
|
83
|
+
private genTSInterface;
|
|
84
|
+
/**
|
|
85
|
+
* returns a characteristic object for values at a specific node config level
|
|
86
|
+
*
|
|
87
|
+
* @param {IConfig} config
|
|
88
|
+
* @param {string} level
|
|
89
|
+
* @return {Record<string, any>}
|
|
90
|
+
*/
|
|
91
|
+
getConfigForLevel(config: IConfig, level: string): Record<string, any>;
|
|
92
|
+
/**
|
|
93
|
+
*traverses the config schema depth first to produce characteristic object
|
|
94
|
+
*
|
|
95
|
+
* @private
|
|
96
|
+
* @static
|
|
97
|
+
* @param {ConfigSchema} schema
|
|
98
|
+
* @param {string[]} path
|
|
99
|
+
* @param {IConfigSource[]} higherLevelSources
|
|
100
|
+
* @param {(IConfigSource | undefined)} currentLevelSource
|
|
101
|
+
* @param {IConfigSource[]} lowerLevelSources
|
|
102
|
+
* @return {Record<string, any>}
|
|
103
|
+
* @memberof ConfigValidator
|
|
104
|
+
*/
|
|
105
|
+
private static processConfigForLevelNode;
|
|
106
|
+
/**
|
|
107
|
+
* returns a list of config sources used by node config package, ordered from
|
|
108
|
+
* the lowest to the highest priority
|
|
109
|
+
*
|
|
110
|
+
* @static
|
|
111
|
+
* @param {IConfig} config
|
|
112
|
+
* @return {string[]}
|
|
113
|
+
*/
|
|
114
|
+
private static getNodeConfigLevels;
|
|
115
|
+
/**
|
|
116
|
+
* validates a config object and writes it to the node-config file
|
|
117
|
+
* corresponding to the passed level
|
|
118
|
+
*
|
|
119
|
+
* @param {Record<string, any>} configObj
|
|
120
|
+
* @param {IConfig} config
|
|
121
|
+
* @param {string} level output node-config file level
|
|
122
|
+
* @param {string} format the format of the output file
|
|
123
|
+
*/
|
|
124
|
+
validateAndWriteConfig: (
|
|
125
|
+
configObj: Record<string, any>,
|
|
126
|
+
config: IConfig,
|
|
127
|
+
level: string,
|
|
128
|
+
format: string
|
|
129
|
+
) => void;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiB,MAAM,QAAQ,CAAC;AAShD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAIlD,qBAAa,eAAe;IACd,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAIxC;;;;OAIG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAsDjD;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa,CA+BnB;IAEF;;;;;;;OAOG;IACI,UAAU,SAAU,IAAI,UAAU,OAAO,MAAM,EAAE,GAAG,CAAC,KAAG,OAAO,CAIpE;IAEF;;;;;;;OAOG;IACH,MAAM,CAAC,OAAO,WAAY,OAAO,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,EAAE,SAW3D;IAEF;;OAEG;IACH,OAAO,CAAC,cAAc,CAkDpB;IAEF;;;;OAIG;IACH,OAAO,CAAC,kBAAkB,CAIxB;IAEF;;;;OAIG;IACH,OAAO,CAAC,mBAAmB,CA2BzB;IAEF;;;;;OAKG;IACH,cAAc,SAAU,MAAM,EAAE,KAAG,WAAW,GAAG,SAAS,CAYxD;IAEF;;;;OAIG;IACH,eAAe,QAAO,OAAO,MAAM,EAAE,GAAG,CAAC,CAuDvC;IAEF;;;;;OAKG;IACH,eAAe,SAAU,MAAM,KAAG,MAAM,CAwEtC;IAEF;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,CAOpB;IAEF;;;;;;OAMG;IACH,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAmCtE;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IA6CxC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAkDhC;IAEF;;;;;;;;OAQG;IACH,sBAAsB,cACT,OAAO,MAAM,EAAE,GAAG,CAAC,UACtB,OAAO,SACR,MAAM,UACL,MAAM,UAyDd;CACH"}
|