Skip to content

Commit 808073f

Browse files
committed
feat(ns-asyncapi-2): add reference metadata
Refs swagger-api/oss-planning#265
1 parent 5ab586e commit 808073f

File tree

3 files changed

+119
-0
lines changed
  • apidom/packages/apidom-ns-asyncapi-2-0

3 files changed

+119
-0
lines changed

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/async-api-2-0/channel-item/index.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import stampit from 'stampit';
22
import { always } from 'ramda';
3+
import { ObjectElement, isStringElement } from 'apidom';
34

45
import ChannelItemElement from '../../../../elements/ChannelItem';
56
import FallbackVisitor from '../../FallbackVisitor';
@@ -13,6 +14,19 @@ const ChannelItemVisitor = stampit(FixedFieldsVisitor, FallbackVisitor, {
1314
init() {
1415
this.element = new ChannelItemElement();
1516
},
17+
methods: {
18+
ObjectElement(objectElement: ObjectElement) {
19+
// @ts-ignore
20+
const result = FixedFieldsVisitor.compose.methods.ObjectElement.call(this, objectElement);
21+
22+
// mark this ChannelItemElement with reference metadata
23+
if (isStringElement(this.element.$ref)) {
24+
this.element.classes.push('reference-element');
25+
}
26+
27+
return result;
28+
},
29+
},
1630
});
1731

1832
export default ChannelItemVisitor;

apidom/packages/apidom-ns-asyncapi-2-0/src/refractor/visitors/async-api-2-0/reference/index.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import stampit from 'stampit';
22
import { always } from 'ramda';
3+
import { ObjectElement, isStringElement } from 'apidom';
34

45
import ReferenceElement from '../../../../elements/Reference';
56
import FixedFieldsVisitor from '../../generics/FixedFieldsVisitor';
@@ -13,6 +14,19 @@ const ReferenceVisitor = stampit(FixedFieldsVisitor, FallbackVisitor, {
1314
init() {
1415
this.element = new ReferenceElement();
1516
},
17+
methods: {
18+
ObjectElement(objectElement: ObjectElement) {
19+
// @ts-ignore
20+
const result = FixedFieldsVisitor.compose.methods.ObjectElement.call(this, objectElement);
21+
22+
// mark this ReferenceElement with reference metadata
23+
if (isStringElement(this.element.$ref)) {
24+
this.element.classes.push('reference-element');
25+
}
26+
27+
return result;
28+
},
29+
},
1630
});
1731

1832
export default ReferenceVisitor;

