2.1.4 • Published 2 years ago

dotenv-guards v2.1.4

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

dotenv guards

dotenv-guards

release status

tests status

guards functions for dotenv package

installation

npm i dotenv dotenv-guards

usage

import { numberGuard } from 'dotenv-guards';

const jobsAsNumber = numberGuard(process.env.jobs, 2); // return 2 if jobs is not a number

Available guards

  • numberGuard - parse a string to a number.
  • enumGuard - parse a string to an enum.
  • booleanGuard - parse a string to a boolean.
  • arrayGuard - parse a string to an array.
  • string - parse string and execute matchers.

Custom guards

In case if you want to define custom guards - you can use define and revoke functions.

Example:

import { define, revoke } from 'dotenv-guards';

// define new guard
const jsonGuard = define((val: string | undefined) => {
    return JSON.parse(val);
});

jsonGuard('{"qwe": true}'); // returns { qwe: true }

revoke(jsonGuard); // remove json guard

jsonGuard('{"qwe": true}'); // TypeError. jsonGuard is revoked

API

number guard

numberGuard(value, fallbackValue, options)

Parameters

  • value - string - string-like variable.
  • options - Object
    • throwOnFinite - boolean - Throws an error if incoming value parsed to Infinity. Default is false.
    • throwOnNaN - boolean - Throws an error if incoming value parsed to NaN. Default is false.
    • throwOnUndefined - boolean - If true throwing an error if incoming value is undefined. Default is false.
    • throwOnSafeInteger - boolean - Throws an error if incoming value is not safe integer. Default is false.

Returns

number

Example:

// process.env.jobs = '2'
numberGuard(process.env.jobs); // returns 2 as number

// process.env.jobs = 'not a number string'
numberGuard(process.env.jobs); // returns 0 as number

// process.env.jobs = 'not a number string'
numberGuard(process.env.jobs, 0, {throwOnSafeInteger: true}); //throws an error

boolean guard

booleanGuard(value, options)

Parameters

  • value - string - string-like variable.
  • options - Object
    • fallback - fallback value if incoming value is not a boolean and cannot parse value to boolean.
    • trueSymbols - string - Array of possible values which will be converted as true. Default is ['1', 'true']
    • throwOnUndefined Throw an error if incoming value is undefined, fallback value is not returned, since it returns an error. Default is false.
    • throwOnFail - Throw an error if incoming value is not matching with trueSymbols option. Default is false.

Returns

boolean

Example:

// process.env.isDebug = 'true'
booleanGuard(process.env.isDebug); // returns true

// process.env.acceptDownloading = 'yes'
booleanGuard(process.env.acceptDownloading, false, {trueSymbols: ['yes']}); // returns true since 'yes' is in the array

enum guard

enum(value, arrayOfPossibleValues, fallbackValue)

Parameters

  • value - string - string-like variable.
  • arrayOfPossibleValues - Array<string> - Array of possible values.
  • fallbackValue - string - fallback value.

Returns

string

Example:

// process.env.NODE_ENV = 'test'
enumGuard(process.env.NODE_ENV, ['development', 'production'], 'development'); // returns 'development'

// or define more acceptable values
// process.env.NODE_ENV = 'test'
enumGuard(process.env.NODE_ENV, ['development', 'production', 'test'], 'development'); // returns 'test', since 'test' is in the array

array guard

array(value, arrayOfPossibleValues, options)

Parameters

  • value - string - string-like variable.
  • arrayOfPossibleValues - Array<string> - If true throwing an error if at least one element is not matched.
  • options - Object
    • strict - boolean - If true throwing an error if at least one element is not matched. Default is false.
    • separator - string - Parsing separator. Default is ,

Returns

string

Example:

// process.env.array = 'val1,val2,val3'
arrayGuard(process.env.array, ['val1', 'val2']); // split string by `,` symbol and returns ['val1', 'val2']

// custom separator
// process.env.array = 'val1;val2;val3'
arrayGuard(process.env.array, ['val1', 'val2', 'val3'], {separator: ';'}); // split string by `;` symbol and returns ['val1', 'val2', 'val3']

string guard

string(value, options)

Parameters

  • value - string. Parsing string-like value.
  • options
    • fallback- string - fallback value if incoming value is not matched by regex or matcher function.
    • throwOnUndefined- boolean - Throw an error if incoming value is undefined, fallback value is not returned, since it returns an error.
    • regexp- RegExp - Regexp for incoming value. Returns first match.
    • throwOnNullable - boolean - Throw an error if incoming value is null, undefined, empty string or empty array.
    • matcher - boolean - Matcher function for incoming value. Returns boolean(is matched incoming string or not).
    • throwOnMismatch - boolean - Throw an error if incoming value is not matched by regex or matcher function.

Returns

string

Example:

// process.env.token = 'hash123'
stringGuard(process.env.token); // returns hash123

// matcher function
// process.env.token = 'hash123'
arrayGuard(process.env.token, {
    matcher: (value) => value.startsWith('hash'),
}); // returns hash123

// miss matching
// process.env.token = 'hash123'
arrayGuard(process.env.token, {
    matcher: (value) => value.startsWith('random string'),
    fallback: 'qwerty'
}); // returns qwerty, since mismatch

define(fn)

Parameters

  • function - Function - First argument should accepts type string | undefined, otherwise it throws an TypeError

returns

Function

revoke(fn)

Parameters

  • function - Function - function reference from define. It will throw a ReferenceError in case of function is not created from define.

Returns

void

2.1.2

2 years ago

2.0.3

2 years ago

2.1.1

2 years ago

2.1.4

2 years ago

2.1.3

2 years ago

2.1.0

2 years ago

1.3.7

2 years ago

1.3.6

2 years ago

1.3.5

2 years ago

1.3.4

2 years ago

1.3.3

2 years ago

1.2.4

2 years ago

1.3.2

2 years ago

1.2.3

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

2.0.2

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.0

2 years ago