Skip to content

Commit 4fa97e2

Browse files
authored
Filter - handle inverseFlagValues removal of nested array values (#141)
1 parent 2bc60f6 commit 4fa97e2

File tree

5 files changed

+48
-1
lines changed

5 files changed

+48
-1
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
## unreleased
22

3+
- Filter - handle inverseFlagValues removal of nested array values
4+
35
## [1.23.1] - 2024-09-14
46

5-
- Filter - handle flagValue removal of nested array values (#139)
7+
- Filter - handle flagValues removal of nested array values (#139)
68
- CLI - Fix to prevent that Sort settings get overwritten (#137)
79

810
## [1.23.0] - 2024-09-10

openapi-format.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ async function openapiFilter(oaObj, options) {
204204
// Convert invert flag values to flags
205205
const inverseFilterFlagValuesKeys = Object.keys(Object.assign({}, ...(filterSet.inverseFlagValues ?? [])));
206206
const inverseFilterFlagValues = [...(filterSet.inverseFlagValues ?? [])];
207+
const inverseFilterFlagHash = inverseFilterFlagValues.map(o => JSON.stringify(o));
207208

208209
// Initiate components tracking
209210
const comps = {
@@ -458,6 +459,21 @@ async function openapiFilter(oaObj, options) {
458459
node = oaTags;
459460
this.update(node);
460461
}
462+
463+
// Filter out fields matching the inverseFlagValues
464+
if (inverseFilterFlagValuesKeys.length > 0 && inverseFilterFlagValuesKeys.includes(this.key)) {
465+
for (let i = 0; i < node.length; i++) {
466+
const itmObj = {[this.key]: node[i]};
467+
const itmObjHash = JSON.stringify(itmObj);
468+
if (inverseFilterFlagHash.some(filterFlag => filterFlag !== itmObjHash)) {
469+
if (isArray(this?.parent?.parent.node)) {
470+
// debugFilterStep = 'Filter - inverse flagValues - array value'
471+
const group = this.parent.node;
472+
group['x-openapi-format-filter'] = true;
473+
}
474+
}
475+
}
476+
}
461477
}
462478

463479
// Single field matching
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
openapi: 3.0.1
2+
servers:
3+
- url: 'https://server-a'
4+
x-stage:
5+
- a
6+
- url: 'https://server-b'
7+
x-stage:
8+
- b
9+
- url: 'https://server-c'
10+
x-stage:
11+
- c
12+
- url: 'https://server-d'
13+
x-stage:
14+
- d
15+
- url: 'https://server-e'
16+
x-stage:
17+
- e
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
verbose: true
2+
no-sort: true
3+
output: output.yaml
4+
filterSet:
5+
inverseFlagValues:
6+
- x-stage: e
7+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
openapi: 3.0.1
2+
servers:
3+
- url: 'https://server-e'
4+
x-stage:
5+
- e

0 commit comments

Comments
 (0)