eslint-plugin-jsdoc 61.0.1 → 61.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +8 -0
  2. package/dist/cjs/jsdocUtils.d.ts +8 -0
  3. package/dist/cjs/rules/tsMethodSignatureStyle.d.ts +2 -0
  4. package/dist/cjs/rules/tsNoEmptyObjectType.d.ts +2 -0
  5. package/dist/cjs/rules/tsNoUnnecessaryTemplateExpression.d.ts +2 -0
  6. package/dist/cjs/rules/tsPreferFunctionType.d.ts +2 -0
  7. package/dist/index-cjs.cjs +12 -0
  8. package/dist/index-cjs.cjs.map +1 -1
  9. package/dist/index.cjs +12 -0
  10. package/dist/index.cjs.map +1 -1
  11. package/dist/jsdocUtils.cjs +158 -1
  12. package/dist/jsdocUtils.cjs.map +1 -1
  13. package/dist/jsdocUtils.d.ts +8 -0
  14. package/dist/rules/tsMethodSignatureStyle.cjs +240 -0
  15. package/dist/rules/tsMethodSignatureStyle.cjs.map +1 -0
  16. package/dist/rules/tsMethodSignatureStyle.d.ts +3 -0
  17. package/dist/rules/tsNoEmptyObjectType.cjs +62 -0
  18. package/dist/rules/tsNoEmptyObjectType.cjs.map +1 -0
  19. package/dist/rules/tsNoEmptyObjectType.d.ts +3 -0
  20. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +104 -0
  21. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +1 -0
  22. package/dist/rules/tsNoUnnecessaryTemplateExpression.d.ts +3 -0
  23. package/dist/rules/tsPreferFunctionType.cjs +110 -0
  24. package/dist/rules/tsPreferFunctionType.cjs.map +1 -0
  25. package/dist/rules/tsPreferFunctionType.d.ts +3 -0
  26. package/dist/rules/typeFormatting.cjs +2 -128
  27. package/dist/rules/typeFormatting.cjs.map +1 -1
  28. package/dist/rules.d.ts +41 -0
  29. package/package.json +3 -3
  30. package/src/index-cjs.js +12 -0
  31. package/src/index.js +12 -0
  32. package/src/jsdocUtils.js +181 -0
  33. package/src/rules/tsMethodSignatureStyle.js +300 -0
  34. package/src/rules/tsNoEmptyObjectType.js +61 -0
  35. package/src/rules/tsNoUnnecessaryTemplateExpression.js +130 -0
  36. package/src/rules/tsPreferFunctionType.js +127 -0
  37. package/src/rules/typeFormatting.js +4 -150
  38. package/src/rules.d.ts +41 -0
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
8
+ var _jsdocUtils = require("../jsdocUtils.cjs");
8
9
  var _jsdoccomment = require("@es-joy/jsdoccomment");
9
10
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
11
  const digitRegex = /^(\d+(\.\d*)?|\.\d+)([eE][\-+]?\d+)?$/v;
@@ -64,134 +65,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
64
65
  return;
65
66
  }
66
67
  const fix = () => {
67
- const typeLines = (0, _jsdoccomment.stringify)(parsedType).split('\n');
68
- const firstTypeLine = typeLines.shift();
69
- const lastTypeLine = typeLines.pop();
70
- const beginNameOrDescIdx = tag.source.findIndex(({
71
- tokens
72
- }) => {
73
- return tokens.name || tokens.description;
74
- });
75
- const nameAndDesc = beginNameOrDescIdx === -1 ? null : tag.source.slice(beginNameOrDescIdx);
76
- const initialNumber = tag.source[0].number;
77
- const src = [
78
- // Get inevitably present tag from first `tag.source`
79
- {
80
- number: initialNumber,
81
- source: '',
82
- tokens: {
83
- ...tag.source[0].tokens,
84
- ...(typeLines.length || lastTypeLine ? {
85
- end: '',
86
- name: '',
87
- postName: '',
88
- postType: ''
89
- } : {}),
90
- type: '{' + typeBracketSpacing + firstTypeLine + (!typeLines.length && lastTypeLine === undefined ? typeBracketSpacing + '}' : '')
91
- }
92
- },
93
- // Get any intervening type lines
94
- ...(typeLines.length ? typeLines.map((typeLine, idx) => {
95
- return {
96
- number: initialNumber + idx + 1,
97
- source: '',
98
- tokens: {
99
- // Grab any delimiter info from first item
100
- ...tag.source[0].tokens,
101
- delimiter: tag.source[0].tokens.delimiter === '/**' ? '*' : tag.source[0].tokens.delimiter,
102
- end: '',
103
- name: '',
104
- postName: '',
105
- postTag: '',
106
- postType: '',
107
- start: indent + ' ',
108
- tag: '',
109
- type: typeLine
110
- }
111
- };
112
- }) : [])];
113
-
114
- // Merge any final type line and name and description
115
- if (
116
- // Name and description may be already included if present with the tag
117
- nameAndDesc && beginNameOrDescIdx > 0) {
118
- src.push({
119
- number: src.length + 1,
120
- source: '',
121
- tokens: {
122
- ...nameAndDesc[0].tokens,
123
- type: lastTypeLine + typeBracketSpacing + '}'
124
- }
125
- });
126
- if (
127
- // Get any remaining description lines
128
- nameAndDesc.length > 1) {
129
- src.push(...nameAndDesc.slice(1).map(({
130
- source,
131
- tokens
132
- }, idx) => {
133
- return {
134
- number: src.length + idx + 2,
135
- source,
136
- tokens
137
- };
138
- }));
139
- }
140
- } else if (nameAndDesc) {
141
- if (lastTypeLine) {
142
- src.push({
143
- number: src.length + 1,
144
- source: '',
145
- tokens: {
146
- ...nameAndDesc[0].tokens,
147
- delimiter: nameAndDesc[0].tokens.delimiter === '/**' ? '*' : nameAndDesc[0].tokens.delimiter,
148
- postTag: '',
149
- start: indent + ' ',
150
- tag: '',
151
- type: lastTypeLine + typeBracketSpacing + '}'
152
- }
153
- });
154
- }
155
- if (
156
- // Get any remaining description lines
157
- nameAndDesc.length > 1) {
158
- src.push(...nameAndDesc.slice(1).map(({
159
- source,
160
- tokens
161
- }, idx) => {
162
- return {
163
- number: src.length + idx + 2,
164
- source,
165
- tokens
166
- };
167
- }));
168
- }
169
- }
170
- tag.source = src;
171
-
172
- // Properly rewire `jsdoc.source`
173
- const firstTagIdx = jsdoc.source.findIndex(({
174
- tokens: {
175
- tag: tg
176
- }
177
- }) => {
178
- return tg;
179
- });
180
- const initialEndSource = jsdoc.source.find(({
181
- tokens: {
182
- end
183
- }
184
- }) => {
185
- return end;
186
- });
187
- jsdoc.source = [...jsdoc.source.slice(0, firstTagIdx), ...jsdoc.tags.flatMap(({
188
- source
189
- }) => {
190
- return source;
191
- })];
192
- if (initialEndSource && !jsdoc.source.at(-1)?.tokens?.end) {
193
- jsdoc.source.push(initialEndSource);
194
- }
68
+ (0, _jsdocUtils.rewireByParsedType)(jsdoc, tag, parsedType, indent, typeBracketSpacing);
195
69
  };
196
70
 
197
71
  /** @type {string[]} */
