@notross/dotenv-config 2.0.0 → 2.1.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 +3 -2
- package/cjs/client.d.ts.map +1 -1
- package/cjs/client.js +20 -4
- 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 +20 -4
- 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,11 @@ 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
|
-
export declare const env: () => EnvCollection;
|
|
13
|
+
export declare const env: (prefix?: string) => EnvVars | EnvCollection;
|
|
13
14
|
export declare const getEnv: (prefix: string) => EnvVars;
|
|
14
15
|
export {};
|
|
15
16
|
//# 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;AACjC,eAAO,MAAM,GAAG,GACd,SAAS,MAAM,4BAGgB,CAAA;AACjC,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,KAA2B,OAAO,CAAA"}
|
package/cjs/client.js
CHANGED
|
@@ -14,21 +14,37 @@ class State {
|
|
|
14
14
|
}
|
|
15
15
|
get(prefix) {
|
|
16
16
|
if (prefix) {
|
|
17
|
-
return this.
|
|
17
|
+
return this.findPrefixed(prefix);
|
|
18
18
|
}
|
|
19
19
|
else {
|
|
20
20
|
return this.collections;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
prefix = prefix.endsWith('_') ? prefix : prefix + '_';
|
|
23
|
+
findPrefixWithUnderscore(prefix) {
|
|
25
24
|
const filtered = (0, utils_1.filterByPrefix)(this.vars, prefix);
|
|
26
25
|
const paramaterized = (0, utils_1.injectParams)(filtered);
|
|
27
26
|
return paramaterized;
|
|
28
27
|
}
|
|
28
|
+
findPrefixed(prefix) {
|
|
29
|
+
if (prefix.endsWith('_')) {
|
|
30
|
+
return this.findPrefixWithUnderscore(prefix);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const withUnderscore = (0, utils_1.filterByPrefix)(this.vars, `${prefix}_`);
|
|
34
|
+
const sansUnderscore = (0, utils_1.filterByPrefix)(this.vars, prefix);
|
|
35
|
+
const [results] = [
|
|
36
|
+
sansUnderscore,
|
|
37
|
+
withUnderscore,
|
|
38
|
+
].sort((a, b) => Object.keys(b).length - Object.keys(a).length);
|
|
39
|
+
const paramaterized = (0, utils_1.injectParams)(results);
|
|
40
|
+
return paramaterized;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
29
43
|
}
|
|
30
44
|
exports.client = new State();
|
|
31
|
-
const env = () =>
|
|
45
|
+
const env = (prefix) => typeof prefix === 'undefined'
|
|
46
|
+
? exports.client.env()
|
|
47
|
+
: exports.client.env(prefix);
|
|
32
48
|
exports.env = env;
|
|
33
49
|
const getEnv = (prefix) => exports.client.env(prefix);
|
|
34
50
|
exports.getEnv = getEnv;
|
package/cjs/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;AAAA,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,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;AAAA,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;AAC1B,MAAM,GAAG,GAAG,CACjB,MAAe,EACf,EAAE,CAAC,OAAO,MAAM,KAAK,WAAW;IAChC,CAAC,CAAC,cAAM,CAAC,GAAG,EAAmB;IAC/B,CAAC,CAAC,cAAM,CAAC,GAAG,CAAC,MAAM,CAAY,CAAA;AAJpB,QAAA,GAAG,OAIiB;AAC1B,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,cAAM,CAAC,GAAG,CAAC,MAAM,CAAY,CAAA;AAA1D,QAAA,MAAM,UAAoD"}
|
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,36 @@ 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
|
-
export const env = () =>
|
|
42
|
+
export const env = (prefix) => typeof prefix === 'undefined'
|
|
43
|
+
? client.env()
|
|
44
|
+
: client.env(prefix);
|
|
29
45
|
export const getEnv = (prefix) => client.env(prefix);
|
|
30
46
|
//# 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;AACjC,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,MAAe,EACf,EAAE,CAAC,OAAO,MAAM,KAAK,WAAW;IAChC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAmB;IAC/B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAY,CAAA;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAY,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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"}
|