0.1.0 • Published 1 year ago

enveror v0.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

enveror

npm

This library under alpha version now.

environment variables managing library for TypeScript (or JavaScript).

$ npm i enveror

feature

  • easy to validate type
  • easy to use some type as env val(string/number/boolean/string[]/number[]/object)
  • easy to define nested env var
  • easy to use array for env var

how to use

place .enveror to current dir as following content.

STAGE = "dev"
CLOUD.API_KEY_ID = "hogehoge=hog"
import { Enveror } from 'enveror';

const enveror = new Enveror();
const stage = enveror.get('STAGE').as_string();
console.log(stage);

const cloud_api_key_id = enveror.get('CLOUD').get('API_KEY_ID').as_string();
// const cloud_api_key_id = enveror.get('CLOUD.API_KEY_ID').as_string(); // same as above
console.log(cloud_api_key_id);

env format

default loaded file is ./.enveror.

You can write environment variables as following format.

STAGE = "dev"
CLOUD.API_KEY_ID = "hogehoge=hog"
CLOUD.API_SECRET_KEY = "fug+;l[l;uw:er\-0-63-096z,nxvcafuga"
CLOUD.STORAGE.IMAGES = "myimages"
CORS_ORIGINS =["http://localhost:3000"]
WORKER_COUNT =4
TIMEOUT_SECONDS= 2.3
EMPTY_STRING=" "
SAMPLE = true

above file is interpretted as following object

{
  "STAGE": "dev",
  "CLOUD": {
    "API_KEY_ID": "hogehoge=hog",
    "API_SECRET_KEY": "fug+;l[l;uw:er\\-0-63-096z,nxvcafuga",
    "STORAGE": { "IMAGES": "myimages" }
  },
  "API": { "CORS_ORIGIN": ["http://localhost:3000"] },
  "WORKER_COUNT": 4,
  "TIMEOUT_SECONDS": 2.3,
  "EMPTY_STRING": " ",
  "SAMPLE": true
}

points

  • "" is interpretted as string var
  • [] is interpretted as array
  • . is interpretted as nested key

supported types

typeassertion
stringas_string()
numberas_number()
booleanas_boolean()
string[]as_array_string()
number[]as_array_number()

in additional, string in nested object is accessable by .get("X").get("Y").as_string() or .get("X.Y").as_string()

API

Constructor

You can pass options into Enveror().

new Enveror({
  routes = ['./.enveror.local'], // additional enveror file
  disableDefault = false, // disable loading `./.enveror`
});

Methods

methodargsreturn
get(key:string):Valuekey is key of env varValue of key
keys():string[]keys in 1-depth
to_object():objectloaded object
to_string():stringstringified loaded object

Value Methods

Value is value container for environment variable(s).

it has type-assertion and children getter.

methodargsreturn
as_any(): ValueTypeget var without assertion
as_string(): stringassertion for string
as_number(): numberassertion for number
as_boolean(): booleanassertion for boolean
as_array_string(): string[]assertion for string[]
as_array_number(): number[]assertion for number[]
get(key: string): Valuekey is key of childchild Value of key
keys(): string[]keys of children

internal type-checker for variable

KEY = "VAR", KEY= "VAR", KEY ="VAR" and KEY="VAR" is same meaning in this library.

/^"._"$/           => "string"
/^[0-9]+$/         => "number"
/^[0-9]+.[0-9]+$/  => "number"
/^(true|false)$/   => "boolean"
/^\[._\]$/         => "array"
not matched        => Error