File tree Expand file tree Collapse file tree 3 files changed +61
-7
lines changed
test/transforms/components Expand file tree Collapse file tree 3 files changed +61
-7
lines changed Original file line number Diff line number Diff line change
1
+ {
2
+ // Use IntelliSense to learn about possible attributes.
3
+ // Hover to view descriptions of existing attributes.
4
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
+ "version" : " 0.2.0" ,
6
+ "configurations" : [
7
+ {
8
+ "name" : " Debug Jest Tests" ,
9
+ "type" : " node" ,
10
+ "request" : " launch" ,
11
+ "runtimeArgs" : [
12
+ " --inspect-brk" ,
13
+ " ${workspaceRoot}/node_modules/.bin/jest" ,
14
+ " --runInBand"
15
+ ],
16
+ "console" : " integratedTerminal" ,
17
+ "internalConsoleOptions" : " neverOpen" ,
18
+ "port" : 9229
19
+ }
20
+ ]
21
+ }
Original file line number Diff line number Diff line change @@ -909,4 +909,30 @@ describe('parseComponents method', () => {
909
909
const result = parseComponents ( { } , parsedJSDocs ) ;
910
910
expect ( result ) . toEqual ( expected ) ;
911
911
} ) ;
912
+
913
+ it ( 'Should parse jsdoc component spec record type' , ( ) => {
914
+ const jsodInput = [ `
915
+ /**
916
+ * Records dict
917
+ * @typedef {Dictionary<string>} Records map
918
+ */
919
+ ` ] ;
920
+ const expected = {
921
+ components : {
922
+ schemas : {
923
+ Records : {
924
+ type : 'object' ,
925
+ description : 'Records dict' ,
926
+ properties : { } ,
927
+ additionalProperties : {
928
+ type : 'string' ,
929
+ } ,
930
+ } ,
931
+ } ,
932
+ } ,
933
+ } ;
934
+ const parsedJSDocs = jsdocInfo ( ) ( jsodInput ) ;
935
+ const result = parseComponents ( { } , parsedJSDocs ) ;
936
+ expect ( result ) . toEqual ( expected ) ;
937
+ } ) ;
912
938
} ) ;
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ const { refSchema, formatRefSchema } = require('../utils/refSchema');
4
4
const addEnumValues = require ( '../utils/enumValues' ) ;
5
5
const formatDescription = require ( '../utils/formatDescription' ) ;
6
6
const combineSchema = require ( '../utils/combineSchema' ) ;
7
+ const validateTypes = require ( '../utils/validateTypes' ) ;
7
8
8
9
const REQUIRED = 'required' ;
9
10
@@ -65,15 +66,21 @@ const getRequiredProperties = properties => (
65
66
const formatRequiredProperties = requiredProperties => requiredProperties . map ( getPropertyName ) ;
66
67
67
68
const addDictionaryAdditionalProperties = typedef => {
68
- if ( ! typedef . type . expression || typedef . type . expression . name !== 'Dictionary' ) {
69
- return { } ;
69
+ if (
70
+ typedef . type . expression
71
+ && typedef . type . expression . name === 'Dictionary'
72
+ ) {
73
+ const typeName = typedef . type . applications [ 0 ] . name ;
74
+ const isPrimitive = validateTypes ( typeName ) ;
75
+
76
+ return {
77
+ additionalProperties : {
78
+ ...( isPrimitive ? { type : typeName } : { $ref : `#/components/schemas/${ typeName } ` } ) ,
79
+ } ,
80
+ } ;
70
81
}
71
82
72
- return {
73
- additionalProperties : {
74
- $ref : `#/components/schemas/${ typedef . type . applications [ 0 ] . name } ` ,
75
- } ,
76
- } ;
83
+ return { } ;
77
84
} ;
78
85
79
86
const parseSchema = ( schema , options = { } ) => {
You can’t perform that action at this time.
0 commit comments