@@ -1 +1 @@
1
- {"version":3,"file":"typeFormatting.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdoccomment","e","__esModule","default","digitRegex","_default","exports","iterateJsdoc","context","indent","jsdoc","settings","utils","arrayBrackets","arrowFunctionPostReturnMarkerSpacing","arrowFunctionPreReturnMarkerSpacing","enableFixer","functionOrClassParameterSpacing","functionOrClassPostGenericSpacing","functionOrClassPostReturnMarkerSpacing","functionOrClassPreReturnMarkerSpacing","functionOrClassTypeParameterSpacing","genericAndTupleElementSpacing","genericDot","keyValuePostColonSpacing","keyValuePostKeySpacing","keyValuePostOptionalSpacing","keyValuePostVariadicSpacing","methodQuotes","objectFieldIndent","objectFieldQuote","objectFieldSeparator","objectFieldSeparatorOptionalLinebreak","objectFieldSeparatorTrailingPunctuation","parameterDefaultValueSpacing","postMethodNameSpacing","postNewSpacing","separatorForSingleObjectField","stringQuotes","typeBracketSpacing","unionSpacing","options","mode","checkTypeFormats","tag","potentialType","type","parsedType","tryParseType","parseType","fix","typeLines","stringify","split","firstTypeLine","shift","lastTypeLine","pop","beginNameOrDescIdx","source","findIndex","tokens","name","description","nameAndDesc","slice","initialNumber","number","src","length","end","postName","postType","undefined","map","typeLine","idx","delimiter","postTag","start","push","firstTagIdx","tg","initialEndSource","find","tags","flatMap","at","errorMessages","startsWith","endsWith","test","traverse","nde","errorMessage","conditionalAdds","meta","typNode","newMeta","parameterSpacing","postGenericSpacing","postReturnMarkerSpacing","preReturnMarkerSpacing","typeParameterSpacing","typeNode","arrow","quote","left","value","brackets","dot","elementSpacing","postKeySpacing","postColonSpacing","postOptionalSpacing","postVariadicSpacing","variadic","separator","propertyIndent","trailingPunctuation","replace","key","defaultValue","defaultValueSpacing","spacing","differentResult","reportJSDoc","getPresentTags","iterateAllJsdocs","docs","url","fixable","schema","additionalProperties","properties","enum","module"],"sources":["../../src/rules/typeFormatting.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n parse as parseType,\n stringify,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\n\nconst digitRegex = (/^(\\d+(\\.\\d*)?|\\.\\d+)([eE][\\-+]?\\d+)?$/v);\n\n// eslint-disable-next-line complexity -- Todo\nexport default iterateJsdoc(({\n context,\n indent,\n jsdoc,\n settings,\n utils,\n}) => {\n const {\n arrayBrackets = 'square',\n arrowFunctionPostReturnMarkerSpacing = ' ',\n arrowFunctionPreReturnMarkerSpacing = ' ',\n enableFixer = true,\n functionOrClassParameterSpacing = ' ',\n functionOrClassPostGenericSpacing = '',\n functionOrClassPostReturnMarkerSpacing = ' ',\n functionOrClassPreReturnMarkerSpacing = '',\n functionOrClassTypeParameterSpacing = ' ',\n genericAndTupleElementSpacing = ' ',\n genericDot = false,\n keyValuePostColonSpacing = ' ',\n keyValuePostKeySpacing = '',\n keyValuePostOptionalSpacing = '',\n keyValuePostVariadicSpacing = '',\n methodQuotes = 'double',\n objectFieldIndent = '',\n objectFieldQuote = null,\n objectFieldSeparator = 'comma',\n objectFieldSeparatorOptionalLinebreak = true,\n objectFieldSeparatorTrailingPunctuation = false,\n parameterDefaultValueSpacing = ' ',\n postMethodNameSpacing = '',\n postNewSpacing = ' ',\n // propertyQuotes = null,\n separatorForSingleObjectField = false,\n stringQuotes = 'double',\n typeBracketSpacing = '',\n unionSpacing = ' ',\n } = context.options[0] || {};\n\n const {\n mode,\n } = settings;\n\n /**\n * @param {import('@es-joy/jsdoccomment').JsdocTagWithInline} tag\n */\n const checkTypeFormats = (tag) => {\n const potentialType = tag.type;\n let parsedType;\n try {\n parsedType = mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode);\n } catch {\n return;\n }\n\n const fix = () => {\n const typeLines = stringify(parsedType).split('\\n');\n const firstTypeLine = typeLines.shift();\n const lastTypeLine = typeLines.pop();\n\n const beginNameOrDescIdx = tag.source.findIndex(({\n tokens,\n }) => {\n return tokens.name || tokens.description;\n });\n\n const nameAndDesc = beginNameOrDescIdx === -1 ?\n null :\n tag.source.slice(beginNameOrDescIdx);\n\n const initialNumber = tag.source[0].number;\n const src = [\n // Get inevitably present tag from first `tag.source`\n {\n number: initialNumber,\n source: '',\n tokens: {\n ...tag.source[0].tokens,\n ...(typeLines.length || lastTypeLine ? {\n end: '',\n name: '',\n postName: '',\n postType: '',\n } : {}),\n type: '{' + typeBracketSpacing + firstTypeLine + (!typeLines.length && lastTypeLine === undefined ? typeBracketSpacing + '}' : ''),\n },\n },\n // Get any intervening type lines\n ...(typeLines.length ? typeLines.map((typeLine, idx) => {\n return {\n number: initialNumber + idx + 1,\n source: '',\n tokens: {\n // Grab any delimiter info from first item\n ...tag.source[0].tokens,\n delimiter: tag.source[0].tokens.delimiter === '/**' ? '*' : tag.source[0].tokens.delimiter,\n end: '',\n name: '',\n postName: '',\n postTag: '',\n postType: '',\n start: indent + ' ',\n tag: '',\n type: typeLine,\n },\n };\n }) : []),\n ];\n\n // Merge any final type line and name and description\n if (\n // Name and description may be already included if present with the tag\n nameAndDesc && beginNameOrDescIdx > 0\n ) {\n src.push({\n number: src.length + 1,\n source: '',\n tokens: {\n ...nameAndDesc[0].tokens,\n type: lastTypeLine + typeBracketSpacing + '}',\n },\n });\n\n if (\n // Get any remaining description lines\n nameAndDesc.length > 1\n ) {\n src.push(\n ...nameAndDesc.slice(1).map(({\n source,\n tokens,\n }, idx) => {\n return {\n number: src.length + idx + 2,\n source,\n tokens,\n };\n }),\n );\n }\n } else if (nameAndDesc) {\n if (lastTypeLine) {\n src.push({\n number: src.length + 1,\n source: '',\n tokens: {\n ...nameAndDesc[0].tokens,\n delimiter: nameAndDesc[0].tokens.delimiter === '/**' ? '*' : nameAndDesc[0].tokens.delimiter,\n postTag: '',\n start: indent + ' ',\n tag: '',\n type: lastTypeLine + typeBracketSpacing + '}',\n },\n });\n }\n\n if (\n // Get any remaining description lines\n nameAndDesc.length > 1\n ) {\n src.push(\n ...nameAndDesc.slice(1).map(({\n source,\n tokens,\n }, idx) => {\n return {\n number: src.length + idx + 2,\n source,\n tokens,\n };\n }),\n );\n }\n }\n\n tag.source = src;\n\n // Properly rewire `jsdoc.source`\n const firstTagIdx = jsdoc.source.findIndex(({\n tokens: {\n tag: tg,\n },\n }) => {\n return tg;\n });\n\n const initialEndSource = jsdoc.source.find(({\n tokens: {\n end,\n },\n }) => {\n return end;\n });\n\n jsdoc.source = [\n ...jsdoc.source.slice(0, firstTagIdx),\n ...jsdoc.tags.flatMap(({\n source,\n }) => {\n return source;\n }),\n ];\n\n if (initialEndSource && !jsdoc.source.at(-1)?.tokens?.end) {\n jsdoc.source.push(initialEndSource);\n }\n };\n\n /** @type {string[]} */\n const errorMessages = [];\n\n if (typeBracketSpacing && (!tag.type.startsWith(typeBracketSpacing) || !tag.type.endsWith(typeBracketSpacing))) {\n errorMessages.push(`Must have initial and final \"${typeBracketSpacing}\" spacing`);\n } else if (!typeBracketSpacing && ((/^\\s/v).test(tag.type) || (/\\s$/v).test(tag.type))) {\n errorMessages.push('Must have no initial spacing');\n }\n\n // eslint-disable-next-line complexity -- Todo\n traverse(parsedType, (nde) => {\n let errorMessage = '';\n\n /**\n * @param {Partial<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing?: string,\n * postMethodNameSpacing?: string\n * }} meta\n * @returns {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing?: string,\n * postMethodNameSpacing?: string\n * }}\n */\n const conditionalAdds = (meta) => {\n const typNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').FunctionResult|\n * import('jsdoc-type-pratt-parser').CallSignatureResult|\n * import('jsdoc-type-pratt-parser').ComputedMethodResult|\n * import('jsdoc-type-pratt-parser').ConstructorSignatureResult|\n * import('jsdoc-type-pratt-parser').MethodSignatureResult\n * }\n */ (nde);\n\n /**\n * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing?: string,\n * postMethodNameSpacing?: string\n * }}\n */\n const newMeta = {\n parameterSpacing: meta.parameterSpacing ?? typNode.meta?.parameterSpacing ?? ' ',\n postGenericSpacing: meta.postGenericSpacing ?? typNode.meta?.postGenericSpacing ?? '',\n postReturnMarkerSpacing: meta.postReturnMarkerSpacing ?? typNode.meta?.postReturnMarkerSpacing ?? ' ',\n preReturnMarkerSpacing: meta.preReturnMarkerSpacing ?? typNode.meta?.preReturnMarkerSpacing ?? '',\n typeParameterSpacing: meta.typeParameterSpacing ?? typNode.meta?.typeParameterSpacing ?? ' ',\n };\n\n if (typNode.type === 'JsdocTypeConstructorSignature') {\n newMeta.postNewSpacing = meta.postNewSpacing;\n }\n\n if (typNode.type === 'JsdocTypeMethodSignature') {\n newMeta.postMethodNameSpacing = meta.postMethodNameSpacing ?? typNode.meta?.postMethodNameSpacing ?? '';\n }\n\n return newMeta;\n };\n\n switch (nde.type) {\n case 'JsdocTypeConstructorSignature': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').ConstructorSignatureResult} */ (nde);\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.postNewSpacing ?? ' ') !== postNewSpacing) {\n typeNode.meta =\n /**\n * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing: string,\n * }}\n */ (conditionalAdds({\n postNewSpacing,\n }));\n errorMessage = `Post-\\`new\\` spacing should be \"${postNewSpacing}\"`;\n break;\n }\n }\n\n case 'JsdocTypeFunction': {\n const typeNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').FunctionResult}\n */ nde;\n if ('arrow' in typeNode && typeNode.arrow) {\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.postReturnMarkerSpacing ?? ' ') !== arrowFunctionPostReturnMarkerSpacing) {\n typeNode.meta =\n /**\n * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing: string,\n * }}\n */ (conditionalAdds({\n postReturnMarkerSpacing: arrowFunctionPostReturnMarkerSpacing,\n /* c8 ignore next -- Guard */\n preReturnMarkerSpacing: typeNode.meta?.preReturnMarkerSpacing ?? ' ',\n }));\n errorMessage = `Post-return-marker spacing should be \"${arrowFunctionPostReturnMarkerSpacing}\"`;\n break;\n /* c8 ignore next -- Guard */\n } else if ((typeNode.meta?.preReturnMarkerSpacing ?? ' ') !== arrowFunctionPreReturnMarkerSpacing) {\n typeNode.meta =\n /**\n * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing: string,\n * }}\n */ (conditionalAdds({\n /* c8 ignore next -- Guard */\n postReturnMarkerSpacing: typeNode.meta?.postReturnMarkerSpacing ?? ' ',\n preReturnMarkerSpacing: arrowFunctionPreReturnMarkerSpacing,\n }));\n errorMessage = `Pre-return-marker spacing should be \"${arrowFunctionPreReturnMarkerSpacing}\"`;\n break;\n }\n\n break;\n }\n }\n\n case 'JsdocTypeCallSignature':\n case 'JsdocTypeComputedMethod':\n case 'JsdocTypeMethodSignature': {\n const typeNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').FunctionResult|\n * import('jsdoc-type-pratt-parser').CallSignatureResult|\n * import('jsdoc-type-pratt-parser').ComputedMethodResult|\n * import('jsdoc-type-pratt-parser').ConstructorSignatureResult|\n * import('jsdoc-type-pratt-parser').MethodSignatureResult\n * }\n */ (nde);\n if (typeNode.type === 'JsdocTypeMethodSignature' &&\n (typeNode.meta?.postMethodNameSpacing ?? '') !== postMethodNameSpacing\n ) {\n typeNode.meta = {\n quote: typeNode.meta.quote,\n ...conditionalAdds({\n postMethodNameSpacing,\n }),\n };\n errorMessage = `Post-method-name spacing should be \"${postMethodNameSpacing}\"`;\n break;\n } else if (typeNode.type === 'JsdocTypeMethodSignature' &&\n typeNode.meta.quote !== undefined &&\n typeNode.meta.quote !== methodQuotes\n ) {\n typeNode.meta = {\n ...conditionalAdds({\n postMethodNameSpacing: typeNode.meta.postMethodNameSpacing ?? '',\n }),\n quote: methodQuotes,\n };\n errorMessage = `Method quoting style should be \"${methodQuotes}\"`;\n break;\n }\n\n if ((typeNode.meta?.parameterSpacing ?? ' ') !== functionOrClassParameterSpacing) {\n typeNode.meta = conditionalAdds({\n parameterSpacing: functionOrClassParameterSpacing,\n });\n errorMessage = `Parameter spacing should be \"${functionOrClassParameterSpacing}\"`;\n } else if ((typeNode.meta?.postGenericSpacing ?? '') !== functionOrClassPostGenericSpacing) {\n typeNode.meta = conditionalAdds({\n postGenericSpacing: functionOrClassPostGenericSpacing,\n });\n errorMessage = `Post-generic spacing should be \"${functionOrClassPostGenericSpacing}\"`;\n } else if ((typeNode.meta?.postReturnMarkerSpacing ?? ' ') !== functionOrClassPostReturnMarkerSpacing) {\n typeNode.meta = conditionalAdds({\n postReturnMarkerSpacing: functionOrClassPostReturnMarkerSpacing,\n });\n errorMessage = `Post-return-marker spacing should be \"${functionOrClassPostReturnMarkerSpacing}\"`;\n } else if ((typeNode.meta?.preReturnMarkerSpacing ?? '') !== functionOrClassPreReturnMarkerSpacing) {\n typeNode.meta = conditionalAdds({\n preReturnMarkerSpacing: functionOrClassPreReturnMarkerSpacing,\n });\n errorMessage = `Pre-return-marker spacing should be \"${functionOrClassPreReturnMarkerSpacing}\"`;\n } else if ((typeNode.meta?.typeParameterSpacing ?? ' ') !== functionOrClassTypeParameterSpacing) {\n typeNode.meta = conditionalAdds({\n typeParameterSpacing: functionOrClassTypeParameterSpacing,\n });\n errorMessage = `Type parameter spacing should be \"${functionOrClassTypeParameterSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeGeneric': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (nde);\n if ('value' in typeNode.left && typeNode.left.value === 'Array') {\n if (typeNode.meta.brackets !== arrayBrackets) {\n typeNode.meta.brackets = arrayBrackets;\n errorMessage = `Array bracket style should be ${arrayBrackets}`;\n }\n } else if (typeNode.meta.dot !== genericDot) {\n typeNode.meta.dot = genericDot;\n errorMessage = `Dot usage should be ${genericDot}`;\n } else if ((typeNode.meta.elementSpacing ?? ' ') !== genericAndTupleElementSpacing) {\n typeNode.meta.elementSpacing = genericAndTupleElementSpacing;\n errorMessage = `Element spacing should be \"${genericAndTupleElementSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeKeyValue': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').KeyValueResult} */ (nde);\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.postKeySpacing ?? '') !== keyValuePostKeySpacing) {\n typeNode.meta = {\n /* c8 ignore next -- Guard */\n postColonSpacing: typeNode.meta?.postColonSpacing ?? ' ',\n postKeySpacing: keyValuePostKeySpacing,\n /* c8 ignore next 2 -- Guard */\n postOptionalSpacing: typeNode.meta?.postOptionalSpacing ?? '',\n postVariadicSpacing: typeNode.meta?.postVariadicSpacing ?? '',\n };\n errorMessage = `Post key spacing should be \"${keyValuePostKeySpacing}\"`;\n /* c8 ignore next -- Guard */\n } else if ((typeNode.meta?.postColonSpacing ?? ' ') !== keyValuePostColonSpacing) {\n typeNode.meta = {\n postColonSpacing: keyValuePostColonSpacing,\n /* c8 ignore next 3 -- Guard */\n postKeySpacing: typeNode.meta?.postKeySpacing ?? '',\n postOptionalSpacing: typeNode.meta?.postOptionalSpacing ?? '',\n postVariadicSpacing: typeNode.meta?.postVariadicSpacing ?? '',\n };\n errorMessage = `Post colon spacing should be \"${keyValuePostColonSpacing}\"`;\n /* c8 ignore next -- Guard */\n } else if ((typeNode.meta?.postOptionalSpacing ?? '') !== keyValuePostOptionalSpacing) {\n typeNode.meta = {\n /* c8 ignore next 2 -- Guard */\n postColonSpacing: typeNode.meta?.postColonSpacing ?? ' ',\n postKeySpacing: typeNode.meta?.postKeySpacing ?? '',\n postOptionalSpacing: keyValuePostOptionalSpacing,\n /* c8 ignore next -- Guard */\n postVariadicSpacing: typeNode.meta?.postVariadicSpacing ?? '',\n };\n errorMessage = `Post optional (\\`?\\`) spacing should be \"${keyValuePostOptionalSpacing}\"`;\n /* c8 ignore next -- Guard */\n } else if (typeNode.variadic && (typeNode.meta?.postVariadicSpacing ?? '') !== keyValuePostVariadicSpacing) {\n typeNode.meta = {\n /* c8 ignore next 3 -- Guard */\n postColonSpacing: typeNode.meta?.postColonSpacing ?? ' ',\n postKeySpacing: typeNode.meta?.postKeySpacing ?? '',\n postOptionalSpacing: typeNode.meta?.postOptionalSpacing ?? '',\n postVariadicSpacing: keyValuePostVariadicSpacing,\n };\n errorMessage = `Post variadic (\\`...\\`) spacing should be \"${keyValuePostVariadicSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeObject': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').ObjectResult} */ (nde);\n /* c8 ignore next -- Guard */\n const separator = typeNode.meta.separator ?? 'comma';\n if (\n (separator !== objectFieldSeparator &&\n (!objectFieldSeparatorOptionalLinebreak ||\n !(objectFieldSeparator.endsWith('-linebreak') &&\n objectFieldSeparator.startsWith(separator)))) ||\n (typeNode.meta.separatorForSingleObjectField ?? false) !== separatorForSingleObjectField ||\n ((typeNode.meta.propertyIndent ?? '') !== objectFieldIndent &&\n separator.endsWith('-linebreak')) ||\n (typeNode.meta.trailingPunctuation ?? false) !== objectFieldSeparatorTrailingPunctuation\n ) {\n typeNode.meta.separator = objectFieldSeparatorOptionalLinebreak && !separator.endsWith('and-linebreak') ?\n objectFieldSeparator.replace(/-and-linebreak$/v, '') :\n objectFieldSeparator;\n typeNode.meta.separatorForSingleObjectField = separatorForSingleObjectField;\n typeNode.meta.propertyIndent = objectFieldIndent;\n typeNode.meta.trailingPunctuation = objectFieldSeparatorTrailingPunctuation;\n errorMessage = `Inconsistent ${objectFieldSeparator} separator usage`;\n }\n\n break;\n }\n\n case 'JsdocTypeObjectField': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').ObjectFieldResult} */ (nde);\n if ((objectFieldQuote ||\n (typeof typeNode.key === 'string' &&\n (\n (/^[\\p{ID_Start}$_][\\p{ID_Continue}$\\u200C\\u200D]*$/v).test(typeNode.key) ||\n digitRegex.test(typeNode.key)\n )\n )) &&\n typeNode.meta.quote !== (objectFieldQuote ?? undefined) &&\n (typeof typeNode.key !== 'string' ||\n !digitRegex.test(typeNode.key))\n ) {\n typeNode.meta.quote = objectFieldQuote ?? undefined;\n errorMessage = `Inconsistent object field quotes ${objectFieldQuote}`;\n } else if ((typeNode.meta?.postKeySpacing ?? '') !== keyValuePostKeySpacing) {\n typeNode.meta.postKeySpacing = keyValuePostKeySpacing;\n errorMessage = `Post key spacing should be \"${keyValuePostKeySpacing}\"`;\n } else if ((typeNode.meta?.postColonSpacing ?? ' ') !== keyValuePostColonSpacing) {\n typeNode.meta.postColonSpacing = keyValuePostColonSpacing;\n errorMessage = `Post colon spacing should be \"${keyValuePostColonSpacing}\"`;\n } else if ((typeNode.meta?.postOptionalSpacing ?? '') !== keyValuePostOptionalSpacing) {\n typeNode.meta.postOptionalSpacing = keyValuePostOptionalSpacing;\n errorMessage = `Post optional (\\`?\\`) spacing should be \"${keyValuePostOptionalSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeStringValue': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').StringValueResult} */ (nde);\n if (typeNode.meta.quote !== stringQuotes) {\n typeNode.meta.quote = stringQuotes;\n errorMessage = `Inconsistent ${stringQuotes} string quotes usage`;\n }\n\n break;\n }\n\n // Only suitable for namepaths (and would need changes); see https://github.com/gajus/eslint-plugin-jsdoc/issues/1524\n // case 'JsdocTypeProperty': {\n // const typeNode = /** @type {import('jsdoc-type-pratt-parser').PropertyResult} */ (nde);\n\n // if ((propertyQuotes ||\n // (typeof typeNode.value === 'string' && !(/\\s/v).test(typeNode.value))) &&\n // typeNode.meta.quote !== (propertyQuotes ?? undefined)\n // ) {\n // typeNode.meta.quote = propertyQuotes ?? undefined;\n // errorMessage = `Inconsistent ${propertyQuotes} property quotes usage`;\n // }\n\n // break;\n // }\n\n case 'JsdocTypeTuple': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').TupleResult} */ (nde);\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.elementSpacing ?? ' ') !== genericAndTupleElementSpacing) {\n typeNode.meta = {\n elementSpacing: genericAndTupleElementSpacing,\n };\n errorMessage = `Element spacing should be \"${genericAndTupleElementSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeTypeParameter': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').TypeParameterResult} */ (nde);\n /* c8 ignore next -- Guard */\n if (typeNode.defaultValue && (typeNode.meta?.defaultValueSpacing ?? ' ') !== parameterDefaultValueSpacing) {\n typeNode.meta = {\n defaultValueSpacing: parameterDefaultValueSpacing,\n };\n errorMessage = `Default value spacing should be \"${parameterDefaultValueSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeUnion': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').UnionResult} */ (nde);\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.spacing ?? ' ') !== unionSpacing) {\n typeNode.meta = {\n spacing: unionSpacing,\n };\n errorMessage = `Inconsistent \"${unionSpacing}\" union spacing usage`;\n }\n\n break;\n }\n\n default:\n break;\n }\n\n if (errorMessage) {\n errorMessages.push(errorMessage);\n }\n });\n\n const differentResult = tag.type !==\n typeBracketSpacing + stringify(parsedType) + typeBracketSpacing;\n\n if (errorMessages.length && differentResult) {\n for (const errorMessage of errorMessages) {\n utils.reportJSDoc(\n errorMessage, tag, enableFixer ? fix : null,\n );\n }\n // Stringification may have been equal previously (and thus no error reported)\n // because the stringification doesn't preserve everything\n } else if (differentResult) {\n utils.reportJSDoc(\n 'There was an error with type formatting', tag, enableFixer ? fix : null,\n );\n }\n };\n\n const tags = utils.getPresentTags([\n 'param',\n 'property',\n 'returns',\n 'this',\n 'throws',\n 'type',\n 'typedef',\n 'yields',\n ]);\n for (const tag of tags) {\n if (tag.type) {\n checkTypeFormats(tag);\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Formats JSDoc type values.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/type-formatting.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n arrayBrackets: {\n description: 'Determines how array generics are represented. Set to `angle` for the style `Array<type>` or `square` for the style `type[]`. Defaults to \"square\".',\n enum: [\n 'angle',\n 'square',\n ],\n type: 'string',\n },\n arrowFunctionPostReturnMarkerSpacing: {\n description: 'The space character (if any) to use after return markers (`=>`). Defaults to \" \".',\n type: 'string',\n },\n arrowFunctionPreReturnMarkerSpacing: {\n description: 'The space character (if any) to use before return markers (`=>`). Defaults to \" \".',\n type: 'string',\n },\n enableFixer: {\n description: 'Whether to enable the fixer. Defaults to `true`.',\n type: 'boolean',\n },\n functionOrClassParameterSpacing: {\n description: 'The space character (if any) to use between function or class parameters. Defaults to \" \".',\n type: 'string',\n },\n functionOrClassPostGenericSpacing: {\n description: 'The space character (if any) to use after a generic expression in a function or class. Defaults to \"\".',\n type: 'string',\n },\n functionOrClassPostReturnMarkerSpacing: {\n description: 'The space character (if any) to use after return markers (`:`). Defaults to \"\".',\n type: 'string',\n },\n functionOrClassPreReturnMarkerSpacing: {\n description: 'The space character (if any) to use before return markers (`:`). Defaults to \"\".',\n type: 'string',\n },\n functionOrClassTypeParameterSpacing: {\n description: 'The space character (if any) to use between type parameters in a function or class. Defaults to \" \".',\n type: 'string',\n },\n genericAndTupleElementSpacing: {\n description: 'The space character (if any) to use between elements in generics and tuples. Defaults to \" \".',\n type: 'string',\n },\n genericDot: {\n description: 'Boolean value of whether to use a dot before the angled brackets of a generic (e.g., `SomeType.<AnotherType>`). Defaults to `false`.',\n type: 'boolean',\n },\n keyValuePostColonSpacing: {\n description: 'The amount of spacing (if any) after the colon of a key-value or object-field pair. Defaults to \" \".',\n type: 'string',\n },\n keyValuePostKeySpacing: {\n description: 'The amount of spacing (if any) immediately after keys in a key-value or object-field pair. Defaults to \"\".',\n type: 'string',\n },\n keyValuePostOptionalSpacing: {\n description: 'The amount of spacing (if any) after the optional operator (`?`) in a key-value or object-field pair. Defaults to \"\".',\n type: 'string',\n },\n keyValuePostVariadicSpacing: {\n description: 'The amount of spacing (if any) after a variadic operator (`...`) in a key-value pair. Defaults to \"\".',\n type: 'string',\n },\n methodQuotes: {\n description: 'The style of quotation mark for surrounding method names when quoted. Defaults to `double`',\n enum: [\n 'double',\n 'single',\n ],\n type: 'string',\n },\n objectFieldIndent: {\n description: `A string indicating the whitespace to be added on each line preceding an\nobject property-value field. Defaults to the empty string.`,\n type: 'string',\n },\n objectFieldQuote: {\n description: `Whether and how object field properties should be quoted (e.g., \\`{\"a\": string}\\`).\nSet to \\`single\\`, \\`double\\`, or \\`null\\`. Defaults to \\`null\\` (no quotes unless\nrequired due to special characters within the field). Digits will be kept as is,\nregardless of setting (they can either represent a digit or a string digit).`,\n enum: [\n 'double',\n 'single',\n null,\n ],\n },\n objectFieldSeparator: {\n description: `For object properties, specify whether a \"semicolon\", \"comma\", \"linebreak\",\n\"semicolon-and-linebreak\", or \"comma-and-linebreak\" should be used after\neach object property-value pair.\n\nDefaults to \\`\"comma\"\\`.`,\n enum: [\n 'comma',\n 'comma-and-linebreak',\n 'linebreak',\n 'semicolon',\n 'semicolon-and-linebreak',\n ],\n type: 'string',\n },\n objectFieldSeparatorOptionalLinebreak: {\n description: `Whether \\`objectFieldSeparator\\` set to \\`\"semicolon-and-linebreak\"\\` or\n\\`\"comma-and-linebreak\"\\` should be allowed to optionally drop the linebreak.\n\nDefaults to \\`true\\`.`,\n type: 'boolean',\n },\n objectFieldSeparatorTrailingPunctuation: {\n description: `If \\`separatorForSingleObjectField\\` is not in effect (i.e., if it is \\`false\\`\nor there are multiple property-value object fields present), this property\nwill determine whether to add punctuation corresponding to the\n\\`objectFieldSeparator\\` (e.g., a semicolon) to the final object field.\nDefaults to \\`false\\`.`,\n type: 'boolean',\n },\n parameterDefaultValueSpacing: {\n description: 'The space character (if any) to use between the equal signs of a default value. Defaults to \" \".',\n type: 'string',\n },\n postMethodNameSpacing: {\n description: 'The space character (if any) to add after a method name. Defaults to \"\".',\n type: 'string',\n },\n postNewSpacing: {\n description: 'The space character (if any) to add after \"new\" in a constructor. Defaults to \" \".',\n type: 'string',\n },\n // propertyQuotes: {\n // description: `Whether and how namepath properties should be quoted (e.g., \\`ab.\"cd\".\"ef\"\\`).\n // Set to \\`single\\`, \\`double\\`, or \\`null\\`. Defaults to \\`null\\` (no quotes unless\n // required due to whitespace within the property).`,\n // enum: [\n // 'double',\n // 'single',\n // null,\n // ],\n // },\n separatorForSingleObjectField: {\n description: `Whether to apply the \\`objectFieldSeparator\\` (e.g., a semicolon) when there\nis only one property-value object field present. Defaults to \\`false\\`.`,\n type: 'boolean',\n },\n stringQuotes: {\n description: `How string literals should be quoted (e.g., \\`\"abc\"\\`). Set to \\`single\\`\nor \\`double\\`. Defaults to 'double'.`,\n enum: [\n 'double',\n 'single',\n ],\n type: 'string',\n },\n typeBracketSpacing: {\n description: `A string of spaces that will be added immediately after the type's initial\ncurly bracket and immediately before its ending curly bracket. Defaults\nto the empty string.`,\n type: 'string',\n },\n unionSpacing: {\n description: 'Determines the spacing to add to unions (`|`). Defaults to a single space (`\" \"`).',\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"typeFormatting.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdocUtils","_jsdoccomment","e","__esModule","default","digitRegex","_default","exports","iterateJsdoc","context","indent","jsdoc","settings","utils","arrayBrackets","arrowFunctionPostReturnMarkerSpacing","arrowFunctionPreReturnMarkerSpacing","enableFixer","functionOrClassParameterSpacing","functionOrClassPostGenericSpacing","functionOrClassPostReturnMarkerSpacing","functionOrClassPreReturnMarkerSpacing","functionOrClassTypeParameterSpacing","genericAndTupleElementSpacing","genericDot","keyValuePostColonSpacing","keyValuePostKeySpacing","keyValuePostOptionalSpacing","keyValuePostVariadicSpacing","methodQuotes","objectFieldIndent","objectFieldQuote","objectFieldSeparator","objectFieldSeparatorOptionalLinebreak","objectFieldSeparatorTrailingPunctuation","parameterDefaultValueSpacing","postMethodNameSpacing","postNewSpacing","separatorForSingleObjectField","stringQuotes","typeBracketSpacing","unionSpacing","options","mode","checkTypeFormats","tag","potentialType","type","parsedType","tryParseType","parseType","fix","rewireByParsedType","errorMessages","startsWith","endsWith","push","test","traverse","nde","errorMessage","conditionalAdds","meta","typNode","newMeta","parameterSpacing","postGenericSpacing","postReturnMarkerSpacing","preReturnMarkerSpacing","typeParameterSpacing","typeNode","arrow","quote","undefined","left","value","brackets","dot","elementSpacing","postKeySpacing","postColonSpacing","postOptionalSpacing","postVariadicSpacing","variadic","separator","propertyIndent","trailingPunctuation","replace","key","defaultValue","defaultValueSpacing","spacing","differentResult","stringify","length","reportJSDoc","tags","getPresentTags","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","enum","module"],"sources":["../../src/rules/typeFormatting.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n rewireByParsedType,\n} from '../jsdocUtils.js';\nimport {\n parse as parseType,\n stringify,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\n\nconst digitRegex = (/^(\\d+(\\.\\d*)?|\\.\\d+)([eE][\\-+]?\\d+)?$/v);\n\n// eslint-disable-next-line complexity -- Todo\nexport default iterateJsdoc(({\n context,\n indent,\n jsdoc,\n settings,\n utils,\n}) => {\n const {\n arrayBrackets = 'square',\n arrowFunctionPostReturnMarkerSpacing = ' ',\n arrowFunctionPreReturnMarkerSpacing = ' ',\n enableFixer = true,\n functionOrClassParameterSpacing = ' ',\n functionOrClassPostGenericSpacing = '',\n functionOrClassPostReturnMarkerSpacing = ' ',\n functionOrClassPreReturnMarkerSpacing = '',\n functionOrClassTypeParameterSpacing = ' ',\n genericAndTupleElementSpacing = ' ',\n genericDot = false,\n keyValuePostColonSpacing = ' ',\n keyValuePostKeySpacing = '',\n keyValuePostOptionalSpacing = '',\n keyValuePostVariadicSpacing = '',\n methodQuotes = 'double',\n objectFieldIndent = '',\n objectFieldQuote = null,\n objectFieldSeparator = 'comma',\n objectFieldSeparatorOptionalLinebreak = true,\n objectFieldSeparatorTrailingPunctuation = false,\n parameterDefaultValueSpacing = ' ',\n postMethodNameSpacing = '',\n postNewSpacing = ' ',\n // propertyQuotes = null,\n separatorForSingleObjectField = false,\n stringQuotes = 'double',\n typeBracketSpacing = '',\n unionSpacing = ' ',\n } = context.options[0] || {};\n\n const {\n mode,\n } = settings;\n\n /**\n * @param {import('@es-joy/jsdoccomment').JsdocTagWithInline} tag\n */\n const checkTypeFormats = (tag) => {\n const potentialType = tag.type;\n let parsedType;\n try {\n parsedType = mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode);\n } catch {\n return;\n }\n\n const fix = () => {\n rewireByParsedType(jsdoc, tag, parsedType, indent, typeBracketSpacing);\n };\n\n /** @type {string[]} */\n const errorMessages = [];\n\n if (typeBracketSpacing && (!tag.type.startsWith(typeBracketSpacing) || !tag.type.endsWith(typeBracketSpacing))) {\n errorMessages.push(`Must have initial and final \"${typeBracketSpacing}\" spacing`);\n } else if (!typeBracketSpacing && ((/^\\s/v).test(tag.type) || (/\\s$/v).test(tag.type))) {\n errorMessages.push('Must have no initial spacing');\n }\n\n // eslint-disable-next-line complexity -- Todo\n traverse(parsedType, (nde) => {\n let errorMessage = '';\n\n /**\n * @param {Partial<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing?: string,\n * postMethodNameSpacing?: string\n * }} meta\n * @returns {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing?: string,\n * postMethodNameSpacing?: string\n * }}\n */\n const conditionalAdds = (meta) => {\n const typNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').FunctionResult|\n * import('jsdoc-type-pratt-parser').CallSignatureResult|\n * import('jsdoc-type-pratt-parser').ComputedMethodResult|\n * import('jsdoc-type-pratt-parser').ConstructorSignatureResult|\n * import('jsdoc-type-pratt-parser').MethodSignatureResult\n * }\n */ (nde);\n\n /**\n * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing?: string,\n * postMethodNameSpacing?: string\n * }}\n */\n const newMeta = {\n parameterSpacing: meta.parameterSpacing ?? typNode.meta?.parameterSpacing ?? ' ',\n postGenericSpacing: meta.postGenericSpacing ?? typNode.meta?.postGenericSpacing ?? '',\n postReturnMarkerSpacing: meta.postReturnMarkerSpacing ?? typNode.meta?.postReturnMarkerSpacing ?? ' ',\n preReturnMarkerSpacing: meta.preReturnMarkerSpacing ?? typNode.meta?.preReturnMarkerSpacing ?? '',\n typeParameterSpacing: meta.typeParameterSpacing ?? typNode.meta?.typeParameterSpacing ?? ' ',\n };\n\n if (typNode.type === 'JsdocTypeConstructorSignature') {\n newMeta.postNewSpacing = meta.postNewSpacing;\n }\n\n if (typNode.type === 'JsdocTypeMethodSignature') {\n newMeta.postMethodNameSpacing = meta.postMethodNameSpacing ?? typNode.meta?.postMethodNameSpacing ?? '';\n }\n\n return newMeta;\n };\n\n switch (nde.type) {\n case 'JsdocTypeConstructorSignature': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').ConstructorSignatureResult} */ (nde);\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.postNewSpacing ?? ' ') !== postNewSpacing) {\n typeNode.meta =\n /**\n * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing: string,\n * }}\n */ (conditionalAdds({\n postNewSpacing,\n }));\n errorMessage = `Post-\\`new\\` spacing should be \"${postNewSpacing}\"`;\n break;\n }\n }\n\n case 'JsdocTypeFunction': {\n const typeNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').FunctionResult}\n */ nde;\n if ('arrow' in typeNode && typeNode.arrow) {\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.postReturnMarkerSpacing ?? ' ') !== arrowFunctionPostReturnMarkerSpacing) {\n typeNode.meta =\n /**\n * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing: string,\n * }}\n */ (conditionalAdds({\n postReturnMarkerSpacing: arrowFunctionPostReturnMarkerSpacing,\n /* c8 ignore next -- Guard */\n preReturnMarkerSpacing: typeNode.meta?.preReturnMarkerSpacing ?? ' ',\n }));\n errorMessage = `Post-return-marker spacing should be \"${arrowFunctionPostReturnMarkerSpacing}\"`;\n break;\n /* c8 ignore next -- Guard */\n } else if ((typeNode.meta?.preReturnMarkerSpacing ?? ' ') !== arrowFunctionPreReturnMarkerSpacing) {\n typeNode.meta =\n /**\n * @type {Required<import('jsdoc-type-pratt-parser').FunctionResult['meta']> & {\n * postNewSpacing: string,\n * }}\n */ (conditionalAdds({\n /* c8 ignore next -- Guard */\n postReturnMarkerSpacing: typeNode.meta?.postReturnMarkerSpacing ?? ' ',\n preReturnMarkerSpacing: arrowFunctionPreReturnMarkerSpacing,\n }));\n errorMessage = `Pre-return-marker spacing should be \"${arrowFunctionPreReturnMarkerSpacing}\"`;\n break;\n }\n\n break;\n }\n }\n\n case 'JsdocTypeCallSignature':\n case 'JsdocTypeComputedMethod':\n case 'JsdocTypeMethodSignature': {\n const typeNode =\n /**\n * @type {import('jsdoc-type-pratt-parser').FunctionResult|\n * import('jsdoc-type-pratt-parser').CallSignatureResult|\n * import('jsdoc-type-pratt-parser').ComputedMethodResult|\n * import('jsdoc-type-pratt-parser').ConstructorSignatureResult|\n * import('jsdoc-type-pratt-parser').MethodSignatureResult\n * }\n */ (nde);\n if (typeNode.type === 'JsdocTypeMethodSignature' &&\n (typeNode.meta?.postMethodNameSpacing ?? '') !== postMethodNameSpacing\n ) {\n typeNode.meta = {\n quote: typeNode.meta.quote,\n ...conditionalAdds({\n postMethodNameSpacing,\n }),\n };\n errorMessage = `Post-method-name spacing should be \"${postMethodNameSpacing}\"`;\n break;\n } else if (typeNode.type === 'JsdocTypeMethodSignature' &&\n typeNode.meta.quote !== undefined &&\n typeNode.meta.quote !== methodQuotes\n ) {\n typeNode.meta = {\n ...conditionalAdds({\n postMethodNameSpacing: typeNode.meta.postMethodNameSpacing ?? '',\n }),\n quote: methodQuotes,\n };\n errorMessage = `Method quoting style should be \"${methodQuotes}\"`;\n break;\n }\n\n if ((typeNode.meta?.parameterSpacing ?? ' ') !== functionOrClassParameterSpacing) {\n typeNode.meta = conditionalAdds({\n parameterSpacing: functionOrClassParameterSpacing,\n });\n errorMessage = `Parameter spacing should be \"${functionOrClassParameterSpacing}\"`;\n } else if ((typeNode.meta?.postGenericSpacing ?? '') !== functionOrClassPostGenericSpacing) {\n typeNode.meta = conditionalAdds({\n postGenericSpacing: functionOrClassPostGenericSpacing,\n });\n errorMessage = `Post-generic spacing should be \"${functionOrClassPostGenericSpacing}\"`;\n } else if ((typeNode.meta?.postReturnMarkerSpacing ?? ' ') !== functionOrClassPostReturnMarkerSpacing) {\n typeNode.meta = conditionalAdds({\n postReturnMarkerSpacing: functionOrClassPostReturnMarkerSpacing,\n });\n errorMessage = `Post-return-marker spacing should be \"${functionOrClassPostReturnMarkerSpacing}\"`;\n } else if ((typeNode.meta?.preReturnMarkerSpacing ?? '') !== functionOrClassPreReturnMarkerSpacing) {\n typeNode.meta = conditionalAdds({\n preReturnMarkerSpacing: functionOrClassPreReturnMarkerSpacing,\n });\n errorMessage = `Pre-return-marker spacing should be \"${functionOrClassPreReturnMarkerSpacing}\"`;\n } else if ((typeNode.meta?.typeParameterSpacing ?? ' ') !== functionOrClassTypeParameterSpacing) {\n typeNode.meta = conditionalAdds({\n typeParameterSpacing: functionOrClassTypeParameterSpacing,\n });\n errorMessage = `Type parameter spacing should be \"${functionOrClassTypeParameterSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeGeneric': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (nde);\n if ('value' in typeNode.left && typeNode.left.value === 'Array') {\n if (typeNode.meta.brackets !== arrayBrackets) {\n typeNode.meta.brackets = arrayBrackets;\n errorMessage = `Array bracket style should be ${arrayBrackets}`;\n }\n } else if (typeNode.meta.dot !== genericDot) {\n typeNode.meta.dot = genericDot;\n errorMessage = `Dot usage should be ${genericDot}`;\n } else if ((typeNode.meta.elementSpacing ?? ' ') !== genericAndTupleElementSpacing) {\n typeNode.meta.elementSpacing = genericAndTupleElementSpacing;\n errorMessage = `Element spacing should be \"${genericAndTupleElementSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeKeyValue': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').KeyValueResult} */ (nde);\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.postKeySpacing ?? '') !== keyValuePostKeySpacing) {\n typeNode.meta = {\n /* c8 ignore next -- Guard */\n postColonSpacing: typeNode.meta?.postColonSpacing ?? ' ',\n postKeySpacing: keyValuePostKeySpacing,\n /* c8 ignore next 2 -- Guard */\n postOptionalSpacing: typeNode.meta?.postOptionalSpacing ?? '',\n postVariadicSpacing: typeNode.meta?.postVariadicSpacing ?? '',\n };\n errorMessage = `Post key spacing should be \"${keyValuePostKeySpacing}\"`;\n /* c8 ignore next -- Guard */\n } else if ((typeNode.meta?.postColonSpacing ?? ' ') !== keyValuePostColonSpacing) {\n typeNode.meta = {\n postColonSpacing: keyValuePostColonSpacing,\n /* c8 ignore next 3 -- Guard */\n postKeySpacing: typeNode.meta?.postKeySpacing ?? '',\n postOptionalSpacing: typeNode.meta?.postOptionalSpacing ?? '',\n postVariadicSpacing: typeNode.meta?.postVariadicSpacing ?? '',\n };\n errorMessage = `Post colon spacing should be \"${keyValuePostColonSpacing}\"`;\n /* c8 ignore next -- Guard */\n } else if ((typeNode.meta?.postOptionalSpacing ?? '') !== keyValuePostOptionalSpacing) {\n typeNode.meta = {\n /* c8 ignore next 2 -- Guard */\n postColonSpacing: typeNode.meta?.postColonSpacing ?? ' ',\n postKeySpacing: typeNode.meta?.postKeySpacing ?? '',\n postOptionalSpacing: keyValuePostOptionalSpacing,\n /* c8 ignore next -- Guard */\n postVariadicSpacing: typeNode.meta?.postVariadicSpacing ?? '',\n };\n errorMessage = `Post optional (\\`?\\`) spacing should be \"${keyValuePostOptionalSpacing}\"`;\n /* c8 ignore next -- Guard */\n } else if (typeNode.variadic && (typeNode.meta?.postVariadicSpacing ?? '') !== keyValuePostVariadicSpacing) {\n typeNode.meta = {\n /* c8 ignore next 3 -- Guard */\n postColonSpacing: typeNode.meta?.postColonSpacing ?? ' ',\n postKeySpacing: typeNode.meta?.postKeySpacing ?? '',\n postOptionalSpacing: typeNode.meta?.postOptionalSpacing ?? '',\n postVariadicSpacing: keyValuePostVariadicSpacing,\n };\n errorMessage = `Post variadic (\\`...\\`) spacing should be \"${keyValuePostVariadicSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeObject': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').ObjectResult} */ (nde);\n /* c8 ignore next -- Guard */\n const separator = typeNode.meta.separator ?? 'comma';\n if (\n (separator !== objectFieldSeparator &&\n (!objectFieldSeparatorOptionalLinebreak ||\n !(objectFieldSeparator.endsWith('-linebreak') &&\n objectFieldSeparator.startsWith(separator)))) ||\n (typeNode.meta.separatorForSingleObjectField ?? false) !== separatorForSingleObjectField ||\n ((typeNode.meta.propertyIndent ?? '') !== objectFieldIndent &&\n separator.endsWith('-linebreak')) ||\n (typeNode.meta.trailingPunctuation ?? false) !== objectFieldSeparatorTrailingPunctuation\n ) {\n typeNode.meta.separator = objectFieldSeparatorOptionalLinebreak && !separator.endsWith('and-linebreak') ?\n objectFieldSeparator.replace(/-and-linebreak$/v, '') :\n objectFieldSeparator;\n typeNode.meta.separatorForSingleObjectField = separatorForSingleObjectField;\n typeNode.meta.propertyIndent = objectFieldIndent;\n typeNode.meta.trailingPunctuation = objectFieldSeparatorTrailingPunctuation;\n errorMessage = `Inconsistent ${objectFieldSeparator} separator usage`;\n }\n\n break;\n }\n\n case 'JsdocTypeObjectField': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').ObjectFieldResult} */ (nde);\n if ((objectFieldQuote ||\n (typeof typeNode.key === 'string' &&\n (\n (/^[\\p{ID_Start}$_][\\p{ID_Continue}$\\u200C\\u200D]*$/v).test(typeNode.key) ||\n digitRegex.test(typeNode.key)\n )\n )) &&\n typeNode.meta.quote !== (objectFieldQuote ?? undefined) &&\n (typeof typeNode.key !== 'string' ||\n !digitRegex.test(typeNode.key))\n ) {\n typeNode.meta.quote = objectFieldQuote ?? undefined;\n errorMessage = `Inconsistent object field quotes ${objectFieldQuote}`;\n } else if ((typeNode.meta?.postKeySpacing ?? '') !== keyValuePostKeySpacing) {\n typeNode.meta.postKeySpacing = keyValuePostKeySpacing;\n errorMessage = `Post key spacing should be \"${keyValuePostKeySpacing}\"`;\n } else if ((typeNode.meta?.postColonSpacing ?? ' ') !== keyValuePostColonSpacing) {\n typeNode.meta.postColonSpacing = keyValuePostColonSpacing;\n errorMessage = `Post colon spacing should be \"${keyValuePostColonSpacing}\"`;\n } else if ((typeNode.meta?.postOptionalSpacing ?? '') !== keyValuePostOptionalSpacing) {\n typeNode.meta.postOptionalSpacing = keyValuePostOptionalSpacing;\n errorMessage = `Post optional (\\`?\\`) spacing should be \"${keyValuePostOptionalSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeStringValue': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').StringValueResult} */ (nde);\n if (typeNode.meta.quote !== stringQuotes) {\n typeNode.meta.quote = stringQuotes;\n errorMessage = `Inconsistent ${stringQuotes} string quotes usage`;\n }\n\n break;\n }\n\n // Only suitable for namepaths (and would need changes); see https://github.com/gajus/eslint-plugin-jsdoc/issues/1524\n // case 'JsdocTypeProperty': {\n // const typeNode = /** @type {import('jsdoc-type-pratt-parser').PropertyResult} */ (nde);\n\n // if ((propertyQuotes ||\n // (typeof typeNode.value === 'string' && !(/\\s/v).test(typeNode.value))) &&\n // typeNode.meta.quote !== (propertyQuotes ?? undefined)\n // ) {\n // typeNode.meta.quote = propertyQuotes ?? undefined;\n // errorMessage = `Inconsistent ${propertyQuotes} property quotes usage`;\n // }\n\n // break;\n // }\n\n case 'JsdocTypeTuple': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').TupleResult} */ (nde);\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.elementSpacing ?? ' ') !== genericAndTupleElementSpacing) {\n typeNode.meta = {\n elementSpacing: genericAndTupleElementSpacing,\n };\n errorMessage = `Element spacing should be \"${genericAndTupleElementSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeTypeParameter': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').TypeParameterResult} */ (nde);\n /* c8 ignore next -- Guard */\n if (typeNode.defaultValue && (typeNode.meta?.defaultValueSpacing ?? ' ') !== parameterDefaultValueSpacing) {\n typeNode.meta = {\n defaultValueSpacing: parameterDefaultValueSpacing,\n };\n errorMessage = `Default value spacing should be \"${parameterDefaultValueSpacing}\"`;\n }\n\n break;\n }\n\n case 'JsdocTypeUnion': {\n const typeNode = /** @type {import('jsdoc-type-pratt-parser').UnionResult} */ (nde);\n /* c8 ignore next -- Guard */\n if ((typeNode.meta?.spacing ?? ' ') !== unionSpacing) {\n typeNode.meta = {\n spacing: unionSpacing,\n };\n errorMessage = `Inconsistent \"${unionSpacing}\" union spacing usage`;\n }\n\n break;\n }\n\n default:\n break;\n }\n\n if (errorMessage) {\n errorMessages.push(errorMessage);\n }\n });\n\n const differentResult = tag.type !==\n typeBracketSpacing + stringify(parsedType) + typeBracketSpacing;\n\n if (errorMessages.length && differentResult) {\n for (const errorMessage of errorMessages) {\n utils.reportJSDoc(\n errorMessage, tag, enableFixer ? fix : null,\n );\n }\n // Stringification may have been equal previously (and thus no error reported)\n // because the stringification doesn't preserve everything\n } else if (differentResult) {\n utils.reportJSDoc(\n 'There was an error with type formatting', tag, enableFixer ? fix : null,\n );\n }\n };\n\n const tags = utils.getPresentTags([\n 'param',\n 'property',\n 'returns',\n 'this',\n 'throws',\n 'type',\n 'typedef',\n 'yields',\n ]);\n for (const tag of tags) {\n if (tag.type) {\n checkTypeFormats(tag);\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Formats JSDoc type values.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/type-formatting.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n arrayBrackets: {\n description: 'Determines how array generics are represented. Set to `angle` for the style `Array<type>` or `square` for the style `type[]`. Defaults to \"square\".',\n enum: [\n 'angle',\n 'square',\n ],\n type: 'string',\n },\n arrowFunctionPostReturnMarkerSpacing: {\n description: 'The space character (if any) to use after return markers (`=>`). Defaults to \" \".',\n type: 'string',\n },\n arrowFunctionPreReturnMarkerSpacing: {\n description: 'The space character (if any) to use before return markers (`=>`). Defaults to \" \".',\n type: 'string',\n },\n enableFixer: {\n description: 'Whether to enable the fixer. Defaults to `true`.',\n type: 'boolean',\n },\n functionOrClassParameterSpacing: {\n description: 'The space character (if any) to use between function or class parameters. Defaults to \" \".',\n type: 'string',\n },\n functionOrClassPostGenericSpacing: {\n description: 'The space character (if any) to use after a generic expression in a function or class. Defaults to \"\".',\n type: 'string',\n },\n functionOrClassPostReturnMarkerSpacing: {\n description: 'The space character (if any) to use after return markers (`:`). Defaults to \"\".',\n type: 'string',\n },\n functionOrClassPreReturnMarkerSpacing: {\n description: 'The space character (if any) to use before return markers (`:`). Defaults to \"\".',\n type: 'string',\n },\n functionOrClassTypeParameterSpacing: {\n description: 'The space character (if any) to use between type parameters in a function or class. Defaults to \" \".',\n type: 'string',\n },\n genericAndTupleElementSpacing: {\n description: 'The space character (if any) to use between elements in generics and tuples. Defaults to \" \".',\n type: 'string',\n },\n genericDot: {\n description: 'Boolean value of whether to use a dot before the angled brackets of a generic (e.g., `SomeType.<AnotherType>`). Defaults to `false`.',\n type: 'boolean',\n },\n keyValuePostColonSpacing: {\n description: 'The amount of spacing (if any) after the colon of a key-value or object-field pair. Defaults to \" \".',\n type: 'string',\n },\n keyValuePostKeySpacing: {\n description: 'The amount of spacing (if any) immediately after keys in a key-value or object-field pair. Defaults to \"\".',\n type: 'string',\n },\n keyValuePostOptionalSpacing: {\n description: 'The amount of spacing (if any) after the optional operator (`?`) in a key-value or object-field pair. Defaults to \"\".',\n type: 'string',\n },\n keyValuePostVariadicSpacing: {\n description: 'The amount of spacing (if any) after a variadic operator (`...`) in a key-value pair. Defaults to \"\".',\n type: 'string',\n },\n methodQuotes: {\n description: 'The style of quotation mark for surrounding method names when quoted. Defaults to `double`',\n enum: [\n 'double',\n 'single',\n ],\n type: 'string',\n },\n objectFieldIndent: {\n description: `A string indicating the whitespace to be added on each line preceding an\nobject property-value field. Defaults to the empty string.`,\n type: 'string',\n },\n objectFieldQuote: {\n description: `Whether and how object field properties should be quoted (e.g., \\`{\"a\": string}\\`).\nSet to \\`single\\`, \\`double\\`, or \\`null\\`. Defaults to \\`null\\` (no quotes unless\nrequired due to special characters within the field). Digits will be kept as is,\nregardless of setting (they can either represent a digit or a string digit).`,\n enum: [\n 'double',\n 'single',\n null,\n ],\n },\n objectFieldSeparator: {\n description: `For object properties, specify whether a \"semicolon\", \"comma\", \"linebreak\",\n\"semicolon-and-linebreak\", or \"comma-and-linebreak\" should be used after\neach object property-value pair.\n\nDefaults to \\`\"comma\"\\`.`,\n enum: [\n 'comma',\n 'comma-and-linebreak',\n 'linebreak',\n 'semicolon',\n 'semicolon-and-linebreak',\n ],\n type: 'string',\n },\n objectFieldSeparatorOptionalLinebreak: {\n description: `Whether \\`objectFieldSeparator\\` set to \\`\"semicolon-and-linebreak\"\\` or\n\\`\"comma-and-linebreak\"\\` should be allowed to optionally drop the linebreak.\n\nDefaults to \\`true\\`.`,\n type: 'boolean',\n },\n objectFieldSeparatorTrailingPunctuation: {\n description: `If \\`separatorForSingleObjectField\\` is not in effect (i.e., if it is \\`false\\`\nor there are multiple property-value object fields present), this property\nwill determine whether to add punctuation corresponding to the\n\\`objectFieldSeparator\\` (e.g., a semicolon) to the final object field.\nDefaults to \\`false\\`.`,\n type: 'boolean',\n },\n parameterDefaultValueSpacing: {\n description: 'The space character (if any) to use between the equal signs of a default value. Defaults to \" \".',\n type: 'string',\n },\n postMethodNameSpacing: {\n description: 'The space character (if any) to add after a method name. Defaults to \"\".',\n type: 'string',\n },\n postNewSpacing: {\n description: 'The space character (if any) to add after \"new\" in a constructor. Defaults to \" \".',\n type: 'string',\n },\n // propertyQuotes: {\n // description: `Whether and how namepath properties should be quoted (e.g., \\`ab.\"cd\".\"ef\"\\`).\n // Set to \\`single\\`, \\`double\\`, or \\`null\\`. Defaults to \\`null\\` (no quotes unless\n // required due to whitespace within the property).`,\n // enum: [\n // 'double',\n // 'single',\n // null,\n // ],\n // },\n separatorForSingleObjectField: {\n description: `Whether to apply the \\`objectFieldSeparator\\` (e.g., a semicolon) when there\nis only one property-value object field present. Defaults to \\`false\\`.`,\n type: 'boolean',\n },\n stringQuotes: {\n description: `How string literals should be quoted (e.g., \\`\"abc\"\\`). Set to \\`single\\`\nor \\`double\\`. Defaults to 'double'.`,\n enum: [\n 'double',\n 'single',\n ],\n type: 'string',\n },\n typeBracketSpacing: {\n description: `A string of spaces that will be added immediately after the type's initial\ncurly bracket and immediately before its ending curly bracket. Defaults\nto the empty string.`,\n type: 'string',\n },\n unionSpacing: {\n description: 'Determines the spacing to add to unions (`|`). Defaults to a single space (`\" \"`).',\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
package/dist/rules.d.ts CHANGED
@@ -2938,6 +2938,47 @@ export interface Rules {
2938
2938
  }
2939
2939
  ];
