@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 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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,iBAAS,QAAQ,CAAC,EAChB,QAAQ,EACR,MAAM,GACP,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU1C;AAqED,eAAe,QAAQ,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,CAAC"}
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":"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"}
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
@@ -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":"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"}
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,UAAU,CACxB,IAA4B,EAC5B,MAAe;IAEf,OAAO,KAAK,CAAC,GAAG,IAAI,GAAG,CACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CACnB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAY,CACtC,CACF,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1B,GAAG,GAAG;QACN,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,YAAY,CAClC,cAAc,CAAC,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,CACnC;KACF,CAAC,EAAE,EAAE,CAAC,CAAC;AACV,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,GAA2B,EAC3B,MAAe;IAEf,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;SACvB,MAAM,CACL,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAClD,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/B,GAAG,GAAG;QACN,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK;KAC5B,CAAC,EAAE,EAAE,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,KAAK,CACZ,GAAW,EACX,SAAiB,EAAE;IAEnB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3B,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;SAChC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QACxB,OAAO,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAQD,SAAS,cAAc,CACrB,CAAC,GAAG,EAAE,KAAK,CAAmB;IAE9B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;SACtD,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEjE,OAAO;QACL,GAAG;QACH,KAAK;QACL,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,GAA2B;IAE3B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,GAAG,CAAC;QACb,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aAC3C,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;YACjC,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5B,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC,EAAE,KAAK,CAAC,CAAC;QAEZ,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5C,CAAC,EACH,GAAG,CAAC,CAAC;AACP,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@notross/dotenv-config",
3
- "version": "0.0.1",
3
+ "version": "1.0.0",
4
4
  "main": "./cjs/index.js",
5
5
  "module": "./esm/index.js",
6
6
  "types": "./cjs/index.d.ts",