Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fernandolguevara/deno-envconfig
golang envconfig syntax for deno
https://github.com/fernandolguevara/deno-envconfig
deno env envconfig envvars typescript
Last synced: 25 days ago
JSON representation
golang envconfig syntax for deno
- Host: GitHub
- URL: https://github.com/fernandolguevara/deno-envconfig
- Owner: fernandolguevara
- License: mit
- Created: 2023-01-08T15:29:27.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-01-17T23:05:43.000Z (almost 2 years ago)
- Last Synced: 2024-10-28T12:17:16.927Z (about 2 months ago)
- Topics: deno, env, envconfig, envvars, typescript
- Language: TypeScript
- Homepage:
- Size: 19.5 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-deno - deno-envconfig - Configuration management utility. (Modules / Utils)
README
# envconfig
this library is based on
[envconfig](https://github.com/kelseyhightower/envconfig) for gloang## marks
### types
```md
- `string
- `bool
- `number
- `date
```### val
```md
- `required
- `max
- `min
```### modifiers
```
`env
``````ts
const env = { MYAPP_PORT: "3003" };
const envconfig = {
port: "`env:MYAPP_PORT`number`default:3000",
} as const;
const e = parse(env, envconfig);
console.log(e);
// output = { port: 3000 }
``````
`prefix
``````ts
const env = { MYAPP_PORT: "3003" };
const envconfig = {
port: "`prefix:MYAPP`number`default:3000",
} as const;
const e = parse(env, envconfig);
console.log(e);
// output = { port: 3000 }
``````
`prefix
``````ts
const env = { MYAPP_PORT_AWESOME: "3003" };
const envconfig = {
port: "`prefix:MYAPP`suffix:AWESOME`number`default:3000",
} as const;
const e = parse(env, envconfig);
console.log(e);
// output = { port: 3000 }
``````
`split_words
``````ts
const env = { MYAPP_PORT_AWESOME: "3003" };
const envconfig = {
myappPortAwesome: "`split_words`number`default:3000",
// lookup "myapp_port_awesome" on env object
} as const;
const e = parse(env, envconfig);
console.log(e);
// output = { port: 3000 }
``````
`split_values
``````ts
const env = { LIST: "1,2,3" };
const envconfig = {
list: "`split_value`number`default:4,5,6",
} as const;
const e = parse(env, envconfig);
console.log(e);
// output = { list: [1,2,3] }
``````
`uppercase
``````ts
const env = { super_key: "uppercase" };
const envconfig = {
super_key: "`uppercase`string",
} as const;
const e = parse(env, envconfig);
console.log(e);
// output = { super_key: "UPPERCASE" }
``````
`lowercase
``````ts
const env = { super_key: "LOWERCASE" };
const envconfig = {
super_key: "`lowercase`string",
} as const;
const e = parse(env, envconfig);
console.log(e);
// output = { super_key: "lowercase" }
```- `format
### Alises
```
- `string[] = `string`split_values
- `bool[] = `bool`split_values
- `date[] = `date`split_values
- `number[] = `number`split_values
```## Example
```ts
const _envconfig = {
log: {
level: "`string`default:DEBUG",
},
server: {
hostname: "`string`default:0.0.0.0",
port: "`default:3003`number",
},
app: {
name: "`string`default:my-app",
description: "`string`default:my awesome app",
contact: "`string`default:~",
version: "`string`default:~",
},
db: {
type: "`string`default:memory",
createSchema: "`bool`split_words`default:true",
dropSchemaIfExists: "`bool`split_words`default:true",
shared: {
__prefix: "",
hostname: "`string",
port: "`number`default:-1",
user: "`string",
password: "`string",
database: "`string",
},
sqlite: {
path: "`string`default::memory:",
},
mysql: {
connectionLimit: "`number`split_words`default:4",
},
postgres: {
applicationName: "`string`split_words`default:deno-nostr",
connectionsAttemps: "`number`split_words`default:1",
hostType: "`string`split_words`default:tcp",
tlsEnforce: "`bool`split_words`default:false",
maxIndexKeys: "`string`default:32",
},
},
} as const;
// using "as const" the parse function generates the output structure
// check the examples/envconfig.ts folderconst env = Deno.env.toObject();
const e = parse(env, _envconfig);
console.log(e);
``````js
{
log: { level: "DEBUG" },
server: { hostname: "0.0.0.0", port: 3003 },
app: {
name: "my-app",
description: "my awesome app",
contact: "~",
version: "~",
},
db: {
type: "memory",
createSchema: true,
dropSchemaIfExists: true,
shared: {
hostname: undefined,
port: -1,
user: undefined,
password: undefined,
database: undefined,
},
sqlite: { path: ":memory:" },
mysql: { connectionLimit: 4 },
postgres: {
applicationName: "my-app",
connectionsAttemps: 1,
hostType: "tcp",
tlsEnforce: false,
maxIndexKeys: "32",
},
},
}
```### IntelliSense
parse function generates the output structure when "as const" is used on the
configuration objectcheck the [examples/envconfig.ts](/examples/envconfig.ts) folder