Skip to content

Commit c77d3f0

Browse files
committed
🎵
1 parent f1863fb commit c77d3f0

File tree

1 file changed

+7
-21
lines changed

1 file changed

+7
-21
lines changed

‎node/src/env.ts‎

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,11 @@
11
import {iter_first_not_null} from "@gaubee/util";
22

3-
type CustomEnvConfig<T = unknown, Env = unknown> = {
4-
default: (env: Env) => T;
5-
stringify: (v: T, env: Env) => string;
6-
parse: (v: string, env: Env) => T;
7-
};
8-
type CustomEnvGetter<Env> = (env: Env) => string;
9-
type EnvConfig<Env = unknown> = string | number | boolean | CustomEnvConfig<unknown, Env> | CustomEnvGetter<Env>;
10-
export type DefineEnv<P extends string, KV extends Record<string, EnvConfig<any>>> = {
11-
[K in keyof KV as `${Uppercase<P>}_${Uppercase<K & string>}`]: KV[K] extends CustomEnvConfig<infer V> ? V : KV[K] extends CustomEnvGetter<any> ? string : KV[K];
12-
// defineEnv<P2 extends string, KV2 extends Record<string, EnvConfig<>>>()
13-
};
14-
export type DefineEnvChain<P extends string, Env> = Env & {
15-
and<KV2 extends Record<string, EnvConfig<Env>>>(kv: KV2, env?: Record<string, string>): DefineEnvChain<P, Env & DefineEnv<P, KV2>>;
16-
end(): Env;
17-
};
3+
type CommonEnv = Record<string, string | undefined>;
184

195
declare const process: any;
206
export const nodeEnvSource = () => process.env;
217
declare const Deno: any;
22-
export const denoEnvSource = () =>
8+
export const denoEnvSource = (): CommonEnv =>
239
new Proxy(
2410
{},
2511
{
@@ -33,8 +19,8 @@ export const denoEnvSource = () =>
3319
},
3420
);
3521
declare const Bun: any;
36-
export const bunEnvSource = () => Bun.env;
37-
export const storageEnvSource = (storages: Storage[] = [sessionStorage, localStorage]) =>
22+
export const bunEnvSource = (): CommonEnv => Bun.env;
23+
export const storageEnvSource = (storages: Storage[] = [sessionStorage, localStorage]): CommonEnv =>
3824
new Proxy(
3925
{},
4026
{
@@ -55,7 +41,7 @@ export const storageEnvSource = (storages: Storage[] = [sessionStorage, localSto
5541
},
5642
},
5743
);
58-
export const autoEnvSource = (fallback: () => Record<string, string> = () => ({})): Record<string, string | undefined> => {
44+
export const autoEnvSource = (fallback: () => Record<string, string> = () => ({})): CommonEnv => {
5945
return (
6046
iter_first_not_null(
6147
[
@@ -101,8 +87,8 @@ type SaveEnvReturn<T extends Record<string, Parser>> = {
10187
* @param envShape
10288
* @returns
10389
*/
104-
export const defineSafeEnv = <ENV extends Record<string, Parser>>(envShape: ENV) => {
105-
return (source: Record<string, string | undefined> = autoEnvSource()): SaveEnvReturn<ENV> => {
90+
export const defineSafeEnv = <ENV extends Record<string, Parser>>(envShape: ENV): ((source?: CommonEnv) => SaveEnvReturn<ENV>) => {
91+
return (source: CommonEnv = autoEnvSource()): SaveEnvReturn<ENV> => {
10692
const env: any = {};
10793
for (const prop in envShape) {
10894
const parser = envShape[prop as keyof ENV];

0 commit comments

Comments
 (0)