From faa5f11108aaea97731068781df1db09c2f33f84 Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Fri, 25 Jan 2019 18:03:30 +0100 Subject: [PATCH] Add types --- types/dotenv-flow/dotenv-flow-tests.ts | 18 ++++++++ types/dotenv-flow/index.d.ts | 62 ++++++++++++++++++++++++++ types/dotenv-flow/tsconfig.json | 23 ++++++++++ types/dotenv-flow/tslint.json | 1 + 4 files changed, 104 insertions(+) create mode 100644 types/dotenv-flow/dotenv-flow-tests.ts create mode 100644 types/dotenv-flow/index.d.ts create mode 100644 types/dotenv-flow/tsconfig.json create mode 100644 types/dotenv-flow/tslint.json diff --git a/types/dotenv-flow/dotenv-flow-tests.ts b/types/dotenv-flow/dotenv-flow-tests.ts new file mode 100644 index 0000000000..c1d12834db --- /dev/null +++ b/types/dotenv-flow/dotenv-flow-tests.ts @@ -0,0 +1,18 @@ +import dotenv = require("dotenv-flow"); + +const env = dotenv.config(); +const dbUrl: string | null = env.error || !env.parsed ? null : env.parsed["BASIC"]; + +dotenv.load({ + cwd: "someDir", + encoding: "utf8", + purge_dotenv: true +}); + +const parsed = dotenv.parse("NODE_ENV=production\nDB_HOST=a.b.c"); +const dbHost: string = parsed["DB_HOST"]; + +const parsedFromBuffer = dotenv.parse(new Buffer("JUSTICE=league\n"), { + debug: true +}); +const justice: string = parsedFromBuffer["JUSTICE"]; diff --git a/types/dotenv-flow/index.d.ts b/types/dotenv-flow/index.d.ts new file mode 100644 index 0000000000..33a494c4a8 --- /dev/null +++ b/types/dotenv-flow/index.d.ts @@ -0,0 +1,62 @@ +// Type definitions for dotenv-flow 0.2 +// Project: https://github.com/motdotla/dotenv +// Definitions by: Vincent Langlet +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +export interface DotenvParseOptions { + /** + * You may turn on logging to help debug why certain keys or values are not being set as you expect. + */ + debug?: boolean; +} + +export interface DotenvParseOutput { + [name: string]: string; +} + +/** + * Parses a string or buffer in the .env file format into an object. + * + * @param src - contents to be parsed + * @param options - additional options + * @returns an object with keys and values based on `src` + */ +export function parse( + src: string | Buffer, + options?: DotenvParseOptions +): DotenvParseOutput; + +export interface DotenvConfigOptions { + /** + * You may specify a custom path if your file containing environment variables is located elsewhere. + */ + cwd?: string; + + /** + * You may specify the encoding of your file containing environment variables. + */ + encoding?: string; + + /** + * In some cases the original "dotenv" library can be used by one of the dependent npm modules. Use to fix this. + */ + purge_dotenv?: boolean; +} + +export interface DotenvConfigOutput { + error?: Error; + parsed?: DotenvParseOutput; +} + +/** + * Loads `.env` file contents into {@link https://nodejs.org/api/process.html#process_process_env | `process.env`}. + * Example: 'KEY=value' becomes { parsed: { KEY: 'value' } } + * + * @param options - controls behavior + * @returns an object with a `parsed` key if successful or `error` key if an error occurred + * + */ +export function config(options?: DotenvConfigOptions): DotenvConfigOutput; +export const load: typeof config; diff --git a/types/dotenv-flow/tsconfig.json b/types/dotenv-flow/tsconfig.json new file mode 100644 index 0000000000..376a2532ce --- /dev/null +++ b/types/dotenv-flow/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "dotenv-flow-tests.ts" + ] +} diff --git a/types/dotenv-flow/tslint.json b/types/dotenv-flow/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/dotenv-flow/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }