Skip to content

Commit 4ffce6f

Browse files
authored
feat(ls): add missing OpenAPI 2.0 semantic tokens (#3508)
Refs #3477
1 parent c89dab3 commit 4ffce6f

File tree

9 files changed

+306
-85
lines changed

9 files changed

+306
-85
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
const tokens = [
2+
'main',
3+
'info',
4+
'principle',
5+
'standard',
6+
'standardIdentifier',
7+
'requirement',
8+
'requirementLevel',
9+
'scenario',
10+
];
11+
12+
export default tokens;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
const tokens = [
2+
'parameter',
3+
'api-version',
4+
'spec-version',
5+
'info',
6+
'operation',
7+
'components',
8+
'components-parameters',
9+
'components-schemas',
10+
'components-security-schemes',
11+
'components-messageTraits',
12+
'components-operationTraits',
13+
'components-messages',
14+
'schema',
15+
'server',
16+
'servers',
17+
'server-variables',
18+
'channelItem',
19+
'channels',
20+
'reference-element',
21+
'reference-value',
22+
'channel-binding',
23+
'license',
24+
'message',
25+
'server-url',
26+
'asyncapi-reference',
27+
'json-reference',
28+
'parameters',
29+
'reference',
30+
'contact',
31+
'identifier',
32+
'tags',
33+
'externalDocumentation',
34+
'securityScheme',
35+
'oAuthFlow',
36+
'oAuthFlows',
37+
'discriminator',
38+
'messageTrait',
39+
'messageTraits',
40+
'operationTrait',
41+
'operationTraits',
42+
'security',
43+
];
44+
45+
export default tokens;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
const openAPI2Tokens = [
2+
'swagger-host',
3+
'swagger-base-path',
4+
'swagger-schemes',
5+
'swagger-consumes',
6+
'swagger-produces',
7+
'swagger-security',
8+
'swagger-tags',
9+
'definitions',
10+
'parametersDefinitions',
11+
'responsesDefinitions',
12+
'securityDefinitions',
13+
'externalDocumentation',
14+
'info',
15+
'contact',
16+
'license',
17+
'paths',
18+
'pathItem',
19+
'parameters',
20+
'operation',
21+
'operation-consumes',
22+
'operation-produces',
23+
'httpMethod',
24+
'responses',
25+
'security',
26+
'items',
27+
'response',
28+
'headers',
29+
'header',
30+
'tag',
31+
'reference',
32+
'reference-element',
33+
'reference-value',
34+
'openapi-reference',
35+
'json-reference',
36+
'schema',
37+
'xml',
38+
'scopes',
39+
'securityRequirement',
40+
];
41+
42+
const openAPI3Tokens = [
43+
'parameter',
44+
'api-version',
45+
'spec-version',
46+
'info',
47+
'operation',
48+
'pathItem',
49+
'components',
50+
'components-parameters',
51+
'components-schemas',
52+
'components-responses',
53+
'components-examples',
54+
'components-request-bodies',
55+
'components-headers',
56+
'components-security-schemes',
57+
'components-links',
58+
'components-callbacks',
59+
'components-path-items',
60+
'openapi-reference',
61+
'server-url',
62+
'content',
63+
'mediaType',
64+
'openapi',
65+
'parameters',
66+
'paths',
67+
'reference',
68+
'requestBody',
69+
'response',
70+
'responses',
71+
'schema',
72+
'server',
73+
'servers',
74+
'server-variables',
75+
'reference-element',
76+
'reference-value',
77+
'contact',
78+
'httpMethod',
79+
'license',
80+
'tags',
81+
'webhooks',
82+
'jsonSchemaDialect',
83+
'externalDocumentation',
84+
'example',
85+
'examples',
86+
'callback',
87+
'header',
88+
'operation-callbacks',
89+
'securityScheme',
90+
'oAuthFlow',
91+
'oAuthFlows',
92+
'discriminator',
93+
'security',
94+
];
95+
96+
const tokens = [...openAPI2Tokens, ...openAPI3Tokens];
97+
98+
export default tokens;
+10-83
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,10 @@
1-
export default [
2-
'value',
3-
'string',
4-
'number',
5-
'key',
6-
'parameter',
7-
'api-version',
8-
'spec-version',
9-
'specVersion',
10-
'info',
11-
'operation',
12-
'pathItem',
13-
'components',
14-
'components-parameters',
15-
'components-schemas',
16-
'components-responses',
17-
'components-examples',
18-
'components-request-bodies',
19-
'components-headers',
20-
'components-security-schemes',
21-
'components-links',
22-
'components-callbacks',
23-
'components-path-items',
24-
'components-messageTraits',
25-
'components-operationTraits',
26-
'openapi-reference',
27-
'server-url',
28-
'Asyncapi-reference',
29-
'json-reference',
30-
'content',
31-
'mediaType',
32-
'openapi',
33-
'parameters',
34-
'paths',
35-
'reference',
36-
'requestBody',
37-
'response',
38-
'responses',
39-
'schema',
40-
'server',
41-
'servers',
42-
'server-variables',
43-
'title',
44-
'channelItem',
45-
'channels',
46-
'reference-element',
47-
'reference-value',
48-
'components-messages',
49-
'principle',
50-
'requirement',
51-
'requirementLevel',
52-
'scenario',
53-
'standard',
54-
'standardIdentifier',
55-
'channel-binding',
56-
'contact',
57-
'httpMethod',
58-
'identifier',
59-
'license',
60-
'message',
61-
'tags',
62-
'webhooks',
63-
'jsonSchemaDialect',
64-
'externalDocumentation',
65-
'example',
66-
'examples',
67-
'callback',
68-
'header',
69-
'operation-callbacks',
70-
'securityScheme',
71-
'oAuthFlow',
72-
'oAuthFlows',
73-
'discriminator',
74-
'messageTrait',
75-
'messageTraits',
76-
'operationTrait',
77-
'operationTraits',
78-
'security',
79-
'parametersDefinitions',
80-
'responsesDefinitions',
81-
'parametersDefinitions',
82-
'definitions',
83-
];
1+
import adsTokens from './ads/tokens';
2+
import asyncapiTokens from './asyncapi/tokens';
3+
import openapiTokens from './openapi/tokens';
4+
5+
// creating list of unique tokens
6+
const tokens = Array.from(
7+
new Set(['value', 'string', 'number', 'key', ...adsTokens, ...asyncapiTokens, ...openapiTokens]),
8+
);
9+
10+
export default tokens;

packages/apidom-ns-openapi-2/src/elements/nces/OperationTags.ts

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ class OperationTags extends ArrayElement {
66
constructor(content?: Array<unknown>, meta?: Meta, attributes?: Attributes) {
77
super(content, meta, attributes);
88
this.classes.push(OperationTags.primaryClass);
9+
this.classes.push('tags');
910
}
1011
}
1112

packages/apidom-ns-openapi-2/src/refractor/specification.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { specificationObj as JSONSchemaDraft4Specification } from '@swagger-api/
33
import FallbackVisitor from './visitors/FallbackVisitor';
44
import SwaggerVisitor from './visitors/open-api-2';
55
import SwaggerSwaggerVisitor from './visitors/open-api-2/SwaggerVisitor';
6+
import SwaggerHostVisitor from './visitors/open-api-2/HostVisitor';
7+
import SwaggerBasePathVisitor from './visitors/open-api-2/BasePathVisitor';
68
import SwaggerSchemesVisitor from './visitors/open-api-2/SchemesVisitor';
79
import SwaggerConsumesVisitor from './visitors/open-api-2/ConsumesVisitor';
810
import SwaggerProducesVisitor from './visitors/open-api-2/ProducesVisitor';
@@ -80,8 +82,8 @@ const specification = {
8082
info: {
8183
$ref: '#/visitors/document/objects/Info',
8284
},
83-
host: { $ref: '#/visitors/value' },
84-
basePath: { $ref: '#/visitors/value' },
85+
host: SwaggerHostVisitor,
86+
basePath: SwaggerBasePathVisitor,
8587
schemes: SwaggerSchemesVisitor,
8688
consumes: SwaggerConsumesVisitor,
8789
produces: SwaggerProducesVisitor,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import stampit from 'stampit';
2+
import { StringElement, BREAK, cloneDeep } from '@swagger-api/apidom-core';
3+
4+
import FallbackVisitor from '../FallbackVisitor';
5+
6+
const BasePathVisitor = stampit(FallbackVisitor, {
7+
methods: {
8+
StringElement(stringElement: StringElement) {
9+
this.element = cloneDeep(stringElement);
10+
this.element.classes.push('swagger-base-path');
11+
12+
return BREAK;
13+
},
14+
},
15+
});
16+
17+
export default BasePathVisitor;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import stampit from 'stampit';
2+
import { StringElement, BREAK, cloneDeep } from '@swagger-api/apidom-core';
3+
4+
import FallbackVisitor from '../FallbackVisitor';
5+
6+
const HostVisitor = stampit(FallbackVisitor, {
7+
methods: {
8+
StringElement(stringElement: StringElement) {
9+
this.element = cloneDeep(stringElement);
10+
this.element.classes.push('swagger-host');
11+
12+
return BREAK;
13+
},
14+
},
15+
});
16+
17+
export default HostVisitor;

0 commit comments

Comments
 (0)