@lindorm/config 0.1.2 → 0.2.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/.node_config.json +3 -0
- package/.node_config.yml +3 -0
- package/CHANGELOG.md +12 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +56 -0
- package/dist/cli.js.map +1 -0
- package/dist/types/types.d.ts +8 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/utils/configuration.d.ts +3 -13
- package/dist/utils/configuration.d.ts.map +1 -1
- package/dist/utils/configuration.js +14 -9
- package/dist/utils/configuration.js.map +1 -1
- package/dist/utils/private/coerce-all.d.ts +3 -0
- package/dist/utils/private/coerce-all.d.ts.map +1 -0
- package/dist/utils/private/coerce-all.js +33 -0
- package/dist/utils/private/coerce-all.js.map +1 -0
- package/dist/utils/private/find-process-env-value.d.ts +1 -1
- package/dist/utils/private/find-process-env-value.d.ts.map +1 -1
- package/dist/utils/private/find-process-env-value.js +6 -16
- package/dist/utils/private/find-process-env-value.js.map +1 -1
- package/dist/utils/private/index.d.ts +3 -1
- package/dist/utils/private/index.d.ts.map +1 -1
- package/dist/utils/private/index.js +3 -1
- package/dist/utils/private/index.js.map +1 -1
- package/dist/utils/private/load-config.d.ts +4 -0
- package/dist/utils/private/load-config.d.ts.map +1 -0
- package/dist/utils/private/load-config.js +16 -0
- package/dist/utils/private/load-config.js.map +1 -0
- package/dist/utils/private/load-node-config.d.ts +4 -0
- package/dist/utils/private/load-node-config.d.ts.map +1 -0
- package/dist/utils/private/load-node-config.js +17 -0
- package/dist/utils/private/load-node-config.js.map +1 -0
- package/dist/utils/private/merge-object-with-process-env.d.ts +1 -1
- package/dist/utils/private/merge-object-with-process-env.d.ts.map +1 -1
- package/dist/utils/private/merge-object-with-process-env.js +13 -6
- package/dist/utils/private/merge-object-with-process-env.js.map +1 -1
- package/package.json +19 -9
- package/dist/utils/private/merge-value-with-process-env.d.ts +0 -3
- package/dist/utils/private/merge-value-with-process-env.d.ts.map +0 -1
- package/dist/utils/private/merge-value-with-process-env.js +0 -10
- package/dist/utils/private/merge-value-with-process-env.js.map +0 -1
package/.node_config.yml
ADDED
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,18 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
5
5
|
|
6
|
+
# [0.2.0](https://github.com/lindorm-io/monorepo/compare/@lindorm/config@0.1.2...@lindorm/config@0.2.0) (2025-06-17)
|
7
|
+
|
8
|
+
### Bug Fixes
|
9
|
+
|
10
|
+
- solve issues with merge ([6561027](https://github.com/lindorm-io/monorepo/commit/6561027172f31f154be84f122a68c1361399abd3))
|
11
|
+
- update cli ([552a9f0](https://github.com/lindorm-io/monorepo/commit/552a9f0a0839d756d9e856b7a6842aee4e01cac5))
|
12
|
+
|
13
|
+
### Features
|
14
|
+
|
15
|
+
- add cli for generating node_config env ([57e5ff9](https://github.com/lindorm-io/monorepo/commit/57e5ff9cad0aa655420f6232f23ae526545331b4))
|
16
|
+
- use zod to coerce and validate config ([03ed9b6](https://github.com/lindorm-io/monorepo/commit/03ed9b65f95bab3168a081c669118b3ed6d45538))
|
17
|
+
|
6
18
|
## [0.1.2](https://github.com/lindorm-io/monorepo/compare/@lindorm/config@0.1.1...@lindorm/config@0.1.2) (2025-01-28)
|
7
19
|
|
8
20
|
**Note:** Version bump only for package @lindorm/config
|
package/dist/cli.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
#!/usr/bin/env node
|
2
|
+
"use strict";
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
4
|
+
const commander_1 = require("commander");
|
5
|
+
const fs_1 = require("fs");
|
6
|
+
const js_yaml_1 = require("js-yaml");
|
7
|
+
const path_1 = require("path");
|
8
|
+
commander_1.program.name("config").description("CLI for managing configuration files");
|
9
|
+
const parseFile = (file) => {
|
10
|
+
if (file.endsWith(".json")) {
|
11
|
+
return parseJson(file);
|
12
|
+
}
|
13
|
+
if (file.endsWith(".yml") || file.endsWith(".yaml")) {
|
14
|
+
return parseYaml(file);
|
15
|
+
}
|
16
|
+
throw new Error("Unsupported file type");
|
17
|
+
};
|
18
|
+
const parseJson = (file) => JSON.parse((0, fs_1.readFileSync)(file, "utf-8"));
|
19
|
+
const parseYaml = (file) => (0, js_yaml_1.load)((0, fs_1.readFileSync)(file, "utf-8"));
|
20
|
+
commander_1.program
|
21
|
+
.command("node_config")
|
22
|
+
.description("Generate a NODE_CONFIG environment string from existing .node_config file")
|
23
|
+
.option("-f, --file <file>", "Path to the .node_config(?.json|yml|yaml) file", ".node_config")
|
24
|
+
.action((options) => {
|
25
|
+
try {
|
26
|
+
if (options.file !== ".node_config" &&
|
27
|
+
!(0, fs_1.existsSync)((0, path_1.join)(process.cwd(), options.file))) {
|
28
|
+
throw new Error(`File ${options.file} does not exist. Please provide a valid path to a .node_config file.`);
|
29
|
+
}
|
30
|
+
let file = options.file;
|
31
|
+
let result = "";
|
32
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(process.cwd(), options.file))) {
|
33
|
+
file = options.file;
|
34
|
+
}
|
35
|
+
else if ((0, fs_1.existsSync)((0, path_1.join)(process.cwd(), ".node_config.json"))) {
|
36
|
+
file = (0, path_1.join)(process.cwd(), ".node_config.json");
|
37
|
+
}
|
38
|
+
else if ((0, fs_1.existsSync)((0, path_1.join)(process.cwd(), ".node_config.yml"))) {
|
39
|
+
file = (0, path_1.join)(process.cwd(), ".node_config.yml");
|
40
|
+
}
|
41
|
+
else if ((0, fs_1.existsSync)((0, path_1.join)(process.cwd(), ".node_config.yaml"))) {
|
42
|
+
file = (0, path_1.join)(process.cwd(), ".node_config.yaml");
|
43
|
+
}
|
44
|
+
else {
|
45
|
+
throw new Error("No .node_config file found. Please provide a valid path to a .node_config file.");
|
46
|
+
}
|
47
|
+
result = JSON.stringify(parseFile(file)).replace(/'/g, "'\\''");
|
48
|
+
console.log(`\nInsert the following into your env:\n\nNODE_CONFIG='${result}'\n`);
|
49
|
+
}
|
50
|
+
catch (error) {
|
51
|
+
console.error(error.message);
|
52
|
+
process.exit(1);
|
53
|
+
}
|
54
|
+
});
|
55
|
+
commander_1.program.parse();
|
56
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/types/types.d.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC"}
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG;IAAE,GAAG,EAAE;QAAE,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,CAAC;AAErF,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC"}
|
@@ -1,14 +1,4 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
|
4
|
-
npm: {
|
5
|
-
package: {
|
6
|
-
name: string;
|
7
|
-
version: string;
|
8
|
-
};
|
9
|
-
};
|
10
|
-
};
|
11
|
-
type Configuration<T extends Dict = Dict> = NpmInformation & T;
|
12
|
-
export declare const configuration: <T extends Dict = Dict>(mode?: ChangeCase) => Configuration<T>;
|
13
|
-
export {};
|
1
|
+
import { ZodRawShape } from "zod";
|
2
|
+
import { NpmInformation } from "../types";
|
3
|
+
export declare const configuration: <T extends ZodRawShape>(schema: T) => NpmInformation & T;
|
14
4
|
//# sourceMappingURL=configuration.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/utils/configuration.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/utils/configuration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,WAAW,EAAE,QAAQ,CAAC,KAAG,cAAc,GAAG,CAuBjF,CAAC"}
|
@@ -5,23 +5,28 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
6
|
exports.configuration = void 0;
|
7
7
|
const dotenvx_1 = __importDefault(require("@dotenvx/dotenvx"));
|
8
|
-
const
|
9
|
-
const
|
8
|
+
const utils_1 = require("@lindorm/utils");
|
9
|
+
const zod_1 = require("zod");
|
10
10
|
const private_1 = require("./private");
|
11
|
-
const configuration = (
|
11
|
+
const configuration = (schema) => {
|
12
12
|
dotenvx_1.default.config({
|
13
13
|
path: process.env.NODE_ENV ? [`.env.${process.env.NODE_ENV}`, ".env"] : ".env",
|
14
14
|
quiet: true,
|
15
15
|
});
|
16
|
-
const
|
17
|
-
const
|
16
|
+
const config = (0, private_1.loadConfig)(process.env);
|
17
|
+
const node = (0, private_1.loadNodeConfig)(process.env);
|
18
|
+
const merged = (0, utils_1.merge)(config, node);
|
19
|
+
const zod = (0, private_1.coerceAll)(zod_1.z.object(schema));
|
20
|
+
const parsed = zod.parse(merged);
|
18
21
|
const npm = {
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
+
npm: {
|
23
|
+
package: {
|
24
|
+
name: process.env.npm_package_name || "",
|
25
|
+
version: process.env.npm_package_version || "",
|
26
|
+
},
|
22
27
|
},
|
23
28
|
};
|
24
|
-
return
|
29
|
+
return (0, utils_1.merge)(parsed, npm);
|
25
30
|
};
|
26
31
|
exports.configuration = configuration;
|
27
32
|
//# sourceMappingURL=configuration.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/utils/configuration.ts"],"names":[],"mappings":";;;;;;AAAA,+DAAuC;AACvC,
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/utils/configuration.ts"],"names":[],"mappings":";;;;;;AAAA,+DAAuC;AACvC,0CAAuC;AACvC,6BAAqC;AAErC,uCAAkE;AAE3D,MAAM,aAAa,GAAG,CAAwB,MAAS,EAAsB,EAAE;IACpF,iBAAO,CAAC,MAAM,CAAC;QACb,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;QAC9E,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,IAAA,wBAAc,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAA,aAAK,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEnC,MAAM,GAAG,GAAG,IAAA,mBAAS,EAAC,OAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAEjC,MAAM,GAAG,GAAG;QACV,GAAG,EAAE;YACH,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE;gBACxC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE;aAC/C;SACF;KACF,CAAC;IAEF,OAAO,IAAA,aAAK,EAAqB,MAAM,EAAE,GAAU,CAAC,CAAC;AACvD,CAAC,CAAC;AAvBW,QAAA,aAAa,iBAuBxB"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"coerce-all.d.ts","sourceRoot":"","sources":["../../../src/utils/private/coerce-all.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,UAAU,EAAE,MAAM,KAAK,CAAC;AAE3D,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,UAAU,EAAE,QAAQ,CAAC,KAAG,CAkC3D,CAAC"}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.coerceAll = void 0;
|
4
|
+
const zod_1 = require("zod");
|
5
|
+
const coerceAll = (schema) => {
|
6
|
+
const def = schema._def;
|
7
|
+
switch (def.typeName) {
|
8
|
+
case zod_1.ZodFirstPartyTypeKind.ZodString:
|
9
|
+
return zod_1.z.coerce.string(def);
|
10
|
+
case zod_1.ZodFirstPartyTypeKind.ZodNumber:
|
11
|
+
return zod_1.z.coerce.number(def);
|
12
|
+
case zod_1.ZodFirstPartyTypeKind.ZodBoolean:
|
13
|
+
return zod_1.z.coerce.boolean(def);
|
14
|
+
case zod_1.ZodFirstPartyTypeKind.ZodDate:
|
15
|
+
return zod_1.z.coerce.date(def);
|
16
|
+
case zod_1.ZodFirstPartyTypeKind.ZodBigInt:
|
17
|
+
return zod_1.z.coerce.bigint(def);
|
18
|
+
case zod_1.ZodFirstPartyTypeKind.ZodArray:
|
19
|
+
return zod_1.z.array((0, exports.coerceAll)(def.type), def);
|
20
|
+
case zod_1.ZodFirstPartyTypeKind.ZodObject: {
|
21
|
+
const shape = def.shape();
|
22
|
+
const newShape = {};
|
23
|
+
for (const key in shape) {
|
24
|
+
newShape[key] = (0, exports.coerceAll)(shape[key]);
|
25
|
+
}
|
26
|
+
return zod_1.z.object(newShape, def);
|
27
|
+
}
|
28
|
+
default:
|
29
|
+
return schema;
|
30
|
+
}
|
31
|
+
};
|
32
|
+
exports.coerceAll = coerceAll;
|
33
|
+
//# sourceMappingURL=coerce-all.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"coerce-all.js","sourceRoot":"","sources":["../../../src/utils/private/coerce-all.ts"],"names":[],"mappings":";;;AACA,6BAA2D;AAEpD,MAAM,SAAS,GAAG,CAAuB,MAAS,EAAK,EAAE;IAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC;IAExB,QAAQ,GAAG,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,2BAAqB,CAAC,SAAS;YAClC,OAAO,OAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAQ,CAAC;QAErC,KAAK,2BAAqB,CAAC,SAAS;YAClC,OAAO,OAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAQ,CAAC;QAErC,KAAK,2BAAqB,CAAC,UAAU;YACnC,OAAO,OAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAQ,CAAC;QAEtC,KAAK,2BAAqB,CAAC,OAAO;YAChC,OAAO,OAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAQ,CAAC;QAEnC,KAAK,2BAAqB,CAAC,SAAS;YAClC,OAAO,OAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAQ,CAAC;QAErC,KAAK,2BAAqB,CAAC,QAAQ;YACjC,OAAO,OAAC,CAAC,KAAK,CAAC,IAAA,iBAAS,EAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAQ,CAAC;QAElD,KAAK,2BAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;YACrC,MAAM,KAAK,GAAI,GAAG,CAAC,KAAgC,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAqB,EAAE,CAAC;YACtC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAA,iBAAS,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,OAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAQ,CAAC;QACxC,CAAC;QAED;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAlCW,QAAA,SAAS,aAkCpB"}
|
@@ -1,3 +1,3 @@
|
|
1
1
|
import { ProcessEnv } from "../../types";
|
2
|
-
export declare const findProcessEnvValue: (processEnv: ProcessEnv, key: string,
|
2
|
+
export declare const findProcessEnvValue: (processEnv: ProcessEnv, key: string, parent?: string) => any;
|
3
3
|
//# sourceMappingURL=find-process-env-value.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"find-process-env-value.d.ts","sourceRoot":"","sources":["../../../src/utils/private/find-process-env-value.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"find-process-env-value.d.ts","sourceRoot":"","sources":["../../../src/utils/private/find-process-env-value.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,eAAO,MAAM,mBAAmB,GAC9B,YAAY,UAAU,EACtB,KAAK,MAAM,EACX,SAAS,MAAM,KACd,GAQF,CAAC"}
|
@@ -2,23 +2,13 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.findProcessEnvValue = void 0;
|
4
4
|
const case_1 = require("@lindorm/case");
|
5
|
-
const
|
6
|
-
const
|
7
|
-
try {
|
8
|
-
return JSON.parse(value);
|
9
|
-
}
|
10
|
-
catch {
|
11
|
-
return value;
|
12
|
-
}
|
13
|
-
};
|
14
|
-
const findProcessEnvValue = (processEnv, key, parentKey) => {
|
5
|
+
const utils_1 = require("@lindorm/utils");
|
6
|
+
const findProcessEnvValue = (processEnv, key, parent) => {
|
15
7
|
const k = (0, case_1.changeCase)(key, case_1.ChangeCase.Constant);
|
16
|
-
const
|
17
|
-
const search =
|
18
|
-
const value = processEnv[search] ? processEnv[search] :
|
19
|
-
|
20
|
-
const splitArray = (0, is_1.isString)(parsed) && parsed.includes(";") ? parsed.split(";").map(tryParse) : null;
|
21
|
-
return splitArray ? splitArray : parsed;
|
8
|
+
const pkey = parent ? (0, case_1.changeCase)(parent, case_1.ChangeCase.Constant) : undefined;
|
9
|
+
const search = pkey ? `${pkey}_${k}` : k;
|
10
|
+
const value = processEnv[search] ? processEnv[search] : undefined;
|
11
|
+
return value ? (0, utils_1.safelyParse)(value) : undefined;
|
22
12
|
};
|
23
13
|
exports.findProcessEnvValue = findProcessEnvValue;
|
24
14
|
//# sourceMappingURL=find-process-env-value.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"find-process-env-value.js","sourceRoot":"","sources":["../../../src/utils/private/find-process-env-value.ts"],"names":[],"mappings":";;;AAAA,wCAAuD;AACvD,
|
1
|
+
{"version":3,"file":"find-process-env-value.js","sourceRoot":"","sources":["../../../src/utils/private/find-process-env-value.ts"],"names":[],"mappings":";;;AAAA,wCAAuD;AACvD,0CAA6C;AAGtC,MAAM,mBAAmB,GAAG,CACjC,UAAsB,EACtB,GAAW,EACX,MAAe,EACV,EAAE;IACP,MAAM,CAAC,GAAG,IAAA,iBAAU,EAAC,GAAG,EAAE,iBAAU,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAA,iBAAU,EAAC,MAAM,EAAE,iBAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1E,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAElE,OAAO,KAAK,CAAC,CAAC,CAAC,IAAA,mBAAW,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC,CAAC;AAZW,QAAA,mBAAmB,uBAY9B"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/private/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/private/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
|
@@ -14,5 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
-
__exportStar(require("./
|
17
|
+
__exportStar(require("./coerce-all"), exports);
|
18
|
+
__exportStar(require("./load-config"), exports);
|
19
|
+
__exportStar(require("./load-node-config"), exports);
|
18
20
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/private/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/private/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,gDAA8B;AAC9B,qDAAmC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"load-config.d.ts","sourceRoot":"","sources":["../../../src/utils/private/load-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,eAAO,MAAM,UAAU,GAAI,YAAY,UAAU,KAAG,IAKnD,CAAC"}
|
@@ -0,0 +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.loadConfig = void 0;
|
7
|
+
const case_1 = require("@lindorm/case");
|
8
|
+
const config_1 = __importDefault(require("config"));
|
9
|
+
const merge_object_with_process_env_1 = require("./merge-object-with-process-env");
|
10
|
+
const loadConfig = (processEnv) => {
|
11
|
+
const config = config_1.default.util.toObject();
|
12
|
+
const merged = (0, merge_object_with_process_env_1.mergeObjectWithProcessEnv)(processEnv, config);
|
13
|
+
return (0, case_1.changeKeys)(merged, case_1.ChangeCase.Camel);
|
14
|
+
};
|
15
|
+
exports.loadConfig = loadConfig;
|
16
|
+
//# sourceMappingURL=load-config.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"load-config.js","sourceRoot":"","sources":["../../../src/utils/private/load-config.ts"],"names":[],"mappings":";;;;;;AAAA,wCAAuD;AAEvD,oDAAuB;AAEvB,mFAA4E;AAErE,MAAM,UAAU,GAAG,CAAC,UAAsB,EAAQ,EAAE;IACzD,MAAM,MAAM,GAAG,gBAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,IAAA,yDAAyB,EAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAE7D,OAAO,IAAA,iBAAU,EAAC,MAAM,EAAE,iBAAU,CAAC,KAAK,CAAC,CAAC;AAC9C,CAAC,CAAC;AALW,QAAA,UAAU,cAKrB"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"load-node-config.d.ts","sourceRoot":"","sources":["../../../src/utils/private/load-node-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,eAAO,MAAM,cAAc,GAAI,YAAY,UAAU,KAAG,IAYvD,CAAC"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.loadNodeConfig = void 0;
|
4
|
+
const is_1 = require("@lindorm/is");
|
5
|
+
const utils_1 = require("@lindorm/utils");
|
6
|
+
const loadNodeConfig = (processEnv) => {
|
7
|
+
if (!processEnv.NODE_CONFIG)
|
8
|
+
return {};
|
9
|
+
if (!(0, is_1.isString)(processEnv.NODE_CONFIG) ||
|
10
|
+
!processEnv.NODE_CONFIG.startsWith("{") ||
|
11
|
+
!processEnv.NODE_CONFIG.endsWith("}")) {
|
12
|
+
throw new Error("Environment variable NODE_CONFIG must be a valid JSON string");
|
13
|
+
}
|
14
|
+
return (0, utils_1.safelyParse)(processEnv.NODE_CONFIG);
|
15
|
+
};
|
16
|
+
exports.loadNodeConfig = loadNodeConfig;
|
17
|
+
//# sourceMappingURL=load-node-config.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"load-node-config.js","sourceRoot":"","sources":["../../../src/utils/private/load-node-config.ts"],"names":[],"mappings":";;;AAAA,oCAAuC;AAEvC,0CAA6C;AAGtC,MAAM,cAAc,GAAG,CAAC,UAAsB,EAAQ,EAAE;IAC7D,IAAI,CAAC,UAAU,CAAC,WAAW;QAAE,OAAO,EAAE,CAAC;IAEvC,IACE,CAAC,IAAA,aAAQ,EAAC,UAAU,CAAC,WAAW,CAAC;QACjC,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC;QACvC,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EACrC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,IAAA,mBAAW,EAAO,UAAU,CAAC,WAAW,CAAC,CAAC;AACnD,CAAC,CAAC;AAZW,QAAA,cAAc,kBAYzB"}
|
@@ -1,4 +1,4 @@
|
|
1
1
|
import { Dict } from "@lindorm/types";
|
2
2
|
import { ProcessEnv } from "../../types";
|
3
|
-
export declare const mergeObjectWithProcessEnv:
|
3
|
+
export declare const mergeObjectWithProcessEnv: (processEnv: ProcessEnv, config: Dict, parent?: string) => Dict;
|
4
4
|
//# sourceMappingURL=merge-object-with-process-env.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"merge-object-with-process-env.d.ts","sourceRoot":"","sources":["../../../src/utils/private/merge-object-with-process-env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,eAAO,MAAM,yBAAyB,
|
1
|
+
{"version":3,"file":"merge-object-with-process-env.d.ts","sourceRoot":"","sources":["../../../src/utils/private/merge-object-with-process-env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,eAAO,MAAM,yBAAyB,GACpC,YAAY,UAAU,EACtB,QAAQ,IAAI,EACZ,SAAS,MAAM,KACd,IAqBF,CAAC"}
|
@@ -2,14 +2,21 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.mergeObjectWithProcessEnv = void 0;
|
4
4
|
const is_1 = require("@lindorm/is");
|
5
|
-
const
|
6
|
-
const mergeObjectWithProcessEnv = (processEnv, config,
|
5
|
+
const find_process_env_value_1 = require("./find-process-env-value");
|
6
|
+
const mergeObjectWithProcessEnv = (processEnv, config, parent) => {
|
7
7
|
const result = {};
|
8
8
|
for (const [key, value] of Object.entries(config)) {
|
9
|
-
const
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
const env = (0, find_process_env_value_1.findProcessEnvValue)(processEnv, key, parent);
|
10
|
+
if (!(0, is_1.isUndefined)(env)) {
|
11
|
+
result[key] = env;
|
12
|
+
continue;
|
13
|
+
}
|
14
|
+
if ((0, is_1.isObject)(value)) {
|
15
|
+
const pkey = parent ? `${parent}_${key}` : key;
|
16
|
+
result[key] = (0, exports.mergeObjectWithProcessEnv)(processEnv, value, pkey);
|
17
|
+
continue;
|
18
|
+
}
|
19
|
+
result[key] = value;
|
13
20
|
}
|
14
21
|
return result;
|
15
22
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"merge-object-with-process-env.js","sourceRoot":"","sources":["../../../src/utils/private/merge-object-with-process-env.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"merge-object-with-process-env.js","sourceRoot":"","sources":["../../../src/utils/private/merge-object-with-process-env.ts"],"names":[],"mappings":";;;AAAA,oCAAoD;AAGpD,qEAA+D;AAExD,MAAM,yBAAyB,GAAG,CACvC,UAAsB,EACtB,MAAY,EACZ,MAAe,EACT,EAAE;IACR,MAAM,MAAM,GAAS,EAAE,CAAC;IAExB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,IAAA,4CAAmB,EAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAEzD,IAAI,CAAC,IAAA,gBAAW,EAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,IAAA,aAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,iCAAyB,EAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACjE,SAAS;QACX,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAzBW,QAAA,yBAAyB,6BAyBpC"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@lindorm/config",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.2.0",
|
4
4
|
"license": "AGPL-3.0-or-later",
|
5
5
|
"author": "Jonn Nilsson",
|
6
6
|
"repository": {
|
@@ -14,28 +14,38 @@
|
|
14
14
|
"main": "dist/index.js",
|
15
15
|
"typings": "dist/index.d.ts",
|
16
16
|
"scripts": {
|
17
|
-
"build": "rimraf dist && tsc -b ./tsconfig.build.json",
|
17
|
+
"build": "rimraf dist && tsc -b ./tsconfig.build.json && chmod +x dist/cli.js",
|
18
18
|
"example": "ts-node example",
|
19
19
|
"integration": "compd --file docker-compose.yml jest --config jest.config.integration.js --watch",
|
20
20
|
"integration:focus": "compd --file docker-compose.yml jest --config jest.config.integration.js --watch $1",
|
21
|
+
"prettier": "prettier --write ./src/*",
|
21
22
|
"test": "jest --watch --",
|
22
23
|
"test:ci": "npm run test:unit",
|
23
24
|
"test:integration": "jest --config jest.config.integration.js --",
|
24
25
|
"test:unit": "jest --config jest.config.js --",
|
25
26
|
"typecheck": "tsc --watch",
|
26
27
|
"typecheck:ci": "tsc",
|
27
|
-
"update": "ncu -
|
28
|
+
"update": "ncu -i",
|
29
|
+
"update:auto": "ncu -u"
|
30
|
+
},
|
31
|
+
"bin": {
|
32
|
+
"config": "dist/cli.js"
|
28
33
|
},
|
29
34
|
"dependencies": {
|
30
35
|
"@dotenvx/dotenvx": "^1.10.3",
|
31
|
-
"@lindorm/case": "^0.1.
|
32
|
-
"@lindorm/is": "^0.1.
|
36
|
+
"@lindorm/case": "^0.1.8",
|
37
|
+
"@lindorm/is": "^0.1.8",
|
38
|
+
"@lindorm/utils": "^0.5.0",
|
39
|
+
"commander": "^13.1.0",
|
33
40
|
"config": "^3.3.12",
|
34
|
-
"dotenv": "^16.4.5"
|
41
|
+
"dotenv": "^16.4.5",
|
42
|
+
"js-yaml": "^4.1.0",
|
43
|
+
"zod": "^3.24.3"
|
35
44
|
},
|
36
45
|
"devDependencies": {
|
37
|
-
"@lindorm/types": "^0.
|
38
|
-
"@types/config": "^3.3.4"
|
46
|
+
"@lindorm/types": "^0.3.0",
|
47
|
+
"@types/config": "^3.3.4",
|
48
|
+
"@types/js-yaml": "^4.0.9"
|
39
49
|
},
|
40
|
-
"gitHead": "
|
50
|
+
"gitHead": "c1800f039a816f7ebce30379f8dce9c53ea9f5d1"
|
41
51
|
}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"merge-value-with-process-env.d.ts","sourceRoot":"","sources":["../../../src/utils/private/merge-value-with-process-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,eAAO,MAAM,wBAAwB,eACvB,UAAU,SACf,MAAM,OACR,MAAM,cACC,MAAM,KACjB,MAIF,CAAC"}
|
@@ -1,10 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.mergeValueWithProcessEnv = void 0;
|
4
|
-
const find_process_env_value_1 = require("./find-process-env-value");
|
5
|
-
const mergeValueWithProcessEnv = (processEnv, value, key, parentKey) => {
|
6
|
-
const envValue = (0, find_process_env_value_1.findProcessEnvValue)(processEnv, key, parentKey);
|
7
|
-
return envValue ? envValue : value;
|
8
|
-
};
|
9
|
-
exports.mergeValueWithProcessEnv = mergeValueWithProcessEnv;
|
10
|
-
//# sourceMappingURL=merge-value-with-process-env.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"merge-value-with-process-env.js","sourceRoot":"","sources":["../../../src/utils/private/merge-value-with-process-env.ts"],"names":[],"mappings":";;;AACA,qEAA+D;AAExD,MAAM,wBAAwB,GAAG,CACtC,UAAsB,EACtB,KAAa,EACb,GAAW,EACX,SAAkB,EACV,EAAE;IACV,MAAM,QAAQ,GAAG,IAAA,4CAAmB,EAAC,UAAU,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAEjE,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACrC,CAAC,CAAC;AATW,QAAA,wBAAwB,4BASnC"}
|