diff --git a/convict/convict-tests.ts b/convict/convict-tests.ts new file mode 100644 index 0000000000..a36b234802 --- /dev/null +++ b/convict/convict-tests.ts @@ -0,0 +1,58 @@ +/// +/// + +import convict = require('convict'); +import validator = require('validator'); + +// define a schema + +var conf = convict({ + env: { + doc: 'The applicaton environment.', + format: ['production', 'development', 'test'], + default: 'development', + env: 'NODE_ENV', + arg: 'node-env', + }, + ip: { + doc: 'The IP address to bind.', + format: 'ipaddress', + default: '127.0.0.1', + env: 'IP_ADDRESS', + }, + port: { + doc: 'The port to bind.', + format: 'port', + default: 0, + env: 'PORT', + arg: 'port', + }, + key: { + doc: "API key", + format: (val: string) => validator.isUUID(val), + default: '01527E56-8431-11E4-AF91-47B661C210CA' + }, +}); + + +// load environment dependent configuration + +var env = conf.get('env'); +conf.loadFile('./config/' + env + '.json'); +conf.loadFile(['./configs/always.json', './configs/sometimes.json']); + +// perform validation + +conf.validate(); + +var port: number = conf.default('port'); + +if (conf.has('key')) { + conf.set('the.awesome', true); + conf.load({ + thing: { + a: 'b' + } + }); +} +// vim:et:sw=2:ts=2 diff --git a/convict/convict.d.ts b/convict/convict.d.ts new file mode 100644 index 0000000000..dc2b8e82bf --- /dev/null +++ b/convict/convict.d.ts @@ -0,0 +1,33 @@ +// Type definitions for node-convict v0.6.0 +// Project: https://github.com/mozilla/node-convict +// Definitions by: Wim Looman +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module "convict" { + function convict(schema: convict.Schema): convict.Config; + + module convict { + interface Schema { + [name: string]: { + default: any; + doc?: string; + format?: any; + env?: string; + arg?: string; + }; + } + + interface Config { + get(name: string): any; + default(name: string): any; + has(name: string): boolean; + set(name: string, value: any): void; + load(conf: Object): void; + loadFile(file: string): void; + loadFile(files: string[]): void; + validate(): void; + } + } + + export = convict; +}