apidom/packages/apidom-ns-asyncapi-2-0/test/refractor/__snapshots__/index.ts.snap

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -956,6 +956,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
956956
{
957957
"element": "string",
958958
"content": "asyncapi-reference"
959+
},
960+
{
961+
"element": "string",
962+
"content": "reference-element"
959963
}
960964
]
961965
},
@@ -2120,6 +2124,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
21202124
{
21212125
"element": "string",
21222126
"content": "asyncapi-reference"
2127+
},
2128+
{
2129+
"element": "string",
2130+
"content": "reference-element"
21232131
}
21242132
]
21252133
},
@@ -2199,6 +2207,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
21992207
{
22002208
"element": "string",
22012209
"content": "asyncapi-reference"
2210+
},
2211+
{
2212+
"element": "string",
2213+
"content": "reference-element"
22022214
}
22032215
]
22042216
},
@@ -3927,6 +3939,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
39273939
{
39283940
"element": "string",
39293941
"content": "asyncapi-reference"
3942+
},
3943+
{
3944+
"element": "string",
3945+
"content": "reference-element"
39303946
}
39313947
]
39323948
},
@@ -4051,6 +4067,17 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
40514067
},
40524068
"value": {
40534069
"element": "channelItem",
4070+
"meta": {
4071+
"classes": {
4072+
"element": "array",
4073+
"content": [
4074+
{
4075+
"element": "string",
4076+
"content": "reference-element"
4077+
}
4078+
]
4079+
}
4080+
},
40544081
"content": [
40554082
{
40564083
"element": "member",
@@ -4496,6 +4523,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
44964523
{
44974524
"element": "string",
44984525
"content": "asyncapi-reference"
4526+
},
4527+
{
4528+
"element": "string",
4529+
"content": "reference-element"
44994530
}
45004531
]
45014532
},
@@ -4591,6 +4622,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
45914622
{
45924623
"element": "string",
45934624
"content": "asyncapi-reference"
4625+
},
4626+
{
4627+
"element": "string",
4628+
"content": "reference-element"
45944629
}
45954630
]
45964631
},
@@ -4672,6 +4707,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
46724707
{
46734708
"element": "string",
46744709
"content": "asyncapi-reference"
4710+
},
4711+
{
4712+
"element": "string",
4713+
"content": "reference-element"
46754714
}
46764715
]
46774716
},
@@ -4898,6 +4937,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
48984937
{
48994938
"element": "string",
49004939
"content": "asyncapi-reference"
4940+
},
4941+
{
4942+
"element": "string",
4943+
"content": "reference-element"
49014944
}
49024945
]
49034946
},
@@ -4981,6 +5024,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
49815024
{
49825025
"element": "string",
49835026
"content": "asyncapi-reference"
5027+
},
5028+
{
5029+
"element": "string",
5030+
"content": "reference-element"
49845031
}
49855032
]
49865033
},
@@ -5170,6 +5217,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
51705217
{
51715218
"element": "string",
51725219
"content": "asyncapi-reference"
5220+
},
5221+
{
5222+
"element": "string",
5223+
"content": "reference-element"
51735224
}
51745225
]
51755226
},
@@ -5308,6 +5359,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
53085359
{
53095360
"element": "string",
53105361
"content": "asyncapi-reference"
5362+
},
5363+
{
5364+
"element": "string",
5365+
"content": "reference-element"
53115366
}
53125367
]
53135368
},
@@ -5446,6 +5501,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
54465501
{
54475502
"element": "string",
54485503
"content": "asyncapi-reference"
5504+
},
5505+
{
5506+
"element": "string",
5507+
"content": "reference-element"
54495508
}
54505509
]
54515510
},
@@ -5683,6 +5742,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
56835742
{
56845743
"element": "string",
56855744
"content": "asyncapi-reference"
5745+
},
5746+
{
5747+
"element": "string",
5748+
"content": "reference-element"
56865749
}
56875750
]
56885751
},
@@ -5821,6 +5884,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
58215884
{
58225885
"element": "string",
58235886
"content": "asyncapi-reference"
5887+
},
5888+
{
5889+
"element": "string",
5890+
"content": "reference-element"
58245891
}
58255892
]
58265893
},
@@ -5959,6 +6026,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
59596026
{
59606027
"element": "string",
59616028
"content": "asyncapi-reference"
6029+
},
6030+
{
6031+
"element": "string",
6032+
"content": "reference-element"
59626033
}
59636034
]
59646035
},
@@ -6097,6 +6168,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
60976168
{
60986169
"element": "string",
60996170
"content": "asyncapi-reference"
6171+
},
6172+
{
6173+
"element": "string",
6174+
"content": "reference-element"
61006175
}
61016176
]
61026177
},
@@ -6260,6 +6335,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
62606335
{
62616336
"element": "string",
62626337
"content": "asyncapi-reference"
6338+
},
6339+
{
6340+
"element": "string",
6341+
"content": "reference-element"
62636342
}
62646343
]
62656344
},
@@ -6423,6 +6502,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
64236502
{
64246503
"element": "string",
64256504
"content": "asyncapi-reference"
6505+
},
6506+
{
6507+
"element": "string",
6508+
"content": "reference-element"
64266509
}
64276510
]
64286511
},
@@ -6586,6 +6669,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
65866669
{
65876670
"element": "string",
65886671
"content": "asyncapi-reference"
6672+
},
6673+
{
6674+
"element": "string",
6675+
"content": "reference-element"
65896676
}
65906677
]
65916678
},
@@ -6749,6 +6836,10 @@ exports[`refractor given generic ApiDOM object in AsyncApi 2.0 shape should refr
67496836
{
67506837
"element": "string",
67516838
"content": "asyncapi-reference"
6839+
},
6840+
{
6841+
"element": "string",
6842+
"content": "reference-element"
67526843
}
67536844
]
67546845
},

0 commit comments

Comments
 (0)