eslint-plugin-jsdoc 63.0.9 → 63.0.11

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 (174) hide show
  1. package/dist/WarnSettings.cjs +1 -8
  2. package/dist/WarnSettings.cjs.map +1 -1
  3. package/dist/alignTransform.cjs +6 -10
  4. package/dist/alignTransform.cjs.map +1 -1
  5. package/dist/buildForbidRuleDefinition.cjs +3 -10
  6. package/dist/buildForbidRuleDefinition.cjs.map +1 -1
  7. package/dist/buildRejectOrPreferRuleDefinition.cjs +7 -14
  8. package/dist/buildRejectOrPreferRuleDefinition.cjs.map +1 -1
  9. package/dist/defaultTagOrder.cjs +1 -8
  10. package/dist/defaultTagOrder.cjs.map +1 -1
  11. package/dist/exportParser.cjs +6 -14
  12. package/dist/exportParser.cjs.map +1 -1
  13. package/dist/generateDocs.cjs +36 -44
  14. package/dist/generateDocs.cjs.map +1 -1
  15. package/dist/generateOptions.cjs +15 -18
  16. package/dist/generateOptions.cjs.map +1 -1
  17. package/dist/generateRule.cjs +24 -24
  18. package/dist/generateRule.cjs.map +1 -1
  19. package/dist/generateRuleTypes.cjs +6 -9
  20. package/dist/generateRuleTypes.cjs.map +1 -1
  21. package/dist/getDefaultTagStructureForMode.cjs +1 -8
  22. package/dist/getDefaultTagStructureForMode.cjs.map +1 -1
  23. package/dist/getJsdocProcessorPlugin.cjs +20 -28
  24. package/dist/getJsdocProcessorPlugin.cjs.map +1 -1
  25. package/dist/index-cjs.cjs +152 -159
  26. package/dist/index-cjs.cjs.map +1 -1
  27. package/dist/index-esm.cjs +16 -27
  28. package/dist/index-esm.cjs.map +1 -1
  29. package/dist/index.cjs +159 -172
  30. package/dist/index.cjs.map +1 -1
  31. package/dist/iterateJsdoc.cjs +22 -32
  32. package/dist/iterateJsdoc.cjs.map +1 -1
  33. package/dist/jsdocUtils.cjs +18 -86
  34. package/dist/jsdocUtils.cjs.map +1 -1
  35. package/dist/rules/checkAccess.cjs +2 -10
  36. package/dist/rules/checkAccess.cjs.map +1 -1
  37. package/dist/rules/checkAlignment.cjs +2 -10
  38. package/dist/rules/checkAlignment.cjs.map +1 -1
  39. package/dist/rules/checkExamples.cjs +6 -15
  40. package/dist/rules/checkExamples.cjs.map +1 -1
  41. package/dist/rules/checkIndentation.cjs +2 -9
  42. package/dist/rules/checkIndentation.cjs.map +1 -1
  43. package/dist/rules/checkLineAlignment.cjs +6 -14
  44. package/dist/rules/checkLineAlignment.cjs.map +1 -1
  45. package/dist/rules/checkParamNames.cjs +2 -9
  46. package/dist/rules/checkParamNames.cjs.map +1 -1
  47. package/dist/rules/checkPropertyNames.cjs +2 -9
  48. package/dist/rules/checkPropertyNames.cjs.map +1 -1
  49. package/dist/rules/checkSyntax.cjs +2 -10
  50. package/dist/rules/checkSyntax.cjs.map +1 -1
  51. package/dist/rules/checkTagNames.cjs +4 -11
  52. package/dist/rules/checkTagNames.cjs.map +1 -1
  53. package/dist/rules/checkTemplateNames.cjs +12 -21
  54. package/dist/rules/checkTemplateNames.cjs.map +1 -1
  55. package/dist/rules/checkTypes.cjs +4 -10
  56. package/dist/rules/checkTypes.cjs.map +1 -1
  57. package/dist/rules/checkValues.cjs +9 -17
  58. package/dist/rules/checkValues.cjs.map +1 -1
  59. package/dist/rules/convertToJsdocComments.cjs +13 -19
  60. package/dist/rules/convertToJsdocComments.cjs.map +1 -1
  61. package/dist/rules/emptyTags.cjs +2 -10
  62. package/dist/rules/emptyTags.cjs.map +1 -1
  63. package/dist/rules/escapeInlineTags.cjs +96 -42
  64. package/dist/rules/escapeInlineTags.cjs.map +1 -1
  65. package/dist/rules/implementsOnClasses.cjs +2 -10
  66. package/dist/rules/implementsOnClasses.cjs.map +1 -1
  67. package/dist/rules/importsAsDependencies.cjs +12 -20
  68. package/dist/rules/importsAsDependencies.cjs.map +1 -1
  69. package/dist/rules/informativeDocs.cjs +4 -12
  70. package/dist/rules/informativeDocs.cjs.map +1 -1
  71. package/dist/rules/linesBeforeBlock.cjs +2 -9
  72. package/dist/rules/linesBeforeBlock.cjs.map +1 -1
  73. package/dist/rules/matchDescription.cjs +2 -9
  74. package/dist/rules/matchDescription.cjs.map +1 -1
  75. package/dist/rules/matchName.cjs +2 -10
  76. package/dist/rules/matchName.cjs.map +1 -1
  77. package/dist/rules/multilineBlocks.cjs +2 -9
  78. package/dist/rules/multilineBlocks.cjs.map +1 -1
  79. package/dist/rules/noBadBlocks.cjs +4 -11
  80. package/dist/rules/noBadBlocks.cjs.map +1 -1
  81. package/dist/rules/noBlankBlockDescriptions.cjs +2 -10
  82. package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -1
  83. package/dist/rules/noBlankBlocks.cjs +2 -10
  84. package/dist/rules/noBlankBlocks.cjs.map +1 -1
  85. package/dist/rules/noDefaults.cjs +2 -10
  86. package/dist/rules/noDefaults.cjs.map +1 -1
  87. package/dist/rules/noMissingSyntax.cjs +2 -9
  88. package/dist/rules/noMissingSyntax.cjs.map +1 -1
  89. package/dist/rules/noMultiAsterisks.cjs +2 -10
  90. package/dist/rules/noMultiAsterisks.cjs.map +1 -1
  91. package/dist/rules/noRestrictedSyntax.cjs +2 -9
  92. package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
  93. package/dist/rules/noTypes.cjs +2 -9
  94. package/dist/rules/noTypes.cjs.map +1 -1
  95. package/dist/rules/noUndefinedTypes.cjs +13 -21
  96. package/dist/rules/noUndefinedTypes.cjs.map +1 -1
  97. package/dist/rules/preferImportTag.cjs +21 -28
  98. package/dist/rules/preferImportTag.cjs.map +1 -1
  99. package/dist/rules/requireAsteriskPrefix.cjs +2 -10
  100. package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
  101. package/dist/rules/requireDescription.cjs +2 -9
  102. package/dist/rules/requireDescription.cjs.map +1 -1
  103. package/dist/rules/requireDescriptionCompleteSentence.cjs +7 -15
  104. package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
  105. package/dist/rules/requireExample.cjs +2 -10
  106. package/dist/rules/requireExample.cjs.map +1 -1
  107. package/dist/rules/requireFileOverview.cjs +2 -10
  108. package/dist/rules/requireFileOverview.cjs.map +1 -1
  109. package/dist/rules/requireHyphenBeforeParamDescription.cjs +2 -10
  110. package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
  111. package/dist/rules/requireJsdoc.cjs +17 -25
  112. package/dist/rules/requireJsdoc.cjs.map +1 -1
  113. package/dist/rules/requireParam.cjs +2 -9
  114. package/dist/rules/requireParam.cjs.map +1 -1
  115. package/dist/rules/requireParamDescription.cjs +2 -10
  116. package/dist/rules/requireParamDescription.cjs.map +1 -1
  117. package/dist/rules/requireParamName.cjs +2 -10
  118. package/dist/rules/requireParamName.cjs.map +1 -1
  119. package/dist/rules/requireParamType.cjs +2 -10
  120. package/dist/rules/requireParamType.cjs.map +1 -1
  121. package/dist/rules/requireProperty.cjs +2 -10
  122. package/dist/rules/requireProperty.cjs.map +1 -1
  123. package/dist/rules/requirePropertyDescription.cjs +2 -10
  124. package/dist/rules/requirePropertyDescription.cjs.map +1 -1
  125. package/dist/rules/requirePropertyName.cjs +2 -10
  126. package/dist/rules/requirePropertyName.cjs.map +1 -1
  127. package/dist/rules/requirePropertyType.cjs +2 -10
  128. package/dist/rules/requirePropertyType.cjs.map +1 -1
  129. package/dist/rules/requireRejects.cjs +2 -9
  130. package/dist/rules/requireRejects.cjs.map +1 -1
  131. package/dist/rules/requireReturns.cjs +4 -11
  132. package/dist/rules/requireReturns.cjs.map +1 -1
  133. package/dist/rules/requireReturnsCheck.cjs +8 -15
  134. package/dist/rules/requireReturnsCheck.cjs.map +1 -1
  135. package/dist/rules/requireReturnsDescription.cjs +2 -10
  136. package/dist/rules/requireReturnsDescription.cjs.map +1 -1
  137. package/dist/rules/requireReturnsType.cjs +2 -10
  138. package/dist/rules/requireReturnsType.cjs.map +1 -1
  139. package/dist/rules/requireTags.cjs +2 -9
  140. package/dist/rules/requireTags.cjs.map +1 -1
  141. package/dist/rules/requireTemplate.cjs +5 -13
  142. package/dist/rules/requireTemplate.cjs.map +1 -1
  143. package/dist/rules/requireThrows.cjs +2 -9
  144. package/dist/rules/requireThrows.cjs.map +1 -1
  145. package/dist/rules/requireYields.cjs +2 -9
  146. package/dist/rules/requireYields.cjs.map +1 -1
  147. package/dist/rules/requireYieldsCheck.cjs +2 -9
  148. package/dist/rules/requireYieldsCheck.cjs.map +1 -1
  149. package/dist/rules/sortTags.cjs +4 -12
  150. package/dist/rules/sortTags.cjs.map +1 -1
  151. package/dist/rules/tagLines.cjs +2 -9
  152. package/dist/rules/tagLines.cjs.map +1 -1
  153. package/dist/rules/textEscaping.cjs +2 -9
  154. package/dist/rules/textEscaping.cjs.map +1 -1
  155. package/dist/rules/tsMethodSignatureStyle.cjs +10 -18
  156. package/dist/rules/tsMethodSignatureStyle.cjs.map +1 -1
  157. package/dist/rules/tsNoEmptyObjectType.cjs +5 -13
  158. package/dist/rules/tsNoEmptyObjectType.cjs.map +1 -1
  159. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +8 -16
  160. package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +1 -1
  161. package/dist/rules/tsPreferFunctionType.cjs +8 -16
  162. package/dist/rules/tsPreferFunctionType.cjs.map +1 -1
  163. package/dist/rules/typeFormatting.cjs +9 -17
  164. package/dist/rules/typeFormatting.cjs.map +1 -1
  165. package/dist/rules/validTypes.cjs +10 -18
  166. package/dist/rules/validTypes.cjs.map +1 -1
  167. package/dist/tagNames.cjs +4 -9
  168. package/dist/tagNames.cjs.map +1 -1
  169. package/dist/utils/hasReturnValue.cjs +1 -8
  170. package/dist/utils/hasReturnValue.cjs.map +1 -1
  171. package/package.json +21 -21
  172. package/src/rules/checkTemplateNames.js +0 -1
  173. package/src/rules/escapeInlineTags.js +142 -45
  174. package/src/rules/requireJsdoc.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"exportParser.cjs","names":["_jsdoccomment","require","_debug","_interopRequireDefault","e","__esModule","default","debug","debugModule","createNode","props","getSymbolValue","symbol","type","value","getIdentifier","node","globals","scope","opts","simpleIdentifier","identifierLiteral","name","block","createSymbol","getSymbol","opt","val","prototype","left","right","method","body","key","parent","obj","object","propertySymbol","property","computed","propertyValue","prop","properties","includes","propVal","createBlockSymbol","isGlobal","window","special","nde","id","valueSymbol","initVariables","declaration","expression","childNode","declarations","initWindow","kind","mapVariables","isExport","exported","ANONYMOUS_DEFAULT","specifier","specifiers","local","ancestorsOnly","Boolean","init","findNode","cache","blockCache","slice","push","propval","Object","values","Array","isArray","some","exportTypes","Set","ignorableNestedTypes","getExportAncestor","idx","ignorableIfDeep","has","canBeExportedByAncestorType","canExportChildrenType","isExportByAncestor","findExportedNode","pval","isNodeExported","moduleExports","module","exports","initModuleExports","esm","parseRecursive","globalVars","parse","ast","accessibilityNodes","isPrivate","accessibility","undefined","isUncommentedExport","sourceCode","settings","exportNode","findJSDocComment","parseResult","_default"],"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
