Skip to content

Commit 483e58a

Browse files
feat(envconfig): add output types
1 parent eb9428f commit 483e58a

File tree

2 files changed

+344
-42
lines changed

2 files changed

+344
-42
lines changed

examples/envconfig.ts

+196
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
import { parse } from "../src/envconfig.ts";
2+
3+
const env = {
4+
MYAPP_PORT: "3003",
5+
};
6+
7+
const envconfig = {
8+
myapp: {
9+
bool: {
10+
optionalAliasArray: "`bool[]",
11+
requiredAliasArray: "`bool[]`required",
12+
optional: "`bool",
13+
required: "`bool`required",
14+
optionalSplitValues: "`bool`split_values",
15+
requiredSplitValues: "`bool`split_values`required",
16+
},
17+
number: {
18+
optionalAliasArray: "`number[]",
19+
requiredAliasArray: "`number[]`required",
20+
optional: "`number",
21+
required: "`number`required",
22+
optionalSplitValues: "`number`split_values",
23+
requiredSplitValues: "`number`split_values`required",
24+
},
25+
string: {
26+
optionalAliasArray: "`string[]",
27+
requiredAliasArray: "`string[]`required",
28+
optional: "`string",
29+
required: "`string`required",
30+
optionalSplitValues: "`string`split_values",
31+
requiredSplitValues: "`string`split_values`required",
32+
},
33+
date: {
34+
optionalAliasArray: "`date[]",
35+
requiredAliasArray: "`date[]`required",
36+
optional: "`date",
37+
required: "`date`required",
38+
optionalSplitValues: "`date`split_values",
39+
requiredSplitValues: "`date`split_values`required",
40+
},
41+
},
42+
} as const;
43+
44+
const out = parse(env, envconfig);
45+
46+
type OutType = typeof out;
47+
48+
// bool[]
49+
out.myapp.bool.optionalAliasArray;
50+
let bool_optionalAliasArray: typeof out.myapp.bool.optionalAliasArray =
51+
undefined as boolean[] | undefined;
52+
void bool_optionalAliasArray;
53+
54+
// bool[]`required
55+
out.myapp.bool.requiredAliasArray;
56+
let bool_requiredAliasArray: typeof out.myapp.bool.requiredAliasArray = [true];
57+
void bool_requiredAliasArray;
58+
59+
// bool
60+
out.myapp.bool.optional;
61+
let bool_optional: typeof out.myapp.bool.optional = undefined as
62+
| boolean
63+
| undefined;
64+
void bool_optional;
65+
66+
// bool`required
67+
out.myapp.bool.required;
68+
let bool_required: typeof out.myapp.bool.required = true;
69+
void bool_required;
70+
71+
// `bool`split_values
72+
out.myapp.bool.optionalSplitValues;
73+
let bool_optionalSplitValues: typeof out.myapp.bool.optionalSplitValues =
74+
undefined as boolean[] | undefined;
75+
void bool_optionalSplitValues;
76+
77+
// `bool`split_values`required
78+
out.myapp.bool.requiredSplitValues;
79+
let bool_requiredSplitValues: typeof out.myapp.bool.requiredSplitValues = [
80+
true,
81+
];
82+
void bool_requiredSplitValues;
83+
84+
// number[]
85+
out.myapp.number.optionalAliasArray;
86+
let number_optionalAliasArray: typeof out.myapp.number.optionalAliasArray =
87+
undefined as number[] | undefined;
88+
void number_optionalAliasArray;
89+
90+
// number[]`required
91+
out.myapp.number.requiredAliasArray;
92+
let number_requiredAliasArray: typeof out.myapp.number.requiredAliasArray = [
93+
1,
94+
];
95+
void number_requiredAliasArray;
96+
97+
// number
98+
out.myapp.number.optional;
99+
let number_optional: typeof out.myapp.number.optional = undefined as
100+
| number
101+
| undefined;
102+
void number_optional;
103+
104+
// number`required
105+
out.myapp.number.required;
106+
let number_required: typeof out.myapp.number.required = 1;
107+
void number_required;
108+
109+
// `number`split_values
110+
out.myapp.number.optionalSplitValues;
111+
let number_optionalSplitValues: typeof out.myapp.number.optionalSplitValues =
112+
undefined as number[] | undefined;
113+
void number_optionalSplitValues;
114+
115+
// `number`split_values`required
116+
out.myapp.number.requiredSplitValues;
117+
let number_requiredSplitValues: typeof out.myapp.number.requiredSplitValues = [
118+
1,
119+
];
120+
void number_requiredSplitValues;
121+
122+
// string[]
123+
out.myapp.string.optionalAliasArray;
124+
let string_optionalAliasArray: typeof out.myapp.string.optionalAliasArray =
125+
undefined as string[] | undefined;
126+
void string_optionalAliasArray;
127+
128+
// string[]`required
129+
out.myapp.string.requiredAliasArray;
130+
let string_requiredAliasArray: typeof out.myapp.string.requiredAliasArray = [
131+
"",
132+
];
133+
void string_requiredAliasArray;
134+
135+
// string
136+
out.myapp.string.optional;
137+
let string_optional: typeof out.myapp.string.optional = undefined as
138+
| string
139+
| undefined;
140+
void string_optional;
141+
142+
// string`required
143+
out.myapp.string.required;
144+
let string_required: typeof out.myapp.string.required = "";
145+
void string_required;
146+
147+
// `string`split_values
148+
out.myapp.string.optionalSplitValues;
149+
let string_optionalSplitValues: typeof out.myapp.string.optionalSplitValues =
150+
undefined as string[] | undefined;
151+
void string_optionalSplitValues;
152+
153+
// `string`split_values`required
154+
out.myapp.string.requiredSplitValues;
155+
let string_requiredSplitValues: typeof out.myapp.string.requiredSplitValues = [
156+
"",
157+
];
158+
void string_requiredSplitValues;
159+
160+
// date[]
161+
out.myapp.date.optionalAliasArray;
162+
let date_optionalAliasArray: typeof out.myapp.date.optionalAliasArray =
163+
undefined as Date[] | undefined;
164+
void date_optionalAliasArray;
165+
166+
// date[]`required
167+
out.myapp.date.requiredAliasArray;
168+
let date_requiredAliasArray: typeof out.myapp.date.requiredAliasArray = [
169+
new Date(),
170+
];
171+
void date_requiredAliasArray;
172+
173+
// date
174+
out.myapp.date.optional;
175+
let date_optional: typeof out.myapp.date.optional = undefined as
176+
| Date
177+
| undefined;
178+
void date_optional;
179+
180+
// date`required
181+
out.myapp.date.required;
182+
let date_required: typeof out.myapp.date.required = new Date();
183+
void date_required;
184+
185+
// `date`split_values
186+
out.myapp.date.optionalSplitValues;
187+
let date_optionalSplitValues: typeof out.myapp.date.optionalSplitValues =
188+
undefined as Date[] | undefined;
189+
void date_optionalSplitValues;
190+
191+
// `date`split_values`required
192+
out.myapp.date.requiredSplitValues;
193+
let date_requiredSplitValues: typeof out.myapp.date.requiredSplitValues = [
194+
new Date(),
195+
];
196+
void date_requiredSplitValues;

0 commit comments

Comments
 (0)