You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP β†’
Socket
Book a DemoInstallSign in
Socket

@kth/default-envs

Package Overview
Dependencies
Maintainers
6
Versions
53
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@kth/default-envs

Process env:s that are not configured on start up, but accessed * as envs in the application are added with there default values.Default paths and error pages for uri:s.

0.0.53
latest
Source
npmnpm
Version published
Weekly downloads
1
-94.74%
Maintainers
6
Weekly downloads
Β 
Created
Source

Default-envs Continous Integration

@kth/default-envs

Usage

Basic behaviour

Process env:s that are not configured on start up, but accessed via process.env.ENV_NAME in the application are added with there default values, as specified as a key-value object.

const defaultEnvs = require("@kth/default-envs");

const DEFAULTS = {
  LOG_LEVEL: "info",
  PORT: 80,
  APPINSIGHTS_INSTRUMENTATIONKEY: "",
};

defaultEnvs.set(DEFAULTS);

console.log(process.env.PORT); // 80

Override default values

If an env is set on startup it will be used, not the default.

APPINSIGHTS_INSTRUMENTATIONKEY="abc-123" node app.js
const defaultEnvs = require("@kth/default-envs");

const DEFAULTS = {
  LOG_LEVEL: "info",
  PORT: 80,
  APPINSIGHTS_INSTRUMENTATIONKEY: "",
};

defaultEnvs.set(DEFAULTS);

console.log(process.env.APPINSIGHTS_INSTRUMENTATIONKEY); // abc-123

Required values without any defaults

Some envs do not have defaults and must exist before starting your service. defaultEnvs.required([], console) will print information about if a logger is passed, and if the env is missing when invoking required throw an error Required env 'PASSWORD' does not exist. .

node app.js
const defaultEnvs = require("@kth/default-envs");

const DEFAULTS = {
  USER: "admin",
  URI: 'example.com'
};

defaultEnvs.set(DEFAULTS); 
defaultEnvs.required(['PASSWORD']); // Exception:Required env 'PASSWORD' does not exist.
PASSWORD='s3cret' node app.js
const defaultEnvs = require("@kth/default-envs");

const DEFAULTS = {
  USER: "admin",
  URI: 'example.com'
};

defaultEnvs.set(DEFAULTS); 
defaultEnvs.required(['PASSWORD']);
console.log(process.env.PASSWORD); // s3cret

Log the defaults used

If you pass a logger like console or any other that implements logger functions debug, info or warn you will get information about what defaults are used when invoking defaultEnvs.set({}, logger);

TOKEN="xxxx-yyyy" PORT=3000 node app.js
const defaultEnvs = require("@kth/default-envs");

const DEFAULTS = {
  LOG_LEVEL: "info",
  PORT: 80,
  APPINSIGHTS_INSTRUMENTATIONKEY: "",
};

defaultEnvs.set(DEFAULTS, console);
defaultEnvs.required(['TOKEN', 'PASSWORD']); 
08:57:00.808Z  INFO my-app:  - Env 'LOG_LEVEL' is not set, defaulting to 'info'.
08:57:00.811Z  INFO my-app:  - Env 'APPINSIGHTS_INSTRUMENTATIONKEY' is not set, defaulting to ''.
08:57:00.811Z  INFO my-app:  - βœ… Found required env 'TOKEN'
08:57:00.811Z  INFO my-app:  - 🚨 Missing required env 'PASSWORD'
08:57:00.811Z  WARN my-app:  Required env 'PASSWORD' does not exist.

  Exception: Required env 'PASSWORD' does not exist.

Tests

npm install npm test


  Default Envs 

    βœ” Throw an error if a required env is missing.
    βœ” Do not throw an error if a required env exists.
    βœ” If a default value is set you can access it wia process.env.
    βœ” If a env is already set prior to running set(defaults), process.env will return it.
    βœ” After runnign unset() all defaults values are removed from process.env array.
    βœ” After runnign unset() all emvs set on startup are still availible.
    βœ” If a logger is passed to the set({}, logger), use it to log.

  7 passing (10ms)
  

Demo

  • Go to the directory https://github.com/KTH/default-envs/tree/master/demo
  • npm install
  • npm run ok
> default-envs-demo@0.0.1 ok
> PASSWORD='s3cret' TOKEN='xxxx-1111' APPLICATION_NAME='Super default-envs-demo πŸš€' node demo.js

 - Env 'LOG_LEVEL' is not set, defaulting to 'info'.
 - Env 'PORT' is not set, defaulting to '3000'.
 - Env 'API_HOST' is not set, defaulting to 'https://api.kth.se'.
 - Env 'APPINSIGHTS_INSTRUMENTATIONKEY' is not set, defaulting to ''.
 - βœ… Found required env 'PASSWORD'
 - βœ… Found required env 'TOKEN'

Application name: Super default-envs-demo πŸš€
  • npm run fail
> default-envs-demo@0.0.1 fail
> TOKEN='xxxx-1111' node demo.js

 - Env 'APPLICATION_NAME' is not set, defaulting to 'Demo-app'.
 - Env 'LOG_LEVEL' is not set, defaulting to 'info'.
 - Env 'PORT' is not set, defaulting to '3000'.
 - Env 'API_HOST' is not set, defaulting to 'https://api.kth.se'.
 - Env 'APPINSIGHTS_INSTRUMENTATIONKEY' is not set, defaulting to ''.
 - 🚨 Missing required env 'PASSWORD'
 - βœ… Found required env 'TOKEN'
Required env 'PASSWORD' does not exist.

/Users/patricjansson/dev/kth/gita.sys.kth.se/default-envs/demo/node_modules/@kth/default-envs/index.js:69
      throw message;
      ^
Required env 'PASSWORD' does not exist.
(Use `node --trace-uncaught ...` to show where the exception was thrown)

Keywords

kth

FAQs

Package last updated on 06 Dec 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts