zodified-config 2.1.1 → 2.2.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/README.md +17 -0
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -53,4 +53,21 @@ try {
|
|
|
53
53
|
import config from 'zodified-config'
|
|
54
54
|
|
|
55
55
|
config.get('value');
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 4. Coercion of Values
|
|
59
|
+
|
|
60
|
+
Starting from version 2.2.0, `zodified-config` supports coercion of values. This means that you can define schemas that automatically transform input values into the desired format.
|
|
61
|
+
|
|
62
|
+
For example:
|
|
63
|
+
```ts
|
|
64
|
+
import z from 'zod';
|
|
65
|
+
import config from 'zodified-config';
|
|
66
|
+
|
|
67
|
+
const schema = z.object({
|
|
68
|
+
port: z.coerce.number()
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
const validatedConfig = config.validate(schema);
|
|
72
|
+
console.log(validatedConfig.port); // Automatically coerced into a number
|
|
56
73
|
```
|
package/dist/index.js
CHANGED
|
@@ -16,10 +16,13 @@ class ZodValidationError extends Error {
|
|
|
16
16
|
exports.ZodValidationError = ZodValidationError;
|
|
17
17
|
const validate = (schema) => {
|
|
18
18
|
try {
|
|
19
|
-
const result = schema.safeParse(
|
|
19
|
+
const result = schema.safeParse(fullConfig);
|
|
20
20
|
if (result.success === false) {
|
|
21
21
|
throw new ZodValidationError('INVALID_CONFIG', result.error.issues);
|
|
22
22
|
}
|
|
23
|
+
// Apply Zod-transformed values back so get() returns coerced/transformed values
|
|
24
|
+
Object.keys(fullConfig).forEach((key) => delete fullConfig[key]);
|
|
25
|
+
Object.assign(fullConfig, result.data);
|
|
23
26
|
return true;
|
|
24
27
|
}
|
|
25
28
|
catch (error) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAM5B,MAAM,UAAU,GAAG,gBAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAE1C,MAAa,kBAAmB,SAAQ,KAAK;IAE3C,YAAY,OAAe,EAAE,QAAoB;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAPD,gDAOC;AAED,MAAM,QAAQ,GAAG,CAAsB,MAAS,EAAE,EAAE;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAM5B,MAAM,UAAU,GAAG,gBAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAE1C,MAAa,kBAAmB,SAAQ,KAAK;IAE3C,YAAY,OAAe,EAAE,QAAoB;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAPD,gDAOC;AAED,MAAM,QAAQ,GAAG,CAAsB,MAAS,EAAE,EAAE;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtE,CAAC;QACD,gFAAgF;QAChF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,gBAAgB,EAAE,CAAC;YACjE,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAC;AAeF,MAAM,GAAG,GAAG,CACV,IAAW,EACY,EAAE;IACzB,IAAI,MAAM,GAAG,UAAU,CAAC;IAExB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAA+B,CAAC;IACzC,CAAC;IAEA,IAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,kBAAe;IACb,QAAQ;IACR,GAAG;CACJ,CAAC"}
|