@depup/eslint-plugin-jsdoc 63.3.2-depup.1 → 64.0.0-depup.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 (272) hide show
  1. package/README.md +3 -11
  2. package/changes.json +3 -16
  3. package/dist/index.d.ts +7 -4
  4. package/package.json +29 -67
  5. package/src/index.js +7 -8
  6. package/dist/WarnSettings.cjs +0 -38
  7. package/dist/WarnSettings.cjs.map +0 -1
  8. package/dist/alignTransform.cjs +0 -402
  9. package/dist/alignTransform.cjs.map +0 -1
  10. package/dist/buildForbidRuleDefinition.cjs +0 -101
  11. package/dist/buildForbidRuleDefinition.cjs.map +0 -1
  12. package/dist/buildRejectOrPreferRuleDefinition.cjs +0 -352
  13. package/dist/buildRejectOrPreferRuleDefinition.cjs.map +0 -1
  14. package/dist/cjs/WarnSettings.d.ts +0 -16
  15. package/dist/cjs/alignTransform.d.ts +0 -33
  16. package/dist/cjs/buildForbidRuleDefinition.d.ts +0 -14
  17. package/dist/cjs/buildRejectOrPreferRuleDefinition.d.ts +0 -8
  18. package/dist/cjs/defaultTagOrder.d.ts +0 -4
  19. package/dist/cjs/exportParser.d.ts +0 -40
  20. package/dist/cjs/getDefaultTagStructureForMode.d.ts +0 -10
  21. package/dist/cjs/getJsdocProcessorPlugin.d.cts +0 -5
  22. package/dist/cjs/getJsdocProcessorPlugin.d.ts +0 -66
  23. package/dist/cjs/index-cjs.d.ts +0 -23
  24. package/dist/cjs/index.cjs.d.cts +0 -2
  25. package/dist/cjs/iterateJsdoc.d.cts +0 -7
  26. package/dist/cjs/iterateJsdoc.d.ts +0 -495
  27. package/dist/cjs/jsdocUtils.d.ts +0 -500
  28. package/dist/cjs/rules/checkAccess.d.ts +0 -2
  29. package/dist/cjs/rules/checkAlignment.d.ts +0 -2
  30. package/dist/cjs/rules/checkExamples.d.ts +0 -3
  31. package/dist/cjs/rules/checkIndentation.d.ts +0 -2
  32. package/dist/cjs/rules/checkLineAlignment.d.ts +0 -9
  33. package/dist/cjs/rules/checkParamNames.d.ts +0 -2
  34. package/dist/cjs/rules/checkPropertyNames.d.ts +0 -2
  35. package/dist/cjs/rules/checkSyntax.d.ts +0 -2
  36. package/dist/cjs/rules/checkTagNames.d.ts +0 -2
  37. package/dist/cjs/rules/checkTemplateNames.d.ts +0 -2
  38. package/dist/cjs/rules/checkTypes.d.ts +0 -7
  39. package/dist/cjs/rules/checkValues.d.ts +0 -2
  40. package/dist/cjs/rules/convertToJsdocComments.d.ts +0 -266
  41. package/dist/cjs/rules/emptyTags.d.ts +0 -2
  42. package/dist/cjs/rules/escapeInlineTags.d.ts +0 -2
  43. package/dist/cjs/rules/implementsOnClasses.d.ts +0 -2
  44. package/dist/cjs/rules/importsAsDependencies.d.ts +0 -2
  45. package/dist/cjs/rules/informativeDocs.d.ts +0 -2
  46. package/dist/cjs/rules/linesBeforeBlock.d.ts +0 -2
  47. package/dist/cjs/rules/matchDescription.d.ts +0 -2
  48. package/dist/cjs/rules/matchName.d.ts +0 -2
  49. package/dist/cjs/rules/multilineBlocks.d.ts +0 -2
  50. package/dist/cjs/rules/noBadBlocks.d.ts +0 -2
  51. package/dist/cjs/rules/noBlankBlockDescriptions.d.ts +0 -2
  52. package/dist/cjs/rules/noBlankBlocks.d.ts +0 -2
  53. package/dist/cjs/rules/noDefaults.d.ts +0 -2
  54. package/dist/cjs/rules/noMissingSyntax.d.ts +0 -9
  55. package/dist/cjs/rules/noMultiAsterisks.d.ts +0 -2
  56. package/dist/cjs/rules/noRestrictedSyntax.d.ts +0 -2
  57. package/dist/cjs/rules/noTypes.d.ts +0 -2
  58. package/dist/cjs/rules/noUndefinedTypes.d.ts +0 -2
  59. package/dist/cjs/rules/normalizeSeeLinks.d.ts +0 -2
  60. package/dist/cjs/rules/preferImportTag.d.ts +0 -2
  61. package/dist/cjs/rules/requireAsteriskPrefix.d.ts +0 -2
  62. package/dist/cjs/rules/requireDescription.d.ts +0 -2
  63. package/dist/cjs/rules/requireDescriptionCompleteSentence.d.ts +0 -2
  64. package/dist/cjs/rules/requireExample.d.ts +0 -2
  65. package/dist/cjs/rules/requireFileOverview.d.ts +0 -2
  66. package/dist/cjs/rules/requireHyphenBeforeParamDescription.d.ts +0 -2
  67. package/dist/cjs/rules/requireJsdoc.d.ts +0 -24
  68. package/dist/cjs/rules/requireParam.d.ts +0 -3
  69. package/dist/cjs/rules/requireParamDescription.d.ts +0 -2
  70. package/dist/cjs/rules/requireParamName.d.ts +0 -2
  71. package/dist/cjs/rules/requireParamType.d.ts +0 -2
  72. package/dist/cjs/rules/requireProperty.d.ts +0 -2
  73. package/dist/cjs/rules/requirePropertyDescription.d.ts +0 -2
  74. package/dist/cjs/rules/requirePropertyName.d.ts +0 -2
  75. package/dist/cjs/rules/requirePropertyType.d.ts +0 -2
  76. package/dist/cjs/rules/requireRejects.d.ts +0 -2
  77. package/dist/cjs/rules/requireReturns.d.ts +0 -2
  78. package/dist/cjs/rules/requireReturnsCheck.d.ts +0 -2
  79. package/dist/cjs/rules/requireReturnsDescription.d.ts +0 -2
  80. package/dist/cjs/rules/requireReturnsType.d.ts +0 -2
  81. package/dist/cjs/rules/requireTags.d.ts +0 -2
  82. package/dist/cjs/rules/requireTemplate.d.ts +0 -2
  83. package/dist/cjs/rules/requireThrows.d.ts +0 -2
  84. package/dist/cjs/rules/requireYields.d.ts +0 -2
  85. package/dist/cjs/rules/requireYieldsCheck.d.ts +0 -2
  86. package/dist/cjs/rules/sortTags.d.ts +0 -2
  87. package/dist/cjs/rules/tagLines.d.ts +0 -2
  88. package/dist/cjs/rules/textEscaping.d.ts +0 -2
  89. package/dist/cjs/rules/tsMethodSignatureStyle.d.ts +0 -2
  90. package/dist/cjs/rules/tsNoEmptyObjectType.d.ts +0 -2
  91. package/dist/cjs/rules/tsNoUnnecessaryTemplateExpression.d.ts +0 -2
  92. package/dist/cjs/rules/tsPreferFunctionType.d.ts +0 -2
  93. package/dist/cjs/rules/typeFormatting.d.ts +0 -2
  94. package/dist/cjs/rules/validTypes.d.ts +0 -2
  95. package/dist/cjs/tagNames.d.ts +0 -15
  96. package/dist/cjs/utils/hasReturnValue.d.ts +0 -19
  97. package/dist/defaultTagOrder.cjs +0 -46
  98. package/dist/defaultTagOrder.cjs.map +0 -1
  99. package/dist/exportParser.cjs +0 -732
  100. package/dist/exportParser.cjs.map +0 -1
  101. package/dist/generateDocs.cjs +0 -342
  102. package/dist/generateDocs.cjs.map +0 -1
  103. package/dist/generateOptions.cjs +0 -62
  104. package/dist/generateOptions.cjs.map +0 -1
  105. package/dist/generateRule.cjs +0 -248
  106. package/dist/generateRule.cjs.map +0 -1
  107. package/dist/generateRuleTypes.cjs +0 -24
  108. package/dist/generateRuleTypes.cjs.map +0 -1
  109. package/dist/getDefaultTagStructureForMode.cjs +0 -289
  110. package/dist/getDefaultTagStructureForMode.cjs.map +0 -1
  111. package/dist/getJsdocProcessorPlugin.cjs +0 -587
  112. package/dist/getJsdocProcessorPlugin.cjs.map +0 -1
  113. package/dist/getJsdocProcessorPlugin.cts +0 -5
  114. package/dist/index-cjs.cjs +0 -598
  115. package/dist/index-cjs.cjs.map +0 -1
  116. package/dist/index-cjs.d.ts +0 -24
  117. package/dist/index-esm.cjs +0 -162
  118. package/dist/index-esm.cjs.map +0 -1
  119. package/dist/index-esm.d.ts +0 -72
  120. package/dist/index.cjs +0 -746
  121. package/dist/index.cjs.cts +0 -3
  122. package/dist/index.cjs.map +0 -1
  123. package/dist/iterateJsdoc.cjs +0 -2150
  124. package/dist/iterateJsdoc.cjs.map +0 -1
  125. package/dist/iterateJsdoc.cts +0 -7
  126. package/dist/jsdocUtils.cjs +0 -1786
  127. package/dist/jsdocUtils.cjs.map +0 -1
  128. package/dist/rules/checkAccess.cjs +0 -40
  129. package/dist/rules/checkAccess.cjs.map +0 -1
  130. package/dist/rules/checkAlignment.cjs +0 -78
  131. package/dist/rules/checkAlignment.cjs.map +0 -1
  132. package/dist/rules/checkExamples.cjs +0 -521
  133. package/dist/rules/checkExamples.cjs.map +0 -1
  134. package/dist/rules/checkIndentation.cjs +0 -170
  135. package/dist/rules/checkIndentation.cjs.map +0 -1
  136. package/dist/rules/checkLineAlignment.cjs +0 -398
  137. package/dist/rules/checkLineAlignment.cjs.map +0 -1
  138. package/dist/rules/checkParamNames.cjs +0 -407
  139. package/dist/rules/checkParamNames.cjs.map +0 -1
  140. package/dist/rules/checkPropertyNames.cjs +0 -135
  141. package/dist/rules/checkPropertyNames.cjs.map +0 -1
  142. package/dist/rules/checkSyntax.cjs +0 -38
  143. package/dist/rules/checkSyntax.cjs.map +0 -1
  144. package/dist/rules/checkTagNames.cjs +0 -312
  145. package/dist/rules/checkTagNames.cjs.map +0 -1
  146. package/dist/rules/checkTemplateNames.cjs +0 -192
  147. package/dist/rules/checkTemplateNames.cjs.map +0 -1
  148. package/dist/rules/checkTypes.cjs +0 -111
  149. package/dist/rules/checkTypes.cjs.map +0 -1
  150. package/dist/rules/checkValues.cjs +0 -166
  151. package/dist/rules/checkValues.cjs.map +0 -1
  152. package/dist/rules/convertToJsdocComments.cjs +0 -356
  153. package/dist/rules/convertToJsdocComments.cjs.map +0 -1
  154. package/dist/rules/emptyTags.cjs +0 -98
  155. package/dist/rules/emptyTags.cjs.map +0 -1
  156. package/dist/rules/escapeInlineTags.cjs +0 -234
  157. package/dist/rules/escapeInlineTags.cjs.map +0 -1
  158. package/dist/rules/implementsOnClasses.cjs +0 -74
  159. package/dist/rules/implementsOnClasses.cjs.map +0 -1
  160. package/dist/rules/importsAsDependencies.cjs +0 -104
  161. package/dist/rules/importsAsDependencies.cjs.map +0 -1
  162. package/dist/rules/informativeDocs.cjs +0 -187
  163. package/dist/rules/informativeDocs.cjs.map +0 -1
  164. package/dist/rules/linesBeforeBlock.cjs +0 -120
  165. package/dist/rules/linesBeforeBlock.cjs.map +0 -1
  166. package/dist/rules/matchDescription.cjs +0 -356
  167. package/dist/rules/matchDescription.cjs.map +0 -1
  168. package/dist/rules/matchName.cjs +0 -160
  169. package/dist/rules/matchName.cjs.map +0 -1
  170. package/dist/rules/multilineBlocks.cjs +0 -431
  171. package/dist/rules/multilineBlocks.cjs.map +0 -1
  172. package/dist/rules/noBadBlocks.cjs +0 -100
  173. package/dist/rules/noBadBlocks.cjs.map +0 -1
  174. package/dist/rules/noBlankBlockDescriptions.cjs +0 -63
  175. package/dist/rules/noBlankBlockDescriptions.cjs.map +0 -1
  176. package/dist/rules/noBlankBlocks.cjs +0 -54
  177. package/dist/rules/noBlankBlocks.cjs.map +0 -1
  178. package/dist/rules/noDefaults.cjs +0 -102
  179. package/dist/rules/noDefaults.cjs.map +0 -1
  180. package/dist/rules/noMissingSyntax.cjs +0 -196
  181. package/dist/rules/noMissingSyntax.cjs.map +0 -1
  182. package/dist/rules/noMultiAsterisks.cjs +0 -126
  183. package/dist/rules/noMultiAsterisks.cjs.map +0 -1
  184. package/dist/rules/noRestrictedSyntax.cjs +0 -68
  185. package/dist/rules/noRestrictedSyntax.cjs.map +0 -1
  186. package/dist/rules/noTypes.cjs +0 -101
  187. package/dist/rules/noTypes.cjs.map +0 -1
  188. package/dist/rules/noUndefinedTypes.cjs +0 -616
  189. package/dist/rules/noUndefinedTypes.cjs.map +0 -1
  190. package/dist/rules/normalizeSeeLinks.cjs +0 -271
  191. package/dist/rules/normalizeSeeLinks.cjs.map +0 -1
  192. package/dist/rules/preferImportTag.cjs +0 -362
  193. package/dist/rules/preferImportTag.cjs.map +0 -1
  194. package/dist/rules/requireAsteriskPrefix.cjs +0 -190
  195. package/dist/rules/requireAsteriskPrefix.cjs.map +0 -1
  196. package/dist/rules/requireDescription.cjs +0 -164
  197. package/dist/rules/requireDescription.cjs.map +0 -1
  198. package/dist/rules/requireDescriptionCompleteSentence.cjs +0 -321
  199. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +0 -1
  200. package/dist/rules/requireExample.cjs +0 -136
  201. package/dist/rules/requireExample.cjs.map +0 -1
  202. package/dist/rules/requireFileOverview.cjs +0 -194
  203. package/dist/rules/requireFileOverview.cjs.map +0 -1
  204. package/dist/rules/requireHyphenBeforeParamDescription.cjs +0 -166
  205. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +0 -1
  206. package/dist/rules/requireJsdoc.cjs +0 -721
  207. package/dist/rules/requireJsdoc.cjs.map +0 -1
  208. package/dist/rules/requireParam.cjs +0 -772
  209. package/dist/rules/requireParam.cjs.map +0 -1
  210. package/dist/rules/requireParamDescription.cjs +0 -105
  211. package/dist/rules/requireParamDescription.cjs.map +0 -1
  212. package/dist/rules/requireParamName.cjs +0 -68
  213. package/dist/rules/requireParamName.cjs.map +0 -1
  214. package/dist/rules/requireParamType.cjs +0 -104
  215. package/dist/rules/requireParamType.cjs.map +0 -1
  216. package/dist/rules/requireProperty.cjs +0 -63
  217. package/dist/rules/requireProperty.cjs.map +0 -1
  218. package/dist/rules/requirePropertyDescription.cjs +0 -29
  219. package/dist/rules/requirePropertyDescription.cjs.map +0 -1
  220. package/dist/rules/requirePropertyName.cjs +0 -29
  221. package/dist/rules/requirePropertyName.cjs.map +0 -1
  222. package/dist/rules/requirePropertyType.cjs +0 -29
  223. package/dist/rules/requirePropertyType.cjs.map +0 -1
  224. package/dist/rules/requireRejects.cjs +0 -226
  225. package/dist/rules/requireRejects.cjs.map +0 -1
  226. package/dist/rules/requireReturns.cjs +0 -262
  227. package/dist/rules/requireReturns.cjs.map +0 -1
  228. package/dist/rules/requireReturnsCheck.cjs +0 -225
  229. package/dist/rules/requireReturnsCheck.cjs.map +0 -1
  230. package/dist/rules/requireReturnsDescription.cjs +0 -72
  231. package/dist/rules/requireReturnsDescription.cjs.map +0 -1
  232. package/dist/rules/requireReturnsType.cjs +0 -68
  233. package/dist/rules/requireReturnsType.cjs.map +0 -1
  234. package/dist/rules/requireTags.cjs +0 -74
  235. package/dist/rules/requireTags.cjs.map +0 -1
  236. package/dist/rules/requireTemplate.cjs +0 -220
  237. package/dist/rules/requireTemplate.cjs.map +0 -1
  238. package/dist/rules/requireThrows.cjs +0 -118
  239. package/dist/rules/requireThrows.cjs.map +0 -1
  240. package/dist/rules/requireYields.cjs +0 -224
  241. package/dist/rules/requireYields.cjs.map +0 -1
  242. package/dist/rules/requireYieldsCheck.cjs +0 -179
  243. package/dist/rules/requireYieldsCheck.cjs.map +0 -1
  244. package/dist/rules/sortTags.cjs +0 -656
  245. package/dist/rules/sortTags.cjs.map +0 -1
  246. package/dist/rules/tagLines.cjs +0 -374
  247. package/dist/rules/tagLines.cjs.map +0 -1
  248. package/dist/rules/textEscaping.cjs +0 -141
  249. package/dist/rules/textEscaping.cjs.map +0 -1
  250. package/dist/rules/tsMethodSignatureStyle.cjs +0 -240
  251. package/dist/rules/tsMethodSignatureStyle.cjs.map +0 -1
  252. package/dist/rules/tsNoEmptyObjectType.cjs +0 -62
  253. package/dist/rules/tsNoEmptyObjectType.cjs.map +0 -1
  254. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +0 -104
  255. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +0 -1
  256. package/dist/rules/tsPreferFunctionType.cjs +0 -110
  257. package/dist/rules/tsPreferFunctionType.cjs.map +0 -1
  258. package/dist/rules/typeFormatting.cjs +0 -607
  259. package/dist/rules/typeFormatting.cjs.map +0 -1
  260. package/dist/rules/validTypes.cjs +0 -324
  261. package/dist/rules/validTypes.cjs.map +0 -1
  262. package/dist/tagNames.cjs +0 -244
  263. package/dist/tagNames.cjs.map +0 -1
  264. package/dist/to-valid-identifier.cjs +0 -263
  265. package/dist/utils/hasReturnValue.cjs +0 -495
  266. package/dist/utils/hasReturnValue.cjs.map +0 -1
  267. package/rollup.config.js +0 -16
  268. package/src/getJsdocProcessorPlugin.cts +0 -5
  269. package/src/index-cjs.js +0 -758
  270. package/src/index-esm.js +0 -196
  271. package/src/index.cjs.cts +0 -3
  272. package/src/iterateJsdoc.cts +0 -7
