@@ -86,10 +86,27 @@ export default iterateJsdoc(({
8686 } ) ;
8787
8888 const {
89- preferredTypes,
89+ preferredTypes : preferredTypesOriginal ,
9090 structuredTags,
9191 mode,
9292 } = settings ;
93+
94+ const injectObjectPreferredTypes = ! ( 'Object' in preferredTypesOriginal ||
95+ 'object' in preferredTypesOriginal ||
96+ 'object.<>' in preferredTypesOriginal ||
97+ 'Object.<>' in preferredTypesOriginal ||
98+ 'object<>' in preferredTypesOriginal ) ;
99+
100+ const preferredTypes = {
101+ ...injectObjectPreferredTypes ? {
102+ Object : 'object' ,
103+ 'object.<>' : 'Object<>' ,
104+ 'Object.<>' : 'Object<>' ,
105+ 'object<>' : 'Object<>' ,
106+ } : { } ,
107+ ...preferredTypesOriginal ,
108+ } ;
109+
93110 const {
94111 noDefaults,
95112 unifyParentAndChildTypeChecks,
@@ -110,56 +127,55 @@ export default iterateJsdoc(({
110127 let hasMatchingPreferredType = false ;
111128 let isGenericMatch = false ;
112129 let typeName = typeNodeName ;
113- if ( Object . keys ( preferredTypes ) . length ) {
114- const isNameOfGeneric = parentNode !== undefined && parentNode . type === 'JsdocTypeGeneric' && property === 'left' ;
115- if ( unifyParentAndChildTypeChecks || isNameOfGeneric ) {
116- const brackets = parentNode ?. meta ?. brackets ;
117- const dot = parentNode ?. meta ?. dot ;
118-
119- if ( brackets === 'angle' ) {
120- const checkPostFixes = dot ? [
121- '.' , '.<>' ,
122- ] : [
123- '<>' ,
124- ] ;
125- isGenericMatch = checkPostFixes . some ( ( checkPostFix ) => {
126- if ( preferredTypes ?. [ typeNodeName + checkPostFix ] !== undefined ) {
127- typeName += checkPostFix ;
128-
129- return true ;
130- }
131-
132- return false ;
133- } ) ;
134- }
135130
136- if ( ! isGenericMatch && property ) {
137- const checkPostFixes = dot ? [
138- '.' , '.<>' ,
139- ] : [
140- brackets === 'angle' ? '<>' : '[]' ,
141- ] ;
131+ const isNameOfGeneric = parentNode !== undefined && parentNode . type === 'JsdocTypeGeneric' && property === 'left' ;
132+ if ( unifyParentAndChildTypeChecks || isNameOfGeneric ) {
133+ const brackets = parentNode ?. meta ?. brackets ;
134+ const dot = parentNode ?. meta ?. dot ;
135+
136+ if ( brackets === 'angle' ) {
137+ const checkPostFixes = dot ? [
138+ '.' , '.<>' ,
139+ ] : [
140+ '<>' ,
141+ ] ;
142+ isGenericMatch = checkPostFixes . some ( ( checkPostFix ) => {
143+ if ( preferredTypes ?. [ typeNodeName + checkPostFix ] !== undefined ) {
144+ typeName += checkPostFix ;
145+
146+ return true ;
147+ }
148+
149+ return false ;
150+ } ) ;
151+ }
142152
143- isGenericMatch = checkPostFixes . some ( ( checkPostFix ) => {
144- if ( preferredTypes ?. [ checkPostFix ] !== undefined ) {
145- typeName = checkPostFix ;
153+ if ( ! isGenericMatch && property ) {
154+ const checkPostFixes = dot ? [
155+ '.' , '.<>' ,
156+ ] : [
157+ brackets === 'angle' ? '<>' : '[]' ,
158+ ] ;
146159
147- return true ;
148- }
160+ isGenericMatch = checkPostFixes . some ( ( checkPostFix ) => {
161+ if ( preferredTypes ?. [ checkPostFix ] !== undefined ) {
162+ typeName = checkPostFix ;
149163
150- return false ;
151- } ) ;
152- }
164+ return true ;
165+ }
166+
167+ return false ;
168+ } ) ;
153169 }
170+ }
154171
155- const directNameMatch = preferredTypes ?. [ typeNodeName ] !== undefined &&
156- ! Object . values ( preferredTypes ) . includes ( typeNodeName ) ;
157- const unifiedSyntaxParentMatch = property && directNameMatch && unifyParentAndChildTypeChecks ;
158- isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch ;
172+ const directNameMatch = preferredTypes ?. [ typeNodeName ] !== undefined &&
173+ ! Object . values ( preferredTypes ) . includes ( typeNodeName ) ;
174+ const unifiedSyntaxParentMatch = property && directNameMatch && unifyParentAndChildTypeChecks ;
175+ isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch ;
159176
160- hasMatchingPreferredType = isGenericMatch ||
161- directNameMatch && ! property ;
162- }
177+ hasMatchingPreferredType = isGenericMatch ||
178+ directNameMatch && ! property ;
163179
164180 return [
165181 hasMatchingPreferredType , typeName , isGenericMatch ,
0 commit comments