@calvear/env 2.10.5 → 3.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 (108) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +97 -113
  3. package/arguments.d.ts +15 -15
  4. package/arguments.d.ts.map +1 -1
  5. package/arguments.js +142 -131
  6. package/arguments.js.map +1 -1
  7. package/commands/env.command.d.ts +8 -2
  8. package/commands/env.command.d.ts.map +1 -1
  9. package/commands/env.command.js +65 -80
  10. package/commands/env.command.js.map +1 -1
  11. package/commands/export.command.d.ts +9 -2
  12. package/commands/export.command.d.ts.map +1 -1
  13. package/commands/export.command.js +54 -56
  14. package/commands/export.command.js.map +1 -1
  15. package/commands/index.d.ts +5 -5
  16. package/commands/index.d.ts.map +1 -1
  17. package/commands/index.js +5 -14
  18. package/commands/pull.command.d.ts +6 -1
  19. package/commands/pull.command.d.ts.map +1 -1
  20. package/commands/pull.command.js +21 -37
  21. package/commands/pull.command.js.map +1 -1
  22. package/commands/push.command.d.ts +6 -1
  23. package/commands/push.command.d.ts.map +1 -1
  24. package/commands/push.command.js +21 -36
  25. package/commands/push.command.js.map +1 -1
  26. package/commands/schema.command.d.ts +6 -1
  27. package/commands/schema.command.d.ts.map +1 -1
  28. package/commands/schema.command.js +17 -17
  29. package/commands/schema.command.js.map +1 -1
  30. package/exec.d.ts +7 -1
  31. package/exec.d.ts.map +1 -1
  32. package/exec.js +88 -147
  33. package/exec.js.map +1 -1
  34. package/index.d.ts +3 -3
  35. package/index.d.ts.map +1 -1
  36. package/index.js +3 -20
  37. package/interfaces/index.d.ts +1 -1
  38. package/interfaces/index.d.ts.map +1 -1
  39. package/interfaces/loader.interface.d.ts +29 -3
  40. package/interfaces/loader.interface.d.ts.map +1 -1
  41. package/main.d.ts +0 -1
  42. package/main.js +7 -26
  43. package/main.js.map +1 -1
  44. package/package.json +53 -33
  45. package/providers/app-settings.provider.d.ts +5 -3
  46. package/providers/app-settings.provider.d.ts.map +1 -1
  47. package/providers/app-settings.provider.js +36 -51
  48. package/providers/app-settings.provider.js.map +1 -1
  49. package/providers/index.d.ts +2 -2
  50. package/providers/index.d.ts.map +1 -1
  51. package/providers/index.js +18 -28
  52. package/providers/index.js.map +1 -1
  53. package/providers/local.provider.d.ts +5 -2
  54. package/providers/local.provider.d.ts.map +1 -1
  55. package/providers/local.provider.js +27 -40
  56. package/providers/local.provider.js.map +1 -1
  57. package/providers/package-json.provider.d.ts +5 -2
  58. package/providers/package-json.provider.d.ts.map +1 -1
  59. package/providers/package-json.provider.js +26 -28
  60. package/providers/package-json.provider.js.map +1 -1
  61. package/providers/secrets.provider.d.ts +5 -2
  62. package/providers/secrets.provider.d.ts.map +1 -1
  63. package/providers/secrets.provider.js +24 -33
  64. package/providers/secrets.provider.js.map +1 -1
  65. package/schemas/env.schema.json +1 -0
  66. package/utils/argv.util.d.ts +10 -0
  67. package/utils/argv.util.d.ts.map +1 -0
  68. package/utils/argv.util.js +24 -0
  69. package/utils/argv.util.js.map +1 -0
  70. package/utils/command.util.d.ts +71 -4
  71. package/utils/command.util.d.ts.map +1 -1
  72. package/utils/command.util.js +60 -135
  73. package/utils/command.util.js.map +1 -1
  74. package/utils/index.d.ts +8 -6
  75. package/utils/index.d.ts.map +1 -1
  76. package/utils/index.js +9 -23
  77. package/utils/interpolate.util.d.ts +29 -1
  78. package/utils/interpolate.util.d.ts.map +1 -1
  79. package/utils/interpolate.util.js +12 -29
  80. package/utils/interpolate.util.js.map +1 -1
  81. package/utils/json.util.d.ts +41 -3
  82. package/utils/json.util.d.ts.map +1 -1
  83. package/utils/json.util.js +29 -41
  84. package/utils/json.util.js.map +1 -1
  85. package/utils/logger.d.ts +21 -2
  86. package/utils/logger.d.ts.map +1 -1
  87. package/utils/logger.js +31 -17
  88. package/utils/logger.js.map +1 -1
  89. package/utils/normalize.util.d.ts +24 -2
  90. package/utils/normalize.util.d.ts.map +1 -1
  91. package/utils/normalize.util.js +35 -57
  92. package/utils/normalize.util.js.map +1 -1
  93. package/utils/schema.util.d.ts +62 -3
  94. package/utils/schema.util.d.ts.map +1 -1
  95. package/utils/schema.util.js +64 -92
  96. package/utils/schema.util.js.map +1 -1
  97. package/utils/ui.d.ts +14 -0
  98. package/utils/ui.d.ts.map +1 -0
  99. package/utils/ui.js +75 -0
  100. package/utils/ui.js.map +1 -0
  101. package/commands/index.js.map +0 -1
  102. package/index.js.map +0 -1
  103. package/interfaces/index.js +0 -18
  104. package/interfaces/index.js.map +0 -1
  105. package/interfaces/loader.interface.js +0 -3
  106. package/interfaces/loader.interface.js.map +0 -1
  107. package/tsconfig.build.tsbuildinfo +0 -1
  108. package/utils/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"command.util.d.ts","sourceRoot":"","sources":["../../src/utils/command.util.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAiBrE,wBAAsB,cAAc,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CAef;AAWD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,YAgB5E;AAUD,wBAAsB,cAAc,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAS9C;AAQD,wBAAsB,eAAe,CACpC,YAAY,SAAK,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAUlC;AAUD,wBAAgB,0BAA0B,CACzC,SAAS,EAAE,iBAAiB,EAAE,EAC9B,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,GAC3C,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAoB9B;AAYD,wBAAgB,WAAW,CAC1B,OAAO,EAAE,iBAAiB,EAAE,EAC5B,gBAAgB,SAAO,GACrB,iBAAiB,EAAE,GAAG,KAAK,CAO7B;AAYD,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,iBAAiB,EAAE,EAC5B,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,GAC3C,iBAAiB,EAAE,GAAG,KAAK,CA6B7B;AAYD,wBAAsB,kBAAkB,CACvC,GAAG,EAAE,iBAAiB,EAAE,EACxB,IAAI,EAAE,SAAS,CAAC,gBAAgB,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
1
+ {"version":3,"file":"command.util.d.ts","sourceRoot":"","sources":["../../src/utils/command.util.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EACX,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,wBAAwB,CAAC;AAWhC;;;;;GAKG;AACH,wBAAsB,cAAc,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,YAkB5E;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAS9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC9B,YAAY,SAAK,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAiBlC;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACzC,SAAS,EAAE,iBAAiB,EAAE,EAC9B,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,GAC3C,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAY9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAC1B,OAAO,EAAE,iBAAiB,EAAE,EAC5B,gBAAgB,SAAO,GACrB,iBAAiB,EAAE,GAAG,KAAK,CAO7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,iBAAiB,EAAE,EAC5B,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,GAC3C,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA6B9B;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACvC,GAAG,EAAE,iBAAiB,EAAE,EACxB,IAAI,EAAE,SAAS,CAAC,gBAAgB,CAAC,GAC/B,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
@@ -1,144 +1,69 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.generateSchemaFrom = exports.flatAndValidateResults = exports.flatResults = exports.loadVariablesFromProviders = exports.loadProjectInfo = exports.loadSchemaFile = exports.getSubcommand = exports.loadConfigFile = void 0;
30
- const chalk_1 = __importDefault(require("chalk"));
31
- const merge_deep_1 = __importDefault(require("merge-deep"));
32
- const node_path_1 = require("node:path");
33
- const utils_1 = require("../utils");
34
- async function loadConfigFile(argv, delimiters) {
35
- if (typeof argv.configFile === 'string') {
36
- const path = (0, utils_1.interpolate)(argv.configFile, argv, delimiters);
37
- const [config, success] = await (0, utils_1.readJson)(path);
38
- if (success) {
39
- for (const key in config)
40
- argv[key] ??= config[key];
41
- }
42
- else {
43
- utils_1.logger.silly(`config file ${chalk_1.default.underline.yellow(path)} not found, using defaults`);
44
- }
45
- }
1
+ import { interpolate as e } from "./interpolate.util.js";
2
+ import { readJson as t, writeJson as n } from "./json.util.js";
3
+ import { logger as r } from "./logger.js";
4
+ import { flatten as i } from "./normalize.util.js";
5
+ import { createValidators as a, schemaFrom as o } from "./schema.util.js";
6
+ import "./index.js";
7
+ import s from "picocolors";
8
+ import c from "merge-deep";
9
+ import { readFileSync as l } from "node:fs";
10
+ import u from "node:path";
11
+ //#region src/utils/command.util.ts
12
+ async function d(n, r) {
13
+ if (typeof n.configFile == "string") {
14
+ let [i, a] = await t(e(n.configFile, n, r));
15
+ if (a) for (let e in i) n[e] ??= i[e];
16
+ }
46
17
  }
47
- exports.loadConfigFile = loadConfigFile;
48
- function getSubcommand(rawArgv, delimiters) {
49
- let subcommand = [];
50
- const begin = rawArgv.indexOf(delimiters[0]);
51
- const count = rawArgv.lastIndexOf(delimiters[1]) - begin;
52
- if (begin > 0) {
53
- subcommand =
54
- count > 0
55
- ? rawArgv.splice(begin, count + 1).slice(1, -1)
56
- : rawArgv.splice(begin).slice(1);
57
- }
58
- return subcommand;
18
+ function f(e, t) {
19
+ let n = [], r = e.indexOf(t[0]), i = e.lastIndexOf(t[1]) - r;
20
+ return r > 0 && (n = i > 0 ? e.splice(r, i + 1).slice(1, -1) : e.splice(r).slice(1)), n;
59
21
  }
60
- exports.getSubcommand = getSubcommand;
61
- async function loadSchemaFile(argv, delimiters) {
62
- if (typeof argv.schemaFile === 'string') {
63
- const path = (0, utils_1.interpolate)(argv.schemaFile, argv, delimiters);
64
- const [schema, success] = await (0, utils_1.readJson)(path);
65
- return success ? schema : undefined;
66
- }
67
- return undefined;
22
+ async function p(n, r) {
23
+ if (typeof n.schemaFile == "string") {
24
+ let [i, a] = await t(e(n.schemaFile, n, r));
25
+ return a ? i : void 0;
26
+ }
68
27
  }
69
- exports.loadSchemaFile = loadSchemaFile;
70
- async function loadProjectInfo(relativePath = '') {
71
- try {
72
- return await Promise.resolve(`${(0, node_path_1.join)(process.cwd(), relativePath, 'package.json')}`).then(s => __importStar(require(s)));
73
- }
74
- catch {
75
- utils_1.logger.warn(`project file ${chalk_1.default.underline.yellow('package.json')} not found`);
76
- return {};
77
- }
28
+ function m(e = "") {
29
+ try {
30
+ let t = u.join(process.cwd(), e, "package.json");
31
+ return Promise.resolve(JSON.parse(l(t, "utf8")));
32
+ } catch {
33
+ return r.warn(`project file ${s.underline(s.yellow("package.json"))} not found`), Promise.resolve({});
34
+ }
78
35
  }
79
- exports.loadProjectInfo = loadProjectInfo;
80
- function loadVariablesFromProviders(providers, argv) {
81
- if (!providers)
82
- return Promise.resolve([]);
83
- return Promise.all(providers.map(({ handler: { key, load }, config }) => {
84
- utils_1.logger.silly(`executing ${chalk_1.default.yellow(key)} provider`);
85
- const value = load(argv, config);
86
- if (value instanceof Promise) {
87
- return value.then((value) => ({
88
- key,
89
- config,
90
- value
91
- }));
92
- }
93
- else {
94
- return { key, config, value };
95
- }
96
- }));
36
+ function h(e, t) {
37
+ return e ? Promise.all(e.map(async ({ config: e, handler: { key: n, load: i } }) => (r.silly(`executing ${s.yellow(n)} provider`), {
38
+ config: e,
39
+ key: n,
40
+ value: await i(t, e)
41
+ }))) : Promise.resolve([]);
97
42
  }
98
- exports.loadVariablesFromProviders = loadVariablesFromProviders;
99
- function flatResults(results, nestingDelimiter = '__') {
100
- return results.flatMap(({ value }) => {
101
- if (Array.isArray(value))
102
- return (0, merge_deep_1.default)({}, ...value.map((v) => (0, utils_1.flatten)(v, nestingDelimiter)));
103
- return value;
104
- });
43
+ function g(e, t = "__") {
44
+ return e.flatMap(({ value: e }) => Array.isArray(e) ? c({}, ...e.map((e) => i(e, t))) : i(e, t));
105
45
  }
106
- exports.flatResults = flatResults;
107
- function flatAndValidateResults(results, argv) {
108
- if (!argv.schemaValidate)
109
- return flatResults(results, argv.nestingDelimiter);
110
- const validators = (0, utils_1.createValidators)(argv.schema, argv.detectFormat);
111
- return results.flatMap(({ key, value }) => {
112
- let baseValue = value;
113
- if (Array.isArray(value)) {
114
- value = (0, merge_deep_1.default)({}, ...value);
115
- baseValue = (0, merge_deep_1.default)({}, ...baseValue.map((v) => (0, utils_1.flatten)(v, argv.nestingDelimiter)));
116
- }
117
- else {
118
- baseValue = (0, utils_1.flatten)(value, argv.nestingDelimiter);
119
- }
120
- const validator = validators[key];
121
- if (!validator || validator?.(value))
122
- return baseValue;
123
- utils_1.logger.error(`schema validation failed for ${chalk_1.default.yellow(key)}`, validator.errors);
124
- throw new Error(`schema validation failed for ${key}`);
125
- });
46
+ async function _(e, t) {
47
+ if (!t.schemaValidate) return g(e, t.nestingDelimiter);
48
+ let n = await a(t.schema, t.detectFormat);
49
+ return e.flatMap(({ key: e, value: a }) => {
50
+ let o = a;
51
+ Array.isArray(a) ? (a = c({}, ...a), o = c({}, ...o.map((e) => i(e, t.nestingDelimiter)))) : o = i(a, t.nestingDelimiter);
52
+ let l = n[e];
53
+ if (!l || l?.(a)) return o;
54
+ throw r.error(`schema validation failed for ${s.yellow(e)}`, l?.errors), Error(`schema validation failed for ${e}`);
55
+ });
126
56
  }
127
- exports.flatAndValidateResults = flatAndValidateResults;
128
- async function generateSchemaFrom(env, argv) {
129
- const { resolve, nullable, detectFormat, schemaFile } = argv;
130
- let schema = env.reduce((schema, { key, value }) => {
131
- const env = Array.isArray(value) ? (0, merge_deep_1.default)({}, ...value) : value;
132
- schema[key] = (0, utils_1.schemaFrom)(env, {
133
- nullable,
134
- strings: { detectFormat }
135
- });
136
- return schema;
137
- }, {});
138
- if (resolve === 'merge')
139
- schema = (0, merge_deep_1.default)(argv.schema, schema);
140
- await (0, utils_1.writeJson)(schemaFile, schema, true);
141
- return schema;
57
+ async function v(e, t) {
58
+ let { detectFormat: r, nullable: i, resolve: a, schemaFile: s } = t, l = {};
59
+ for (let { key: t, value: n } of e) l[t] = await o(Array.isArray(n) ? c({}, ...n) : n, {
60
+ nullable: i,
61
+ strings: { detectFormat: r }
62
+ });
63
+ let u = l;
64
+ return a === "merge" && (u = c(t.schema, u)), await n(s, u, !0), u;
142
65
  }
143
- exports.generateSchemaFrom = generateSchemaFrom;
66
+ //#endregion
67
+ export { _ as flatAndValidateResults, g as flatResults, v as generateSchemaFrom, f as getSubcommand, d as loadConfigFile, m as loadProjectInfo, p as loadSchemaFile, h as loadVariablesFromProviders };
68
+
144
69
  //# sourceMappingURL=command.util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.util.js","sourceRoot":"","sources":["../../src/utils/command.util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.util.js","names":[],"sources":["../../src/utils/command.util.ts"],"sourcesContent":["import merge from 'merge-deep';\r\nimport { readFileSync } from 'node:fs';\r\nimport Path from 'node:path';\r\nimport pc from 'picocolors';\r\nimport type { Arguments } from 'yargs';\r\nimport type { CommandArguments } from '../arguments.js';\r\nimport type { EnvCommandArguments } from '../commands/env.command.js';\r\nimport type {\r\n\tEnvProviderConfig,\r\n\tEnvProviderResult,\r\n} from '../interfaces/index.js';\r\nimport {\r\n\tcreateValidators,\r\n\tflatten,\r\n\tinterpolate,\r\n\tlogger,\r\n\treadJson,\r\n\tschemaFrom,\r\n\twriteJson,\r\n} from './index.js';\r\n\r\n/**\r\n * Injects config to command arguments from file.\r\n *\r\n * @param {Record<string, unknown>} argv\r\n * @param {[string, string]} delimiters\r\n */\r\nexport async function loadConfigFile(\r\n\targv: Record<string, unknown>,\r\n\tdelimiters: [string, string],\r\n): Promise<void> {\r\n\tif (typeof argv.configFile === 'string') {\r\n\t\tconst path = interpolate(argv.configFile, argv, delimiters);\r\n\t\tconst [config, success] = await readJson(path);\r\n\r\n\t\tif (success) for (const key in config) argv[key] ??= config[key];\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts subcommand from command line parameters.\r\n *\r\n * @export\r\n * @param {string[]} rawArgv process.argv.slice(2)\r\n * @param {[string, string]} delimiters\r\n *\r\n * @returns {string[]} subcommand for wrap if exists\r\n */\r\nexport function getSubcommand(rawArgv: string[], delimiters: [string, string]) {\r\n\tlet subcommand: string[] = [];\r\n\r\n\t// subcommand delimiter indexes\r\n\r\n\tconst begin = rawArgv.indexOf(delimiters[0]);\r\n\r\n\tconst count = rawArgv.lastIndexOf(delimiters[1]) - begin;\r\n\r\n\t// calculates subcommand surrounded by delimiters\r\n\tif (begin > 0) {\r\n\t\tsubcommand =\r\n\t\t\tcount > 0\r\n\t\t\t\t? rawArgv.splice(begin, count + 1).slice(1, -1)\r\n\t\t\t\t: rawArgv.splice(begin).slice(1);\r\n\t}\r\n\r\n\treturn subcommand;\r\n}\r\n\r\n/**\r\n * Loads providers JSON schema from file.\r\n *\r\n * @param {Record<string, unknown>} argv\r\n * @param {[string, string]} delimiters\r\n *\r\n * @returns {Promise<Record<string, unknown>>}\r\n */\r\nexport async function loadSchemaFile(\r\n\targv: Record<string, unknown>,\r\n\tdelimiters: [string, string],\r\n): Promise<Record<string, unknown> | undefined> {\r\n\tif (typeof argv.schemaFile === 'string') {\r\n\t\tconst path = interpolate(argv.schemaFile, argv, delimiters);\r\n\t\tconst [schema, success] = await readJson(path);\r\n\r\n\t\treturn success ? schema : undefined;\r\n\t}\r\n\r\n\treturn undefined;\r\n}\r\n\r\n/**\r\n * Reads project package.json.\r\n *\r\n * @export\r\n * @returns {Promise<Record<string, unknown>> | never}\r\n */\r\nexport function loadProjectInfo(\r\n\trelativePath = '',\r\n): Promise<Record<string, unknown>> {\r\n\ttry {\r\n\t\tconst filePath = Path.join(process.cwd(), relativePath, 'package.json');\r\n\r\n\t\treturn Promise.resolve(\r\n\t\t\tJSON.parse(readFileSync(filePath, 'utf8')) as Record<\r\n\t\t\t\tstring,\r\n\t\t\t\tunknown\r\n\t\t\t>,\r\n\t\t);\r\n\t} catch {\r\n\t\tlogger.warn(\r\n\t\t\t`project file ${pc.underline(pc.yellow('package.json'))} not found`,\r\n\t\t);\r\n\r\n\t\treturn Promise.resolve({});\r\n\t}\r\n}\r\n\r\n/**\r\n * Executes load functions from provider handlers.\r\n *\r\n * @param {EnvProviderConfig[]} providers\r\n * @param {Partial<Arguments<EnvCommandArguments>>} argv\r\n *\r\n * @returns {EnvProviderResult[]}\r\n */\r\nexport function loadVariablesFromProviders(\r\n\tproviders: EnvProviderConfig[],\r\n\targv: Partial<Arguments<EnvCommandArguments>>,\r\n): Promise<EnvProviderResult[]> {\r\n\tif (!providers) return Promise.resolve([]) as Promise<EnvProviderResult[]>;\r\n\r\n\treturn Promise.all(\r\n\t\tproviders.map(async ({ config, handler: { key, load } }) => {\r\n\t\t\tlogger.silly(`executing ${pc.yellow(key)} provider`);\r\n\r\n\t\t\tconst value = await load(argv, config);\r\n\r\n\t\t\treturn { config, key, value };\r\n\t\t}),\r\n\t);\r\n}\r\n\r\n/**\r\n * Flattern environment provider results.\r\n *\r\n * @param {EnvProviderResult[]} results\r\n * @param {Partial<Arguments<EnvCommandArguments>>} argv\r\n *\r\n * @throws {Error} on schema validation failed\r\n *\r\n * @returns {EnvProviderResult[]} flatten results\r\n */\r\nexport function flatResults(\r\n\tresults: EnvProviderResult[],\r\n\tnestingDelimiter = '__',\r\n): EnvProviderResult[] | never {\r\n\treturn results.flatMap(({ value }) => {\r\n\t\tif (Array.isArray(value))\r\n\t\t\treturn merge({}, ...value.map((v) => flatten(v, nestingDelimiter)));\r\n\r\n\t\treturn flatten(value, nestingDelimiter);\r\n\t});\r\n}\r\n\r\n/**\r\n * Flattern and validates environment provider results.\r\n *\r\n * @param {EnvProviderResult[]} results\r\n * @param {Partial<Arguments<EnvCommandArguments>>} argv\r\n *\r\n * @throws {Error} on schema validation failed\r\n *\r\n * @returns {EnvProviderResult[]}\r\n */\r\nexport async function flatAndValidateResults(\r\n\tresults: EnvProviderResult[],\r\n\targv: Partial<Arguments<EnvCommandArguments>>,\r\n): Promise<EnvProviderResult[]> {\r\n\tif (!argv.schemaValidate)\r\n\t\treturn flatResults(results, argv.nestingDelimiter);\r\n\r\n\tconst validators = await createValidators(argv.schema!, argv.detectFormat);\r\n\r\n\treturn results.flatMap(({ key, value }) => {\r\n\t\tlet baseValue = value;\r\n\t\tif (Array.isArray(value)) {\r\n\t\t\tvalue = merge({}, ...value);\r\n\t\t\tbaseValue = merge(\r\n\t\t\t\t{},\r\n\t\t\t\t...baseValue.map((v: any) => flatten(v, argv.nestingDelimiter)),\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tbaseValue = flatten(value, argv.nestingDelimiter);\r\n\t\t}\r\n\r\n\t\tconst validator = validators![key];\r\n\r\n\t\tif (!validator || validator?.(value)) return baseValue;\r\n\r\n\t\tlogger.error(\r\n\t\t\t`schema validation failed for ${pc.yellow(key)}`,\r\n\t\t\tvalidator?.errors,\r\n\t\t);\r\n\r\n\t\tthrow new Error(`schema validation failed for ${key}`);\r\n\t});\r\n}\r\n\r\n/**\r\n * Creates or updates JSON schema from\r\n * environment variables grouped by provider key.\r\n *\r\n * @export\r\n * @param {EnvProviderResult[]} env\r\n * @param {Arguments<EnvCommandArguments>} argv\r\n *\r\n * @returns {Promise<object>} JSON schema grouped by provider key.\r\n */\r\nexport async function generateSchemaFrom(\r\n\tenv: EnvProviderResult[],\r\n\targv: Arguments<CommandArguments>,\r\n): Promise<object> {\r\n\tconst { detectFormat, nullable, resolve, schemaFile } = argv;\r\n\r\n\t// generates schemas from providers results\r\n\tconst schemaEntries: Record<string, unknown> = {};\r\n\tfor (const { key, value } of env) {\r\n\t\tconst merged = Array.isArray(value) ? merge({}, ...value) : value;\r\n\r\n\t\tschemaEntries[key] = await schemaFrom(merged, {\r\n\t\t\tnullable,\r\n\t\t\tstrings: { detectFormat },\r\n\t\t});\r\n\t}\r\n\r\n\tlet schema: Record<string, unknown> = schemaEntries;\r\n\r\n\tif (resolve === 'merge') schema = merge(argv.schema, schema);\r\n\r\n\tawait writeJson(schemaFile, schema, true);\r\n\r\n\treturn schema;\r\n}\r\n"],"mappings":"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"}
package/utils/index.d.ts CHANGED
@@ -1,7 +1,9 @@
1
- export * from './command.util';
2
- export * from './interpolate.util';
3
- export * from './json.util';
4
- export * from './logger';
5
- export * from './normalize.util';
6
- export * from './schema.util';
1
+ export * from './argv.util.js';
2
+ export * from './command.util.js';
3
+ export * from './interpolate.util.js';
4
+ export * from './json.util.js';
5
+ export * from './logger.js';
6
+ export * from './normalize.util.js';
7
+ export * from './schema.util.js';
8
+ export * from './ui.js';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC"}
package/utils/index.js CHANGED
@@ -1,23 +1,9 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./command.util"), exports);
18
- __exportStar(require("./interpolate.util"), exports);
19
- __exportStar(require("./json.util"), exports);
20
- __exportStar(require("./logger"), exports);
21
- __exportStar(require("./normalize.util"), exports);
22
- __exportStar(require("./schema.util"), exports);
23
- //# sourceMappingURL=index.js.map
1
+ import { normalizeRawArgv as e } from "./argv.util.js";
2
+ import { flatAndValidateResults as t, flatResults as n, generateSchemaFrom as r, getSubcommand as i, loadConfigFile as a, loadProjectInfo as o, loadSchemaFile as s, loadVariablesFromProviders as c } from "./command.util.js";
3
+ import { interpolate as l, interpolateJson as u, isRecord as d } from "./interpolate.util.js";
4
+ import { readJson as f, resolvePath as p, writeEnvFromJson as m, writeJson as h } from "./json.util.js";
5
+ import { LOG_LEVELS as g, configureLogger as _, createLogger as v, logger as y } from "./logger.js";
6
+ import { flatten as b, normalize as x } from "./normalize.util.js";
7
+ import { createValidator as S, createValidators as C, flatSchema as w, isJsonSchemaObject as T, schemaFrom as E, schemaToJson as D } from "./schema.util.js";
8
+ import { formatDuration as O, ui as k } from "./ui.js";
9
+ export { g as LOG_LEVELS, _ as configureLogger, v as createLogger, S as createValidator, C as createValidators, t as flatAndValidateResults, n as flatResults, w as flatSchema, b as flatten, O as formatDuration, r as generateSchemaFrom, i as getSubcommand, l as interpolate, u as interpolateJson, T as isJsonSchemaObject, d as isRecord, a as loadConfigFile, o as loadProjectInfo, s as loadSchemaFile, c as loadVariablesFromProviders, y as logger, x as normalize, e as normalizeRawArgv, f as readJson, p as resolvePath, E as schemaFrom, D as schemaToJson, k as ui, m as writeEnvFromJson, h as writeJson };
@@ -1,4 +1,32 @@
1
+ /**
2
+ * Validates value must be a record.
3
+ *
4
+ * @export
5
+ * @param {unknown} obj
6
+ * @returns {*} {obj is Record<string, unknown>}
7
+ */
1
8
  export declare function isRecord(obj: unknown): obj is Record<string, unknown>;
2
- export declare function interpolate<T extends string | unknown>(value: T, args: Record<string, unknown>, delimiters?: [string, string]): T;
9
+ /**
10
+ * Replaces string arguments with regex interpolation.
11
+ *
12
+ * @export
13
+ * @template T
14
+ * @param {T} value
15
+ * @param {Record<string, unknown>} args
16
+ * @param {[string, string]} [delimiters=['[[', ']]']]
17
+ *
18
+ * @returns {T} mutated value
19
+ */
20
+ export declare function interpolate<T>(value: T, args: Record<string, unknown>, delimiters?: [string, string]): T;
21
+ /**
22
+ * Replaces JSON string arguments with regex interpolation.
23
+ *
24
+ * @export
25
+ * @param {Record<string, unknown>} args
26
+ * @param {Record<string, unknown>} values
27
+ * @param {[string, string]} [delimiters=['[[', ']]']]
28
+ *
29
+ * @returns {Record<string, unknown>} mutated args
30
+ */
3
31
  export declare function interpolateJson(values: Record<string, unknown>, args: Record<string, unknown>, delimiters?: [string, string]): Record<string, unknown>;
4
32
  //# sourceMappingURL=interpolate.util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interpolate.util.d.ts","sourceRoot":"","sources":["../../src/utils/interpolate.util.ts"],"names":[],"mappings":"AASA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIrE;AAaD,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,OAAO,EACrD,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,GAAE,CAAC,MAAM,EAAE,MAAM,CAAgB,GACzC,CAAC,CAaH;AAYD,wBAAgB,eAAe,CAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,GAAE,CAAC,MAAM,EAAE,MAAM,CAAgB,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB"}
1
+ {"version":3,"file":"interpolate.util.d.ts","sourceRoot":"","sources":["../../src/utils/interpolate.util.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIrE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC5B,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,GAAE,CAAC,MAAM,EAAE,MAAM,CAAgB,GACzC,CAAC,CAeH;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,GAAE,CAAC,MAAM,EAAE,MAAM,CAAgB,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB"}
@@ -1,33 +1,16 @@
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.interpolateJson = exports.interpolate = exports.isRecord = void 0;
7
- const subslate_1 = __importDefault(require("subslate"));
8
- function isRecord(obj) {
9
- if (!obj || typeof obj !== 'object')
10
- return false;
11
- return Object.keys(obj).length > 0;
1
+ import e from "subslate";
2
+ //#region src/utils/interpolate.util.ts
3
+ function t(e) {
4
+ return !e || typeof e != "object" ? !1 : Object.keys(e).length > 0;
12
5
  }
13
- exports.isRecord = isRecord;
14
- function interpolate(value, args, delimiters = ['[[', ']]']) {
15
- if (typeof value === 'string') {
16
- return (0, subslate_1.default)(value, args, {
17
- startStopPairs: delimiters
18
- });
19
- }
20
- if (Array.isArray(value))
21
- return value.map((a) => interpolate(a, args, delimiters));
22
- if (isRecord(value))
23
- return interpolateJson(value, args, delimiters);
24
- return value;
6
+ function n(i, a, o = ["[[", "]]"]) {
7
+ return typeof i == "string" ? i.includes(o[0]) ? e(i, a, { startStopPairs: o }) : i : Array.isArray(i) ? i.map((e) => n(e, a, o)) : t(i) ? r(i, a, o) : i;
25
8
  }
26
- exports.interpolate = interpolate;
27
- function interpolateJson(values, args, delimiters = ['[[', ']]']) {
28
- for (const key in values)
29
- values[key] = interpolate(values[key], args, delimiters);
30
- return values;
9
+ function r(e, t, r = ["[[", "]]"]) {
10
+ for (let i in e) e[i] = n(e[i], t, r);
11
+ return e;
31
12
  }
32
- exports.interpolateJson = interpolateJson;
13
+ //#endregion
14
+ export { n as interpolate, r as interpolateJson, t as isRecord };
15
+
33
16
  //# sourceMappingURL=interpolate.util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interpolate.util.js","sourceRoot":"","sources":["../../src/utils/interpolate.util.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAgC;AAShC,SAAgB,QAAQ,CAAC,GAAY;IACpC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAElD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACpC,CAAC;AAJD,4BAIC;AAaD,SAAgB,WAAW,CAC1B,KAAQ,EACR,IAA6B,EAC7B,aAA+B,CAAC,IAAI,EAAE,IAAI,CAAC;IAE3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,IAAA,kBAAQ,EAAC,KAAK,EAAE,IAAI,EAAE;YAC5B,cAAc,EAAE,UAAU;SAC1B,CAAM,CAAC;IACT,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACvB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAM,CAAC;IAEhE,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAM,CAAC;IAE1E,OAAO,KAAK,CAAC;AACd,CAAC;AAjBD,kCAiBC;AAYD,SAAgB,eAAe,CAC9B,MAA+B,EAC/B,IAA6B,EAC7B,aAA+B,CAAC,IAAI,EAAE,IAAI,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,MAAM;QACvB,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAE1D,OAAO,MAAM,CAAC;AACf,CAAC;AATD,0CASC"}
1
+ {"version":3,"file":"interpolate.util.js","names":[],"sources":["../../src/utils/interpolate.util.ts"],"sourcesContent":["import subslate from 'subslate';\r\n\r\n/**\r\n * Validates value must be a record.\r\n *\r\n * @export\r\n * @param {unknown} obj\r\n * @returns {*} {obj is Record<string, unknown>}\r\n */\r\nexport function isRecord(obj: unknown): obj is Record<string, unknown> {\r\n\tif (!obj || typeof obj !== 'object') return false;\r\n\r\n\treturn Object.keys(obj).length > 0;\r\n}\r\n\r\n/**\r\n * Replaces string arguments with regex interpolation.\r\n *\r\n * @export\r\n * @template T\r\n * @param {T} value\r\n * @param {Record<string, unknown>} args\r\n * @param {[string, string]} [delimiters=['[[', ']]']]\r\n *\r\n * @returns {T} mutated value\r\n */\r\nexport function interpolate<T>(\r\n\tvalue: T,\r\n\targs: Record<string, unknown>,\r\n\tdelimiters: [string, string] = ['[[', ']]'],\r\n): T {\r\n\tif (typeof value === 'string') {\r\n\t\tif (!value.includes(delimiters[0])) return value as T;\r\n\r\n\t\treturn subslate(value, args, {\r\n\t\t\tstartStopPairs: delimiters,\r\n\t\t}) as T;\r\n\t}\r\n\r\n\tif (Array.isArray(value))\r\n\t\treturn value.map((a) => interpolate(a, args, delimiters)) as T;\r\n\r\n\tif (isRecord(value)) return interpolateJson(value, args, delimiters) as T;\r\n\r\n\treturn value;\r\n}\r\n\r\n/**\r\n * Replaces JSON string arguments with regex interpolation.\r\n *\r\n * @export\r\n * @param {Record<string, unknown>} args\r\n * @param {Record<string, unknown>} values\r\n * @param {[string, string]} [delimiters=['[[', ']]']]\r\n *\r\n * @returns {Record<string, unknown>} mutated args\r\n */\r\nexport function interpolateJson(\r\n\tvalues: Record<string, unknown>,\r\n\targs: Record<string, unknown>,\r\n\tdelimiters: [string, string] = ['[[', ']]'],\r\n): Record<string, unknown> {\r\n\tfor (const key in values)\r\n\t\tvalues[key] = interpolate(values[key], args, delimiters);\r\n\r\n\treturn values;\r\n}\r\n"],"mappings":";;AASA,SAAgB,EAAS,GAA8C;CAGtE,OAFI,CAAC,KAAO,OAAO,KAAQ,WAAiB,KAErC,OAAO,KAAK,CAAG,EAAE,SAAS;AAClC;AAaA,SAAgB,EACf,GACA,GACA,IAA+B,CAAC,MAAM,IAAI,GACtC;CAcJ,OAbI,OAAO,KAAU,WACf,EAAM,SAAS,EAAW,EAAE,IAE1B,EAAS,GAAO,GAAM,EAC5B,gBAAgB,EACjB,CAAC,IAJ0C,IAOxC,MAAM,QAAQ,CAAK,IACf,EAAM,KAAK,MAAM,EAAY,GAAG,GAAM,CAAU,CAAC,IAErD,EAAS,CAAK,IAAU,EAAgB,GAAO,GAAM,CAAU,IAE5D;AACR;AAYA,SAAgB,EACf,GACA,GACA,IAA+B,CAAC,MAAM,IAAI,GAChB;CAC1B,KAAK,IAAM,KAAO,GACjB,EAAO,KAAO,EAAY,EAAO,IAAM,GAAM,CAAU;CAExD,OAAO;AACR"}
@@ -1,5 +1,43 @@
1
+ /**
2
+ * Resolve a relative path for os.
3
+ *
4
+ * @export
5
+ * @param {string} filePath relative path from project root
6
+ *
7
+ * @returns {string} path
8
+ */
1
9
  export declare function resolvePath(filePath: string): string;
2
- export declare function readJson<T = Record<string, any>>(path: string): Promise<[T | Record<string, any>, boolean] | never>;
3
- export declare function writeJson(path: string, content: Record<string, unknown>, overwrite?: boolean, undefinedAsNull?: boolean): Promise<boolean | never>;
4
- export declare function writeEnvFromJson(path: string, content: Record<string, unknown>, overwrite?: boolean): Promise<boolean | never>;
10
+ /**
11
+ * Reads and parses a JSON file.
12
+ *
13
+ * @export
14
+ * @template T
15
+ * @param {string} path
16
+ *
17
+ * @returns {Promise<[Record<string, any>, boolean]>}
18
+ */
19
+ export declare function readJson<T = Record<string, any>>(path: string): Promise<[Record<string, any> | T, boolean]>;
20
+ /**
21
+ * Saves a JSON into a file.
22
+ *
23
+ * @export
24
+ * @param {string} path
25
+ * @param {unknown} content
26
+ * @param {false} overwrite
27
+ * @param {false} undefinedAsNull replaces undefined by null
28
+ *
29
+ * @returns {Promise<boolean>}
30
+ */
31
+ export declare function writeJson(path: string, content: Record<string, unknown>, overwrite?: boolean, undefinedAsNull?: boolean): Promise<boolean>;
32
+ /**
33
+ * Saves a JSON into a file as dotenv.
34
+ *
35
+ * @export
36
+ * @param {string} path
37
+ * @param {unknown} content
38
+ * @param {false} overwrite
39
+ *
40
+ * @returns {Promise<boolean>}
41
+ */
42
+ export declare function writeEnvFromJson(path: string, content: Record<string, unknown>, overwrite?: boolean, quotes?: boolean): Promise<boolean>;
5
43
  //# sourceMappingURL=json.util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json.util.d.ts","sourceRoot":"","sources":["../../src/utils/json.util.ts"],"names":[],"mappings":"AAwBA,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOpD;AAWD,wBAAsB,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,CAIrD;AAaD,wBAAsB,SAAS,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,UAAQ,EACjB,eAAe,UAAQ,GACrB,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,CAgB1B;AAYD,wBAAsB,gBAAgB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,UAAQ,GACf,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,CAiB1B"}
1
+ {"version":3,"file":"json.util.d.ts","sourceRoot":"","sources":["../../src/utils/json.util.ts"],"names":[],"mappings":"AAgBA;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrD,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAS7C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,UAAQ,EACjB,eAAe,UAAQ,GACrB,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,UAAQ,EACjB,MAAM,UAAQ,GACZ,OAAO,CAAC,OAAO,CAAC,CAiBlB"}
@@ -1,46 +1,34 @@
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.writeEnvFromJson = exports.writeJson = exports.readJson = exports.resolvePath = void 0;
7
- const os_1 = __importDefault(require("os"));
8
- const path_1 = __importDefault(require("path"));
9
- const fs_1 = require("fs");
10
- const promises_1 = require("fs/promises");
11
- const replacer = (_, value) => value === undefined ? null : value;
12
- function resolvePath(filePath) {
13
- const home = os_1.default.homedir();
14
- if (home !== undefined)
15
- filePath = filePath.replace(/^~($|\/|\\)/, `${home}$1`);
16
- return path_1.default.resolve(process.cwd(), filePath);
1
+ import { existsSync as e } from "node:fs";
2
+ import t from "node:path";
3
+ import { readFile as n, writeFile as r } from "node:fs/promises";
4
+ import i from "node:os";
5
+ //#region src/utils/json.util.ts
6
+ var a = (e, t) => t === void 0 ? null : t;
7
+ function o(e) {
8
+ let n = i.homedir();
9
+ return n && (e = e.replace(/^~($|\/|\\)/, `${n}$1`)), t.resolve(process.cwd(), e);
17
10
  }
18
- exports.resolvePath = resolvePath;
19
- async function readJson(path) {
20
- if (!(0, fs_1.existsSync)(path))
21
- return [{}, false];
22
- return [JSON.parse(await (0, promises_1.readFile)(path, 'utf8')), true];
11
+ async function s(e) {
12
+ try {
13
+ return [JSON.parse(await n(e, "utf8")), !0];
14
+ } catch (e) {
15
+ if (e.code === "ENOENT") return [{}, !1];
16
+ throw e;
17
+ }
23
18
  }
24
- exports.readJson = readJson;
25
- async function writeJson(path, content, overwrite = false, undefinedAsNull = false) {
26
- const exists = (0, fs_1.existsSync)(path);
27
- if (exists && !overwrite)
28
- return false;
29
- await (0, promises_1.writeFile)(path, `${JSON.stringify(content, undefinedAsNull ? replacer : undefined, 4)}\n`, 'utf8');
30
- return true;
19
+ async function c(t, n, i = !1, o = !1) {
20
+ return e(t) && !i ? !1 : (await r(t, `${JSON.stringify(n, o ? a : void 0, 4)}\n`, "utf8"), !0);
31
21
  }
32
- exports.writeJson = writeJson;
33
- async function writeEnvFromJson(path, content, overwrite = false) {
34
- const exists = (0, fs_1.existsSync)(path);
35
- if (exists && !overwrite)
36
- return false;
37
- let data = '';
38
- for (const key in content) {
39
- const value = content[key];
40
- data += `${key}=${value}\n`;
41
- }
42
- await (0, promises_1.writeFile)(path, data, 'utf8');
43
- return true;
22
+ async function l(t, n, i = !1, a = !1) {
23
+ if (e(t) && !i) return !1;
24
+ let o = "";
25
+ for (let e in n) {
26
+ let t = n[e];
27
+ a && (t = `"${t}"`), o += `${e}=${t}\n`;
28
+ }
29
+ return await r(t, o, "utf8"), !0;
44
30
  }
45
- exports.writeEnvFromJson = writeEnvFromJson;
31
+ //#endregion
32
+ export { s as readJson, o as resolvePath, l as writeEnvFromJson, c as writeJson };
33
+
46
34
  //# sourceMappingURL=json.util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json.util.js","sourceRoot":"","sources":["../../src/utils/json.util.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,2BAAgC;AAChC,0CAAkD;AAUlD,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,KAAU,EAAuB,EAAE,CAC/D,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAUpC,SAAgB,WAAW,CAAC,QAAgB;IAC3C,MAAM,IAAI,GAAG,YAAE,CAAC,OAAO,EAAE,CAAC;IAE1B,IAAI,IAAI,KAAK,SAAS;QACrB,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;IAEzD,OAAO,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAPD,kCAOC;AAWM,KAAK,UAAU,QAAQ,CAC7B,IAAY;IAEZ,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAE1C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,mBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAND,4BAMC;AAaM,KAAK,UAAU,SAAS,CAC9B,IAAY,EACZ,OAAgC,EAChC,SAAS,GAAG,KAAK,EACjB,eAAe,GAAG,KAAK;IAEvB,MAAM,MAAM,GAAG,IAAA,eAAU,EAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,MAAM,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAEvC,MAAM,IAAA,oBAAS,EACd,IAAI,EACJ,GAAG,IAAI,CAAC,SAAS,CAChB,OAAO,EACP,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACtC,CAAC,CACD,IAAI,EACL,MAAM,CACN,CAAC;IAEF,OAAO,IAAI,CAAC;AACb,CAAC;AArBD,8BAqBC;AAYM,KAAK,UAAU,gBAAgB,CACrC,IAAY,EACZ,OAAgC,EAChC,SAAS,GAAG,KAAK;IAEjB,MAAM,MAAM,GAAG,IAAA,eAAU,EAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,MAAM,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAEvC,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAG3B,IAAI,IAAI,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7B,CAAC;IAED,MAAM,IAAA,oBAAS,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAEpC,OAAO,IAAI,CAAC;AACb,CAAC;AArBD,4CAqBC"}
1
+ {"version":3,"file":"json.util.js","names":[],"sources":["../../src/utils/json.util.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\r\nimport { readFile, writeFile } from 'node:fs/promises';\r\nimport os from 'node:os';\r\nimport path from 'node:path';\r\n\r\n/**\r\n * Replaces undefined by null in JSON.stringify()\r\n *\r\n * @param {string} _ property key\r\n * @param {any} value property value\r\n *\r\n * @returns {any} value\r\n */\r\nconst replacer = (_: string, value: any): any =>\r\n\tvalue === undefined ? null : value;\r\n\r\n/**\r\n * Resolve a relative path for os.\r\n *\r\n * @export\r\n * @param {string} filePath relative path from project root\r\n *\r\n * @returns {string} path\r\n */\r\nexport function resolvePath(filePath: string): string {\r\n\tconst home = os.homedir();\r\n\r\n\tif (home) filePath = filePath.replace(/^~($|\\/|\\\\)/, `${home}$1`);\r\n\r\n\treturn path.resolve(process.cwd(), filePath);\r\n}\r\n\r\n/**\r\n * Reads and parses a JSON file.\r\n *\r\n * @export\r\n * @template T\r\n * @param {string} path\r\n *\r\n * @returns {Promise<[Record<string, any>, boolean]>}\r\n */\r\nexport async function readJson<T = Record<string, any>>(\r\n\tpath: string,\r\n): Promise<[Record<string, any> | T, boolean]> {\r\n\ttry {\r\n\t\treturn [JSON.parse(await readFile(path, 'utf8')), true];\r\n\t} catch (error) {\r\n\t\tif ((error as NodeJS.ErrnoException).code === 'ENOENT')\r\n\t\t\treturn [{}, false];\r\n\r\n\t\tthrow error; // invalid JSON or other IO error must still surface\r\n\t}\r\n}\r\n\r\n/**\r\n * Saves a JSON into a file.\r\n *\r\n * @export\r\n * @param {string} path\r\n * @param {unknown} content\r\n * @param {false} overwrite\r\n * @param {false} undefinedAsNull replaces undefined by null\r\n *\r\n * @returns {Promise<boolean>}\r\n */\r\nexport async function writeJson(\r\n\tpath: string,\r\n\tcontent: Record<string, unknown>,\r\n\toverwrite = false,\r\n\tundefinedAsNull = false,\r\n): Promise<boolean> {\r\n\tconst exists = existsSync(path);\r\n\r\n\tif (exists && !overwrite) return false;\r\n\r\n\tawait writeFile(\r\n\t\tpath,\r\n\t\t`${JSON.stringify(\r\n\t\t\tcontent,\r\n\t\t\tundefinedAsNull ? replacer : undefined,\r\n\t\t\t4,\r\n\t\t)}\\n`,\r\n\t\t'utf8',\r\n\t);\r\n\r\n\treturn true;\r\n}\r\n\r\n/**\r\n * Saves a JSON into a file as dotenv.\r\n *\r\n * @export\r\n * @param {string} path\r\n * @param {unknown} content\r\n * @param {false} overwrite\r\n *\r\n * @returns {Promise<boolean>}\r\n */\r\nexport async function writeEnvFromJson(\r\n\tpath: string,\r\n\tcontent: Record<string, unknown>,\r\n\toverwrite = false,\r\n\tquotes = false,\r\n): Promise<boolean> {\r\n\tconst exists = existsSync(path);\r\n\r\n\tif (exists && !overwrite) return false;\r\n\r\n\tlet data = '';\r\n\r\n\tfor (const key in content) {\r\n\t\tlet value = content[key];\r\n\t\tif (quotes) value = `\"${value}\"`;\r\n\r\n\t\tdata += `${key}=${value}\\n`;\r\n\t}\r\n\r\n\tawait writeFile(path, data, 'utf8');\r\n\r\n\treturn true;\r\n}\r\n"],"mappings":";;;;;AAaA,IAAM,KAAY,GAAW,MAC5B,MAAU,KAAA,IAAY,OAAO;AAU9B,SAAgB,EAAY,GAA0B;CACrD,IAAM,IAAO,EAAG,QAAQ;CAIxB,OAFI,MAAM,IAAW,EAAS,QAAQ,eAAe,GAAG,EAAK,GAAG,IAEzD,EAAK,QAAQ,QAAQ,IAAI,GAAG,CAAQ;AAC5C;AAWA,eAAsB,EACrB,GAC8C;CAC9C,IAAI;EACH,OAAO,CAAC,KAAK,MAAM,MAAM,EAAS,GAAM,MAAM,CAAC,GAAG,EAAI;CACvD,SAAS,GAAO;EACf,IAAK,EAAgC,SAAS,UAC7C,OAAO,CAAC,CAAC,GAAG,EAAK;EAElB,MAAM;CACP;AACD;AAaA,eAAsB,EACrB,GACA,GACA,IAAY,IACZ,IAAkB,IACC;CAenB,OAde,EAAW,CAEtB,KAAU,CAAC,IAAkB,MAEjC,MAAM,EACL,GACA,GAAG,KAAK,UACP,GACA,IAAkB,IAAW,KAAA,GAC7B,CACD,EAAE,KACF,MACD,GAEO;AACR;AAYA,eAAsB,EACrB,GACA,GACA,IAAY,IACZ,IAAS,IACU;CAGnB,IAFe,EAAW,CAEtB,KAAU,CAAC,GAAW,OAAO;CAEjC,IAAI,IAAO;CAEX,KAAK,IAAM,KAAO,GAAS;EAC1B,IAAI,IAAQ,EAAQ;EAGpB,AAFI,MAAQ,IAAQ,IAAI,EAAM,KAE9B,KAAQ,GAAG,EAAI,GAAG,EAAM;CACzB;CAIA,OAFA,MAAM,EAAU,GAAM,GAAM,MAAM,GAE3B;AACR"}
package/utils/logger.d.ts CHANGED
@@ -1,3 +1,22 @@
1
- import { LoggerWithoutCallSite as Logger } from 'tslog';
2
- export declare const logger: Logger;
1
+ import { Logger } from 'tslog';
2
+ export type LogLevelName = 'debug' | 'error' | 'info' | 'silly' | 'trace' | 'warn';
3
+ /** tslog v4 numeric minLevel by level name. */
4
+ export declare const LOG_LEVELS: Record<LogLevelName, number>;
5
+ export interface LoggerSettings {
6
+ maskAnyRegEx?: string[];
7
+ maskValuesOfKeys?: string[];
8
+ minLevel?: LogLevelName;
9
+ }
10
+ /**
11
+ * Builds a configured tslog logger. Extracted as a factory so settings logic
12
+ * is unit-testable and reused by sub-loggers.
13
+ */
14
+ export declare function createLogger(settings?: LoggerSettings): Logger<unknown>;
15
+ /**
16
+ * Applies runtime settings to an existing logger by mutating `logger.settings`
17
+ * (tslog v4 has no `setSettings`).
18
+ */
19
+ export declare function configureLogger(logger: Logger<unknown>, settings: LoggerSettings): void;
20
+ /** Global stdout logger. */
21
+ export declare const logger: Logger<unknown>;
3
22
  //# sourceMappingURL=logger.d.ts.map