@@ -1 +0,0 @@
1
- {"version":3,"file":"exportParser.cjs","names":["debugModule","findJSDocComment"],"sources":["../src/exportParser.js"],"sourcesContent":["import {\n findJSDocComment,\n} from '@es-joy/jsdoccomment';\nimport debugModule from 'debug';\n\nconst debug = debugModule('requireExportJsdoc');\n\n/**\n * @typedef {{\n * value: string\n * }} ValueObject\n */\n\n/**\n * @typedef {{\n * type?: string,\n * value?: ValueObject|import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node,\n * props: {\n * [key: string]: CreatedNode|null,\n * },\n * special?: true,\n * globalVars?: CreatedNode,\n * exported?: boolean,\n * ANONYMOUS_DEFAULT?: import('eslint').Rule.Node\n * }} CreatedNode\n */\n\n/**\n * @returns {CreatedNode}\n */\nconst createNode = function () {\n return {\n props: {},\n };\n};\n\n/**\n * @param {CreatedNode|null} symbol\n * @returns {string|null}\n */\nconst getSymbolValue = function (symbol) {\n /* c8 ignore next 3 */\n if (!symbol) {\n return null;\n }\n\n /* c8 ignore else */\n if (symbol.type === 'literal') {\n return /** @type {ValueObject} */ (symbol.value).value;\n }\n /* c8 ignore next 2 */\n // eslint-disable-next-line @stylistic/padding-line-between-statements -- c8\n return null;\n};\n\n/**\n *\n * @param {import('estree').Identifier} node\n * @param {CreatedNode} globals\n * @param {CreatedNode} scope\n * @param {SymbolOptions} opts\n * @returns {CreatedNode|null}\n */\nconst getIdentifier = function (node, globals, scope, opts) {\n if (opts.simpleIdentifier) {\n // Type is Identier for noncomputed properties\n const identifierLiteral = createNode();\n identifierLiteral.type = 'literal';\n identifierLiteral.value = {\n value: node.name,\n };\n\n return identifierLiteral;\n }\n\n /* c8 ignore next */\n const block = scope || globals;\n\n // As scopes are not currently supported, they are not traversed upwards recursively\n if (block.props[node.name]) {\n return block.props[node.name];\n }\n\n // Seems this will only be entered once scopes added and entered\n /* c8 ignore next 3 */\n if (globals.props[node.name]) {\n return globals.props[node.name];\n }\n\n return null;\n};\n\n/**\n * @callback CreateSymbol\n * @param {import('eslint').Rule.Node|null} node\n * @param {CreatedNode} globals\n * @param {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node|null} value\n * @param {CreatedNode} [scope]\n * @param {boolean|SymbolOptions} [isGlobal]\n * @returns {CreatedNode|null}\n */\n\n/** @type {CreateSymbol} */\nlet createSymbol; // eslint-disable-line prefer-const\n\n/**\n * @typedef {{\n * simpleIdentifier?: boolean\n * }} SymbolOptions\n */\n\n/**\n *\n * @param {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node} node\n * @param {CreatedNode} globals\n * @param {CreatedNode} scope\n * @param {SymbolOptions} [opt]\n * @returns {CreatedNode|null}\n */\nconst getSymbol = function (node, globals, scope, opt) {\n const opts = opt || {};\n /* c8 ignore next */\n switch (node.type) {\n /* c8 ignore next 4 -- No longer needed? */\n case 'ArrowFunctionExpression':\n\n // Fallthrough\n case 'ClassDeclaration':\n\n case 'FunctionDeclaration':\n\n case 'FunctionExpression':\n case 'TSEnumDeclaration':\n case 'TSInterfaceDeclaration':\n case 'TSTypeAliasDeclaration': {\n const val = createNode();\n val.props.prototype = createNode();\n val.props.prototype.type = 'object';\n val.type = 'object';\n val.value = node;\n\n return val;\n }\n\n case 'AssignmentExpression': {\n return createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.left),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (node.right),\n scope,\n opts,\n );\n }\n\n case 'ClassBody': {\n const val = createNode();\n for (const method of node.body) {\n // StaticBlock\n if (!('key' in method)) {\n continue;\n }\n\n val.props[\n /** @type {import('estree').Identifier} */ (\n /** @type {import('estree').MethodDefinition} */ (\n method\n ).key\n ).name\n ] = createNode();\n /** @type {{[key: string]: CreatedNode}} */ (val.props)[\n /** @type {import('estree').Identifier} */ (\n /** @type {import('estree').MethodDefinition} */ (\n method\n ).key\n ).name\n ].type = 'object';\n /** @type {{[key: string]: CreatedNode}} */ (val.props)[\n /** @type {import('estree').Identifier} */ (\n /** @type {import('estree').MethodDefinition} */ (\n method\n ).key\n ).name\n ].value = /** @type {import('eslint').Rule.Node} */ (\n /** @type {import('estree').MethodDefinition} */ (method).value\n );\n }\n\n val.type = 'object';\n val.value = node.parent;\n\n return val;\n }\n\n case 'ClassExpression': {\n return getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.body),\n globals,\n scope,\n opts,\n );\n }\n\n case 'Identifier': {\n return getIdentifier(node, globals, scope, opts);\n }\n\n case 'Literal': {\n const val = createNode();\n val.type = 'literal';\n val.value = node;\n\n return val;\n }\n\n case 'MemberExpression': {\n const obj = getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.object),\n globals,\n scope,\n opts,\n );\n const propertySymbol = getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.property),\n globals,\n scope,\n {\n simpleIdentifier: !node.computed,\n },\n );\n const propertyValue = getSymbolValue(propertySymbol);\n\n /* c8 ignore else */\n if (obj && propertyValue && obj.props[propertyValue]) {\n const block = obj.props[propertyValue];\n\n return block;\n }\n /* c8 ignore next 11 */\n /*\n if (opts.createMissingProps && propertyValue) {\n obj.props[propertyValue] = createNode();\n\n return obj.props[propertyValue];\n }\n */\n // eslint-disable-next-line @stylistic/padding-line-between-statements -- c8\n debug(`MemberExpression: Missing property ${\n /** @type {import('estree').PrivateIdentifier} */ (node.property).name\n }`);\n /* c8 ignore next 2 */\n return null;\n }\n\n case 'ObjectExpression': {\n const val = createNode();\n val.type = 'object';\n for (const prop of node.properties) {\n if ([\n // @babel/eslint-parser\n 'ExperimentalSpreadProperty',\n\n // typescript-eslint, espree, acorn, etc.\n 'SpreadElement',\n ].includes(prop.type)) {\n continue;\n }\n\n const propVal = getSymbol(\n /** @type {import('eslint').Rule.Node} */ (\n /** @type {import('estree').Property} */\n (prop).value\n ),\n globals,\n scope,\n opts,\n );\n /* c8 ignore next 8 */\n if (propVal) {\n val.props[\n /** @type {import('estree').Identifier} */\n (\n /** @type {import('estree').Property} */ (prop).key\n ).name\n ] = propVal;\n }\n }\n\n return val;\n }\n }\n /* c8 ignore next 2 */\n // eslint-disable-next-line @stylistic/padding-line-between-statements -- c8\n return null;\n};\n\n/**\n *\n * @param {CreatedNode} block\n * @param {string} name\n * @param {CreatedNode|null} value\n * @param {CreatedNode} globals\n * @param {boolean|SymbolOptions|undefined} isGlobal\n * @returns {void}\n */\nconst createBlockSymbol = function (block, name, value, globals, isGlobal) {\n block.props[name] = value;\n if (isGlobal && globals.props.window && globals.props.window.special) {\n globals.props.window.props[name] = value;\n }\n};\n\ncreateSymbol = function (node, globals, value, scope, isGlobal) {\n const block = scope || globals;\n /* c8 ignore next 3 */\n if (!node) {\n return null;\n }\n\n let symbol;\n switch (node.type) {\n case 'ClassDeclaration':\n /* c8 ignore next */\n // @ts-expect-error TS OK\n // Fall through\n case 'FunctionDeclaration': case 'TSEnumDeclaration':\n /* c8 ignore next */\n // @ts-expect-error TS OK\n // Fall through\n case 'TSInterfaceDeclaration': case 'TSTypeAliasDeclaration': {\n const nde = /** @type {import('estree').ClassDeclaration} */ (node);\n /* c8 ignore else */\n if (nde.id && nde.id.type === 'Identifier') {\n return createSymbol(\n /** @type {import('eslint').Rule.Node} */ (nde.id),\n globals,\n node,\n globals,\n );\n }\n /* c8 ignore next 3 */\n // eslint-disable-next-line @stylistic/padding-line-between-statements -- c8\n break;\n }\n\n case 'Identifier': {\n const nde = /** @type {import('estree').Identifier} */ (node);\n if (value) {\n const valueSymbol = getSymbol(value, globals, block);\n /* c8 ignore else */\n if (valueSymbol) {\n createBlockSymbol(block, nde.name, valueSymbol, globals, isGlobal);\n\n return block.props[nde.name];\n }\n /* c8 ignore next 2 */\n // eslint-disable-next-line @stylistic/padding-line-between-statements -- c8\n debug('Identifier: Missing value symbol for %s', nde.name);\n } else {\n createBlockSymbol(block, nde.name, createNode(), globals, isGlobal);\n\n return block.props[nde.name];\n }\n /* c8 ignore next 3 */\n // eslint-disable-next-line @stylistic/padding-line-between-statements -- c8\n break;\n }\n\n case 'MemberExpression': {\n const nde = /** @type {import('estree').MemberExpression} */ (node);\n symbol = getSymbol(\n /** @type {import('eslint').Rule.Node} */ (nde.object), globals, block,\n );\n\n const propertySymbol = getSymbol(\n /** @type {import('eslint').Rule.Node} */ (nde.property),\n globals,\n block,\n {\n simpleIdentifier: !nde.computed,\n },\n );\n const propertyValue = getSymbolValue(propertySymbol);\n if (symbol && propertyValue) {\n createBlockSymbol(symbol, propertyValue, getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (value), globals, block,\n ), globals, isGlobal);\n return symbol.props[propertyValue];\n }\n\n debug(\n 'MemberExpression: Missing symbol: %s',\n /** @type {import('estree').Identifier} */ (\n nde.property\n ).name,\n );\n break;\n }\n }\n\n return null;\n};\n\n/**\n * Creates variables from variable definitions\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globals\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opts\n * @returns {void}\n */\nconst initVariables = function (node, globals, opts) {\n switch (node.type) {\n case 'ExportNamedDeclaration': {\n if (node.declaration) {\n initVariables(\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n globals,\n opts,\n );\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n initVariables(\n /** @type {import('eslint').Rule.Node} */\n (node.expression),\n globals,\n opts,\n );\n break;\n }\n\n case 'Program': {\n for (const childNode of node.body) {\n initVariables(\n /** @type {import('eslint').Rule.Node} */\n (childNode),\n globals,\n opts,\n );\n }\n\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\n // let and const\n const symbol = createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (declaration.id),\n globals,\n null,\n globals,\n );\n if (opts.initWindow && node.kind === 'var' && globals.props.window) {\n // If var, also add to window\n globals.props.window.props[\n /** @type {import('estree').Identifier} */\n (declaration.id).name\n ] = symbol;\n }\n }\n\n break;\n }\n }\n};\n\n/**\n * Populates variable maps using AST\n * @param {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node} node\n * @param {CreatedNode} globals\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @param {true} [isExport]\n * @returns {boolean}\n */\nconst mapVariables = function (node, globals, opt, isExport) {\n /* c8 ignore next */\n const opts = opt || {};\n /* c8 ignore next */\n switch (node.type) {\n case 'AssignmentExpression': {\n createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.left),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (node.right),\n );\n break;\n }\n\n case 'ClassDeclaration': {\n createSymbol(\n /** @type {import('eslint').Rule.Node|null} */ (node.id),\n globals,\n /** @type {import('eslint').Rule.Node} */ (node.body),\n globals,\n );\n break;\n }\n\n case 'ExportDefaultDeclaration': {\n const symbol = createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n );\n if (symbol) {\n symbol.exported = true;\n /* c8 ignore next 6 */\n } else {\n // if (!node.id) {\n globals.ANONYMOUS_DEFAULT = /** @type {import('eslint').Rule.Node} */ (\n node.declaration\n );\n }\n\n break;\n }\n\n case 'ExportNamedDeclaration': {\n if (node.declaration) {\n if (node.declaration.type === 'VariableDeclaration') {\n mapVariables(\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n globals,\n opts,\n true,\n );\n } else {\n const symbol = createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n );\n /* c8 ignore next 3 */\n if (symbol) {\n symbol.exported = true;\n }\n }\n }\n\n for (const specifier of node.specifiers) {\n mapVariables(\n /** @type {import('eslint').Rule.Node} */\n (specifier),\n globals,\n opts,\n );\n }\n\n break;\n }\n\n case 'ExportSpecifier': {\n const symbol = getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.local),\n globals,\n globals,\n );\n /* c8 ignore next 3 */\n if (symbol) {\n symbol.exported = true;\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n mapVariables(\n /** @type {import('eslint').Rule.Node} */\n (node.expression),\n globals,\n opts,\n );\n break;\n }\n\n case 'FunctionDeclaration':\n\n case 'TSTypeAliasDeclaration': {\n /* c8 ignore next 10 */\n if (/** @type {import('estree').Identifier} */ (node.id).type === 'Identifier') {\n createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.id),\n globals,\n node,\n globals,\n true,\n );\n }\n\n break;\n }\n\n case 'Program': {\n if (opts.ancestorsOnly) {\n return false;\n }\n\n for (const childNode of node.body) {\n mapVariables(\n /** @type {import('eslint').Rule.Node} */\n (childNode),\n globals,\n opts,\n );\n }\n\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\n const isGlobal = Boolean(opts.initWindow && node.kind === 'var' && globals.props.window);\n const symbol = createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (declaration.id),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (declaration.init),\n globals,\n isGlobal,\n );\n if (symbol && isExport) {\n symbol.exported = true;\n }\n }\n\n break;\n }\n\n default: {\n /* c8 ignore next */\n return false;\n }\n }\n\n return true;\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode|ValueObject|string|undefined|\n * import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node} block\n * @param {(CreatedNode|ValueObject|string|\n * import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Node)[]} [cache]\n * @returns {boolean}\n */\nconst findNode = function (node, block, cache) {\n let blockCache = cache || [];\n if (!block || blockCache.includes(block)) {\n return false;\n }\n\n blockCache = blockCache.slice();\n blockCache.push(block);\n\n if (\n typeof block === 'object' &&\n 'type' in block &&\n (block.type === 'object' || block.type === 'MethodDefinition') &&\n block.value === node\n ) {\n return true;\n }\n\n if (typeof block !== 'object') {\n return false;\n }\n\n const props = ('props' in block && block.props) || ('body' in block && block.body);\n for (const propval of Object.values(props || {})) {\n if (Array.isArray(propval)) {\n /* c8 ignore next 5 */\n if (propval.some((val) => {\n return findNode(node, val, blockCache);\n })) {\n return true;\n }\n } else if (findNode(node, propval, blockCache)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst exportTypes = new Set([\n 'ExportDefaultDeclaration', 'ExportNamedDeclaration',\n]);\nconst ignorableNestedTypes = new Set([\n 'ArrowFunctionExpression', 'FunctionDeclaration', 'FunctionExpression',\n]);\n\n/**\n * @param {import('eslint').Rule.Node} nde\n * @returns {import('eslint').Rule.Node|false}\n */\nconst getExportAncestor = function (nde) {\n /** @type {import('eslint').Rule.Node|null} */\n let node = nde;\n let idx = 0;\n const ignorableIfDeep = ignorableNestedTypes.has(nde?.type);\n while (node) {\n // Ignore functions nested more deeply than say `export default function () {}`\n if (idx >= 2 && ignorableIfDeep) {\n break;\n }\n\n if (exportTypes.has(node.type)) {\n return node;\n }\n\n node = node.parent;\n idx++;\n }\n\n return false;\n};\n\nconst canBeExportedByAncestorType = new Set([\n 'ClassProperty',\n 'Method',\n 'PropertyDefinition',\n 'TSMethodSignature',\n 'TSPropertySignature',\n]);\n\nconst canExportChildrenType = new Set([\n 'ClassBody',\n 'ClassDeclaration',\n 'ClassDefinition',\n 'ClassExpression',\n 'Program',\n 'TSInterfaceBody',\n 'TSInterfaceDeclaration',\n 'TSTypeAliasDeclaration',\n 'TSTypeLiteral',\n 'TSTypeParameterInstantiation',\n 'TSTypeReference',\n]);\n\n/**\n * @param {import('eslint').Rule.Node} nde\n * @returns {false|import('eslint').Rule.Node}\n */\nconst isExportByAncestor = function (nde) {\n if (!canBeExportedByAncestorType.has(nde.type)) {\n return false;\n }\n\n let node = nde.parent;\n while (node) {\n if (exportTypes.has(node.type)) {\n return node;\n }\n\n if (!canExportChildrenType.has(node.type)) {\n return false;\n }\n\n node = node.parent;\n }\n\n return false;\n};\n\n/**\n *\n * @param {CreatedNode} block\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode[]} [cache] Currently unused\n * @returns {boolean}\n */\nconst findExportedNode = function (block, node, cache) {\n /* c8 ignore next 3 */\n if (block === null) {\n return false;\n }\n\n const blockCache = cache || [];\n const {\n props,\n } = block;\n for (const propval of Object.values(props)) {\n const pval = /** @type {CreatedNode} */ (propval);\n blockCache.push(pval);\n if (pval.exported && (node === pval.value || findNode(node, pval.value))) {\n return true;\n }\n\n // No need to check `propval` for exported nodes as ESM\n // exports are only global\n }\n\n return false;\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globals\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @returns {boolean}\n */\nconst isNodeExported = function (node, globals, opt) {\n const moduleExports = globals.props.module?.props?.exports;\n if (\n opt.initModuleExports && moduleExports && findNode(node, moduleExports)\n ) {\n return true;\n }\n\n if (opt.initWindow && globals.props.window && findNode(node, globals.props.window)) {\n return true;\n }\n\n if (opt.esm && findExportedNode(globals, node)) {\n return true;\n }\n\n return false;\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globalVars\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opts\n * @returns {boolean}\n */\nconst parseRecursive = function (node, globalVars, opts) {\n // Iterate from top using recursion - stop at first processed node from top\n if (node.parent && parseRecursive(node.parent, globalVars, opts)) {\n return true;\n }\n\n return mapVariables(node, globalVars, opts);\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} ast\n * @param {import('eslint').Rule.Node} node\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @returns {CreatedNode}\n */\nconst parse = function (ast, node, opt) {\n /* c8 ignore next 6 */\n const opts = opt || {\n ancestorsOnly: false,\n esm: true,\n initModuleExports: true,\n initWindow: true,\n };\n\n const globalVars = createNode();\n if (opts.initModuleExports) {\n globalVars.props.module = createNode();\n globalVars.props.module.props.exports = createNode();\n globalVars.props.exports = globalVars.props.module.props.exports;\n }\n\n if (opts.initWindow) {\n globalVars.props.window = createNode();\n globalVars.props.window.special = true;\n }\n\n if (opts.ancestorsOnly) {\n parseRecursive(node, globalVars, opts);\n } else {\n initVariables(ast, globalVars, opts);\n mapVariables(ast, globalVars, opts);\n }\n\n return {\n globalVars,\n props: {},\n };\n};\n\nconst accessibilityNodes = new Set([\n 'MethodDefinition',\n 'PropertyDefinition',\n]);\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @returns {boolean}\n */\nconst isPrivate = (node) => {\n return accessibilityNodes.has(node.type) &&\n (\n 'accessibility' in node &&\n node.accessibility !== 'public' && node.accessibility !== undefined\n ) ||\n 'key' in node &&\n node.key.type === 'PrivateIdentifier';\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {import('eslint').SourceCode} sourceCode\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @param {import('./iterateJsdoc.js').Settings} settings\n * @returns {boolean}\n */\nconst isUncommentedExport = function (node, sourceCode, opt, settings) {\n // console.log({node});\n // Optimize with ancestor check for esm\n if (opt.esm) {\n if (isPrivate(node) ||\n node.parent && isPrivate(node.parent)) {\n return false;\n }\n\n const exportNode = getExportAncestor(node);\n\n // Is export node comment\n if (exportNode && !findJSDocComment(exportNode, sourceCode, settings)) {\n return true;\n }\n\n /**\n * Some typescript types are not in variable map, but inherit exported (interface property and method)\n */\n if (\n isExportByAncestor(node) &&\n !findJSDocComment(node, sourceCode, settings)\n ) {\n return true;\n }\n }\n\n const ast = /** @type {unknown} */ (sourceCode.ast);\n\n const parseResult = parse(\n /** @type {import('eslint').Rule.Node} */\n (ast),\n node,\n opt,\n );\n\n return isNodeExported(\n node, /** @type {CreatedNode} */ (parseResult.globalVars), opt,\n );\n};\n\nexport default {\n isUncommentedExport,\n parse,\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,342 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _index = _interopRequireDefault(require("../index.cjs"));
8
- var _decamelize = _interopRequireDefault(require("decamelize"));
9
- var _gitdown = _interopRequireDefault(require("gitdown"));
10
- var _glob = require("glob");
11
- var _nodeFs = _interopRequireDefault(require("node:fs"));
12
- var _nodePath = _interopRequireDefault(require("node:path"));
13
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } /**
15
- * This script is used to inline assertions into the README.md documents.
16
- */
17
- const dirname = __dirname;
18
-
19
- /**
20
- * @param {string} str
21
- */
22
- const escapeDescription = str => {
23
- return str.replaceAll(/(?<!`|\* +|'|\/\/ )@\w+/gv, '<code>$&</code>');
24
- };
25
-
26
- /**
27
- * @param {string} code
28
- * @returns {string}
29
- */
30
- const trimCode = code => {
31
- let lines = code.replace(/^\n/v, '').trimEnd().split('\n');
32
- const firsLineIndentation = lines[0].match(/^\s+/v);
33
- const lastLineIndentation = lines[lines.length - 1].match(/^\s+/v);
34
- const firstIndentSize = firsLineIndentation ? firsLineIndentation[0].length : 0;
35
- const lastIndentSize = lastLineIndentation ? lastLineIndentation[0].length : 0;
36
- lines = lines.map((line, index) => {
37
- const lineIndentSize = firstIndentSize !== 0 || index === 0 ? Math.min(firstIndentSize, lastIndentSize) : lastIndentSize;
38
- return line.slice(lineIndentSize);
39
- });
40
- return lines.join('\n').replaceAll('\r', '\\r');
41
- };
42
-
43
- /**
44
- * @param {import('eslint').RuleTester.InvalidTestCase|import('eslint').RuleTester.ValidTestCase} setup
45
- * @param {string} ruleName
46
- * @returns {string}
47
- */
48
- const formatCodeSnippet = (setup, ruleName) => {
49
- const paragraphs = [];
50
- paragraphs.push(trimCode(setup.code));
51
- if (setup.settings) {
52
- paragraphs.push(`// Settings: ${JSON.stringify(setup.settings)}`);
53
- }
54
- if (setup.options) {
55
- paragraphs.push(`// "jsdoc/${ruleName}": ["error"|"warn", ${JSON.stringify(setup.options).slice(1)}`);
56
- }
57
- if ('errors' in setup) {
58
- paragraphs.push(`// Message: ${ /** @type {Array<import('eslint').RuleTester.TestCaseError>} */setup.errors[0].message}`);
59
- }
60
- return paragraphs.join('\n');
61
- };
62
- const getAssertions = async () => {
63
- const assertionFiles = (await (0, _glob.glob)(_nodePath.default.resolve(dirname, '../../test/rules/assertions/*.js'))).filter(file => {
64
- return !file.includes('flatConfig');
65
- }).toReversed();
66
- const assertionNames = assertionFiles.map(filePath => {
67
- return _nodePath.default.basename(filePath, '.js');
68
- });
69
- const assertionCodes = await Promise.all(assertionFiles.map(async (filePath, idx) => {
70
- /**
71
- * @type {{
72
- * invalid: (import('eslint').RuleTester.InvalidTestCase & {ignoreReadme?: true})[],
73
- * valid: (import('eslint').RuleTester.ValidTestCase & {ignoreReadme?: true})[]
74
- * }}
75
- */
76
- const codes = (await (specifier => new Promise(r => r(`${specifier}`)).then(s => _interopRequireWildcard(require(s))))(filePath)).default;
77
- const ruleName = (0, _decamelize.default)(assertionNames[idx], {
78
- separator: '-'
79
- });
80
- return {
81
- invalid: codes.invalid.filter(({
82
- ignoreReadme
83
- }) => {
84
- return !ignoreReadme;
85
- }).map(setup => {
86
- return formatCodeSnippet(setup, ruleName);
87
- }),
88
- valid: codes.valid.filter(({
89
- ignoreReadme
90
- }) => {
91
- return !ignoreReadme;
92
- }).map(setup => {
93
- return formatCodeSnippet(setup, ruleName);
94
- })
95
- };
96
- }));
97
- return {
98
- assertionNames,
99
- assertions: Object.fromEntries(assertionNames.map((assertionName, index) => {
100
- return [assertionName, assertionCodes[index]];
101
- }))
102
- };
103
- };
104
- const getSomeBranch = () => {
105
- const gitConfig = _nodeFs.default.readFileSync(_nodePath.default.join(dirname, '../../.git/config')).toString();
106
- const [, branch] = /\[branch "([^"]+)"\]/v.exec(gitConfig) || [];
107
- return branch;
108
- };
109
-
110
- // Scan the directory for these instead?
111
- const extraFiles = ['settings.md', 'advanced.md', 'processors.md', 'README.md'];
112
- const otherPaths = extraFiles.map(extraFile => {
113
- return _nodePath.default.join(dirname, '..', '..', '.README', extraFile);
114
- });
115
- const generateDocs = async () => {
116
- const {
117
- assertionNames,
118
- assertions
119
- } = await getAssertions();
120
-
121
- /** @type {import('json-schema').JSONSchema4[][]} */
122
- const schemas = [];
123
-
124
- /**
125
- * @type {{
126
- * decamelized: string,
127
- * row: string
128
- * }[]}
129
- */
130
- const tableRows = [];
131
- const docContents = await Promise.all([...assertionNames.map(assertionName => {
132
- const decamelized = (0, _decamelize.default)(assertionName, {
133
- separator: '-'
134
- });
135
- schemas.push(/** @type {import('json-schema').JSONSchema4[]} */
136
- _index.default.rules?.[decamelized].meta?.schema);
137
- const ruleDescription = _index.default.rules?.[decamelized]?.meta?.docs?.description;
138
- if (ruleDescription === undefined) {
139
- throw new Error(`Rule ${assertionName} missing description`);
140
- }
141
- const fixable = _index.default.rules?.[decamelized]?.meta?.fixable ?? null;
142
- const recommended = _index.default.configs['flat/recommended'].rules?.['jsdoc/' + decamelized] !== 'off';
143
- const tsRecommended = _index.default.configs['flat/recommended-typescript'].rules?.['jsdoc/' + decamelized] !== 'off';
144
- const tsRecommendedFlavor = _index.default.configs['flat/recommended-typescript-flavor'].rules?.['jsdoc/' + decamelized] !== 'off';
145
- tableRows.push({
146
- decamelized,
147
- row: `|${recommended ? tsRecommended && tsRecommendedFlavor ? ':heavy_check_mark:' : ':heavy_check_mark: (' + (tsRecommended ? 'On in TS' : 'Off in TS') + '; ' + (tsRecommendedFlavor ? 'On in TS flavor' : 'Off in TS flavor') + ')' : tsRecommended || tsRecommendedFlavor ? (tsRecommended ? 'On in TS' : 'Off in TS') + '; ' + (tsRecommendedFlavor ? 'On in TS flavor' : 'Off in TS flavor') : ''}|${fixable ? ':wrench:' : ''}| [${decamelized}](./docs/rules/${decamelized}.md#readme) | ${ruleDescription} |`
148
- });
149
- return _nodePath.default.join(dirname, '..', '..', '.README', 'rules', decamelized + '.md');
150
- }), ...otherPaths].map(async (docPath, idx) => {
151
- const gitdown = await _gitdown.default.readFile(docPath);
152
- gitdown.setConfig({
153
- gitinfo: {
154
- defaultBranchName: getSomeBranch() || 'master',
155
- gitPath: _nodePath.default.join(dirname, '../../.git')
156
- }
157
- });
158
- gitdown.registerHelper('rules-table', {
159
- compile() {
160
- return tableRows.toSorted(({
161
- decamelized
162
- }, {
163
- decamelized: dc
164
- }) => {
165
- return decamelized < dc ? -1 : decamelized > dc ? 1 : 0;
166
- }).map(({
167
- row
168
- }) => {
169
- return row;
170
- }).join('\n');
171
- }
172
- });
173
- gitdown.registerHelper('options', {
174
- compile() {
175
- if (!schemas[idx]) {
176
- return '';
177
- }
178
-
179
- /**
180
- * @param {import('json-schema').JSONSchema4} schema
181
- * @param {number} jIdx
182
- * @param {import('json-schema').JSONSchema4[]} arr
183
- * @param {number} [nesting]
184
- */
185
- const convertFromSchema = (schema, jIdx, arr, nesting = 3) => {
186
- let ret = '';
187
- switch (schema.type) {
188
- case 'array':
189
- ret += convertFromSchema(/** @type {import('json-schema').JSONSchema4} */schema.items, 0, [], nesting + 1);
190
- break;
191
- case 'object':
192
- if (!schema.properties) {
193
- break;
194
- }
195
- if (jIdx === 0) {
196
- ret += (nesting > 3 ? '\n' : '') + (arr.length <= 1 ? 'A single' : 'An') + ' options object has the following properties.\n';
197
- } else {
198
- ret += '\n\nThe next option is an object with the following properties.\n';
199
- }
200
- if (schema.description) {
201
- ret += `\n${escapeDescription(schema.description)}\n`;
202
- }
203
- for (const [property, innerSchema] of Object.entries(schema.properties)) {
204
- const {
205
- description,
206
- type
207
- } = innerSchema;
208
- if (!description) {
209
- throw new Error('Missing description for property ' + property + ' for rule ' + assertionNames[idx] + ' with schema ' + JSON.stringify(innerSchema));
210
- }
211
- ret += '\n' + '#'.repeat(nesting) + ` \`${property}\`
212
-
213
- ${type === 'object' && innerSchema.properties ? '' : escapeDescription(description) + '\n'}`;
214
- if (type === 'object' || type === 'array') {
215
- ret += convertFromSchema(innerSchema, 0, [], nesting + 1);
216
- }
217
- }
218
- break;
219
- case 'string':
220
- if (jIdx !== 0) {
221
- throw new Error('Unexpected string schema');
222
- }
223
-
224
- // If a simple string, should be documented by parent
225
- if (schema.enum) {
226
- ret += 'The first option is a string with the following possible values: ';
227
- ret += schema.enum?.map(val => {
228
- return `"${val}"`;
229
- }).join(', ') + '.\n';
230
- }
231
- if (schema.description) {
232
- ret += escapeDescription(schema.description);
233
- }
234
- break;
235
- default:
236
- // Describe on parent object
237
- if (schema.anyOf) {
238
- break;
239
- }
240
- throw new Error('Unrecognized type ' + schema.type + ' for schema: ' + JSON.stringify(schema));
241
- }
242
- return ret;
243
- };
244
- return schemas[idx].map((schema, jIdx, arr) => {
245
- return convertFromSchema(schema, jIdx, arr);
246
- }).join('');
247
- }
248
- });
249
- return gitdown.get();
250
- }));
251
- return docContents.map(docContent => {
252
- return docContent.replaceAll(/<!-- assertions-(passing|failing) ([a-z]+?) -->/gvi,
253
- /**
254
- * @param {string} _assertionsBlock
255
- * @param {string} passingFailing
256
- * @param {string} ruleName
257
- * @returns {string}
258
- */
259
- (_assertionsBlock, passingFailing, ruleName) => {
260
- const ruleAssertions = assertions[ruleName];
261
- if (!ruleAssertions) {
262
- throw new Error(`No assertions available for rule "${ruleName}".`);
263
- }
264
- return passingFailing === 'failing' ? 'The following patterns are considered problems:\n\n````ts\n' + ruleAssertions.invalid.join('\n\n') + '\n````\n\n' : 'The following patterns are not considered problems:\n\n````ts\n' + ruleAssertions.valid.join('\n\n') + '\n````\n';
265
- }
266
- // Allow relative paths in source for #902 but generate compiled file in
267
- // manner compatible with GitHub and npmjs.com
268
- ).replaceAll('(../#', '(#user-content-eslint-plugin-jsdoc-');
269
- });
270
- };
271
-
272
- /**
273
- * @returns {string[]}
274
- */
275
- const getDocPaths = () => {
276
- const basePath = _nodePath.default.join(dirname, '..', '..', '.README');
277
- const writeBasePath = _nodePath.default.join(dirname, '..', '..', 'docs');
278
- const docPaths = /** @type {string[]} */_nodeFs.default.readdirSync(basePath).flatMap(docFile => {
279
- if (extraFiles.includes(docFile)) {
280
- // Will get path separately below
281
- return null;
282
- }
283
- if (docFile === '.DS_Store') {
284
- return null;
285
- }
286
- const innerBasePath = _nodePath.default.join(basePath, docFile);
287
- const writeInnerBasePath = _nodePath.default.join(writeBasePath, docFile);
288
- const stat = _nodeFs.default.statSync(innerBasePath);
289
- if (stat.isFile()) {
290
- // Currently settings and advanced
291
- return writeInnerBasePath;
292
- }
293
- if (stat.isDirectory()) {
294
- return _nodeFs.default.readdirSync(innerBasePath).map(innerDocFile => {
295
- return _nodePath.default.join(writeInnerBasePath, innerDocFile);
296
- }).toSorted((a, b) => {
297
- const newA = a.replace(/\.md/v, '');
298
- const newB = b.replace(/\.md/v, '');
299
- return newA < newB ? -1 : newB > newA ? 1 : 0;
300
- });
301
- }
302
- return null;
303
- }).filter(Boolean);
304
- return [...docPaths, ...extraFiles.slice(0, -1).map(extraFile => {
305
- return _nodePath.default.join(dirname, '..', '..', 'docs', extraFile);
306
- }), _nodePath.default.join(dirname, '..', '..', 'README.md')];
307
- };
308
- const generateDocsAndWriteToDisk = async () => {
309
- const [docContents, docPaths] = await Promise.all([generateDocs(), getDocPaths()]);
310
- for (const [idx, docContent] of docContents.entries()) {
311
- const destPath = docPaths[idx];
312
- _nodeFs.default.writeFileSync(destPath, docContent);
313
- }
314
- };
315
- const assertDocsAreUpToDate = async () => {
316
- const [docContents, docPaths] = await Promise.all([generateDocs(), getDocPaths()]);
317
- for (const [idx, docContent] of docContents.entries()) {
318
- const docPath = docPaths[idx];
319
- const isUpToDate = _nodeFs.default.readFileSync(docPath, 'utf8') === docContent;
320
- if (!isUpToDate) {
321
- throw new Error('Docs are not up to date, please run `pnpm run create-docs` to update it.');
322
- }
323
- }
324
- };
325
- const main = async () => {
326
- try {
327
- const hasCheckFlag = process.argv.includes('--check');
328
- if (hasCheckFlag) {
329
- await assertDocsAreUpToDate();
330
- } else {
331
- await generateDocsAndWriteToDisk();
332
- }
333
- } catch (error) {
334
- /* eslint-disable-next-line no-console */
335
- console.error(error);
336
- process.exit(1);
337
- }
338
- };
339
- main();
340
- var _default = exports.default = generateDocs;
341
- module.exports = exports.default;
342
- //# sourceMappingURL=generateDocs.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateDocs.cjs","names":["glob","path","decamelize","fs","plugin","Gitdown"],"sources":["../src/bin/generateDocs.js"],"sourcesContent":["/**\n * This script is used to inline assertions into the README.md documents.\n */\nimport plugin from '../index.js';\nimport decamelize from 'decamelize';\nimport Gitdown from 'gitdown';\nimport {\n glob,\n} from 'glob';\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nconst dirname = import.meta.dirname;\n\n/**\n * @param {string} str\n */\nconst escapeDescription = (str) => {\n return str.replaceAll(/(?<!`|\\* +|'|\\/\\/ )@\\w+/gv, '<code>$&</code>');\n};\n\n/**\n * @param {string} code\n * @returns {string}\n */\nconst trimCode = (code) => {\n let lines = code.replace(/^\\n/v, '').trimEnd().split('\\n');\n\n const firsLineIndentation = lines[0].match(/^\\s+/v);\n const lastLineIndentation = lines[lines.length - 1].match(/^\\s+/v);\n\n const firstIndentSize = firsLineIndentation ? firsLineIndentation[0].length : 0;\n const lastIndentSize = lastLineIndentation ? lastLineIndentation[0].length : 0;\n\n lines = lines.map((line, index) => {\n const lineIndentSize = firstIndentSize !== 0 || index === 0 ?\n Math.min(firstIndentSize, lastIndentSize) :\n lastIndentSize;\n\n return line.slice(lineIndentSize);\n });\n\n return lines.join('\\n').replaceAll('\\r', '\\\\r');\n};\n\n/**\n * @param {import('eslint').RuleTester.InvalidTestCase|import('eslint').RuleTester.ValidTestCase} setup\n * @param {string} ruleName\n * @returns {string}\n */\nconst formatCodeSnippet = (setup, ruleName) => {\n const paragraphs = [];\n\n paragraphs.push(trimCode(setup.code));\n\n if (setup.settings) {\n paragraphs.push(`// Settings: ${JSON.stringify(setup.settings)}`);\n }\n\n if (setup.options) {\n paragraphs.push(`// \"jsdoc/${ruleName}\": [\"error\"|\"warn\", ${JSON.stringify(setup.options).slice(1)}`);\n }\n\n if ('errors' in setup) {\n paragraphs.push(`// Message: ${\n /** @type {Array<import('eslint').RuleTester.TestCaseError>} */ (\n setup.errors\n )[0].message}`);\n }\n\n return paragraphs.join('\\n');\n};\n\nconst getAssertions = async () => {\n const assertionFiles = (await glob(path.resolve(dirname, '../../test/rules/assertions/*.js'))).filter((file) => {\n return !file.includes('flatConfig');\n }).toReversed();\n\n const assertionNames = assertionFiles.map((filePath) => {\n return path.basename(filePath, '.js');\n });\n\n const assertionCodes = await Promise.all(assertionFiles.map(async (filePath, idx) => {\n /**\n * @type {{\n * invalid: (import('eslint').RuleTester.InvalidTestCase & {ignoreReadme?: true})[],\n * valid: (import('eslint').RuleTester.ValidTestCase & {ignoreReadme?: true})[]\n * }}\n */\n const codes = (await import(filePath)).default;\n\n const ruleName = decamelize(assertionNames[idx], {\n separator: '-',\n });\n\n return {\n invalid: codes.invalid.filter(({\n ignoreReadme,\n }) => {\n return !ignoreReadme;\n }).map((setup) => {\n return formatCodeSnippet(setup, ruleName);\n }),\n valid: codes.valid.filter(({\n ignoreReadme,\n }) => {\n return !ignoreReadme;\n }).map((setup) => {\n return formatCodeSnippet(setup, ruleName);\n }),\n };\n }));\n\n return {\n assertionNames,\n assertions: Object.fromEntries(assertionNames.map((assertionName, index) => {\n return [\n assertionName, assertionCodes[index],\n ];\n })),\n };\n};\n\nconst getSomeBranch = () => {\n const gitConfig = fs.readFileSync(path.join(dirname, '../../.git/config')).toString();\n const [\n , branch,\n ] = /\\[branch \"([^\"]+)\"\\]/v.exec(gitConfig) || [];\n\n return branch;\n};\n\n// Scan the directory for these instead?\nconst extraFiles = [\n 'settings.md',\n 'advanced.md',\n 'processors.md',\n 'README.md',\n];\n\nconst otherPaths = extraFiles.map((extraFile) => {\n return path.join(dirname, '..', '..', '.README', extraFile);\n});\n\nconst generateDocs = async () => {\n const {\n assertionNames,\n assertions,\n } = await getAssertions();\n\n /** @type {import('json-schema').JSONSchema4[][]} */\n const schemas = [];\n\n /**\n * @type {{\n * decamelized: string,\n * row: string\n * }[]}\n */\n const tableRows = [];\n\n const docContents = await Promise.all([\n ...assertionNames.map((assertionName) => {\n const decamelized = decamelize(assertionName, {\n separator: '-',\n });\n schemas.push(\n /** @type {import('json-schema').JSONSchema4[]} */\n (plugin.rules?.[decamelized].meta?.schema),\n );\n const ruleDescription = plugin.rules?.[decamelized]?.meta?.docs?.description;\n if (ruleDescription === undefined) {\n throw new Error(`Rule ${assertionName} missing description`);\n }\n\n const fixable = plugin.rules?.[decamelized]?.meta?.fixable ?? null;\n\n const recommended = plugin.configs['flat/recommended'].rules?.['jsdoc/' + decamelized] !== 'off';\n const tsRecommended = plugin.configs['flat/recommended-typescript'].rules?.['jsdoc/' + decamelized] !== 'off';\n const tsRecommendedFlavor = plugin.configs['flat/recommended-typescript-flavor'].rules?.['jsdoc/' + decamelized] !== 'off';\n\n tableRows.push({\n decamelized,\n row: `|${\n recommended ?\n (tsRecommended && tsRecommendedFlavor ?\n ':heavy_check_mark:' :\n ':heavy_check_mark: (' + (tsRecommended ? 'On in TS' : 'Off in TS') +\n '; ' +\n (tsRecommendedFlavor ? 'On in TS flavor' : 'Off in TS flavor') +\n ')'\n ) :\n (tsRecommended || tsRecommendedFlavor ?\n (tsRecommended ? 'On in TS' : 'Off in TS') +\n '; ' +\n (tsRecommendedFlavor ? 'On in TS flavor' : 'Off in TS flavor') :\n '')\n }|${fixable ? ':wrench:' : ''}| [${decamelized}](./docs/rules/${decamelized}.md#readme) | ${ruleDescription} |`,\n });\n\n return path.join(\n dirname, '..', '..', '.README', 'rules', decamelized + '.md',\n );\n }),\n ...otherPaths,\n ].map(async (docPath, idx) => {\n const gitdown = await Gitdown.readFile(docPath);\n\n gitdown.setConfig({\n gitinfo: {\n defaultBranchName: getSomeBranch() || 'master',\n gitPath: path.join(dirname, '../../.git'),\n },\n });\n\n gitdown.registerHelper('rules-table', {\n compile () {\n return tableRows.toSorted(({\n decamelized,\n }, {\n decamelized: dc,\n }) => {\n return decamelized < dc ? -1 : (decamelized > dc ? 1 : 0);\n }).map(({\n row,\n }) => {\n return row;\n }).join('\\n');\n },\n });\n\n gitdown.registerHelper('options', {\n compile () {\n if (!schemas[idx]) {\n return '';\n }\n\n /**\n * @param {import('json-schema').JSONSchema4} schema\n * @param {number} jIdx\n * @param {import('json-schema').JSONSchema4[]} arr\n * @param {number} [nesting]\n */\n const convertFromSchema = (schema, jIdx, arr, nesting = 3) => {\n let ret = '';\n switch (schema.type) {\n case 'array':\n ret += convertFromSchema(\n /** @type {import('json-schema').JSONSchema4} */ (schema.items),\n 0,\n [],\n nesting + 1,\n );\n break;\n case 'object':\n if (!schema.properties) {\n break;\n }\n\n if (jIdx === 0) {\n ret += (nesting > 3 ? '\\n' : '') + (arr.length <= 1 ? 'A single' : 'An') +\n ' options object has the following properties.\\n';\n } else {\n ret += '\\n\\nThe next option is an object with the following properties.\\n';\n }\n\n if (schema.description) {\n ret += `\\n${escapeDescription(schema.description)}\\n`;\n }\n\n for (const [\n property,\n innerSchema,\n ] of Object.entries(schema.properties)) {\n const {\n description,\n type,\n } = innerSchema;\n if (!description) {\n throw new Error(\n 'Missing description for property ' + property + ' for rule ' + assertionNames[idx] + ' with schema ' + JSON.stringify(innerSchema),\n );\n }\n\n ret += '\\n' + '#'.repeat(nesting) + ` \\`${property}\\`\n\n${type === 'object' && innerSchema.properties ? '' : escapeDescription(description) + '\\n'}`;\n if (type === 'object' || type === 'array') {\n ret += convertFromSchema(innerSchema, 0, [], nesting + 1);\n }\n }\n\n break;\n case 'string':\n if (jIdx !== 0) {\n throw new Error('Unexpected string schema');\n }\n\n // If a simple string, should be documented by parent\n if (schema.enum) {\n ret += 'The first option is a string with the following possible values: ';\n ret += schema.enum?.map((val) => {\n return `\"${val}\"`;\n }).join(', ') + '.\\n';\n }\n\n if (schema.description) {\n ret += escapeDescription(schema.description);\n }\n\n break;\n default:\n // Describe on parent object\n if (schema.anyOf) {\n break;\n }\n\n throw new Error('Unrecognized type ' + schema.type + ' for schema: ' +\n JSON.stringify(schema));\n }\n\n return ret;\n };\n\n return schemas[idx].map((schema, jIdx, arr) => {\n return convertFromSchema(schema, jIdx, arr);\n }).join('');\n },\n });\n\n return gitdown.get();\n }));\n\n return docContents.map((docContent) => {\n return docContent.replaceAll(\n /<!-- assertions-(passing|failing) ([a-z]+?) -->/gvi,\n /**\n * @param {string} _assertionsBlock\n * @param {string} passingFailing\n * @param {string} ruleName\n * @returns {string}\n */\n (_assertionsBlock, passingFailing, ruleName) => {\n const ruleAssertions = assertions[ruleName];\n\n if (!ruleAssertions) {\n throw new Error(`No assertions available for rule \"${ruleName}\".`);\n }\n\n return passingFailing === 'failing' ?\n 'The following patterns are considered problems:\\n\\n````ts\\n' +\n ruleAssertions.invalid.join('\\n\\n') + '\\n````\\n\\n' :\n 'The following patterns are not considered problems:\\n\\n````ts\\n' +\n ruleAssertions.valid.join('\\n\\n') + '\\n````\\n';\n },\n // Allow relative paths in source for #902 but generate compiled file in\n // manner compatible with GitHub and npmjs.com\n ).replaceAll('(../#', '(#user-content-eslint-plugin-jsdoc-');\n });\n};\n\n/**\n * @returns {string[]}\n */\nconst getDocPaths = () => {\n const basePath = path.join(dirname, '..', '..', '.README');\n const writeBasePath = path.join(dirname, '..', '..', 'docs');\n const docPaths = /** @type {string[]} */ (fs.readdirSync(basePath).flatMap((docFile) => {\n if (extraFiles.includes(docFile)) {\n // Will get path separately below\n return null;\n }\n\n if (docFile === '.DS_Store') {\n return null;\n }\n\n const innerBasePath = path.join(basePath, docFile);\n const writeInnerBasePath = path.join(writeBasePath, docFile);\n const stat = fs.statSync(innerBasePath);\n if (stat.isFile()) {\n // Currently settings and advanced\n return writeInnerBasePath;\n }\n\n if (stat.isDirectory()) {\n return fs.readdirSync(innerBasePath).map((innerDocFile) => {\n return path.join(writeInnerBasePath, innerDocFile);\n }).toSorted((a, b) => {\n const newA = a.replace(/\\.md/v, '');\n const newB = b.replace(/\\.md/v, '');\n return newA < newB ? -1 : (newB > newA ? 1 : 0);\n });\n }\n\n return null;\n }).filter(Boolean));\n\n return [\n ...docPaths,\n ...extraFiles.slice(0, -1).map((extraFile) => {\n return path.join(dirname, '..', '..', 'docs', extraFile);\n }),\n path.join(dirname, '..', '..', 'README.md'),\n ];\n};\n\nconst generateDocsAndWriteToDisk = async () => {\n const [\n docContents,\n docPaths,\n ] = await Promise.all([\n generateDocs(), getDocPaths(),\n ]);\n for (const [\n idx,\n docContent,\n ] of docContents.entries()) {\n const destPath = docPaths[idx];\n fs.writeFileSync(destPath, docContent);\n }\n};\n\nconst assertDocsAreUpToDate = async () => {\n const [\n docContents,\n docPaths,\n ] = await Promise.all([\n generateDocs(), getDocPaths(),\n ]);\n for (const [\n idx,\n docContent,\n ] of docContents.entries()) {\n const docPath = docPaths[idx];\n const isUpToDate = fs.readFileSync(docPath, 'utf8') === docContent;\n\n if (!isUpToDate) {\n throw new Error('Docs are not up to date, please run `pnpm run create-docs` to update it.');\n }\n }\n};\n\nconst main = async () => {\n try {\n const hasCheckFlag = process.argv.includes('--check');\n\n if (hasCheckFlag) {\n await assertDocsAreUpToDate();\n } else {\n await generateDocsAndWriteToDisk();\n }\n } catch (error) {\n /* eslint-disable-next-line no-console */\n console.error(error);\n\n process.exit(1);\n }\n};\n\nmain();\n\nexport default generateDocs;\n"],"mappings":"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","ignoreList":[]}
@@ -1,62 +0,0 @@
1
- "use strict";
2
-
3
- var _escodegen = require("@es-joy/escodegen");
4
- var _decamelize = _interopRequireDefault(require("decamelize"));
5
- var _espree = require("espree");
6
- var _esquery = _interopRequireDefault(require("esquery"));
7
- var _promises = require("node:fs/promises");
8
- var _nodePath = require("node:path");
9
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
- const rulesDir = './src/rules';
11
- const dirContents = await (0, _promises.readdir)(rulesDir);
12
- for (const file of dirContents) {
13
- if (!file.endsWith('.js')) {
14
- continue;
15
- }
16
- const fileContents = await (0, _promises.readFile)((0, _nodePath.join)(rulesDir, file), 'utf8');
17
- // console.log('file', file);
18
- const ast = (0, _espree.parse)(fileContents, {
19
- ecmaVersion: 2_024,
20
- sourceType: 'module'
21
- });
22
- const results = _esquery.default.query(ast, 'ExportDefaultDeclaration[declaration.callee.name="iterateJsdoc"]' + ' Property[key.name="meta"] Property[key.name="schema"]');
23
- if (results[0]?.value) {
24
- const schema = (0, _escodegen.generate)(results[0]?.value, {
25
- format: {
26
- json: true,
27
- quotes: 'double'
28
- }
29
- });
30
- const parsed = JSON.parse(schema);
31
- let initial = '';
32
- if (Array.isArray(parsed)) {
33
- if (!parsed.length) {
34
- // eslint-disable-next-line no-console -- CLI
35
- console.log('skipping no options', file);
36
- continue;
37
- }
38
- if (parsed.length >= 2) {
39
- if (parsed.length >= 3 || parsed[0].type !== 'string') {
40
- // eslint-disable-next-line no-console -- CLI
41
- console.log('unexpectedly large schema', file);
42
- continue;
43
- // throw new Error('Unexpected long schema array');
44
- }
45
- initial = `string (${parsed[0].enum.map(item => {
46
- return `"${item}"`;
47
- }).join(', ')}) followed by object with `;
48
- parsed.shift();
49
- }
50
- }
51
- const obj = Array.isArray(parsed) ? parsed[0] : parsed;
52
- const hyphenatedRule = (0, _decamelize.default)(file, {
53
- separator: '-'
54
- }).replace(/\.js$/v, '.md');
55
- const docPath = (0, _nodePath.join)('.README/rules', hyphenatedRule);
56
- const ruleDocs = (await (0, _promises.readFile)(docPath, 'utf8')).replace(/(\|\s*Options\s*\|)([^\|]*)(\|)?/v, `$1${initial + Object.keys(obj.properties).map(key => {
57
- return `\`${key}\``;
58
- }).join(', ')}$3`);
59
- await (0, _promises.writeFile)(docPath, ruleDocs);
60
- }
61
- }
62
- //# sourceMappingURL=generateOptions.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateOptions.cjs","names":["readdir","readFile","join","parse","esquery","generate","decamelize","writeFile"],"sources":["../src/bin/generateOptions.js"],"sourcesContent":["import {\n generate,\n} from '@es-joy/escodegen';\nimport decamelize from 'decamelize';\nimport {\n parse,\n} from 'espree';\nimport esquery from 'esquery';\nimport {\n readdir,\n readFile,\n writeFile,\n} from 'node:fs/promises';\nimport {\n join,\n} from 'node:path';\n\nconst rulesDir = './src/rules';\n\nconst dirContents = await readdir(rulesDir);\n\nfor (const file of dirContents) {\n if (!file.endsWith('.js')) {\n continue;\n }\n\n const fileContents = await readFile(join(rulesDir, file), 'utf8');\n // console.log('file', file);\n const ast = parse(fileContents, {\n ecmaVersion: 2_024,\n sourceType: 'module',\n });\n const results = esquery.query(\n ast,\n 'ExportDefaultDeclaration[declaration.callee.name=\"iterateJsdoc\"]' +\n ' Property[key.name=\"meta\"] Property[key.name=\"schema\"]',\n );\n if (results[0]?.value) {\n const schema = generate(results[0]?.value, {\n format: {\n json: true,\n quotes: 'double',\n },\n });\n const parsed = JSON.parse(schema);\n\n let initial = '';\n if (Array.isArray(parsed)) {\n if (!parsed.length) {\n // eslint-disable-next-line no-console -- CLI\n console.log('skipping no options', file);\n continue;\n }\n\n if (parsed.length >= 2) {\n if (parsed.length >= 3 || parsed[0].type !== 'string') {\n // eslint-disable-next-line no-console -- CLI\n console.log('unexpectedly large schema', file);\n continue;\n // throw new Error('Unexpected long schema array');\n }\n\n initial = `string (${parsed[0].enum.map((item) => {\n return `\"${item}\"`;\n }).join(', ')}) followed by object with `;\n parsed.shift();\n }\n }\n\n const obj = Array.isArray(parsed) ? parsed[0] : parsed;\n\n const hyphenatedRule = decamelize(file, {\n separator: '-',\n }).replace(/\\.js$/v, '.md');\n const docPath = join('.README/rules', hyphenatedRule);\n\n const ruleDocs = (await readFile(docPath, 'utf8'))\n .replace(/(\\|\\s*Options\\s*\\|)([^\\|]*)(\\|)?/v, `$1${\n initial +\n Object.keys(obj.properties).map((key) => {\n return `\\`${key}\\``;\n }).join(', ')\n }$3`);\n\n await writeFile(docPath, ruleDocs);\n }\n}\n"],"mappings":";;AAAA;AAGA;AACA;AAGA;AACA;AAKA;AAEmB;AAEnB,MAAM,QAAQ,GAAG,aAAa;AAE9B,MAAM,WAAW,GAAG,MAAM,IAAAA,UAAA,OAAO,EAAC,QAAQ,CAAC;AAE3C,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;EAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;IACzB;EACF;EAEA,MAAM,YAAY,GAAG,MAAM,IAAAC,UAAA,QAAQ,EAAC,IAAAC,UAAA,IAAI,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC;EACjE;EACA,MAAM,GAAG,GAAG,IAAAC,QAAA,KAAK,EAAC,YAAY,EAAE;IAC9B,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE;EACd,CAAC,CAAC;EACF,MAAM,OAAO,GAAGC,gBAAO,CAAC,KAAK,CAC3B,GAAG,EACH,kEAAkE,GACjE,wDACH,CAAC;EACD,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;IACrB,MAAM,MAAM,GAAG,IAAAC,WAAA,QAAQ,EAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;MACzC,MAAM,EAAE;QACN,IAAI,EAAE,IAAI;QACV,MAAM,EAAE;MACV;IACF,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAEjC,IAAI,OAAO,GAAG,EAAE;IAChB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;MACzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QAClB;QACA,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC;QACxC;MACF;MAEA,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;QACtB,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;UACrD;UACA,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC;UAC9C;UACA;QACF;QAEA,OAAO,GAAG,WAAW,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAE,IAAI,IAAK;UAChD,OAAO,IAAI,IAAI,GAAG;QACpB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B;QACzC,MAAM,CAAC,KAAK,CAAC,CAAC;MAChB;IACF;IAEA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM;IAEtD,MAAM,cAAc,GAAG,IAAAC,mBAAU,EAAC,IAAI,EAAE;MACtC,SAAS,EAAE;IACb,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAAJ,UAAA,IAAI,EAAC,eAAe,EAAE,cAAc,CAAC;IAErD,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAAD,UAAA,QAAQ,EAAC,OAAO,EAAE,MAAM,CAAC,EAC9C,OAAO,CAAC,mCAAmC,EAAE,KAC5C,OAAO,GACP,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAE,GAAG,IAAK;MACvC,OAAO,KAAK,GAAG,IAAI;IACrB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IACX,CAAC;IAEP,MAAM,IAAAM,UAAA,SAAS,EAAC,OAAO,EAAE,QAAQ,CAAC;EACpC;AACF","ignoreList":[]}