2940
2940
 
2941
+ /** Prefers either function properties or method signatures */
2942
+ "jsdoc/ts-method-signature-style":
2943
+ | []
2944
+ | ["method" | "property"]
2945
+ | [
2946
+ "method" | "property",
2947
+ {
2948
+ /**
2949
+ * Whether to enable the fixer. Defaults to `true`.
2950
+ */
2951
+ enableFixer?: boolean;
2952
+ }
2953
+ ];
2954
+
2955
+ /** Warns against use of the empty object type */
2956
+ "jsdoc/ts-no-empty-object-type": [];
2957
+
2958
+ /** Catches unnecessary template expressions such as string expressions within a template literal. */
2959
+ "jsdoc/ts-no-unnecessary-template-expression":
2960
+ | []
2961
+ | [
2962
+ {
2963
+ /**
2964
+ * Whether to enable the fixer. Defaults to `true`.
2965
+ */
2966
+ enableFixer?: boolean;
2967
+ }
2968
+ ];
2969
+
2970
+ /** Prefers function types over call signatures when there are no other properties. */
2971
+ "jsdoc/ts-prefer-function-type":
2972
+ | []
2973
+ | [
2974
+ {
2975
+ /**
2976
+ * Whether to enable the fixer or not
2977
+ */
2978
+ enableFixer?: boolean;
2979
+ }
2980
+ ];
2981
+
2941
2982
  /** Formats JSDoc type values. */
