@calvear/env 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.
Files changed (97) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE.md +19 -0
  3. package/README.md +659 -0
  4. package/arguments.d.ts +22 -0
  5. package/arguments.d.ts.map +1 -0
  6. package/arguments.js +105 -0
  7. package/arguments.js.map +1 -0
  8. package/commands/env.command.d.ts +8 -0
  9. package/commands/env.command.d.ts.map +1 -0
  10. package/commands/env.command.js +63 -0
  11. package/commands/env.command.js.map +1 -0
  12. package/commands/export.command.d.ts +8 -0
  13. package/commands/export.command.d.ts.map +1 -0
  14. package/commands/export.command.js +51 -0
  15. package/commands/export.command.js.map +1 -0
  16. package/commands/index.d.ts +6 -0
  17. package/commands/index.d.ts.map +1 -0
  18. package/commands/index.js +14 -0
  19. package/commands/index.js.map +1 -0
  20. package/commands/pull.command.d.ts +7 -0
  21. package/commands/pull.command.d.ts.map +1 -0
  22. package/commands/pull.command.js +39 -0
  23. package/commands/pull.command.js.map +1 -0
  24. package/commands/push.command.d.ts +7 -0
  25. package/commands/push.command.d.ts.map +1 -0
  26. package/commands/push.command.js +38 -0
  27. package/commands/push.command.js.map +1 -0
  28. package/commands/schema.command.d.ts +4 -0
  29. package/commands/schema.command.d.ts.map +1 -0
  30. package/commands/schema.command.js +18 -0
  31. package/commands/schema.command.js.map +1 -0
  32. package/exec.d.ts +3 -0
  33. package/exec.d.ts.map +1 -0
  34. package/exec.js +142 -0
  35. package/exec.js.map +1 -0
  36. package/index.d.ts +4 -0
  37. package/index.d.ts.map +1 -0
  38. package/index.js +20 -0
  39. package/index.js.map +1 -0
  40. package/interfaces/index.d.ts +2 -0
  41. package/interfaces/index.d.ts.map +1 -0
  42. package/interfaces/index.js +18 -0
  43. package/interfaces/index.js.map +1 -0
  44. package/interfaces/loader.interface.d.ts +21 -0
  45. package/interfaces/loader.interface.d.ts.map +1 -0
  46. package/interfaces/loader.interface.js +3 -0
  47. package/interfaces/loader.interface.js.map +1 -0
  48. package/main.d.ts +3 -0
  49. package/main.d.ts.map +1 -0
  50. package/main.js +6 -0
  51. package/main.js.map +1 -0
  52. package/package.json +85 -0
  53. package/providers/app-settings.provider.d.ts +9 -0
  54. package/providers/app-settings.provider.d.ts.map +1 -0
  55. package/providers/app-settings.provider.js +50 -0
  56. package/providers/app-settings.provider.js.map +1 -0
  57. package/providers/index.d.ts +8 -0
  58. package/providers/index.d.ts.map +1 -0
  59. package/providers/index.js +28 -0
  60. package/providers/index.js.map +1 -0
  61. package/providers/package-json.provider.d.ts +8 -0
  62. package/providers/package-json.provider.d.ts.map +1 -0
  63. package/providers/package-json.provider.js +29 -0
  64. package/providers/package-json.provider.js.map +1 -0
  65. package/providers/secrets.provider.d.ts +9 -0
  66. package/providers/secrets.provider.d.ts.map +1 -0
  67. package/providers/secrets.provider.js +43 -0
  68. package/providers/secrets.provider.js.map +1 -0
  69. package/tsconfig.build.tsbuildinfo +1 -0
  70. package/utils/command.util.d.ts +12 -0
  71. package/utils/command.util.d.ts.map +1 -0
  72. package/utils/command.util.js +135 -0
  73. package/utils/command.util.js.map +1 -0
  74. package/utils/index.d.ts +7 -0
  75. package/utils/index.d.ts.map +1 -0
  76. package/utils/index.js +23 -0
  77. package/utils/index.js.map +1 -0
  78. package/utils/interpolate.util.d.ts +4 -0
  79. package/utils/interpolate.util.d.ts.map +1 -0
  80. package/utils/interpolate.util.js +33 -0
  81. package/utils/interpolate.util.js.map +1 -0
  82. package/utils/json.util.d.ts +5 -0
  83. package/utils/json.util.d.ts.map +1 -0
  84. package/utils/json.util.js +47 -0
  85. package/utils/json.util.js.map +1 -0
  86. package/utils/logger.d.ts +3 -0
  87. package/utils/logger.d.ts.map +1 -0
  88. package/utils/logger.js +18 -0
  89. package/utils/logger.js.map +1 -0
  90. package/utils/normalize.util.d.ts +2 -0
  91. package/utils/normalize.util.d.ts.map +1 -0
  92. package/utils/normalize.util.js +44 -0
  93. package/utils/normalize.util.js.map +1 -0
  94. package/utils/schema.util.d.ts +7 -0
  95. package/utils/schema.util.d.ts.map +1 -0
  96. package/utils/schema.util.js +51 -0
  97. package/utils/schema.util.js.map +1 -0
