Notable Pseudocode Mashups

    dotenv-guards
    TypeScript icon, indicating that this package has built-in type declarations

    2.1.4 • Public • Published

    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

    Install

    npm i dotenv-guards

    DownloadsWeekly Downloads

    22

    Version

    2.1.4

    License

    MIT

    Unpacked Size

    132 kB

    Total Files

    26

    Last publish

    Collaborators

    • vitalicset