File tree Expand file tree Collapse file tree 3 files changed +46
-0
lines changed
app-config-default-extensions
app-config-extensions/src Expand file tree Collapse file tree 3 files changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ module.exports = {
18
18
tryDirective,
19
19
ifDirective,
20
20
eqDirective,
21
+ hiddenDirective,
21
22
envDirective,
22
23
envVarDirective,
23
24
extendsDirective,
@@ -36,6 +37,7 @@ module.exports = {
36
37
tryDirective ( ) ,
37
38
ifDirective ( ) ,
38
39
eqDirective ( ) ,
40
+ hiddenDirective ( ) ,
39
41
v1Compat ( ) ,
40
42
envDirective ( aliases , environmentOverride , environmentSourceNames ) ,
41
43
envVarDirective ( aliases , environmentOverride , environmentSourceNames ) ,
@@ -59,6 +61,7 @@ module.exports = {
59
61
tryDirective,
60
62
ifDirective,
61
63
eqDirective,
64
+ hiddenDirective,
62
65
extendsDirective,
63
66
extendsSelfDirective,
64
67
overrideDirective,
@@ -69,6 +72,7 @@ module.exports = {
69
72
tryDirective ( ) ,
70
73
ifDirective ( ) ,
71
74
eqDirective ( ) ,
75
+ hiddenDirective ( ) ,
72
76
extendsDirective ( ) ,
73
77
extendsSelfDirective ( ) ,
74
78
overrideDirective ( ) ,
Original file line number Diff line number Diff line change 6
6
tryDirective ,
7
7
ifDirective ,
8
8
eqDirective ,
9
+ hiddenDirective ,
9
10
envDirective ,
10
11
envVarDirective ,
11
12
extendsDirective ,
@@ -229,6 +230,40 @@ describe('$eq directive', () => {
229
230
} ) ;
230
231
} ) ;
231
232
233
+ describe ( '$hidden directive' , ( ) => {
234
+ it ( 'doesnt include hidden' , async ( ) => {
235
+ const source = new LiteralSource ( {
236
+ $hidden : { } ,
237
+ } ) ;
238
+
239
+ expect ( await source . readToJSON ( [ hiddenDirective ( ) ] ) ) . toEqual ( { } ) ;
240
+ } ) ;
241
+
242
+ it ( 'merges hidden' , async ( ) => {
243
+ const source = new LiteralSource ( {
244
+ $hidden : { } ,
245
+ foo : true ,
246
+ } ) ;
247
+
248
+ expect ( await source . readToJSON ( [ hiddenDirective ( ) ] ) ) . toEqual ( { foo : true } ) ;
249
+ } ) ;
250
+
251
+ it ( 'references hidden property' , async ( ) => {
252
+ const source = new LiteralSource ( {
253
+ $hidden : {
254
+ foo : 42 ,
255
+ } ,
256
+ foo : {
257
+ $extendsSelf : '$hidden.foo' ,
258
+ } ,
259
+ } ) ;
260
+
261
+ expect ( await source . readToJSON ( [ hiddenDirective ( ) , extendsSelfDirective ( ) ] ) ) . toEqual ( {
262
+ foo : 42 ,
263
+ } ) ;
264
+ } ) ;
265
+ } ) ;
266
+
232
267
describe ( '$extends directive' , ( ) => {
233
268
it ( 'fails if file is missing' , async ( ) => {
234
269
const source = new LiteralSource ( {
Original file line number Diff line number Diff line change @@ -118,6 +118,13 @@ export function eqDirective(): ParsingExtension {
118
118
) ;
119
119
}
120
120
121
+ /** Prpoerties that are removed, used by references */
122
+ export function hiddenDirective ( ) : ParsingExtension {
123
+ return forKey ( '$hidden' , ( value ) => async ( parse ) => {
124
+ return parse ( { } , { shouldMerge : true } ) ;
125
+ } ) ;
126
+ }
127
+
121
128
/** Uses another file as overriding values, layering them on top of current file */
122
129
export function overrideDirective ( ) : ParsingExtension {
123
130
return fileReferenceDirective ( '$override' , { shouldOverride : true } ) ;
You can’t perform that action at this time.
0 commit comments