eslint-plugin-jsdoc 53.0.1 → 54.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/WarnSettings.cjs +35 -18
- package/dist/WarnSettings.cjs.map +1 -1
- package/dist/alignTransform.cjs +305 -224
- package/dist/alignTransform.cjs.map +1 -1
- package/dist/defaultTagOrder.cjs +43 -132
- package/dist/defaultTagOrder.cjs.map +1 -1
- package/dist/exportParser.cjs +696 -478
- package/dist/exportParser.cjs.map +1 -1
- package/dist/generateRule.cjs +242 -0
- package/dist/generateRule.cjs.map +1 -0
- package/dist/getDefaultTagStructureForMode.cjs +288 -184
- package/dist/getDefaultTagStructureForMode.cjs.map +1 -1
- package/dist/getJsdocProcessorPlugin.cjs +550 -364
- package/dist/getJsdocProcessorPlugin.cjs.map +1 -1
- package/dist/getJsdocProcessorPlugin.d.ts +65 -68
- package/dist/getJsdocProcessorPlugin.d.ts.map +1 -1
- package/dist/index.cjs +410 -2
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +17 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/iterateJsdoc.cjs +2005 -1539
- package/dist/iterateJsdoc.cjs.map +1 -1
- package/dist/iterateJsdoc.d.ts +350 -359
- package/dist/iterateJsdoc.d.ts.map +1 -1
- package/dist/jsdocUtils.cjs +1376 -1009
- package/dist/jsdocUtils.cjs.map +1 -1
- package/dist/rules/checkAccess.cjs +36 -29
- package/dist/rules/checkAccess.cjs.map +1 -1
- package/dist/rules/checkAlignment.cjs +54 -41
- package/dist/rules/checkAlignment.cjs.map +1 -1
- package/dist/rules/checkExamples.cjs +484 -327
- package/dist/rules/checkExamples.cjs.map +1 -1
- package/dist/rules/checkIndentation.cjs +65 -50
- package/dist/rules/checkIndentation.cjs.map +1 -1
- package/dist/rules/checkLineAlignment.cjs +311 -220
- package/dist/rules/checkLineAlignment.cjs.map +1 -1
- package/dist/rules/checkParamNames.cjs +335 -227
- package/dist/rules/checkParamNames.cjs.map +1 -1
- package/dist/rules/checkPropertyNames.cjs +106 -78
- package/dist/rules/checkPropertyNames.cjs.map +1 -1
- package/dist/rules/checkSyntax.cjs +34 -21
- package/dist/rules/checkSyntax.cjs.map +1 -1
- package/dist/rules/checkTagNames.cjs +210 -188
- package/dist/rules/checkTagNames.cjs.map +1 -1
- package/dist/rules/checkTemplateNames.cjs +178 -121
- package/dist/rules/checkTemplateNames.cjs.map +1 -1
- package/dist/rules/checkTypes.cjs +385 -291
- package/dist/rules/checkTypes.cjs.map +1 -1
- package/dist/rules/checkValues.cjs +146 -100
- package/dist/rules/checkValues.cjs.map +1 -1
- package/dist/rules/convertToJsdocComments.cjs +306 -228
- package/dist/rules/convertToJsdocComments.cjs.map +1 -1
- package/dist/rules/emptyTags.cjs +72 -62
- package/dist/rules/emptyTags.cjs.map +1 -1
- package/dist/rules/implementsOnClasses.cjs +56 -36
- package/dist/rules/implementsOnClasses.cjs.map +1 -1
- package/dist/rules/importsAsDependencies.cjs +99 -62
- package/dist/rules/importsAsDependencies.cjs.map +1 -1
- package/dist/rules/informativeDocs.cjs +142 -105
- package/dist/rules/informativeDocs.cjs.map +1 -1
- package/dist/rules/linesBeforeBlock.cjs +105 -70
- package/dist/rules/linesBeforeBlock.cjs.map +1 -1
- package/dist/rules/matchDescription.cjs +222 -160
- package/dist/rules/matchDescription.cjs.map +1 -1
- package/dist/rules/matchName.cjs +128 -73
- package/dist/rules/matchName.cjs.map +1 -1
- package/dist/rules/multilineBlocks.cjs +352 -235
- package/dist/rules/multilineBlocks.cjs.map +1 -1
- package/dist/rules/noBadBlocks.cjs +86 -63
- package/dist/rules/noBadBlocks.cjs.map +1 -1
- package/dist/rules/noBlankBlockDescriptions.cjs +57 -35
- package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -1
- package/dist/rules/noBlankBlocks.cjs +48 -26
- package/dist/rules/noBlankBlocks.cjs.map +1 -1
- package/dist/rules/noDefaults.cjs +79 -52
- package/dist/rules/noDefaults.cjs.map +1 -1
- package/dist/rules/noMissingSyntax.cjs +165 -115
- package/dist/rules/noMissingSyntax.cjs.map +1 -1
- package/dist/rules/noMultiAsterisks.cjs +89 -48
- package/dist/rules/noMultiAsterisks.cjs.map +1 -1
- package/dist/rules/noRestrictedSyntax.cjs +79 -45
- package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
- package/dist/rules/noTypes.cjs +80 -59
- package/dist/rules/noTypes.cjs.map +1 -1
- package/dist/rules/noUndefinedTypes.cjs +388 -297
- package/dist/rules/noUndefinedTypes.cjs.map +1 -1
- package/dist/rules/requireAsteriskPrefix.cjs +159 -108
- package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
- package/dist/rules/requireDescription.cjs +129 -89
- package/dist/rules/requireDescription.cjs.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.cjs +262 -201
- package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
- package/dist/rules/requireExample.cjs +104 -73
- package/dist/rules/requireExample.cjs.map +1 -1
- package/dist/rules/requireFileOverview.cjs +129 -75
- package/dist/rules/requireFileOverview.cjs.map +1 -1
- package/dist/rules/requireHyphenBeforeParamDescription.cjs +133 -85
- package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
- package/dist/rules/requireJsdoc.cjs +557 -384
- package/dist/rules/requireJsdoc.cjs.map +1 -1
- package/dist/rules/requireParam.cjs +526 -336
- package/dist/rules/requireParam.cjs.map +1 -1
- package/dist/rules/requireParamDescription.cjs +80 -55
- package/dist/rules/requireParamDescription.cjs.map +1 -1
- package/dist/rules/requireParamName.cjs +50 -32
- package/dist/rules/requireParamName.cjs.map +1 -1
- package/dist/rules/requireParamType.cjs +80 -55
- package/dist/rules/requireParamType.cjs.map +1 -1
- package/dist/rules/requireProperty.cjs +42 -31
- package/dist/rules/requireProperty.cjs.map +1 -1
- package/dist/rules/requirePropertyDescription.cjs +25 -17
- package/dist/rules/requirePropertyDescription.cjs.map +1 -1
- package/dist/rules/requirePropertyName.cjs +25 -17
- package/dist/rules/requirePropertyName.cjs.map +1 -1
- package/dist/rules/requirePropertyType.cjs +25 -17
- package/dist/rules/requirePropertyType.cjs.map +1 -1
- package/dist/rules/requireReturns.cjs +203 -125
- package/dist/rules/requireReturns.cjs.map +1 -1
- package/dist/rules/requireReturnsCheck.cjs +103 -60
- package/dist/rules/requireReturnsCheck.cjs.map +1 -1
- package/dist/rules/requireReturnsDescription.cjs +54 -39
- package/dist/rules/requireReturnsDescription.cjs.map +1 -1
- package/dist/rules/requireReturnsType.cjs +50 -32
- package/dist/rules/requireReturnsType.cjs.map +1 -1
- package/dist/rules/requireTemplate.cjs +178 -119
- package/dist/rules/requireTemplate.cjs.map +1 -1
- package/dist/rules/requireThrows.cjs +95 -61
- package/dist/rules/requireThrows.cjs.map +1 -1
- package/dist/rules/requireYields.cjs +166 -106
- package/dist/rules/requireYields.cjs.map +1 -1
- package/dist/rules/requireYieldsCheck.cjs +152 -96
- package/dist/rules/requireYieldsCheck.cjs.map +1 -1
- package/dist/rules/sortTags.cjs +444 -258
- package/dist/rules/sortTags.cjs.map +1 -1
- package/dist/rules/tagLines.cjs +266 -179
- package/dist/rules/tagLines.cjs.map +1 -1
- package/dist/rules/textEscaping.cjs +127 -92
- package/dist/rules/textEscaping.cjs.map +1 -1
- package/dist/rules/validTypes.cjs +265 -252
- package/dist/rules/validTypes.cjs.map +1 -1
- package/dist/tagNames.cjs +170 -134
- package/dist/tagNames.cjs.map +1 -1
- package/dist/utils/hasReturnValue.cjs +474 -246
- package/dist/utils/hasReturnValue.cjs.map +1 -1
- package/package.json +24 -40
- package/src/WarnSettings.js +34 -0
- package/src/alignTransform.js +358 -0
- package/src/defaultTagOrder.js +169 -0
- package/src/exportParser.js +978 -0
- package/src/getDefaultTagStructureForMode.js +969 -0
- package/src/getJsdocProcessorPlugin.js +672 -0
- package/src/index.js +530 -0
- package/src/iterateJsdoc.js +2541 -0
- package/src/jsdocUtils.js +1896 -0
- package/src/rules/checkAccess.js +45 -0
- package/src/rules/checkAlignment.js +63 -0
- package/src/rules/checkExamples.js +589 -0
- package/src/rules/checkIndentation.js +75 -0
- package/src/rules/checkLineAlignment.js +372 -0
- package/src/rules/checkParamNames.js +474 -0
- package/src/rules/checkPropertyNames.js +152 -0
- package/src/rules/checkSyntax.js +30 -0
- package/src/rules/checkTagNames.js +314 -0
- package/src/rules/checkTemplateNames.js +204 -0
- package/src/rules/checkTypes.js +535 -0
- package/src/rules/checkValues.js +248 -0
- package/src/rules/convertToJsdocComments.js +398 -0
- package/src/rules/emptyTags.js +98 -0
- package/src/rules/implementsOnClasses.js +64 -0
- package/src/rules/importsAsDependencies.js +133 -0
- package/src/rules/informativeDocs.js +189 -0
- package/src/rules/linesBeforeBlock.js +134 -0
- package/src/rules/matchDescription.js +286 -0
- package/src/rules/matchName.js +151 -0
- package/src/rules/multilineBlocks.js +493 -0
- package/src/rules/noBadBlocks.js +119 -0
- package/src/rules/noBlankBlockDescriptions.js +69 -0
- package/src/rules/noBlankBlocks.js +53 -0
- package/src/rules/noDefaults.js +85 -0
- package/src/rules/noMissingSyntax.js +195 -0
- package/src/rules/noMultiAsterisks.js +134 -0
- package/src/rules/noRestrictedSyntax.js +91 -0
- package/src/rules/noTypes.js +93 -0
- package/src/rules/noUndefinedTypes.js +543 -0
- package/src/rules/requireAsteriskPrefix.js +190 -0
- package/src/rules/requireDescription.js +161 -0
- package/src/rules/requireDescriptionCompleteSentence.js +335 -0
- package/src/rules/requireExample.js +118 -0
- package/src/rules/requireFileOverview.js +154 -0
- package/src/rules/requireHyphenBeforeParamDescription.js +176 -0
- package/src/rules/requireJsdoc.js +743 -0
- package/src/rules/requireParam.js +602 -0
- package/src/rules/requireParamDescription.js +89 -0
- package/src/rules/requireParamName.js +55 -0
- package/src/rules/requireParamType.js +89 -0
- package/src/rules/requireProperty.js +48 -0
- package/src/rules/requirePropertyDescription.js +25 -0
- package/src/rules/requirePropertyName.js +25 -0
- package/src/rules/requirePropertyType.js +25 -0
- package/src/rules/requireReturns.js +238 -0
- package/src/rules/requireReturnsCheck.js +145 -0
- package/src/rules/requireReturnsDescription.js +59 -0
- package/src/rules/requireReturnsType.js +51 -0
- package/src/rules/requireTemplate.js +201 -0
- package/src/rules/requireThrows.js +111 -0
- package/src/rules/requireYields.js +216 -0
- package/src/rules/requireYieldsCheck.js +208 -0
- package/src/rules/sortTags.js +558 -0
- package/src/rules/tagLines.js +359 -0
- package/src/rules/textEscaping.js +154 -0
- package/src/rules/validTypes.js +401 -0
- package/src/tagNames.js +238 -0
- package/src/utils/hasReturnValue.js +572 -0
- package/dist/WarnSettings.js +0 -20
- package/dist/WarnSettings.js.map +0 -1
- package/dist/_virtual/rolldown_runtime.cjs +0 -32
- package/dist/_virtual/rolldown_runtime.js +0 -11
- package/dist/alignTransform.js +0 -241
- package/dist/alignTransform.js.map +0 -1
- package/dist/defaultTagOrder.js +0 -134
- package/dist/defaultTagOrder.js.map +0 -1
- package/dist/exportParser.js +0 -518
- package/dist/exportParser.js.map +0 -1
- package/dist/getDefaultTagStructureForMode.js +0 -188
- package/dist/getDefaultTagStructureForMode.js.map +0 -1
- package/dist/getJsdocProcessorPlugin.d.cts +0 -70
- package/dist/getJsdocProcessorPlugin.d.cts.map +0 -1
- package/dist/getJsdocProcessorPlugin.js +0 -383
- package/dist/getJsdocProcessorPlugin.js.map +0 -1
- package/dist/index.d.cts +0 -2
- package/dist/index.js +0 -3
- package/dist/iterateJsdoc.d.cts +0 -472
- package/dist/iterateJsdoc.d.cts.map +0 -1
- package/dist/iterateJsdoc.js +0 -1628
- package/dist/iterateJsdoc.js.map +0 -1
- package/dist/jsdocUtils.js +0 -1123
- package/dist/jsdocUtils.js.map +0 -1
- package/dist/plugin.cjs +0 -427
- package/dist/plugin.cjs.map +0 -1
- package/dist/plugin.js +0 -427
- package/dist/plugin.js.map +0 -1
- package/dist/rules/checkAccess.js +0 -33
- package/dist/rules/checkAccess.js.map +0 -1
- package/dist/rules/checkAlignment.js +0 -47
- package/dist/rules/checkAlignment.js.map +0 -1
- package/dist/rules/checkExamples.js +0 -348
- package/dist/rules/checkExamples.js.map +0 -1
- package/dist/rules/checkIndentation.js +0 -59
- package/dist/rules/checkIndentation.js.map +0 -1
- package/dist/rules/checkLineAlignment.js +0 -229
- package/dist/rules/checkLineAlignment.js.map +0 -1
- package/dist/rules/checkParamNames.js +0 -237
- package/dist/rules/checkParamNames.js.map +0 -1
- package/dist/rules/checkPropertyNames.js +0 -88
- package/dist/rules/checkPropertyNames.js.map +0 -1
- package/dist/rules/checkSyntax.js +0 -25
- package/dist/rules/checkSyntax.js.map +0 -1
- package/dist/rules/checkTagNames.js +0 -191
- package/dist/rules/checkTagNames.js.map +0 -1
- package/dist/rules/checkTemplateNames.js +0 -124
- package/dist/rules/checkTemplateNames.js.map +0 -1
- package/dist/rules/checkTypes.js +0 -299
- package/dist/rules/checkTypes.js.map +0 -1
- package/dist/rules/checkValues.js +0 -103
- package/dist/rules/checkValues.js.map +0 -1
- package/dist/rules/convertToJsdocComments.js +0 -231
- package/dist/rules/convertToJsdocComments.js.map +0 -1
- package/dist/rules/emptyTags.js +0 -67
- package/dist/rules/emptyTags.js.map +0 -1
- package/dist/rules/implementsOnClasses.js +0 -40
- package/dist/rules/implementsOnClasses.js.map +0 -1
- package/dist/rules/importsAsDependencies.js +0 -68
- package/dist/rules/importsAsDependencies.js.map +0 -1
- package/dist/rules/informativeDocs.js +0 -110
- package/dist/rules/informativeDocs.js.map +0 -1
- package/dist/rules/linesBeforeBlock.js +0 -75
- package/dist/rules/linesBeforeBlock.js.map +0 -1
- package/dist/rules/matchDescription.js +0 -167
- package/dist/rules/matchDescription.js.map +0 -1
- package/dist/rules/matchName.js +0 -77
- package/dist/rules/matchName.js.map +0 -1
- package/dist/rules/multilineBlocks.js +0 -245
- package/dist/rules/multilineBlocks.js.map +0 -1
- package/dist/rules/noBadBlocks.js +0 -68
- package/dist/rules/noBadBlocks.js.map +0 -1
- package/dist/rules/noBlankBlockDescriptions.js +0 -41
- package/dist/rules/noBlankBlockDescriptions.js.map +0 -1
- package/dist/rules/noBlankBlocks.js +0 -30
- package/dist/rules/noBlankBlocks.js.map +0 -1
- package/dist/rules/noDefaults.js +0 -56
- package/dist/rules/noDefaults.js.map +0 -1
- package/dist/rules/noMissingSyntax.js +0 -126
- package/dist/rules/noMissingSyntax.js.map +0 -1
- package/dist/rules/noMultiAsterisks.js +0 -58
- package/dist/rules/noMultiAsterisks.js.map +0 -1
- package/dist/rules/noRestrictedSyntax.js +0 -49
- package/dist/rules/noRestrictedSyntax.js.map +0 -1
- package/dist/rules/noTypes.js +0 -65
- package/dist/rules/noTypes.js.map +0 -1
- package/dist/rules/noUndefinedTypes.js +0 -303
- package/dist/rules/noUndefinedTypes.js.map +0 -1
- package/dist/rules/requireAsteriskPrefix.js +0 -112
- package/dist/rules/requireAsteriskPrefix.js.map +0 -1
- package/dist/rules/requireDescription.js +0 -95
- package/dist/rules/requireDescription.js.map +0 -1
- package/dist/rules/requireDescriptionCompleteSentence.js +0 -220
- package/dist/rules/requireDescriptionCompleteSentence.js.map +0 -1
- package/dist/rules/requireExample.js +0 -77
- package/dist/rules/requireExample.js.map +0 -1
- package/dist/rules/requireFileOverview.js +0 -81
- package/dist/rules/requireFileOverview.js.map +0 -1
- package/dist/rules/requireHyphenBeforeParamDescription.js +0 -89
- package/dist/rules/requireHyphenBeforeParamDescription.js.map +0 -1
- package/dist/rules/requireJsdoc.js +0 -404
- package/dist/rules/requireJsdoc.js.map +0 -1
- package/dist/rules/requireParam.js +0 -344
- package/dist/rules/requireParam.js.map +0 -1
- package/dist/rules/requireParamDescription.js +0 -59
- package/dist/rules/requireParamDescription.js.map +0 -1
- package/dist/rules/requireParamName.js +0 -36
- package/dist/rules/requireParamName.js.map +0 -1
- package/dist/rules/requireParamType.js +0 -59
- package/dist/rules/requireParamType.js.map +0 -1
- package/dist/rules/requireProperty.js +0 -35
- package/dist/rules/requireProperty.js.map +0 -1
- package/dist/rules/requirePropertyDescription.js +0 -21
- package/dist/rules/requirePropertyDescription.js.map +0 -1
- package/dist/rules/requirePropertyName.js +0 -21
- package/dist/rules/requirePropertyName.js.map +0 -1
- package/dist/rules/requirePropertyType.js +0 -21
- package/dist/rules/requirePropertyType.js.map +0 -1
- package/dist/rules/requireReturns.js +0 -131
- package/dist/rules/requireReturns.js.map +0 -1
- package/dist/rules/requireReturnsCheck.js +0 -66
- package/dist/rules/requireReturnsCheck.js.map +0 -1
- package/dist/rules/requireReturnsDescription.js +0 -43
- package/dist/rules/requireReturnsDescription.js.map +0 -1
- package/dist/rules/requireReturnsType.js +0 -36
- package/dist/rules/requireReturnsType.js.map +0 -1
- package/dist/rules/requireTemplate.js +0 -122
- package/dist/rules/requireTemplate.js.map +0 -1
- package/dist/rules/requireThrows.js +0 -67
- package/dist/rules/requireThrows.js.map +0 -1
- package/dist/rules/requireYields.js +0 -115
- package/dist/rules/requireYields.js.map +0 -1
- package/dist/rules/requireYieldsCheck.js +0 -105
- package/dist/rules/requireYieldsCheck.js.map +0 -1
- package/dist/rules/sortTags.js +0 -262
- package/dist/rules/sortTags.js.map +0 -1
- package/dist/rules/tagLines.js +0 -183
- package/dist/rules/tagLines.js.map +0 -1
- package/dist/rules/textEscaping.js +0 -102
- package/dist/rules/textEscaping.js.map +0 -1
- package/dist/rules/validTypes.js +0 -259
- package/dist/rules/validTypes.js.map +0 -1
- package/dist/tagNames.js +0 -144
- package/dist/tagNames.js.map +0 -1
- package/dist/utils/hasReturnValue.js +0 -265
- package/dist/utils/hasReturnValue.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exportParser.cjs","names":["debug"],"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/* eslint-disable complexity -- Temporary */\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 /* eslint-enable complexity -- Temporary */\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').PrivateIdentifier} */\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/* eslint-disable complexity -- Temporary */\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 /* eslint-enable complexity -- Temporary */\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 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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"}
|
|
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/* eslint-disable complexity -- Temporary */\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 /* eslint-enable complexity -- Temporary */\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').PrivateIdentifier} */\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/* eslint-disable complexity -- Temporary */\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 /* eslint-enable complexity -- Temporary */\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 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":";;;;;;AAAA,IAAAA,aAAA,GAAAC,OAAA;AAGA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAgC,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,MAAMG,KAAK,GAAG,IAAAC,cAAW,EAAC,oBAAoB,CAAC;;AAE/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAMC,UAAU,GAAG,SAAAA,CAAA,EAAY;EAC7B,OAAO;IACLC,KAAK,EAAE,CAAC;EACV,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMC,cAAc,GAAG,SAAAA,CAAUC,MAAM,EAAE;EACvC;EACA,IAAI,CAACA,MAAM,EAAE;IACX,OAAO,IAAI;EACb;;EAEA;EACA,IAAIA,MAAM,CAACC,IAAI,KAAK,SAAS,EAAE;IAC7B,OAAO,0BAA4BD,MAAM,CAACE,KAAK,CAAEA,KAAK;EACxD;EACA;EACA;EACA,OAAO,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,aAAa,GAAG,SAAAA,CAAUC,IAAI,EAAEC,OAAO,EAAEC,KAAK,EAAEC,IAAI,EAAE;EAC1D,IAAIA,IAAI,CAACC,gBAAgB,EAAE;IACzB;IACA,MAAMC,iBAAiB,GAAGZ,UAAU,CAAC,CAAC;IACtCY,iBAAiB,CAACR,IAAI,GAAG,SAAS;IAClCQ,iBAAiB,CAACP,KAAK,GAAG;MACxBA,KAAK,EAAEE,IAAI,CAACM;IACd,CAAC;IAED,OAAOD,iBAAiB;EAC1B;;EAEA;EACA,MAAME,KAAK,GAAGL,KAAK,IAAID,OAAO;;EAE9B;EACA,IAAIM,KAAK,CAACb,KAAK,CAACM,IAAI,CAACM,IAAI,CAAC,EAAE;IAC1B,OAAOC,KAAK,CAACb,KAAK,CAACM,IAAI,CAACM,IAAI,CAAC;EAC/B;;EAEA;EACA;EACA,IAAIL,OAAO,CAACP,KAAK,CAACM,IAAI,CAACM,IAAI,CAAC,EAAE;IAC5B,OAAOL,OAAO,CAACP,KAAK,CAACM,IAAI,CAACM,IAAI,CAAC;EACjC;EAEA,OAAO,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAIE,YAAY,CAAC,CAAC;;AAElB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,SAAS,GAAG,SAAAA,CAAUT,IAAI,EAAEC,OAAO,EAAEC,KAAK,EAAEQ,GAAG,EAAE;EACrD;EACA,MAAMP,IAAI,GAAGO,GAAG,IAAI,CAAC,CAAC;EACtB;EACA,QAAQV,IAAI,CAACH,IAAI;IACf;IACA,KAAK,yBAAyB;;IAE9B;IACA,KAAK,kBAAkB;IAEvB,KAAK,qBAAqB;IAE1B,KAAK,oBAAoB;IACzB,KAAK,mBAAmB;IACxB,KAAK,wBAAwB;IAC7B,KAAK,wBAAwB;MAAE;QAC7B,MAAMc,GAAG,GAAGlB,UAAU,CAAC,CAAC;QACxBkB,GAAG,CAACjB,KAAK,CAACkB,SAAS,GAAGnB,UAAU,CAAC,CAAC;QAClCkB,GAAG,CAACjB,KAAK,CAACkB,SAAS,CAACf,IAAI,GAAG,QAAQ;QACnCc,GAAG,CAACd,IAAI,GAAG,QAAQ;QACnBc,GAAG,CAACb,KAAK,GAAGE,IAAI;QAEhB,OAAOW,GAAG;MACZ;IAEA,KAAK,sBAAsB;MAAE;QAC3B,OAAOH,YAAY,CACnB;QACGR,IAAI,CAACa,IAAI,EACVZ,OAAO,EACP;QACCD,IAAI,CAACc,KAAK,EACXZ,KAAK,EACLC,IACF,CAAC;MACH;IAEA,KAAK,WAAW;MAAE;QAChB,MAAMQ,GAAG,GAAGlB,UAAU,CAAC,CAAC;QACxB,KAAK,MAAMsB,MAAM,IAAIf,IAAI,CAACgB,IAAI,EAAE;UAC9B;UACA,IAAI,EAAE,KAAK,IAAID,MAAM,CAAC,EAAE;YACtB;UACF;UAEAJ,GAAG,CAACjB,KAAK,CACT,0CAA2C,CACzC,gDACIqB,MAAM,CACNE,GAAG,EACLX,IAAI,CACP,GAAGb,UAAU,CAAC,CAAC;UAChB;UAA6CkB,GAAG,CAACjB,KAAK,CACtD,0CAA2C,CACzC,gDACIqB,MAAM,CACNE,GAAG,EACLX,IAAI,CACP,CAACT,IAAI,GAAG,QAAQ;UACjB;UAA6Cc,GAAG,CAACjB,KAAK,CACtD,0CAA2C,CACzC,gDACIqB,MAAM,CACNE,GAAG,EACLX,IAAI,CACP,CAACR,KAAK,GAAG;UACV,gDAAkDiB,MAAM,CAAEjB,KACzD;QACH;QAEAa,GAAG,CAACd,IAAI,GAAG,QAAQ;QACnBc,GAAG,CAACb,KAAK,GAAGE,IAAI,CAACkB,MAAM;QAEvB,OAAOP,GAAG;MACZ;IAEA,KAAK,iBAAiB;MAAE;QACtB,OAAOF,SAAS,CAChB;QACGT,IAAI,CAACgB,IAAI,EACVf,OAAO,EACPC,KAAK,EACLC,IACF,CAAC;MACH;IAEA,KAAK,YAAY;MAAE;QACjB,OAAOJ,aAAa,CAACC,IAAI,EAAEC,OAAO,EAAEC,KAAK,EAAEC,IAAI,CAAC;MAClD;IAEA,KAAK,SAAS;MAAE;QACd,MAAMQ,GAAG,GAAGlB,UAAU,CAAC,CAAC;QACxBkB,GAAG,CAACd,IAAI,GAAG,SAAS;QACpBc,GAAG,CAACb,KAAK,GAAGE,IAAI;QAEhB,OAAOW,GAAG;MACZ;IAEA,KAAK,kBAAkB;MAAE;QACvB,MAAMQ,GAAG,GAAGV,SAAS,CACrB;QACGT,IAAI,CAACoB,MAAM,EACZnB,OAAO,EACPC,KAAK,EACLC,IACF,CAAC;QACD,MAAMkB,cAAc,GAAGZ,SAAS,CAChC;QACGT,IAAI,CAACsB,QAAQ,EACdrB,OAAO,EACPC,KAAK,EACL;UACEE,gBAAgB,EAAE,CAACJ,IAAI,CAACuB;QAC1B,CACF,CAAC;QACD,MAAMC,aAAa,GAAG7B,cAAc,CAAC0B,cAAc,CAAC;;QAEpD;QACA,IAAIF,GAAG,IAAIK,aAAa,IAAIL,GAAG,CAACzB,KAAK,CAAC8B,aAAa,CAAC,EAAE;UACpD,MAAMjB,KAAK,GAAGY,GAAG,CAACzB,KAAK,CAAC8B,aAAa,CAAC;UAEtC,OAAOjB,KAAK;QACd;QACA;QACA;AACN;AACA;AACA;AACA;AACA;QAEM;QACAhB,KAAK,CAAC,sCACN,iDAAmDS,IAAI,CAACsB,QAAQ,CAAEhB,IAAI,EACpE,CAAC;QACH;QACA,OAAO,IAAI;MACb;IAEA,KAAK,kBAAkB;MAAE;QACvB,MAAMK,GAAG,GAAGlB,UAAU,CAAC,CAAC;QACxBkB,GAAG,CAACd,IAAI,GAAG,QAAQ;QACnB,KAAK,MAAM4B,IAAI,IAAIzB,IAAI,CAAC0B,UAAU,EAAE;UAClC,IAAI;UACJ;UACE,4BAA4B;UAE5B;UACA,eAAe,CAChB,CAACC,QAAQ,CAACF,IAAI,CAAC5B,IAAI,CAAC,EAAE;YACrB;UACF;UAEA,MAAM+B,OAAO,GAAGnB,SAAS,CACzB;UACE;UACGgB,IAAI,CAAE3B,KAAK,EAEdG,OAAO,EACPC,KAAK,EACLC,IACF,CAAC;UACD;UACA,IAAIyB,OAAO,EAAE;YACXjB,GAAG,CAACjB,KAAK,CACT;YACE,CACA,wCAA0C+B,IAAI,CAAER,GAAG,EACjDX,IAAI,CACP,GAAGsB,OAAO;UACb;QACF;QAEA,OAAOjB,GAAG;MACZ;EACF;EACA;EACA;EACA,OAAO,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMkB,iBAAiB,GAAG,SAAAA,CAAUtB,KAAK,EAAED,IAAI,EAAER,KAAK,EAAEG,OAAO,EAAE6B,QAAQ,EAAE;EACzEvB,KAAK,CAACb,KAAK,CAACY,IAAI,CAAC,GAAGR,KAAK;EACzB,IAAIgC,QAAQ,IAAI7B,OAAO,CAACP,KAAK,CAACqC,MAAM,IAAI9B,OAAO,CAACP,KAAK,CAACqC,MAAM,CAACC,OAAO,EAAE;IACpE/B,OAAO,CAACP,KAAK,CAACqC,MAAM,CAACrC,KAAK,CAACY,IAAI,CAAC,GAAGR,KAAK;EAC1C;AACF,CAAC;AAEDU,YAAY,GAAG,SAAAA,CAAUR,IAAI,EAAEC,OAAO,EAAEH,KAAK,EAAEI,KAAK,EAAE4B,QAAQ,EAAE;EAC9D,MAAMvB,KAAK,GAAGL,KAAK,IAAID,OAAO;EAC9B;EACA,IAAI,CAACD,IAAI,EAAE;IACT,OAAO,IAAI;EACb;EAEA,IAAIJ,MAAM;EACV,QAAQI,IAAI,CAACH,IAAI;IACf,KAAK,kBAAkB;IACrB;IACA;IACA;IACF,KAAK,qBAAqB;IAAE,KAAK,mBAAmB;IAClD;IACA;IACA;IACF,KAAK,wBAAwB;IAAE,KAAK,wBAAwB;MAAE;QAC5D,MAAMoC,GAAG,GAAG,gDAAkDjC,IAAK;QACnE;QACA,IAAIiC,GAAG,CAACC,EAAE,IAAID,GAAG,CAACC,EAAE,CAACrC,IAAI,KAAK,YAAY,EAAE;UAC1C,OAAOW,YAAY,CACnB,yCAA2CyB,GAAG,CAACC,EAAE,EAC/CjC,OAAO,EACPD,IAAI,EACJC,OACF,CAAC;QACH;QACA;QACA;QACA;MACF;IAEA,KAAK,YAAY;MAAE;QACjB,MAAMgC,GAAG,GAAG,0CAA4CjC,IAAK;QAC7D,IAAIF,KAAK,EAAE;UACT,MAAMqC,WAAW,GAAG1B,SAAS,CAACX,KAAK,EAAEG,OAAO,EAAEM,KAAK,CAAC;UACpD;UACA,IAAI4B,WAAW,EAAE;YACfN,iBAAiB,CAACtB,KAAK,EAAE0B,GAAG,CAAC3B,IAAI,EAAE6B,WAAW,EAAElC,OAAO,EAAE6B,QAAQ,CAAC;YAElE,OAAOvB,KAAK,CAACb,KAAK,CAACuC,GAAG,CAAC3B,IAAI,CAAC;UAC9B;UACA;UACA;UACAf,KAAK,CAAC,yCAAyC,EAAE0C,GAAG,CAAC3B,IAAI,CAAC;QAC5D,CAAC,MAAM;UACLuB,iBAAiB,CAACtB,KAAK,EAAE0B,GAAG,CAAC3B,IAAI,EAAEb,UAAU,CAAC,CAAC,EAAEQ,OAAO,EAAE6B,QAAQ,CAAC;UAEnE,OAAOvB,KAAK,CAACb,KAAK,CAACuC,GAAG,CAAC3B,IAAI,CAAC;QAC9B;QACA;QACA;QACA;MACF;IAEA,KAAK,kBAAkB;MAAE;QACvB,MAAM2B,GAAG,GAAG,gDAAkDjC,IAAK;QACnEJ,MAAM,GAAGa,SAAS,CAClB,yCAA2CwB,GAAG,CAACb,MAAM,EAAGnB,OAAO,EAAEM,KACjE,CAAC;QAED,MAAMc,cAAc,GAAGZ,SAAS,CAChC,yCAA2CwB,GAAG,CAACX,QAAQ,EACrDrB,OAAO,EACPM,KAAK,EACL;UACEH,gBAAgB,EAAE,CAAC6B,GAAG,CAACV;QACzB,CACF,CAAC;QACD,MAAMC,aAAa,GAAG7B,cAAc,CAAC0B,cAAc,CAAC;QACpD,IAAIzB,MAAM,IAAI4B,aAAa,EAAE;UAC3BK,iBAAiB,CAACjC,MAAM,EAAE4B,aAAa,EAAEf,SAAS,CAClD;UACGX,KAAK,EAAGG,OAAO,EAAEM,KACpB,CAAC,EAAEN,OAAO,EAAE6B,QAAQ,CAAC;UACrB,OAAOlC,MAAM,CAACF,KAAK,CAAC8B,aAAa,CAAC;QACpC;QAEAjC,KAAK,CACH,sCAAsC,EACtC,0CACE0C,GAAG,CAACX,QAAQ,CACZhB,IACJ,CAAC;QACD;MACF;EACF;EAEA,OAAO,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM8B,aAAa,GAAG,SAAAA,CAAUpC,IAAI,EAAEC,OAAO,EAAEE,IAAI,EAAE;EACnD,QAAQH,IAAI,CAACH,IAAI;IACf,KAAK,wBAAwB;MAAE;QAC7B,IAAIG,IAAI,CAACqC,WAAW,EAAE;UACpBD,aAAa,CACb;UACGpC,IAAI,CAACqC,WAAW,EACjBpC,OAAO,EACPE,IACF,CAAC;QACH;QAEA;MACF;IAEA,KAAK,qBAAqB;MAAE;QAC1BiC,aAAa,CACb;QACGpC,IAAI,CAACsC,UAAU,EAChBrC,OAAO,EACPE,IACF,CAAC;QACD;MACF;IAEA,KAAK,SAAS;MAAE;QACd,KAAK,MAAMoC,SAAS,IAAIvC,IAAI,CAACgB,IAAI,EAAE;UACjCoB,aAAa,CACb;UACGG,SAAS,EACVtC,OAAO,EACPE,IACF,CAAC;QACH;QAEA;MACF;IAEA,KAAK,qBAAqB;MAAE;QAC1B,KAAK,MAAMkC,WAAW,IAAIrC,IAAI,CAACwC,YAAY,EAAE;UAC7C;UACE,MAAM5C,MAAM,GAAGY,YAAY,CAC3B;UACG6B,WAAW,CAACH,EAAE,EACfjC,OAAO,EACP,IAAI,EACJA,OACF,CAAC;UACD,IAAIE,IAAI,CAACsC,UAAU,IAAIzC,IAAI,CAAC0C,IAAI,KAAK,KAAK,IAAIzC,OAAO,CAACP,KAAK,CAACqC,MAAM,EAAE;YACpE;YACE9B,OAAO,CAACP,KAAK,CAACqC,MAAM,CAACrC,KAAK,CAC1B;YACG2C,WAAW,CAACH,EAAE,CAAE5B,IAAI,CACtB,GAAGV,MAAM;UACZ;QACF;QAEA;MACF;EACF;AACF,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM+C,YAAY,GAAG,SAAAA,CAAU3C,IAAI,EAAEC,OAAO,EAAES,GAAG,EAAEkC,QAAQ,EAAE;EAC3D;EACA;EACA,MAAMzC,IAAI,GAAGO,GAAG,IAAI,CAAC,CAAC;EACtB;EACA,QAAQV,IAAI,CAACH,IAAI;IACf,KAAK,sBAAsB;MAAE;QAC3BW,YAAY,CACZ;QACGR,IAAI,CAACa,IAAI,EACVZ,OAAO,EACP;QACCD,IAAI,CAACc,KACR,CAAC;QACD;MACF;IAEA,KAAK,kBAAkB;MAAE;QACvBN,YAAY,CACZ,8CAAgDR,IAAI,CAACkC,EAAE,EACrDjC,OAAO,EACP,yCAA2CD,IAAI,CAACgB,IAAI,EACpDf,OACF,CAAC;QACD;MACF;IAEA,KAAK,0BAA0B;MAAE;QAC/B,MAAML,MAAM,GAAGY,YAAY,CAC3B;QACGR,IAAI,CAACqC,WAAW,EACjBpC,OAAO,EACP;QACCD,IAAI,CAACqC,WACR,CAAC;QACD,IAAIzC,MAAM,EAAE;UACVA,MAAM,CAACiD,QAAQ,GAAG,IAAI;UACtB;QACF,CAAC,MAAM;UACP;UACE5C,OAAO,CAAC6C,iBAAiB,GAAG;UAC1B9C,IAAI,CAACqC,WACN;QACH;QAEA;MACF;IAEA,KAAK,wBAAwB;MAAE;QAC7B,IAAIrC,IAAI,CAACqC,WAAW,EAAE;UACpB,IAAIrC,IAAI,CAACqC,WAAW,CAACxC,IAAI,KAAK,qBAAqB,EAAE;YACnD8C,YAAY,CACZ;YACG3C,IAAI,CAACqC,WAAW,EACjBpC,OAAO,EACPE,IAAI,EACJ,IACF,CAAC;UACH,CAAC,MAAM;YACL,MAAMP,MAAM,GAAGY,YAAY,CAC3B;YACGR,IAAI,CAACqC,WAAW,EACjBpC,OAAO,EACP;YACCD,IAAI,CAACqC,WACR,CAAC;YACD;YACA,IAAIzC,MAAM,EAAE;cACVA,MAAM,CAACiD,QAAQ,GAAG,IAAI;YACxB;UACF;QACF;QAEA,KAAK,MAAME,SAAS,IAAI/C,IAAI,CAACgD,UAAU,EAAE;UACvCL,YAAY,CACZ;UACGI,SAAS,EACV9C,OAAO,EACPE,IACF,CAAC;QACH;QAEA;MACF;IAEA,KAAK,iBAAiB;MAAE;QACtB,MAAMP,MAAM,GAAGa,SAAS,CACxB;QACGT,IAAI,CAACiD,KAAK,EACXhD,OAAO,EACPA,OACF,CAAC;QACD;QACA,IAAIL,MAAM,EAAE;UACVA,MAAM,CAACiD,QAAQ,GAAG,IAAI;QACxB;QAEA;MACF;IAEA,KAAK,qBAAqB;MAAE;QAC1BF,YAAY,CACZ;QACG3C,IAAI,CAACsC,UAAU,EAChBrC,OAAO,EACPE,IACF,CAAC;QACD;MACF;IAEA,KAAK,qBAAqB;IAE1B,KAAK,wBAAwB;MAAE;QAC/B;QACE,IAAI,0CAA4CH,IAAI,CAACkC,EAAE,CAAErC,IAAI,KAAK,YAAY,EAAE;UAC9EW,YAAY,CACZ;UACGR,IAAI,CAACkC,EAAE,EACRjC,OAAO,EACPD,IAAI,EACJC,OAAO,EACP,IACF,CAAC;QACH;QAEA;MACF;IAEA,KAAK,SAAS;MAAE;QACd,IAAIE,IAAI,CAAC+C,aAAa,EAAE;UACtB,OAAO,KAAK;QACd;QAEA,KAAK,MAAMX,SAAS,IAAIvC,IAAI,CAACgB,IAAI,EAAE;UACjC2B,YAAY,CACZ;UACGJ,SAAS,EACVtC,OAAO,EACPE,IACF,CAAC;QACH;QAEA;MACF;IAEA,KAAK,qBAAqB;MAAE;QAC1B,KAAK,MAAMkC,WAAW,IAAIrC,IAAI,CAACwC,YAAY,EAAE;UAC3C,MAAMV,QAAQ,GAAGqB,OAAO,CAAChD,IAAI,CAACsC,UAAU,IAAIzC,IAAI,CAAC0C,IAAI,KAAK,KAAK,IAAIzC,OAAO,CAACP,KAAK,CAACqC,MAAM,CAAC;UACxF,MAAMnC,MAAM,GAAGY,YAAY,CAC3B;UACG6B,WAAW,CAACH,EAAE,EACfjC,OAAO,EACP;UACCoC,WAAW,CAACe,IAAI,EACjBnD,OAAO,EACP6B,QACF,CAAC;UACD,IAAIlC,MAAM,IAAIgD,QAAQ,EAAE;YACtBhD,MAAM,CAACiD,QAAQ,GAAG,IAAI;UACxB;QACF;QAEA;MACF;IAEA;MAAS;QACT;QACE,OAAO,KAAK;MACd;EACF;EAEA,OAAO,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMQ,QAAQ,GAAG,SAAAA,CAAUrD,IAAI,EAAEO,KAAK,EAAE+C,KAAK,EAAE;EAC7C,IAAIC,UAAU,GAAGD,KAAK,IAAI,EAAE;EAC5B,IAAI,CAAC/C,KAAK,IAAIgD,UAAU,CAAC5B,QAAQ,CAACpB,KAAK,CAAC,EAAE;IACxC,OAAO,KAAK;EACd;EAEAgD,UAAU,GAAGA,UAAU,CAACC,KAAK,CAAC,CAAC;EAC/BD,UAAU,CAACE,IAAI,CAAClD,KAAK,CAAC;EAEtB,IACE,OAAOA,KAAK,KAAK,QAAQ,IACzB,MAAM,IAAIA,KAAK,KACdA,KAAK,CAACV,IAAI,KAAK,QAAQ,IAAIU,KAAK,CAACV,IAAI,KAAK,kBAAkB,CAAC,IAC9DU,KAAK,CAACT,KAAK,KAAKE,IAAI,EACpB;IACA,OAAO,IAAI;EACb;EAEA,IAAI,OAAOO,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAO,KAAK;EACd;EAEA,MAAMb,KAAK,GAAI,OAAO,IAAIa,KAAK,IAAIA,KAAK,CAACb,KAAK,IAAM,MAAM,IAAIa,KAAK,IAAIA,KAAK,CAACS,IAAK;EAClF,KAAK,MAAM0C,OAAO,IAAIC,MAAM,CAACC,MAAM,CAAClE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;IAChD,IAAImE,KAAK,CAACC,OAAO,CAACJ,OAAO,CAAC,EAAE;MAC1B;MACA,IAAIA,OAAO,CAACK,IAAI,CAAEpD,GAAG,IAAK;QACxB,OAAO0C,QAAQ,CAACrD,IAAI,EAAEW,GAAG,EAAE4C,UAAU,CAAC;MACxC,CAAC,CAAC,EAAE;QACF,OAAO,IAAI;MACb;IACF,CAAC,MAAM,IAAIF,QAAQ,CAACrD,IAAI,EAAE0D,OAAO,EAAEH,UAAU,CAAC,EAAE;MAC9C,OAAO,IAAI;IACb;EACF;EAEA,OAAO,KAAK;AACd,CAAC;AAED,MAAMS,WAAW,GAAG,IAAIC,GAAG,CAAC,CAC1B,0BAA0B,EAAE,wBAAwB,CACrD,CAAC;AACF,MAAMC,oBAAoB,GAAG,IAAID,GAAG,CAAC,CACnC,yBAAyB,EAAE,qBAAqB,EAAE,oBAAoB,CACvE,CAAC;;AAEF;AACA;AACA;AACA;AACA,MAAME,iBAAiB,GAAG,SAAAA,CAAUlC,GAAG,EAAE;EACvC,IAAIjC,IAAI,GAAGiC,GAAG;EACd,IAAImC,GAAG,GAAG,CAAC;EACX,MAAMC,eAAe,GAAGH,oBAAoB,CAACI,GAAG,CAACrC,GAAG,EAAEpC,IAAI,CAAC;EAC3D,OAAOG,IAAI,EAAE;IACX;IACA,IAAIoE,GAAG,IAAI,CAAC,IAAIC,eAAe,EAAE;MAC/B;IACF;IAEA,IAAIL,WAAW,CAACM,GAAG,CAACtE,IAAI,CAACH,IAAI,CAAC,EAAE;MAC9B,OAAOG,IAAI;IACb;IAEAA,IAAI,GAAGA,IAAI,CAACkB,MAAM;IAClBkD,GAAG,EAAE;EACP;EAEA,OAAO,KAAK;AACd,CAAC;AAED,MAAMG,2BAA2B,GAAG,IAAIN,GAAG,CAAC,CAC1C,eAAe,EACf,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,CACtB,CAAC;AAEF,MAAMO,qBAAqB,GAAG,IAAIP,GAAG,CAAC,CACpC,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EACf,8BAA8B,EAC9B,iBAAiB,CAClB,CAAC;;AAEF;AACA;AACA;AACA;AACA,MAAMQ,kBAAkB,GAAG,SAAAA,CAAUxC,GAAG,EAAE;EACxC,IAAI,CAACsC,2BAA2B,CAACD,GAAG,CAACrC,GAAG,CAACpC,IAAI,CAAC,EAAE;IAC9C,OAAO,KAAK;EACd;EAEA,IAAIG,IAAI,GAAGiC,GAAG,CAACf,MAAM;EACrB,OAAOlB,IAAI,EAAE;IACX,IAAIgE,WAAW,CAACM,GAAG,CAACtE,IAAI,CAACH,IAAI,CAAC,EAAE;MAC9B,OAAOG,IAAI;IACb;IAEA,IAAI,CAACwE,qBAAqB,CAACF,GAAG,CAACtE,IAAI,CAACH,IAAI,CAAC,EAAE;MACzC,OAAO,KAAK;IACd;IAEAG,IAAI,GAAGA,IAAI,CAACkB,MAAM;EACpB;EAEA,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMwD,gBAAgB,GAAG,SAAAA,CAAUnE,KAAK,EAAEP,IAAI,EAAEsD,KAAK,EAAE;EACrD;EACA,IAAI/C,KAAK,KAAK,IAAI,EAAE;IAClB,OAAO,KAAK;EACd;EAEA,MAAMgD,UAAU,GAAGD,KAAK,IAAI,EAAE;EAC9B,MAAM;IACJ5D;EACF,CAAC,GAAGa,KAAK;EACT,KAAK,MAAMmD,OAAO,IAAIC,MAAM,CAACC,MAAM,CAAClE,KAAK,CAAC,EAAE;IAC1C,MAAMiF,IAAI,GAAG,0BAA4BjB,OAAQ;IACjDH,UAAU,CAACE,IAAI,CAACkB,IAAI,CAAC;IACrB,IAAIA,IAAI,CAAC9B,QAAQ,KAAK7C,IAAI,KAAK2E,IAAI,CAAC7E,KAAK,IAAIuD,QAAQ,CAACrD,IAAI,EAAE2E,IAAI,CAAC7E,KAAK,CAAC,CAAC,EAAE;MACxE,OAAO,IAAI;IACb;;IAEA;IACA;EACF;EAEA,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM8E,cAAc,GAAG,SAAAA,CAAU5E,IAAI,EAAEC,OAAO,EAAES,GAAG,EAAE;EACnD,MAAMmE,aAAa,GAAG5E,OAAO,CAACP,KAAK,CAACoF,MAAM,EAAEpF,KAAK,EAAEqF,OAAO;EAC1D,IACErE,GAAG,CAACsE,iBAAiB,IAAIH,aAAa,IAAIxB,QAAQ,CAACrD,IAAI,EAAE6E,aAAa,CAAC,EACvE;IACA,OAAO,IAAI;EACb;EAEA,IAAInE,GAAG,CAAC+B,UAAU,IAAIxC,OAAO,CAACP,KAAK,CAACqC,MAAM,IAAIsB,QAAQ,CAACrD,IAAI,EAAEC,OAAO,CAACP,KAAK,CAACqC,MAAM,CAAC,EAAE;IAClF,OAAO,IAAI;EACb;EAEA,IAAIrB,GAAG,CAACuE,GAAG,IAAIP,gBAAgB,CAACzE,OAAO,EAAED,IAAI,CAAC,EAAE;IAC9C,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMkF,cAAc,GAAG,SAAAA,CAAUlF,IAAI,EAAEmF,UAAU,EAAEhF,IAAI,EAAE;EACvD;EACA,IAAIH,IAAI,CAACkB,MAAM,IAAIgE,cAAc,CAAClF,IAAI,CAACkB,MAAM,EAAEiE,UAAU,EAAEhF,IAAI,CAAC,EAAE;IAChE,OAAO,IAAI;EACb;EAEA,OAAOwC,YAAY,CAAC3C,IAAI,EAAEmF,UAAU,EAAEhF,IAAI,CAAC;AAC7C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMiF,KAAK,GAAG,SAAAA,CAAUC,GAAG,EAAErF,IAAI,EAAEU,GAAG,EAAE;EACtC;EACA,MAAMP,IAAI,GAAGO,GAAG,IAAI;IAClBwC,aAAa,EAAE,KAAK;IACpB+B,GAAG,EAAE,IAAI;IACTD,iBAAiB,EAAE,IAAI;IACvBvC,UAAU,EAAE;EACd,CAAC;EAED,MAAM0C,UAAU,GAAG1F,UAAU,CAAC,CAAC;EAC/B,IAAIU,IAAI,CAAC6E,iBAAiB,EAAE;IAC1BG,UAAU,CAACzF,KAAK,CAACoF,MAAM,GAAGrF,UAAU,CAAC,CAAC;IACtC0F,UAAU,CAACzF,KAAK,CAACoF,MAAM,CAACpF,KAAK,CAACqF,OAAO,GAAGtF,UAAU,CAAC,CAAC;IACpD0F,UAAU,CAACzF,KAAK,CAACqF,OAAO,GAAGI,UAAU,CAACzF,KAAK,CAACoF,MAAM,CAACpF,KAAK,CAACqF,OAAO;EAClE;EAEA,IAAI5E,IAAI,CAACsC,UAAU,EAAE;IACnB0C,UAAU,CAACzF,KAAK,CAACqC,MAAM,GAAGtC,UAAU,CAAC,CAAC;IACtC0F,UAAU,CAACzF,KAAK,CAACqC,MAAM,CAACC,OAAO,GAAG,IAAI;EACxC;EAEA,IAAI7B,IAAI,CAAC+C,aAAa,EAAE;IACtBgC,cAAc,CAAClF,IAAI,EAAEmF,UAAU,EAAEhF,IAAI,CAAC;EACxC,CAAC,MAAM;IACLiC,aAAa,CAACiD,GAAG,EAAEF,UAAU,EAAEhF,IAAI,CAAC;IACpCwC,YAAY,CAAC0C,GAAG,EAAEF,UAAU,EAAEhF,IAAI,CAAC;EACrC;EAEA,OAAO;IACLgF,UAAU;IACVzF,KAAK,EAAE,CAAC;EACV,CAAC;AACH,CAAC;AAED,MAAM4F,kBAAkB,GAAG,IAAIrB,GAAG,CAAC,CACjC,kBAAkB,EAClB,oBAAoB,CACrB,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA,MAAMsB,SAAS,GAAIvF,IAAI,IAAK;EAC1B,OAAOsF,kBAAkB,CAAChB,GAAG,CAACtE,IAAI,CAACH,IAAI,CAAC,IAEpC,eAAe,IAAIG,IAAI,IACvBA,IAAI,CAACwF,aAAa,KAAK,QAAQ,IAAIxF,IAAI,CAACwF,aAAa,KAAKC,SAC3D,IACH,KAAK,IAAIzF,IAAI,IACXA,IAAI,CAACiB,GAAG,CAACpB,IAAI,KAAK,mBAAmB;AACzC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM6F,mBAAmB,GAAG,SAAAA,CAAU1F,IAAI,EAAE2F,UAAU,EAAEjF,GAAG,EAAEkF,QAAQ,EAAE;EACrE;EACA;EACA,IAAIlF,GAAG,CAACuE,GAAG,EAAE;IACX,IAAIM,SAAS,CAACvF,IAAI,CAAC,IACjBA,IAAI,CAACkB,MAAM,IAAIqE,SAAS,CAACvF,IAAI,CAACkB,MAAM,CAAC,EAAE;MACvC,OAAO,KAAK;IACd;IAEA,MAAM2E,UAAU,GAAG1B,iBAAiB,CAACnE,IAAI,CAAC;;IAE1C;IACA,IAAI6F,UAAU,IAAI,CAAC,IAAAC,8BAAgB,EAACD,UAAU,EAAEF,UAAU,EAAEC,QAAQ,CAAC,EAAE;MACrE,OAAO,IAAI;IACb;;IAEA;AACJ;AACA;IACI,IACEnB,kBAAkB,CAACzE,IAAI,CAAC,IACxB,CAAC,IAAA8F,8BAAgB,EAAC9F,IAAI,EAAE2F,UAAU,EAAEC,QAAQ,CAAC,EAC7C;MACA,OAAO,IAAI;IACb;EACF;EAEA,MAAMP,GAAG,GAAG,sBAAwBM,UAAU,CAACN,GAAI;EAEnD,MAAMU,WAAW,GAAGX,KAAK,CACvB;EACCC,GAAG,EACJrF,IAAI,EACJU,GACF,CAAC;EAED,OAAOkE,cAAc,CACnB5E,IAAI,EAAE,0BAA4B+F,WAAW,CAACZ,UAAU,EAAGzE,GAC7D,CAAC;AACH,CAAC;AAAC,IAAAsF,QAAA,GAAAjB,OAAA,CAAAzF,OAAA,GAEa;EACboG,mBAAmB;EACnBN;AACF,CAAC;AAAAN,MAAA,CAAAC,OAAA,GAAAA,OAAA,CAAAzF,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _camelcase = _interopRequireDefault(require("camelcase"));
|
|
4
|
+
var _fs = require("fs");
|
|
5
|
+
var _promises = _interopRequireDefault(require("fs/promises"));
|
|
6
|
+
var _openEditor = _interopRequireDefault(require("open-editor"));
|
|
7
|
+
var _path = require("path");
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
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); } /* eslint-disable no-console -- CLI */ /**
|
|
10
|
+
* @example
|
|
11
|
+
* ```shell
|
|
12
|
+
* pnpm run create-rule my-new-rule -- --recommended
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
// Todo: Would ideally have prompts, e.g., to ask for whether
|
|
16
|
+
// type was problem/layout, etc.
|
|
17
|
+
|
|
18
|
+
const [,, ruleName, ...options] = process.argv;
|
|
19
|
+
const recommended = options.includes('--recommended');
|
|
20
|
+
(async () => {
|
|
21
|
+
if (!ruleName) {
|
|
22
|
+
console.error('Please supply a rule name');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (/[A-Z]/v.test(ruleName)) {
|
|
26
|
+
console.error('Please ensure the rule has no capital letters');
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const ruleNamesPath = './test/rules/ruleNames.json';
|
|
30
|
+
// @ts-expect-error Older types?
|
|
31
|
+
const ruleNames = JSON.parse(await _promises.default.readFile(ruleNamesPath));
|
|
32
|
+
if (!ruleNames.includes(ruleName)) {
|
|
33
|
+
ruleNames.push(ruleName);
|
|
34
|
+
ruleNames.sort();
|
|
35
|
+
}
|
|
36
|
+
await _promises.default.writeFile(ruleNamesPath, JSON.stringify(ruleNames, null, 2) + '\n');
|
|
37
|
+
console.log('ruleNames', ruleNames);
|
|
38
|
+
const ruleTemplate = `import iterateJsdoc from '../iterateJsdoc.js';
|
|
39
|
+
|
|
40
|
+
export default iterateJsdoc(({
|
|
41
|
+
context,
|
|
42
|
+
utils,
|
|
43
|
+
}) => {
|
|
44
|
+
// Rule here
|
|
45
|
+
}, {
|
|
46
|
+
iterateAllJsdocs: true,
|
|
47
|
+
meta: {
|
|
48
|
+
docs: {
|
|
49
|
+
description: '',
|
|
50
|
+
url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/${ruleName}.md#repos-sticky-header',
|
|
51
|
+
},
|
|
52
|
+
schema: [
|
|
53
|
+
{
|
|
54
|
+
additionalProperties: false,
|
|
55
|
+
properties: {
|
|
56
|
+
// Option properties here (or remove the object)
|
|
57
|
+
},
|
|
58
|
+
type: 'object',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
type: 'suggestion',
|
|
62
|
+
},
|
|
63
|
+
});
|
|
64
|
+
`;
|
|
65
|
+
const camelCasedRuleName = (0, _camelcase.default)(ruleName);
|
|
66
|
+
const rulePath = `./src/rules/${camelCasedRuleName}.js`;
|
|
67
|
+
if (!(0, _fs.existsSync)(rulePath)) {
|
|
68
|
+
await _promises.default.writeFile(rulePath, ruleTemplate);
|
|
69
|
+
}
|
|
70
|
+
const ruleTestTemplate = `export default {
|
|
71
|
+
invalid: [
|
|
72
|
+
{
|
|
73
|
+
code: \`
|
|
74
|
+
\`,
|
|
75
|
+
errors: [
|
|
76
|
+
{
|
|
77
|
+
line: 2,
|
|
78
|
+
message: '',
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
valid: [
|
|
84
|
+
{
|
|
85
|
+
code: \`
|
|
86
|
+
\`,
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
};
|
|
90
|
+
`;
|
|
91
|
+
const ruleTestPath = `./test/rules/assertions/${camelCasedRuleName}.js`;
|
|
92
|
+
if (!(0, _fs.existsSync)(ruleTestPath)) {
|
|
93
|
+
await _promises.default.writeFile(ruleTestPath, ruleTestTemplate);
|
|
94
|
+
}
|
|
95
|
+
const ruleReadmeTemplate = `# \`${ruleName}\`
|
|
96
|
+
|
|
97
|
+
|||
|
|
98
|
+
|---|---|
|
|
99
|
+
|Context|everywhere|
|
|
100
|
+
|Tags|\`\`|
|
|
101
|
+
|Recommended|${recommended ? 'true' : 'false'}|
|
|
102
|
+
|Settings||
|
|
103
|
+
|Options||
|
|
104
|
+
|
|
105
|
+
## Failing examples
|
|
106
|
+
|
|
107
|
+
<!-- assertions-failing ${camelCasedRuleName} -->
|
|
108
|
+
|
|
109
|
+
## Passing examples
|
|
110
|
+
|
|
111
|
+
<!-- assertions-passing ${camelCasedRuleName} -->
|
|
112
|
+
`;
|
|
113
|
+
const ruleReadmePath = `./.README/rules/${ruleName}.md`;
|
|
114
|
+
if (!(0, _fs.existsSync)(ruleReadmePath)) {
|
|
115
|
+
await _promises.default.writeFile(ruleReadmePath, ruleReadmeTemplate);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @param {object} cfg
|
|
120
|
+
* @param {string} cfg.path
|
|
121
|
+
* @param {RegExp} cfg.oldRegex
|
|
122
|
+
* @param {string} cfg.checkName
|
|
123
|
+
* @param {string} cfg.newLine
|
|
124
|
+
* @param {boolean} [cfg.oldIsCamel]
|
|
125
|
+
* @returns {Promise<void>}
|
|
126
|
+
*/
|
|
127
|
+
const replaceInOrder = async ({
|
|
128
|
+
checkName,
|
|
129
|
+
newLine,
|
|
130
|
+
oldIsCamel,
|
|
131
|
+
oldRegex,
|
|
132
|
+
path
|
|
133
|
+
}) => {
|
|
134
|
+
/**
|
|
135
|
+
* @typedef {number} Integer
|
|
136
|
+
*/
|
|
137
|
+
/**
|
|
138
|
+
* @typedef {{
|
|
139
|
+
* matchedLine: string,
|
|
140
|
+
* offset: Integer,
|
|
141
|
+
* oldRule: string,
|
|
142
|
+
* }} OffsetInfo
|
|
143
|
+
*/
|
|
144
|
+
/**
|
|
145
|
+
* @type {OffsetInfo[]}
|
|
146
|
+
*/
|
|
147
|
+
const offsets = [];
|
|
148
|
+
let readme = await _promises.default.readFile(path, 'utf8');
|
|
149
|
+
readme.replace(oldRegex,
|
|
150
|
+
/**
|
|
151
|
+
* @param {string} matchedLine
|
|
152
|
+
* @param {string} n1
|
|
153
|
+
* @param {Integer} offset
|
|
154
|
+
* @param {string} str
|
|
155
|
+
* @param {object} groups
|
|
156
|
+
* @param {string} groups.oldRule
|
|
157
|
+
* @returns {string}
|
|
158
|
+
*/
|
|
159
|
+
(matchedLine, n1, offset, str, {
|
|
160
|
+
oldRule
|
|
161
|
+
}) => {
|
|
162
|
+
offsets.push({
|
|
163
|
+
matchedLine,
|
|
164
|
+
offset,
|
|
165
|
+
oldRule
|
|
166
|
+
});
|
|
167
|
+
return matchedLine;
|
|
168
|
+
});
|
|
169
|
+
offsets.sort(({
|
|
170
|
+
oldRule
|
|
171
|
+
}, {
|
|
172
|
+
oldRule: oldRuleB
|
|
173
|
+
}) => {
|
|
174
|
+
return oldRule < oldRuleB ? -1 : oldRule > oldRuleB ? 1 : 0;
|
|
175
|
+
});
|
|
176
|
+
let alreadyIncluded = false;
|
|
177
|
+
const itemIndex = offsets.findIndex(({
|
|
178
|
+
oldRule
|
|
179
|
+
}) => {
|
|
180
|
+
alreadyIncluded ||= oldIsCamel ? camelCasedRuleName === oldRule : ruleName === oldRule;
|
|
181
|
+
return oldIsCamel ? camelCasedRuleName < oldRule : ruleName < oldRule;
|
|
182
|
+
});
|
|
183
|
+
let item = itemIndex !== undefined && offsets[itemIndex];
|
|
184
|
+
if (item && itemIndex === 0 &&
|
|
185
|
+
// This property would not always be sufficient but in this case it is.
|
|
186
|
+
oldIsCamel) {
|
|
187
|
+
item.offset = 0;
|
|
188
|
+
}
|
|
189
|
+
if (!item) {
|
|
190
|
+
item = /** @type {OffsetInfo} */offsets.pop();
|
|
191
|
+
item.offset += item.matchedLine.length;
|
|
192
|
+
}
|
|
193
|
+
if (alreadyIncluded) {
|
|
194
|
+
console.log(`Rule name is already present in ${checkName}.`);
|
|
195
|
+
} else {
|
|
196
|
+
readme = readme.slice(0, item.offset) + (item.offset ? '\n' : '') + newLine + (item.offset ? '' : '\n') + readme.slice(item.offset);
|
|
197
|
+
await _promises.default.writeFile(path, readme);
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
// await replaceInOrder({
|
|
202
|
+
// checkName: 'README',
|
|
203
|
+
// newLine: `{"gitdown": "include", "file": "./rules/${ruleName}.md"}`,
|
|
204
|
+
// oldRegex: /\n\{"gitdown": "include", "file": ".\/rules\/(?<oldRule>[^.]*).md"\}/gv,
|
|
205
|
+
// path: './.README/README.md',
|
|
206
|
+
// });
|
|
207
|
+
|
|
208
|
+
await replaceInOrder({
|
|
209
|
+
checkName: 'index import',
|
|
210
|
+
newLine: `import ${camelCasedRuleName} from './rules/${camelCasedRuleName}.js';`,
|
|
211
|
+
oldIsCamel: true,
|
|
212
|
+
oldRegex: /\nimport (?<oldRule>[^ ]*) from '.\/rules\/\1\.js';/gv,
|
|
213
|
+
path: './src/index.js'
|
|
214
|
+
});
|
|
215
|
+
await replaceInOrder({
|
|
216
|
+
checkName: 'index recommended',
|
|
217
|
+
newLine: `${' '.repeat(6)}'jsdoc/${ruleName}': ${recommended ? 'warnOrError' : '\'off\''},`,
|
|
218
|
+
oldRegex: /\n\s{6}'jsdoc\/(?<oldRule>[^']*)': .*?,/gv,
|
|
219
|
+
path: './src/index.js'
|
|
220
|
+
});
|
|
221
|
+
await replaceInOrder({
|
|
222
|
+
checkName: 'index rules',
|
|
223
|
+
newLine: `${' '.repeat(4)}'${ruleName}': ${camelCasedRuleName},`,
|
|
224
|
+
oldRegex: /\n\s{4}'(?<oldRule>[^']*)': [^,]*,/gv,
|
|
225
|
+
path: './src/index.js'
|
|
226
|
+
});
|
|
227
|
+
await Promise.resolve().then(() => _interopRequireWildcard(require('./generateDocs.js')));
|
|
228
|
+
|
|
229
|
+
/*
|
|
230
|
+
console.log('Paths to open for further editing\n');
|
|
231
|
+
console.log(`open ${ruleReadmePath}`);
|
|
232
|
+
console.log(`open ${rulePath}`);
|
|
233
|
+
console.log(`open ${ruleTestPath}\n`);
|
|
234
|
+
*/
|
|
235
|
+
|
|
236
|
+
// Set chdir as somehow still in operation from other test
|
|
237
|
+
process.chdir((0, _path.resolve)(__dirname, '../../'));
|
|
238
|
+
await (0, _openEditor.default)([
|
|
239
|
+
// Could even add editor line column numbers like `${rulePath}:1:1`
|
|
240
|
+
ruleReadmePath, ruleTestPath, rulePath]);
|
|
241
|
+
})();
|
|
242
|
+
//# sourceMappingURL=generateRule.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateRule.cjs","names":["_camelcase","_interopRequireDefault","require","_fs","_promises","_openEditor","_path","e","__esModule","default","_interopRequireWildcard","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ruleName","options","process","argv","recommended","includes","console","error","test","ruleNamesPath","ruleNames","JSON","parse","fs","readFile","push","sort","writeFile","stringify","log","ruleTemplate","camelCasedRuleName","camelCase","rulePath","existsSync","ruleTestTemplate","ruleTestPath","ruleReadmeTemplate","ruleReadmePath","replaceInOrder","checkName","newLine","oldIsCamel","oldRegex","path","offsets","readme","replace","matchedLine","n1","offset","str","oldRule","oldRuleB","alreadyIncluded","itemIndex","findIndex","item","undefined","pop","length","slice","repeat","Promise","resolve","then","chdir","__dirname","open"],"sources":["../src/bin/generateRule.js"],"sourcesContent":["/* eslint-disable no-console -- CLI */\n\nimport camelCase from 'camelcase';\nimport {\n existsSync,\n} from 'fs';\nimport fs from 'fs/promises';\n/**\n * @example\n * ```shell\n * pnpm run create-rule my-new-rule -- --recommended\n * ```\n */\nimport open from 'open-editor';\nimport {\n resolve,\n} from 'path';\n\n// Todo: Would ideally have prompts, e.g., to ask for whether\n// type was problem/layout, etc.\n\nconst [\n , , ruleName,\n ...options\n] = process.argv;\n\nconst recommended = options.includes('--recommended');\n\n(async () => {\n if (!ruleName) {\n console.error('Please supply a rule name');\n\n return;\n }\n\n if ((/[A-Z]/v).test(ruleName)) {\n console.error('Please ensure the rule has no capital letters');\n\n return;\n }\n\n const ruleNamesPath = './test/rules/ruleNames.json';\n // @ts-expect-error Older types?\n const ruleNames = JSON.parse(await fs.readFile(\n ruleNamesPath,\n ));\n if (!ruleNames.includes(ruleName)) {\n ruleNames.push(ruleName);\n ruleNames.sort();\n }\n\n await fs.writeFile(ruleNamesPath, JSON.stringify(ruleNames, null, 2) + '\\n');\n console.log('ruleNames', ruleNames);\n\n const ruleTemplate = `import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n utils,\n}) => {\n // Rule here\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/${ruleName}.md#repos-sticky-header',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n // Option properties here (or remove the object)\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n`;\n\n const camelCasedRuleName = camelCase(ruleName);\n\n const rulePath = `./src/rules/${camelCasedRuleName}.js`;\n\n if (!existsSync(rulePath)) {\n await fs.writeFile(rulePath, ruleTemplate);\n }\n\n const ruleTestTemplate = `export default {\n invalid: [\n {\n code: \\`\n \\`,\n errors: [\n {\n line: 2,\n message: '',\n },\n ],\n },\n ],\n valid: [\n {\n code: \\`\n \\`,\n },\n ],\n};\n`;\n\n const ruleTestPath = `./test/rules/assertions/${camelCasedRuleName}.js`;\n if (!existsSync(ruleTestPath)) {\n await fs.writeFile(ruleTestPath, ruleTestTemplate);\n }\n\n const ruleReadmeTemplate = `# \\`${ruleName}\\`\n\n|||\n|---|---|\n|Context|everywhere|\n|Tags|\\`\\`|\n|Recommended|${recommended ? 'true' : 'false'}|\n|Settings||\n|Options||\n\n## Failing examples\n\n<!-- assertions-failing ${camelCasedRuleName} -->\n\n## Passing examples\n\n<!-- assertions-passing ${camelCasedRuleName} -->\n`;\n\n const ruleReadmePath = `./.README/rules/${ruleName}.md`;\n if (!existsSync(ruleReadmePath)) {\n await fs.writeFile(ruleReadmePath, ruleReadmeTemplate);\n }\n\n /**\n * @param {object} cfg\n * @param {string} cfg.path\n * @param {RegExp} cfg.oldRegex\n * @param {string} cfg.checkName\n * @param {string} cfg.newLine\n * @param {boolean} [cfg.oldIsCamel]\n * @returns {Promise<void>}\n */\n const replaceInOrder = async ({\n checkName,\n newLine,\n oldIsCamel,\n oldRegex,\n path,\n }) => {\n /**\n * @typedef {number} Integer\n */\n /**\n * @typedef {{\n * matchedLine: string,\n * offset: Integer,\n * oldRule: string,\n * }} OffsetInfo\n */\n /**\n * @type {OffsetInfo[]}\n */\n const offsets = [];\n\n let readme = await fs.readFile(path, 'utf8');\n readme.replace(\n oldRegex,\n /**\n * @param {string} matchedLine\n * @param {string} n1\n * @param {Integer} offset\n * @param {string} str\n * @param {object} groups\n * @param {string} groups.oldRule\n * @returns {string}\n */\n (matchedLine, n1, offset, str, {\n oldRule,\n }) => {\n offsets.push({\n matchedLine,\n offset,\n oldRule,\n });\n\n return matchedLine;\n },\n );\n\n offsets.sort(({\n oldRule,\n }, {\n oldRule: oldRuleB,\n }) => {\n return oldRule < oldRuleB ? -1 : (oldRule > oldRuleB ? 1 : 0);\n });\n\n let alreadyIncluded = false;\n const itemIndex = offsets.findIndex(({\n oldRule,\n }) => {\n alreadyIncluded ||= oldIsCamel ? camelCasedRuleName === oldRule : ruleName === oldRule;\n\n return oldIsCamel ? camelCasedRuleName < oldRule : ruleName < oldRule;\n });\n let item = itemIndex !== undefined && offsets[itemIndex];\n if (item && itemIndex === 0 &&\n\n // This property would not always be sufficient but in this case it is.\n oldIsCamel\n ) {\n item.offset = 0;\n }\n\n if (!item) {\n item = /** @type {OffsetInfo} */ (offsets.pop());\n item.offset += item.matchedLine.length;\n }\n\n if (alreadyIncluded) {\n console.log(`Rule name is already present in ${checkName}.`);\n } else {\n readme = readme.slice(0, item.offset) +\n (item.offset ? '\\n' : '') +\n newLine +\n (item.offset ? '' : '\\n') +\n readme.slice(item.offset);\n\n await fs.writeFile(path, readme);\n }\n };\n\n // await replaceInOrder({\n // checkName: 'README',\n // newLine: `{\"gitdown\": \"include\", \"file\": \"./rules/${ruleName}.md\"}`,\n // oldRegex: /\\n\\{\"gitdown\": \"include\", \"file\": \".\\/rules\\/(?<oldRule>[^.]*).md\"\\}/gv,\n // path: './.README/README.md',\n // });\n\n await replaceInOrder({\n checkName: 'index import',\n newLine: `import ${camelCasedRuleName} from './rules/${camelCasedRuleName}.js';`,\n oldIsCamel: true,\n oldRegex: /\\nimport (?<oldRule>[^ ]*) from '.\\/rules\\/\\1\\.js';/gv,\n path: './src/index.js',\n });\n\n await replaceInOrder({\n checkName: 'index recommended',\n newLine: `${' '.repeat(6)}'jsdoc/${ruleName}': ${recommended ? 'warnOrError' : '\\'off\\''},`,\n oldRegex: /\\n\\s{6}'jsdoc\\/(?<oldRule>[^']*)': .*?,/gv,\n path: './src/index.js',\n });\n\n await replaceInOrder({\n checkName: 'index rules',\n newLine: `${' '.repeat(4)}'${ruleName}': ${camelCasedRuleName},`,\n oldRegex: /\\n\\s{4}'(?<oldRule>[^']*)': [^,]*,/gv,\n path: './src/index.js',\n });\n\n await import('./generateDocs.js');\n\n /*\n console.log('Paths to open for further editing\\n');\n console.log(`open ${ruleReadmePath}`);\n console.log(`open ${rulePath}`);\n console.log(`open ${ruleTestPath}\\n`);\n */\n\n // Set chdir as somehow still in operation from other test\n process.chdir(resolve(import.meta.dirname, '../../'));\n await open([\n // Could even add editor line column numbers like `${rulePath}:1:1`\n ruleReadmePath,\n ruleTestPath,\n rulePath,\n ]);\n})();\n"],"mappings":"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","ignoreList":[]}
|