Skip to content

Commit a5e1fd0

Browse files
committed
feat: adds $hidden directive
1 parent ec817e7 commit a5e1fd0

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

app-config-default-extensions/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = {
1818
tryDirective,
1919
ifDirective,
2020
eqDirective,
21+
hiddenDirective,
2122
envDirective,
2223
envVarDirective,
2324
extendsDirective,
@@ -36,6 +37,7 @@ module.exports = {
3637
tryDirective(),
3738
ifDirective(),
3839
eqDirective(),
40+
hiddenDirective(),
3941
v1Compat(),
4042
envDirective(aliases, environmentOverride, environmentSourceNames),
4143
envVarDirective(aliases, environmentOverride, environmentSourceNames),
@@ -59,6 +61,7 @@ module.exports = {
5961
tryDirective,
6062
ifDirective,
6163
eqDirective,
64+
hiddenDirective,
6265
extendsDirective,
6366
extendsSelfDirective,
6467
overrideDirective,
@@ -69,6 +72,7 @@ module.exports = {
6972
tryDirective(),
7073
ifDirective(),
7174
eqDirective(),
75+
hiddenDirective(),
7276
extendsDirective(),
7377
extendsSelfDirective(),
7478
overrideDirective(),

app-config-extensions/src/index.test.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
tryDirective,
77
ifDirective,
88
eqDirective,
9+
hiddenDirective,
910
envDirective,
1011
envVarDirective,
1112
extendsDirective,
@@ -229,6 +230,40 @@ describe('$eq directive', () => {
229230
});
230231
});
231232

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+
232267
describe('$extends directive', () => {
233268
it('fails if file is missing', async () => {
234269
const source = new LiteralSource({

app-config-extensions/src/index.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,13 @@ export function eqDirective(): ParsingExtension {
118118
);
119119
}
120120

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+
121128
/** Uses another file as overriding values, layering them on top of current file */
122129
export function overrideDirective(): ParsingExtension {
123130
return fileReferenceDirective('$override', { shouldOverride: true });

0 commit comments

Comments
 (0)