2942
2983
  "jsdoc/type-formatting":
2943
2984
  | []
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "url": "http://gajus.com"
6
6
  },
7
7
  "dependencies": {
8
- "@es-joy/jsdoccomment": "~0.75.0",
8
+ "@es-joy/jsdoccomment": "~0.76.0",
9
9
  "are-docs-informative": "^0.0.2",
10
10
  "comment-parser": "1.4.1",
11
11
  "debug": "^4.4.3",
@@ -58,7 +58,7 @@
58
58
  "glob": "^11.0.3",
59
59
  "globals": "^16.4.0",
60
60
  "husky": "^9.1.7",
61
- "jsdoc-type-pratt-parser": "^6.9.1",
61
+ "jsdoc-type-pratt-parser": "^6.10.0",
62
62
  "json-schema": "^0.4.0",
63
63
  "json-schema-to-typescript": "^15.0.4",
64
64
  "lint-staged": "^16.2.3",
@@ -178,5 +178,5 @@
178
178
  "test-cov": "TIMING=1 c8 --reporter text pnpm run test-no-cov",
179
179
  "test-index": "pnpm run test-no-cov test/rules/index.js"
180
180
  },
181
- "version": "61.0.1"
181
+ "version": "61.1.0"
182
182
  }
package/src/index-cjs.js CHANGED
@@ -66,6 +66,10 @@ import requireYieldsCheck from './rules/requireYieldsCheck.js';
66
66
  import sortTags from './rules/sortTags.js';
