@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
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
export const valueValidators = {
|
|
2
|
+
object: (value, field) => {
|
|
3
|
+
if (typeof value !== 'object') {
|
|
4
|
+
throw new Error(`value must be of object type`);
|
|
5
|
+
}
|
|
6
|
+
const schemaKeys = new Set(Object.keys(field.children));
|
|
7
|
+
for (const key of Object.keys(value)) {
|
|
8
|
+
if (!schemaKeys.has(key)) {
|
|
9
|
+
throw new Error(`"${key}" key is not found in the schema`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
string: (value, field) => {
|
|
14
|
+
if (typeof value !== 'string') {
|
|
15
|
+
throw new Error(`value must be of string type`);
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
boolean: (value, field) => {
|
|
19
|
+
if (typeof value !== 'boolean') {
|
|
20
|
+
throw new Error(`value must be of boolean type`);
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
number: (value, field) => {
|
|
24
|
+
if (typeof value !== 'number') {
|
|
25
|
+
throw new Error(`value must be of number type`);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
bigint: (value, field) => {
|
|
29
|
+
if (typeof value !== 'bigint') {
|
|
30
|
+
throw new Error(`value must be of bigint type`);
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
const required = (value, validation, config, configValidator) => {
|
|
35
|
+
if (validation.when && !configValidator.isWhenTrue(validation.when, config)) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (validation.required && value == undefined) {
|
|
39
|
+
throw new Error('value is required but not found in config');
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
export const valueValidations = {
|
|
43
|
+
boolean: { required },
|
|
44
|
+
string: {
|
|
45
|
+
required,
|
|
46
|
+
regex: (value, validation, config, configValidator) => {
|
|
47
|
+
if (
|
|
48
|
+
value == undefined ||
|
|
49
|
+
(validation.when &&
|
|
50
|
+
!configValidator.isWhenTrue(validation.when, config))
|
|
51
|
+
) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const re = new RegExp(validation.regex);
|
|
55
|
+
const match = value.match(re);
|
|
56
|
+
if (match == null || match[0] !== value) {
|
|
57
|
+
throw new Error(`value should match the regex="${validation.regex}"`);
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
choices: (value, validation, config, configValidator) => {
|
|
61
|
+
if (
|
|
62
|
+
value == undefined ||
|
|
63
|
+
(validation.when &&
|
|
64
|
+
!configValidator.isWhenTrue(validation.when, config))
|
|
65
|
+
) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (!validation.choices.includes(value)) {
|
|
69
|
+
throw new Error(
|
|
70
|
+
`value should be one of the choices=[${validation.choices.join(
|
|
71
|
+
', '
|
|
72
|
+
)}]`
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
number: {
|
|
78
|
+
required,
|
|
79
|
+
gt: (value, validation, config, configValidator) => {
|
|
80
|
+
if (
|
|
81
|
+
value == undefined ||
|
|
82
|
+
(validation.when &&
|
|
83
|
+
!configValidator.isWhenTrue(validation.when, config))
|
|
84
|
+
) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (value <= validation.gt) {
|
|
88
|
+
throw new Error(`value should be greater than ${validation.gt}`);
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
gte: (value, validation, config, configValidator) => {
|
|
92
|
+
if (
|
|
93
|
+
value == undefined ||
|
|
94
|
+
(validation.when &&
|
|
95
|
+
!configValidator.isWhenTrue(validation.when, config))
|
|
96
|
+
) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (value < validation.gte) {
|
|
100
|
+
throw new Error(
|
|
101
|
+
`value should be greater than or equal to ${validation.gte}`
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
lt: (value, validation, config, configValidator) => {
|
|
106
|
+
if (
|
|
107
|
+
value == undefined ||
|
|
108
|
+
(validation.when &&
|
|
109
|
+
!configValidator.isWhenTrue(validation.when, config))
|
|
110
|
+
) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
if (value >= validation.lt) {
|
|
114
|
+
throw new Error(`value should be less than ${validation.lt}`);
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
lte: (value, validation, config, configValidator) => {
|
|
118
|
+
if (
|
|
119
|
+
value == undefined ||
|
|
120
|
+
(validation.when &&
|
|
121
|
+
!configValidator.isWhenTrue(validation.when, config))
|
|
122
|
+
) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (value > validation.lte) {
|
|
126
|
+
throw new Error(
|
|
127
|
+
`value should be less than or equal to ${validation.lte}`
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
bigint: {
|
|
133
|
+
required,
|
|
134
|
+
gt: (value, validation, config, configValidator) => {
|
|
135
|
+
if (
|
|
136
|
+
value == undefined ||
|
|
137
|
+
(validation.when &&
|
|
138
|
+
!configValidator.isWhenTrue(validation.when, config))
|
|
139
|
+
) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (value <= validation.gt) {
|
|
143
|
+
throw new Error(`value should be greater than ${validation.gt}`);
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
gte: (value, validation, config, configValidator) => {
|
|
147
|
+
if (
|
|
148
|
+
value == undefined ||
|
|
149
|
+
(validation.when &&
|
|
150
|
+
!configValidator.isWhenTrue(validation.when, config))
|
|
151
|
+
) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
if (value < validation.gte) {
|
|
155
|
+
throw new Error(
|
|
156
|
+
`value should be greater than or equal to ${validation.gte}`
|
|
157
|
+
);
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
lt: (value, validation, config, configValidator) => {
|
|
161
|
+
if (
|
|
162
|
+
value == undefined ||
|
|
163
|
+
(validation.when &&
|
|
164
|
+
!configValidator.isWhenTrue(validation.when, config))
|
|
165
|
+
) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (value >= validation.lt) {
|
|
169
|
+
throw new Error(`value should be less than ${validation.lt}`);
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
lte: (value, validation, config, configValidator) => {
|
|
173
|
+
if (
|
|
174
|
+
value == undefined ||
|
|
175
|
+
(validation.when &&
|
|
176
|
+
!configValidator.isWhenTrue(validation.when, config))
|
|
177
|
+
) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (value > validation.lte) {
|
|
181
|
+
throw new Error(
|
|
182
|
+
`value should be less than or equal to ${validation.lte}`
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi92YWx1ZS92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBd0I7SUFDbEQsTUFBTSxFQUFFLENBQUMsS0FBMEIsRUFBRSxLQUF3QixFQUFFLEVBQUU7UUFDL0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ2pEO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN4RCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLGtDQUFrQyxDQUFDLENBQUM7YUFDNUQ7U0FDRjtJQUNILENBQUM7SUFDRCxNQUFNLEVBQUUsQ0FBQyxLQUFhLEVBQUUsS0FBd0IsRUFBRSxFQUFFO1FBQ2xELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQyxLQUFjLEVBQUUsS0FBeUIsRUFBRSxFQUFFO1FBQ3JELElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztTQUNsRDtJQUNILENBQUM7SUFDRCxNQUFNLEVBQUUsQ0FBQyxLQUFhLEVBQUUsS0FBd0IsRUFBRSxFQUFFO1FBQ2xELElBQUksT0FBTyxL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LFNBQVM7Z0JBQ2xCLENBQUMsVUFBVSxDQUFDLElBQUk7b0JBQ2QsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFDdkQ7Z0JBQ0EsT0FBTzthQUNSO1lBRUQsSUFBSSxLQUFLLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRTtnQkFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDL0Q7UUFDSCxDQUFDO1FBQ0QsR0FBRyxFQUFFLENBQ0gsS0FBYSxFQUNiLFVBQThCLEVBQzlCLE1BQTJCLEVBQzNCLGVBQWdDLEVBQ2hDLEVBQUU7WUFDRixJQUNFLEtBQUssSUFBSSxTQUFTO2dCQUNsQixDQUFDLFVBQVUsQ0FBQyxJQUFJO29CQUNkLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQ3ZEO2dCQUNBLE9BQU87YUFDUjtZQUVELElBQUksS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQ2IseUNBQXlDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FDMUQsQ0FBQzthQUNIO1FBQ0gsQ0FBQztLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ1ZhbGlkYXRvciB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuLi9zY2hlbWEvdHlwZXMvZmllbGRzJztcbmltcG9ydCB7XG4gIFZDaG9pY2VzLFxuICBWR3JlYXRlcixcbiAgVkdyZWF0ZXJFcXVhbCxcbiAgVkxlc3MsXG4gIFZMZXNzRXF1YWwsXG4gIFZSZWdleCxcbiAgVlJlcXVpcmVkLFxufSBmcm9tICcuLi9zY2hlbWEvdHlwZXMvdmFsaWRhdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgdmFsdWVWYWxpZGF0b3JzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICBvYmplY3Q6ICh2YWx1ZTogUmVjb3JkPHN0cmluZywgYW55PiwgZmllbGQ6IHR5cGVzLk9iamVjdEZpZWxkKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdmFsdWUgbXVzdCBiZSBvZiBvYmplY3QgdHlwZWApO1xuICAgIH1cblxuICAgIGNvbnN0IHNjaGVtYUtleXMgPSBuZXcgU2V0KE9iamVjdC5rZXlzKGZpZWxkLmNoaWxkcmVuKSk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XG4gICAgICBpZiAoIXNjaGVtYUtleXMuaGFzKGtleSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIiR7a2V5fVwiIGtleSBpcyBub3QgZm91bmQgaW4gdGhlIHNjaGVtYWApO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgc3RyaW5nOiAodmFsdWU6IHN0cmluZywgZmllbGQ6IHR5cGVzLlN0cmluZ0ZpZWxkKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdmFsdWUgbXVzdCBiZSBvZiBzdHJpbmcgdHlwZWApO1xuICAgIH1cbiAgfSxcbiAgYm9vbGVhbjogKHZhbHVlOiBib29sZWFuLCBmaWVsZDogdHlwZXMuQm9vbGVhbkZpZWxkKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHZhbHVlIG11c3QgYmUgb2YgYm9vbGVhbiB0eXBlYCk7XG4gICAgfVxuICB9LFxuICBudW1iZXI6ICh2YWx1ZTogbnVtYmVyLCBmaWVsZDogdHlwZXMuTnVtYmVyRmllbGQpID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB2YWx1ZSBtdXN0IGJlIG9mIG51bWJlciB0eXBlYCk7XG4gICAgfVxuICB9LFxuICBiaWdpbnQ6ICh2YWx1ZTogYmlnaW50LCBmaWVsZDogdHlwZXMuQmlnSW50RmllbGQpID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnYmlnaW50Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB2YWx1ZSBtdXN0IGJlIG9mIGJpZ2ludCB0eXBlYCk7XG4gICAgfVxuICB9LFxufTtcblxuY29uc3QgcmVxdWlyZWQgPSAoXG4gIHZhbHVlOiBhbnksXG4gIHZhbGlkYXRpb246IFZSZXF1aXJlZCxcbiAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBjb25maWdWYWxpZGF0b3I6IENvbmZpZ1ZhbGlkYXRvclxuKSA9PiB7XG4gIGlmICh2YWxpZGF0aW9uLndoZW4gJiYgIWNvbmZpZ1ZhbGlkYXRvci5pc1doZW5UcnVlKHZhbGlkYXRpb24ud2hlbiwgY29uZmlnKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmICh2YWxpZGF0aW9uLnJlcXVpcmVkICYmIHZhbHVlID09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndmFsdWUgaXMgcmVxdWlyZWQgYnV0IG5vdCBmb3VuZCBpbiBjb25maWcnKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHZhbHVlVmFsaWRhdGlvbnM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIGFueT4+ID0ge1xuICBib29sZWFuOiB7IHJlcXVpcmVkIH0sXG4gIHN0cmluZzoge1xuICAgIHJlcXVpcmVkLFxuICAgIHJlZ2V4OiAoXG4gICAgICB2YWx1ZTogc3RyaW5nLFxuICAgICAgdmFsaWRhdGlvbjogVlJlZ2V4LFxuICAgICAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgICAgY29uZmlnVmFsaWRhdG9yOiBDb25maWdWYWxpZGF0b3JcbiAgICApID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdmFsdWUgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICh2YWxpZGF0aW9uLndoZW4gJiZcbiAgICAgICAgICAhY29uZmlnVmFsaWRhdG9yLmlzV2hlblRydWUodmFsaWRhdGlvbi53aGVuLCBjb25maWcpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKHZhbGlkYXRpb24ucmVnZXgpO1xuICAgICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChyZSk7XG4gICAgICBpZiAobWF0Y2ggPT0gbnVsbCB8fCBtYXRjaFswXSAhPT0gdmFsdWUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB2YWx1ZSBzaG91bGQgbWF0Y2ggdGhlIHJlZ2V4PVwiJHt2YWxpZGF0aW9uLnJlZ2V4fVwiYCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBjaG9pY2VzOiAoXG4gICAgICB2YWx1ZTogc3RyaW5nLFxuICAgICAgdmFsaWRhdGlvbjogVkNob2ljZXMsXG4gICAgICBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICBjb25maWdWYWxpZGF0b3I6IENvbmZpZ1ZhbGlkYXRvclxuICAgICkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB2YWx1ZSA9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgKHZhbGlkYXRpb24ud2hlbiAmJlxuICAgICAgICAgICFjb25maWdWYWxpZGF0b3IuaXNXaGVuVHJ1ZSh2YWxpZGF0aW9uLndoZW4sIGNvbmZpZykpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXZhbGlkYXRpb24uY2hvaWNlcy5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGB2YWx1ZSBzaG91bGQgYmUgb25lIG9mIHRoZSBjaG9pY2VzPVske3ZhbGlkYXRpb24uY2hvaWNlcy5qb2luKFxuICAgICAgICAgICAgJywgJ1xuICAgICAgICAgICl9XWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9LFxuICBudW1iZXI6IHtcbiAgICByZXF1aXJlZCxcbiAgICBndDogKFxuICAgICAgdmFsdWU6IG51bWJlcixcbiAgICAgIHZhbGlkYXRpb246IFZHcmVhdGVyPG51bWJlcj4sXG4gICAgICBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICBjb25maWdWYWxpZGF0b3I6IENvbmZpZ1ZhbGlkYXRvclxuICAgICkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB2YWx1ZSA9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgKHZhbGlkYXRpb24ud2hlbiAmJlxuICAgICAgICAgICFjb25maWdWYWxpZGF0b3IuaXNXaGVuVHJ1ZSh2YWxpZGF0aW9uLndoZW4sIGNvbmZpZykpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPD0gdmFsaWRhdGlvbi5ndCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHZhbHVlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gJHt2YWxpZGF0aW9uLmd0fWApO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ3RlOiAoXG4gICAgICB2YWx1ZTogbnVtYmVyLFxuICAgICAgdmFsaWRhdGlvbjogVkdyZWF0ZXJFcXVhbDxudW1iZXI+LFxuICAgICAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgICAgY29uZmlnVmFsaWRhdG9yOiBDb25maWdWYWxpZGF0b3JcbiAgICApID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdmFsdWUgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICh2YWxpZGF0aW9uLndoZW4gJiZcbiAgICAgICAgICAhY29uZmlnVmFsaWRhdG9yLmlzV2hlblRydWUodmFsaWRhdGlvbi53aGVuLCBjb25maWcpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlIDwgdmFsaWRhdGlvbi5ndGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGB2YWx1ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7dmFsaWRhdGlvbi5ndGV9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICAgbHQ6IChcbiAgICAgIHZhbHVlOiBudW1iZXIsXG4gICAgICB2YWxpZGF0aW9uOiBWTGVzczxudW1iZXI+LFxuICAgICAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgICAgY29uZmlnVmFsaWRhdG9yOiBDb25maWdWYWxpZGF0b3JcbiAgICApID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdmFsdWUgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICh2YWxpZGF0aW9uLndoZW4gJiZcbiAgICAgICAgICAhY29uZmlnVmFsaWRhdG9yLmlzV2hlblRydWUodmFsaWRhdGlvbi53aGVuLCBjb25maWcpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlID49IHZhbGlkYXRpb24ubHQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuICR7dmFsaWRhdGlvbi5sdH1gKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGx0ZTogKFxuICAgICAgdmFsdWU6IG51bWJlcixcbiAgICAgIHZhbGlkYXRpb246IFZMZXNzRXF1YWw8bnVtYmVyPixcbiAgICAgIGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgIGNvbmZpZ1ZhbGlkYXRvcjogQ29uZmlnVmFsaWRhdG9yXG4gICAgKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHZhbHVlID09IHVuZGVmaW5lZCB8fFxuICAgICAgICAodmFsaWRhdGlvbi53aGVuICYmXG4gICAgICAgICAgIWNvbmZpZ1ZhbGlkYXRvci5pc1doZW5UcnVlKHZhbGlkYXRpb24ud2hlbiwgY29uZmlnKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA+IHZhbGlkYXRpb24ubHRlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgdmFsdWUgc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke3ZhbGlkYXRpb24ubHRlfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9LFxuICBiaWdpbnQ6IHtcbiAgICByZXF1aXJlZCxcbiAgICBndDogKFxuICAgICAgdmFsdWU6IGJpZ2ludCxcbiAgICAgIHZhbGlkYXRpb246IFZHcmVhdGVyPGJpZ2ludD4sXG4gICAgICBjb25maWc6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICBjb25maWdWYWxpZGF0b3I6IENvbmZpZ1ZhbGlkYXRvclxuICAgICkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB2YWx1ZSA9PSB1bmRlZmluZWQgfHxcbiAgICAgICAgKHZhbGlkYXRpb24ud2hlbiAmJlxuICAgICAgICAgICFjb25maWdWYWxpZGF0b3IuaXNXaGVuVHJ1ZSh2YWxpZGF0aW9uLndoZW4sIGNvbmZpZykpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPD0gdmFsaWRhdGlvbi5ndCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHZhbHVlIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gJHt2YWxpZGF0aW9uLmd0fWApO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ3RlOiAoXG4gICAgICB2YWx1ZTogYmlnaW50LFxuICAgICAgdmFsaWRhdGlvbjogVkdyZWF0ZXJFcXVhbDxiaWdpbnQ+LFxuICAgICAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgICAgY29uZmlnVmFsaWRhdG9yOiBDb25maWdWYWxpZGF0b3JcbiAgICApID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdmFsdWUgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICh2YWxpZGF0aW9uLndoZW4gJiZcbiAgICAgICAgICAhY29uZmlnVmFsaWRhdG9yLmlzV2hlblRydWUodmFsaWRhdGlvbi53aGVuLCBjb25maWcpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlIDwgdmFsaWRhdGlvbi5ndGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGB2YWx1ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7dmFsaWRhdGlvbi5ndGV9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICAgbHQ6IChcbiAgICAgIHZhbHVlOiBiaWdpbnQsXG4gICAgICB2YWxpZGF0aW9uOiBWTGVzczxiaWdpbnQ+LFxuICAgICAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgICAgY29uZmlnVmFsaWRhdG9yOiBDb25maWdWYWxpZGF0b3JcbiAgICApID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgdmFsdWUgPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICh2YWxpZGF0aW9uLndoZW4gJiZcbiAgICAgICAgICAhY29uZmlnVmFsaWRhdG9yLmlzV2hlblRydWUodmFsaWRhdGlvbi53aGVuLCBjb25maWcpKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHZhbHVlID49IHZhbGlkYXRpb24ubHQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuICR7dmFsaWRhdGlvbi5sdH1gKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGx0ZTogKFxuICAgICAgdmFsdWU6IGJpZ2ludCxcbiAgICAgIHZhbGlkYXRpb246IFZMZXNzRXF1YWw8YmlnaW50PixcbiAgICAgIGNvbmZpZzogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgIGNvbmZpZ1ZhbGlkYXRvcjogQ29uZmlnVmFsaWRhdG9yXG4gICAgKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHZhbHVlID09IHVuZGVmaW5lZCB8fFxuICAgICAgICAodmFsaWRhdGlvbi53aGVuICYmXG4gICAgICAgICAgIWNvbmZpZ1ZhbGlkYXRvci5pc1doZW5UcnVlKHZhbGlkYXRpb24ud2hlbiwgY29uZmlnKSlcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA+IHZhbGlkYXRpb24ubHRlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgdmFsdWUgc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke3ZhbGlkYXRpb24ubHRlfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICB9LFxufTtcbiJdfQ==
|
package/lib/cli.ts
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#!/usr/bin/env -S node --experimental-specifier-resolution=node
|
|
2
|
+
|
|
3
|
+
import yargs from 'yargs';
|
|
4
|
+
import { hideBin } from 'yargs/helpers';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import ora from 'ora';
|
|
7
|
+
import { ConfigValidator } from './index';
|
|
8
|
+
import * as fs from 'fs';
|
|
9
|
+
import JsonBigIntFactory from 'json-bigint';
|
|
10
|
+
import * as yaml from 'js-yaml';
|
|
11
|
+
|
|
12
|
+
const JsonBigInt = JsonBigIntFactory({
|
|
13
|
+
alwaysParseAsBig: false,
|
|
14
|
+
useNativeBigInt: true,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
yargs(hideBin(process.argv))
|
|
18
|
+
.command(
|
|
19
|
+
'generate-default',
|
|
20
|
+
'generates an object using the default values of the passed schema',
|
|
21
|
+
(yargs) =>
|
|
22
|
+
yargs
|
|
23
|
+
.option('schema', {
|
|
24
|
+
alias: 's',
|
|
25
|
+
demandOption: true,
|
|
26
|
+
description: 'input schema file path which should be in json format',
|
|
27
|
+
type: 'string',
|
|
28
|
+
})
|
|
29
|
+
.option('output', {
|
|
30
|
+
alias: 'o',
|
|
31
|
+
demandOption: true,
|
|
32
|
+
description: 'generated default values output path',
|
|
33
|
+
type: 'string',
|
|
34
|
+
})
|
|
35
|
+
.option('format', {
|
|
36
|
+
alias: 'f',
|
|
37
|
+
demandOption: true,
|
|
38
|
+
description: 'generated default values output path',
|
|
39
|
+
choices: ['json', 'yaml'],
|
|
40
|
+
default: 'yaml',
|
|
41
|
+
type: 'string',
|
|
42
|
+
}),
|
|
43
|
+
async (argv) => {
|
|
44
|
+
const spinner = ora();
|
|
45
|
+
spinner.start(`Generating config default values`);
|
|
46
|
+
|
|
47
|
+
const rawSchemaData = fs.readFileSync(argv.schema, 'utf-8');
|
|
48
|
+
const schema = JsonBigInt.parse(rawSchemaData);
|
|
49
|
+
|
|
50
|
+
const confValidator = new ConfigValidator(schema);
|
|
51
|
+
const defaultConf = confValidator.generateDefault();
|
|
52
|
+
|
|
53
|
+
let output = '';
|
|
54
|
+
switch (argv.format) {
|
|
55
|
+
case 'json': {
|
|
56
|
+
output = JsonBigInt.stringify(defaultConf);
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
case 'yaml': {
|
|
60
|
+
output = yaml.dump(defaultConf);
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
fs.writeFileSync(argv.output, output);
|
|
66
|
+
|
|
67
|
+
spinner.succeed(
|
|
68
|
+
chalk.green(`default config values were output at "${argv.output}"`)
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
.command(
|
|
73
|
+
'generate-ts-types',
|
|
74
|
+
'generates compatible TypeScript interface types for the passed schema',
|
|
75
|
+
(yargs) =>
|
|
76
|
+
yargs
|
|
77
|
+
.option('schema', {
|
|
78
|
+
alias: 's',
|
|
79
|
+
demandOption: true,
|
|
80
|
+
description: 'input schema file path which should be in json format',
|
|
81
|
+
type: 'string',
|
|
82
|
+
})
|
|
83
|
+
.option('output', {
|
|
84
|
+
alias: 'o',
|
|
85
|
+
demandOption: true,
|
|
86
|
+
description: 'generated TypeScript interfaces',
|
|
87
|
+
type: 'string',
|
|
88
|
+
})
|
|
89
|
+
.option('root-type', {
|
|
90
|
+
alias: 'r',
|
|
91
|
+
demandOption: true,
|
|
92
|
+
description: 'Name of top root interface',
|
|
93
|
+
type: 'string',
|
|
94
|
+
}),
|
|
95
|
+
async (argv) => {
|
|
96
|
+
const spinner = ora();
|
|
97
|
+
spinner.start(`Generating TypeScript types`);
|
|
98
|
+
|
|
99
|
+
const rawSchemaData = fs.readFileSync(argv.schema, 'utf-8');
|
|
100
|
+
const schema = JsonBigInt.parse(rawSchemaData);
|
|
101
|
+
|
|
102
|
+
const confValidator = new ConfigValidator(schema);
|
|
103
|
+
const tsTypes = confValidator.generateTSTypes(argv.rootType);
|
|
104
|
+
|
|
105
|
+
fs.writeFileSync(argv.output, tsTypes);
|
|
106
|
+
|
|
107
|
+
spinner.succeed(
|
|
108
|
+
chalk.green(`TypeScript types were output at "${argv.output}"`)
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
)
|
|
112
|
+
.demandCommand(1)
|
|
113
|
+
.parse();
|