+ {"version":3,"file":"exportParser.cjs","names":[],"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,19 +1,12 @@
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); } /**
1
+ /**
15
2
  * This script is used to inline assertions into the README.md documents.
16
3
  */
4
+ import plugin from '../index.js';
5
+ import decamelize from 'decamelize';
6
+ import Gitdown from 'gitdown';
7
+ import { glob } from 'glob';
8
+ import fs from 'node:fs';
9
+ import path from 'node:path';
17
10
  const dirname = __dirname;
18
11
 
19
12
  /**
@@ -60,11 +53,11 @@ const formatCodeSnippet = (setup, ruleName) => {
60
53
  return paragraphs.join('\n');
61
54
  };
62
55
  const getAssertions = async () => {
63
- const assertionFiles = (await (0, _glob.glob)(_nodePath.default.resolve(dirname, '../../test/rules/assertions/*.js'))).filter(file => {
56
+ const assertionFiles = (await glob(path.resolve(dirname, '../../test/rules/assertions/*.js'))).filter(file => {
64
57
  return !file.includes('flatConfig');
65
58
  }).toReversed();
66
59
  const assertionNames = assertionFiles.map(filePath => {
67
- return _nodePath.default.basename(filePath, '.js');
60
+ return path.basename(filePath, '.js');
68
61
  });
69
62
  const assertionCodes = await Promise.all(assertionFiles.map(async (filePath, idx) => {
70
63
  /**
@@ -73,8 +66,8 @@ const getAssertions = async () => {
73
66
  * valid: (import('eslint').RuleTester.ValidTestCase & {ignoreReadme?: true})[]
74
67
  * }}
75
68
  */
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], {
69
+ const codes = (await import(filePath)).default;
70
+ const ruleName = decamelize(assertionNames[idx], {
78
71
  separator: '-'
79
72
  });
80
73
  return {
@@ -102,7 +95,7 @@ const getAssertions = async () => {
102
95
  };
103
96
  };
104
97
  const getSomeBranch = () => {
105
- const gitConfig = _nodeFs.default.readFileSync(_nodePath.default.join(dirname, '../../.git/config')).toString();
98
+ const gitConfig = fs.readFileSync(path.join(dirname, '../../.git/config')).toString();
106
99
  const [, branch] = /\[branch "([^"]+)"\]/v.exec(gitConfig) || [];
107
100
  return branch;
108
101
  };
