@notross/dotenv-config 0.0.1 → 1.0.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/cjs/index.d.ts +2 -1
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +10 -42
- package/cjs/index.js.map +1 -1
- package/cjs/utils.d.ts +4 -0
- package/cjs/utils.d.ts.map +1 -0
- package/cjs/utils.js +52 -0
- package/cjs/utils.js.map +1 -0
- package/esm/index.js +8 -41
- package/esm/index.js.map +1 -1
- package/esm/utils.js +47 -0
- package/esm/utils.js.map +1 -0
- package/package.json +1 -1
package/cjs/index.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ type BuildEnvOptions = {
|
|
|
2
2
|
filename?: string;
|
|
3
3
|
prefix?: string;
|
|
4
4
|
};
|
|
5
|
+
declare function autoEnv(prefix?: string): Record<string, Record<string, string>>;
|
|
5
6
|
declare function buildEnv({ filename, prefix, }: BuildEnvOptions): Record<string, string>;
|
|
6
7
|
export default buildEnv;
|
|
7
|
-
export { buildEnv };
|
|
8
|
+
export { autoEnv, buildEnv };
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
package/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,iBAAS,OAAO,CACd,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAIxC;AAED,iBAAS,QAAQ,CAAC,EAChB,QAAQ,EACR,MAAM,GACP,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU1C;AAED,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/cjs/index.js
CHANGED
|
@@ -3,9 +3,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.autoEnv = autoEnv;
|
|
6
7
|
exports.buildEnv = buildEnv;
|
|
7
8
|
const path_1 = __importDefault(require("path"));
|
|
8
9
|
const dotenv_1 = require("dotenv");
|
|
10
|
+
const utils_1 = require("./utils");
|
|
11
|
+
function autoEnv(prefix) {
|
|
12
|
+
const vars = {};
|
|
13
|
+
(0, dotenv_1.config)({ processEnv: vars });
|
|
14
|
+
return (0, utils_1.autoPrefix)(vars, prefix);
|
|
15
|
+
}
|
|
16
|
+
;
|
|
9
17
|
function buildEnv({ filename, prefix, }) {
|
|
10
18
|
const envVars = {};
|
|
11
19
|
const filepath = filename && path_1.default.resolve(process.cwd(), filename);
|
|
@@ -13,49 +21,9 @@ function buildEnv({ filename, prefix, }) {
|
|
|
13
21
|
...(filepath ? { path: filepath } : {}),
|
|
14
22
|
processEnv: envVars,
|
|
15
23
|
});
|
|
16
|
-
const filtered = filterByPrefix(envVars, prefix);
|
|
17
|
-
const paramaterized = injectParams(filtered);
|
|
24
|
+
const filtered = (0, utils_1.filterByPrefix)(envVars, prefix);
|
|
25
|
+
const paramaterized = (0, utils_1.injectParams)(filtered);
|
|
18
26
|
return paramaterized;
|
|
19
27
|
}
|
|
20
|
-
function rekey(key, prefix = '') {
|
|
21
|
-
const trim = prefix.length;
|
|
22
|
-
key = key.substring(trim);
|
|
23
|
-
return key.toLowerCase().split('_')
|
|
24
|
-
.reduce((acc, str, i) => {
|
|
25
|
-
if (i === 0)
|
|
26
|
-
return str;
|
|
27
|
-
return acc + str.substring(0, 1).toUpperCase() + str.substring(1);
|
|
28
|
-
}, '');
|
|
29
|
-
}
|
|
30
|
-
function filterByPrefix(env, prefix) {
|
|
31
|
-
return Object.entries(env)
|
|
32
|
-
.filter(([key]) => prefix ? key.startsWith(prefix) : true).reduce((acc, [key, value]) => ({
|
|
33
|
-
...acc,
|
|
34
|
-
[rekey(key, prefix)]: value,
|
|
35
|
-
}), {});
|
|
36
|
-
}
|
|
37
|
-
function findParameters([key, value]) {
|
|
38
|
-
const params = Array.from(value.matchAll(/{{([^}]+)}}/g))
|
|
39
|
-
.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
|
|
40
|
-
return {
|
|
41
|
-
key,
|
|
42
|
-
value,
|
|
43
|
-
...(Object.keys(params).length ? { params } : {}),
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
function injectParams(env) {
|
|
47
|
-
const values = Object.entries(env).map(findParameters);
|
|
48
|
-
return values.reduce((acc, { key, value, params }) => {
|
|
49
|
-
if (!params) {
|
|
50
|
-
return acc;
|
|
51
|
-
}
|
|
52
|
-
const valueWithParams = Object.entries(params)
|
|
53
|
-
.reduce((paramAcc, [pkey, pval]) => {
|
|
54
|
-
const injection = env[pval];
|
|
55
|
-
return paramAcc.replace(pkey, injection);
|
|
56
|
-
}, value);
|
|
57
|
-
return { ...acc, [key]: valueWithParams };
|
|
58
|
-
}, env);
|
|
59
|
-
}
|
|
60
28
|
exports.default = buildEnv;
|
|
61
29
|
//# sourceMappingURL=index.js.map
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAiCS,0BAAO;AAAE,4BAAQ;AAjC1B,gDAAwB;AACxB,mCAAgC;AAChC,mCAAmE;AAOnE,SAAS,OAAO,CACd,MAAe;IAEf,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,IAAA,eAAM,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,OAAO,IAAA,kBAAU,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC;AAAA,CAAC;AAEF,SAAS,QAAQ,CAAC,EAChB,QAAQ,EACR,MAAM,GACU;IAChB,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,QAAQ,IAAI,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnE,IAAA,eAAM,EAAC;QACL,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAA,sBAAc,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAC;IAC7C,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,kBAAe,QAAQ,CAAC"}
|
package/cjs/utils.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function autoPrefix(vars: Record<string, string>, prefix?: string): Record<string, Record<string, string>>;
|
|
2
|
+
export declare function filterByPrefix(env: Record<string, string>, prefix?: string): Record<string, string>;
|
|
3
|
+
export declare function injectParams(env: Record<string, string>): Record<string, string>;
|
|
4
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAWxC;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxB;AAkCD,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBxB"}
|
package/cjs/utils.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.autoPrefix = autoPrefix;
|
|
4
|
+
exports.filterByPrefix = filterByPrefix;
|
|
5
|
+
exports.injectParams = injectParams;
|
|
6
|
+
function autoPrefix(vars, prefix) {
|
|
7
|
+
return Array(...new Set(Object.keys(vars).map((k) => k.split('_').shift()))).reduce((acc, prefix) => ({
|
|
8
|
+
...acc,
|
|
9
|
+
[prefix.toLowerCase()]: injectParams(filterByPrefix(vars, `${prefix}_`)),
|
|
10
|
+
}), {});
|
|
11
|
+
}
|
|
12
|
+
function filterByPrefix(env, prefix) {
|
|
13
|
+
return Object.entries(env)
|
|
14
|
+
.filter(([key]) => prefix ? key.startsWith(prefix) : true).reduce((acc, [key, value]) => ({
|
|
15
|
+
...acc,
|
|
16
|
+
[rekey(key, prefix)]: value,
|
|
17
|
+
}), {});
|
|
18
|
+
}
|
|
19
|
+
function rekey(key, prefix = '') {
|
|
20
|
+
const trim = prefix.length;
|
|
21
|
+
key = key.substring(trim);
|
|
22
|
+
return key.toLowerCase().split('_')
|
|
23
|
+
.reduce((acc, str, i) => {
|
|
24
|
+
if (i === 0)
|
|
25
|
+
return str;
|
|
26
|
+
return acc + str.substring(0, 1).toUpperCase() + str.substring(1);
|
|
27
|
+
}, '');
|
|
28
|
+
}
|
|
29
|
+
function findParameters([key, value]) {
|
|
30
|
+
const params = Array.from(value.matchAll(/{{([^}]+)}}/g))
|
|
31
|
+
.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
|
|
32
|
+
return {
|
|
33
|
+
key,
|
|
34
|
+
value,
|
|
35
|
+
...(Object.keys(params).length ? { params } : {}),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function injectParams(env) {
|
|
39
|
+
const values = Object.entries(env).map(findParameters);
|
|
40
|
+
return values.reduce((acc, { key, value, params }) => {
|
|
41
|
+
if (!params) {
|
|
42
|
+
return acc;
|
|
43
|
+
}
|
|
44
|
+
const valueWithParams = Object.entries(params)
|
|
45
|
+
.reduce((paramAcc, [pkey, pval]) => {
|
|
46
|
+
const injection = env[pval];
|
|
47
|
+
return paramAcc.replace(pkey, injection);
|
|
48
|
+
}, value);
|
|
49
|
+
return { ...acc, [key]: valueWithParams };
|
|
50
|
+
}, env);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=utils.js.map
|
package/cjs/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/esm/index.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { config } from 'dotenv';
|
|
3
|
+
import { autoPrefix, filterByPrefix, injectParams } from './utils';
|
|
4
|
+
function autoEnv(prefix) {
|
|
5
|
+
const vars = {};
|
|
6
|
+
config({ processEnv: vars });
|
|
7
|
+
return autoPrefix(vars, prefix);
|
|
8
|
+
}
|
|
9
|
+
;
|
|
3
10
|
function buildEnv({ filename, prefix, }) {
|
|
4
11
|
const envVars = {};
|
|
5
12
|
const filepath = filename && path.resolve(process.cwd(), filename);
|
|
@@ -11,46 +18,6 @@ function buildEnv({ filename, prefix, }) {
|
|
|
11
18
|
const paramaterized = injectParams(filtered);
|
|
12
19
|
return paramaterized;
|
|
13
20
|
}
|
|
14
|
-
function rekey(key, prefix = '') {
|
|
15
|
-
const trim = prefix.length;
|
|
16
|
-
key = key.substring(trim);
|
|
17
|
-
return key.toLowerCase().split('_')
|
|
18
|
-
.reduce((acc, str, i) => {
|
|
19
|
-
if (i === 0)
|
|
20
|
-
return str;
|
|
21
|
-
return acc + str.substring(0, 1).toUpperCase() + str.substring(1);
|
|
22
|
-
}, '');
|
|
23
|
-
}
|
|
24
|
-
function filterByPrefix(env, prefix) {
|
|
25
|
-
return Object.entries(env)
|
|
26
|
-
.filter(([key]) => prefix ? key.startsWith(prefix) : true).reduce((acc, [key, value]) => ({
|
|
27
|
-
...acc,
|
|
28
|
-
[rekey(key, prefix)]: value,
|
|
29
|
-
}), {});
|
|
30
|
-
}
|
|
31
|
-
function findParameters([key, value]) {
|
|
32
|
-
const params = Array.from(value.matchAll(/{{([^}]+)}}/g))
|
|
33
|
-
.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
|
|
34
|
-
return {
|
|
35
|
-
key,
|
|
36
|
-
value,
|
|
37
|
-
...(Object.keys(params).length ? { params } : {}),
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
function injectParams(env) {
|
|
41
|
-
const values = Object.entries(env).map(findParameters);
|
|
42
|
-
return values.reduce((acc, { key, value, params }) => {
|
|
43
|
-
if (!params) {
|
|
44
|
-
return acc;
|
|
45
|
-
}
|
|
46
|
-
const valueWithParams = Object.entries(params)
|
|
47
|
-
.reduce((paramAcc, [pkey, pval]) => {
|
|
48
|
-
const injection = env[pval];
|
|
49
|
-
return paramAcc.replace(pkey, injection);
|
|
50
|
-
}, value);
|
|
51
|
-
return { ...acc, [key]: valueWithParams };
|
|
52
|
-
}, env);
|
|
53
|
-
}
|
|
54
21
|
export default buildEnv;
|
|
55
|
-
export { buildEnv };
|
|
22
|
+
export { autoEnv, buildEnv };
|
|
56
23
|
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAOnE,SAAS,OAAO,CACd,MAAe;IAEf,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC;AAAA,CAAC;AAEF,SAAS,QAAQ,CAAC,EAChB,QAAQ,EACR,MAAM,GACU;IAChB,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnE,MAAM,CAAC;QACL,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC7C,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/esm/utils.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export function autoPrefix(vars, prefix) {
|
|
2
|
+
return Array(...new Set(Object.keys(vars).map((k) => k.split('_').shift()))).reduce((acc, prefix) => ({
|
|
3
|
+
...acc,
|
|
4
|
+
[prefix.toLowerCase()]: injectParams(filterByPrefix(vars, `${prefix}_`)),
|
|
5
|
+
}), {});
|
|
6
|
+
}
|
|
7
|
+
export function filterByPrefix(env, prefix) {
|
|
8
|
+
return Object.entries(env)
|
|
9
|
+
.filter(([key]) => prefix ? key.startsWith(prefix) : true).reduce((acc, [key, value]) => ({
|
|
10
|
+
...acc,
|
|
11
|
+
[rekey(key, prefix)]: value,
|
|
12
|
+
}), {});
|
|
13
|
+
}
|
|
14
|
+
function rekey(key, prefix = '') {
|
|
15
|
+
const trim = prefix.length;
|
|
16
|
+
key = key.substring(trim);
|
|
17
|
+
return key.toLowerCase().split('_')
|
|
18
|
+
.reduce((acc, str, i) => {
|
|
19
|
+
if (i === 0)
|
|
20
|
+
return str;
|
|
21
|
+
return acc + str.substring(0, 1).toUpperCase() + str.substring(1);
|
|
22
|
+
}, '');
|
|
23
|
+
}
|
|
24
|
+
function findParameters([key, value]) {
|
|
25
|
+
const params = Array.from(value.matchAll(/{{([^}]+)}}/g))
|
|
26
|
+
.reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
|
|
27
|
+
return {
|
|
28
|
+
key,
|
|
29
|
+
value,
|
|
30
|
+
...(Object.keys(params).length ? { params } : {}),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function injectParams(env) {
|
|
34
|
+
const values = Object.entries(env).map(findParameters);
|
|
35
|
+
return values.reduce((acc, { key, value, params }) => {
|
|
36
|
+
if (!params) {
|
|
37
|
+
return acc;
|
|
38
|
+
}
|
|
39
|
+
const valueWithParams = Object.entries(params)
|
|
40
|
+
.reduce((paramAcc, [pkey, pval]) => {
|
|
41
|
+
const injection = env[pval];
|
|
42
|
+
return paramAcc.replace(pkey, injection);
|
|
43
|
+
}, value);
|
|
44
|
+
return { ...acc, [key]: valueWithParams };
|
|
45
|
+
}, env);
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=utils.js.map
|
package/esm/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|