@seedcli/config 0.1.8 → 0.1.10
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/dist/config.d.ts.map +1 -1
- package/dist/config.js +60 -7
- package/dist/config.js.map +1 -1
- package/package.json +2 -2
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAsB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrF,aAAa,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,EACtC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE9D,wBAAsB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrF,aAAa,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,EACtC,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAsC5B;AAED,wBAAsB,QAAQ,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzF,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,CAAC,CAyBZ;AAED,wBAAgB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAgDhG"}
|
package/dist/config.js
CHANGED
|
@@ -12,12 +12,14 @@ export async function load(nameOrOptions, opts) {
|
|
|
12
12
|
packageJson: options.packageJson,
|
|
13
13
|
rcFile: options.rcFile === true ? `.${options.name}rc` : options.rcFile,
|
|
14
14
|
globalRc: options.globalRc,
|
|
15
|
+
envName: options.envName,
|
|
15
16
|
});
|
|
16
17
|
// Find the config file path from layers
|
|
18
|
+
// c12 stores the file path in `configFile`, while `source` is a source identifier
|
|
17
19
|
let configFile;
|
|
18
20
|
for (const layer of result.layers ?? []) {
|
|
19
|
-
if (layer.
|
|
20
|
-
configFile = layer.
|
|
21
|
+
if (layer.configFile && typeof layer.configFile === "string") {
|
|
22
|
+
configFile = layer.configFile;
|
|
21
23
|
break;
|
|
22
24
|
}
|
|
23
25
|
}
|
|
@@ -36,15 +38,62 @@ export async function loadFile(filePath) {
|
|
|
36
38
|
const file = Bun.file(filePath);
|
|
37
39
|
const text = await file.text();
|
|
38
40
|
if (filePath.endsWith(".json")) {
|
|
39
|
-
|
|
41
|
+
try {
|
|
42
|
+
return JSON.parse(text);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
throw new Error(`Failed to parse JSON config "${filePath}": ${err instanceof Error ? err.message : String(err)}`);
|
|
46
|
+
}
|
|
40
47
|
}
|
|
41
48
|
// For JS/TS config files, use dynamic import
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
49
|
+
try {
|
|
50
|
+
const mod = await import(filePath);
|
|
51
|
+
const config = mod.default ?? mod;
|
|
52
|
+
return config;
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
throw new Error(`Failed to load config file "${filePath}": ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
56
|
+
}
|
|
45
57
|
}
|
|
46
58
|
export function get(obj, path, defaultValue) {
|
|
47
|
-
|
|
59
|
+
if (path === "") {
|
|
60
|
+
return defaultValue;
|
|
61
|
+
}
|
|
62
|
+
// Support bracket notation for keys with dots: "foo[bar.baz].qux"
|
|
63
|
+
// Also support plain dot paths: "foo.bar.qux"
|
|
64
|
+
const keys = [];
|
|
65
|
+
let i = 0;
|
|
66
|
+
while (i < path.length) {
|
|
67
|
+
if (path[i] === "[") {
|
|
68
|
+
const end = path.indexOf("]", i + 1);
|
|
69
|
+
if (end === -1) {
|
|
70
|
+
keys.push(path.slice(i));
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
keys.push(path.slice(i + 1, end));
|
|
74
|
+
i = end + 1;
|
|
75
|
+
if (path[i] === ".")
|
|
76
|
+
i++; // skip trailing dot after ]
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
const dot = path.indexOf(".", i);
|
|
80
|
+
const bracket = path.indexOf("[", i);
|
|
81
|
+
let end;
|
|
82
|
+
if (dot === -1 && bracket === -1)
|
|
83
|
+
end = path.length;
|
|
84
|
+
else if (dot === -1)
|
|
85
|
+
end = bracket;
|
|
86
|
+
else if (bracket === -1)
|
|
87
|
+
end = dot;
|
|
88
|
+
else
|
|
89
|
+
end = Math.min(dot, bracket);
|
|
90
|
+
if (end > i)
|
|
91
|
+
keys.push(path.slice(i, end));
|
|
92
|
+
i = end;
|
|
93
|
+
if (path[i] === ".")
|
|
94
|
+
i++;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
48
97
|
let current = obj;
|
|
49
98
|
for (const key of keys) {
|
|
50
99
|
if (current === null || current === undefined) {
|
|
@@ -53,6 +102,10 @@ export function get(obj, path, defaultValue) {
|
|
|
53
102
|
if (typeof current !== "object") {
|
|
54
103
|
return defaultValue;
|
|
55
104
|
}
|
|
105
|
+
// Guard against prototype pollution
|
|
106
|
+
if (key === "__proto__" || key === "constructor" || key === "prototype") {
|
|
107
|
+
return defaultValue;
|
|
108
|
+
}
|
|
56
109
|
current = current[key];
|
|
57
110
|
}
|
|
58
111
|
return (current !== undefined ? current : defaultValue);
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAGjC,MAAM,CAAC,KAAK,UAAU,IAAI,CACzB,aAAsC,EACtC,IAAmC;IAEnC,MAAM,OAAO,GACZ,OAAO,aAAa,KAAK,QAAQ;QAChC,CAAC,CAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,aAAa,EAAqB;QACtD,CAAC,CAAC,aAAa,CAAC;IAElB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;QAC/B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,OAAO,CAAC,QAAmC;QACrD,SAAS,EAAE,OAAO,CAAC,SAAoC;QACvD,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM;QACvE,QAAQ,EAAE,OAAO,CAAC,QAAQ;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seedcli/config",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"description": "Configuration loading with c12 (supports .ts, .js, .json, .yaml)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"exports": {
|
|
30
30
|
".": {
|
|
31
31
|
"import": "./dist/index.js",
|
|
32
|
-
"types": "./dist/index.
|
|
32
|
+
"types": "./dist/index.js"
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"files": [
|