@mereb/shared-packages 0.0.11 → 0.0.14
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/env.d.ts +21 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +24 -1
- package/package.json +4 -2
package/dist/config/env.d.ts
CHANGED
|
@@ -2,9 +2,30 @@ export interface EnvConfigOptions<T extends string> {
|
|
|
2
2
|
defaults?: Partial<Record<T, string>>;
|
|
3
3
|
required?: T[];
|
|
4
4
|
}
|
|
5
|
+
export type EnvSpec<K extends string = string> = {
|
|
6
|
+
key: K;
|
|
7
|
+
type: 'string';
|
|
8
|
+
fallback?: string;
|
|
9
|
+
} | {
|
|
10
|
+
key: K;
|
|
11
|
+
type: 'number';
|
|
12
|
+
fallback?: number;
|
|
13
|
+
} | {
|
|
14
|
+
key: K;
|
|
15
|
+
type: 'boolean';
|
|
16
|
+
fallback?: boolean;
|
|
17
|
+
};
|
|
18
|
+
type EnvResult<Specs extends EnvSpec[]> = {
|
|
19
|
+
[S in Specs[number] as S['key']]: S['type'] extends 'string' ? string : S['type'] extends 'number' ? number : boolean;
|
|
20
|
+
};
|
|
5
21
|
export declare function loadEnv(path?: string): void;
|
|
22
|
+
export declare function loadThenGetEnvs<const Specs extends EnvSpec[]>(options: {
|
|
23
|
+
path?: string;
|
|
24
|
+
envs: Specs;
|
|
25
|
+
}): EnvResult<Specs>;
|
|
6
26
|
export declare function getEnv<T extends string>(key: T, fallback?: string): string;
|
|
7
27
|
export declare function mustGetEnv<T extends string>(keys: T[]): Record<T, string>;
|
|
8
28
|
export declare function getBooleanEnv(key: string, fallback?: boolean): boolean;
|
|
9
29
|
export declare function getNumberEnv(key: string, fallback?: number): number;
|
|
30
|
+
export {};
|
|
10
31
|
//# sourceMappingURL=env.d.ts.map
|
package/dist/config/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;CAChB;AAED,wBAAgB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,QAKpC;AAED,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1E;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CASzE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAMpE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAanE"}
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;CAChB;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IACzC;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,GAAG,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEpD,KAAK,SAAS,CAAC,KAAK,SAAS,OAAO,EAAE,IAAI;KACvC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GACxD,MAAM,GACN,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GACxB,MAAM,GACN,OAAO;CACd,CAAC;AAEF,wBAAgB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,QAKpC;AAED,wBAAgB,eAAe,CAAC,KAAK,CAAC,KAAK,SAAS,OAAO,EAAE,EAC3D,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GACtC,SAAS,CAAC,KAAK,CAAC,CAiClB;AAED,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1E;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CASzE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAMpE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAanE"}
|
package/dist/config/env.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.loadEnv = loadEnv;
|
|
7
|
+
exports.loadThenGetEnvs = loadThenGetEnvs;
|
|
7
8
|
exports.getEnv = getEnv;
|
|
8
9
|
exports.mustGetEnv = mustGetEnv;
|
|
9
10
|
exports.getBooleanEnv = getBooleanEnv;
|
|
@@ -16,6 +17,28 @@ function loadEnv(path) {
|
|
|
16
17
|
loaded = true;
|
|
17
18
|
}
|
|
18
19
|
}
|
|
20
|
+
function loadThenGetEnvs(options) {
|
|
21
|
+
loadEnv(options.path);
|
|
22
|
+
const envs = {};
|
|
23
|
+
for (const spec of options.envs) {
|
|
24
|
+
switch (spec.type) {
|
|
25
|
+
case 'string':
|
|
26
|
+
envs[spec.key] = getEnv(spec.key, spec.fallback);
|
|
27
|
+
break;
|
|
28
|
+
case 'number':
|
|
29
|
+
envs[spec.key] = getNumberEnv(spec.key, spec.fallback);
|
|
30
|
+
break;
|
|
31
|
+
case 'boolean':
|
|
32
|
+
envs[spec.key] = getBooleanEnv(spec.key, spec.fallback ?? false);
|
|
33
|
+
break;
|
|
34
|
+
default: {
|
|
35
|
+
const _exhaustive = spec;
|
|
36
|
+
throw new Error(`Unsupported env type ${spec.type}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return envs;
|
|
41
|
+
}
|
|
19
42
|
function getEnv(key, fallback) {
|
|
20
43
|
const value = process.env[key] ?? fallback;
|
|
21
44
|
if (value === undefined) {
|
|
@@ -50,7 +73,7 @@ function getNumberEnv(key, fallback) {
|
|
|
50
73
|
}
|
|
51
74
|
const numeric = Number(value);
|
|
52
75
|
if (Number.isNaN(numeric)) {
|
|
53
|
-
throw new
|
|
76
|
+
throw new TypeError(`Environment variable ${key} must be a number`);
|
|
54
77
|
}
|
|
55
78
|
return numeric;
|
|
56
79
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mereb/shared-packages",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.14",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -40,12 +40,14 @@
|
|
|
40
40
|
"@types/node": "^20.12.7",
|
|
41
41
|
"eslint": "^8.57.0",
|
|
42
42
|
"rimraf": "^5.0.5",
|
|
43
|
-
"typescript": "^5.4.5"
|
|
43
|
+
"typescript": "^5.4.5",
|
|
44
|
+
"vitest": "^1.6.0"
|
|
44
45
|
},
|
|
45
46
|
"scripts": {
|
|
46
47
|
"build": "tsc -b",
|
|
47
48
|
"clean": "rimraf dist",
|
|
48
49
|
"lint": "eslint \"src/**/*.{ts,tsx}\"",
|
|
50
|
+
"test": "vitest run",
|
|
49
51
|
"typecheck": "tsc --noEmit",
|
|
50
52
|
"version:bump": "node ./scripts/bump-version.mjs"
|
|
51
53
|
}
|