package/arguments.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ import { Arguments, Options } from 'yargs';
2
+ import { EnvProviderConfig } from './interfaces';
3
+ export interface CommandArguments extends Arguments {
4
+ env: string;
5
+ modes?: string[];
6
+ app?: Record<string, unknown>;
7
+ schema?: Record<string, object>;
8
+ providers: EnvProviderConfig[];
9
+ nestingDelimiter: string;
10
+ arrayDescomposition: boolean;
11
+ root: string;
12
+ configFile: string;
13
+ schemaFile: string;
14
+ resolve: 'merge' | 'override';
15
+ nullable: boolean;
16
+ detectFormat: boolean;
17
+ logLevel?: 'silly' | 'trace' | 'debug' | 'info' | 'warn' | 'error';
18
+ logMaskAnyRegEx?: string[];
19
+ logMaskValuesOfKeys?: string[];
20
+ }
21
+ export declare const args: Record<keyof CommandArguments, Options>;
22
+ //# sourceMappingURL=arguments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arguments.d.ts","sourceRoot":"","sources":["../src/arguments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AASjD,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,GAAG,UAAU,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACnE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAClC;AAGD,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,gBAAgB,EAAE,OAAO,CA+FxD,CAAC"}
package/arguments.js ADDED
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.args = void 0;
4
+ const providers_1 = require("./providers");
5
+ const GROUPS = {
6
+ LOG_WORKSPACE: 'Logger Options',
7
+ GROUP_WORKSPACE: 'Workspace Options',
8
+ JSON_SCHEMA_WORKSPACE: 'JSON Schema Options'
9
+ };
10
+ exports.args = {
11
+ env: {
12
+ alias: 'e',
13
+ type: 'string',
14
+ requiresArg: true,
15
+ demandOption: true,
16
+ describe: 'Environment for load, i.e. dev, prod'
17
+ },
18
+ modes: {
19
+ alias: 'm',
20
+ type: 'array',
21
+ describe: 'Execution modes, i.e. debug, test'
22
+ },
23
+ providers: {
24
+ type: 'array',
25
+ hidden: true,
26
+ default: providers_1.IntegratedProviderConfig,
27
+ describe: 'Providers handling variables loading'
28
+ },
29
+ nestingDelimiter: {
30
+ alias: 'nd',
31
+ type: 'string',
32
+ default: '__',
33
+ describe: 'Nesting level delimiter for flatten, i.e. { l1: { l2: "value" } } turns into { l1__l2: "value" }'
34
+ },
35
+ arrayDescomposition: {
36
+ alias: 'arrDesc',
37
+ type: 'boolean',
38
+ default: false,
39
+ describe: 'Whether serialize or break down arrays'
40
+ },
41
+ root: {
42
+ group: GROUPS.GROUP_WORKSPACE,
43
+ type: 'string',
44
+ default: 'env',
45
+ describe: 'Default environment folder path'
46
+ },
47
+ configFile: {
48
+ group: GROUPS.GROUP_WORKSPACE,
49
+ alias: 'c',
50
+ type: 'string',
51
+ default: '[[root]]/env.config.json',
52
+ describe: 'Config JSON file path'
53
+ },
54
+ schemaFile: {
55
+ group: GROUPS.GROUP_WORKSPACE,
56
+ alias: ['s', 'schema'],
57
+ type: 'string',
58
+ default: '[[root]]/env.schema.json',
59
+ describe: 'Environment Schema JSON file path'
60
+ },
61
+ resolve: {
62
+ group: GROUPS.JSON_SCHEMA_WORKSPACE,
63
+ alias: 'r',
64
+ type: 'string',
65
+ default: 'merge',
66
+ choices: ['merge', 'override'],
67
+ describe: 'Whether merges new schema or override'
68
+ },
69
+ nullable: {
70
+ group: GROUPS.JSON_SCHEMA_WORKSPACE,
71
+ alias: 'null',
72
+ type: 'boolean',
73
+ default: true,
74
+ describe: 'Whether variables are nullable'
75
+ },
76
+ detectFormat: {
77
+ group: GROUPS.JSON_SCHEMA_WORKSPACE,
78
+ alias: 'df',
79
+ type: 'boolean',
80
+ default: true,
81
+ describe: 'Whether format of strings variables are included in schema'
82
+ },
83
+ logLevel: {
84
+ group: GROUPS.LOG_WORKSPACE,
85
+ alias: 'log',
86
+ type: 'string',
87
+ default: 'info',
88
+ choices: ['silly', 'trace', 'debug', 'info', 'warn', 'error']
89
+ },
90
+ logMaskAnyRegEx: {
91
+ group: GROUPS.LOG_WORKSPACE,
92
+ alias: 'mrx',
93
+ type: 'array',
94
+ hidden: true,
95
+ default: []
96
+ },
97
+ logMaskValuesOfKeys: {
98
+ group: GROUPS.LOG_WORKSPACE,
99
+ alias: 'mvk',
100
+ type: 'array',
101
+ hidden: true,
102
+ default: []
103
+ }
104
+ };
105
+ //# sourceMappingURL=arguments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arguments.js","sourceRoot":"","sources":["../src/arguments.ts"],"names":[],"mappings":";;;AAEA,2CAAuD;AAEvD,MAAM,MAAM,GAAG;IACX,aAAa,EAAE,gBAAgB;IAC/B,eAAe,EAAE,mBAAmB;IACpC,qBAAqB,EAAE,qBAAqB;CAC/C,CAAC;AAsBW,QAAA,IAAI,GAA4C;IACzD,GAAG,EAAE;QACD,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,sCAAsC;KACnD;IACD,KAAK,EAAE;QACH,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,mCAAmC;KAChD;IACD,SAAS,EAAE;QACP,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,oCAAwB;QACjC,QAAQ,EAAE,sCAAsC;KACnD;IACD,gBAAgB,EAAE;QACd,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,IAAI;QACb,QAAQ,EACJ,kGAAkG;KACzG;IACD,mBAAmB,EAAE;QACjB,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,wCAAwC;KACrD;IACD,IAAI,EAAE;QACF,KAAK,EAAE,MAAM,CAAC,eAAe;QAC7B,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,iCAAiC;KAC9C;IACD,UAAU,EAAE;QACR,KAAK,EAAE,MAAM,CAAC,eAAe;QAC7B,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,uBAAuB;KACpC;IACD,UAAU,EAAE;QACR,KAAK,EAAE,MAAM,CAAC,eAAe;QAC7B,KAAK,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC;QACtB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,0BAA0B;QACnC,QAAQ,EAAE,mCAAmC;KAChD;IACD,OAAO,EAAE;QACL,KAAK,EAAE,MAAM,CAAC,qBAAqB;QACnC,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;QAC9B,QAAQ,EAAE,uCAAuC;KACpD;IACD,QAAQ,EAAE;QACN,KAAK,EAAE,MAAM,CAAC,qBAAqB;QACnC,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,gCAAgC;KAC7C;IACD,YAAY,EAAE;QACV,KAAK,EAAE,MAAM,CAAC,qBAAqB;QACnC,KAAK,EAAE,IAAI;QACX,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,4DAA4D;KACzE;IACD,QAAQ,EAAE;QACN,KAAK,EAAE,MAAM,CAAC,aAAa;QAC3B,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;KAChE;IACD,eAAe,EAAE;QACb,KAAK,EAAE,MAAM,CAAC,aAAa;QAC3B,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,EAAE;KACd;IACD,mBAAmB,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC,aAAa;QAC3B,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,EAAE;KACd;CACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { CommandModule } from 'yargs';
2
+ import { CommandArguments } from '../arguments';
3
+ export interface EnvCommandArguments extends CommandArguments {
4
+ subcmd: string[];
5
+ schemaValidate: boolean;
6
+ }
7
+ export declare const envCommand: CommandModule<any, EnvCommandArguments>;
8
+ //# sourceMappingURL=env.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.command.d.ts","sourceRoot":"","sources":["../../src/commands/env.command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAQhD,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAGzD,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,cAAc,EAAE,OAAO,CAAC;CAC3B;AAQD,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,GAAG,EAAE,mBAAmB,CA+E9D,CAAC"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.envCommand = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const merge_deep_1 = __importDefault(require("merge-deep"));
9
+ const child_process_1 = require("child_process");
10
+ const utils_1 = require("../utils");
11
+ exports.envCommand = {
12
+ command: '$0 [options..] [: <subcmd> :]',
13
+ describe: 'Inject environment variables into process',
14
+ builder: (builder) => {
15
+ builder
16
+ .options({
17
+ subcmd: {
18
+ type: 'array',
19
+ describe: 'Command for inject environment variables'
20
+ },
21
+ schemaValidate: {
22
+ alias: 'validate',
23
+ type: 'boolean',
24
+ default: true,
25
+ describe: 'Whether validates variables using JSON schema'
26
+ }
27
+ })
28
+ .example('env -e dev -m test unit : npm test', 'Loads "dev" environment variables, in "test" and "unit" modes, for "npm start" command')
29
+ .example('env -e dev -m debug : npm start : -c my-config.json', 'Loads "dev" environment variables, in "debug" mode, for "npm test" command and custom config file')
30
+ .example('env -e dev -m debug -c [[root]]/[[env]].env.json : npm start', 'Loads custom config file placed in root folder and named same as the env')
31
+ .check((argv) => {
32
+ if (argv._.length === 0 && !argv.subcmd) {
33
+ throw new Error('No one subcommand provided for exec surrounded by :');
34
+ }
35
+ return true;
36
+ });
37
+ return builder;
38
+ },
39
+ handler: async ({ providers, ...argv }) => {
40
+ const results = await (0, utils_1.loadVariablesFromProviders)(providers, argv);
41
+ let env = (0, merge_deep_1.default)({ NODE_ENV: 'development' }, ...(0, utils_1.flatAndValidateResults)(results, argv));
42
+ env = (0, utils_1.normalize)(env, argv.nestingDelimiter, argv.arrayDescomposition);
43
+ utils_1.logger.debug('environment loaded:', env);
44
+ process.env = {
45
+ ...process.env,
46
+ ...env
47
+ };
48
+ utils_1.logger.info('executing command >', chalk_1.default.bold.yellow(argv.subcmd.join(' ')));
49
+ (0, child_process_1.spawn)(argv.subcmd[0], argv.subcmd.slice(1), {
50
+ stdio: 'inherit',
51
+ shell: true
52
+ }).on('exit', (code) => {
53
+ if (code === 0) {
54
+ utils_1.logger.info('process finished successfully');
55
+ }
56
+ else {
57
+ utils_1.logger.error('process finished with error');
58
+ throw new Error('process finished with error');
59
+ }
60
+ });
61
+ }
62
+ };
63
+ //# sourceMappingURL=env.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.command.js","sourceRoot":"","sources":["../../src/commands/env.command.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,4DAA+B;AAC/B,iDAAsC;AAGtC,oCAKkB;AAgBL,QAAA,UAAU,GAA4C;IAC/D,OAAO,EAAE,+BAA+B;IACxC,QAAQ,EAAE,2CAA2C;IACrD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;QACjB,OAAO;aACF,OAAO,CAAC;YACL,MAAM,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,0CAA0C;aACvD;YACD,cAAc,EAAE;gBACZ,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,+CAA+C;aAC5D;SACJ,CAAC;aACD,OAAO,CACJ,oCAAoC,EACpC,wFAAwF,CAC3F;aACA,OAAO,CACJ,qDAAqD,EACrD,mGAAmG,CACtG;aACA,OAAO,CACJ,8DAA8D,EAC9D,0EAA0E,CAC7E;aACA,KAAK,CAAC,CAAC,IAAI,EAAW,EAAE;YAErB,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBACrC,MAAM,IAAI,KAAK,CACX,qDAAqD,CACxD,CAAC;aACL;YAED,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QAEP,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,MAAM,IAAA,kCAA0B,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAElE,IAAI,GAAG,GAAG,IAAA,oBAAK,EACX,EAAE,QAAQ,EAAE,aAAa,EAAE,EAC3B,GAAG,IAAA,8BAAsB,EAAC,OAAO,EAAE,IAAI,CAAC,CAC3C,CAAC;QAGF,GAAG,GAAG,IAAA,iBAAS,EAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAEtE,cAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QAGzC,OAAO,CAAC,GAAG,GAAG;YACV,GAAG,OAAO,CAAC,GAAG;YACd,GAAG,GAAG;SACT,CAAC;QAEF,cAAM,CAAC,IAAI,CACP,qBAAqB,EACrB,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAC3C,CAAC;QAEF,IAAA,qBAAK,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACxC,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI;SACd,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACnB,IAAI,IAAI,KAAK,CAAC,EAAE;gBACZ,cAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;aAChD;iBAAM;gBACH,cAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAE5C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAClD;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { CommandModule } from 'yargs';
2
+ import { CommandArguments } from '../arguments';
3
+ export interface ExportCommandArguments extends CommandArguments {
4
+ format: 'json' | 'dotenv';
5
+ uri: string;
6
+ }
7
+ export declare const exportCommand: CommandModule<any, ExportCommandArguments>;
8
+ //# sourceMappingURL=export.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.command.d.ts","sourceRoot":"","sources":["../../src/commands/export.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAUhD,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC5D,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE1B,GAAG,EAAE,MAAM,CAAC;CACf;AAQD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE,sBAAsB,CA2DpE,CAAC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.exportCommand = void 0;
7
+ const merge_deep_1 = __importDefault(require("merge-deep"));
8
+ const utils_1 = require("../utils");
9
+ exports.exportCommand = {
10
+ command: 'export [options..]',
11
+ describe: 'Export unified environment variables to a file from providers',
12
+ builder: (builder) => {
13
+ builder
14
+ .options({
15
+ uri: {
16
+ alias: ['u', 'p', 'path'],
17
+ type: 'string',
18
+ default: '.env',
19
+ describe: 'Uri for export file with variables'
20
+ },
21
+ format: {
22
+ alias: 'f',
23
+ type: 'string',
24
+ default: 'dotenv',
25
+ choices: ['json', 'dotenv'],
26
+ describe: 'Format for export variables'
27
+ }
28
+ })
29
+ .example('env export -e dev -m build', 'Exports "dev" variables to a dotenv file at root as ".env"')
30
+ .example('env export -e prod -m build -f json --uri [[env]].env.json', 'Exports "prod" variables to a json file at root as "prod.env.json"');
31
+ return builder;
32
+ },
33
+ handler: async ({ providers, ...argv }) => {
34
+ const results = await (0, utils_1.loadVariablesFromProviders)(providers, argv);
35
+ let env = (0, merge_deep_1.default)({ NODE_ENV: 'development' }, ...(0, utils_1.flatAndValidateResults)(results, argv));
36
+ env = (0, utils_1.normalize)(env, argv.nestingDelimiter, argv.arrayDescomposition);
37
+ utils_1.logger.debug('environment loaded:', env);
38
+ const { format, uri } = argv;
39
+ switch (format) {
40
+ case 'dotenv':
41
+ await (0, utils_1.writeEnvFromJson)(uri, env, true);
42
+ break;
43
+ case 'json':
44
+ await (0, utils_1.writeJson)(uri, env, true);
45
+ break;
46
+ default:
47
+ utils_1.logger.error(`format ${format} not recognized`);
48
+ }
49
+ }
50
+ };
51
+ //# sourceMappingURL=export.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.command.js","sourceRoot":"","sources":["../../src/commands/export.command.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA+B;AAG/B,oCAOkB;AAcL,QAAA,aAAa,GAA+C;IACrE,OAAO,EAAE,oBAAoB;IAC7B,QAAQ,EAAE,+DAA+D;IACzE,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;QACjB,OAAO;aACF,OAAO,CAAC;YACL,GAAG,EAAE;gBACD,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC;gBACzB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE,oCAAoC;aACjD;YACD,MAAM,EAAE;gBACJ,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,QAAQ;gBACjB,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;gBAC3B,QAAQ,EAAE,6BAA6B;aAC1C;SACJ,CAAC;aACD,OAAO,CACJ,4BAA4B,EAC5B,4DAA4D,CAC/D;aACA,OAAO,CACJ,4DAA4D,EAC5D,oEAAoE,CACvE,CAAC;QAEN,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,MAAM,IAAA,kCAA0B,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAElE,IAAI,GAAG,GAAG,IAAA,oBAAK,EACX,EAAE,QAAQ,EAAE,aAAa,EAAE,EAC3B,GAAG,IAAA,8BAAsB,EAAC,OAAO,EAAE,IAAI,CAAC,CAC3C,CAAC;QAGF,GAAG,GAAG,IAAA,iBAAS,EAAC,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAEtE,cAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QAEzC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAE7B,QAAQ,MAAM,EAAE;YACZ,KAAK,QAAQ;gBACT,MAAM,IAAA,wBAAgB,EAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBACvC,MAAM;YAEV,KAAK,MAAM;gBACP,MAAM,IAAA,iBAAS,EAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChC,MAAM;YAEV;gBACI,cAAM,CAAC,KAAK,CAAC,UAAU,MAAM,iBAAiB,CAAC,CAAC;SACvD;IACL,CAAC;CACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { envCommand } from './env.command';
2
+ export { exportCommand } from './export.command';
3
+ export { pullCommand } from './pull.command';
4
+ export { pushCommand } from './push.command';
5
+ export { schemaCommand } from './schema.command';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.schemaCommand = exports.pushCommand = exports.pullCommand = exports.exportCommand = exports.envCommand = void 0;
4
+ var env_command_1 = require("./env.command");
5
+ Object.defineProperty(exports, "envCommand", { enumerable: true, get: function () { return env_command_1.envCommand; } });
6
+ var export_command_1 = require("./export.command");
7
+ Object.defineProperty(exports, "exportCommand", { enumerable: true, get: function () { return export_command_1.exportCommand; } });
8
+ var pull_command_1 = require("./pull.command");
9
+ Object.defineProperty(exports, "pullCommand", { enumerable: true, get: function () { return pull_command_1.pullCommand; } });
10
+ var push_command_1 = require("./push.command");
11
+ Object.defineProperty(exports, "pushCommand", { enumerable: true, get: function () { return push_command_1.pushCommand; } });
12
+ var schema_command_1 = require("./schema.command");
13
+ Object.defineProperty(exports, "schemaCommand", { enumerable: true, get: function () { return schema_command_1.schemaCommand; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA"}
@@ -0,0 +1,7 @@
1
+ import { CommandModule } from 'yargs';
2
+ import { CommandArguments } from '../arguments';
3
+ export interface PullCommandArguments extends CommandArguments {
4
+ overwrite: boolean;
5
+ }
6
+ export declare const pullCommand: CommandModule<any, PullCommandArguments>;
7
+ //# sourceMappingURL=pull.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.command.d.ts","sourceRoot":"","sources":["../../src/commands/pull.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAE1D,SAAS,EAAE,OAAO,CAAC;CACtB;AAOD,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,GAAG,EAAE,oBAAoB,CAoChE,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.pullCommand = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const utils_1 = require("../utils");
9
+ exports.pullCommand = {
10
+ command: 'pull [options..]',
11
+ describe: 'Pulls environment variables from providers',
12
+ builder: (builder) => {
13
+ builder
14
+ .options({
15
+ overwrite: {
16
+ alias: 'o',
17
+ type: 'boolean',
18
+ default: false,
19
+ describe: 'Overwrite local variables'
20
+ }
21
+ })
22
+ .example('env pull -e dev', 'Download "dev" environment secrets')
23
+ .example('env pull -e dev -o', 'Download and overwrite (if any exists) "dev" environment secrets');
24
+ return builder;
25
+ },
26
+ handler: async ({ providers, ...argv }) => {
27
+ const promises = await Promise.all(providers
28
+ .filter(({ handler: { pull } }) => !!pull)
29
+ .map(({ handler: { key, pull }, config }) => {
30
+ utils_1.logger.silly(`pulling from ${chalk_1.default.yellow(key)} provider`);
31
+ return pull(argv, config);
32
+ }));
33
+ if (promises.length > 0)
34
+ utils_1.logger.info('environment variables pulled successfully');
35
+ else
36
+ utils_1.logger.warn('no providers for pull variables');
37
+ }
38
+ };
39
+ //# sourceMappingURL=pull.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.command.js","sourceRoot":"","sources":["../../src/commands/pull.command.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,oCAAkC;AAYrB,QAAA,WAAW,GAA6C;IACjE,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE,4CAA4C;IACtD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;QACjB,OAAO;aACF,OAAO,CAAC;YACL,SAAS,EAAE;gBACP,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,2BAA2B;aACxC;SACJ,CAAC;aACD,OAAO,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;aAChE,OAAO,CACJ,oBAAoB,EACpB,kEAAkE,CACrE,CAAC;QAEN,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QACtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,SAAS;aACJ,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACzC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACxC,cAAM,CAAC,KAAK,CAAC,gBAAgB,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAE3D,OAAO,IAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CACT,CAAC;QAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YACnB,cAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;;YACxD,cAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACxD,CAAC;CACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { CommandModule } from 'yargs';
2
+ import { CommandArguments } from '../arguments';
3
+ export interface PushCommandArguments extends CommandArguments {
4
+ force: boolean;
5
+ }
6
+ export declare const pushCommand: CommandModule<any, PushCommandArguments>;
7
+ //# sourceMappingURL=push.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.command.d.ts","sourceRoot":"","sources":["../../src/commands/push.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAE1D,KAAK,EAAE,OAAO,CAAC;CAClB;AAOD,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC,GAAG,EAAE,oBAAoB,CAgChE,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.pushCommand = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const utils_1 = require("../utils");
9
+ exports.pushCommand = {
10
+ command: 'push [options..]',
11
+ describe: 'Pushes environment variables to providers store',
12
+ builder: (builder) => {
13
+ builder
14
+ .options({
15
+ force: {
16
+ alias: 'f',
17
+ type: 'boolean',
18
+ default: false,
19
+ describe: 'Force push for secrets'
20
+ }
21
+ })
22
+ .example('env push -e dev', 'Download "dev" environment secrets');
23
+ return builder;
24
+ },
25
+ handler: async ({ providers, ...argv }) => {
26
+ const promises = await Promise.all(providers
27
+ .filter(({ handler: { push } }) => !!push)
28
+ .map(({ handler: { key, push }, config }) => {
29
+ utils_1.logger.silly(`pushing to ${chalk_1.default.yellow(key)} provider`);
30
+ return push(argv, config);
31
+ }));
32
+ if (promises.length > 0)
33
+ utils_1.logger.info('environment variables pushed successfully');
34
+ else
35
+ utils_1.logger.warn('no providers for push variables');
36
+ }
37
+ };
38
+ //# sourceMappingURL=push.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.command.js","sourceRoot":"","sources":["../../src/commands/push.command.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,oCAAkC;AAYrB,QAAA,WAAW,GAA6C;IACjE,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE,iDAAiD;IAC3D,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;QACjB,OAAO;aACF,OAAO,CAAC;YACL,KAAK,EAAE;gBACH,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,wBAAwB;aACrC;SACJ,CAAC;aACD,OAAO,CAAC,iBAAiB,EAAE,oCAAoC,CAAC,CAAC;QAEtE,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;QACtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,SAAS;aACJ,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACzC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACxC,cAAM,CAAC,KAAK,CAAC,cAAc,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAEzD,OAAO,IAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CACT,CAAC;QAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YACnB,cAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;;YACxD,cAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACxD,CAAC;CACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { CommandModule } from 'yargs';
2
+ import { CommandArguments } from '../arguments';
3
+ export declare const schemaCommand: CommandModule<any, CommandArguments>;
4
+ //# sourceMappingURL=schema.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.command.d.ts","sourceRoot":"","sources":["../../src/commands/schema.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAYhD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAiB9D,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.schemaCommand = void 0;
4
+ const utils_1 = require("../utils");
5
+ exports.schemaCommand = {
6
+ command: 'schema [options..]',
7
+ describe: 'Generates validation schema from providers',
8
+ builder: (builder) => {
9
+ return builder.example('env schema --generate -e dev -m debug unit', 'Updates JSON schema');
10
+ },
11
+ handler: async (argv) => {
12
+ const results = await (0, utils_1.loadVariablesFromProviders)(argv.providers, argv);
13
+ const schema = await (0, utils_1.generateSchemaFrom)(results, argv);
14
+ utils_1.logger.silly('schema:', schema);
15
+ utils_1.logger.info('schema updated successfully');
16
+ }
17
+ };
18
+ //# sourceMappingURL=schema.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.command.js","sourceRoot":"","sources":["../../src/commands/schema.command.ts"],"names":[],"mappings":";;;AAEA,oCAIkB;AAOL,QAAA,aAAa,GAAyC;IAC/D,OAAO,EAAE,oBAAoB;IAC7B,QAAQ,EAAE,4CAA4C;IACtD,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE;QACjB,OAAO,OAAO,CAAC,OAAO,CAClB,4CAA4C,EAC5C,qBAAqB,CACxB,CAAC;IACN,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,OAAO,GAAG,MAAM,IAAA,kCAA0B,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAEvE,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAkB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAEvD,cAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChC,cAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC/C,CAAC;CACJ,CAAC"}
package/exec.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export declare function exec(rawArgv: string[]): Promise<void>;
3
+ //# sourceMappingURL=exec.d.ts.map
package/exec.d.ts.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":";AAuFA,wBAAsB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,iBA0D3C"}
package/exec.js ADDED
@@ -0,0 +1,142 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ var __importDefault = (this && this.__importDefault) || function (mod) {
27
+ return (mod && mod.__esModule) ? mod : { "default": mod };
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ exports.exec = void 0;
31
+ const chalk_1 = __importDefault(require("chalk"));
32
+ const yargs_parser_1 = __importDefault(require("yargs-parser"));
33
+ const yargs_1 = __importDefault(require("yargs"));
34
+ const providers_1 = require("./providers");
35
+ const arguments_1 = require("./arguments");
36
+ const commands_1 = require("./commands");
37
+ const utils_1 = require("./utils");
38
+ async function preloadConfig(rawArgv, parser, delimiters) {
39
+ var _a, _b, _c, _d;
40
+ const preloadedArgv = (0, yargs_parser_1.default)(rawArgv, {
41
+ configuration: parser,
42
+ boolean: ['help'],
43
+ string: ['root', 'env', 'configFile', 'schemaFile', 'logLevel'],
44
+ array: ['modes', 'logMaskAnyRegEx', 'logMaskValuesOfKeys'],
45
+ alias: {
46
+ env: arguments_1.args.env.alias,
47
+ modes: arguments_1.args.modes.alias,
48
+ configFile: arguments_1.args.configFile.alias,
49
+ logLevel: arguments_1.args.logLevel.alias,
50
+ logMaskAnyRegEx: arguments_1.args.logMaskAnyRegEx.alias,
51
+ logMaskValuesOfKeys: arguments_1.args.logMaskValuesOfKeys.alias
52
+ },
53
+ default: {
54
+ root: arguments_1.args.root.default,
55
+ configFile: arguments_1.args.configFile.default
56
+ }
57
+ });
58
+ await (0, utils_1.loadConfigFile)(preloadedArgv, delimiters);
59
+ (_a = preloadedArgv.logLevel) !== null && _a !== void 0 ? _a : (preloadedArgv.logLevel = arguments_1.args.logLevel.default);
60
+ (_b = preloadedArgv.logMaskAnyRegEx) !== null && _b !== void 0 ? _b : (preloadedArgv.logMaskAnyRegEx = arguments_1.args.logMaskAnyRegEx.default);
61
+ (_c = preloadedArgv.logMaskValuesOfKeys) !== null && _c !== void 0 ? _c : (preloadedArgv.logMaskValuesOfKeys = arguments_1.args.logMaskValuesOfKeys.default);
62
+ (_d = preloadedArgv.providers) !== null && _d !== void 0 ? _d : (preloadedArgv.providers = arguments_1.args.providers.default);
63
+ const { logLevel, logMaskAnyRegEx, logMaskValuesOfKeys } = preloadedArgv;
64
+ utils_1.logger.setSettings({
65
+ minLevel: logLevel,
66
+ maskAnyRegEx: logMaskAnyRegEx,
67
+ maskValuesOfKeys: logMaskValuesOfKeys
68
+ });
69
+ return preloadedArgv;
70
+ }
71
+ async function exec(rawArgv) {
72
+ const { config, version } = await Promise.resolve().then(() => __importStar(require(`${__dirname}/package.json`)));
73
+ const subcommand = (0, utils_1.getSubcommand)(rawArgv, config.delimiters.subcommand);
74
+ const preloadedArgv = await preloadConfig(rawArgv, config.parser, config.delimiters.template);
75
+ const { env, modes, providers, help } = preloadedArgv;
76
+ if (help)
77
+ build(rawArgv, preloadedArgv, subcommand, config, version);
78
+ if (!Array.isArray(providers) || providers.length === 0) {
79
+ utils_1.logger.error('no providers found');
80
+ throw new Error('no providers found');
81
+ }
82
+ utils_1.logger.info(`loading ${chalk_1.default.bold.underline.green(env)} environment` +
83
+ (modes ? ` in ${chalk_1.default.bold.magenta(modes.join('+'))} mode` : ''));
84
+ for (const provider of providers) {
85
+ try {
86
+ utils_1.logger.debug(`using ${chalk_1.default.yellow(provider.path)} provider`);
87
+ if (provider.type === 'integrated') {
88
+ provider.handler = providers_1.IntegratedProviders[provider.path];
89
+ }
90
+ else {
91
+ const { default: module } = await Promise.resolve().then(() => __importStar(require(provider.type === 'module'
92
+ ? provider.path
93
+ : (0, utils_1.resolvePath)(provider.path))));
94
+ provider.handler = module;
95
+ }
96
+ }
97
+ catch (_a) {
98
+ utils_1.logger.error(`${chalk_1.default.yellow(provider.path)} provider not found or not compatible`);
99
+ throw new Error(`${provider.path} provider not found or not compatible`);
100
+ }
101
+ }
102
+ build(rawArgv, preloadedArgv, subcommand, config, version);
103
+ }
104
+ exports.exec = exec;
105
+ function build(rawArgv, preloadedArgv, subcommand, config, version = 'unknown') {
106
+ const builder = (0, yargs_1.default)(rawArgv)
107
+ .strict()
108
+ .scriptName('env')
109
+ .version(version)
110
+ .detectLocale(false)
111
+ .showHelpOnFail(false)
112
+ .parserConfiguration(config.parser)
113
+ .usage('Usage: $0 [command] [options..] [: subcmd [:]] [options..]')
114
+ .options(arguments_1.args)
115
+ .middleware(async (argv) => {
116
+ if ((subcommand === null || subcommand === void 0 ? void 0 : subcommand.length) > 0)
117
+ argv.subcmd = subcommand;
118
+ Object.assign(argv, preloadedArgv);
119
+ utils_1.logger.silly('interpolating arguments surrounded by', chalk_1.default.bold.yellow(config.delimiters.template[0], config.delimiters.template[1]));
120
+ (0, utils_1.interpolateJson)(argv, argv, config.delimiters.template);
121
+ utils_1.logger.silly('config loaded:', argv);
122
+ [argv.app, argv.schema] = await Promise.all([
123
+ (0, utils_1.loadProjectInfo)(),
124
+ (0, utils_1.loadSchemaFile)(argv, config.delimiters.template)
125
+ ]);
126
+ if (argv.schemaValidate) {
127
+ argv.schemaValidate = !!argv.schema;
128
+ if (argv.schemaValidate)
129
+ utils_1.logger.silly('schema loaded:', argv.schema);
130
+ }
131
+ });
132
+ builder.command(commands_1.envCommand);
133
+ builder.command(commands_1.exportCommand);
134
+ builder.command(commands_1.pullCommand);
135
+ builder.command(commands_1.pushCommand);
136
+ builder.command(commands_1.schemaCommand);
137
+ const { providers } = preloadedArgv;
138
+ for (const { handler } of providers)
139
+ (handler === null || handler === void 0 ? void 0 : handler.builder) && handler.builder(builder);
140
+ builder.parse();
141
+ }
142
+ //# sourceMappingURL=exec.js.map
package/exec.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"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"}