Skip to content

Config loader with type safety based on node-config and JSON schema

License

Notifications You must be signed in to change notification settings

alexandrucancescu/paranoid-config

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

paranoid-config

Config loader with type safety and validations

About

This package is based on config, so you should already be familiar with it. This package is best used with typescript and @sinclair/typebox for schema definition as it also provides types.

Warning: This package is native ESM and doesn't provide a CommonJS export. If your project uses CommonJS, you will have to convert to ESM.

Usage

npm install --save paranoid-config @sinclair/typebox

In your project config/local.json:

{
  "db": {
    "host": "localhost",
    "port": 3000,
    "credentials": {}
  }
}

config.ts

import {Static, Type} from "@sinclair/typebox"
import getConfig from "paranoid-config";

const schema = Type.Object({
    db: Type.Object({
        host: Type.String(),
        port: Type.Number({minimum: 0}),
        credentials: Type.Object({
            user: Type.String(),
            pass: Type.String()
        })
    })
})

type ConfigType = Static<typeof schema>

export default getConfig<ConfigType>(schema);

getConfig will validate the configuration object provided by config package and you can be sure your application does not fail because of missing required configurations.

Using typebox you also benefit from having types extracted from your schema.

You can also add defaults and other validations using typebox

import {Type} from "@sinclair/typebox"

Type.String({
    minLength: 3,
    default: "localhost"
})

About

Config loader with type safety based on node-config and JSON schema

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published