@notross/dotenv-config 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +109 -22
- package/cjs/client.d.ts +6 -4
- package/cjs/client.d.ts.map +1 -1
- package/cjs/client.js +27 -6
- package/cjs/client.js.map +1 -1
- package/cjs/utils.d.ts.map +1 -1
- package/cjs/utils.js +22 -4
- package/cjs/utils.js.map +1 -1
- package/esm/client.js +27 -5
- package/esm/client.js.map +1 -1
- package/esm/utils.js +22 -4
- package/esm/utils.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
A simple client that makes environment variables available as objects.
|
|
4
4
|
|
|
5
|
+
Features:
|
|
6
|
+
- Access ENV as an object
|
|
7
|
+
- Access specific variable groups by passing a prefix
|
|
8
|
+
- Combine ENV variables via templating
|
|
9
|
+
|
|
5
10
|
## Installation
|
|
6
11
|
```bash
|
|
7
12
|
# NPM
|
|
@@ -11,53 +16,135 @@ npm install @notross/dotenv-config
|
|
|
11
16
|
yarn add @notross/dotenv-config
|
|
12
17
|
```
|
|
13
18
|
|
|
14
|
-
##
|
|
15
|
-
|
|
19
|
+
## Quickstart
|
|
20
|
+
#### 1. Set up your `.env` as usual
|
|
16
21
|
```properties
|
|
17
|
-
#
|
|
22
|
+
# .env
|
|
23
|
+
|
|
24
|
+
MONGO_DB=test
|
|
25
|
+
MONGO_USERNAME=admin
|
|
26
|
+
MONGO_PASSWORD=secret
|
|
27
|
+
MONGO_HOST=localhost
|
|
28
|
+
MONGO_PORT=27017
|
|
29
|
+
|
|
18
30
|
ALPACA_API_KEY_ID=XXXXXXXXXXXXXXXXXXXX
|
|
19
31
|
ALPACA_API_SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
#### 2. Access your ENV variables using camel-cased keys from the `env(...)` method
|
|
35
|
+
```ts
|
|
36
|
+
// database.ts
|
|
37
|
+
|
|
38
|
+
import { env } from '@notross/dotenv-config'
|
|
39
|
+
|
|
40
|
+
const { mongo } = env() // returns each .env entry
|
|
41
|
+
// prefixed with "MONGO_"
|
|
42
|
+
const {
|
|
43
|
+
username, // MONGO_USERNAME
|
|
44
|
+
password, // MONGO_PASSWORD
|
|
45
|
+
host, // MONGO_HOST
|
|
46
|
+
port, // MONGO_PORT
|
|
47
|
+
} = mongo
|
|
48
|
+
|
|
49
|
+
const mongoURI = `mongodb://${username}:${password}@${host}:${port}`
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## How it works
|
|
53
|
+
Let's take our example `.env` file:
|
|
54
|
+
|
|
55
|
+
```properties
|
|
56
|
+
# .env
|
|
20
57
|
|
|
21
|
-
# MongoDB
|
|
22
58
|
MONGO_DB=test
|
|
23
59
|
MONGO_USERNAME=admin
|
|
24
60
|
MONGO_PASSWORD=secret
|
|
25
61
|
MONGO_HOST=localhost
|
|
26
62
|
MONGO_PORT=27017
|
|
63
|
+
|
|
64
|
+
ALPACA_API_KEY_ID=XXXXXXXXXXXXXXXXXXXX
|
|
65
|
+
ALPACA_API_SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Each variable name is separated into two parts:
|
|
69
|
+
- Prefix
|
|
70
|
+
- Key
|
|
71
|
+
|
|
72
|
+
The **prefix** will be accessible as a lowercase key of the `env(...)` return object:
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
env().alpaca
|
|
27
76
|
```
|
|
28
77
|
|
|
78
|
+
The keys will be camel-cased, accessible through the `env(...)` object's **prefix**:
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
const { apiKeyId, apiSecretKey } = env().alpaca
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
> ⚠️ Prefixes and camel-casing are only automatically detected if they are delineated by an underscore:
|
|
85
|
+
<br>
|
|
86
|
+
> `PREFIX_VARIABLE_NAME=value` --> `prefix: { variableName: 'value' }`
|
|
87
|
+
|
|
88
|
+
<br>
|
|
89
|
+
|
|
90
|
+
You may access various sets of ENV variables via prefix from the `env(...)` object:
|
|
91
|
+
|
|
29
92
|
```ts
|
|
30
|
-
|
|
93
|
+
const { alpaca, mongo } = env()
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Prefixes
|
|
31
97
|
|
|
32
|
-
|
|
98
|
+
You may access specific variables by passing the prefix to the `env(...)` method
|
|
99
|
+
|
|
100
|
+
```properties
|
|
101
|
+
# .env
|
|
33
102
|
|
|
34
|
-
|
|
35
|
-
|
|
103
|
+
ALPACA_API_KEY_ID=XXXXXXXXXXXXXXXXXXXX
|
|
104
|
+
ALPACA_API_SECRET_KEY=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
36
105
|
```
|
|
37
106
|
|
|
38
107
|
```ts
|
|
39
|
-
//
|
|
40
|
-
import { mongoEnv } from './config';
|
|
108
|
+
// markets.ts
|
|
41
109
|
|
|
42
|
-
|
|
110
|
+
import { env } from '@notross/dotenv-config'
|
|
43
111
|
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
const
|
|
112
|
+
const { keyId, secretKey } = env('ALPACA_API')
|
|
113
|
+
|
|
114
|
+
const headers = new Headers({
|
|
115
|
+
'accept': 'application/json',
|
|
116
|
+
'APCA-API-KEY-ID', keyId,
|
|
117
|
+
'APCA-API-SECRET-KEY': secretKey,
|
|
118
|
+
})
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Templating
|
|
122
|
+
Templating provides an easy way to dynamically construct variables using existing ENV values.
|
|
123
|
+
|
|
124
|
+
Example
|
|
125
|
+
```properties
|
|
126
|
+
# .env
|
|
127
|
+
|
|
128
|
+
MONGO_USERNAME=admin
|
|
129
|
+
MONGO_PASSWORD=secret
|
|
130
|
+
MONGO_HOST=localhost
|
|
131
|
+
MONGO_PORT=27017
|
|
132
|
+
|
|
133
|
+
# Combine the MONGO_ variables to form a connection string
|
|
134
|
+
MONGO_URI=mongodb+srv://{{username}}:{{password}}@{{host}}:{{port}}
|
|
47
135
|
```
|
|
48
136
|
|
|
49
137
|
```ts
|
|
50
|
-
//
|
|
51
|
-
|
|
138
|
+
// database.ts
|
|
139
|
+
|
|
140
|
+
import { env } from '@notross/dotenv-config'
|
|
141
|
+
import { MongoClient } from 'mongodb'
|
|
52
142
|
|
|
53
|
-
const
|
|
54
|
-
accept: 'application/json',
|
|
55
|
-
'APCA-API-KEY-ID': alpacaEnv.keyId,
|
|
56
|
-
'APCA-API-SECRET-KEY': alpacaEnv.secretKey,
|
|
57
|
-
};
|
|
143
|
+
const { mongo: { uri } } = env()
|
|
58
144
|
|
|
59
|
-
|
|
145
|
+
const client = new MongoClient(uri)
|
|
60
146
|
```
|
|
147
|
+
|
|
61
148
|
---
|
|
62
149
|
## License
|
|
63
150
|
MIT © [@notross](https://rosslibby.com)
|
package/cjs/client.d.ts
CHANGED
|
@@ -6,10 +6,12 @@ declare class State {
|
|
|
6
6
|
env: (prefix?: string) => EnvCollection | EnvVars;
|
|
7
7
|
constructor();
|
|
8
8
|
private get;
|
|
9
|
-
private
|
|
9
|
+
private findPrefixWithUnderscore;
|
|
10
|
+
private findPrefixed;
|
|
10
11
|
}
|
|
11
12
|
export declare const client: State;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
declare function env(): EnvCollection;
|
|
14
|
+
declare function env(prefix: string): EnvVars;
|
|
15
|
+
declare const getEnv: (prefix: string) => EnvVars;
|
|
16
|
+
export { env, getEnv };
|
|
15
17
|
//# sourceMappingURL=client.d.ts.map
|
package/cjs/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGhD,cAAM,KAAK;IACF,IAAI,EAAE,OAAO,CAAK;IAClB,WAAW,EAAE,aAAa,CAAK;IAC/B,cAAc,EAAE,aAAa,CAAK;IAClC,GAAG,YAOW,MAAM,KAAG,aAAa,GAAG,OAAO,CAPrB;;IAOhC,OAAO,CAAC,GAAG;IAQX,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGhD,cAAM,KAAK;IACF,IAAI,EAAE,OAAO,CAAK;IAClB,WAAW,EAAE,aAAa,CAAK;IAC/B,cAAc,EAAE,aAAa,CAAK;IAClC,GAAG,YAOW,MAAM,KAAG,aAAa,GAAG,OAAO,CAPrB;;IAOhC,OAAO,CAAC,GAAG;IAQX,OAAO,CAAC,wBAAwB;IAMhC,OAAO,CAAC,YAAY;CAcrB;AAED,eAAO,MAAM,MAAM,OAAc,CAAA;AAEjC,iBAAS,GAAG,IAAI,aAAa,CAAA;AAC7B,iBAAS,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;AAUrC,QAAA,MAAM,MAAM,GAAI,QAAQ,MAAM,KAA2B,OAAO,CAAA;AAEhE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA"}
|
package/cjs/client.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getEnv = exports.
|
|
3
|
+
exports.getEnv = exports.client = void 0;
|
|
4
|
+
exports.env = env;
|
|
4
5
|
const dotenv_1 = require("dotenv");
|
|
5
6
|
const utils_1 = require("./utils");
|
|
6
7
|
class State {
|
|
@@ -14,22 +15,42 @@ class State {
|
|
|
14
15
|
}
|
|
15
16
|
get(prefix) {
|
|
16
17
|
if (prefix) {
|
|
17
|
-
return this.
|
|
18
|
+
return this.findPrefixed(prefix);
|
|
18
19
|
}
|
|
19
20
|
else {
|
|
20
21
|
return this.collections;
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
prefix = prefix.endsWith('_') ? prefix : prefix + '_';
|
|
24
|
+
findPrefixWithUnderscore(prefix) {
|
|
25
25
|
const filtered = (0, utils_1.filterByPrefix)(this.vars, prefix);
|
|
26
26
|
const paramaterized = (0, utils_1.injectParams)(filtered);
|
|
27
27
|
return paramaterized;
|
|
28
28
|
}
|
|
29
|
+
findPrefixed(prefix) {
|
|
30
|
+
if (prefix.endsWith('_')) {
|
|
31
|
+
return this.findPrefixWithUnderscore(prefix);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const withUnderscore = (0, utils_1.filterByPrefix)(this.vars, `${prefix}_`);
|
|
35
|
+
const sansUnderscore = (0, utils_1.filterByPrefix)(this.vars, prefix);
|
|
36
|
+
const [results] = [
|
|
37
|
+
sansUnderscore,
|
|
38
|
+
withUnderscore,
|
|
39
|
+
].sort((a, b) => Object.keys(b).length - Object.keys(a).length);
|
|
40
|
+
const paramaterized = (0, utils_1.injectParams)(results);
|
|
41
|
+
return paramaterized;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
29
44
|
}
|
|
30
45
|
exports.client = new State();
|
|
31
|
-
|
|
32
|
-
|
|
46
|
+
function env(prefix) {
|
|
47
|
+
if (typeof prefix === 'undefined') {
|
|
48
|
+
return exports.client.env();
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
return exports.client.env(prefix);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
33
54
|
const getEnv = (prefix) => exports.client.env(prefix);
|
|
34
55
|
exports.getEnv = getEnv;
|
|
35
56
|
//# sourceMappingURL=client.js.map
|
package/cjs/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;AA4DS,kBAAG;AA5DZ,mCAA+B;AAE/B,mCAAkE;AAElE,MAAM,KAAK;IACF,IAAI,GAAY,EAAE,CAAA;IAClB,WAAW,GAAkB,EAAE,CAAA;IAC/B,cAAc,GAAkB,EAAE,CAAA;IAClC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEhC;QACE,IAAA,eAAM,EAAC,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACjC,IAAI,CAAC,WAAW,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAEO,GAAG,CAAC,MAAe;QACzB,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAY,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,WAA4B,CAAA;QAC1C,CAAC;IACH,CAAC;IAEO,wBAAwB,CAAC,MAAc;QAC7C,MAAM,QAAQ,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAClD,MAAM,aAAa,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAA;QAC5C,OAAO,aAAa,CAAA;IACtB,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAA;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,CAAA;YAC9D,MAAM,cAAc,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACxD,MAAM,CAAC,OAAO,CAAC,GAAG;gBAChB,cAAc;gBACd,cAAc;aACf,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAC/D,MAAM,aAAa,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAA;YAC3C,OAAO,aAAa,CAAA;QACtB,CAAC;IACH,CAAC;CACF;AAEY,QAAA,MAAM,GAAG,IAAI,KAAK,EAAE,CAAA;AAKjC,SAAS,GAAG,CAAC,MAAe;IAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,cAAM,CAAC,GAAG,EAAmB,CAAA;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,cAAM,CAAC,GAAG,CAAC,MAAM,CAAY,CAAA;IACtC,CAAC;AACH,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,cAAM,CAAC,GAAG,CAAC,MAAM,CAAY,CAAA;AAElD,wBAAM"}
|
package/cjs/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEjD,wBAAgB,UAAU,CACxB,IAAI,EAAE,OAAO,GACZ,aAAa,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEjD,wBAAgB,UAAU,CACxB,IAAI,EAAE,OAAO,GACZ,aAAa,CAyBf;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,OAAO,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAQT;AAuCD,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBxB"}
|
package/cjs/utils.js
CHANGED
|
@@ -4,10 +4,25 @@ exports.autoPrefix = autoPrefix;
|
|
|
4
4
|
exports.filterByPrefix = filterByPrefix;
|
|
5
5
|
exports.injectParams = injectParams;
|
|
6
6
|
function autoPrefix(vars) {
|
|
7
|
-
return Array(...new Set(Object.keys(vars).map((
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
return Array(...new Set(Object.keys(vars).map((key) => {
|
|
8
|
+
if (key.includes('_')) {
|
|
9
|
+
return key.split('_')[0] + '_';
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
return key;
|
|
13
|
+
}
|
|
14
|
+
})))
|
|
15
|
+
.reduce((acc, prefix) => {
|
|
16
|
+
const [key] = prefix.toLowerCase().split('_');
|
|
17
|
+
const value = !prefix.endsWith('_') &&
|
|
18
|
+
Object.keys(vars).includes(prefix)
|
|
19
|
+
? vars[prefix]
|
|
20
|
+
: injectParams(filterByPrefix(vars, prefix));
|
|
21
|
+
return {
|
|
22
|
+
...acc,
|
|
23
|
+
[key]: value,
|
|
24
|
+
};
|
|
25
|
+
}, {});
|
|
11
26
|
}
|
|
12
27
|
function filterByPrefix(env, prefix) {
|
|
13
28
|
return Object.entries(env)
|
|
@@ -19,6 +34,9 @@ function filterByPrefix(env, prefix) {
|
|
|
19
34
|
function rekey(key, prefix = '') {
|
|
20
35
|
const trim = prefix.length;
|
|
21
36
|
key = key.substring(trim);
|
|
37
|
+
if (key.startsWith('_')) {
|
|
38
|
+
key = key.substring(1);
|
|
39
|
+
}
|
|
22
40
|
return key.toLowerCase().split('_')
|
|
23
41
|
.reduce((acc, str, i) => {
|
|
24
42
|
if (i === 0)
|
package/cjs/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/esm/client.js
CHANGED
|
@@ -11,20 +11,42 @@ class State {
|
|
|
11
11
|
}
|
|
12
12
|
get(prefix) {
|
|
13
13
|
if (prefix) {
|
|
14
|
-
return this.
|
|
14
|
+
return this.findPrefixed(prefix);
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
17
|
return this.collections;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
prefix = prefix.endsWith('_') ? prefix : prefix + '_';
|
|
20
|
+
findPrefixWithUnderscore(prefix) {
|
|
22
21
|
const filtered = filterByPrefix(this.vars, prefix);
|
|
23
22
|
const paramaterized = injectParams(filtered);
|
|
24
23
|
return paramaterized;
|
|
25
24
|
}
|
|
25
|
+
findPrefixed(prefix) {
|
|
26
|
+
if (prefix.endsWith('_')) {
|
|
27
|
+
return this.findPrefixWithUnderscore(prefix);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
const withUnderscore = filterByPrefix(this.vars, `${prefix}_`);
|
|
31
|
+
const sansUnderscore = filterByPrefix(this.vars, prefix);
|
|
32
|
+
const [results] = [
|
|
33
|
+
sansUnderscore,
|
|
34
|
+
withUnderscore,
|
|
35
|
+
].sort((a, b) => Object.keys(b).length - Object.keys(a).length);
|
|
36
|
+
const paramaterized = injectParams(results);
|
|
37
|
+
return paramaterized;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
26
40
|
}
|
|
27
41
|
export const client = new State();
|
|
28
|
-
|
|
29
|
-
|
|
42
|
+
function env(prefix) {
|
|
43
|
+
if (typeof prefix === 'undefined') {
|
|
44
|
+
return client.env();
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return client.env(prefix);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const getEnv = (prefix) => client.env(prefix);
|
|
51
|
+
export { env, getEnv };
|
|
30
52
|
//# sourceMappingURL=client.js.map
|
package/esm/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAElE,MAAM,KAAK;IACF,IAAI,GAAY,EAAE,CAAA;IAClB,WAAW,GAAkB,EAAE,CAAA;IAC/B,cAAc,GAAkB,EAAE,CAAA;IAClC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEhC;QACE,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACjC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAEO,GAAG,CAAC,MAAe;QACzB,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAElE,MAAM,KAAK;IACF,IAAI,GAAY,EAAE,CAAA;IAClB,WAAW,GAAkB,EAAE,CAAA;IAC/B,cAAc,GAAkB,EAAE,CAAA;IAClC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEhC;QACE,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACjC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAEO,GAAG,CAAC,MAAe;QACzB,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAY,CAAA;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,WAA4B,CAAA;QAC1C,CAAC;IACH,CAAC;IAEO,wBAAwB,CAAC,MAAc;QAC7C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAClD,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;QAC5C,OAAO,aAAa,CAAA;IACtB,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAA;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,CAAA;YAC9D,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;YACxD,MAAM,CAAC,OAAO,CAAC,GAAG;gBAChB,cAAc;gBACd,cAAc;aACf,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAC/D,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;YAC3C,OAAO,aAAa,CAAA;QACtB,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,KAAK,EAAE,CAAA;AAKjC,SAAS,GAAG,CAAC,MAAe;IAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,GAAG,EAAmB,CAAA;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAY,CAAA;IACtC,CAAC;AACH,CAAC;AAED,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAY,CAAA;AAEhE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA"}
|
package/esm/utils.js
CHANGED
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
export function autoPrefix(vars) {
|
|
2
|
-
return Array(...new Set(Object.keys(vars).map((
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
return Array(...new Set(Object.keys(vars).map((key) => {
|
|
3
|
+
if (key.includes('_')) {
|
|
4
|
+
return key.split('_')[0] + '_';
|
|
5
|
+
}
|
|
6
|
+
else {
|
|
7
|
+
return key;
|
|
8
|
+
}
|
|
9
|
+
})))
|
|
10
|
+
.reduce((acc, prefix) => {
|
|
11
|
+
const [key] = prefix.toLowerCase().split('_');
|
|
12
|
+
const value = !prefix.endsWith('_') &&
|
|
13
|
+
Object.keys(vars).includes(prefix)
|
|
14
|
+
? vars[prefix]
|
|
15
|
+
: injectParams(filterByPrefix(vars, prefix));
|
|
16
|
+
return {
|
|
17
|
+
...acc,
|
|
18
|
+
[key]: value,
|
|
19
|
+
};
|
|
20
|
+
}, {});
|
|
6
21
|
}
|
|
7
22
|
export function filterByPrefix(env, prefix) {
|
|
8
23
|
return Object.entries(env)
|
|
@@ -14,6 +29,9 @@ export function filterByPrefix(env, prefix) {
|
|
|
14
29
|
function rekey(key, prefix = '') {
|
|
15
30
|
const trim = prefix.length;
|
|
16
31
|
key = key.substring(trim);
|
|
32
|
+
if (key.startsWith('_')) {
|
|
33
|
+
key = key.substring(1);
|
|
34
|
+
}
|
|
17
35
|
return key.toLowerCase().split('_')
|
|
18
36
|
.reduce((acc, str, i) => {
|
|
19
37
|
if (i === 0)
|
package/esm/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CACxB,IAAa;IAEb,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|