67
67
  import tagLines from './rules/tagLines.js';
68
68
  import textEscaping from './rules/textEscaping.js';
69
+ import tsMethodSignatureStyle from './rules/tsMethodSignatureStyle.js';
70
+ import tsNoEmptyObjectType from './rules/tsNoEmptyObjectType.js';
71
+ import tsNoUnnecessaryTemplateExpression from './rules/tsNoUnnecessaryTemplateExpression.js';
72
+ import tsPreferFunctionType from './rules/tsPreferFunctionType.js';
69
73
  import typeFormatting from './rules/typeFormatting.js';
70
74
  import validTypes from './rules/validTypes.js';
71
75
 
@@ -251,6 +255,10 @@ index.rules = {
251
255
  'sort-tags': sortTags,
252
256
  'tag-lines': tagLines,
253
257
  'text-escaping': textEscaping,
258
+ 'ts-method-signature-style': tsMethodSignatureStyle,
259
+ 'ts-no-empty-object-type': tsNoEmptyObjectType,
260
+ 'ts-no-unnecessary-template-expression': tsNoUnnecessaryTemplateExpression,
261
+ 'ts-prefer-function-type': tsPreferFunctionType,
254
262
  'type-formatting': typeFormatting,
255
263
  'valid-types': validTypes,
256
264
  };
