eslint-plugin-jsdoc 63.0.11 → 63.0.12
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 +8 -1
- package/dist/WarnSettings.cjs.map +1 -1
- package/dist/alignTransform.cjs +10 -6
- package/dist/alignTransform.cjs.map +1 -1
- package/dist/buildForbidRuleDefinition.cjs +10 -3
- package/dist/buildForbidRuleDefinition.cjs.map +1 -1
- package/dist/buildRejectOrPreferRuleDefinition.cjs +14 -7
- package/dist/buildRejectOrPreferRuleDefinition.cjs.map +1 -1
- package/dist/defaultTagOrder.cjs +8 -1
- package/dist/defaultTagOrder.cjs.map +1 -1
- package/dist/exportParser.cjs +14 -6
- package/dist/exportParser.cjs.map +1 -1
- package/dist/generateDocs.cjs +44 -36
- package/dist/generateDocs.cjs.map +1 -1
- package/dist/generateOptions.cjs +18 -15
- package/dist/generateOptions.cjs.map +1 -1
- package/dist/generateRule.cjs +24 -24
- package/dist/generateRule.cjs.map +1 -1
- package/dist/generateRuleTypes.cjs +9 -6
- package/dist/generateRuleTypes.cjs.map +1 -1
- package/dist/getDefaultTagStructureForMode.cjs +8 -1
- package/dist/getDefaultTagStructureForMode.cjs.map +1 -1
- package/dist/getJsdocProcessorPlugin.cjs +28 -20
- package/dist/getJsdocProcessorPlugin.cjs.map +1 -1
- package/dist/index-cjs.cjs +159 -152
- package/dist/index-cjs.cjs.map +1 -1
- package/dist/index-esm.cjs +27 -16
- package/dist/index-esm.cjs.map +1 -1
- package/dist/index.cjs +172 -159
- package/dist/index.cjs.map +1 -1
- package/dist/iterateJsdoc.cjs +32 -22
- package/dist/iterateJsdoc.cjs.map +1 -1
- package/dist/jsdocUtils.cjs +86 -18
- package/dist/jsdocUtils.cjs.map +1 -1
- package/dist/rules/checkAccess.cjs +10 -2
- package/dist/rules/checkAccess.cjs.map +1 -1
- package/dist/rules/checkAlignment.cjs +10 -2
- package/dist/rules/checkAlignment.cjs.map +1 -1
- package/dist/rules/checkExamples.cjs +15 -6
- package/dist/rules/checkExamples.cjs.map +1 -1
- package/dist/rules/checkIndentation.cjs +9 -2
- package/dist/rules/checkIndentation.cjs.map +1 -1
- package/dist/rules/checkLineAlignment.cjs +14 -6
- package/dist/rules/checkLineAlignment.cjs.map +1 -1
- package/dist/rules/checkParamNames.cjs +9 -2
- package/dist/rules/checkParamNames.cjs.map +1 -1
- package/dist/rules/checkPropertyNames.cjs +9 -2
- package/dist/rules/checkPropertyNames.cjs.map +1 -1
- package/dist/rules/checkSyntax.cjs +10 -2
- package/dist/rules/checkSyntax.cjs.map +1 -1
- package/dist/rules/checkTagNames.cjs +11 -4
- package/dist/rules/checkTagNames.cjs.map +1 -1
- package/dist/rules/checkTemplateNames.cjs +20 -12
- package/dist/rules/checkTemplateNames.cjs.map +1 -1
- package/dist/rules/checkTypes.cjs +10 -4
- package/dist/rules/checkTypes.cjs.map +1 -1
- package/dist/rules/checkValues.cjs +17 -9
- package/dist/rules/checkValues.cjs.map +1 -1
- package/dist/rules/convertToJsdocComments.cjs +19 -13
- package/dist/rules/convertToJsdocComments.cjs.map +1 -1
- package/dist/rules/emptyTags.cjs +10 -2
- package/dist/rules/emptyTags.cjs.map +1 -1
- package/dist/rules/escapeInlineTags.cjs +10 -2
- package/dist/rules/escapeInlineTags.cjs.map +1 -1
- package/dist/rules/implementsOnClasses.cjs +10 -2
- package/dist/rules/implementsOnClasses.cjs.map +1 -1
- package/dist/rules/importsAsDependencies.cjs +20 -12
- package/dist/rules/importsAsDependencies.cjs.map +1 -1
- package/dist/rules/informativeDocs.cjs +12 -4
- package/dist/rules/informativeDocs.cjs.map +1 -1
- package/dist/rules/linesBeforeBlock.cjs +9 -2
- package/dist/rules/linesBeforeBlock.cjs.map +1 -1
- package/dist/rules/matchDescription.cjs +9 -2
- package/dist/rules/matchDescription.cjs.map +1 -1
- package/dist/rules/matchName.cjs +10 -2
- package/dist/rules/matchName.cjs.map +1 -1
- package/dist/rules/multilineBlocks.cjs +9 -2
- package/dist/rules/multilineBlocks.cjs.map +1 -1
- package/dist/rules/noBadBlocks.cjs +11 -4
- package/dist/rules/noBadBlocks.cjs.map +1 -1
- package/dist/rules/noBlankBlockDescriptions.cjs +10 -2
- package/dist/rules/noBlankBlockDescriptions.cjs.map +1 -1
- package/dist/rules/noBlankBlocks.cjs +10 -2
- package/dist/rules/noBlankBlocks.cjs.map +1 -1
- package/dist/rules/noDefaults.cjs +10 -2
- package/dist/rules/noDefaults.cjs.map +1 -1
- package/dist/rules/noMissingSyntax.cjs +9 -2
- package/dist/rules/noMissingSyntax.cjs.map +1 -1
- package/dist/rules/noMultiAsterisks.cjs +10 -2
- package/dist/rules/noMultiAsterisks.cjs.map +1 -1
- package/dist/rules/noRestrictedSyntax.cjs +9 -2
- package/dist/rules/noRestrictedSyntax.cjs.map +1 -1
- package/dist/rules/noTypes.cjs +9 -2
- package/dist/rules/noTypes.cjs.map +1 -1
- package/dist/rules/noUndefinedTypes.cjs +21 -13
- package/dist/rules/noUndefinedTypes.cjs.map +1 -1
- package/dist/rules/preferImportTag.cjs +28 -21
- package/dist/rules/preferImportTag.cjs.map +1 -1
- package/dist/rules/requireAsteriskPrefix.cjs +10 -2
- package/dist/rules/requireAsteriskPrefix.cjs.map +1 -1
- package/dist/rules/requireDescription.cjs +9 -2
- package/dist/rules/requireDescription.cjs.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.cjs +15 -7
- package/dist/rules/requireDescriptionCompleteSentence.cjs.map +1 -1
- package/dist/rules/requireExample.cjs +10 -2
- package/dist/rules/requireExample.cjs.map +1 -1
- package/dist/rules/requireFileOverview.cjs +10 -2
- package/dist/rules/requireFileOverview.cjs.map +1 -1
- package/dist/rules/requireHyphenBeforeParamDescription.cjs +10 -2
- package/dist/rules/requireHyphenBeforeParamDescription.cjs.map +1 -1
- package/dist/rules/requireJsdoc.cjs +24 -17
- package/dist/rules/requireJsdoc.cjs.map +1 -1
- package/dist/rules/requireParam.cjs +9 -2
- package/dist/rules/requireParam.cjs.map +1 -1
- package/dist/rules/requireParamDescription.cjs +10 -2
- package/dist/rules/requireParamDescription.cjs.map +1 -1
- package/dist/rules/requireParamName.cjs +10 -2
- package/dist/rules/requireParamName.cjs.map +1 -1
- package/dist/rules/requireParamType.cjs +10 -2
- package/dist/rules/requireParamType.cjs.map +1 -1
- package/dist/rules/requireProperty.cjs +10 -2
- package/dist/rules/requireProperty.cjs.map +1 -1
- package/dist/rules/requirePropertyDescription.cjs +10 -2
- package/dist/rules/requirePropertyDescription.cjs.map +1 -1
- package/dist/rules/requirePropertyName.cjs +10 -2
- package/dist/rules/requirePropertyName.cjs.map +1 -1
- package/dist/rules/requirePropertyType.cjs +10 -2
- package/dist/rules/requirePropertyType.cjs.map +1 -1
- package/dist/rules/requireRejects.cjs +9 -2
- package/dist/rules/requireRejects.cjs.map +1 -1
- package/dist/rules/requireReturns.cjs +11 -4
- package/dist/rules/requireReturns.cjs.map +1 -1
- package/dist/rules/requireReturnsCheck.cjs +15 -8
- package/dist/rules/requireReturnsCheck.cjs.map +1 -1
- package/dist/rules/requireReturnsDescription.cjs +10 -2
- package/dist/rules/requireReturnsDescription.cjs.map +1 -1
- package/dist/rules/requireReturnsType.cjs +10 -2
- package/dist/rules/requireReturnsType.cjs.map +1 -1
- package/dist/rules/requireTags.cjs +9 -2
- package/dist/rules/requireTags.cjs.map +1 -1
- package/dist/rules/requireTemplate.cjs +13 -5
- package/dist/rules/requireTemplate.cjs.map +1 -1
- package/dist/rules/requireThrows.cjs +9 -2
- package/dist/rules/requireThrows.cjs.map +1 -1
- package/dist/rules/requireYields.cjs +9 -2
- package/dist/rules/requireYields.cjs.map +1 -1
- package/dist/rules/requireYieldsCheck.cjs +9 -2
- package/dist/rules/requireYieldsCheck.cjs.map +1 -1
- package/dist/rules/sortTags.cjs +12 -4
- package/dist/rules/sortTags.cjs.map +1 -1
- package/dist/rules/tagLines.cjs +9 -2
- package/dist/rules/tagLines.cjs.map +1 -1
- package/dist/rules/textEscaping.cjs +9 -2
- package/dist/rules/textEscaping.cjs.map +1 -1
- package/dist/rules/tsMethodSignatureStyle.cjs +18 -10
- package/dist/rules/tsMethodSignatureStyle.cjs.map +1 -1
- package/dist/rules/tsNoEmptyObjectType.cjs +13 -5
- package/dist/rules/tsNoEmptyObjectType.cjs.map +1 -1
- package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs +16 -8
- package/dist/rules/tsNoUnnecessaryTemplateExpression.cjs.map +1 -1
- package/dist/rules/tsPreferFunctionType.cjs +16 -8
- package/dist/rules/tsPreferFunctionType.cjs.map +1 -1
- package/dist/rules/typeFormatting.cjs +17 -9
- package/dist/rules/typeFormatting.cjs.map +1 -1
- package/dist/rules/validTypes.cjs +18 -10
- package/dist/rules/validTypes.cjs.map +1 -1
- package/dist/tagNames.cjs +9 -4
- package/dist/tagNames.cjs.map +1 -1
- package/dist/utils/hasReturnValue.cjs +8 -1
- package/dist/utils/hasReturnValue.cjs.map +1 -1
- package/package.json +1 -1
package/dist/jsdocUtils.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsdocUtils.cjs","names":[],"sources":["../src/jsdocUtils.js"],"sourcesContent":["import getDefaultTagStructureForMode from './getDefaultTagStructureForMode.js';\nimport {\n closureTags,\n jsdocTags,\n typeScriptTags,\n} from './tagNames.js';\nimport WarnSettings from './WarnSettings.js';\nimport {\n parseComment,\n stringify,\n tryParse,\n} from '@es-joy/jsdoccomment';\n\n/**\n * @typedef {number} Integer\n */\n/**\n * @typedef {import('./utils/hasReturnValue.js').ESTreeOrTypeScriptNode} ESTreeOrTypeScriptNode\n */\n\n/**\n * @typedef {\"jsdoc\"|\"typescript\"|\"closure\"|\"permissive\"} ParserMode\n */\n\n/**\n * @type {import('./getDefaultTagStructureForMode.js').TagStructure}\n */\nlet tagStructure;\n\n/**\n * @param {ParserMode} mode\n * @returns {void}\n */\nconst setTagStructure = (mode) => {\n tagStructure = getDefaultTagStructureForMode(mode);\n};\n\n/**\n * @typedef {undefined|string|{\n * name: Integer,\n * restElement: boolean\n * }|{\n * isRestProperty: boolean|undefined,\n * name: string,\n * restElement: boolean\n * }|{\n * name: string,\n * restElement: boolean\n * }} ParamCommon\n */\n/**\n * @typedef {ParamCommon|[string|undefined, (FlattendRootInfo & {\n * annotationParamName?: string,\n * })]|NestedParamInfo} ParamNameInfo\n */\n\n/**\n * @typedef {{\n * hasPropertyRest: boolean,\n * hasRestElement: boolean,\n * names: string[],\n * rests: boolean[],\n * }} FlattendRootInfo\n */\n/**\n * @typedef {[string, (string[]|ParamInfo[])]} NestedParamInfo\n */\n/**\n * @typedef {ParamCommon|\n * [string|undefined, (FlattendRootInfo & {\n * annotationParamName?: string\n * })]|\n * NestedParamInfo} ParamInfo\n */\n\n/**\n * Given a nested array of property names, reduce them to a single array,\n * appending the name of the root element along the way if present.\n * @callback FlattenRoots\n * @param {ParamInfo[]} params\n * @param {string} [root]\n * @returns {FlattendRootInfo}\n */\n\n/** @type {FlattenRoots} */\nconst flattenRoots = (params, root = '') => {\n let hasRestElement = false;\n let hasPropertyRest = false;\n\n /**\n * @type {boolean[]}\n */\n const rests = [];\n\n const names = params.reduce(\n /**\n * @param {string[]} acc\n * @param {ParamInfo} cur\n * @returns {string[]}\n */\n (acc, cur) => {\n if (Array.isArray(cur)) {\n let nms;\n if (Array.isArray(cur[1])) {\n nms = cur[1];\n } else {\n if (cur[1].hasRestElement) {\n hasRestElement = true;\n }\n\n if (cur[1].hasPropertyRest) {\n hasPropertyRest = true;\n }\n\n nms = cur[1].names;\n }\n\n const flattened = flattenRoots(nms, root ? `${root}.${cur[0]}` : cur[0]);\n if (flattened.hasRestElement) {\n hasRestElement = true;\n }\n\n if (flattened.hasPropertyRest) {\n hasPropertyRest = true;\n }\n\n const inner = /** @type {string[]} */ ([\n root ? `${root}.${cur[0]}` : cur[0],\n ...flattened.names,\n ].filter(Boolean));\n rests.push(false, ...flattened.rests);\n\n return acc.concat(inner);\n }\n\n if (typeof cur === 'object') {\n if ('isRestProperty' in cur && cur.isRestProperty) {\n hasPropertyRest = true;\n rests.push(true);\n } else {\n rests.push(false);\n }\n\n if ('restElement' in cur && cur.restElement) {\n hasRestElement = true;\n }\n\n acc.push(root ? `${root}.${String(cur.name)}` : String(cur.name));\n } else if (typeof cur !== 'undefined') {\n rests.push(false);\n acc.push(root ? `${root}.${cur}` : cur);\n }\n\n return acc;\n }, [],\n );\n\n return {\n hasPropertyRest,\n hasRestElement,\n names,\n rests,\n };\n};\n\n/**\n * @param {import('@typescript-eslint/types').TSESTree.TSIndexSignature|\n * import('@typescript-eslint/types').TSESTree.TSConstructSignatureDeclaration|\n * import('@typescript-eslint/types').TSESTree.TSCallSignatureDeclaration|\n * import('@typescript-eslint/types').TSESTree.TSPropertySignature} propSignature\n * @returns {undefined|string|[string, string[]]}\n */\nconst getPropertiesFromPropertySignature = (propSignature) => {\n if (\n propSignature.type === 'TSIndexSignature' ||\n propSignature.type === 'TSConstructSignatureDeclaration' ||\n propSignature.type === 'TSCallSignatureDeclaration'\n ) {\n return undefined;\n }\n\n if (propSignature.typeAnnotation && propSignature.typeAnnotation.typeAnnotation.type === 'TSTypeLiteral') {\n return [\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n propSignature.key\n ).name,\n propSignature.typeAnnotation.typeAnnotation.members.map((member) => {\n return /** @type {string} */ (\n getPropertiesFromPropertySignature(\n /** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */ (\n member\n ),\n )\n );\n }),\n ];\n }\n\n return /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n propSignature.key\n ).name;\n};\n\n/**\n * @param {ESTreeOrTypeScriptNode|null} functionNode\n * @param {boolean} [checkDefaultObjects]\n * @param {boolean} [ignoreInterfacedParameters]\n * @throws {Error}\n * @returns {ParamNameInfo[]}\n */\nconst getFunctionParameterNames = (\n functionNode, checkDefaultObjects, ignoreInterfacedParameters,\n) => {\n /* eslint-disable complexity -- Temporary */\n /**\n * @param {import('estree').Identifier|import('estree').AssignmentPattern|\n * import('estree').ObjectPattern|import('estree').Property|\n * import('estree').RestElement|import('estree').ArrayPattern|\n * import('@typescript-eslint/types').TSESTree.TSParameterProperty|\n * import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.RestElement|\n * import('@typescript-eslint/types').TSESTree.Identifier|\n * import('@typescript-eslint/types').TSESTree.ObjectPattern|\n * import('@typescript-eslint/types').TSESTree.BindingName|\n * import('@typescript-eslint/types').TSESTree.Parameter\n * } param\n * @param {boolean} [isProperty]\n * @returns {ParamNameInfo|[string, ParamNameInfo[]]}\n */\n const getParamName = (param, isProperty) => {\n /* eslint-enable complexity -- Temporary */\n const hasLeftTypeAnnotation = 'left' in param && 'typeAnnotation' in param.left;\n\n if ('typeAnnotation' in param || hasLeftTypeAnnotation) {\n if (ignoreInterfacedParameters && 'typeAnnotation' in param &&\n param.typeAnnotation) {\n // No-op\n return [\n undefined, {\n hasPropertyRest: false,\n hasRestElement: false,\n names: [],\n rests: [],\n },\n ];\n }\n\n const typeAnnotation = hasLeftTypeAnnotation ?\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n param.left\n ).typeAnnotation :\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier|import('@typescript-eslint/types').TSESTree.ObjectPattern} */\n (param).typeAnnotation;\n\n if (typeAnnotation?.typeAnnotation?.type === 'TSTypeLiteral') {\n const propertyNames = typeAnnotation.typeAnnotation.members.map((member) => {\n return getPropertiesFromPropertySignature(\n /** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */\n (member),\n );\n });\n\n const flattened = {\n ...flattenRoots(propertyNames),\n annotationParamName: 'name' in param ? param.name : undefined,\n };\n const hasLeftName = 'left' in param && 'name' in param.left;\n\n if ('name' in param || hasLeftName) {\n return [\n hasLeftName ?\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n param.left\n ).name :\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n param\n ).name,\n flattened,\n ];\n }\n\n return [\n undefined, flattened,\n ];\n }\n }\n\n if ('name' in param) {\n return param.name;\n }\n\n if ('left' in param && 'name' in param.left) {\n return param.left.name;\n }\n\n if (\n param.type === 'ObjectPattern' ||\n ('left' in param &&\n (\n param\n ).left.type === 'ObjectPattern')\n ) {\n const properties = /** @type {import('@typescript-eslint/types').TSESTree.ObjectPattern} */ (\n param\n ).properties ||\n /** @type {import('estree').ObjectPattern} */\n (\n /** @type {import('@typescript-eslint/types').TSESTree.AssignmentPattern} */ (\n param\n ).left\n )?.properties;\n const roots = properties.map((prop) => {\n return getParamName(prop, true);\n });\n\n return [\n undefined, flattenRoots(roots),\n ];\n }\n\n if (param.type === 'Property') {\n switch (param.value.type) {\n case 'ArrayPattern': {\n return [\n /** @type {import('estree').Identifier} */\n (param.key).name,\n /** @type {import('estree').ArrayPattern} */ (\n param.value\n ).elements.map((prop, idx) => {\n return {\n name: idx,\n restElement: prop?.type === 'RestElement',\n };\n }),\n ];\n }\n\n case 'ObjectPattern': {\n return [\n /** @type {import('estree').Identifier} */ (param.key).name,\n /** @type {import('estree').ObjectPattern} */ (\n param.value\n ).properties.map((prop) => {\n return /** @type {string|[string, string[]]} */ (getParamName(prop, isProperty));\n }),\n ];\n }\n\n case 'AssignmentPattern': {\n switch (param.value.left.type) {\n case 'ArrayPattern':\n return [\n /** @type {import('estree').Identifier} */\n (param.key).name,\n /** @type {import('estree').ArrayPattern} */ (\n param.value.left\n ).elements.map((prop, idx) => {\n return {\n name: idx,\n restElement: prop?.type === 'RestElement',\n };\n }),\n ];\n case 'Identifier':\n // Default parameter\n if (checkDefaultObjects && param.value.right.type === 'ObjectExpression') {\n return [\n /** @type {import('estree').Identifier} */ (\n param.key\n ).name,\n /** @type {import('estree').AssignmentPattern} */ (\n param.value\n ).right.properties.map((prop) => {\n return /** @type {string} */ (getParamName(\n /** @type {import('estree').Property} */\n (prop),\n isProperty,\n ));\n }),\n ];\n }\n\n break;\n case 'ObjectPattern':\n return [\n /** @type {import('estree').Identifier} */\n (param.key).name,\n /** @type {import('estree').ObjectPattern} */ (\n param.value.left\n ).properties.map((prop) => {\n return getParamName(prop, isProperty);\n }),\n ];\n }\n }\n }\n\n switch (param.key.type) {\n case 'Identifier':\n return param.key.name;\n\n // The key of an object could also be a string or number\n case 'Literal':\n /* c8 ignore next 2 -- `raw` may not be present in all parsers */\n return /** @type {string} */ (param.key.raw ||\n param.key.value);\n\n // case 'MemberExpression':\n default:\n // Todo: We should really create a structure (and a corresponding\n // option analogous to `checkRestProperty`) which allows for\n // (and optionally requires) dynamic properties to have a single\n // line of documentation\n return undefined;\n }\n }\n\n if (\n param.type === 'ArrayPattern' ||\n /** @type {import('estree').AssignmentPattern} */ (\n param\n ).left?.type === 'ArrayPattern'\n ) {\n const elements = /** @type {import('estree').ArrayPattern} */ (\n param\n ).elements || /** @type {import('estree').ArrayPattern} */ (\n /** @type {import('estree').AssignmentPattern} */ (\n param\n ).left\n )?.elements;\n const roots = elements.map((prop, idx) => {\n return {\n name: `\"${idx}\"`,\n restElement: prop?.type === 'RestElement',\n };\n });\n\n return [\n undefined, flattenRoots(roots),\n ];\n }\n\n if ([\n 'ExperimentalRestProperty', 'RestElement',\n ].includes(param.type)) {\n return {\n isRestProperty: isProperty,\n name: /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.RestElement} */ (\n param\n // @ts-expect-error Ok\n ).argument).name ?? param?.argument?.elements?.map(({\n // @ts-expect-error Ok\n name,\n }) => {\n return name;\n }),\n restElement: true,\n };\n }\n\n if (param.type === 'TSParameterProperty') {\n return getParamName(\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.TSParameterProperty} */ (\n param\n ).parameter\n ),\n true,\n );\n }\n\n throw new Error(`Unsupported function signature format: \\`${param.type}\\`.`);\n };\n\n if (!functionNode) {\n return [];\n }\n\n return (\n /** @type {import('@typescript-eslint/types').TSESTree.TSFunctionType} */\n (/** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */ (functionNode)?.typeAnnotation?.typeAnnotation)?.params ||\n /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */ (\n functionNode\n ).params || /** @type {import('@typescript-eslint/types').TSESTree.MethodDefinition} */ (\n functionNode\n ).value?.params || []).map((param) => {\n return getParamName(param);\n });\n};\n\n/**\n * @param {ESTreeOrTypeScriptNode} functionNode\n * @returns {Integer}\n */\nconst hasParams = (functionNode) => {\n // Should also check `functionNode.value.params` if supporting `MethodDefinition`\n return /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */ (\n functionNode\n ).params.length;\n};\n\n/**\n * Gets all names of the target type, including those that refer to a path, e.g.\n * `foo` or `foo.bar`.\n * @param {import('comment-parser').Block} jsdoc\n * @param {string} targetTagName\n * @returns {{\n * idx: Integer,\n * name: string,\n * type: string\n * }[]}\n */\nconst getJsdocTagsDeep = (jsdoc, targetTagName) => {\n const ret = [];\n for (const [\n idx,\n {\n name,\n tag,\n type,\n },\n ] of jsdoc.tags.entries()) {\n if (tag !== targetTagName) {\n continue;\n }\n\n ret.push({\n idx,\n name,\n type,\n });\n }\n\n return ret;\n};\n\nconst modeWarnSettings = WarnSettings();\n\n/**\n * @param {ParserMode|undefined} mode\n * @param {import('eslint').Rule.RuleContext} context\n * @returns {import('./tagNames.js').AliasedTags}\n */\nconst getTagNamesForMode = (mode, context) => {\n switch (mode) {\n case 'closure':\n case 'permissive':\n return closureTags;\n case 'jsdoc':\n return jsdocTags;\n case 'typescript':\n return typeScriptTags;\n default:\n if (!modeWarnSettings.hasBeenWarned(context, 'mode')) {\n context.report({\n loc: {\n end: {\n column: 1,\n line: 1,\n },\n start: {\n column: 1,\n line: 1,\n },\n },\n message: `Unrecognized value \\`${mode}\\` for \\`settings.jsdoc.mode\\`.`,\n });\n modeWarnSettings.markSettingAsWarned(context, 'mode');\n }\n\n // We'll avoid breaking too many other rules\n return jsdocTags;\n }\n};\n\n/**\n * @param {import('comment-parser').Spec} tg\n * @param {boolean} [returnArray]\n * @returns {string[]|string}\n */\nconst getTagDescription = (tg, returnArray) => {\n /**\n * @type {string[]}\n */\n const descriptions = [];\n tg.source.some(({\n tokens: {\n description,\n end,\n lineEnd,\n name,\n postDelimiter,\n postTag,\n tag,\n type,\n },\n }) => {\n const desc = (\n tag && postTag ||\n !tag && !name && !type && postDelimiter || ''\n\n // Remove space\n ).slice(1) +\n (description || '') + (lineEnd || '');\n\n if (end) {\n if (desc) {\n descriptions.push(desc);\n }\n\n return true;\n }\n\n descriptions.push(desc);\n\n return false;\n });\n\n return returnArray ? descriptions : descriptions.join('\\n');\n};\n\n/**\n * @typedef {{\n * report: (descriptor: import('eslint').Rule.ReportDescriptor) => void\n * }} Reporter\n */\n\n/**\n * @param {string} name\n * @param {ParserMode|undefined} mode\n * @param {TagNamePreference} tagPreference\n * @param {import('eslint').Rule.RuleContext} context\n * @returns {string|false|{\n * message: string;\n * replacement?: string|undefined;\n * }}\n */\nconst getPreferredTagNameSimple = (\n name,\n mode,\n tagPreference = {},\n // @ts-expect-error Just a no-op\n // eslint-disable-next-line unicorn/no-object-as-default-parameter -- Ok\n context = {\n report () {\n // No-op\n },\n },\n) => {\n const prefValues = Object.values(tagPreference);\n if (prefValues.includes(name) || prefValues.some((prefVal) => {\n return prefVal && typeof prefVal === 'object' && prefVal.replacement === name;\n })) {\n return name;\n }\n\n // Allow keys to have a 'tag ' prefix to avoid upstream bug in ESLint\n // that disallows keys that conflict with Object.prototype,\n // e.g. 'tag constructor' for 'constructor':\n // https://github.com/eslint/eslint/issues/13289\n // https://github.com/gajus/eslint-plugin-jsdoc/issues/537\n const tagPreferenceFixed = Object.fromEntries(\n Object\n .entries(tagPreference)\n .map(([\n key,\n value,\n ]) => {\n return [\n key.replace(/^tag /v, ''), value,\n ];\n }),\n );\n\n if (Object.hasOwn(tagPreferenceFixed, name)) {\n return tagPreferenceFixed[name];\n }\n\n const tagNames = getTagNamesForMode(mode, context);\n\n const preferredTagName = Object.entries(tagNames).find(([\n , aliases,\n ]) => {\n return aliases.includes(name);\n })?.[0];\n if (preferredTagName) {\n return preferredTagName;\n }\n\n return name;\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {ParserMode|undefined} mode\n * @param {string} name\n * @param {string[]} definedTags\n * @returns {boolean}\n */\nconst isValidTag = (\n context,\n mode,\n name,\n definedTags,\n) => {\n const tagNames = getTagNamesForMode(mode, context);\n\n const validTagNames = Object.keys(tagNames).concat(Object.values(tagNames).flat());\n const additionalTags = definedTags;\n const allTags = validTagNames.concat(additionalTags);\n\n return allTags.includes(name);\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {string} targetTagName\n * @returns {boolean}\n */\nconst hasTag = (jsdoc, targetTagName) => {\n const targetTagLower = targetTagName.toLowerCase();\n\n return jsdoc.tags.some((doc) => {\n return doc.tag.toLowerCase() === targetTagLower;\n });\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {(tag: import('@es-joy/jsdoccomment').JsdocTagWithInline) => boolean} filter\n * @returns {import('@es-joy/jsdoccomment').JsdocTagWithInline[]}\n */\nconst filterTags = (jsdoc, filter) => {\n return jsdoc.tags.filter((tag) => {\n return filter(tag);\n });\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {string} tagName\n * @returns {import('comment-parser').Spec[]}\n */\nconst getTags = (jsdoc, tagName) => {\n return filterTags(jsdoc, (item) => {\n return item.tag === tagName;\n });\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {{\n * tagName: string,\n * context?: import('eslint').Rule.RuleContext,\n * mode?: ParserMode,\n * report?: import('./iterateJsdoc.js').Report\n * tagNamePreference?: TagNamePreference\n * skipReportingBlockedTag?: boolean,\n * allowObjectReturn?: boolean,\n * defaultMessage?: string,\n * }} cfg\n * @returns {string|undefined|false|{\n * message: string;\n * replacement?: string|undefined;\n * }|{\n * blocked: true,\n * tagName: string\n * }}\n */\nconst getPreferredTagName = (jsdoc, {\n allowObjectReturn = false,\n context,\n tagName,\n defaultMessage = `Unexpected tag \\`@${tagName}\\``,\n mode,\n report = () => {},\n skipReportingBlockedTag = false,\n tagNamePreference,\n}) => {\n const ret = getPreferredTagNameSimple(tagName, mode, tagNamePreference, context);\n const isObject = ret && typeof ret === 'object';\n if (hasTag(jsdoc, tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n const message = isObject && ret.message || defaultMessage;\n report(message, null, getTags(jsdoc, tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {string} tagName\n * @param {(\n * matchingJsdocTag: import('@es-joy/jsdoccomment').JsdocTagWithInline,\n * targetTagName: string\n * ) => void} arrayHandler\n * @param {object} cfg\n * @param {import('eslint').Rule.RuleContext} [cfg.context]\n * @param {ParserMode} [cfg.mode]\n * @param {import('./iterateJsdoc.js').Report} [cfg.report]\n * @param {TagNamePreference} [cfg.tagNamePreference]\n * @param {boolean} [cfg.skipReportingBlockedTag]\n * @returns {void}\n */\nconst forEachPreferredTag = (\n jsdoc, tagName, arrayHandler,\n {\n context,\n mode,\n report,\n skipReportingBlockedTag = false,\n tagNamePreference,\n } = {},\n) => {\n const targetTagName = /** @type {string|false} */ (\n getPreferredTagName(jsdoc, {\n context,\n mode,\n report,\n skipReportingBlockedTag,\n tagName,\n tagNamePreference,\n })\n );\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n\n const matchingJsdocTags = jsdoc.tags.filter(({\n tag,\n }) => {\n return tag === targetTagName;\n });\n\n for (const matchingJsdocTag of matchingJsdocTags) {\n arrayHandler(\n /**\n * @type {import('@es-joy/jsdoccomment').JsdocTagWithInline}\n */ (\n matchingJsdocTag\n ), targetTagName,\n );\n }\n};\n\n/**\n * Get all inline tags and inline tags in tags\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @returns {(import('comment-parser').Spec|\n * import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: number | undefined; column?: number | undefined;\n * })[]}\n */\nconst getInlineTags = (jsdoc) => {\n return [\n ...jsdoc.inlineTags.map((inlineTag) => {\n // Tags don't have source or line numbers, so add before returning\n let line = -1;\n for (const {\n tokens: {\n description,\n },\n } of jsdoc.source) {\n line++;\n if (description && description.includes(`{@${inlineTag.tag}`)) {\n break;\n }\n }\n\n inlineTag.line = line;\n\n return inlineTag;\n }),\n ...jsdoc.tags.flatMap((tag) => {\n for (const inlineTag of tag.inlineTags) {\n /** @type {import('./iterateJsdoc.js').Integer} */\n let line = 0;\n for (const {\n number,\n tokens: {\n description,\n },\n } of tag.source) {\n if (description && description.includes(`{@${inlineTag.tag}`)) {\n line = number;\n break;\n }\n }\n\n inlineTag.line = line;\n }\n\n return (\n /**\n * @type {import('comment-parser').Spec & {\n * inlineTags: import('@es-joy/jsdoccomment').JsdocInlineTagNoType[]\n * }}\n */ (\n tag\n ).inlineTags\n );\n }),\n ];\n};\n\n/**\n * Get all tags, inline tags and inline tags in tags\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @returns {(import('comment-parser').Spec|\n * import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: number | undefined; column?: number | undefined;\n * })[]}\n */\nconst getAllTags = (jsdoc) => {\n return [\n ...jsdoc.tags,\n ...getInlineTags(jsdoc),\n ];\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {string[]} targetTagNames\n * @returns {boolean}\n */\nconst hasATag = (jsdoc, targetTagNames) => {\n return targetTagNames.some((targetTagName) => {\n return hasTag(jsdoc, targetTagName);\n });\n};\n\n/**\n * Checks if the JSDoc comment has an undefined type.\n * @param {import('comment-parser').Spec|null|undefined} tag\n * the tag which should be checked.\n * @param {ParserMode} mode\n * @returns {boolean}\n * true in case a defined type is undeclared; otherwise false.\n */\nconst mayBeUndefinedTypeTag = (tag, mode) => {\n // The function should not continue in the event the type is not defined...\n if (typeof tag === 'undefined' || tag === null) {\n return true;\n }\n\n // .. same applies if it declares an `{undefined}` or `{void}` type\n const tagType = tag.type.trim();\n\n // Exit early if matching\n if (\n tagType === 'undefined' || tagType === 'void' ||\n tagType === '*' || tagType === 'any'\n ) {\n return true;\n }\n\n let parsedTypes;\n try {\n parsedTypes = tryParse(\n tagType,\n mode === 'permissive' ? undefined : [\n mode,\n ],\n );\n } catch {\n // Ignore\n }\n\n if (\n // We do not traverse deeply as it could be, e.g., `Promise<void>`\n parsedTypes &&\n parsedTypes.type === 'JsdocTypeUnion' &&\n parsedTypes.elements.some((elem) => {\n return elem.type === 'JsdocTypeUndefined' ||\n elem.type === 'JsdocTypeName' && elem.value === 'void';\n })) {\n return true;\n }\n\n // In any other case, a type is present\n return false;\n};\n\n/**\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} map\n * @param {string} tag\n * @returns {Map<string, string|string[]|boolean|undefined>}\n */\nconst ensureMap = (map, tag) => {\n if (!map.has(tag)) {\n map.set(tag, new Map());\n }\n\n return /** @type {Map<string, string | boolean>} */ (map.get(tag));\n};\n\n/**\n * @param {import('./iterateJsdoc.js').StructuredTags} structuredTags\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {void}\n */\nconst overrideTagStructure = (structuredTags, tagMap = tagStructure) => {\n for (const [\n tag,\n {\n name,\n required = [],\n type,\n },\n ] of Object.entries(structuredTags)) {\n const tagStruct = ensureMap(tagMap, tag);\n\n tagStruct.set('namepathRole', name);\n tagStruct.set('typeAllowed', type);\n\n const requiredName = required.includes('name');\n if (requiredName && name === false) {\n throw new Error('Cannot add \"name\" to `require` with the tag\\'s `name` set to `false`');\n }\n\n tagStruct.set('nameRequired', requiredName);\n\n const requiredType = required.includes('type');\n if (requiredType && type === false) {\n throw new Error('Cannot add \"type\" to `require` with the tag\\'s `type` set to `false`');\n }\n\n tagStruct.set('typeRequired', requiredType);\n\n const typeOrNameRequired = required.includes('typeOrNameRequired');\n if (typeOrNameRequired && name === false) {\n throw new Error('Cannot add \"typeOrNameRequired\" to `require` with the tag\\'s `name` set to `false`');\n }\n\n if (typeOrNameRequired && type === false) {\n throw new Error('Cannot add \"typeOrNameRequired\" to `require` with the tag\\'s `type` set to `false`');\n }\n\n tagStruct.set('typeOrNameRequired', typeOrNameRequired);\n }\n};\n\n/**\n * @param {ParserMode} mode\n * @param {import('./iterateJsdoc.js').StructuredTags} structuredTags\n * @returns {import('./getDefaultTagStructureForMode.js').TagStructure}\n */\nconst getTagStructureForMode = (mode, structuredTags) => {\n const tagStruct = getDefaultTagStructureForMode(mode);\n\n try {\n overrideTagStructure(structuredTags, tagStruct);\n /* c8 ignore next 3 */\n } catch {\n //\n }\n\n return tagStruct;\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst isNameOrNamepathDefiningTag = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return /** @type {(string|boolean|undefined)[]} */ ([\n 'name-defining',\n 'namepath-defining',\n ]).includes(/** @type {string|boolean|undefined} */ (\n tagStruct.get('namepathRole')));\n};\n\n/**\n * @param {import('eslint').SourceCode} sourceCode\n * @returns {import('@es-joy/jsdoccomment').JsdocBlockWithInline[]}\n */\nconst getJSDocCommentBlocks = (sourceCode) => {\n return sourceCode.getAllComments()\n .filter((comment) => {\n return (/^\\*(?!\\*)/v).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n });\n};\n\n/**\n * @param {import('eslint').SourceCode} sourceCode\n * @returns {import('comment-parser').Spec[]}\n */\nconst getDocumentNamepathDefiningTags = (sourceCode) => {\n return getJSDocCommentBlocks(sourceCode)\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return isNameOrNamepathDefiningTag(tag) && ![\n 'arg',\n 'argument',\n 'param',\n 'prop',\n 'property',\n ].includes(tag);\n });\n });\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst isNamepathReferencingTag = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n return tagStruct.get('namepathRole') === 'namepath-referencing';\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst isNamepathOrUrlReferencingTag = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n return tagStruct.get('namepathRole') === 'namepath-or-url-referencing';\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|undefined}\n */\nconst tagMustHaveTypePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return /** @type {boolean|undefined} */ (tagStruct.get('typeRequired'));\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|string}\n */\nconst tagMightHaveTypePosition = (tag, tagMap = tagStructure) => {\n if (tagMustHaveTypePosition(tag, tagMap)) {\n return true;\n }\n\n const tagStruct = ensureMap(tagMap, tag);\n\n const ret = /** @type {boolean|undefined} */ (tagStruct.get('typeAllowed'));\n\n return ret === undefined ? true : ret;\n};\n\nconst namepathTypes = new Set([\n 'name-defining', 'namepath-defining',\n 'namepath-referencing',\n]);\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNamePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const ret = tagStruct.get('namepathRole');\n\n return ret === undefined ? true : Boolean(ret);\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNameOrNamepath = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const nampathRole = tagStruct.get('namepathRole');\n\n return nampathRole !== false &&\n namepathTypes.has(/** @type {string} */ (nampathRole));\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNamepath = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const nampathRole = tagStruct.get('namepathRole');\n\n return nampathRole !== false &&\n [\n 'namepath-defining',\n 'namepath-referencing',\n ].includes(/** @type {string} */ (nampathRole));\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveName = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const nampathRole = tagStruct.get('namepathRole');\n\n return nampathRole !== false &&\n nampathRole === 'name-defining';\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|undefined}\n */\nconst tagMustHaveNamePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return /** @type {boolean|undefined} */ (tagStruct.get('nameRequired'));\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveEitherTypeOrNamePosition = (tag, tagMap) => {\n return Boolean(tagMightHaveTypePosition(tag, tagMap)) || tagMightHaveNameOrNamepath(tag, tagMap);\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|undefined}\n */\nconst tagMustHaveEitherTypeOrNamePosition = (tag, tagMap) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return /** @type {boolean} */ (tagStruct.get('typeOrNameRequired'));\n};\n\n/**\n * @param {import('comment-parser').Spec} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|undefined}\n */\nconst tagMissingRequiredTypeOrNamepath = (tag, tagMap = tagStructure) => {\n const mustHaveTypePosition = tagMustHaveTypePosition(tag.tag, tagMap);\n const mightHaveTypePosition = tagMightHaveTypePosition(tag.tag, tagMap);\n const hasTypePosition = mightHaveTypePosition && Boolean(tag.type);\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition(tag.tag, tagMap) ||\n tagMightHaveNameOrNamepath(tag.tag, tagMap)\n ) && Boolean(tag.name);\n const mustHaveEither = tagMustHaveEitherTypeOrNamePosition(tag.tag, tagMap);\n const hasEither = tagMightHaveEitherTypeOrNamePosition(tag.tag, tagMap) &&\n (hasTypePosition || hasNameOrNamepathPosition);\n\n return mustHaveEither && !hasEither && !mustHaveTypePosition;\n};\n\n/* eslint-disable complexity -- Temporary */\n/**\n * @param {ESTreeOrTypeScriptNode|null|undefined} node\n * @param {boolean} [checkYieldReturnValue]\n * @returns {boolean}\n */\nconst hasNonFunctionYield = (node, checkYieldReturnValue) => {\n /* eslint-enable complexity -- Temporary */\n if (!node) {\n return false;\n }\n\n switch (node.type) {\n case 'ArrayExpression':\n\n case 'ArrayPattern':\n return node.elements.some((element) => {\n return hasNonFunctionYield(element, checkYieldReturnValue);\n });\n case 'AssignmentExpression':\n case 'BinaryExpression':\n case 'LogicalExpression': {\n return hasNonFunctionYield(node.left, checkYieldReturnValue) ||\n hasNonFunctionYield(node.right, checkYieldReturnValue);\n }\n\n case 'AssignmentPattern':\n return hasNonFunctionYield(node.right, checkYieldReturnValue);\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return ![\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(bodyNode.type) && hasNonFunctionYield(\n bodyNode, checkYieldReturnValue,\n );\n });\n }\n\n /* c8 ignore next 2 -- In Babel? */\n case 'CallExpression':\n // @ts-expect-error In Babel?\n case 'OptionalCallExpression':\n return node.arguments.some((element) => {\n return hasNonFunctionYield(element, checkYieldReturnValue);\n });\n case 'ChainExpression':\n case 'ExpressionStatement': {\n return hasNonFunctionYield(node.expression, checkYieldReturnValue);\n }\n\n /* c8 ignore next 2 -- In Babel? */\n // @ts-expect-error In Babel?\n case 'ClassProperty':\n\n /* c8 ignore next 2 -- In Babel? */\n // @ts-expect-error In Babel?\n case 'ObjectProperty':\n /* c8 ignore next 2 -- In Babel? */\n case 'Property':\n\n case 'PropertyDefinition':\n return node.computed && hasNonFunctionYield(node.key, checkYieldReturnValue) ||\n hasNonFunctionYield(node.value, checkYieldReturnValue);\n\n case 'ConditionalExpression':\n\n case 'IfStatement': {\n return hasNonFunctionYield(node.test, checkYieldReturnValue) ||\n hasNonFunctionYield(node.consequent, checkYieldReturnValue) ||\n hasNonFunctionYield(node.alternate, checkYieldReturnValue);\n }\n\n case 'DoWhileStatement':\n case 'ForInStatement':\n\n case 'ForOfStatement':\n\n case 'ForStatement':\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'WithStatement': {\n return hasNonFunctionYield(node.body, checkYieldReturnValue);\n }\n\n /* c8 ignore next 2 -- In Babel? */\n // @ts-expect-error In Babel?\n case 'Import':\n case 'ImportExpression':\n return hasNonFunctionYield(node.source, checkYieldReturnValue);\n\n // ?.\n /* c8 ignore next 2 -- In Babel? */\n case 'MemberExpression':\n // @ts-expect-error In Babel?\n case 'OptionalMemberExpression':\n return hasNonFunctionYield(node.object, checkYieldReturnValue) ||\n hasNonFunctionYield(node.property, checkYieldReturnValue);\n\n case 'ObjectExpression':\n case 'ObjectPattern':\n return node.properties.some((property) => {\n return hasNonFunctionYield(property, checkYieldReturnValue);\n });\n /* c8 ignore next 2 -- In Babel? */\n // @ts-expect-error In Babel?\n case 'ObjectMethod':\n /* c8 ignore next 6 -- In Babel? */\n // @ts-expect-error In Babel?\n return node.computed && hasNonFunctionYield(node.key, checkYieldReturnValue) ||\n // @ts-expect-error In Babel?\n node.arguments.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n case 'ReturnStatement': {\n if (node.argument === null) {\n return false;\n }\n\n return hasNonFunctionYield(node.argument, checkYieldReturnValue);\n }\n\n // Comma\n case 'SequenceExpression':\n\n case 'TemplateLiteral':\n return node.expressions.some((subExpression) => {\n return hasNonFunctionYield(subExpression, checkYieldReturnValue);\n });\n case 'SpreadElement':\n\n case 'UnaryExpression':\n return hasNonFunctionYield(node.argument, checkYieldReturnValue);\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n },\n );\n }\n\n case 'TaggedTemplateExpression':\n return hasNonFunctionYield(node.quasi, checkYieldReturnValue);\n\n case 'TryStatement': {\n return hasNonFunctionYield(node.block, checkYieldReturnValue) ||\n hasNonFunctionYield(\n node.handler && node.handler.body, checkYieldReturnValue,\n ) ||\n hasNonFunctionYield(\n /** @type {import('@typescript-eslint/types').TSESTree.BlockStatement} */\n (node.finalizer),\n checkYieldReturnValue,\n );\n }\n\n case 'VariableDeclaration': {\n return node.declarations.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n }\n\n case 'VariableDeclarator': {\n return hasNonFunctionYield(node.id, checkYieldReturnValue) ||\n hasNonFunctionYield(node.init, checkYieldReturnValue);\n }\n\n case 'YieldExpression': {\n if (checkYieldReturnValue) {\n if (\n /** @type {import('eslint').Rule.Node} */ (\n node\n ).parent?.type === 'VariableDeclarator'\n ) {\n return true;\n }\n\n return false;\n }\n\n // void return does not count.\n if (node.argument === null) {\n return false;\n }\n\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * Checks if a node has a return statement. Void return does not count.\n * @param {ESTreeOrTypeScriptNode} node\n * @param {boolean} [checkYieldReturnValue]\n * @returns {boolean}\n */\nconst hasYieldValue = (node, checkYieldReturnValue) => {\n return /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */ (\n node\n ).generator && (\n /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */ (\n node\n ).expression || hasNonFunctionYield(\n /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */\n (node).body,\n checkYieldReturnValue,\n )\n );\n};\n\n/**\n * Checks if a node has a throws statement.\n * @param {ESTreeOrTypeScriptNode|null|undefined} node\n * @param {boolean} [innerFunction]\n * @returns {boolean}\n */\nconst hasThrowValue = (node, innerFunction) => {\n if (!node) {\n return false;\n }\n\n // There are cases where a function may execute its inner function which\n // throws, but we're treating functions atomically rather than trying to\n // follow them\n switch (node.type) {\n case 'ArrowFunctionExpression':\n case 'FunctionDeclaration':\n case 'FunctionExpression': {\n return !innerFunction && !node.async && hasThrowValue(node.body, true);\n }\n\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return bodyNode.type !== 'FunctionDeclaration' && hasThrowValue(bodyNode);\n });\n }\n\n case 'DoWhileStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'ForStatement':\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'WithStatement': {\n return hasThrowValue(node.body);\n }\n\n case 'IfStatement': {\n return hasThrowValue(node.consequent) || hasThrowValue(node.alternate);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasThrowValue(nde);\n });\n },\n );\n }\n\n case 'ThrowStatement': {\n return true;\n }\n\n // We only consider it to throw an error if the catch or finally blocks throw an error.\n case 'TryStatement': {\n return hasThrowValue(node.handler && node.handler.body) ||\n hasThrowValue(node.finalizer);\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * @param {string} tag\n */\n/*\nconst isInlineTag = (tag) => {\n return /^(@link|@linkcode|@linkplain|@tutorial) /v.test(tag);\n};\n*/\n\n/**\n * Splits a `@template` tag's names on commas that separate template entries,\n * ignoring commas nested within a type expression so that default values such\n * as `[T=Record<string, unknown>]` are not split apart.\n *\n * Only `<`, `(` and `{` are treated as nesting: a comma within them is part of\n * a type (generic arguments, function params, object type). Square brackets are\n * deliberately not counted, since `[...]` is the optional/default wrapper in\n * which commas do separate entries, e.g. `[T=string, U=number]`.\n * @param {string} str\n * @returns {string[]}\n */\nconst splitTopLevelCommas = (str) => {\n const parts = [];\n let depth = 0;\n let current = '';\n for (const char of str) {\n if (char === '<' || char === '{' || char === '(') {\n depth++;\n } else if (char === '>' || char === '}' || char === ')') {\n depth = Math.max(0, depth - 1);\n }\n\n if (char === ',' && depth === 0) {\n parts.push(current);\n current = '';\n } else {\n current += char;\n }\n }\n\n parts.push(current);\n\n return parts;\n};\n\n/**\n * Parses GCC Generic/Template types\n * @see {@link https://github.com/google/closure-compiler/wiki/Generic-Types}\n * @see {@link https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#template}\n * @param {import('comment-parser').Spec} tag\n * @returns {string[]}\n */\nconst parseClosureTemplateTag = (tag) => {\n return splitTopLevelCommas(tag.name)\n .map((type) => {\n return type.trim().replace(/^\\[?(?<name>.*?)=.*$/v, '$<name>');\n });\n};\n\n/**\n * @typedef {true|string[]} DefaultContexts\n */\n\n/**\n * Checks user option for `contexts` array, defaulting to\n * contexts designated by the rule. Returns an array of\n * ESTree AST types, indicating allowable contexts.\n * @param {import('eslint').Rule.RuleContext} context\n * @param {DefaultContexts|undefined} defaultContexts\n * @param {{\n * contexts?: import('./iterateJsdoc.js').Context[]\n * }} settings\n * @returns {(string|import('./iterateJsdoc.js').ContextObject)[]}\n */\nconst enforcedContexts = (context, defaultContexts, settings) => {\n const contexts = context.options[0]?.contexts || settings.contexts || (defaultContexts === true ? [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n 'TSDeclareFunction',\n ] : defaultContexts);\n\n return contexts;\n};\n\n/**\n * @param {import('./iterateJsdoc.js').Context[]} contexts\n * @param {import('./iterateJsdoc.js').CheckJsdoc} checkJsdoc\n * @param {import('@es-joy/jsdoccomment').CommentHandler} [handler]\n * @returns {import('eslint').Rule.RuleListener}\n */\nconst getContextObject = (contexts, checkJsdoc, handler) => {\n /** @type {import('eslint').Rule.RuleListener} */\n const properties = {};\n\n for (const [\n idx,\n prop,\n ] of contexts.entries()) {\n /** @type {string} */\n let property;\n\n /** @type {(node: import('eslint').Rule.Node) => void} */\n let value;\n\n if (typeof prop === 'object') {\n const selInfo = {\n lastIndex: idx,\n selector: prop.context,\n };\n if (prop.comment) {\n property = /** @type {string} */ (prop.context);\n value = checkJsdoc.bind(\n null,\n {\n ...selInfo,\n comment: prop.comment,\n },\n /**\n * @type {(jsdoc: import('@es-joy/jsdoccomment').JsdocBlockWithInline) => boolean}\n */\n (/** @type {import('@es-joy/jsdoccomment').CommentHandler} */ (\n handler\n ).bind(null, prop.comment)),\n );\n } else {\n property = /** @type {string} */ (prop.context);\n value = checkJsdoc.bind(null, selInfo, null);\n }\n } else {\n const selInfo = {\n lastIndex: idx,\n selector: prop,\n };\n property = prop;\n value = checkJsdoc.bind(null, selInfo, null);\n }\n\n const old = /**\n * @type {((node: import('eslint').Rule.Node) => void)}\n */ (properties[property]);\n properties[property] = old ?\n /**\n * @type {((node: import('eslint').Rule.Node) => void)}\n */\n function (node) {\n old(node);\n value(node);\n } :\n value;\n }\n\n return properties;\n};\n\nconst tagsWithNamesAndDescriptions = new Set([\n 'arg', 'argument', 'param', 'prop', 'property',\n 'return',\n\n // These two are parsed by our custom parser as though having a `name`\n 'returns', 'template',\n]);\n\n/**\n * @typedef {{\n * [key: string]: false|string|\n * {message: string, replacement?: string}\n * }} TagNamePreference\n */\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {ParserMode|undefined} mode\n * @param {import('comment-parser').Spec[]} tags\n * @returns {{\n * tagsWithNames: import('comment-parser').Spec[],\n * tagsWithoutNames: import('comment-parser').Spec[]\n * }}\n */\nconst getTagsByType = (context, mode, tags) => {\n /**\n * @type {import('comment-parser').Spec[]}\n */\n const tagsWithoutNames = [];\n const tagsWithNames = tags.filter((tag) => {\n const {\n tag: tagName,\n } = tag;\n const tagWithName = tagsWithNamesAndDescriptions.has(tagName);\n if (!tagWithName) {\n tagsWithoutNames.push(tag);\n }\n\n return tagWithName;\n });\n\n return {\n tagsWithNames,\n tagsWithoutNames,\n };\n};\n\n/**\n * @param {import('eslint').SourceCode|{\n * text: string\n * }} sourceCode\n * @returns {string}\n */\nconst getIndent = (sourceCode) => {\n return (sourceCode.text.match(/^\\n*([ \\t]+)/v)?.[1] ?? '') + ' ';\n};\n\n/**\n * @param {import('eslint').Rule.Node|null} node\n * @returns {boolean}\n */\nconst isConstructor = (node) => {\n return node?.type === 'MethodDefinition' && node.kind === 'constructor' ||\n /** @type {import('@typescript-eslint/types').TSESTree.MethodDefinition} */ (\n node?.parent\n )?.kind === 'constructor';\n};\n\n/**\n * @param {import('eslint').Rule.Node|null} node\n * @returns {boolean}\n */\nconst isGetter = (node) => {\n return node !== null &&\n /**\n * @type {import('@typescript-eslint/types').TSESTree.MethodDefinition|\n * import('@typescript-eslint/types').TSESTree.Property}\n */ (\n node.parent\n )?.kind === 'get';\n};\n\n/**\n * @param {import('eslint').Rule.Node|null} node\n * @returns {boolean}\n */\nconst isSetter = (node) => {\n return node !== null &&\n /**\n * @type {import('@typescript-eslint/types').TSESTree.MethodDefinition|\n * import('@typescript-eslint/types').TSESTree.Property}\n */(\n node.parent\n )?.kind === 'set';\n};\n\n/**\n * @param {import('eslint').Rule.Node} node\n * @returns {boolean}\n */\nconst hasAccessorPair = (node) => {\n const {\n key,\n kind: sourceKind,\n type,\n } =\n /**\n * @type {import('@typescript-eslint/types').TSESTree.MethodDefinition|\n * import('@typescript-eslint/types').TSESTree.Property}\n */ (node);\n\n const sourceName =\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n key\n ).name;\n\n const oppositeKind = sourceKind === 'get' ? 'set' : 'get';\n\n const sibling = type === 'MethodDefinition' ?\n /** @type {import('@typescript-eslint/types').TSESTree.ClassBody} */ (\n node.parent\n ).body :\n /** @type {import('@typescript-eslint/types').TSESTree.ObjectExpression} */ (\n node.parent\n ).properties;\n\n return (\n sibling.some((child) => {\n const {\n key: ky,\n kind,\n } = /**\n * @type {import('@typescript-eslint/types').TSESTree.MethodDefinition|\n * import('@typescript-eslint/types').TSESTree.Property}\n */ (child);\n\n const name =\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n ky\n ).name;\n\n return kind === oppositeKind && name === sourceName;\n })\n );\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {import('eslint').Rule.Node|null} node\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('json-schema').JSONSchema4} schema\n * @returns {boolean}\n */\nconst exemptSpeciaMethods = (jsdoc, node, context, schema) => {\n /**\n * @param {\"checkGetters\"|\"checkSetters\"|\"checkConstructors\"} prop\n * @returns {boolean|\"no-setter\"|\"no-getter\"}\n */\n const hasSchemaOption = (prop) => {\n const schemaProperties = schema[0].properties;\n\n return context.options[0]?.[prop] ??\n (schemaProperties[prop] && schemaProperties[prop].default);\n };\n\n const checkGetters = hasSchemaOption('checkGetters');\n const checkSetters = hasSchemaOption('checkSetters');\n\n return !hasSchemaOption('checkConstructors') &&\n (\n isConstructor(node) ||\n hasATag(jsdoc, [\n 'class',\n 'constructor',\n ])) ||\n isGetter(node) && (\n !checkGetters ||\n checkGetters === 'no-setter' && hasAccessorPair(\n /** @type {import('./iterateJsdoc.js').Node} */\n (/** @type {import('./iterateJsdoc.js').Node} */ (node).parent),\n )\n ) ||\n isSetter(node) && (\n !checkSetters ||\n checkSetters === 'no-getter' && hasAccessorPair(\n /** @type {import('./iterateJsdoc.js').Node} */\n (/** @type {import('./iterateJsdoc.js').Node} */ (node).parent),\n )\n );\n};\n\n/**\n * Since path segments may be unquoted (if matching a reserved word,\n * identifier or numeric literal) or single or double quoted, in either\n * the `@param` or in source, we need to strip the quotes to give a fair\n * comparison.\n * @param {string} str\n * @returns {string}\n */\nconst dropPathSegmentQuotes = (str) => {\n return str.replaceAll(/\\.(['\"])(.*)\\1/gv, '.$2');\n};\n\n/**\n * @param {string} name\n * @returns {(otherPathName: string) => boolean}\n */\nconst comparePaths = (name) => {\n return (otherPathName) => {\n return otherPathName === name ||\n dropPathSegmentQuotes(otherPathName) === dropPathSegmentQuotes(name);\n };\n};\n\n/**\n * @callback PathDoesNotBeginWith\n * @param {string} name\n * @param {string} otherPathName\n * @returns {boolean}\n */\n\n/** @type {PathDoesNotBeginWith} */\nconst pathDoesNotBeginWith = (name, otherPathName) => {\n return !name.startsWith(otherPathName) &&\n !dropPathSegmentQuotes(name).startsWith(dropPathSegmentQuotes(otherPathName));\n};\n\n/**\n * @param {string} regexString\n * @param {string} [requiredFlags]\n * @returns {RegExp}\n */\nconst getRegexFromString = (regexString, requiredFlags) => {\n const match = regexString.match(/^\\/(.*)\\/([gimyvus]*)$/vs);\n let flags = 'v';\n let regex = regexString;\n if (match) {\n [\n , regex,\n flags,\n ] = match;\n if (!flags) {\n flags = 'v';\n }\n }\n\n const uniqueFlags = [\n ...new Set(flags + (requiredFlags || '')),\n ];\n flags = uniqueFlags.join('');\n\n return new RegExp(regex, flags);\n};\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\n/**\n * @param {import('@es-joy/jsdoccomment').JsdocBlockWithInline} jsdoc\n * @param {import('@es-joy/jsdoccomment').JsdocTagWithInline} tag\n * @param {import('jsdoc-type-pratt-parser').RootResult} parsedType\n * @param {string} indent\n * @param {string} typeBracketSpacing\n */\nconst rewireByParsedType = (jsdoc, tag, parsedType, indent, typeBracketSpacing = '') => {\n const typeLines = stringify(parsedType).split('\\n');\n const firstTypeLine = typeLines.shift();\n const lastTypeLine = typeLines.pop();\n\n const beginNameOrDescIdx = tag.source.findIndex(({\n tokens,\n }) => {\n return tokens.name || tokens.description;\n });\n\n const nameAndDesc = beginNameOrDescIdx === -1 ?\n null :\n tag.source.slice(beginNameOrDescIdx);\n\n const initialNumber = tag.source[0].number;\n\n const src = [\n // Get inevitably present tag from first `tag.source`\n {\n number: initialNumber,\n source: '',\n tokens: {\n ...tag.source[0].tokens,\n ...(typeLines.length || lastTypeLine ? {\n end: '',\n name: '',\n postName: '',\n postType: '',\n } : (nameAndDesc ? {\n name: nameAndDesc[0].tokens.name,\n postType: ' ',\n } : {})),\n type: '{' + typeBracketSpacing + firstTypeLine + (!typeLines.length && lastTypeLine === undefined ? typeBracketSpacing + '}' : ''),\n },\n },\n // Get any intervening type lines\n ...(typeLines.length ? typeLines.map((typeLine, idx) => {\n return {\n number: initialNumber + idx + 1,\n source: '',\n tokens: {\n // Grab any delimiter info from first item\n ...tag.source[0].tokens,\n delimiter: tag.source[0].tokens.delimiter === '/**' ? '*' : tag.source[0].tokens.delimiter,\n end: '',\n name: '',\n postName: '',\n postTag: '',\n postType: '',\n start: indent + ' ',\n tag: '',\n type: typeLine,\n },\n };\n }) : []),\n ];\n\n // Merge any final type line and name and description\n if (\n // Name and description may be already included if present with the tag\n nameAndDesc && beginNameOrDescIdx > 0\n ) {\n if (typeLines.length || lastTypeLine !== undefined) {\n src.push({\n number: src.length + 1,\n source: '',\n tokens: {\n ...nameAndDesc[0].tokens,\n type: lastTypeLine + typeBracketSpacing + '}',\n },\n });\n }\n\n if (\n // Get any remaining description lines\n nameAndDesc.length > 1\n ) {\n src.push(\n ...nameAndDesc.slice(1).map(({\n source,\n tokens,\n }, idx) => {\n return {\n number: src.length + idx + 2,\n source,\n tokens,\n };\n }),\n );\n }\n } else if (nameAndDesc) {\n if ((typeLines.length || lastTypeLine !== undefined) && lastTypeLine) {\n src.push({\n number: src.length + 1,\n source: '',\n tokens: {\n ...nameAndDesc[0].tokens,\n delimiter: nameAndDesc[0].tokens.delimiter === '/**' ? '*' : nameAndDesc[0].tokens.delimiter,\n postTag: '',\n start: indent + ' ',\n tag: '',\n type: lastTypeLine + typeBracketSpacing + '}',\n },\n });\n }\n\n if (\n // Get any remaining description lines\n nameAndDesc.length > 1\n ) {\n src.push(\n ...nameAndDesc.slice(1).map(({\n source,\n tokens,\n }, idx) => {\n return {\n number: src.length + idx + 2,\n source,\n tokens,\n };\n }),\n );\n }\n } else if (lastTypeLine) {\n src.push({\n number: src.length + 1,\n source: '',\n tokens: {\n ...tag.source[0].tokens,\n delimiter: tag.source[0].tokens.delimiter === '/**' ? '*' : tag.source[0].tokens.delimiter,\n postTag: '',\n start: indent + ' ',\n tag: '',\n type: lastTypeLine + typeBracketSpacing + '}',\n },\n });\n }\n\n tag.source = src;\n\n // Properly rewire `jsdoc.source`\n const firstTagIdx = jsdoc.source.findIndex(({\n tokens: {\n tag: tg,\n },\n }) => {\n return tg;\n });\n\n const initialEndSource = jsdoc.source.find(({\n tokens: {\n end,\n },\n }) => {\n return end;\n });\n\n jsdoc.source = [\n ...jsdoc.source.slice(0, firstTagIdx),\n ...jsdoc.tags.flatMap(({\n source,\n }) => {\n return source;\n }),\n ];\n\n if (initialEndSource && !jsdoc.source.at(-1)?.tokens?.end) {\n jsdoc.source.push(initialEndSource);\n }\n};\n\nexport {\n comparePaths,\n dropPathSegmentQuotes,\n enforcedContexts,\n exemptSpeciaMethods,\n filterTags,\n flattenRoots,\n forEachPreferredTag,\n getAllTags,\n getContextObject,\n getDocumentNamepathDefiningTags,\n getFunctionParameterNames,\n getIndent,\n getInlineTags,\n getJSDocCommentBlocks,\n getJsdocTagsDeep,\n getPreferredTagName,\n getPreferredTagNameSimple,\n getRegexFromString,\n getTagDescription,\n getTags,\n getTagsByType,\n getTagStructureForMode,\n hasATag,\n hasParams,\n\n hasTag,\n hasThrowValue,\n\n hasYieldValue,\n isConstructor,\n isGetter,\n isNameOrNamepathDefiningTag,\n isNamepathOrUrlReferencingTag,\n isNamepathReferencingTag,\n isSetter,\n isValidTag,\n mayBeUndefinedTypeTag,\n overrideTagStructure,\n parseClosureTemplateTag,\n pathDoesNotBeginWith,\n rewireByParsedType,\n setTagStructure,\n strictNativeTypes,\n tagMightHaveEitherTypeOrNamePosition,\n tagMightHaveName,\n tagMightHaveNameOrNamepath,\n tagMightHaveNamepath,\n tagMightHaveNamePosition,\n tagMightHaveTypePosition,\n tagMissingRequiredTypeOrNamepath,\n tagMustHaveNamePosition,\n tagMustHaveTypePosition,\n};\nexport {\n hasReturnValue,\n hasValueOrExecutorHasNonEmptyResolveValue,\n} from './utils/hasReturnValue.js';\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"jsdocUtils.cjs","names":["getDefaultTagStructureForMode","WarnSettings","closureTags","jsdocTags","typeScriptTags","tryParse","parseComment","stringify"],"sources":["../src/jsdocUtils.js"],"sourcesContent":["import getDefaultTagStructureForMode from './getDefaultTagStructureForMode.js';\nimport {\n closureTags,\n jsdocTags,\n typeScriptTags,\n} from './tagNames.js';\nimport WarnSettings from './WarnSettings.js';\nimport {\n parseComment,\n stringify,\n tryParse,\n} from '@es-joy/jsdoccomment';\n\n/**\n * @typedef {number} Integer\n */\n/**\n * @typedef {import('./utils/hasReturnValue.js').ESTreeOrTypeScriptNode} ESTreeOrTypeScriptNode\n */\n\n/**\n * @typedef {\"jsdoc\"|\"typescript\"|\"closure\"|\"permissive\"} ParserMode\n */\n\n/**\n * @type {import('./getDefaultTagStructureForMode.js').TagStructure}\n */\nlet tagStructure;\n\n/**\n * @param {ParserMode} mode\n * @returns {void}\n */\nconst setTagStructure = (mode) => {\n tagStructure = getDefaultTagStructureForMode(mode);\n};\n\n/**\n * @typedef {undefined|string|{\n * name: Integer,\n * restElement: boolean\n * }|{\n * isRestProperty: boolean|undefined,\n * name: string,\n * restElement: boolean\n * }|{\n * name: string,\n * restElement: boolean\n * }} ParamCommon\n */\n/**\n * @typedef {ParamCommon|[string|undefined, (FlattendRootInfo & {\n * annotationParamName?: string,\n * })]|NestedParamInfo} ParamNameInfo\n */\n\n/**\n * @typedef {{\n * hasPropertyRest: boolean,\n * hasRestElement: boolean,\n * names: string[],\n * rests: boolean[],\n * }} FlattendRootInfo\n */\n/**\n * @typedef {[string, (string[]|ParamInfo[])]} NestedParamInfo\n */\n/**\n * @typedef {ParamCommon|\n * [string|undefined, (FlattendRootInfo & {\n * annotationParamName?: string\n * })]|\n * NestedParamInfo} ParamInfo\n */\n\n/**\n * Given a nested array of property names, reduce them to a single array,\n * appending the name of the root element along the way if present.\n * @callback FlattenRoots\n * @param {ParamInfo[]} params\n * @param {string} [root]\n * @returns {FlattendRootInfo}\n */\n\n/** @type {FlattenRoots} */\nconst flattenRoots = (params, root = '') => {\n let hasRestElement = false;\n let hasPropertyRest = false;\n\n /**\n * @type {boolean[]}\n */\n const rests = [];\n\n const names = params.reduce(\n /**\n * @param {string[]} acc\n * @param {ParamInfo} cur\n * @returns {string[]}\n */\n (acc, cur) => {\n if (Array.isArray(cur)) {\n let nms;\n if (Array.isArray(cur[1])) {\n nms = cur[1];\n } else {\n if (cur[1].hasRestElement) {\n hasRestElement = true;\n }\n\n if (cur[1].hasPropertyRest) {\n hasPropertyRest = true;\n }\n\n nms = cur[1].names;\n }\n\n const flattened = flattenRoots(nms, root ? `${root}.${cur[0]}` : cur[0]);\n if (flattened.hasRestElement) {\n hasRestElement = true;\n }\n\n if (flattened.hasPropertyRest) {\n hasPropertyRest = true;\n }\n\n const inner = /** @type {string[]} */ ([\n root ? `${root}.${cur[0]}` : cur[0],\n ...flattened.names,\n ].filter(Boolean));\n rests.push(false, ...flattened.rests);\n\n return acc.concat(inner);\n }\n\n if (typeof cur === 'object') {\n if ('isRestProperty' in cur && cur.isRestProperty) {\n hasPropertyRest = true;\n rests.push(true);\n } else {\n rests.push(false);\n }\n\n if ('restElement' in cur && cur.restElement) {\n hasRestElement = true;\n }\n\n acc.push(root ? `${root}.${String(cur.name)}` : String(cur.name));\n } else if (typeof cur !== 'undefined') {\n rests.push(false);\n acc.push(root ? `${root}.${cur}` : cur);\n }\n\n return acc;\n }, [],\n );\n\n return {\n hasPropertyRest,\n hasRestElement,\n names,\n rests,\n };\n};\n\n/**\n * @param {import('@typescript-eslint/types').TSESTree.TSIndexSignature|\n * import('@typescript-eslint/types').TSESTree.TSConstructSignatureDeclaration|\n * import('@typescript-eslint/types').TSESTree.TSCallSignatureDeclaration|\n * import('@typescript-eslint/types').TSESTree.TSPropertySignature} propSignature\n * @returns {undefined|string|[string, string[]]}\n */\nconst getPropertiesFromPropertySignature = (propSignature) => {\n if (\n propSignature.type === 'TSIndexSignature' ||\n propSignature.type === 'TSConstructSignatureDeclaration' ||\n propSignature.type === 'TSCallSignatureDeclaration'\n ) {\n return undefined;\n }\n\n if (propSignature.typeAnnotation && propSignature.typeAnnotation.typeAnnotation.type === 'TSTypeLiteral') {\n return [\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n propSignature.key\n ).name,\n propSignature.typeAnnotation.typeAnnotation.members.map((member) => {\n return /** @type {string} */ (\n getPropertiesFromPropertySignature(\n /** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */ (\n member\n ),\n )\n );\n }),\n ];\n }\n\n return /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n propSignature.key\n ).name;\n};\n\n/**\n * @param {ESTreeOrTypeScriptNode|null} functionNode\n * @param {boolean} [checkDefaultObjects]\n * @param {boolean} [ignoreInterfacedParameters]\n * @throws {Error}\n * @returns {ParamNameInfo[]}\n */\nconst getFunctionParameterNames = (\n functionNode, checkDefaultObjects, ignoreInterfacedParameters,\n) => {\n /* eslint-disable complexity -- Temporary */\n /**\n * @param {import('estree').Identifier|import('estree').AssignmentPattern|\n * import('estree').ObjectPattern|import('estree').Property|\n * import('estree').RestElement|import('estree').ArrayPattern|\n * import('@typescript-eslint/types').TSESTree.TSParameterProperty|\n * import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.RestElement|\n * import('@typescript-eslint/types').TSESTree.Identifier|\n * import('@typescript-eslint/types').TSESTree.ObjectPattern|\n * import('@typescript-eslint/types').TSESTree.BindingName|\n * import('@typescript-eslint/types').TSESTree.Parameter\n * } param\n * @param {boolean} [isProperty]\n * @returns {ParamNameInfo|[string, ParamNameInfo[]]}\n */\n const getParamName = (param, isProperty) => {\n /* eslint-enable complexity -- Temporary */\n const hasLeftTypeAnnotation = 'left' in param && 'typeAnnotation' in param.left;\n\n if ('typeAnnotation' in param || hasLeftTypeAnnotation) {\n if (ignoreInterfacedParameters && 'typeAnnotation' in param &&\n param.typeAnnotation) {\n // No-op\n return [\n undefined, {\n hasPropertyRest: false,\n hasRestElement: false,\n names: [],\n rests: [],\n },\n ];\n }\n\n const typeAnnotation = hasLeftTypeAnnotation ?\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n param.left\n ).typeAnnotation :\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier|import('@typescript-eslint/types').TSESTree.ObjectPattern} */\n (param).typeAnnotation;\n\n if (typeAnnotation?.typeAnnotation?.type === 'TSTypeLiteral') {\n const propertyNames = typeAnnotation.typeAnnotation.members.map((member) => {\n return getPropertiesFromPropertySignature(\n /** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */\n (member),\n );\n });\n\n const flattened = {\n ...flattenRoots(propertyNames),\n annotationParamName: 'name' in param ? param.name : undefined,\n };\n const hasLeftName = 'left' in param && 'name' in param.left;\n\n if ('name' in param || hasLeftName) {\n return [\n hasLeftName ?\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n param.left\n ).name :\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n param\n ).name,\n flattened,\n ];\n }\n\n return [\n undefined, flattened,\n ];\n }\n }\n\n if ('name' in param) {\n return param.name;\n }\n\n if ('left' in param && 'name' in param.left) {\n return param.left.name;\n }\n\n if (\n param.type === 'ObjectPattern' ||\n ('left' in param &&\n (\n param\n ).left.type === 'ObjectPattern')\n ) {\n const properties = /** @type {import('@typescript-eslint/types').TSESTree.ObjectPattern} */ (\n param\n ).properties ||\n /** @type {import('estree').ObjectPattern} */\n (\n /** @type {import('@typescript-eslint/types').TSESTree.AssignmentPattern} */ (\n param\n ).left\n )?.properties;\n const roots = properties.map((prop) => {\n return getParamName(prop, true);\n });\n\n return [\n undefined, flattenRoots(roots),\n ];\n }\n\n if (param.type === 'Property') {\n switch (param.value.type) {\n case 'ArrayPattern': {\n return [\n /** @type {import('estree').Identifier} */\n (param.key).name,\n /** @type {import('estree').ArrayPattern} */ (\n param.value\n ).elements.map((prop, idx) => {\n return {\n name: idx,\n restElement: prop?.type === 'RestElement',\n };\n }),\n ];\n }\n\n case 'ObjectPattern': {\n return [\n /** @type {import('estree').Identifier} */ (param.key).name,\n /** @type {import('estree').ObjectPattern} */ (\n param.value\n ).properties.map((prop) => {\n return /** @type {string|[string, string[]]} */ (getParamName(prop, isProperty));\n }),\n ];\n }\n\n case 'AssignmentPattern': {\n switch (param.value.left.type) {\n case 'ArrayPattern':\n return [\n /** @type {import('estree').Identifier} */\n (param.key).name,\n /** @type {import('estree').ArrayPattern} */ (\n param.value.left\n ).elements.map((prop, idx) => {\n return {\n name: idx,\n restElement: prop?.type === 'RestElement',\n };\n }),\n ];\n case 'Identifier':\n // Default parameter\n if (checkDefaultObjects && param.value.right.type === 'ObjectExpression') {\n return [\n /** @type {import('estree').Identifier} */ (\n param.key\n ).name,\n /** @type {import('estree').AssignmentPattern} */ (\n param.value\n ).right.properties.map((prop) => {\n return /** @type {string} */ (getParamName(\n /** @type {import('estree').Property} */\n (prop),\n isProperty,\n ));\n }),\n ];\n }\n\n break;\n case 'ObjectPattern':\n return [\n /** @type {import('estree').Identifier} */\n (param.key).name,\n /** @type {import('estree').ObjectPattern} */ (\n param.value.left\n ).properties.map((prop) => {\n return getParamName(prop, isProperty);\n }),\n ];\n }\n }\n }\n\n switch (param.key.type) {\n case 'Identifier':\n return param.key.name;\n\n // The key of an object could also be a string or number\n case 'Literal':\n /* c8 ignore next 2 -- `raw` may not be present in all parsers */\n return /** @type {string} */ (param.key.raw ||\n param.key.value);\n\n // case 'MemberExpression':\n default:\n // Todo: We should really create a structure (and a corresponding\n // option analogous to `checkRestProperty`) which allows for\n // (and optionally requires) dynamic properties to have a single\n // line of documentation\n return undefined;\n }\n }\n\n if (\n param.type === 'ArrayPattern' ||\n /** @type {import('estree').AssignmentPattern} */ (\n param\n ).left?.type === 'ArrayPattern'\n ) {\n const elements = /** @type {import('estree').ArrayPattern} */ (\n param\n ).elements || /** @type {import('estree').ArrayPattern} */ (\n /** @type {import('estree').AssignmentPattern} */ (\n param\n ).left\n )?.elements;\n const roots = elements.map((prop, idx) => {\n return {\n name: `\"${idx}\"`,\n restElement: prop?.type === 'RestElement',\n };\n });\n\n return [\n undefined, flattenRoots(roots),\n ];\n }\n\n if ([\n 'ExperimentalRestProperty', 'RestElement',\n ].includes(param.type)) {\n return {\n isRestProperty: isProperty,\n name: /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.RestElement} */ (\n param\n // @ts-expect-error Ok\n ).argument).name ?? param?.argument?.elements?.map(({\n // @ts-expect-error Ok\n name,\n }) => {\n return name;\n }),\n restElement: true,\n };\n }\n\n if (param.type === 'TSParameterProperty') {\n return getParamName(\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n /** @type {import('@typescript-eslint/types').TSESTree.TSParameterProperty} */ (\n param\n ).parameter\n ),\n true,\n );\n }\n\n throw new Error(`Unsupported function signature format: \\`${param.type}\\`.`);\n };\n\n if (!functionNode) {\n return [];\n }\n\n return (\n /** @type {import('@typescript-eslint/types').TSESTree.TSFunctionType} */\n (/** @type {import('@typescript-eslint/types').TSESTree.TSPropertySignature} */ (functionNode)?.typeAnnotation?.typeAnnotation)?.params ||\n /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */ (\n functionNode\n ).params || /** @type {import('@typescript-eslint/types').TSESTree.MethodDefinition} */ (\n functionNode\n ).value?.params || []).map((param) => {\n return getParamName(param);\n });\n};\n\n/**\n * @param {ESTreeOrTypeScriptNode} functionNode\n * @returns {Integer}\n */\nconst hasParams = (functionNode) => {\n // Should also check `functionNode.value.params` if supporting `MethodDefinition`\n return /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */ (\n functionNode\n ).params.length;\n};\n\n/**\n * Gets all names of the target type, including those that refer to a path, e.g.\n * `foo` or `foo.bar`.\n * @param {import('comment-parser').Block} jsdoc\n * @param {string} targetTagName\n * @returns {{\n * idx: Integer,\n * name: string,\n * type: string\n * }[]}\n */\nconst getJsdocTagsDeep = (jsdoc, targetTagName) => {\n const ret = [];\n for (const [\n idx,\n {\n name,\n tag,\n type,\n },\n ] of jsdoc.tags.entries()) {\n if (tag !== targetTagName) {\n continue;\n }\n\n ret.push({\n idx,\n name,\n type,\n });\n }\n\n return ret;\n};\n\nconst modeWarnSettings = WarnSettings();\n\n/**\n * @param {ParserMode|undefined} mode\n * @param {import('eslint').Rule.RuleContext} context\n * @returns {import('./tagNames.js').AliasedTags}\n */\nconst getTagNamesForMode = (mode, context) => {\n switch (mode) {\n case 'closure':\n case 'permissive':\n return closureTags;\n case 'jsdoc':\n return jsdocTags;\n case 'typescript':\n return typeScriptTags;\n default:\n if (!modeWarnSettings.hasBeenWarned(context, 'mode')) {\n context.report({\n loc: {\n end: {\n column: 1,\n line: 1,\n },\n start: {\n column: 1,\n line: 1,\n },\n },\n message: `Unrecognized value \\`${mode}\\` for \\`settings.jsdoc.mode\\`.`,\n });\n modeWarnSettings.markSettingAsWarned(context, 'mode');\n }\n\n // We'll avoid breaking too many other rules\n return jsdocTags;\n }\n};\n\n/**\n * @param {import('comment-parser').Spec} tg\n * @param {boolean} [returnArray]\n * @returns {string[]|string}\n */\nconst getTagDescription = (tg, returnArray) => {\n /**\n * @type {string[]}\n */\n const descriptions = [];\n tg.source.some(({\n tokens: {\n description,\n end,\n lineEnd,\n name,\n postDelimiter,\n postTag,\n tag,\n type,\n },\n }) => {\n const desc = (\n tag && postTag ||\n !tag && !name && !type && postDelimiter || ''\n\n // Remove space\n ).slice(1) +\n (description || '') + (lineEnd || '');\n\n if (end) {\n if (desc) {\n descriptions.push(desc);\n }\n\n return true;\n }\n\n descriptions.push(desc);\n\n return false;\n });\n\n return returnArray ? descriptions : descriptions.join('\\n');\n};\n\n/**\n * @typedef {{\n * report: (descriptor: import('eslint').Rule.ReportDescriptor) => void\n * }} Reporter\n */\n\n/**\n * @param {string} name\n * @param {ParserMode|undefined} mode\n * @param {TagNamePreference} tagPreference\n * @param {import('eslint').Rule.RuleContext} context\n * @returns {string|false|{\n * message: string;\n * replacement?: string|undefined;\n * }}\n */\nconst getPreferredTagNameSimple = (\n name,\n mode,\n tagPreference = {},\n // @ts-expect-error Just a no-op\n // eslint-disable-next-line unicorn/no-object-as-default-parameter -- Ok\n context = {\n report () {\n // No-op\n },\n },\n) => {\n const prefValues = Object.values(tagPreference);\n if (prefValues.includes(name) || prefValues.some((prefVal) => {\n return prefVal && typeof prefVal === 'object' && prefVal.replacement === name;\n })) {\n return name;\n }\n\n // Allow keys to have a 'tag ' prefix to avoid upstream bug in ESLint\n // that disallows keys that conflict with Object.prototype,\n // e.g. 'tag constructor' for 'constructor':\n // https://github.com/eslint/eslint/issues/13289\n // https://github.com/gajus/eslint-plugin-jsdoc/issues/537\n const tagPreferenceFixed = Object.fromEntries(\n Object\n .entries(tagPreference)\n .map(([\n key,\n value,\n ]) => {\n return [\n key.replace(/^tag /v, ''), value,\n ];\n }),\n );\n\n if (Object.hasOwn(tagPreferenceFixed, name)) {\n return tagPreferenceFixed[name];\n }\n\n const tagNames = getTagNamesForMode(mode, context);\n\n const preferredTagName = Object.entries(tagNames).find(([\n , aliases,\n ]) => {\n return aliases.includes(name);\n })?.[0];\n if (preferredTagName) {\n return preferredTagName;\n }\n\n return name;\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {ParserMode|undefined} mode\n * @param {string} name\n * @param {string[]} definedTags\n * @returns {boolean}\n */\nconst isValidTag = (\n context,\n mode,\n name,\n definedTags,\n) => {\n const tagNames = getTagNamesForMode(mode, context);\n\n const validTagNames = Object.keys(tagNames).concat(Object.values(tagNames).flat());\n const additionalTags = definedTags;\n const allTags = validTagNames.concat(additionalTags);\n\n return allTags.includes(name);\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {string} targetTagName\n * @returns {boolean}\n */\nconst hasTag = (jsdoc, targetTagName) => {\n const targetTagLower = targetTagName.toLowerCase();\n\n return jsdoc.tags.some((doc) => {\n return doc.tag.toLowerCase() === targetTagLower;\n });\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {(tag: import('@es-joy/jsdoccomment').JsdocTagWithInline) => boolean} filter\n * @returns {import('@es-joy/jsdoccomment').JsdocTagWithInline[]}\n */\nconst filterTags = (jsdoc, filter) => {\n return jsdoc.tags.filter((tag) => {\n return filter(tag);\n });\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {string} tagName\n * @returns {import('comment-parser').Spec[]}\n */\nconst getTags = (jsdoc, tagName) => {\n return filterTags(jsdoc, (item) => {\n return item.tag === tagName;\n });\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {{\n * tagName: string,\n * context?: import('eslint').Rule.RuleContext,\n * mode?: ParserMode,\n * report?: import('./iterateJsdoc.js').Report\n * tagNamePreference?: TagNamePreference\n * skipReportingBlockedTag?: boolean,\n * allowObjectReturn?: boolean,\n * defaultMessage?: string,\n * }} cfg\n * @returns {string|undefined|false|{\n * message: string;\n * replacement?: string|undefined;\n * }|{\n * blocked: true,\n * tagName: string\n * }}\n */\nconst getPreferredTagName = (jsdoc, {\n allowObjectReturn = false,\n context,\n tagName,\n defaultMessage = `Unexpected tag \\`@${tagName}\\``,\n mode,\n report = () => {},\n skipReportingBlockedTag = false,\n tagNamePreference,\n}) => {\n const ret = getPreferredTagNameSimple(tagName, mode, tagNamePreference, context);\n const isObject = ret && typeof ret === 'object';\n if (hasTag(jsdoc, tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n const message = isObject && ret.message || defaultMessage;\n report(message, null, getTags(jsdoc, tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {string} tagName\n * @param {(\n * matchingJsdocTag: import('@es-joy/jsdoccomment').JsdocTagWithInline,\n * targetTagName: string\n * ) => void} arrayHandler\n * @param {object} cfg\n * @param {import('eslint').Rule.RuleContext} [cfg.context]\n * @param {ParserMode} [cfg.mode]\n * @param {import('./iterateJsdoc.js').Report} [cfg.report]\n * @param {TagNamePreference} [cfg.tagNamePreference]\n * @param {boolean} [cfg.skipReportingBlockedTag]\n * @returns {void}\n */\nconst forEachPreferredTag = (\n jsdoc, tagName, arrayHandler,\n {\n context,\n mode,\n report,\n skipReportingBlockedTag = false,\n tagNamePreference,\n } = {},\n) => {\n const targetTagName = /** @type {string|false} */ (\n getPreferredTagName(jsdoc, {\n context,\n mode,\n report,\n skipReportingBlockedTag,\n tagName,\n tagNamePreference,\n })\n );\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n\n const matchingJsdocTags = jsdoc.tags.filter(({\n tag,\n }) => {\n return tag === targetTagName;\n });\n\n for (const matchingJsdocTag of matchingJsdocTags) {\n arrayHandler(\n /**\n * @type {import('@es-joy/jsdoccomment').JsdocTagWithInline}\n */ (\n matchingJsdocTag\n ), targetTagName,\n );\n }\n};\n\n/**\n * Get all inline tags and inline tags in tags\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @returns {(import('comment-parser').Spec|\n * import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: number | undefined; column?: number | undefined;\n * })[]}\n */\nconst getInlineTags = (jsdoc) => {\n return [\n ...jsdoc.inlineTags.map((inlineTag) => {\n // Tags don't have source or line numbers, so add before returning\n let line = -1;\n for (const {\n tokens: {\n description,\n },\n } of jsdoc.source) {\n line++;\n if (description && description.includes(`{@${inlineTag.tag}`)) {\n break;\n }\n }\n\n inlineTag.line = line;\n\n return inlineTag;\n }),\n ...jsdoc.tags.flatMap((tag) => {\n for (const inlineTag of tag.inlineTags) {\n /** @type {import('./iterateJsdoc.js').Integer} */\n let line = 0;\n for (const {\n number,\n tokens: {\n description,\n },\n } of tag.source) {\n if (description && description.includes(`{@${inlineTag.tag}`)) {\n line = number;\n break;\n }\n }\n\n inlineTag.line = line;\n }\n\n return (\n /**\n * @type {import('comment-parser').Spec & {\n * inlineTags: import('@es-joy/jsdoccomment').JsdocInlineTagNoType[]\n * }}\n */ (\n tag\n ).inlineTags\n );\n }),\n ];\n};\n\n/**\n * Get all tags, inline tags and inline tags in tags\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @returns {(import('comment-parser').Spec|\n * import('@es-joy/jsdoccomment').JsdocInlineTagNoType & {\n * line?: number | undefined; column?: number | undefined;\n * })[]}\n */\nconst getAllTags = (jsdoc) => {\n return [\n ...jsdoc.tags,\n ...getInlineTags(jsdoc),\n ];\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {string[]} targetTagNames\n * @returns {boolean}\n */\nconst hasATag = (jsdoc, targetTagNames) => {\n return targetTagNames.some((targetTagName) => {\n return hasTag(jsdoc, targetTagName);\n });\n};\n\n/**\n * Checks if the JSDoc comment has an undefined type.\n * @param {import('comment-parser').Spec|null|undefined} tag\n * the tag which should be checked.\n * @param {ParserMode} mode\n * @returns {boolean}\n * true in case a defined type is undeclared; otherwise false.\n */\nconst mayBeUndefinedTypeTag = (tag, mode) => {\n // The function should not continue in the event the type is not defined...\n if (typeof tag === 'undefined' || tag === null) {\n return true;\n }\n\n // .. same applies if it declares an `{undefined}` or `{void}` type\n const tagType = tag.type.trim();\n\n // Exit early if matching\n if (\n tagType === 'undefined' || tagType === 'void' ||\n tagType === '*' || tagType === 'any'\n ) {\n return true;\n }\n\n let parsedTypes;\n try {\n parsedTypes = tryParse(\n tagType,\n mode === 'permissive' ? undefined : [\n mode,\n ],\n );\n } catch {\n // Ignore\n }\n\n if (\n // We do not traverse deeply as it could be, e.g., `Promise<void>`\n parsedTypes &&\n parsedTypes.type === 'JsdocTypeUnion' &&\n parsedTypes.elements.some((elem) => {\n return elem.type === 'JsdocTypeUndefined' ||\n elem.type === 'JsdocTypeName' && elem.value === 'void';\n })) {\n return true;\n }\n\n // In any other case, a type is present\n return false;\n};\n\n/**\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} map\n * @param {string} tag\n * @returns {Map<string, string|string[]|boolean|undefined>}\n */\nconst ensureMap = (map, tag) => {\n if (!map.has(tag)) {\n map.set(tag, new Map());\n }\n\n return /** @type {Map<string, string | boolean>} */ (map.get(tag));\n};\n\n/**\n * @param {import('./iterateJsdoc.js').StructuredTags} structuredTags\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {void}\n */\nconst overrideTagStructure = (structuredTags, tagMap = tagStructure) => {\n for (const [\n tag,\n {\n name,\n required = [],\n type,\n },\n ] of Object.entries(structuredTags)) {\n const tagStruct = ensureMap(tagMap, tag);\n\n tagStruct.set('namepathRole', name);\n tagStruct.set('typeAllowed', type);\n\n const requiredName = required.includes('name');\n if (requiredName && name === false) {\n throw new Error('Cannot add \"name\" to `require` with the tag\\'s `name` set to `false`');\n }\n\n tagStruct.set('nameRequired', requiredName);\n\n const requiredType = required.includes('type');\n if (requiredType && type === false) {\n throw new Error('Cannot add \"type\" to `require` with the tag\\'s `type` set to `false`');\n }\n\n tagStruct.set('typeRequired', requiredType);\n\n const typeOrNameRequired = required.includes('typeOrNameRequired');\n if (typeOrNameRequired && name === false) {\n throw new Error('Cannot add \"typeOrNameRequired\" to `require` with the tag\\'s `name` set to `false`');\n }\n\n if (typeOrNameRequired && type === false) {\n throw new Error('Cannot add \"typeOrNameRequired\" to `require` with the tag\\'s `type` set to `false`');\n }\n\n tagStruct.set('typeOrNameRequired', typeOrNameRequired);\n }\n};\n\n/**\n * @param {ParserMode} mode\n * @param {import('./iterateJsdoc.js').StructuredTags} structuredTags\n * @returns {import('./getDefaultTagStructureForMode.js').TagStructure}\n */\nconst getTagStructureForMode = (mode, structuredTags) => {\n const tagStruct = getDefaultTagStructureForMode(mode);\n\n try {\n overrideTagStructure(structuredTags, tagStruct);\n /* c8 ignore next 3 */\n } catch {\n //\n }\n\n return tagStruct;\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst isNameOrNamepathDefiningTag = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return /** @type {(string|boolean|undefined)[]} */ ([\n 'name-defining',\n 'namepath-defining',\n ]).includes(/** @type {string|boolean|undefined} */ (\n tagStruct.get('namepathRole')));\n};\n\n/**\n * @param {import('eslint').SourceCode} sourceCode\n * @returns {import('@es-joy/jsdoccomment').JsdocBlockWithInline[]}\n */\nconst getJSDocCommentBlocks = (sourceCode) => {\n return sourceCode.getAllComments()\n .filter((comment) => {\n return (/^\\*(?!\\*)/v).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n });\n};\n\n/**\n * @param {import('eslint').SourceCode} sourceCode\n * @returns {import('comment-parser').Spec[]}\n */\nconst getDocumentNamepathDefiningTags = (sourceCode) => {\n return getJSDocCommentBlocks(sourceCode)\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return isNameOrNamepathDefiningTag(tag) && ![\n 'arg',\n 'argument',\n 'param',\n 'prop',\n 'property',\n ].includes(tag);\n });\n });\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst isNamepathReferencingTag = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n return tagStruct.get('namepathRole') === 'namepath-referencing';\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst isNamepathOrUrlReferencingTag = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n return tagStruct.get('namepathRole') === 'namepath-or-url-referencing';\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|undefined}\n */\nconst tagMustHaveTypePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return /** @type {boolean|undefined} */ (tagStruct.get('typeRequired'));\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|string}\n */\nconst tagMightHaveTypePosition = (tag, tagMap = tagStructure) => {\n if (tagMustHaveTypePosition(tag, tagMap)) {\n return true;\n }\n\n const tagStruct = ensureMap(tagMap, tag);\n\n const ret = /** @type {boolean|undefined} */ (tagStruct.get('typeAllowed'));\n\n return ret === undefined ? true : ret;\n};\n\nconst namepathTypes = new Set([\n 'name-defining', 'namepath-defining',\n 'namepath-referencing',\n]);\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNamePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const ret = tagStruct.get('namepathRole');\n\n return ret === undefined ? true : Boolean(ret);\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNameOrNamepath = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const nampathRole = tagStruct.get('namepathRole');\n\n return nampathRole !== false &&\n namepathTypes.has(/** @type {string} */ (nampathRole));\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveNamepath = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const nampathRole = tagStruct.get('namepathRole');\n\n return nampathRole !== false &&\n [\n 'namepath-defining',\n 'namepath-referencing',\n ].includes(/** @type {string} */ (nampathRole));\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveName = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n const nampathRole = tagStruct.get('namepathRole');\n\n return nampathRole !== false &&\n nampathRole === 'name-defining';\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|undefined}\n */\nconst tagMustHaveNamePosition = (tag, tagMap = tagStructure) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return /** @type {boolean|undefined} */ (tagStruct.get('nameRequired'));\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean}\n */\nconst tagMightHaveEitherTypeOrNamePosition = (tag, tagMap) => {\n return Boolean(tagMightHaveTypePosition(tag, tagMap)) || tagMightHaveNameOrNamepath(tag, tagMap);\n};\n\n/**\n * @param {string} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|undefined}\n */\nconst tagMustHaveEitherTypeOrNamePosition = (tag, tagMap) => {\n const tagStruct = ensureMap(tagMap, tag);\n\n return /** @type {boolean} */ (tagStruct.get('typeOrNameRequired'));\n};\n\n/**\n * @param {import('comment-parser').Spec} tag\n * @param {import('./getDefaultTagStructureForMode.js').TagStructure} tagMap\n * @returns {boolean|undefined}\n */\nconst tagMissingRequiredTypeOrNamepath = (tag, tagMap = tagStructure) => {\n const mustHaveTypePosition = tagMustHaveTypePosition(tag.tag, tagMap);\n const mightHaveTypePosition = tagMightHaveTypePosition(tag.tag, tagMap);\n const hasTypePosition = mightHaveTypePosition && Boolean(tag.type);\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition(tag.tag, tagMap) ||\n tagMightHaveNameOrNamepath(tag.tag, tagMap)\n ) && Boolean(tag.name);\n const mustHaveEither = tagMustHaveEitherTypeOrNamePosition(tag.tag, tagMap);\n const hasEither = tagMightHaveEitherTypeOrNamePosition(tag.tag, tagMap) &&\n (hasTypePosition || hasNameOrNamepathPosition);\n\n return mustHaveEither && !hasEither && !mustHaveTypePosition;\n};\n\n/* eslint-disable complexity -- Temporary */\n/**\n * @param {ESTreeOrTypeScriptNode|null|undefined} node\n * @param {boolean} [checkYieldReturnValue]\n * @returns {boolean}\n */\nconst hasNonFunctionYield = (node, checkYieldReturnValue) => {\n /* eslint-enable complexity -- Temporary */\n if (!node) {\n return false;\n }\n\n switch (node.type) {\n case 'ArrayExpression':\n\n case 'ArrayPattern':\n return node.elements.some((element) => {\n return hasNonFunctionYield(element, checkYieldReturnValue);\n });\n case 'AssignmentExpression':\n case 'BinaryExpression':\n case 'LogicalExpression': {\n return hasNonFunctionYield(node.left, checkYieldReturnValue) ||\n hasNonFunctionYield(node.right, checkYieldReturnValue);\n }\n\n case 'AssignmentPattern':\n return hasNonFunctionYield(node.right, checkYieldReturnValue);\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return ![\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(bodyNode.type) && hasNonFunctionYield(\n bodyNode, checkYieldReturnValue,\n );\n });\n }\n\n /* c8 ignore next 2 -- In Babel? */\n case 'CallExpression':\n // @ts-expect-error In Babel?\n case 'OptionalCallExpression':\n return node.arguments.some((element) => {\n return hasNonFunctionYield(element, checkYieldReturnValue);\n });\n case 'ChainExpression':\n case 'ExpressionStatement': {\n return hasNonFunctionYield(node.expression, checkYieldReturnValue);\n }\n\n /* c8 ignore next 2 -- In Babel? */\n // @ts-expect-error In Babel?\n case 'ClassProperty':\n\n /* c8 ignore next 2 -- In Babel? */\n // @ts-expect-error In Babel?\n case 'ObjectProperty':\n /* c8 ignore next 2 -- In Babel? */\n case 'Property':\n\n case 'PropertyDefinition':\n return node.computed && hasNonFunctionYield(node.key, checkYieldReturnValue) ||\n hasNonFunctionYield(node.value, checkYieldReturnValue);\n\n case 'ConditionalExpression':\n\n case 'IfStatement': {\n return hasNonFunctionYield(node.test, checkYieldReturnValue) ||\n hasNonFunctionYield(node.consequent, checkYieldReturnValue) ||\n hasNonFunctionYield(node.alternate, checkYieldReturnValue);\n }\n\n case 'DoWhileStatement':\n case 'ForInStatement':\n\n case 'ForOfStatement':\n\n case 'ForStatement':\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'WithStatement': {\n return hasNonFunctionYield(node.body, checkYieldReturnValue);\n }\n\n /* c8 ignore next 2 -- In Babel? */\n // @ts-expect-error In Babel?\n case 'Import':\n case 'ImportExpression':\n return hasNonFunctionYield(node.source, checkYieldReturnValue);\n\n // ?.\n /* c8 ignore next 2 -- In Babel? */\n case 'MemberExpression':\n // @ts-expect-error In Babel?\n case 'OptionalMemberExpression':\n return hasNonFunctionYield(node.object, checkYieldReturnValue) ||\n hasNonFunctionYield(node.property, checkYieldReturnValue);\n\n case 'ObjectExpression':\n case 'ObjectPattern':\n return node.properties.some((property) => {\n return hasNonFunctionYield(property, checkYieldReturnValue);\n });\n /* c8 ignore next 2 -- In Babel? */\n // @ts-expect-error In Babel?\n case 'ObjectMethod':\n /* c8 ignore next 6 -- In Babel? */\n // @ts-expect-error In Babel?\n return node.computed && hasNonFunctionYield(node.key, checkYieldReturnValue) ||\n // @ts-expect-error In Babel?\n node.arguments.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n case 'ReturnStatement': {\n if (node.argument === null) {\n return false;\n }\n\n return hasNonFunctionYield(node.argument, checkYieldReturnValue);\n }\n\n // Comma\n case 'SequenceExpression':\n\n case 'TemplateLiteral':\n return node.expressions.some((subExpression) => {\n return hasNonFunctionYield(subExpression, checkYieldReturnValue);\n });\n case 'SpreadElement':\n\n case 'UnaryExpression':\n return hasNonFunctionYield(node.argument, checkYieldReturnValue);\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n },\n );\n }\n\n case 'TaggedTemplateExpression':\n return hasNonFunctionYield(node.quasi, checkYieldReturnValue);\n\n case 'TryStatement': {\n return hasNonFunctionYield(node.block, checkYieldReturnValue) ||\n hasNonFunctionYield(\n node.handler && node.handler.body, checkYieldReturnValue,\n ) ||\n hasNonFunctionYield(\n /** @type {import('@typescript-eslint/types').TSESTree.BlockStatement} */\n (node.finalizer),\n checkYieldReturnValue,\n );\n }\n\n case 'VariableDeclaration': {\n return node.declarations.some((nde) => {\n return hasNonFunctionYield(nde, checkYieldReturnValue);\n });\n }\n\n case 'VariableDeclarator': {\n return hasNonFunctionYield(node.id, checkYieldReturnValue) ||\n hasNonFunctionYield(node.init, checkYieldReturnValue);\n }\n\n case 'YieldExpression': {\n if (checkYieldReturnValue) {\n if (\n /** @type {import('eslint').Rule.Node} */ (\n node\n ).parent?.type === 'VariableDeclarator'\n ) {\n return true;\n }\n\n return false;\n }\n\n // void return does not count.\n if (node.argument === null) {\n return false;\n }\n\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * Checks if a node has a return statement. Void return does not count.\n * @param {ESTreeOrTypeScriptNode} node\n * @param {boolean} [checkYieldReturnValue]\n * @returns {boolean}\n */\nconst hasYieldValue = (node, checkYieldReturnValue) => {\n return /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */ (\n node\n ).generator && (\n /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */ (\n node\n ).expression || hasNonFunctionYield(\n /** @type {import('@typescript-eslint/types').TSESTree.FunctionDeclaration} */\n (node).body,\n checkYieldReturnValue,\n )\n );\n};\n\n/**\n * Checks if a node has a throws statement.\n * @param {ESTreeOrTypeScriptNode|null|undefined} node\n * @param {boolean} [innerFunction]\n * @returns {boolean}\n */\nconst hasThrowValue = (node, innerFunction) => {\n if (!node) {\n return false;\n }\n\n // There are cases where a function may execute its inner function which\n // throws, but we're treating functions atomically rather than trying to\n // follow them\n switch (node.type) {\n case 'ArrowFunctionExpression':\n case 'FunctionDeclaration':\n case 'FunctionExpression': {\n return !innerFunction && !node.async && hasThrowValue(node.body, true);\n }\n\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return bodyNode.type !== 'FunctionDeclaration' && hasThrowValue(bodyNode);\n });\n }\n\n case 'DoWhileStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'ForStatement':\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'WithStatement': {\n return hasThrowValue(node.body);\n }\n\n case 'IfStatement': {\n return hasThrowValue(node.consequent) || hasThrowValue(node.alternate);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasThrowValue(nde);\n });\n },\n );\n }\n\n case 'ThrowStatement': {\n return true;\n }\n\n // We only consider it to throw an error if the catch or finally blocks throw an error.\n case 'TryStatement': {\n return hasThrowValue(node.handler && node.handler.body) ||\n hasThrowValue(node.finalizer);\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * @param {string} tag\n */\n/*\nconst isInlineTag = (tag) => {\n return /^(@link|@linkcode|@linkplain|@tutorial) /v.test(tag);\n};\n*/\n\n/**\n * Splits a `@template` tag's names on commas that separate template entries,\n * ignoring commas nested within a type expression so that default values such\n * as `[T=Record<string, unknown>]` are not split apart.\n *\n * Only `<`, `(` and `{` are treated as nesting: a comma within them is part of\n * a type (generic arguments, function params, object type). Square brackets are\n * deliberately not counted, since `[...]` is the optional/default wrapper in\n * which commas do separate entries, e.g. `[T=string, U=number]`.\n * @param {string} str\n * @returns {string[]}\n */\nconst splitTopLevelCommas = (str) => {\n const parts = [];\n let depth = 0;\n let current = '';\n for (const char of str) {\n if (char === '<' || char === '{' || char === '(') {\n depth++;\n } else if (char === '>' || char === '}' || char === ')') {\n depth = Math.max(0, depth - 1);\n }\n\n if (char === ',' && depth === 0) {\n parts.push(current);\n current = '';\n } else {\n current += char;\n }\n }\n\n parts.push(current);\n\n return parts;\n};\n\n/**\n * Parses GCC Generic/Template types\n * @see {@link https://github.com/google/closure-compiler/wiki/Generic-Types}\n * @see {@link https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#template}\n * @param {import('comment-parser').Spec} tag\n * @returns {string[]}\n */\nconst parseClosureTemplateTag = (tag) => {\n return splitTopLevelCommas(tag.name)\n .map((type) => {\n return type.trim().replace(/^\\[?(?<name>.*?)=.*$/v, '$<name>');\n });\n};\n\n/**\n * @typedef {true|string[]} DefaultContexts\n */\n\n/**\n * Checks user option for `contexts` array, defaulting to\n * contexts designated by the rule. Returns an array of\n * ESTree AST types, indicating allowable contexts.\n * @param {import('eslint').Rule.RuleContext} context\n * @param {DefaultContexts|undefined} defaultContexts\n * @param {{\n * contexts?: import('./iterateJsdoc.js').Context[]\n * }} settings\n * @returns {(string|import('./iterateJsdoc.js').ContextObject)[]}\n */\nconst enforcedContexts = (context, defaultContexts, settings) => {\n const contexts = context.options[0]?.contexts || settings.contexts || (defaultContexts === true ? [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n 'TSDeclareFunction',\n ] : defaultContexts);\n\n return contexts;\n};\n\n/**\n * @param {import('./iterateJsdoc.js').Context[]} contexts\n * @param {import('./iterateJsdoc.js').CheckJsdoc} checkJsdoc\n * @param {import('@es-joy/jsdoccomment').CommentHandler} [handler]\n * @returns {import('eslint').Rule.RuleListener}\n */\nconst getContextObject = (contexts, checkJsdoc, handler) => {\n /** @type {import('eslint').Rule.RuleListener} */\n const properties = {};\n\n for (const [\n idx,\n prop,\n ] of contexts.entries()) {\n /** @type {string} */\n let property;\n\n /** @type {(node: import('eslint').Rule.Node) => void} */\n let value;\n\n if (typeof prop === 'object') {\n const selInfo = {\n lastIndex: idx,\n selector: prop.context,\n };\n if (prop.comment) {\n property = /** @type {string} */ (prop.context);\n value = checkJsdoc.bind(\n null,\n {\n ...selInfo,\n comment: prop.comment,\n },\n /**\n * @type {(jsdoc: import('@es-joy/jsdoccomment').JsdocBlockWithInline) => boolean}\n */\n (/** @type {import('@es-joy/jsdoccomment').CommentHandler} */ (\n handler\n ).bind(null, prop.comment)),\n );\n } else {\n property = /** @type {string} */ (prop.context);\n value = checkJsdoc.bind(null, selInfo, null);\n }\n } else {\n const selInfo = {\n lastIndex: idx,\n selector: prop,\n };\n property = prop;\n value = checkJsdoc.bind(null, selInfo, null);\n }\n\n const old = /**\n * @type {((node: import('eslint').Rule.Node) => void)}\n */ (properties[property]);\n properties[property] = old ?\n /**\n * @type {((node: import('eslint').Rule.Node) => void)}\n */\n function (node) {\n old(node);\n value(node);\n } :\n value;\n }\n\n return properties;\n};\n\nconst tagsWithNamesAndDescriptions = new Set([\n 'arg', 'argument', 'param', 'prop', 'property',\n 'return',\n\n // These two are parsed by our custom parser as though having a `name`\n 'returns', 'template',\n]);\n\n/**\n * @typedef {{\n * [key: string]: false|string|\n * {message: string, replacement?: string}\n * }} TagNamePreference\n */\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {ParserMode|undefined} mode\n * @param {import('comment-parser').Spec[]} tags\n * @returns {{\n * tagsWithNames: import('comment-parser').Spec[],\n * tagsWithoutNames: import('comment-parser').Spec[]\n * }}\n */\nconst getTagsByType = (context, mode, tags) => {\n /**\n * @type {import('comment-parser').Spec[]}\n */\n const tagsWithoutNames = [];\n const tagsWithNames = tags.filter((tag) => {\n const {\n tag: tagName,\n } = tag;\n const tagWithName = tagsWithNamesAndDescriptions.has(tagName);\n if (!tagWithName) {\n tagsWithoutNames.push(tag);\n }\n\n return tagWithName;\n });\n\n return {\n tagsWithNames,\n tagsWithoutNames,\n };\n};\n\n/**\n * @param {import('eslint').SourceCode|{\n * text: string\n * }} sourceCode\n * @returns {string}\n */\nconst getIndent = (sourceCode) => {\n return (sourceCode.text.match(/^\\n*([ \\t]+)/v)?.[1] ?? '') + ' ';\n};\n\n/**\n * @param {import('eslint').Rule.Node|null} node\n * @returns {boolean}\n */\nconst isConstructor = (node) => {\n return node?.type === 'MethodDefinition' && node.kind === 'constructor' ||\n /** @type {import('@typescript-eslint/types').TSESTree.MethodDefinition} */ (\n node?.parent\n )?.kind === 'constructor';\n};\n\n/**\n * @param {import('eslint').Rule.Node|null} node\n * @returns {boolean}\n */\nconst isGetter = (node) => {\n return node !== null &&\n /**\n * @type {import('@typescript-eslint/types').TSESTree.MethodDefinition|\n * import('@typescript-eslint/types').TSESTree.Property}\n */ (\n node.parent\n )?.kind === 'get';\n};\n\n/**\n * @param {import('eslint').Rule.Node|null} node\n * @returns {boolean}\n */\nconst isSetter = (node) => {\n return node !== null &&\n /**\n * @type {import('@typescript-eslint/types').TSESTree.MethodDefinition|\n * import('@typescript-eslint/types').TSESTree.Property}\n */(\n node.parent\n )?.kind === 'set';\n};\n\n/**\n * @param {import('eslint').Rule.Node} node\n * @returns {boolean}\n */\nconst hasAccessorPair = (node) => {\n const {\n key,\n kind: sourceKind,\n type,\n } =\n /**\n * @type {import('@typescript-eslint/types').TSESTree.MethodDefinition|\n * import('@typescript-eslint/types').TSESTree.Property}\n */ (node);\n\n const sourceName =\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n key\n ).name;\n\n const oppositeKind = sourceKind === 'get' ? 'set' : 'get';\n\n const sibling = type === 'MethodDefinition' ?\n /** @type {import('@typescript-eslint/types').TSESTree.ClassBody} */ (\n node.parent\n ).body :\n /** @type {import('@typescript-eslint/types').TSESTree.ObjectExpression} */ (\n node.parent\n ).properties;\n\n return (\n sibling.some((child) => {\n const {\n key: ky,\n kind,\n } = /**\n * @type {import('@typescript-eslint/types').TSESTree.MethodDefinition|\n * import('@typescript-eslint/types').TSESTree.Property}\n */ (child);\n\n const name =\n /** @type {import('@typescript-eslint/types').TSESTree.Identifier} */ (\n ky\n ).name;\n\n return kind === oppositeKind && name === sourceName;\n })\n );\n};\n\n/**\n * @param {import('./iterateJsdoc.js').JsdocBlockWithInline} jsdoc\n * @param {import('eslint').Rule.Node|null} node\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('json-schema').JSONSchema4} schema\n * @returns {boolean}\n */\nconst exemptSpeciaMethods = (jsdoc, node, context, schema) => {\n /**\n * @param {\"checkGetters\"|\"checkSetters\"|\"checkConstructors\"} prop\n * @returns {boolean|\"no-setter\"|\"no-getter\"}\n */\n const hasSchemaOption = (prop) => {\n const schemaProperties = schema[0].properties;\n\n return context.options[0]?.[prop] ??\n (schemaProperties[prop] && schemaProperties[prop].default);\n };\n\n const checkGetters = hasSchemaOption('checkGetters');\n const checkSetters = hasSchemaOption('checkSetters');\n\n return !hasSchemaOption('checkConstructors') &&\n (\n isConstructor(node) ||\n hasATag(jsdoc, [\n 'class',\n 'constructor',\n ])) ||\n isGetter(node) && (\n !checkGetters ||\n checkGetters === 'no-setter' && hasAccessorPair(\n /** @type {import('./iterateJsdoc.js').Node} */\n (/** @type {import('./iterateJsdoc.js').Node} */ (node).parent),\n )\n ) ||\n isSetter(node) && (\n !checkSetters ||\n checkSetters === 'no-getter' && hasAccessorPair(\n /** @type {import('./iterateJsdoc.js').Node} */\n (/** @type {import('./iterateJsdoc.js').Node} */ (node).parent),\n )\n );\n};\n\n/**\n * Since path segments may be unquoted (if matching a reserved word,\n * identifier or numeric literal) or single or double quoted, in either\n * the `@param` or in source, we need to strip the quotes to give a fair\n * comparison.\n * @param {string} str\n * @returns {string}\n */\nconst dropPathSegmentQuotes = (str) => {\n return str.replaceAll(/\\.(['\"])(.*)\\1/gv, '.$2');\n};\n\n/**\n * @param {string} name\n * @returns {(otherPathName: string) => boolean}\n */\nconst comparePaths = (name) => {\n return (otherPathName) => {\n return otherPathName === name ||\n dropPathSegmentQuotes(otherPathName) === dropPathSegmentQuotes(name);\n };\n};\n\n/**\n * @callback PathDoesNotBeginWith\n * @param {string} name\n * @param {string} otherPathName\n * @returns {boolean}\n */\n\n/** @type {PathDoesNotBeginWith} */\nconst pathDoesNotBeginWith = (name, otherPathName) => {\n return !name.startsWith(otherPathName) &&\n !dropPathSegmentQuotes(name).startsWith(dropPathSegmentQuotes(otherPathName));\n};\n\n/**\n * @param {string} regexString\n * @param {string} [requiredFlags]\n * @returns {RegExp}\n */\nconst getRegexFromString = (regexString, requiredFlags) => {\n const match = regexString.match(/^\\/(.*)\\/([gimyvus]*)$/vs);\n let flags = 'v';\n let regex = regexString;\n if (match) {\n [\n , regex,\n flags,\n ] = match;\n if (!flags) {\n flags = 'v';\n }\n }\n\n const uniqueFlags = [\n ...new Set(flags + (requiredFlags || '')),\n ];\n flags = uniqueFlags.join('');\n\n return new RegExp(regex, flags);\n};\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\n/**\n * @param {import('@es-joy/jsdoccomment').JsdocBlockWithInline} jsdoc\n * @param {import('@es-joy/jsdoccomment').JsdocTagWithInline} tag\n * @param {import('jsdoc-type-pratt-parser').RootResult} parsedType\n * @param {string} indent\n * @param {string} typeBracketSpacing\n */\nconst rewireByParsedType = (jsdoc, tag, parsedType, indent, typeBracketSpacing = '') => {\n const typeLines = stringify(parsedType).split('\\n');\n const firstTypeLine = typeLines.shift();\n const lastTypeLine = typeLines.pop();\n\n const beginNameOrDescIdx = tag.source.findIndex(({\n tokens,\n }) => {\n return tokens.name || tokens.description;\n });\n\n const nameAndDesc = beginNameOrDescIdx === -1 ?\n null :\n tag.source.slice(beginNameOrDescIdx);\n\n const initialNumber = tag.source[0].number;\n\n const src = [\n // Get inevitably present tag from first `tag.source`\n {\n number: initialNumber,\n source: '',\n tokens: {\n ...tag.source[0].tokens,\n ...(typeLines.length || lastTypeLine ? {\n end: '',\n name: '',\n postName: '',\n postType: '',\n } : (nameAndDesc ? {\n name: nameAndDesc[0].tokens.name,\n postType: ' ',\n } : {})),\n type: '{' + typeBracketSpacing + firstTypeLine + (!typeLines.length && lastTypeLine === undefined ? typeBracketSpacing + '}' : ''),\n },\n },\n // Get any intervening type lines\n ...(typeLines.length ? typeLines.map((typeLine, idx) => {\n return {\n number: initialNumber + idx + 1,\n source: '',\n tokens: {\n // Grab any delimiter info from first item\n ...tag.source[0].tokens,\n delimiter: tag.source[0].tokens.delimiter === '/**' ? '*' : tag.source[0].tokens.delimiter,\n end: '',\n name: '',\n postName: '',\n postTag: '',\n postType: '',\n start: indent + ' ',\n tag: '',\n type: typeLine,\n },\n };\n }) : []),\n ];\n\n // Merge any final type line and name and description\n if (\n // Name and description may be already included if present with the tag\n nameAndDesc && beginNameOrDescIdx > 0\n ) {\n if (typeLines.length || lastTypeLine !== undefined) {\n src.push({\n number: src.length + 1,\n source: '',\n tokens: {\n ...nameAndDesc[0].tokens,\n type: lastTypeLine + typeBracketSpacing + '}',\n },\n });\n }\n\n if (\n // Get any remaining description lines\n nameAndDesc.length > 1\n ) {\n src.push(\n ...nameAndDesc.slice(1).map(({\n source,\n tokens,\n }, idx) => {\n return {\n number: src.length + idx + 2,\n source,\n tokens,\n };\n }),\n );\n }\n } else if (nameAndDesc) {\n if ((typeLines.length || lastTypeLine !== undefined) && lastTypeLine) {\n src.push({\n number: src.length + 1,\n source: '',\n tokens: {\n ...nameAndDesc[0].tokens,\n delimiter: nameAndDesc[0].tokens.delimiter === '/**' ? '*' : nameAndDesc[0].tokens.delimiter,\n postTag: '',\n start: indent + ' ',\n tag: '',\n type: lastTypeLine + typeBracketSpacing + '}',\n },\n });\n }\n\n if (\n // Get any remaining description lines\n nameAndDesc.length > 1\n ) {\n src.push(\n ...nameAndDesc.slice(1).map(({\n source,\n tokens,\n }, idx) => {\n return {\n number: src.length + idx + 2,\n source,\n tokens,\n };\n }),\n );\n }\n } else if (lastTypeLine) {\n src.push({\n number: src.length + 1,\n source: '',\n tokens: {\n ...tag.source[0].tokens,\n delimiter: tag.source[0].tokens.delimiter === '/**' ? '*' : tag.source[0].tokens.delimiter,\n postTag: '',\n start: indent + ' ',\n tag: '',\n type: lastTypeLine + typeBracketSpacing + '}',\n },\n });\n }\n\n tag.source = src;\n\n // Properly rewire `jsdoc.source`\n const firstTagIdx = jsdoc.source.findIndex(({\n tokens: {\n tag: tg,\n },\n }) => {\n return tg;\n });\n\n const initialEndSource = jsdoc.source.find(({\n tokens: {\n end,\n },\n }) => {\n return end;\n });\n\n jsdoc.source = [\n ...jsdoc.source.slice(0, firstTagIdx),\n ...jsdoc.tags.flatMap(({\n source,\n }) => {\n return source;\n }),\n ];\n\n if (initialEndSource && !jsdoc.source.at(-1)?.tokens?.end) {\n jsdoc.source.push(initialEndSource);\n }\n};\n\nexport {\n comparePaths,\n dropPathSegmentQuotes,\n enforcedContexts,\n exemptSpeciaMethods,\n filterTags,\n flattenRoots,\n forEachPreferredTag,\n getAllTags,\n getContextObject,\n getDocumentNamepathDefiningTags,\n getFunctionParameterNames,\n getIndent,\n getInlineTags,\n getJSDocCommentBlocks,\n getJsdocTagsDeep,\n getPreferredTagName,\n getPreferredTagNameSimple,\n getRegexFromString,\n getTagDescription,\n getTags,\n getTagsByType,\n getTagStructureForMode,\n hasATag,\n hasParams,\n\n hasTag,\n hasThrowValue,\n\n hasYieldValue,\n isConstructor,\n isGetter,\n isNameOrNamepathDefiningTag,\n isNamepathOrUrlReferencingTag,\n isNamepathReferencingTag,\n isSetter,\n isValidTag,\n mayBeUndefinedTypeTag,\n overrideTagStructure,\n parseClosureTemplateTag,\n pathDoesNotBeginWith,\n rewireByParsedType,\n setTagStructure,\n strictNativeTypes,\n tagMightHaveEitherTypeOrNamePosition,\n tagMightHaveName,\n tagMightHaveNameOrNamepath,\n tagMightHaveNamepath,\n tagMightHaveNamePosition,\n tagMightHaveTypePosition,\n tagMissingRequiredTypeOrNamepath,\n tagMustHaveNamePosition,\n tagMustHaveTypePosition,\n};\nexport {\n hasReturnValue,\n hasValueOrExecutorHasNonEmptyResolveValue,\n} from './utils/hasReturnValue.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AACA;AAKA;AACA;AA4qEA;AAGmC;AAzqEnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI,YAAY;;AAEhB;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAI,IAAI,IAAK;EAChC,YAAY,GAAG,IAAAA,sCAA6B,EAAC,IAAI,CAAC;AACpD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AAAA;AACA,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,KAAK;EAC1C,IAAI,cAAc,GAAG,KAAK;EAC1B,IAAI,eAAe,GAAG,KAAK;;EAE3B;AACF;AACA;EACE,MAAM,KAAK,GAAG,EAAE;EAEhB,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM;EACzB;AACJ;AACA;AACA;AACA;EACI,CAAC,GAAG,EAAE,GAAG,KAAK;IACZ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;MACtB,IAAI,GAAG;MACP,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACzB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;MACd,CAAC,MAAM;QACL,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE;UACzB,cAAc,GAAG,IAAI;QACvB;QAEA,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE;UAC1B,eAAe,GAAG,IAAI;QACxB;QAEA,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK;MACpB;MAEA,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,EAAE,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;MACxE,IAAI,SAAS,CAAC,cAAc,EAAE;QAC5B,cAAc,GAAG,IAAI;MACvB;MAEA,IAAI,SAAS,CAAC,eAAe,EAAE;QAC7B,eAAe,GAAG,IAAI;MACxB;MAEA,MAAM,KAAK,GAAG,uBAAyB,CACrC,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EACnC,GAAG,SAAS,CAAC,KAAK,CACnB,CAAC,MAAM,CAAC,OAAO,CAAE;MAClB,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;MAErC,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;IAC1B;IAEA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;MAC3B,IAAI,gBAAgB,IAAI,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE;QACjD,eAAe,GAAG,IAAI;QACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;MAClB,CAAC,MAAM;QACL,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;MACnB;MAEA,IAAI,aAAa,IAAI,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE;QAC3C,cAAc,GAAG,IAAI;MACvB;MAEA,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnE,CAAC,MAAM,IAAI,OAAO,GAAG,KAAK,WAAW,EAAE;MACrC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;MACjB,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC;IACzC;IAEA,OAAO,GAAG;EACZ,CAAC,EAAE,EACL,CAAC;EAED,OAAO;IACL,eAAe;IACf,cAAc;IACd,KAAK;IACL;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAOA,MAAM,kCAAkC,GAAI,aAAa,IAAK;EAC5D,IACE,aAAa,CAAC,IAAI,KAAK,kBAAkB,IACzC,aAAa,CAAC,IAAI,KAAK,iCAAiC,IACxD,aAAa,CAAC,IAAI,KAAK,4BAA4B,EACnD;IACA,OAAO,SAAS;EAClB;EAEA,IAAI,aAAa,CAAC,cAAc,IAAI,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,KAAK,eAAe,EAAE;IACxG,OAAO,CACL,qEACE,aAAa,CAAC,GAAG,CACjB,IAAI,EACN,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAE,MAAM,IAAK;MAClE,OAAO,qBACL,kCAAkC,CAChC;MACE,MAEJ,CAAC;IAEL,CAAC,CAAC,CACH;EACH;EAEA,OAAO,qEACL,aAAa,CAAC,GAAG,CACjB,IAAI;AACR,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,yBAAyB,GAAG,CAChC,YAAY,EAAE,mBAAmB,EAAE,0BAA0B,KAC1D;EACH;EACA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK;IAC1C;IACA,MAAM,qBAAqB,GAAG,MAAM,IAAI,KAAK,IAAI,gBAAgB,IAAI,KAAK,CAAC,IAAI;IAE/E,IAAI,gBAAgB,IAAI,KAAK,IAAI,qBAAqB,EAAE;MACtD,IAAI,0BAA0B,IAAI,gBAAgB,IAAI,KAAK,IACzD,KAAK,CAAC,cAAc,EAAE;QACtB;QACA,OAAO,CACL,SAAS,EAAE;UACT,eAAe,EAAE,KAAK;UACtB,cAAc,EAAE,KAAK;UACrB,KAAK,EAAE,EAAE;UACT,KAAK,EAAE;QACT,CAAC,CACF;MACH;MAEA,MAAM,cAAc,GAAG,qBAAqB,GAC1C,qEACE,KAAK,CAAC,IAAI,CACV,cAAc,GAChB;MACC,KAAK,CAAE,cAAc;MAExB,IAAI,cAAc,EAAE,cAAc,EAAE,IAAI,KAAK,eAAe,EAAE;QAC5D,MAAM,aAAa,GAAG,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAE,MAAM,IAAK;UAC1E,OAAO,kCAAkC,CACvC;UACC,MACH,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG;UAChB,GAAG,YAAY,CAAC,aAAa,CAAC;UAC9B,mBAAmB,EAAE,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG;QACtD,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI;QAE3D,IAAI,MAAM,IAAI,KAAK,IAAI,WAAW,EAAE;UAClC,OAAO,CACL,WAAW,GACT,qEACE,KAAK,CAAC,IAAI,CACV,IAAI,GACN,qEACE,KAAK,CACL,IAAI,EACR,SAAS,CACV;QACH;QAEA,OAAO,CACL,SAAS,EAAE,SAAS,CACrB;MACH;IACF;IAEA,IAAI,MAAM,IAAI,KAAK,EAAE;MACnB,OAAO,KAAK,CAAC,IAAI;IACnB;IAEA,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE;MAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI;IACxB;IAEA,IACE,KAAK,CAAC,IAAI,KAAK,eAAe,IAC7B,MAAM,IAAI,KAAK,IAEd,KAAK,CACL,IAAI,CAAC,IAAI,KAAK,eAAgB,EAChC;MACA,MAAM,UAAU,GAAG,wEACjB,KAAK,CACL,UAAU,IACV;MACA,CACE,4EACE,KAAK,CACL,IAAI,GACL,UAAU;MACf,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAE,IAAI,IAAK;QACrC,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;MACjC,CAAC,CAAC;MAEF,OAAO,CACL,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,CAC/B;IACH;IAEA,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;MAC7B,QAAQ,KAAK,CAAC,KAAK,CAAC,IAAI;QACtB,KAAK,cAAc;UAAE;YACnB,OAAO,CACP;YACG,KAAK,CAAC,GAAG,CAAE,IAAI,EAChB,4CACE,KAAK,CAAC,KAAK,CACX,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;cAC5B,OAAO;gBACL,IAAI,EAAE,GAAG;gBACT,WAAW,EAAE,IAAI,EAAE,IAAI,KAAK;cAC9B,CAAC;YACH,CAAC,CAAC,CACH;UACH;QAEA,KAAK,eAAe;UAAE;YACpB,OAAO,CACP,0CAA4C,KAAK,CAAC,GAAG,CAAE,IAAI,EACzD,6CACE,KAAK,CAAC,KAAK,CACX,UAAU,CAAC,GAAG,CAAE,IAAI,IAAK;cACzB,OAAO,wCAA0C,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC;YACjF,CAAC,CAAC,CACH;UACH;QAEA,KAAK,mBAAmB;UAAE;YACxB,QAAQ,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI;cAC3B,KAAK,cAAc;gBACjB,OAAO,CACL;gBACC,KAAK,CAAC,GAAG,CAAE,IAAI,EAChB,4CACE,KAAK,CAAC,KAAK,CAAC,IAAI,CAChB,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;kBAC5B,OAAO;oBACL,IAAI,EAAE,GAAG;oBACT,WAAW,EAAE,IAAI,EAAE,IAAI,KAAK;kBAC9B,CAAC;gBACH,CAAC,CAAC,CACH;cACH,KAAK,YAAY;gBACf;gBACA,IAAI,mBAAmB,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE;kBACxE,OAAO,CACL,0CACE,KAAK,CAAC,GAAG,CACT,IAAI,EACN,iDACE,KAAK,CAAC,KAAK,CACX,KAAK,CAAC,UAAU,CAAC,GAAG,CAAE,IAAI,IAAK;oBAC/B,OAAO,qBAAuB,YAAY,CACxC;oBACC,IAAI,EACL,UACF,CAAC;kBACH,CAAC,CAAC,CACH;gBACH;gBAEA;cACF,KAAK,eAAe;gBAClB,OAAO,CACL;gBACC,KAAK,CAAC,GAAG,CAAE,IAAI,EAChB,6CACE,KAAK,CAAC,KAAK,CAAC,IAAI,CAChB,UAAU,CAAC,GAAG,CAAE,IAAI,IAAK;kBACzB,OAAO,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC;gBACvC,CAAC,CAAC,CACH;YACL;UACF;MACF;MAEA,QAAQ,KAAK,CAAC,GAAG,CAAC,IAAI;QACpB,KAAK,YAAY;UACf,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI;;QAErB;QACF,KAAK,SAAS;UACd;UACE,OAAO,qBAAuB,KAAK,CAAC,GAAG,CAAC,GAAG,IAC3C,KAAK,CAAC,GAAG,CAAC,KAAK;;QAEf;QACF;UACA;UACA;UACA;UACA;UACE,OAAO,SAAS;MACpB;IACF;IAEA,IACE,KAAK,CAAC,IAAI,KAAK,cAAc,IAC7B,iDACE,KAAK,CACL,IAAI,EAAE,IAAI,KAAK,cAAc,EAC/B;MACA,MAAM,QAAQ,GAAG,4CACf,KAAK,CACL,QAAQ,IAAI,4CAA6C,CACzD,iDACE,KAAK,CACL,IAAI,GACL,QAAQ;MACX,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK;QACxC,OAAO;UACL,IAAI,EAAE,IAAI,GAAG,GAAG;UAChB,WAAW,EAAE,IAAI,EAAE,IAAI,KAAK;QAC9B,CAAC;MACH,CAAC,CAAC;MAEF,OAAO,CACL,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,CAC/B;IACH;IAEA,IAAI,CACF,0BAA0B,EAAE,aAAa,CAC1C,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;MACtB,OAAO;QACL,cAAc,EAAE,UAAU;QAC1B,IAAI,EAAE,qEAAsE,CAC1E,sEACE;QACF;QAAA,CACE,QAAQ,EAAE,IAAI,IAAI,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;UACpD;UACA;QACF,CAAC,KAAK;UACJ,OAAO,IAAI;QACb,CAAC,CAAC;QACF,WAAW,EAAE;MACf,CAAC;IACH;IAEA,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE;MACxC,OAAO,YAAY,CACjB;MACE,8EACE,KAAK,CACL,SAAS,EAEb,IACF,CAAC;IACH;IAEA,MAAM,IAAI,KAAK,CAAC,4CAA4C,KAAK,CAAC,IAAI,KAAK,CAAC;EAC9E,CAAC;EAED,IAAI,CAAC,YAAY,EAAE;IACjB,OAAO,EAAE;EACX;EAEA,OAAO,CACL;EACA,CAAC,8EAAgF,YAAY,EAAG,cAAc,EAAE,cAAc,GAAG,MAAM,IACvI,8EACE,YAAY,CACZ,MAAM,IAAI,2EACV,YAAY,CACZ,KAAK,EAAE,MAAM,IAAI,EAAE,EAAE,GAAG,CAAE,KAAK,IAAK;IACtC,OAAO,YAAY,CAAC,KAAK,CAAC;EAC5B,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AAHA;AAIA,MAAM,SAAS,GAAI,YAAY,IAAK;EAClC;EACA,OAAO,8EACL,YAAY,CACZ,MAAM,CAAC,MAAM;AACjB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA;AAWA,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK;EACjD,MAAM,GAAG,GAAG,EAAE;EACd,KAAK,MAAM,CACT,GAAG,EACH;IACE,IAAI;IACJ,GAAG;IACH;EACF,CAAC,CACF,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE;IACzB,IAAI,GAAG,KAAK,aAAa,EAAE;MACzB;IACF;IAEA,GAAG,CAAC,IAAI,CAAC;MACP,GAAG;MACH,IAAI;MACJ;IACF,CAAC,CAAC;EACJ;EAEA,OAAO,GAAG;AACZ,CAAC;AAAC;AAEF,MAAM,gBAAgB,GAAG,IAAAC,qBAAY,EAAC,CAAC;;AAEvC;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK;EAC5C,QAAQ,IAAI;IACV,KAAK,SAAS;IACd,KAAK,YAAY;MACf,OAAOC,UAAA,WAAW;IACpB,KAAK,OAAO;MACV,OAAOC,UAAA,SAAS;IAClB,KAAK,YAAY;MACf,OAAOC,UAAA,cAAc;IACvB;MACE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;QACpD,OAAO,CAAC,MAAM,CAAC;UACb,GAAG,EAAE;YACH,GAAG,EAAE;cACH,MAAM,EAAE,CAAC;cACT,IAAI,EAAE;YACR,CAAC;YACD,KAAK,EAAE;cACL,MAAM,EAAE,CAAC;cACT,IAAI,EAAE;YACR;UACF,CAAC;UACD,OAAO,EAAE,wBAAwB,IAAI;QACvC,CAAC,CAAC;QACF,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC;MACvD;;MAEA;MACA,OAAOD,UAAA,SAAS;EACpB;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,WAAW,KAAK;EAC7C;AACF;AACA;EACE,MAAM,YAAY,GAAG,EAAE;EACvB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACd,MAAM,EAAE;MACN,WAAW;MACX,GAAG;MACH,OAAO;MACP,IAAI;MACJ,aAAa;MACb,OAAO;MACP,GAAG;MACH;IACF;EACF,CAAC,KAAK;IACJ,MAAM,IAAI,GAAG,CACX,GAAG,IAAI,OAAO,IACZ,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,aAAa,IAAI;;IAE/C;IAAA,EACE,KAAK,CAAC,CAAC,CAAC,IACL,WAAW,IAAI,EAAE,CAAC,IAAI,OAAO,IAAI,EAAE,CAAC;IAEzC,IAAI,GAAG,EAAE;MACP,IAAI,IAAI,EAAE;QACR,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;MACzB;MAEA,OAAO,IAAI;IACb;IAEA,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;IAEvB,OAAO,KAAK;EACd,CAAC,CAAC;EAEF,OAAO,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC7D,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAUA,MAAM,yBAAyB,GAAG,CAChC,IAAI,EACJ,IAAI,EACJ,aAAa,GAAG,CAAC,CAAC;AAClB;AACA;AACA,OAAO,GAAG;EACR,MAAM,GAAI;IACR;EAAA;AAEJ,CAAC,KACE;EACH,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;EAC/C,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAE,OAAO,IAAK;IAC5D,OAAO,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,WAAW,KAAK,IAAI;EAC/E,CAAC,CAAC,EAAE;IACF,OAAO,IAAI;EACb;;EAEA;EACA;EACA;EACA;EACA;EACA,MAAM,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAC3C,MAAM,CACH,OAAO,CAAC,aAAa,CAAC,CACtB,GAAG,CAAC,CAAC,CACJ,GAAG,EACH,KAAK,CACN,KAAK;IACJ,OAAO,CACL,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,KAAK,CACjC;EACH,CAAC,CACL,CAAC;EAED,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE;IAC3C,OAAO,kBAAkB,CAAC,IAAI,CAAC;EACjC;EAEA,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC;EAElD,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GACpD,OAAO,CACV,KAAK;IACJ,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;EAC/B,CAAC,CAAC,GAAG,CAAC,CAAC;EACP,IAAI,gBAAgB,EAAE;IACpB,OAAO,gBAAgB;EACzB;EAEA,OAAO,IAAI;AACb,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAOA,MAAM,UAAU,GAAG,CACjB,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,WAAW,KACR;EACH,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC;EAElD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;EAClF,MAAM,cAAc,GAAG,WAAW;EAClC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC;EAEpD,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/B,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK;EACvC,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;EAElD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAE,GAAG,IAAK;IAC9B,OAAO,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,cAAc;EACjD,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK;EACpC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAE,GAAG,IAAK;IAChC,OAAO,MAAM,CAAC,GAAG,CAAC;EACpB,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK;EAClC,OAAO,UAAU,CAAC,KAAK,EAAG,IAAI,IAAK;IACjC,OAAO,IAAI,CAAC,GAAG,KAAK,OAAO;EAC7B,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAnBA;AAoBA,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE;EAClC,iBAAiB,GAAG,KAAK;EACzB,OAAO;EACP,OAAO;EACP,cAAc,GAAG,qBAAqB,OAAO,IAAI;EACjD,IAAI;EACJ,MAAM,GAAG,MAAM,CAAC,CAAC;EACjB,uBAAuB,GAAG,KAAK;EAC/B;AACF,CAAC,KAAK;EACJ,MAAM,GAAG,GAAG,yBAAyB,CAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC;EAChF,MAAM,QAAQ,GAAG,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;EAC/C,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,KAAK,KAAK,IAAI,QAAQ,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;IAC7E,IAAI,uBAAuB,EAAE;MAC3B,OAAO;QACL,OAAO,EAAE,IAAI;QACb;MACF,CAAC;IACH;IAEA,MAAM,OAAO,GAAG,QAAQ,IAAI,GAAG,CAAC,OAAO,IAAI,cAAc;IACzD,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjD,OAAO,KAAK;EACd;EAEA,OAAO,QAAQ,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG;AAC/D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAdA;AAeA,MAAM,mBAAmB,GAAG,CAC1B,KAAK,EAAE,OAAO,EAAE,YAAY,EAC5B;EACE,OAAO;EACP,IAAI;EACJ,MAAM;EACN,uBAAuB,GAAG,KAAK;EAC/B;AACF,CAAC,GAAG,CAAC,CAAC,KACH;EACH,MAAM,aAAa,GAAG;EACpB,mBAAmB,CAAC,KAAK,EAAE;IACzB,OAAO;IACP,IAAI;IACJ,MAAM;IACN,uBAAuB;IACvB,OAAO;IACP;EACF,CAAC,CACF;EACD,IAAI,CAAC,aAAa,IAChB,uBAAuB,IAAI,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAC7E;IACA;EACF;EAEA,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C;EACF,CAAC,KAAK;IACJ,OAAO,GAAG,KAAK,aAAa;EAC9B,CAAC,CAAC;EAEF,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE;IAChD,YAAY;IACV;AACN;AACA;IACQ,gBAAgB,EACf,aACL,CAAC;EACH;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAQA,MAAM,aAAa,GAAI,KAAK,IAAK;EAC/B,OAAO,CACL,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAE,SAAS,IAAK;IACrC;IACA,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM;MACT,MAAM,EAAE;QACN;MACF;IACF,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;MACjB,IAAI,EAAE;MACN,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE;QAC7D;MACF;IACF;IAEA,SAAS,CAAC,IAAI,GAAG,IAAI;IAErB,OAAO,SAAS;EAClB,CAAC,CAAC,EACF,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAE,GAAG,IAAK;IAC7B,KAAK,MAAM,SAAS,IAAI,GAAG,CAAC,UAAU,EAAE;MACtC;MACA,IAAI,IAAI,GAAG,CAAC;MACZ,KAAK,MAAM;QACT,MAAM;QACN,MAAM,EAAE;UACN;QACF;MACF,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE;QACf,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE;UAC7D,IAAI,GAAG,MAAM;UACb;QACF;MACF;MAEA,SAAS,CAAC,IAAI,GAAG,IAAI;IACvB;IAEA;MACE;AACR;AACA;AACA;AACA;MACU,GAAG,CACH;IAAU;EAEhB,CAAC,CAAC,CACH;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAQA,MAAM,UAAU,GAAI,KAAK,IAAK;EAC5B,OAAO,CACL,GAAG,KAAK,CAAC,IAAI,EACb,GAAG,aAAa,CAAC,KAAK,CAAC,CACxB;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK;EACzC,OAAO,cAAc,CAAC,IAAI,CAAE,aAAa,IAAK;IAC5C,OAAO,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC;EACrC,CAAC,CAAC;AACJ,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAQA,MAAM,qBAAqB,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK;EAC3C;EACA,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE;IAC9C,OAAO,IAAI;EACb;;EAEA;EACA,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;EAE/B;EACA,IACE,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,MAAM,IAC7C,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,KAAK,EACpC;IACA,OAAO,IAAI;EACb;EAEA,IAAI,WAAW;EACf,IAAI;IACF,WAAW,GAAG,IAAAE,cAAA,QAAQ,EACpB,OAAO,EACP,IAAI,KAAK,YAAY,GAAG,SAAS,GAAG,CAClC,IAAI,CAER,CAAC;EACH,CAAC,CAAC,MAAM;IACN;EAAA;EAGF;EACE;EACA,WAAW,IACX,WAAW,CAAC,IAAI,KAAK,gBAAgB,IACrC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAE,IAAI,IAAK;IAClC,OAAO,IAAI,CAAC,IAAI,KAAK,oBAAoB,IACvC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;EAC1D,CAAC,CAAC,EAAE;IACJ,OAAO,IAAI;EACb;;EAEA;EACA,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK;EAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;IACjB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;EACzB;EAEA,OAAO,4CAA8C,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACnE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAM,oBAAoB,GAAG,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,KAAK;EACtE,KAAK,MAAM,CACT,GAAG,EACH;IACE,IAAI;IACJ,QAAQ,GAAG,EAAE;IACb;EACF,CAAC,CACF,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;IACnC,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;IAExC,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC;IACnC,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC;IAElC,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9C,IAAI,YAAY,IAAI,IAAI,KAAK,KAAK,EAAE;MAClC,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;IACzF;IAEA,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC;IAE3C,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9C,IAAI,YAAY,IAAI,IAAI,KAAK,KAAK,EAAE;MAClC,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC;IACzF;IAEA,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC;IAE3C,MAAM,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAClE,IAAI,kBAAkB,IAAI,IAAI,KAAK,KAAK,EAAE;MACxC,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC;IACvG;IAEA,IAAI,kBAAkB,IAAI,IAAI,KAAK,KAAK,EAAE;MACxC,MAAM,IAAI,KAAK,CAAC,oFAAoF,CAAC;IACvG;IAEA,SAAS,CAAC,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;EACzD;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK;EACvD,MAAM,SAAS,GAAG,IAAAL,sCAA6B,EAAC,IAAI,CAAC;EAErD,IAAI;IACF,oBAAoB,CAAC,cAAc,EAAE,SAAS,CAAC;IACjD;EACA,CAAC,CAAC,MAAM;IACN;EAAA;EAGF,OAAO,SAAS;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,2BAA2B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,KAAK;EAClE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;EAExC,OAAO,2CAA6C,CAClD,eAAe,EACf,mBAAmB,CACpB,CAAE,QAAQ,CAAC;EACV,SAAS,CAAC,GAAG,CAAC,cAAc,CAAE,CAAC;AACnC,CAAC;;AAED;AACA;AACA;AACA;AAHA;AAIA,MAAM,qBAAqB,GAAI,UAAU,IAAK;EAC5C,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC,CAC/B,MAAM,CAAE,OAAO,IAAK;IACnB,OAAQ,YAAY,CAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;EAC3C,CAAC,CAAC,CACD,GAAG,CAAE,WAAW,IAAK;IACpB,OAAO,IAAAM,cAAA,YAAY,EAAC,WAAW,EAAE,EAAE,CAAC;EACtC,CAAC,CAAC;AACN,CAAC;;AAED;AACA;AACA;AACA;AAHA;AAIA,MAAM,+BAA+B,GAAI,UAAU,IAAK;EACtD,OAAO,qBAAqB,CAAC,UAAU,CAAC,CACrC,OAAO,CAAE,GAAG,IAAK;IAChB,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;MACtB;IACF,CAAC,KAAK;MACJ,OAAO,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,CAC1C,KAAK,EACL,UAAU,EACV,OAAO,EACP,MAAM,EACN,UAAU,CACX,CAAC,QAAQ,CAAC,GAAG,CAAC;IACjB,CAAC,CAAC;EACJ,CAAC,CAAC;AACN,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,KAAK;EAC/D,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;EACxC,OAAO,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,sBAAsB;AACjE,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,6BAA6B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,KAAK;EACpE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;EACxC,OAAO,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,6BAA6B;AACxE,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,KAAK;EAC9D,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;EAExC,OAAO,gCAAkC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;AACxE,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,KAAK;EAC/D,IAAI,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;IACxC,OAAO,IAAI;EACb;EAEA,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;EAExC,MAAM,GAAG,GAAG,gCAAkC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAE;EAE3E,OAAO,GAAG,KAAK,SAAS,GAAG,IAAI,GAAG,GAAG;AACvC,CAAC;AAAC;AAEF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAC5B,eAAe,EAAE,mBAAmB,EACpC,sBAAsB,CACvB,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,KAAK;EAC/D,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;EAExC,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;EAEzC,OAAO,GAAG,KAAK,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC;AAChD,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,KAAK;EACjE,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;EAExC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;EAEjD,OAAO,WAAW,KAAK,KAAK,IAC1B,aAAa,CAAC,GAAG,CAAC,qBAAuB,WAAY,CAAC;AAC1D,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,KAAK;EAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;EAExC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;EAEjD,OAAO,WAAW,KAAK,KAAK,IAC1B,CACE,mBAAmB,EACnB,sBAAsB,CACvB,CAAC,QAAQ,CAAC,qBAAuB,WAAY,CAAC;AACnD,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,KAAK;EACvD,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;EAExC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;EAEjD,OAAO,WAAW,KAAK,KAAK,IAC1B,WAAW,KAAK,eAAe;AACnC,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,uBAAuB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,KAAK;EAC9D,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;EAExC,OAAO,gCAAkC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;AACxE,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,oCAAoC,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK;EAC5D,OAAO,OAAO,CAAC,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,0BAA0B,CAAC,GAAG,EAAE,MAAM,CAAC;AAClG,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,mCAAmC,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK;EAC3D,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;EAExC,OAAO,sBAAwB,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACpE,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAM,gCAAgC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,KAAK;EACvE,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;EACrE,MAAM,qBAAqB,GAAG,wBAAwB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;EACvE,MAAM,eAAe,GAAG,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;EAClE,MAAM,yBAAyB,GAAG,CAChC,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,IACxC,0BAA0B,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;EACtB,MAAM,cAAc,GAAG,mCAAmC,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;EAC3E,MAAM,SAAS,GAAG,oCAAoC,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KACpE,eAAe,IAAI,yBAAyB,CAAC;EAEhD,OAAO,cAAc,IAAI,CAAC,SAAS,IAAI,CAAC,oBAAoB;AAC9D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,qBAAqB,KAAK;EAC3D;EACA,IAAI,CAAC,IAAI,EAAE;IACT,OAAO,KAAK;EACd;EAEA,QAAQ,IAAI,CAAC,IAAI;IACf,KAAK,iBAAiB;IAEtB,KAAK,cAAc;MACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAE,OAAO,IAAK;QACrC,OAAO,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,CAAC;MAC5D,CAAC,CAAC;IACJ,KAAK,sBAAsB;IAC3B,KAAK,kBAAkB;IACvB,KAAK,mBAAmB;MAAE;QACxB,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,IAC5D,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC;MACxD;IAEA,KAAK,mBAAmB;MACtB,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC;IAC/D,KAAK,gBAAgB;MAAE;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAE,QAAQ,IAAK;UAClC,OAAO,CAAC,CACN,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,CACrB,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAC9C,QAAQ,EAAE,qBACZ,CAAC;QACH,CAAC,CAAC;MACJ;;IAEA;IACA,KAAK,gBAAgB;IACrB;IACA,KAAK,wBAAwB;MAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAE,OAAO,IAAK;QACtC,OAAO,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,CAAC;MAC5D,CAAC,CAAC;IACJ,KAAK,iBAAiB;IACtB,KAAK,qBAAqB;MAAE;QAC1B,OAAO,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC;MACpE;;IAEA;IACA;IACA,KAAK,eAAe;;IAEpB;IACE;IACF,KAAK,gBAAgB;IACrB;IACA,KAAK,UAAU;IAEf,KAAK,oBAAoB;MACvB,OAAO,IAAI,CAAC,QAAQ,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,IAC5E,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC;IAExD,KAAK,uBAAuB;IAE5B,KAAK,aAAa;MAAE;QAClB,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,IAC5D,mBAAmB,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,IAC3D,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC;MAC5D;IAEA,KAAK,kBAAkB;IACvB,KAAK,gBAAgB;IAErB,KAAK,gBAAgB;IAErB,KAAK,cAAc;IAEnB,KAAK,kBAAkB;IACvB,KAAK,gBAAgB;IACrB,KAAK,eAAe;MAAE;QACpB,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC;MAC9D;;IAEA;IACA;IACA,KAAK,QAAQ;IACb,KAAK,kBAAkB;MACrB,OAAO,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,qBAAqB,CAAC;;IAEhE;IACE;IACF,KAAK,kBAAkB;IACvB;IACA,KAAK,0BAA0B;MAC7B,OAAO,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,qBAAqB,CAAC,IAC9D,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IAE3D,KAAK,kBAAkB;IACvB,KAAK,eAAe;MAClB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAE,QAAQ,IAAK;QACxC,OAAO,mBAAmB,CAAC,QAAQ,EAAE,qBAAqB,CAAC;MAC7D,CAAC,CAAC;IACF;IACA;IACF,KAAK,cAAc;MACnB;MACA;MACE,OAAO,IAAI,CAAC,QAAQ,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC;MAC5E;MACA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAE,GAAG,IAAK;QAC3B,OAAO,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,CAAC;MACxD,CAAC,CAAC;IACJ,KAAK,iBAAiB;MAAE;QACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;UAC1B,OAAO,KAAK;QACd;QAEA,OAAO,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;MAClE;;IAEA;IACA,KAAK,oBAAoB;IAEzB,KAAK,iBAAiB;MACpB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAE,aAAa,IAAK;QAC9C,OAAO,mBAAmB,CAAC,aAAa,EAAE,qBAAqB,CAAC;MAClE,CAAC,CAAC;IACJ,KAAK,eAAe;IAEpB,KAAK,iBAAiB;MACpB,OAAO,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IAElE,KAAK,iBAAiB;MAAE;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CACnB,QAAQ,IAAK;UACZ,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAE,GAAG,IAAK;YACvC,OAAO,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,CAAC;UACxD,CAAC,CAAC;QACJ,CACF,CAAC;MACH;IAEA,KAAK,0BAA0B;MAC7B,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC;IAE/D,KAAK,cAAc;MAAE;QACnB,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,CAAC,IAC7D,mBAAmB,CACjB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,qBACrC,CAAC,IACD,mBAAmB,CACjB;QACC,IAAI,CAAC,SAAS,EACf,qBACF,CAAC;MACH;IAEA,KAAK,qBAAqB;MAAE;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAE,GAAG,IAAK;UACrC,OAAO,mBAAmB,CAAC,GAAG,EAAE,qBAAqB,CAAC;QACxD,CAAC,CAAC;MACJ;IAEA,KAAK,oBAAoB;MAAE;QACzB,OAAO,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,qBAAqB,CAAC,IAC1D,mBAAmB,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC;MACvD;IAEA,KAAK,iBAAiB;MAAE;QACtB,IAAI,qBAAqB,EAAE;UACzB,IACA,yCACI,IAAI,CACJ,MAAM,EAAE,IAAI,KAAK,oBAAoB,EACvC;YACA,OAAO,IAAI;UACb;UAEA,OAAO,KAAK;QACd;;QAEA;QACA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;UAC1B,OAAO,KAAK;QACd;QAEA,OAAO,IAAI;MACb;IAEA;MAAS;QACP,OAAO,KAAK;MACd;EACF;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,qBAAqB,KAAK;EACrD,OAAO,8EACL,IAAI,CACJ,SAAS,KACT,8EACE,IAAI,CACJ,UAAU,IAAI,mBAAmB,CACjC;EACC,IAAI,CAAE,IAAI,EACX,qBACF,CAAC,CACF;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALA;AAMA,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK;EAC7C,IAAI,CAAC,IAAI,EAAE;IACT,OAAO,KAAK;EACd;;EAEA;EACA;EACA;EACA,QAAQ,IAAI,CAAC,IAAI;IACf,KAAK,yBAAyB;IAC9B,KAAK,qBAAqB;IAC1B,KAAK,oBAAoB;MAAE;QACzB,OAAO,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;MACxE;IAEA,KAAK,gBAAgB;MAAE;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAE,QAAQ,IAAK;UAClC,OAAO,QAAQ,CAAC,IAAI,KAAK,qBAAqB,IAAI,aAAa,CAAC,QAAQ,CAAC;QAC3E,CAAC,CAAC;MACJ;IAEA,KAAK,kBAAkB;IACvB,KAAK,gBAAgB;IACrB,KAAK,gBAAgB;IACrB,KAAK,cAAc;IACnB,KAAK,kBAAkB;IACvB,KAAK,gBAAgB;IACrB,KAAK,eAAe;MAAE;QACpB,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;MACjC;IAEA,KAAK,aAAa;MAAE;QAClB,OAAO,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;MACxE;IAEA,KAAK,iBAAiB;MAAE;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CACnB,QAAQ,IAAK;UACZ,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAE,GAAG,IAAK;YACvC,OAAO,aAAa,CAAC,GAAG,CAAC;UAC3B,CAAC,CAAC;QACJ,CACF,CAAC;MACH;IAEA,KAAK,gBAAgB;MAAE;QACrB,OAAO,IAAI;MACb;;IAEA;IACA,KAAK,cAAc;MAAE;QACnB,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IACrD,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;MACjC;IAEA;MAAS;QACP,OAAO,KAAK;MACd;EACF;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXA;AAYA,MAAM,mBAAmB,GAAI,GAAG,IAAK;EACnC,MAAM,KAAK,GAAG,EAAE;EAChB,IAAI,KAAK,GAAG,CAAC;EACb,IAAI,OAAO,GAAG,EAAE;EAChB,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE;IACtB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;MAChD,KAAK,EAAE;IACT,CAAC,MAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;MACvD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;IAChC;IAEA,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE;MAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;MACnB,OAAO,GAAG,EAAE;IACd,CAAC,MAAM;MACL,OAAO,IAAI,IAAI;IACjB;EACF;EAEA,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;EAEnB,OAAO,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,uBAAuB,GAAI,GAAG,IAAK;EACvC,OAAO,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CACjC,GAAG,CAAE,IAAI,IAAK;IACb,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,SAAS,CAAC;EAChE,CAAC,CAAC;AACN,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA;AAWA,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,KAAK;EAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,eAAe,KAAK,IAAI,GAAG,CAChG,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,CACpB,GAAG,eAAe,CAAC;EAEpB,OAAO,QAAQ;AACjB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALA;AAMA,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,KAAK;EAC1D;EACA,MAAM,UAAU,GAAG,CAAC,CAAC;EAErB,KAAK,MAAM,CACT,GAAG,EACH,IAAI,CACL,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE;IACvB;IACA,IAAI,QAAQ;;IAEZ;IACA,IAAI,KAAK;IAET,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;MAC5B,MAAM,OAAO,GAAG;QACd,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE,IAAI,CAAC;MACjB,CAAC;MACD,IAAI,IAAI,CAAC,OAAO,EAAE;QAChB,QAAQ,GAAG,qBAAuB,IAAI,CAAC,OAAQ;QAC/C,KAAK,GAAG,UAAU,CAAC,IAAI,CACrB,IAAI,EACJ;UACE,GAAG,OAAO;UACV,OAAO,EAAE,IAAI,CAAC;QAChB,CAAC;QACD;AACV;AACA;QACW;QACC,OAAO,CACP,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAC3B,CAAC;MACH,CAAC,MAAM;QACL,QAAQ,GAAG,qBAAuB,IAAI,CAAC,OAAQ;QAC/C,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;MAC9C;IACF,CAAC,MAAM;MACL,MAAM,OAAO,GAAG;QACd,SAAS,EAAE,GAAG;QACd,QAAQ,EAAE;MACZ,CAAC;MACD,QAAQ,GAAG,IAAI;MACf,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;IAC9C;IAEA,MAAM,GAAG;IAAG;AAChB;AACA;IAAqB,UAAU,CAAC,QAAQ,CAAE;IACtC,UAAU,CAAC,QAAQ,CAAC,GAAG,GAAG;IACxB;AACN;AACA;IACM,UAAU,IAAI,EAAE;MACd,GAAG,CAAC,IAAI,CAAC;MACT,KAAK,CAAC,IAAI,CAAC;IACb,CAAC,GACD,KAAK;EACT;EAEA,OAAO,UAAU;AACnB,CAAC;AAAC;AAEF,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC,CAC3C,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAC9C,QAAQ;AAER;AACA,SAAS,EAAE,UAAU,CACtB,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK;EAC7C;AACF;AACA;EACE,MAAM,gBAAgB,GAAG,EAAE;EAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAE,GAAG,IAAK;IACzC,MAAM;MACJ,GAAG,EAAE;IACP,CAAC,GAAG,GAAG;IACP,MAAM,WAAW,GAAG,4BAA4B,CAAC,GAAG,CAAC,OAAO,CAAC;IAC7D,IAAI,CAAC,WAAW,EAAE;MAChB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B;IAEA,OAAO,WAAW;EACpB,CAAC,CAAC;EAEF,OAAO;IACL,aAAa;IACb;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALA;AAMA,MAAM,SAAS,GAAI,UAAU,IAAK;EAChC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG;AAClE,CAAC;;AAED;AACA;AACA;AACA;AAHA;AAIA,MAAM,aAAa,GAAI,IAAI,IAAK;EAC9B,OAAO,IAAI,EAAE,IAAI,KAAK,kBAAkB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,IACvE,2EACE,IAAI,EAAE,MAAM,EACX,IAAI,KAAK,aAAa;AAC3B,CAAC;;AAED;AACA;AACA;AACA;AAHA;AAIA,MAAM,QAAQ,GAAI,IAAI,IAAK;EACzB,OAAO,IAAI,KAAK,IAAI;EACpB;AACF;AACA;AACA;EACI,IAAI,CAAC,MAAM,EACV,IAAI,KAAK,KAAK;AACnB,CAAC;;AAED;AACA;AACA;AACA;AAHA;AAIA,MAAM,QAAQ,GAAI,IAAI,IAAK;EACzB,OAAO,IAAI,KAAK,IAAI;EACpB;AACF;AACA;AACA;EACI,IAAI,CAAC,MAAM,EACV,IAAI,KAAK,KAAK;AACnB,CAAC;;AAED;AACA;AACA;AACA;AAHA;AAIA,MAAM,eAAe,GAAI,IAAI,IAAK;EAChC,MAAM;IACJ,GAAG;IACH,IAAI,EAAE,UAAU;IAChB;EACF,CAAC;EACC;AACJ;AACA;AACA;EAAS,IAAK;EAEZ,MAAM,UAAU,GACd,qEACE,GAAG,CACH,IAAI;EAER,MAAM,YAAY,GAAG,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,KAAK;EAEzD,MAAM,OAAO,GAAG,IAAI,KAAK,kBAAkB,GACzC,oEACE,IAAI,CAAC,MAAM,CACX,IAAI,GACN,2EACE,IAAI,CAAC,MAAM,CACX,UAAU;EAEd,OACE,OAAO,CAAC,IAAI,CAAE,KAAK,IAAK;IACtB,MAAM;MACJ,GAAG,EAAE,EAAE;MACP;IACF,CAAC;IAAG;AACV;AACA;AACA;IAAe,KAAM;IAEf,MAAM,IAAI,GACR,qEACE,EAAE,CACF,IAAI;IAER,OAAO,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,UAAU;EACrD,CAAC,CAAC;AAEN,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,KAAK;EAC5D;AACF;AACA;AACA;EACE,MAAM,eAAe,GAAI,IAAI,IAAK;IAChC,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU;IAE7C,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAC9B,gBAAgB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;EAC9D,CAAC;EAED,MAAM,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC;EACpD,MAAM,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC;EAEpD,OAAO,CAAC,eAAe,CAAC,mBAAmB,CAAC,KAExC,aAAa,CAAC,IAAI,CAAC,IACnB,OAAO,CAAC,KAAK,EAAE,CACb,OAAO,EACP,aAAa,CACd,CAAC,CAAC,IACP,QAAQ,CAAC,IAAI,CAAC,KACZ,CAAC,YAAY,IACb,YAAY,KAAK,WAAW,IAAI,eAAe,CAC7C;EACC,+CAAiD,IAAI,CAAE,MAC1D,CAAC,CACF,IACD,QAAQ,CAAC,IAAI,CAAC,KACZ,CAAC,YAAY,IACb,YAAY,KAAK,WAAW,IAAI,eAAe,CAC7C;EACC,+CAAiD,IAAI,CAAE,MAC1D,CAAC,CACF;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA;AAQA,MAAM,qBAAqB,GAAI,GAAG,IAAK;EACrC,OAAO,GAAG,CAAC,UAAU,CAAC,kBAAkB,EAAE,KAAK,CAAC;AAClD,CAAC;;AAED;AACA;AACA;AACA;AAHA;AAIA,MAAM,YAAY,GAAI,IAAI,IAAK;EAC7B,OAAQ,aAAa,IAAK;IACxB,OAAO,aAAa,KAAK,IAAI,IAC3B,qBAAqB,CAAC,aAAa,CAAC,KAAK,qBAAqB,CAAC,IAAI,CAAC;EACxE,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AAAA;AACA,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,aAAa,KAAK;EACpD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IACpC,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;AACjF,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJA;AAKA,MAAM,kBAAkB,GAAG,CAAC,WAAW,EAAE,aAAa,KAAK;EACzD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,0BAA0B,CAAC;EAC3D,IAAI,KAAK,GAAG,GAAG;EACf,IAAI,KAAK,GAAG,WAAW;EACvB,IAAI,KAAK,EAAE;IACT,GACI,KAAK,EACP,KAAK,CACN,GAAG,KAAK;IACT,IAAI,CAAC,KAAK,EAAE;MACV,KAAK,GAAG,GAAG;IACb;EACF;EAEA,MAAM,WAAW,GAAG,CAClB,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,aAAa,IAAI,EAAE,CAAC,CAAC,CAC1C;EACD,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;EAE5B,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;AACjC,CAAC;AAAC;AAEF,MAAM,iBAAiB,+BAAG,CACxB,WAAW,EACX,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,UAAU,EACV,MAAM,EACN,QAAQ,CACT;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,GAAG,EAAE,KAAK;EACtF,MAAM,SAAS,GAAG,IAAAC,cAAA,SAAS,EAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;EACnD,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;EACvC,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;EAEpC,MAAM,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/C;EACF,CAAC,KAAK;IACJ,OAAO,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW;EAC1C,CAAC,CAAC;EAEF,MAAM,WAAW,GAAG,kBAAkB,KAAK,CAAC,CAAC,GAC3C,IAAI,GACJ,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC;EAEtC,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;EAE1C,MAAM,GAAG,GAAG;EACV;EACA;IACE,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,EAAE;IACV,MAAM,EAAE;MACN,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;MACvB,IAAI,SAAS,CAAC,MAAM,IAAI,YAAY,GAAG;QACrC,GAAG,EAAE,EAAE;QACP,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE;MACZ,CAAC,GAAI,WAAW,GAAG;QACjB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;QAChC,QAAQ,EAAE;MACZ,CAAC,GAAG,CAAC,CAAE,CAAC;MACR,IAAI,EAAE,GAAG,GAAG,kBAAkB,GAAG,aAAa,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,YAAY,KAAK,SAAS,GAAG,kBAAkB,GAAG,GAAG,GAAG,EAAE;IACnI;EACF,CAAC;EACD;EACA,IAAI,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK;IACtD,OAAO;MACL,MAAM,EAAE,aAAa,GAAG,GAAG,GAAG,CAAC;MAC/B,MAAM,EAAE,EAAE;MACV,MAAM,EAAE;QACN;QACA,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;QACvB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;QAC1F,GAAG,EAAE,EAAE;QACP,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,MAAM,GAAG,GAAG;QACnB,GAAG,EAAE,EAAE;QACP,IAAI,EAAE;MACR;IACF,CAAC;EACH,CAAC,CAAC,GAAG,EAAE,CAAC,CACT;;EAED;EACA;EACE;EACA,WAAW,IAAI,kBAAkB,GAAG,CAAC,EACrC;IACA,IAAI,SAAS,CAAC,MAAM,IAAI,YAAY,KAAK,SAAS,EAAE;MAClD,GAAG,CAAC,IAAI,CAAC;QACP,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC;QACtB,MAAM,EAAE,EAAE;QACV,MAAM,EAAE;UACN,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM;UACxB,IAAI,EAAE,YAAY,GAAG,kBAAkB,GAAG;QAC5C;MACF,CAAC,CAAC;IACJ;IAEA;IACE;IACA,WAAW,CAAC,MAAM,GAAG,CAAC,EACtB;MACA,GAAG,CAAC,IAAI,CACN,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM;QACN;MACF,CAAC,EAAE,GAAG,KAAK;QACT,OAAO;UACL,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC;UAC5B,MAAM;UACN;QACF,CAAC;MACH,CAAC,CACH,CAAC;IACH;EACF,CAAC,MAAM,IAAI,WAAW,EAAE;IACtB,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,YAAY,KAAK,SAAS,KAAK,YAAY,EAAE;MACpE,GAAG,CAAC,IAAI,CAAC;QACP,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC;QACtB,MAAM,EAAE,EAAE;QACV,MAAM,EAAE;UACN,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM;UACxB,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;UAC5F,OAAO,EAAE,EAAE;UACX,KAAK,EAAE,MAAM,GAAG,GAAG;UACnB,GAAG,EAAE,EAAE;UACP,IAAI,EAAE,YAAY,GAAG,kBAAkB,GAAG;QAC5C;MACF,CAAC,CAAC;IACJ;IAEA;IACE;IACA,WAAW,CAAC,MAAM,GAAG,CAAC,EACtB;MACA,GAAG,CAAC,IAAI,CACN,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM;QACN;MACF,CAAC,EAAE,GAAG,KAAK;QACT,OAAO;UACL,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC;UAC5B,MAAM;UACN;QACF,CAAC;MACH,CAAC,CACH,CAAC;IACH;EACF,CAAC,MAAM,IAAI,YAAY,EAAE;IACvB,GAAG,CAAC,IAAI,CAAC;MACP,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC;MACtB,MAAM,EAAE,EAAE;MACV,MAAM,EAAE;QACN,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM;QACvB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;QAC1F,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,MAAM,GAAG,GAAG;QACnB,GAAG,EAAE,EAAE;QACP,IAAI,EAAE,YAAY,GAAG,kBAAkB,GAAG;MAC5C;IACF,CAAC,CAAC;EACJ;EAEA,GAAG,CAAC,MAAM,GAAG,GAAG;;EAEhB;EACA,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,EAAE;MACN,GAAG,EAAE;IACP;EACF,CAAC,KAAK;IACJ,OAAO,EAAE;EACX,CAAC,CAAC;EAEF,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,EAAE;MACN;IACF;EACF,CAAC,KAAK;IACJ,OAAO,GAAG;EACZ,CAAC,CAAC;EAEF,KAAK,CAAC,MAAM,GAAG,CACb,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,EACrC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB;EACF,CAAC,KAAK;IACJ,OAAO,MAAM;EACf,CAAC,CAAC,CACH;EAED,IAAI,gBAAgB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE;IACzD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;EACrC;AACF,CAAC;AAAC","ignoreList":[]}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
2
9
|
const accessLevels = ['package', 'private', 'protected', 'public'];
|
|
3
|
-
|
|
10
|
+
var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
4
11
|
report,
|
|
5
12
|
utils
|
|
6
13
|
}) => {
|
|
@@ -29,4 +36,5 @@ export default iterateJsdoc(({
|
|
|
29
36
|
type: 'suggestion'
|
|
30
37
|
}
|
|
31
38
|
});
|
|
39
|
+
module.exports = exports.default;
|
|
32
40
|
//# sourceMappingURL=checkAccess.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkAccess.cjs","names":[],"sources":["../../src/rules/checkAccess.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nconst accessLevels = [\n 'package', 'private', 'protected', 'public',\n];\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('access', (jsdocParameter, targetTagName) => {\n const desc = jsdocParameter.name + ' ' + jsdocParameter.description;\n\n if (!accessLevels.includes(desc.trim())) {\n report(\n `Missing valid JSDoc @${targetTagName} level.`,\n null,\n jsdocParameter,\n );\n }\n });\n const accessLength = utils.getTags('access').length;\n const individualTagLength = utils.getPresentTags(accessLevels).length;\n if (accessLength && individualTagLength) {\n report(\n 'The @access tag may not be used with specific access-control tags (@package, @private, @protected, or @public).',\n );\n }\n\n if (accessLength > 1 || individualTagLength > 1) {\n report(\n 'At most one access-control tag may be present on a JSDoc block.',\n );\n }\n}, {\n checkPrivate: true,\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that `@access` tags have a valid value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-access.md#repos-sticky-header',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"checkAccess.cjs","names":["iterateJsdoc"],"sources":["../../src/rules/checkAccess.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nconst accessLevels = [\n 'package', 'private', 'protected', 'public',\n];\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('access', (jsdocParameter, targetTagName) => {\n const desc = jsdocParameter.name + ' ' + jsdocParameter.description;\n\n if (!accessLevels.includes(desc.trim())) {\n report(\n `Missing valid JSDoc @${targetTagName} level.`,\n null,\n jsdocParameter,\n );\n }\n });\n const accessLength = utils.getTags('access').length;\n const individualTagLength = utils.getPresentTags(accessLevels).length;\n if (accessLength && individualTagLength) {\n report(\n 'The @access tag may not be used with specific access-control tags (@package, @private, @protected, or @public).',\n );\n }\n\n if (accessLength > 1 || individualTagLength > 1) {\n report(\n 'At most one access-control tag may be present on a JSDoc block.',\n );\n }\n}, {\n checkPrivate: true,\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that `@access` tags have a valid value.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-access.md#repos-sticky-header',\n },\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA8C;AAE9C,MAAM,YAAY,GAAG,CACnB,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,CAC5C;AAAC,iCAEa,IAAAA,qBAAY,EAAC,CAAC;EAC3B,MAAM;EACN;AACF,CAAC,KAAK;EACJ,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,aAAa,KAAK;IACrE,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,cAAc,CAAC,WAAW;IAEnE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;MACvC,MAAM,CACJ,wBAAwB,aAAa,SAAS,EAC9C,IAAI,EACJ,cACF,CAAC;IACH;EACF,CAAC,CAAC;EACF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM;EACnD,MAAM,mBAAmB,GAAG,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM;EACrE,IAAI,YAAY,IAAI,mBAAmB,EAAE;IACvC,MAAM,CACJ,iHACF,CAAC;EACH;EAEA,IAAI,YAAY,GAAG,CAAC,IAAI,mBAAmB,GAAG,CAAC,EAAE;IAC/C,MAAM,CACJ,iEACF,CAAC;EACH;AACF,CAAC,EAAE;EACD,YAAY,EAAE,IAAI;EAClB,gBAAgB,EAAE,IAAI;EACtB,IAAI,EAAE;IACJ,IAAI,EAAE;MACJ,WAAW,EAAE,gDAAgD;MAC7D,GAAG,EAAE;IACP,CAAC;IACD,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA","ignoreList":[]}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc.cjs"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
3
10
|
context,
|
|
4
11
|
indent,
|
|
5
12
|
jsdocNode,
|
|
@@ -67,4 +74,5 @@ one space. Defaults to 1 (one space of normal inner indentation).`,
|
|
|
67
74
|
type: 'layout'
|
|
68
75
|
}
|
|
69
76
|
});
|
|
77
|
+
module.exports = exports.default;
|
|
70
78
|
//# sourceMappingURL=checkAlignment.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkAlignment.cjs","names":[],"sources":["../../src/rules/checkAlignment.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n indent,\n jsdocNode,\n report,\n sourceCode,\n}) => {\n const {\n innerIndent = 1,\n } = context.options[0] || {};\n\n // `indent` is whitespace from line 1 (`/**`), so slice and account for \"/\".\n const indentLevel = indent.length + innerIndent;\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n')\n .slice(1)\n .map((line, number) => {\n return {\n line: line.split('*')[0],\n number,\n };\n })\n .filter(({\n line,\n }) => {\n return !line.trimStart().length;\n });\n\n /** @type {import('eslint').Rule.ReportFixer} */\n const fix = (fixer) => {\n const replacement = sourceCode.getText(jsdocNode).split('\\n')\n .map((line, index) => {\n // Ignore the first line and all lines not starting with `*`\n const ignored = !index || line.split('*')[0].trimStart().length;\n\n return ignored ? line : `${indent}${''.padStart(innerIndent, ' ')}${line.trimStart()}`;\n })\n .join('\\n');\n\n return fixer.replaceText(jsdocNode, replacement);\n };\n\n sourceLines.some(({\n line,\n number,\n }) => {\n if (line.length !== indentLevel) {\n report('Expected JSDoc block to be aligned.', fix, {\n line: number + 1,\n });\n\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid alignment of JSDoc block asterisks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-alignment.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n innerIndent: {\n default: 1,\n description: `Set to 0 if you wish to avoid the normal requirement for an inner indentation of\none space. Defaults to 1 (one space of normal inner indentation).`,\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"checkAlignment.cjs","names":["iterateJsdoc"],"sources":["../../src/rules/checkAlignment.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\nexport default iterateJsdoc(({\n context,\n indent,\n jsdocNode,\n report,\n sourceCode,\n}) => {\n const {\n innerIndent = 1,\n } = context.options[0] || {};\n\n // `indent` is whitespace from line 1 (`/**`), so slice and account for \"/\".\n const indentLevel = indent.length + innerIndent;\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n')\n .slice(1)\n .map((line, number) => {\n return {\n line: line.split('*')[0],\n number,\n };\n })\n .filter(({\n line,\n }) => {\n return !line.trimStart().length;\n });\n\n /** @type {import('eslint').Rule.ReportFixer} */\n const fix = (fixer) => {\n const replacement = sourceCode.getText(jsdocNode).split('\\n')\n .map((line, index) => {\n // Ignore the first line and all lines not starting with `*`\n const ignored = !index || line.split('*')[0].trimStart().length;\n\n return ignored ? line : `${indent}${''.padStart(innerIndent, ' ')}${line.trimStart()}`;\n })\n .join('\\n');\n\n return fixer.replaceText(jsdocNode, replacement);\n };\n\n sourceLines.some(({\n line,\n number,\n }) => {\n if (line.length !== indentLevel) {\n report('Expected JSDoc block to be aligned.', fix, {\n line: number + 1,\n });\n\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid alignment of JSDoc block asterisks.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-alignment.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n innerIndent: {\n default: 1,\n description: `Set to 0 if you wish to avoid the normal requirement for an inner indentation of\none space. Defaults to 1 (one space of normal inner indentation).`,\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA8C;AAAA,iCAE/B,IAAAA,qBAAY,EAAC,CAAC;EAC3B,OAAO;EACP,MAAM;EACN,SAAS;EACT,MAAM;EACN;AACF,CAAC,KAAK;EACJ,MAAM;IACJ,WAAW,GAAG;EAChB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;EAE5B;EACA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,WAAW;EAC/C,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1D,KAAK,CAAC,CAAC,CAAC,CACR,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK;IACrB,OAAO;MACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACxB;IACF,CAAC;EACH,CAAC,CAAC,CACD,MAAM,CAAC,CAAC;IACP;EACF,CAAC,KAAK;IACJ,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;EACjC,CAAC,CAAC;;EAEJ;EACA,MAAM,GAAG,GAAI,KAAK,IAAK;IACrB,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1D,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK;MACpB;MACA,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;MAE/D,OAAO,OAAO,GAAG,IAAI,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;IACxF,CAAC,CAAC,CACD,IAAI,CAAC,IAAI,CAAC;IAEb,OAAO,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC;EAClD,CAAC;EAED,WAAW,CAAC,IAAI,CAAC,CAAC;IAChB,IAAI;IACJ;EACF,CAAC,KAAK;IACJ,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;MAC/B,MAAM,CAAC,qCAAqC,EAAE,GAAG,EAAE;QACjD,IAAI,EAAE,MAAM,GAAG;MACjB,CAAC,CAAC;MAEF,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd,CAAC,CAAC;AACJ,CAAC,EAAE;EACD,gBAAgB,EAAE,IAAI;EACtB,IAAI,EAAE;IACJ,IAAI,EAAE;MACJ,WAAW,EAAE,qDAAqD;MAClE,GAAG,EAAE;IACP,CAAC;IACD,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,CACN;MACE,oBAAoB,EAAE,KAAK;MAC3B,UAAU,EAAE;QACV,WAAW,EAAE;UACX,OAAO,EAAE,CAAC;UACV,WAAW,EAAE;AACzB,kEAAkE;UACtD,IAAI,EAAE;QACR;MACF,CAAC;MACD,IAAI,EAAE;IACR,CAAC,CACF;IACD,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA","ignoreList":[]}
|