@@ -110,7 +103,7 @@ const getSomeBranch = () => {
110
103
  // Scan the directory for these instead?
111
104
  const extraFiles = ['settings.md', 'advanced.md', 'processors.md', 'README.md'];
112
105
  const otherPaths = extraFiles.map(extraFile => {
113
- return _nodePath.default.join(dirname, '..', '..', '.README', extraFile);
106
+ return path.join(dirname, '..', '..', '.README', extraFile);
114
107
  });
115
108
  const generateDocs = async () => {
116
109
  const {
@@ -129,30 +122,30 @@ const generateDocs = async () => {
129
122
  */
130
123
  const tableRows = [];
131
124
  const docContents = await Promise.all([...assertionNames.map(assertionName => {
132
- const decamelized = (0, _decamelize.default)(assertionName, {
125
+ const decamelized = decamelize(assertionName, {
133
126
  separator: '-'
134
127
  });
135
128
  schemas.push(/** @type {import('json-schema').JSONSchema4[]} */
136
- _index.default.rules?.[decamelized].meta?.schema);
137
- const ruleDescription = _index.default.rules?.[decamelized]?.meta?.docs?.description;
129
+ plugin.rules?.[decamelized].meta?.schema);
130
+ const ruleDescription = plugin.rules?.[decamelized]?.meta?.docs?.description;
138
131
  if (ruleDescription === undefined) {
139
132
  throw new Error(`Rule ${assertionName} missing description`);
140
133
  }
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';
134
+ const fixable = plugin.rules?.[decamelized]?.meta?.fixable ?? null;
135
+ const recommended = plugin.configs['flat/recommended'].rules?.['jsdoc/' + decamelized] !== 'off';
136
+ const tsRecommended = plugin.configs['flat/recommended-typescript'].rules?.['jsdoc/' + decamelized] !== 'off';
137
+ const tsRecommendedFlavor = plugin.configs['flat/recommended-typescript-flavor'].rules?.['jsdoc/' + decamelized] !== 'off';
145
138
  tableRows.push({
146
139
  decamelized,
147
140
  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
141
  });
149
- return _nodePath.default.join(dirname, '..', '..', '.README', 'rules', decamelized + '.md');
142
+ return path.join(dirname, '..', '..', '.README', 'rules', decamelized + '.md');
150
143
  }), ...otherPaths].map(async (docPath, idx) => {
151
- const gitdown = await _gitdown.default.readFile(docPath);
144
+ const gitdown = await Gitdown.readFile(docPath);
152
145
  gitdown.setConfig({
153
146
  gitinfo: {
154
147
  defaultBranchName: getSomeBranch() || 'master',
155
- gitPath: _nodePath.default.join(dirname, '../../.git')
148
+ gitPath: path.join(dirname, '../../.git')
156
149
  }
157
150
  });
158
151
  gitdown.registerHelper('rules-table', {
@@ -273,9 +266,9 @@ ${type === 'object' && innerSchema.properties ? '' : escapeDescription(descripti
273
266
  * @returns {string[]}
274
267
  */
275
268
  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 => {
269
+ const basePath = path.join(dirname, '..', '..', '.README');
270
+ const writeBasePath = path.join(dirname, '..', '..', 'docs');
271
+ const docPaths = /** @type {string[]} */fs.readdirSync(basePath).flatMap(docFile => {
279
272
  if (extraFiles.includes(docFile)) {
280
273
  // Will get path separately below
281
274
  return null;
@@ -283,16 +276,16 @@ const getDocPaths = () => {
283
276
  if (docFile === '.DS_Store') {
284
277
  return null;
285
278
  }
286
- const innerBasePath = _nodePath.default.join(basePath, docFile);
287
- const writeInnerBasePath = _nodePath.default.join(writeBasePath, docFile);
288
- const stat = _nodeFs.default.statSync(innerBasePath);
279
+ const innerBasePath = path.join(basePath, docFile);
280
+ const writeInnerBasePath = path.join(writeBasePath, docFile);
281
+ const stat = fs.statSync(innerBasePath);
289
282
  if (stat.isFile()) {
290
283
  // Currently settings and advanced
291
284
  return writeInnerBasePath;
292
285
  }
293
286
  if (stat.isDirectory()) {
294
- return _nodeFs.default.readdirSync(innerBasePath).map(innerDocFile => {
295
- return _nodePath.default.join(writeInnerBasePath, innerDocFile);
287
+ return fs.readdirSync(innerBasePath).map(innerDocFile => {
288
+ return path.join(writeInnerBasePath, innerDocFile);
296
289
  }).toSorted((a, b) => {
297
290
  const newA = a.replace(/\.md/v, '');
298
291
  const newB = b.replace(/\.md/v, '');
@@ -302,21 +295,21 @@ const getDocPaths = () => {
302
295
  return null;
303
296
  }).filter(Boolean);
304
297
  return [...docPaths, ...extraFiles.slice(0, -1).map(extraFile => {
305
- return _nodePath.default.join(dirname, '..', '..', 'docs', extraFile);
306
- }), _nodePath.default.join(dirname, '..', '..', 'README.md')];
298
+ return path.join(dirname, '..', '..', 'docs', extraFile);
299
+ }), path.join(dirname, '..', '..', 'README.md')];
307
300
  };
308
301
  const generateDocsAndWriteToDisk = async () => {
309
302
  const [docContents, docPaths] = await Promise.all([generateDocs(), getDocPaths()]);
310
303
  for (const [idx, docContent] of docContents.entries()) {
311
304
  const destPath = docPaths[idx];
312
- _nodeFs.default.writeFileSync(destPath, docContent);
305
+ fs.writeFileSync(destPath, docContent);
313
306
  }
314
307
  };
315
308
  const assertDocsAreUpToDate = async () => {
316
309
  const [docContents, docPaths] = await Promise.all([generateDocs(), getDocPaths()]);
317
310
  for (const [idx, docContent] of docContents.entries()) {
318
311
  const docPath = docPaths[idx];
319
- const isUpToDate = _nodeFs.default.readFileSync(docPath, 'utf8') === docContent;
312
+ const isUpToDate = fs.readFileSync(docPath, 'utf8') === docContent;
320
313
  if (!isUpToDate) {
321
314
  throw new Error('Docs are not up to date, please run `pnpm run create-docs` to update it.');
322
315
  }
@@ -337,6 +330,5 @@ const main = async () => {
337
330
  }
338
331
  };
339
332
  main();
340
- var _default = exports.default = generateDocs;
341
- module.exports = exports.default;
333
+ export default generateDocs;
342
334
  //# sourceMappingURL=generateDocs.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateDocs.cjs","names":["_index","_interopRequireDefault","require","_decamelize","_gitdown","_glob","_nodeFs","_nodePath","e","__esModule","default","_interopRequireWildcard","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","dirname","__dirname","escapeDescription","str","replaceAll","trimCode","code","lines","replace","trimEnd","split","firsLineIndentation","match","lastLineIndentation","length","firstIndentSize","lastIndentSize","map","line","index","lineIndentSize","Math","min","slice","join","formatCodeSnippet","setup","ruleName","paragraphs","push","settings","JSON","stringify","options","errors","message","getAssertions","assertionFiles","glob","path","resolve","filter","file","includes","toReversed","assertionNames","filePath","basename","assertionCodes","Promise","all","idx","codes","specifier","then","s","decamelize","separator","invalid","ignoreReadme","valid","assertions","fromEntries","assertionName","getSomeBranch","gitConfig","fs","readFileSync","toString","branch","exec","extraFiles","otherPaths","extraFile","generateDocs","schemas","tableRows","docContents","decamelized","plugin","rules","meta","schema","ruleDescription","docs","description","undefined","Error","fixable","recommended","configs","tsRecommended","tsRecommendedFlavor","row","docPath","gitdown","Gitdown","readFile","setConfig","gitinfo","defaultBranchName","gitPath","registerHelper","compile","toSorted","dc","convertFromSchema","jIdx","arr","nesting","ret","type","items","properties","property","innerSchema","entries","repeat","enum","val","anyOf","docContent","_assertionsBlock","passingFailing","ruleAssertions","getDocPaths","basePath","writeBasePath","docPaths","readdirSync","flatMap","docFile","innerBasePath","writeInnerBasePath","stat","statSync","isFile","isDirectory","innerDocFile","a","b","newA","newB","Boolean","generateDocsAndWriteToDisk","destPath","writeFileSync","assertDocsAreUpToDate","isUpToDate","main","hasCheckFlag","process","argv","error","console","exit","_default","exports","module"],"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
+ {"version":3,"file":"generateDocs.cjs","names":[],"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,27 +1,24 @@
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 }; }
1
+ import { generate } from '@es-joy/escodegen';
2
+ import decamelize from 'decamelize';
3
+ import { parse } from 'espree';
4
+ import esquery from 'esquery';
5
+ import { readdir, readFile, writeFile } from 'node:fs/promises';
6
+ import { join } from 'node:path';
10
7
  const rulesDir = './src/rules';
11
- const dirContents = await (0, _promises.readdir)(rulesDir);
8
+ const dirContents = await readdir(rulesDir);
12
9
  for (const file of dirContents) {
13
10
  if (!file.endsWith('.js')) {
14
11
  continue;
15
12
  }
16
- const fileContents = await (0, _promises.readFile)((0, _nodePath.join)(rulesDir, file), 'utf8');
13
+ const fileContents = await readFile(join(rulesDir, file), 'utf8');
17
14
  // console.log('file', file);
18
- const ast = (0, _espree.parse)(fileContents, {
15
+ const ast = parse(fileContents, {
19
16
  ecmaVersion: 2_024,
20
17
  sourceType: 'module'
21
18
  });
22
- const results = _esquery.default.query(ast, 'ExportDefaultDeclaration[declaration.callee.name="iterateJsdoc"]' + ' Property[key.name="meta"] Property[key.name="schema"]');
19
+ const results = esquery.query(ast, 'ExportDefaultDeclaration[declaration.callee.name="iterateJsdoc"]' + ' Property[key.name="meta"] Property[key.name="schema"]');
23
20
  if (results[0]?.value) {
24
- const schema = (0, _escodegen.generate)(results[0]?.value, {
21
+ const schema = generate(results[0]?.value, {
25
22
  format: {
26
23
  json: true,
27
24
  quotes: 'double'
@@ -49,14 +46,14 @@ for (const file of dirContents) {
49
46
  }
50
47
  }
51
48
  const obj = Array.isArray(parsed) ? parsed[0] : parsed;
52
- const hyphenatedRule = (0, _decamelize.default)(file, {
49
+ const hyphenatedRule = decamelize(file, {
53
50
  separator: '-'
54
51
  }).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 => {
52
+ const docPath = join('.README/rules', hyphenatedRule);
53
+ const ruleDocs = (await readFile(docPath, 'utf8')).replace(/(\|\s*Options\s*\|)([^\|]*)(\|)?/v, `$1${initial + Object.keys(obj.properties).map(key => {
57
54
  return `\`${key}\``;
58
55
  }).join(', ')}$3`);
59
- await (0, _promises.writeFile)(docPath, ruleDocs);
56
+ await writeFile(docPath, ruleDocs);
60
57
  }
61
58
  }
62
59
  //# sourceMappingURL=generateOptions.cjs.map