@@ -341,6 +349,10 @@ const createRecommendedRuleset = (warnOrError, flatName) => {
341
349
  'jsdoc/sort-tags': 'off',
342
350
  'jsdoc/tag-lines': warnOrError,
343
351
  'jsdoc/text-escaping': 'off',
352
+ 'jsdoc/ts-method-signature-style': 'off',
353
+ 'jsdoc/ts-no-empty-object-type': warnOrError,
354
+ 'jsdoc/ts-no-unnecessary-template-expression': 'off',
355
+ 'jsdoc/ts-prefer-function-type': 'off',
344
356
  'jsdoc/type-formatting': 'off',
345
357
  'jsdoc/valid-types': warnOrError,
346
358
  },
package/src/index.js CHANGED
@@ -72,6 +72,10 @@ import requireYieldsCheck from './rules/requireYieldsCheck.js';
72
72
  import sortTags from './rules/sortTags.js';
73
73
  import tagLines from './rules/tagLines.js';
74
74
  import textEscaping from './rules/textEscaping.js';
75
+ import tsMethodSignatureStyle from './rules/tsMethodSignatureStyle.js';
76
+ import tsNoEmptyObjectType from './rules/tsNoEmptyObjectType.js';
77
+ import tsNoUnnecessaryTemplateExpression from './rules/tsNoUnnecessaryTemplateExpression.js';
78
+ import tsPreferFunctionType from './rules/tsPreferFunctionType.js';
75
79
  import typeFormatting from './rules/typeFormatting.js';
