Skip to content

Commit 042bc13

Browse files
committed
Add enum type handling for parameters
1 parent 5ec80d0 commit 042bc13

File tree

4 files changed

+19
-2
lines changed

4 files changed

+19
-2
lines changed

index.js

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,16 @@ async function openapiJsonrpcJsdoc({ files, securitySchemes = {}, packageUrl, se
154154
if (parameter.type.names[0] === 'object') {
155155
return accumulator;
156156
}
157-
let [type] = parameter.type.names;
157+
let type;
158+
if (parameter.type.names.length === 0) {
159+
type = 'null';
160+
} else if (parameter.type.names.length === 1) {
161+
type = parameter.type.names[0];
162+
} else {
163+
type = 'enum';
164+
}
158165
let items;
166+
let enumData;
159167
switch (type) {
160168
case 'Array.<string>': {
161169
type = 'array';
@@ -167,6 +175,11 @@ async function openapiJsonrpcJsdoc({ files, securitySchemes = {}, packageUrl, se
167175
items = { type: 'string' };
168176
break;
169177
}
178+
case 'enum': {
179+
type = 'string';
180+
enumData = parameter.type.names;
181+
break;
182+
}
170183
default: {
171184
break;
172185
}
@@ -187,6 +200,7 @@ async function openapiJsonrpcJsdoc({ files, securitySchemes = {}, packageUrl, se
187200
type,
188201
description,
189202
items,
203+
enum: enumData,
190204
},
191205
};
192206
return accumulator;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "openapi-jsonrpc-jsdoc",
3-
"version": "1.2.2",
3+
"version": "1.2.3",
44
"description": "Transform JSDoc-annotated JSON-RPC 2.0 methods into OpenAPI 3.0 specifications. Auto-generates REST API documentation with complete schemas, parameters, and endpoint definitions.",
55
"main": "index.js",
66
"scripts": {

test/api/v1.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* @param {string} parameters.id - id
66
* @param {string} [parameters.test] - test
77
* @param {string[]} parameters.array - array
8+
* @param {1|2} parameters.num - enum
89
* @tags api, api-v1, api
910
* @example
1011
* {

test/index.test.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ test('t1', t => {
6363
t.deepEqual(v1Test.post.tags, Array.from(new Set(v1Test.post.tags)));
6464
t.true(Array.isArray(v1Test.post.parameters));
6565
const v1RequestBodySchema = v1Test.post.requestBody.content['application/json'].schema;
66+
t.is(v1RequestBodySchema.properties.params.properties.test.type, 'string');
67+
t.is(v1RequestBodySchema.properties.params.properties.array.type, 'array');
6668
t.is(v1RequestBodySchema.type, 'object');
6769
t.true(v1RequestBodySchema.required.includes('method'));
6870
});

0 commit comments

Comments
 (0)