@@ -6,37 +6,45 @@ import { barPlugin } from "./plugins/bar/index.js";
6
6
import { voidPlugin } from "./plugins/void/index.js" ;
7
7
import { withOptionsPlugin } from "./plugins/with-options" ;
8
8
9
- const base = new Base ( {
10
- version : "1.2.3" ,
9
+ declare module "./index.js" {
10
+ namespace Base {
11
+ interface Options {
12
+ required : string ;
13
+ }
14
+ }
15
+ }
16
+
17
+ const baseSatisfied = new Base ( {
18
+ required : "1.2.3" ,
11
19
} ) ;
12
20
13
21
// @ts -expect-error unknown properties cannot be used, see #31
14
- base . unknown ;
22
+ baseSatisfied . unknown ;
15
23
16
24
const BaseWithEmptyDefaults = Base . defaults ( {
17
25
// there should be no required options
18
26
} ) ;
19
27
20
- // 'version ' is missing and should still be required
28
+ // 'required ' is missing and should still be required
21
29
// @ts -expect-error
22
30
new BaseWithEmptyDefaults ( ) ;
23
31
24
- // 'version ' is missing and should still be required
32
+ // 'required ' is missing and should still be required
25
33
// @ts -expect-error
26
34
new BaseWithEmptyDefaults ( { } ) ;
27
35
28
36
const BaseLevelOne = Base . plugin ( fooPlugin ) . defaults ( {
29
37
defaultOne : "value" ,
30
- version : "1.2.3" ,
38
+ required : "1.2.3" ,
31
39
} ) ;
32
40
33
- // Because 'version ' is already provided, this needs no argument
41
+ // Because 'required ' is already provided, this needs no argument
34
42
new BaseLevelOne ( ) ;
35
43
new BaseLevelOne ( { } ) ;
36
44
37
45
expectType < {
38
46
defaultOne : string ;
39
- version : string ;
47
+ required : string ;
40
48
} > ( BaseLevelOne . defaultOptions ) ;
41
49
42
50
const baseLevelOne = new BaseLevelOne ( {
@@ -45,7 +53,7 @@ const baseLevelOne = new BaseLevelOne({
45
53
46
54
expectType < string > ( baseLevelOne . options . defaultOne ) ;
47
55
expectType < string > ( baseLevelOne . options . optionOne ) ;
48
- expectType < string > ( baseLevelOne . options . version ) ;
56
+ expectType < string > ( baseLevelOne . options . required ) ;
49
57
// @ts -expect-error unknown properties cannot be used, see #31
50
58
baseLevelOne . unknown ;
51
59
@@ -56,16 +64,16 @@ const BaseLevelTwo = BaseLevelOne.defaults({
56
64
expectType < {
57
65
defaultOne : string ;
58
66
defaultTwo : number ;
59
- version : string ;
67
+ required : string ;
60
68
} > ( { ...BaseLevelTwo . defaultOptions } ) ;
61
69
62
- // Because 'version ' is already provided, this needs no argument
70
+ // Because 'required ' is already provided, this needs no argument
63
71
new BaseLevelTwo ( ) ;
64
72
new BaseLevelTwo ( { } ) ;
65
73
66
- // 'version ' may be overriden, though it's not necessary
74
+ // 'required ' may be overriden, though it's not necessary
67
75
new BaseLevelTwo ( {
68
- version : "new version " ,
76
+ required : "new required " ,
69
77
} ) ;
70
78
71
79
const baseLevelTwo = new BaseLevelTwo ( {
@@ -75,7 +83,7 @@ const baseLevelTwo = new BaseLevelTwo({
75
83
expectType < number > ( baseLevelTwo . options . defaultTwo ) ;
76
84
expectType < string > ( baseLevelTwo . options . defaultOne ) ;
77
85
expectType < boolean > ( baseLevelTwo . options . optionTwo ) ;
78
- expectType < string > ( baseLevelTwo . options . version ) ;
86
+ expectType < string > ( baseLevelTwo . options . required ) ;
79
87
// @ts -expect-error unknown properties cannot be used, see #31
80
88
baseLevelTwo . unknown ;
81
89
@@ -87,18 +95,18 @@ expectType<{
87
95
defaultOne : string ;
88
96
defaultTwo : number ;
89
97
defaultThree : string [ ] ;
90
- version : string ;
98
+ required : string ;
91
99
} > ( { ...BaseLevelThree . defaultOptions } ) ;
92
100
93
- // Because 'version ' is already provided, this needs no argument
101
+ // Because 'required ' is already provided, this needs no argument
94
102
new BaseLevelThree ( ) ;
95
103
new BaseLevelThree ( { } ) ;
96
104
97
105
// Previous settings may be overriden, though it's not necessary
98
106
new BaseLevelThree ( {
99
107
optionOne : "" ,
100
108
optionTwo : false ,
101
- version : "new version " ,
109
+ required : "new required " ,
102
110
} ) ;
103
111
104
112
const baseLevelThree = new BaseLevelThree ( {
@@ -109,21 +117,21 @@ expectType<string>(baseLevelThree.options.defaultOne);
109
117
expectType < number > ( baseLevelThree . options . defaultTwo ) ;
110
118
expectType < string [ ] > ( baseLevelThree . options . defaultThree ) ;
111
119
expectType < number [ ] > ( baseLevelThree . options . optionThree ) ;
112
- expectType < string > ( baseLevelThree . options . version ) ;
120
+ expectType < string > ( baseLevelThree . options . required ) ;
113
121
// @ts -expect-error unknown properties cannot be used, see #31
114
122
baseLevelThree . unknown ;
115
123
116
124
const BaseWithVoidPlugin = Base . plugin ( voidPlugin ) ;
117
125
const baseWithVoidPlugin = new BaseWithVoidPlugin ( {
118
- version : "1.2.3" ,
126
+ required : "1.2.3" ,
119
127
} ) ;
120
128
121
129
// @ts -expect-error unknown properties cannot be used, see #31
122
130
baseWithVoidPlugin . unknown ;
123
131
124
132
const BaseWithFooAndBarPlugins = Base . plugin ( barPlugin , fooPlugin ) ;
125
133
const baseWithFooAndBarPlugins = new BaseWithFooAndBarPlugins ( {
126
- version : "1.2.3" ,
134
+ required : "1.2.3" ,
127
135
} ) ;
128
136
129
137
expectType < string > ( baseWithFooAndBarPlugins . foo ) ;
@@ -138,7 +146,7 @@ const BaseWithVoidAndNonVoidPlugins = Base.plugin(
138
146
fooPlugin
139
147
) ;
140
148
const baseWithVoidAndNonVoidPlugins = new BaseWithVoidAndNonVoidPlugins ( {
141
- version : "1.2.3" ,
149
+ required : "1.2.3" ,
142
150
} ) ;
143
151
144
152
expectType < string > ( baseWithVoidAndNonVoidPlugins . foo ) ;
@@ -149,7 +157,7 @@ baseWithVoidAndNonVoidPlugins.unknown;
149
157
150
158
const BaseWithOptionsPlugin = Base . plugin ( withOptionsPlugin ) ;
151
159
const baseWithOptionsPlugin = new BaseWithOptionsPlugin ( {
152
- version : "1.2.3" ,
160
+ required : "1.2.3" ,
153
161
} ) ;
154
162
155
163
expectType < string > ( baseWithOptionsPlugin . getFooOption ( ) ) ;
@@ -158,7 +166,7 @@ expectType<string>(baseWithOptionsPlugin.getFooOption());
158
166
const BaseLevelFour = BaseLevelThree . defaults ( { defaultFour : 4 } ) ;
159
167
160
168
expectType < {
161
- version : string ;
169
+ required : string ;
162
170
defaultOne : string ;
163
171
defaultTwo : number ;
164
172
defaultThree : string [ ] ;
@@ -170,14 +178,14 @@ const baseLevelFour = new BaseLevelFour();
170
178
// See the node on static defaults in index.d.ts for why defaultFour is missing
171
179
// .options from .defaults() is only supported until a depth of 4
172
180
expectType < {
173
- version : string ;
181
+ required : string ;
174
182
defaultOne : string ;
175
183
defaultTwo : number ;
176
184
defaultThree : string [ ] ;
177
185
} > ( { ...baseLevelFour . options } ) ;
178
186
179
187
expectType < {
180
- version : string ;
188
+ required : string ;
181
189
defaultOne : string ;
182
190
defaultTwo : number ;
183
191
defaultThree : string [ ] ;
@@ -195,7 +203,7 @@ const BaseWithChainedDefaultsAndPlugins = Base.defaults({
195
203
196
204
const baseWithChainedDefaultsAndPlugins = new BaseWithChainedDefaultsAndPlugins (
197
205
{
198
- version : "1.2.3" ,
206
+ required : "1.2.3" ,
199
207
}
200
208
) ;
201
209
@@ -221,7 +229,7 @@ expectType<{
221
229
222
230
const baseWithManyChainedDefaultsAndPlugins =
223
231
new BaseWithManyChainedDefaultsAndPlugins ( {
224
- version : "1.2.3" ,
232
+ required : "1.2.3" ,
225
233
foo : "bar" ,
226
234
} ) ;
227
235
0 commit comments