76
80
  import validTypes from './rules/validTypes.js';
77
81
 
@@ -257,6 +261,10 @@ index.rules = {
257
261
  'sort-tags': sortTags,
258
262
  'tag-lines': tagLines,
259
263
  'text-escaping': textEscaping,
264
+ 'ts-method-signature-style': tsMethodSignatureStyle,
265
+ 'ts-no-empty-object-type': tsNoEmptyObjectType,
266
+ 'ts-no-unnecessary-template-expression': tsNoUnnecessaryTemplateExpression,
267
+ 'ts-prefer-function-type': tsPreferFunctionType,
260
268
  'type-formatting': typeFormatting,
261
269
  'valid-types': validTypes,
262
270
  };
@@ -347,6 +355,10 @@ const createRecommendedRuleset = (warnOrError, flatName) => {
347
355
  'jsdoc/sort-tags': 'off',
348
356
  'jsdoc/tag-lines': warnOrError,
349
357
  'jsdoc/text-escaping': 'off',
358
+ 'jsdoc/ts-method-signature-style': 'off',
359
+ 'jsdoc/ts-no-empty-object-type': warnOrError,
360
+ 'jsdoc/ts-no-unnecessary-template-expression': 'off',
361
+ 'jsdoc/ts-prefer-function-type': 'off',
350
362
  'jsdoc/type-formatting': 'off',
351
363
  'jsdoc/valid-types': warnOrError,
352
364
  },