eslint-plugin-jsdoc 40.0.1 → 40.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +10 -0
  2. package/dist/WarnSettings.js.map +1 -1
  3. package/dist/alignTransform.js.map +1 -1
  4. package/dist/bin/generateRule.js.map +1 -1
  5. package/dist/defaultTagOrder.js.map +1 -1
  6. package/dist/exportParser.js.map +1 -1
  7. package/dist/generateRule.js.map +1 -1
  8. package/dist/getDefaultTagStructureForMode.js.map +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/iterateJsdoc.js +2 -7
  11. package/dist/iterateJsdoc.js.map +1 -1
  12. package/dist/jsdocUtils.js.map +1 -1
  13. package/dist/rules/checkAccess.js.map +1 -1
  14. package/dist/rules/checkAlignment.js.map +1 -1
  15. package/dist/rules/checkExamples.js.map +1 -1
  16. package/dist/rules/checkIndentation.js.map +1 -1
  17. package/dist/rules/checkLineAlignment.js.map +1 -1
  18. package/dist/rules/checkParamNames.js.map +1 -1
  19. package/dist/rules/checkPropertyNames.js.map +1 -1
  20. package/dist/rules/checkSyntax.js.map +1 -1
  21. package/dist/rules/checkTagNames.js.map +1 -1
  22. package/dist/rules/checkTypes.js.map +1 -1
  23. package/dist/rules/checkValues.js.map +1 -1
  24. package/dist/rules/emptyTags.js.map +1 -1
  25. package/dist/rules/implementsOnClasses.js.map +1 -1
  26. package/dist/rules/matchDescription.js.map +1 -1
  27. package/dist/rules/matchName.js.map +1 -1
  28. package/dist/rules/multilineBlocks.js.map +1 -1
  29. package/dist/rules/newlineAfterDescription.js.map +1 -1
  30. package/dist/rules/noBadBlocks.js.map +1 -1
  31. package/dist/rules/noDefaults.js.map +1 -1
  32. package/dist/rules/noMissingSyntax.js.map +1 -1
  33. package/dist/rules/noMultiAsterisks.js.map +1 -1
  34. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  35. package/dist/rules/noTypes.js.map +1 -1
  36. package/dist/rules/noUndefinedTypes.js.map +1 -1
  37. package/dist/rules/requireAsteriskPrefix.js.map +1 -1
  38. package/dist/rules/requireDescription.js.map +1 -1
  39. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  40. package/dist/rules/requireExample.js.map +1 -1
  41. package/dist/rules/requireFileOverview.js.map +1 -1
  42. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  43. package/dist/rules/requireJsdoc.js.map +1 -1
  44. package/dist/rules/requireParam.js.map +1 -1
  45. package/dist/rules/requireParamDescription.js.map +1 -1
  46. package/dist/rules/requireParamName.js.map +1 -1
  47. package/dist/rules/requireParamType.js.map +1 -1
  48. package/dist/rules/requireProperty.js.map +1 -1
  49. package/dist/rules/requirePropertyDescription.js.map +1 -1
  50. package/dist/rules/requirePropertyName.js.map +1 -1
  51. package/dist/rules/requirePropertyType.js.map +1 -1
  52. package/dist/rules/requireReturns.js.map +1 -1
  53. package/dist/rules/requireReturnsCheck.js.map +1 -1
  54. package/dist/rules/requireReturnsDescription.js.map +1 -1
  55. package/dist/rules/requireReturnsType.js.map +1 -1
  56. package/dist/rules/requireThrows.js.map +1 -1
  57. package/dist/rules/requireYields.js.map +1 -1
  58. package/dist/rules/requireYieldsCheck.js.map +1 -1
  59. package/dist/rules/sortTags.js.map +1 -1
  60. package/dist/rules/tagLines.js.map +1 -1
  61. package/dist/rules/textEscaping.js.map +1 -1
  62. package/dist/rules/validTypes.js.map +1 -1
  63. package/dist/tagNames.js.map +1 -1
  64. package/dist/utils/hasReturnValue.js.map +1 -1
  65. package/package.json +15 -15
package/README.md CHANGED
@@ -23617,6 +23617,16 @@ function assign(employees) {
23617
23617
  // ...
23618
23618
  }
23619
23619
  // "jsdoc/valid-types": ["error"|"warn", {"allowEmptyNamepaths":true,"checkSeesForNamepaths":false}]
23620
+
23621
+ /**
23622
+ * @param {typeof obj["level1"]["level2"]} foo
23623
+ * @param {Parameters<testFunc>[0]} ghi
23624
+ * @param {{[key: string]: string}} hjk
23625
+ */
23626
+ function quux() {
23627
+
23628
+ }
23629
+ // Settings: {"jsdoc":{"mode":"typescript"}}
23620
23630
  ````
23621
23631
 
23622
23632
 
@@ -1 +1 @@
1
- {"version":3,"file":"WarnSettings.js","names":["WarnSettings","warnedSettings","WeakMap","hasBeenWarned","context","setting","has","get","markSettingAsWarned","set","Set","add"],"sources":["../src/WarnSettings.js"],"sourcesContent":["const WarnSettings = function () {\n /** @type {WeakMap<object, Set<string>>} */\n const warnedSettings = new WeakMap();\n\n return {\n /**\n * Warn only once for each context and setting\n *\n * @param {object} context\n * @param {string} setting\n */\n hasBeenWarned (context, setting) {\n return warnedSettings.has(context) && warnedSettings.get(context).has(setting);\n },\n\n markSettingAsWarned (context, setting) {\n // istanbul ignore else\n if (!warnedSettings.has(context)) {\n warnedSettings.set(context, new Set());\n }\n\n warnedSettings.get(context).add(setting);\n },\n };\n};\n\nexport default WarnSettings;\n"],"mappings":";;;;;;AAAA,MAAMA,YAAY,GAAG,YAAY;EAC/B;EACA,MAAMC,cAAc,GAAG,IAAIC,OAAO,EAAE;EAEpC,OAAO;IACL;AACJ;AACA;AACA;AACA;AACA;IACIC,aAAa,CAAEC,OAAO,EAAEC,OAAO,EAAE;MAC/B,OAAOJ,cAAc,CAACK,GAAG,CAACF,OAAO,CAAC,IAAIH,cAAc,CAACM,GAAG,CAACH,OAAO,CAAC,CAACE,GAAG,CAACD,OAAO,CAAC;IAChF,CAAC;IAEDG,mBAAmB,CAAEJ,OAAO,EAAEC,OAAO,EAAE;MACrC;MACA,IAAI,CAACJ,cAAc,CAACK,GAAG,CAACF,OAAO,CAAC,EAAE;QAChCH,cAAc,CAACQ,GAAG,CAACL,OAAO,EAAE,IAAIM,GAAG,EAAE,CAAC;MACxC;MAEAT,cAAc,CAACM,GAAG,CAACH,OAAO,CAAC,CAACO,GAAG,CAACN,OAAO,CAAC;IAC1C;EACF,CAAC;AACH,CAAC;AAAC,eAEaL,YAAY;AAAA;AAAA"}
1
+ {"version":3,"file":"WarnSettings.js","names":["WarnSettings","warnedSettings","WeakMap","hasBeenWarned","context","setting","has","get","markSettingAsWarned","set","Set","add","_default","exports","default","module"],"sources":["../src/WarnSettings.js"],"sourcesContent":["const WarnSettings = function () {\n /** @type {WeakMap<object, Set<string>>} */\n const warnedSettings = new WeakMap();\n\n return {\n /**\n * Warn only once for each context and setting\n *\n * @param {object} context\n * @param {string} setting\n */\n hasBeenWarned (context, setting) {\n return warnedSettings.has(context) && warnedSettings.get(context).has(setting);\n },\n\n markSettingAsWarned (context, setting) {\n // istanbul ignore else\n if (!warnedSettings.has(context)) {\n warnedSettings.set(context, new Set());\n }\n\n warnedSettings.get(context).add(setting);\n },\n };\n};\n\nexport default WarnSettings;\n"],"mappings":";;;;;;AAAA,MAAMA,YAAY,GAAG,SAAAA,CAAA,EAAY;EAC/B;EACA,MAAMC,cAAc,GAAG,IAAIC,OAAO,EAAE;EAEpC,OAAO;IACL;AACJ;AACA;AACA;AACA;AACA;IACIC,aAAaA,CAAEC,OAAO,EAAEC,OAAO,EAAE;MAC/B,OAAOJ,cAAc,CAACK,GAAG,CAACF,OAAO,CAAC,IAAIH,cAAc,CAACM,GAAG,CAACH,OAAO,CAAC,CAACE,GAAG,CAACD,OAAO,CAAC;IAChF,CAAC;IAEDG,mBAAmBA,CAAEJ,OAAO,EAAEC,OAAO,EAAE;MACrC;MACA,IAAI,CAACJ,cAAc,CAACK,GAAG,CAACF,OAAO,CAAC,EAAE;QAChCH,cAAc,CAACQ,GAAG,CAACL,OAAO,EAAE,IAAIM,GAAG,EAAE,CAAC;MACxC;MAEAT,cAAc,CAACM,GAAG,CAACH,OAAO,CAAC,CAACO,GAAG,CAACN,OAAO,CAAC;IAC1C;EACF,CAAC;AACH,CAAC;AAAC,IAAAO,QAAA,GAEaZ,YAAY;AAAAa,OAAA,CAAAC,OAAA,GAAAF,QAAA;AAAAG,MAAA,CAAAF,OAAA,GAAAA,OAAA,CAAAC,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"alignTransform.js","names":["rewireSource","util","zeroWidth","name","start","tag","type","shouldAlign","tags","index","source","tokens","replace","includesTag","includes","iterator","previousTag","getWidth","width","Math","max","length","delimiter","Markers","getTypelessInfo","fields","hasNoTypes","every","maxNamedTagLength","map","filter","maxUnnamedTagLength","space","len","padStart","alignTransform","customSpacings","indent","preserveMainDescriptionPostDelimiter","wrapIndent","intoTags","alignTokens","typelessInfo","nothingAfter","delim","description","postName","postType","postTag","untypedNameAdjustment","untypedTypeAdjustment","spacings","postDelimiter","update","line","indentTag","isEmpty","end","postHyphenSpacing","postHyphen","hyphenSpacing","reduce","tagIndentMode","ret"],"sources":["../src/alignTransform.js"],"sourcesContent":["/**\n * Transform based on https://github.com/syavorsky/comment-parser/blob/master/src/transforms/align.ts\n *\n * It contains some customizations to align based on the tags, and some custom options.\n */\n\nimport {\n\n // `comment-parser/primitives` export\n Markers,\n util,\n} from 'comment-parser';\n\nconst {\n rewireSource,\n} = util;\n\nconst zeroWidth = {\n name: 0,\n start: 0,\n tag: 0,\n type: 0,\n};\n\nconst shouldAlign = (tags, index, source) => {\n const tag = source[index].tokens.tag.replace('@', '');\n const includesTag = tags.includes(tag);\n\n if (includesTag) {\n return true;\n }\n\n if (tag !== '') {\n return false;\n }\n\n for (let iterator = index; iterator >= 0; iterator--) {\n const previousTag = source[iterator].tokens.tag.replace('@', '');\n\n if (previousTag !== '') {\n if (tags.includes(previousTag)) {\n return true;\n }\n\n return false;\n }\n }\n\n return true;\n};\n\nconst getWidth = (tags) => {\n return (width, {\n tokens,\n }, index, source) => {\n if (!shouldAlign(tags, index, source)) {\n return width;\n }\n\n return {\n name: Math.max(width.name, tokens.name.length),\n start: tokens.delimiter === Markers.start ? tokens.start.length : width.start,\n tag: Math.max(width.tag, tokens.tag.length),\n type: Math.max(width.type, tokens.type.length),\n };\n };\n};\n\nconst getTypelessInfo = (fields) => {\n const hasNoTypes = fields.tags.every(({\n type,\n }) => {\n return !type;\n });\n const maxNamedTagLength = Math.max(...fields.tags.map(({\n tag,\n name,\n }) => {\n return name.length === 0 ? -1 : tag.length;\n }).filter((length) => {\n return length !== -1;\n })) + 1;\n const maxUnnamedTagLength = Math.max(...fields.tags.map(({\n tag,\n name,\n }) => {\n return name.length === 0 ? tag.length : -1;\n }).filter((length) => {\n return length !== -1;\n })) + 1;\n return {\n hasNoTypes,\n maxNamedTagLength,\n maxUnnamedTagLength,\n };\n};\n\nconst space = (len) => {\n return ''.padStart(len, ' ');\n};\n\nconst alignTransform = ({\n customSpacings,\n tags,\n indent,\n preserveMainDescriptionPostDelimiter,\n wrapIndent,\n}) => {\n let intoTags = false;\n let width;\n\n const alignTokens = (tokens, typelessInfo) => {\n const nothingAfter = {\n delim: false,\n name: false,\n tag: false,\n type: false,\n };\n\n if (tokens.description === '') {\n nothingAfter.name = true;\n tokens.postName = '';\n\n if (tokens.name === '') {\n nothingAfter.type = true;\n tokens.postType = '';\n\n if (tokens.type === '') {\n nothingAfter.tag = true;\n tokens.postTag = '';\n\n /* istanbul ignore next: Never happens because the !intoTags return. But it's here for consistency with the original align transform */\n if (tokens.tag === '') {\n nothingAfter.delim = true;\n }\n }\n }\n }\n\n let untypedNameAdjustment = 0;\n let untypedTypeAdjustment = 0;\n if (typelessInfo.hasNoTypes) {\n nothingAfter.tag = true;\n tokens.postTag = '';\n if (tokens.name === '') {\n untypedNameAdjustment = typelessInfo.maxNamedTagLength - tokens.tag.length;\n } else {\n untypedNameAdjustment = typelessInfo.maxNamedTagLength > typelessInfo.maxUnnamedTagLength ? 0 :\n Math.max(0, typelessInfo.maxUnnamedTagLength - (tokens.tag.length + tokens.name.length + 1));\n untypedTypeAdjustment = typelessInfo.maxNamedTagLength - tokens.tag.length;\n }\n }\n\n // Todo: Avoid fixing alignment of blocks with multiline wrapping of type\n if (tokens.tag === '' && tokens.type) {\n return tokens;\n }\n\n const spacings = {\n postDelimiter: customSpacings?.postDelimiter || 1,\n postName: customSpacings?.postName || 1,\n postTag: customSpacings?.postTag || 1,\n postType: customSpacings?.postType || 1,\n };\n\n tokens.postDelimiter = nothingAfter.delim ? '' : space(spacings.postDelimiter);\n\n if (!nothingAfter.tag) {\n tokens.postTag = space(width.tag - tokens.tag.length + spacings.postTag);\n }\n\n if (!nothingAfter.type) {\n tokens.postType = space(width.type - tokens.type.length + spacings.postType + untypedTypeAdjustment);\n }\n\n if (!nothingAfter.name) {\n // If post name is empty for all lines (name width 0), don't add post name spacing.\n tokens.postName = width.name === 0 ? '' : space(width.name - tokens.name.length + spacings.postName + untypedNameAdjustment);\n }\n\n return tokens;\n };\n\n const update = (line, index, source, typelessInfo, indentTag) => {\n const tokens = {\n ...line.tokens,\n };\n\n if (tokens.tag !== '') {\n intoTags = true;\n }\n\n const isEmpty =\n tokens.tag === '' &&\n tokens.name === '' &&\n tokens.type === '' &&\n tokens.description === '';\n\n // dangling '*/'\n if (tokens.end === Markers.end && isEmpty) {\n tokens.start = indent + ' ';\n\n return {\n ...line,\n tokens,\n };\n }\n\n switch (tokens.delimiter) {\n case Markers.start:\n tokens.start = indent;\n break;\n case Markers.delim:\n tokens.start = indent + ' ';\n break;\n default:\n tokens.delimiter = '';\n\n // compensate delimiter\n tokens.start = indent + ' ';\n }\n\n if (!intoTags) {\n if (tokens.description === '') {\n tokens.postDelimiter = '';\n } else if (!preserveMainDescriptionPostDelimiter) {\n tokens.postDelimiter = ' ';\n }\n\n return {\n ...line,\n tokens,\n };\n }\n\n const postHyphenSpacing = customSpacings?.postHyphen ?? 1;\n const hyphenSpacing = /^\\s*-\\s*/u;\n tokens.description = tokens.description.replace(\n hyphenSpacing, '-' + ''.padStart(postHyphenSpacing, ' '),\n );\n\n // Not align.\n if (shouldAlign(tags, index, source)) {\n alignTokens(tokens, typelessInfo);\n if (indentTag) {\n tokens.postDelimiter += wrapIndent;\n }\n }\n\n return {\n ...line,\n tokens,\n };\n };\n\n return ({\n source,\n ...fields\n }) => {\n width = source.reduce(getWidth(tags), {\n ...zeroWidth,\n });\n\n const typelessInfo = getTypelessInfo(fields);\n\n let tagIndentMode = false;\n\n return rewireSource({\n ...fields,\n source: source.map((line, index) => {\n const indentTag = tagIndentMode && !line.tokens.tag && line.tokens.description;\n const ret = update(line, index, source, typelessInfo, indentTag);\n\n if (line.tokens.tag) {\n tagIndentMode = true;\n }\n\n return ret;\n }),\n });\n };\n};\n\nexport default alignTransform;\n"],"mappings":"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"}
1
+ {"version":3,"file":"alignTransform.js","names":["_commentParser","require","rewireSource","util","zeroWidth","name","start","tag","type","shouldAlign","tags","index","source","tokens","replace","includesTag","includes","iterator","previousTag","getWidth","width","Math","max","length","delimiter","Markers","getTypelessInfo","fields","hasNoTypes","every","maxNamedTagLength","map","filter","maxUnnamedTagLength","space","len","padStart","alignTransform","customSpacings","indent","preserveMainDescriptionPostDelimiter","wrapIndent","intoTags","alignTokens","typelessInfo","nothingAfter","delim","description","postName","postType","postTag","untypedNameAdjustment","untypedTypeAdjustment","spacings","postDelimiter","update","line","indentTag","isEmpty","end","postHyphenSpacing","postHyphen","hyphenSpacing","reduce","tagIndentMode","ret","_default","exports","default","module"],"sources":["../src/alignTransform.js"],"sourcesContent":["/**\n * Transform based on https://github.com/syavorsky/comment-parser/blob/master/src/transforms/align.ts\n *\n * It contains some customizations to align based on the tags, and some custom options.\n */\n\nimport {\n\n // `comment-parser/primitives` export\n Markers,\n util,\n} from 'comment-parser';\n\nconst {\n rewireSource,\n} = util;\n\nconst zeroWidth = {\n name: 0,\n start: 0,\n tag: 0,\n type: 0,\n};\n\nconst shouldAlign = (tags, index, source) => {\n const tag = source[index].tokens.tag.replace('@', '');\n const includesTag = tags.includes(tag);\n\n if (includesTag) {\n return true;\n }\n\n if (tag !== '') {\n return false;\n }\n\n for (let iterator = index; iterator >= 0; iterator--) {\n const previousTag = source[iterator].tokens.tag.replace('@', '');\n\n if (previousTag !== '') {\n if (tags.includes(previousTag)) {\n return true;\n }\n\n return false;\n }\n }\n\n return true;\n};\n\nconst getWidth = (tags) => {\n return (width, {\n tokens,\n }, index, source) => {\n if (!shouldAlign(tags, index, source)) {\n return width;\n }\n\n return {\n name: Math.max(width.name, tokens.name.length),\n start: tokens.delimiter === Markers.start ? tokens.start.length : width.start,\n tag: Math.max(width.tag, tokens.tag.length),\n type: Math.max(width.type, tokens.type.length),\n };\n };\n};\n\nconst getTypelessInfo = (fields) => {\n const hasNoTypes = fields.tags.every(({\n type,\n }) => {\n return !type;\n });\n const maxNamedTagLength = Math.max(...fields.tags.map(({\n tag,\n name,\n }) => {\n return name.length === 0 ? -1 : tag.length;\n }).filter((length) => {\n return length !== -1;\n })) + 1;\n const maxUnnamedTagLength = Math.max(...fields.tags.map(({\n tag,\n name,\n }) => {\n return name.length === 0 ? tag.length : -1;\n }).filter((length) => {\n return length !== -1;\n })) + 1;\n return {\n hasNoTypes,\n maxNamedTagLength,\n maxUnnamedTagLength,\n };\n};\n\nconst space = (len) => {\n return ''.padStart(len, ' ');\n};\n\nconst alignTransform = ({\n customSpacings,\n tags,\n indent,\n preserveMainDescriptionPostDelimiter,\n wrapIndent,\n}) => {\n let intoTags = false;\n let width;\n\n const alignTokens = (tokens, typelessInfo) => {\n const nothingAfter = {\n delim: false,\n name: false,\n tag: false,\n type: false,\n };\n\n if (tokens.description === '') {\n nothingAfter.name = true;\n tokens.postName = '';\n\n if (tokens.name === '') {\n nothingAfter.type = true;\n tokens.postType = '';\n\n if (tokens.type === '') {\n nothingAfter.tag = true;\n tokens.postTag = '';\n\n /* istanbul ignore next: Never happens because the !intoTags return. But it's here for consistency with the original align transform */\n if (tokens.tag === '') {\n nothingAfter.delim = true;\n }\n }\n }\n }\n\n let untypedNameAdjustment = 0;\n let untypedTypeAdjustment = 0;\n if (typelessInfo.hasNoTypes) {\n nothingAfter.tag = true;\n tokens.postTag = '';\n if (tokens.name === '') {\n untypedNameAdjustment = typelessInfo.maxNamedTagLength - tokens.tag.length;\n } else {\n untypedNameAdjustment = typelessInfo.maxNamedTagLength > typelessInfo.maxUnnamedTagLength ? 0 :\n Math.max(0, typelessInfo.maxUnnamedTagLength - (tokens.tag.length + tokens.name.length + 1));\n untypedTypeAdjustment = typelessInfo.maxNamedTagLength - tokens.tag.length;\n }\n }\n\n // Todo: Avoid fixing alignment of blocks with multiline wrapping of type\n if (tokens.tag === '' && tokens.type) {\n return tokens;\n }\n\n const spacings = {\n postDelimiter: customSpacings?.postDelimiter || 1,\n postName: customSpacings?.postName || 1,\n postTag: customSpacings?.postTag || 1,\n postType: customSpacings?.postType || 1,\n };\n\n tokens.postDelimiter = nothingAfter.delim ? '' : space(spacings.postDelimiter);\n\n if (!nothingAfter.tag) {\n tokens.postTag = space(width.tag - tokens.tag.length + spacings.postTag);\n }\n\n if (!nothingAfter.type) {\n tokens.postType = space(width.type - tokens.type.length + spacings.postType + untypedTypeAdjustment);\n }\n\n if (!nothingAfter.name) {\n // If post name is empty for all lines (name width 0), don't add post name spacing.\n tokens.postName = width.name === 0 ? '' : space(width.name - tokens.name.length + spacings.postName + untypedNameAdjustment);\n }\n\n return tokens;\n };\n\n const update = (line, index, source, typelessInfo, indentTag) => {\n const tokens = {\n ...line.tokens,\n };\n\n if (tokens.tag !== '') {\n intoTags = true;\n }\n\n const isEmpty =\n tokens.tag === '' &&\n tokens.name === '' &&\n tokens.type === '' &&\n tokens.description === '';\n\n // dangling '*/'\n if (tokens.end === Markers.end && isEmpty) {\n tokens.start = indent + ' ';\n\n return {\n ...line,\n tokens,\n };\n }\n\n switch (tokens.delimiter) {\n case Markers.start:\n tokens.start = indent;\n break;\n case Markers.delim:\n tokens.start = indent + ' ';\n break;\n default:\n tokens.delimiter = '';\n\n // compensate delimiter\n tokens.start = indent + ' ';\n }\n\n if (!intoTags) {\n if (tokens.description === '') {\n tokens.postDelimiter = '';\n } else if (!preserveMainDescriptionPostDelimiter) {\n tokens.postDelimiter = ' ';\n }\n\n return {\n ...line,\n tokens,\n };\n }\n\n const postHyphenSpacing = customSpacings?.postHyphen ?? 1;\n const hyphenSpacing = /^\\s*-\\s*/u;\n tokens.description = tokens.description.replace(\n hyphenSpacing, '-' + ''.padStart(postHyphenSpacing, ' '),\n );\n\n // Not align.\n if (shouldAlign(tags, index, source)) {\n alignTokens(tokens, typelessInfo);\n if (indentTag) {\n tokens.postDelimiter += wrapIndent;\n }\n }\n\n return {\n ...line,\n tokens,\n };\n };\n\n return ({\n source,\n ...fields\n }) => {\n width = source.reduce(getWidth(tags), {\n ...zeroWidth,\n });\n\n const typelessInfo = getTypelessInfo(fields);\n\n let tagIndentMode = false;\n\n return rewireSource({\n ...fields,\n source: source.map((line, index) => {\n const indentTag = tagIndentMode && !line.tokens.tag && line.tokens.description;\n const ret = update(line, index, source, typelessInfo, indentTag);\n\n if (line.tokens.tag) {\n tagIndentMode = true;\n }\n\n return ret;\n }),\n });\n };\n};\n\nexport default alignTransform;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generateRule.js","names":["ruleName","options","process","argv","recommended","includes","console","error","test","ruleNamesPath","ruleNames","JSON","parse","fs","readFile","push","sort","writeFile","stringify","log","ruleTemplate","camelCasedRuleName","camelCase","rulePath","existsSync","ruleTestTemplate","ruleTestPath","ruleReadmeTemplate","ruleReadmePath","replaceInOrder","path","oldRegex","checkName","newLine","oldIsCamel","offsets","readme","replace","matchedLine","n1","offset","str","oldRule","oldRuleB","alreadyIncluded","itemIndex","findIndex","item","undefined","pop","length","slice","repeat","chdir","resolve","__dirname","open"],"sources":["../../src/bin/generateRule.js"],"sourcesContent":["/* eslint-disable no-console -- CLI */\n\n/**\n * @example\n *\n * ```shell\n * npm run create-rule my-new-rule --recommended\n * ```\n */\n\nimport {\n existsSync,\n} from 'fs';\nimport fs from 'fs/promises';\nimport {\n resolve,\n} from 'path';\nimport camelCase from 'camelcase';\nimport open from 'open-editor';\n\n// Todo: Would ideally have prompts, e.g., to ask for whether type was problem/layout, etc.\n\nconst [\n , , ruleName,\n ...options\n] = process.argv;\n\nconst recommended = options.includes('--recommended');\n\n(async () => {\n if (!ruleName) {\n console.error('Please supply a rule name');\n\n return;\n }\n\n if ((/[A-Z]/u).test(ruleName)) {\n console.error('Please ensure the rule has no capital letters');\n\n return;\n }\n\n const ruleNamesPath = './test/rules/ruleNames.json';\n const ruleNames = JSON.parse(await fs.readFile(\n ruleNamesPath, 'utf8',\n ));\n if (!ruleNames.includes(ruleName)) {\n ruleNames.push(ruleName);\n ruleNames.sort();\n }\n\n await fs.writeFile(ruleNamesPath, JSON.stringify(ruleNames, null, 2) + '\\n');\n console.log('ruleNames', ruleNames);\n\n const ruleTemplate = `import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n utils,\n}) => {\n // Rule here\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-${ruleName}',\n },\n schema: [\n {\n additionalProperies: false,\n properties: {\n // Option properties here (or remove the object)\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n`;\n\n const camelCasedRuleName = camelCase(ruleName);\n\n const rulePath = `./src/rules/${camelCasedRuleName}.js`;\n\n if (!existsSync(rulePath)) {\n await fs.writeFile(rulePath, ruleTemplate);\n }\n\n const ruleTestTemplate = `export default {\n invalid: [\n {\n code: \\`\n \\`,\n errors: [\n {\n line: '',\n message: '',\n },\n ],\n },\n ],\n valid: [\n {\n code: \\`\n \\`,\n },\n ],\n};\n`;\n\n const ruleTestPath = `./test/rules/assertions/${camelCasedRuleName}.js`;\n if (!existsSync(ruleTestPath)) {\n await fs.writeFile(ruleTestPath, ruleTestTemplate);\n }\n\n const ruleReadmeTemplate = `### \\`${ruleName}\\`\n\n|||\n|---|---|\n|Context|everywhere|\n|Tags|\\`\\`|\n|Recommended|${recommended ? 'true' : 'false'}|\n|Settings||\n|Options||\n\n<!-- assertions ${camelCasedRuleName} -->\n`;\n\n const ruleReadmePath = `./.README/rules/${ruleName}.md`;\n if (!existsSync(ruleReadmePath)) {\n await fs.writeFile(ruleReadmePath, ruleReadmeTemplate);\n }\n\n const replaceInOrder = async ({\n path,\n oldRegex,\n checkName,\n newLine,\n oldIsCamel,\n }) => {\n const offsets = [];\n\n let readme = await fs.readFile(path, 'utf8');\n readme.replace(\n oldRegex,\n (matchedLine, n1, offset, str, {\n oldRule,\n }) => {\n offsets.push({\n matchedLine,\n offset,\n oldRule,\n });\n },\n );\n\n offsets.sort(({\n oldRule,\n }, {\n oldRule: oldRuleB,\n }) => {\n // eslint-disable-next-line no-extra-parens\n return oldRule < oldRuleB ? -1 : (oldRule > oldRuleB ? 1 : 0);\n });\n\n let alreadyIncluded = false;\n const itemIndex = offsets.findIndex(({\n oldRule,\n }) => {\n alreadyIncluded ||= oldIsCamel ? camelCasedRuleName === oldRule : ruleName === oldRule;\n\n return oldIsCamel ? camelCasedRuleName < oldRule : ruleName < oldRule;\n });\n let item = itemIndex !== undefined && offsets[itemIndex];\n if (item && itemIndex === 0 &&\n\n // This property would not always be sufficient but in this case it is.\n oldIsCamel\n ) {\n item.offset = 0;\n }\n\n if (!item) {\n item = offsets.pop();\n item.offset += item.matchedLine.length;\n }\n\n if (alreadyIncluded) {\n console.log(`Rule name is already present in ${checkName}.`);\n } else {\n readme = readme.slice(0, item.offset) +\n (item.offset ? '\\n' : '') +\n newLine +\n (item.offset ? '' : '\\n') +\n readme.slice(item.offset);\n\n await fs.writeFile(path, readme);\n }\n };\n\n await replaceInOrder({\n checkName: 'README',\n newLine: `{\"gitdown\": \"include\", \"file\": \"./rules/${ruleName}.md\"}`,\n oldRegex: /\\n\\{\"gitdown\": \"include\", \"file\": \".\\/rules\\/(?<oldRule>[^.]*).md\"\\}/gu,\n path: './.README/README.md',\n });\n\n await replaceInOrder({\n checkName: 'index import',\n newLine: `import ${camelCasedRuleName} from './rules/${camelCasedRuleName}';`,\n oldIsCamel: true,\n oldRegex: /\\nimport (?<oldRule>[^ ]*) from '.\\/rules\\/\\1';/gu,\n path: './src/index.js',\n });\n\n await replaceInOrder({\n checkName: 'index recommended',\n newLine: `${' '.repeat(8)}'jsdoc/${ruleName}': '${recommended ? 'warn' : 'off'}',`,\n oldRegex: /\\n\\s{8}'jsdoc\\/(?<oldRule>[^']*)': '[^']*',/gu,\n path: './src/index.js',\n });\n\n await replaceInOrder({\n checkName: 'index rules',\n newLine: `${' '.repeat(4)}'${ruleName}': ${camelCasedRuleName},`,\n oldRegex: /\\n\\s{4}'(?<oldRule>[^']*)': [^,]*,/gu,\n path: './src/index.js',\n });\n\n await import('./generateReadme.js');\n\n /*\n console.log('Paths to open for further editing\\n');\n console.log(`open ${ruleReadmePath}`);\n console.log(`open ${rulePath}`);\n console.log(`open ${ruleTestPath}\\n`);\n */\n\n // Set chdir as somehow still in operation from other test\n process.chdir(resolve(__dirname, '../../'));\n await open([\n // Could even add editor line column numbers like `${rulePath}:1:1`\n ruleReadmePath,\n ruleTestPath,\n rulePath,\n ]);\n})();\n"],"mappings":"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"}
1
+ {"version":3,"file":"generateRule.js","names":["_fs","require","_promises","_interopRequireDefault","_path","_camelcase","_openEditor","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interopRequireWildcard","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ruleName","options","process","argv","recommended","includes","console","error","test","ruleNamesPath","ruleNames","JSON","parse","fs","readFile","push","sort","writeFile","stringify","log","ruleTemplate","camelCasedRuleName","camelCase","rulePath","existsSync","ruleTestTemplate","ruleTestPath","ruleReadmeTemplate","ruleReadmePath","replaceInOrder","path","oldRegex","checkName","newLine","oldIsCamel","offsets","readme","replace","matchedLine","n1","offset","str","oldRule","oldRuleB","alreadyIncluded","itemIndex","findIndex","item","undefined","pop","length","slice","repeat","Promise","resolve","then","chdir","__dirname","open"],"sources":["../../src/bin/generateRule.js"],"sourcesContent":["/* eslint-disable no-console -- CLI */\n\n/**\n * @example\n *\n * ```shell\n * npm run create-rule my-new-rule --recommended\n * ```\n */\n\nimport {\n existsSync,\n} from 'fs';\nimport fs from 'fs/promises';\nimport {\n resolve,\n} from 'path';\nimport camelCase from 'camelcase';\nimport open from 'open-editor';\n\n// Todo: Would ideally have prompts, e.g., to ask for whether type was problem/layout, etc.\n\nconst [\n , , ruleName,\n ...options\n] = process.argv;\n\nconst recommended = options.includes('--recommended');\n\n(async () => {\n if (!ruleName) {\n console.error('Please supply a rule name');\n\n return;\n }\n\n if ((/[A-Z]/u).test(ruleName)) {\n console.error('Please ensure the rule has no capital letters');\n\n return;\n }\n\n const ruleNamesPath = './test/rules/ruleNames.json';\n const ruleNames = JSON.parse(await fs.readFile(\n ruleNamesPath, 'utf8',\n ));\n if (!ruleNames.includes(ruleName)) {\n ruleNames.push(ruleName);\n ruleNames.sort();\n }\n\n await fs.writeFile(ruleNamesPath, JSON.stringify(ruleNames, null, 2) + '\\n');\n console.log('ruleNames', ruleNames);\n\n const ruleTemplate = `import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n utils,\n}) => {\n // Rule here\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-${ruleName}',\n },\n schema: [\n {\n additionalProperies: false,\n properties: {\n // Option properties here (or remove the object)\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n`;\n\n const camelCasedRuleName = camelCase(ruleName);\n\n const rulePath = `./src/rules/${camelCasedRuleName}.js`;\n\n if (!existsSync(rulePath)) {\n await fs.writeFile(rulePath, ruleTemplate);\n }\n\n const ruleTestTemplate = `export default {\n invalid: [\n {\n code: \\`\n \\`,\n errors: [\n {\n line: '',\n message: '',\n },\n ],\n },\n ],\n valid: [\n {\n code: \\`\n \\`,\n },\n ],\n};\n`;\n\n const ruleTestPath = `./test/rules/assertions/${camelCasedRuleName}.js`;\n if (!existsSync(ruleTestPath)) {\n await fs.writeFile(ruleTestPath, ruleTestTemplate);\n }\n\n const ruleReadmeTemplate = `### \\`${ruleName}\\`\n\n|||\n|---|---|\n|Context|everywhere|\n|Tags|\\`\\`|\n|Recommended|${recommended ? 'true' : 'false'}|\n|Settings||\n|Options||\n\n<!-- assertions ${camelCasedRuleName} -->\n`;\n\n const ruleReadmePath = `./.README/rules/${ruleName}.md`;\n if (!existsSync(ruleReadmePath)) {\n await fs.writeFile(ruleReadmePath, ruleReadmeTemplate);\n }\n\n const replaceInOrder = async ({\n path,\n oldRegex,\n checkName,\n newLine,\n oldIsCamel,\n }) => {\n const offsets = [];\n\n let readme = await fs.readFile(path, 'utf8');\n readme.replace(\n oldRegex,\n (matchedLine, n1, offset, str, {\n oldRule,\n }) => {\n offsets.push({\n matchedLine,\n offset,\n oldRule,\n });\n },\n );\n\n offsets.sort(({\n oldRule,\n }, {\n oldRule: oldRuleB,\n }) => {\n // eslint-disable-next-line no-extra-parens\n return oldRule < oldRuleB ? -1 : (oldRule > oldRuleB ? 1 : 0);\n });\n\n let alreadyIncluded = false;\n const itemIndex = offsets.findIndex(({\n oldRule,\n }) => {\n alreadyIncluded ||= oldIsCamel ? camelCasedRuleName === oldRule : ruleName === oldRule;\n\n return oldIsCamel ? camelCasedRuleName < oldRule : ruleName < oldRule;\n });\n let item = itemIndex !== undefined && offsets[itemIndex];\n if (item && itemIndex === 0 &&\n\n // This property would not always be sufficient but in this case it is.\n oldIsCamel\n ) {\n item.offset = 0;\n }\n\n if (!item) {\n item = offsets.pop();\n item.offset += item.matchedLine.length;\n }\n\n if (alreadyIncluded) {\n console.log(`Rule name is already present in ${checkName}.`);\n } else {\n readme = readme.slice(0, item.offset) +\n (item.offset ? '\\n' : '') +\n newLine +\n (item.offset ? '' : '\\n') +\n readme.slice(item.offset);\n\n await fs.writeFile(path, readme);\n }\n };\n\n await replaceInOrder({\n checkName: 'README',\n newLine: `{\"gitdown\": \"include\", \"file\": \"./rules/${ruleName}.md\"}`,\n oldRegex: /\\n\\{\"gitdown\": \"include\", \"file\": \".\\/rules\\/(?<oldRule>[^.]*).md\"\\}/gu,\n path: './.README/README.md',\n });\n\n await replaceInOrder({\n checkName: 'index import',\n newLine: `import ${camelCasedRuleName} from './rules/${camelCasedRuleName}';`,\n oldIsCamel: true,\n oldRegex: /\\nimport (?<oldRule>[^ ]*) from '.\\/rules\\/\\1';/gu,\n path: './src/index.js',\n });\n\n await replaceInOrder({\n checkName: 'index recommended',\n newLine: `${' '.repeat(8)}'jsdoc/${ruleName}': '${recommended ? 'warn' : 'off'}',`,\n oldRegex: /\\n\\s{8}'jsdoc\\/(?<oldRule>[^']*)': '[^']*',/gu,\n path: './src/index.js',\n });\n\n await replaceInOrder({\n checkName: 'index rules',\n newLine: `${' '.repeat(4)}'${ruleName}': ${camelCasedRuleName},`,\n oldRegex: /\\n\\s{4}'(?<oldRule>[^']*)': [^,]*,/gu,\n path: './src/index.js',\n });\n\n await import('./generateReadme.js');\n\n /*\n console.log('Paths to open for further editing\\n');\n console.log(`open ${ruleReadmePath}`);\n console.log(`open ${rulePath}`);\n console.log(`open ${ruleTestPath}\\n`);\n */\n\n // Set chdir as somehow still in operation from other test\n process.chdir(resolve(__dirname, '../../'));\n await open([\n // Could even add editor line column numbers like `${rulePath}:1:1`\n ruleReadmePath,\n ruleTestPath,\n rulePath,\n ]);\n})();\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaultTagOrder.js","names":["defaultTagOrder"],"sources":["../src/defaultTagOrder.js"],"sourcesContent":["const defaultTagOrder = [\n // Brief descriptions\n 'summary',\n 'typeSummary',\n\n // Module/file-level\n 'module',\n 'exports',\n 'file',\n 'fileoverview',\n 'overview',\n\n // Identifying (name, type)\n 'typedef',\n 'interface',\n 'record',\n 'template',\n 'name',\n 'kind',\n 'type',\n 'alias',\n 'external',\n 'host',\n 'callback',\n 'func',\n 'function',\n 'method',\n 'class',\n 'constructor',\n\n // Relationships\n 'modifies',\n 'mixes',\n 'mixin',\n 'mixinClass',\n 'mixinFunction',\n 'namespace',\n 'borrows',\n 'constructs',\n 'lends',\n 'implements',\n 'requires',\n\n // Long descriptions\n 'desc',\n 'description',\n 'classdesc',\n 'tutorial',\n 'copyright',\n 'license',\n\n // Simple annotations\n\n // TypeScript\n 'internal',\n\n 'const',\n 'constant',\n 'final',\n 'global',\n 'readonly',\n 'abstract',\n 'virtual',\n 'var',\n 'member',\n 'memberof',\n 'memberof!',\n 'inner',\n 'instance',\n 'inheritdoc',\n 'inheritDoc',\n 'override',\n 'hideconstructor',\n\n // Core function/object info\n 'param',\n 'arg',\n 'argument',\n 'prop',\n 'property',\n 'return',\n 'returns',\n\n // Important behavior details\n 'async',\n 'generator',\n 'default',\n 'defaultvalue',\n 'enum',\n 'augments',\n 'extends',\n 'throws',\n 'exception',\n 'yield',\n 'yields',\n 'event',\n 'fires',\n 'emits',\n 'listens',\n 'this',\n\n // Access\n 'static',\n 'private',\n 'protected',\n 'public',\n 'access',\n 'package',\n\n '-other',\n\n // Supplementary descriptions\n 'see',\n 'example',\n\n // METADATA\n\n // Other Closure (undocumented) metadata\n 'closurePrimitive',\n 'customElement',\n 'expose',\n 'hidden',\n 'idGenerator',\n 'meaning',\n 'ngInject',\n 'owner',\n 'wizaction',\n\n // Other Closure (documented) metadata\n 'define',\n 'dict',\n 'export',\n 'externs',\n 'implicitCast',\n 'noalias',\n 'nocollapse',\n 'nocompile',\n 'noinline',\n 'nosideeffects',\n 'polymer',\n 'polymerBehavior',\n 'preserve',\n 'struct',\n 'suppress',\n 'unrestricted',\n\n // @homer0/prettier-plugin-jsdoc metadata\n 'category',\n\n // Non-Closure metadata\n 'ignore',\n 'author',\n 'version',\n 'variation',\n 'since',\n 'deprecated',\n 'todo',\n];\n\nexport default defaultTagOrder;\n"],"mappings":";;;;;;AAAA,MAAMA,eAAe,GAAG;AACtB;AACA,SAAS,EACT,aAAa;AAEb;AACA,QAAQ,EACR,SAAS,EACT,MAAM,EACN,cAAc,EACd,UAAU;AAEV;AACA,SAAS,EACT,WAAW,EACX,QAAQ,EACR,UAAU,EACV,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa;AAEb;AACA,UAAU,EACV,OAAO,EACP,OAAO,EACP,YAAY,EACZ,eAAe,EACf,WAAW,EACX,SAAS,EACT,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,UAAU;AAEV;AACA,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS;AAET;;AAEA;AACA,UAAU,EAEV,OAAO,EACP,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB;AAEjB;AACA,OAAO,EACP,KAAK,EACL,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS;AAET;AACA,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,MAAM,EACN,UAAU,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM;AAEN;AACA,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,SAAS,EAET,QAAQ;AAER;AACA,KAAK,EACL,SAAS;AAET;;AAEA;AACA,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,SAAS,EACT,UAAU,EACV,OAAO,EACP,WAAW;AAEX;AACA,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,EACT,cAAc,EACd,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,UAAU,EACV,cAAc;AAEd;AACA,UAAU;AAEV;AACA,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,WAAW,EACX,OAAO,EACP,YAAY,EACZ,MAAM,CACP;AAAC,eAEaA,eAAe;AAAA;AAAA"}
1
+ {"version":3,"file":"defaultTagOrder.js","names":["defaultTagOrder","_default","exports","default","module"],"sources":["../src/defaultTagOrder.js"],"sourcesContent":["const defaultTagOrder = [\n // Brief descriptions\n 'summary',\n 'typeSummary',\n\n // Module/file-level\n 'module',\n 'exports',\n 'file',\n 'fileoverview',\n 'overview',\n\n // Identifying (name, type)\n 'typedef',\n 'interface',\n 'record',\n 'template',\n 'name',\n 'kind',\n 'type',\n 'alias',\n 'external',\n 'host',\n 'callback',\n 'func',\n 'function',\n 'method',\n 'class',\n 'constructor',\n\n // Relationships\n 'modifies',\n 'mixes',\n 'mixin',\n 'mixinClass',\n 'mixinFunction',\n 'namespace',\n 'borrows',\n 'constructs',\n 'lends',\n 'implements',\n 'requires',\n\n // Long descriptions\n 'desc',\n 'description',\n 'classdesc',\n 'tutorial',\n 'copyright',\n 'license',\n\n // Simple annotations\n\n // TypeScript\n 'internal',\n\n 'const',\n 'constant',\n 'final',\n 'global',\n 'readonly',\n 'abstract',\n 'virtual',\n 'var',\n 'member',\n 'memberof',\n 'memberof!',\n 'inner',\n 'instance',\n 'inheritdoc',\n 'inheritDoc',\n 'override',\n 'hideconstructor',\n\n // Core function/object info\n 'param',\n 'arg',\n 'argument',\n 'prop',\n 'property',\n 'return',\n 'returns',\n\n // Important behavior details\n 'async',\n 'generator',\n 'default',\n 'defaultvalue',\n 'enum',\n 'augments',\n 'extends',\n 'throws',\n 'exception',\n 'yield',\n 'yields',\n 'event',\n 'fires',\n 'emits',\n 'listens',\n 'this',\n\n // Access\n 'static',\n 'private',\n 'protected',\n 'public',\n 'access',\n 'package',\n\n '-other',\n\n // Supplementary descriptions\n 'see',\n 'example',\n\n // METADATA\n\n // Other Closure (undocumented) metadata\n 'closurePrimitive',\n 'customElement',\n 'expose',\n 'hidden',\n 'idGenerator',\n 'meaning',\n 'ngInject',\n 'owner',\n 'wizaction',\n\n // Other Closure (documented) metadata\n 'define',\n 'dict',\n 'export',\n 'externs',\n 'implicitCast',\n 'noalias',\n 'nocollapse',\n 'nocompile',\n 'noinline',\n 'nosideeffects',\n 'polymer',\n 'polymerBehavior',\n 'preserve',\n 'struct',\n 'suppress',\n 'unrestricted',\n\n // @homer0/prettier-plugin-jsdoc metadata\n 'category',\n\n // Non-Closure metadata\n 'ignore',\n 'author',\n 'version',\n 'variation',\n 'since',\n 'deprecated',\n 'todo',\n];\n\nexport default defaultTagOrder;\n"],"mappings":";;;;;;AAAA,MAAMA,eAAe,GAAG;AACtB;AACA,SAAS,EACT,aAAa;AAEb;AACA,QAAQ,EACR,SAAS,EACT,MAAM,EACN,cAAc,EACd,UAAU;AAEV;AACA,SAAS,EACT,WAAW,EACX,QAAQ,EACR,UAAU,EACV,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,MAAM,EACN,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,OAAO,EACP,aAAa;AAEb;AACA,UAAU,EACV,OAAO,EACP,OAAO,EACP,YAAY,EACZ,eAAe,EACf,WAAW,EACX,SAAS,EACT,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,UAAU;AAEV;AACA,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS;AAET;;AAEA;AACA,UAAU,EAEV,OAAO,EACP,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,iBAAiB;AAEjB;AACA,OAAO,EACP,KAAK,EACL,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,SAAS;AAET;AACA,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,MAAM,EACN,UAAU,EACV,SAAS,EACT,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,EACT,MAAM;AAEN;AACA,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,SAAS,EAET,QAAQ;AAER;AACA,KAAK,EACL,SAAS;AAET;;AAEA;AACA,kBAAkB,EAClB,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,SAAS,EACT,UAAU,EACV,OAAO,EACP,WAAW;AAEX;AACA,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,EACT,cAAc,EACd,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,UAAU,EACV,QAAQ,EACR,UAAU,EACV,cAAc;AAEd;AACA,UAAU;AAEV;AACA,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,WAAW,EACX,OAAO,EACP,YAAY,EACZ,MAAM,CACP;AAAC,IAAAC,QAAA,GAEaD,eAAe;AAAAE,OAAA,CAAAC,OAAA,GAAAF,QAAA;AAAAG,MAAA,CAAAF,OAAA,GAAAA,OAAA,CAAAC,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"exportParser.js","names":["debug","debugModule","createNode","props","getSymbolValue","symbol","type","value","getIdentifier","node","globals","scope","opts","simpleIdentifier","identifierLiteral","name","block","createSymbol","getSymbol","opt","obj","object","propertySymbol","property","computed","propertyValue","body","val","prototype","left","right","method","key","parent","prop","properties","includes","propVal","createBlockSymbol","isGlobal","window","special","id","valueSymbol","initVariables","childNode","expression","declaration","declarations","initWindow","kind","mapVariables","isExport","ancestorsOnly","init","exported","ANONYMOUS_DEFAULT","specifier","specifiers","local","findNode","cache","blockCache","slice","push","propval","Object","values","Array","isArray","some","exportTypes","Set","ignorableNestedTypes","getExportAncestor","nde","idx","ignorableIfDeep","has","canBeExportedByAncestorType","canExportChildrenType","isExportByAncestor","findExportedNode","isNodeExported","moduleExports","module","exports","initModuleExports","esm","parseRecursive","globalVars","parse","ast","isUncommentedExport","sourceCode","settings","exportNode","findJSDocComment","parseResult"],"sources":["../src/exportParser.js"],"sourcesContent":["import {\n findJSDocComment,\n} from '@es-joy/jsdoccomment';\nimport debugModule from 'debug';\n\nconst debug = debugModule('requireExportJsdoc');\n\nconst createNode = function () {\n return {\n props: {},\n };\n};\n\nconst getSymbolValue = function (symbol) {\n /* istanbul ignore next */\n if (!symbol) {\n /* istanbul ignore next */\n return null;\n }\n\n /* istanbul ignore next */\n if (symbol.type === 'literal') {\n return symbol.value.value;\n }\n\n /* istanbul ignore next */\n return null;\n};\n\nconst getIdentifier = function (node, globals, scope, opts) {\n if (opts.simpleIdentifier) {\n // Type is Identier for noncomputed properties\n const identifierLiteral = createNode();\n identifierLiteral.type = 'literal';\n identifierLiteral.value = {\n value: node.name,\n };\n\n return identifierLiteral;\n }\n\n /* istanbul ignore next */\n const block = scope || globals;\n\n // As scopes are not currently supported, they are not traversed upwards recursively\n if (block.props[node.name]) {\n return block.props[node.name];\n }\n\n // Seems this will only be entered once scopes added and entered\n /* istanbul ignore next */\n if (globals.props[node.name]) {\n return globals.props[node.name];\n }\n\n return null;\n};\n\nlet createSymbol = null;\n\n// eslint-disable-next-line complexity\nconst getSymbol = function (node, globals, scope, opt) {\n const opts = opt || {};\n /* istanbul ignore next */\n // eslint-disable-next-line default-case\n switch (node.type) {\n case 'Identifier': {\n return getIdentifier(node, globals, scope, opts);\n }\n\n case 'MemberExpression': {\n const obj = getSymbol(node.object, globals, scope, opts);\n const propertySymbol = getSymbol(node.property, globals, scope, {\n simpleIdentifier: !node.computed,\n });\n const propertyValue = getSymbolValue(propertySymbol);\n\n /* istanbul ignore next */\n if (obj && propertyValue && obj.props[propertyValue]) {\n const block = obj.props[propertyValue];\n\n return block;\n }\n\n /*\n if (opts.createMissingProps && propertyValue) {\n obj.props[propertyValue] = createNode();\n\n return obj.props[propertyValue];\n }\n */\n /* istanbul ignore next */\n debug(`MemberExpression: Missing property ${node.property.name}`);\n\n /* istanbul ignore next */\n return null;\n }\n\n case 'ClassExpression': {\n return getSymbol(node.body, globals, scope, opts);\n }\n\n case 'TSTypeAliasDeclaration':\n case 'TSEnumDeclaration': case 'TSInterfaceDeclaration':\n case 'ClassDeclaration':\n case 'FunctionExpression': case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n const val = createNode();\n val.props.prototype = createNode();\n val.props.prototype.type = 'object';\n val.type = 'object';\n val.value = node;\n\n return val;\n }\n\n case 'AssignmentExpression': {\n return createSymbol(node.left, globals, node.right, scope, opts);\n }\n\n case 'ClassBody': {\n const val = createNode();\n for (const method of node.body) {\n val.props[method.key.name] = createNode();\n val.props[method.key.name].type = 'object';\n val.props[method.key.name].value = method.value;\n }\n\n val.type = 'object';\n val.value = node.parent;\n\n return val;\n }\n\n case 'ObjectExpression': {\n const val = createNode();\n val.type = 'object';\n for (const prop of node.properties) {\n if ([\n // @typescript-eslint/parser, espree, acorn, etc.\n 'SpreadElement',\n\n // @babel/eslint-parser\n 'ExperimentalSpreadProperty',\n ].includes(prop.type)) {\n continue;\n }\n\n const propVal = getSymbol(prop.value, globals, scope, opts);\n /* istanbul ignore next */\n if (propVal) {\n val.props[prop.key.name] = propVal;\n }\n }\n\n return val;\n }\n\n case 'Literal': {\n const val = createNode();\n val.type = 'literal';\n val.value = node;\n\n return val;\n }\n }\n\n /* istanbul ignore next */\n return null;\n};\n\nconst createBlockSymbol = function (block, name, value, globals, isGlobal) {\n block.props[name] = value;\n if (isGlobal && globals.props.window && globals.props.window.special) {\n globals.props.window.props[name] = value;\n }\n};\n\ncreateSymbol = function (node, globals, value, scope, isGlobal) {\n const block = scope || globals;\n let symbol;\n // eslint-disable-next-line default-case\n switch (node.type) {\n case 'FunctionDeclaration':\n /* istanbul ignore next */\n // Fall through\n case 'TSEnumDeclaration': case 'TSInterfaceDeclaration':\n /* istanbul ignore next */\n // Fall through\n case 'TSTypeAliasDeclaration': case 'ClassDeclaration': {\n /* istanbul ignore next */\n if (node.id && node.id.type === 'Identifier') {\n return createSymbol(node.id, globals, node, globals);\n }\n\n /* istanbul ignore next */\n break;\n }\n\n case 'Identifier': {\n if (value) {\n const valueSymbol = getSymbol(value, globals, block);\n /* istanbul ignore next */\n if (valueSymbol) {\n createBlockSymbol(block, node.name, valueSymbol, globals, isGlobal);\n\n return block.props[node.name];\n }\n\n /* istanbul ignore next */\n debug('Identifier: Missing value symbol for %s', node.name);\n } else {\n createBlockSymbol(block, node.name, createNode(), globals, isGlobal);\n\n return block.props[node.name];\n }\n\n /* istanbul ignore next */\n break;\n }\n\n case 'MemberExpression': {\n symbol = getSymbol(node.object, globals, block);\n\n const propertySymbol = getSymbol(node.property, globals, block, {\n simpleIdentifier: !node.computed,\n });\n const propertyValue = getSymbolValue(propertySymbol);\n if (symbol && propertyValue) {\n createBlockSymbol(symbol, propertyValue, getSymbol(value, globals, block), globals, isGlobal);\n\n return symbol.props[propertyValue];\n }\n\n /* istanbul ignore next */\n debug('MemberExpression: Missing symbol: %s', node.property.name);\n break;\n }\n }\n\n return null;\n};\n\n// Creates variables from variable definitions\nconst initVariables = function (node, globals, opts) {\n // eslint-disable-next-line default-case\n switch (node.type) {\n case 'Program': {\n for (const childNode of node.body) {\n initVariables(childNode, globals, opts);\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n initVariables(node.expression, globals, opts);\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\n // let and const\n const symbol = createSymbol(declaration.id, globals, null, globals);\n if (opts.initWindow && node.kind === 'var' && globals.props.window) {\n // If var, also add to window\n globals.props.window.props[declaration.id.name] = symbol;\n }\n }\n\n break;\n }\n\n case 'ExportNamedDeclaration': {\n if (node.declaration) {\n initVariables(node.declaration, globals, opts);\n }\n\n break;\n }\n }\n};\n\n// Populates variable maps using AST\n// eslint-disable-next-line complexity\nconst mapVariables = function (node, globals, opt, isExport) {\n /* istanbul ignore next */\n const opts = opt || {};\n /* istanbul ignore next */\n switch (node.type) {\n case 'Program': {\n if (opts.ancestorsOnly) {\n return false;\n }\n\n for (const childNode of node.body) {\n mapVariables(childNode, globals, opts);\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n mapVariables(node.expression, globals, opts);\n break;\n }\n\n case 'AssignmentExpression': {\n createSymbol(node.left, globals, node.right);\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\n const isGlobal = opts.initWindow && node.kind === 'var' && globals.props.window;\n const symbol = createSymbol(declaration.id, globals, declaration.init, globals, isGlobal);\n if (symbol && isExport) {\n symbol.exported = true;\n }\n }\n\n break;\n }\n\n case 'FunctionDeclaration': {\n /* istanbul ignore next */\n if (node.id.type === 'Identifier') {\n createSymbol(node.id, globals, node, globals, true);\n }\n\n break;\n }\n\n case 'ExportDefaultDeclaration': {\n const symbol = createSymbol(node.declaration, globals, node.declaration);\n if (symbol) {\n symbol.exported = true;\n } else if (!node.id) {\n globals.ANONYMOUS_DEFAULT = node.declaration;\n }\n\n break;\n }\n\n case 'ExportNamedDeclaration': {\n if (node.declaration) {\n if (node.declaration.type === 'VariableDeclaration') {\n mapVariables(node.declaration, globals, opts, true);\n } else {\n const symbol = createSymbol(node.declaration, globals, node.declaration);\n /* istanbul ignore next */\n if (symbol) {\n symbol.exported = true;\n }\n }\n }\n\n for (const specifier of node.specifiers) {\n mapVariables(specifier, globals, opts);\n }\n\n break;\n }\n\n case 'ExportSpecifier': {\n const symbol = getSymbol(node.local, globals, globals);\n /* istanbul ignore next */\n if (symbol) {\n symbol.exported = true;\n }\n\n break;\n }\n\n case 'ClassDeclaration': {\n createSymbol(node.id, globals, node.body, globals);\n break;\n }\n\n default: {\n /* istanbul ignore next */\n return false;\n }\n }\n\n return true;\n};\n\nconst findNode = function (node, block, cache) {\n let blockCache = cache || [];\n /* istanbul ignore next */\n if (!block || blockCache.includes(block)) {\n return false;\n }\n\n blockCache = blockCache.slice();\n blockCache.push(block);\n\n if (\n (block.type === 'object' || block.type === 'MethodDefinition') &&\n block.value === node\n ) {\n return true;\n }\n\n const {\n props = block.body,\n } = block;\n for (const propval of Object.values(props || {})) {\n if (Array.isArray(propval)) {\n /* istanbul ignore if */\n if (propval.some((val) => {\n return findNode(node, val, blockCache);\n })) {\n return true;\n }\n } else if (findNode(node, propval, blockCache)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst exportTypes = new Set([\n 'ExportNamedDeclaration', 'ExportDefaultDeclaration',\n]);\nconst ignorableNestedTypes = new Set([\n 'FunctionDeclaration', 'ArrowFunctionExpression', 'FunctionExpression',\n]);\nconst getExportAncestor = function (nde) {\n let node = nde;\n let idx = 0;\n const ignorableIfDeep = ignorableNestedTypes.has(nde?.type);\n while (node) {\n // Ignore functions nested more deeply than say `export default function () {}`\n if (idx >= 2 && ignorableIfDeep) {\n break;\n }\n\n if (exportTypes.has(node.type)) {\n return node;\n }\n\n node = node.parent;\n idx++;\n }\n\n return false;\n};\n\nconst canBeExportedByAncestorType = new Set([\n 'TSPropertySignature',\n 'TSMethodSignature',\n 'ClassProperty',\n 'PropertyDefinition',\n 'Method',\n]);\n\nconst canExportChildrenType = new Set([\n 'TSInterfaceBody',\n 'TSInterfaceDeclaration',\n 'TSTypeLiteral',\n 'TSTypeAliasDeclaration',\n 'ClassDeclaration',\n 'ClassBody',\n 'ClassDefinition',\n 'ClassExpression',\n 'Program',\n]);\n\nconst isExportByAncestor = function (nde) {\n if (!canBeExportedByAncestorType.has(nde.type)) {\n return false;\n }\n\n let node = nde.parent;\n while (node) {\n if (exportTypes.has(node.type)) {\n return node;\n }\n\n if (!canExportChildrenType.has(node.type)) {\n return false;\n }\n\n node = node.parent;\n }\n\n return false;\n};\n\nconst findExportedNode = function (block, node, cache) {\n /* istanbul ignore next */\n if (block === null) {\n return false;\n }\n\n const blockCache = cache || [];\n const {\n props,\n } = block;\n for (const propval of Object.values(props)) {\n blockCache.push(propval);\n if (propval.exported && (node === propval.value || findNode(node, propval.value))) {\n return true;\n }\n\n // No need to check `propval` for exported nodes as ESM\n // exports are only global\n }\n\n return false;\n};\n\nconst isNodeExported = function (node, globals, opt) {\n const moduleExports = globals.props.module?.props?.exports;\n if (\n opt.initModuleExports && moduleExports && findNode(node, moduleExports)\n ) {\n return true;\n }\n\n if (opt.initWindow && globals.props.window && findNode(node, globals.props.window)) {\n return true;\n }\n\n if (opt.esm && findExportedNode(globals, node)) {\n return true;\n }\n\n return false;\n};\n\nconst parseRecursive = function (node, globalVars, opts) {\n // Iterate from top using recursion - stop at first processed node from top\n if (node.parent && parseRecursive(node.parent, globalVars, opts)) {\n return true;\n }\n\n return mapVariables(node, globalVars, opts);\n};\n\nconst parse = function (ast, node, opt) {\n /* istanbul ignore next */\n const opts = opt || {\n ancestorsOnly: false,\n esm: true,\n initModuleExports: true,\n initWindow: true,\n };\n\n const globalVars = createNode();\n if (opts.initModuleExports) {\n globalVars.props.module = createNode();\n globalVars.props.module.props.exports = createNode();\n globalVars.props.exports = globalVars.props.module.props.exports;\n }\n\n if (opts.initWindow) {\n globalVars.props.window = createNode();\n globalVars.props.window.special = true;\n }\n\n if (opts.ancestorsOnly) {\n parseRecursive(node, globalVars, opts);\n } else {\n initVariables(ast, globalVars, opts);\n mapVariables(ast, globalVars, opts);\n }\n\n return {\n globalVars,\n };\n};\n\nconst isUncommentedExport = function (node, sourceCode, opt, settings) {\n // console.log({node});\n // Optimize with ancestor check for esm\n if (opt.esm) {\n const exportNode = getExportAncestor(node);\n\n // Is export node comment\n if (exportNode && !findJSDocComment(exportNode, sourceCode, settings)) {\n return true;\n }\n\n /**\n * Some typescript types are not in variable map, but inherit exported (interface property and method)\n */\n if (\n isExportByAncestor(node) &&\n !findJSDocComment(node, sourceCode, settings)\n ) {\n return true;\n }\n }\n\n const parseResult = parse(sourceCode.ast, node, opt);\n\n return isNodeExported(node, parseResult.globalVars, opt);\n};\n\nexport default {\n isUncommentedExport,\n parse,\n};\n"],"mappings":";;;;;;AAAA;AAGA;AAAgC;AAEhC,MAAMA,KAAK,GAAG,IAAAC,cAAW,EAAC,oBAAoB,CAAC;AAE/C,MAAMC,UAAU,GAAG,YAAY;EAC7B,OAAO;IACLC,KAAK,EAAE,CAAC;EACV,CAAC;AACH,CAAC;AAED,MAAMC,cAAc,GAAG,UAAUC,MAAM,EAAE;EACvC;EACA,IAAI,CAACA,MAAM,EAAE;IACX;IACA,OAAO,IAAI;EACb;;EAEA;EACA,IAAIA,MAAM,CAACC,IAAI,KAAK,SAAS,EAAE;IAC7B,OAAOD,MAAM,CAACE,KAAK,CAACA,KAAK;EAC3B;;EAEA;EACA,OAAO,IAAI;AACb,CAAC;AAED,MAAMC,aAAa,GAAG,UAAUC,IAAI,EAAEC,OAAO,EAAEC,KAAK,EAAEC,IAAI,EAAE;EAC1D,IAAIA,IAAI,CAACC,gBAAgB,EAAE;IACzB;IACA,MAAMC,iBAAiB,GAAGZ,UAAU,EAAE;IACtCY,iBAAiB,CAACR,IAAI,GAAG,SAAS;IAClCQ,iBAAiB,CAACP,KAAK,GAAG;MACxBA,KAAK,EAAEE,IAAI,CAACM;IACd,CAAC;IAED,OAAOD,iBAAiB;EAC1B;;EAEA;EACA,MAAME,KAAK,GAAGL,KAAK,IAAID,OAAO;;EAE9B;EACA,IAAIM,KAAK,CAACb,KAAK,CAACM,IAAI,CAACM,IAAI,CAAC,EAAE;IAC1B,OAAOC,KAAK,CAACb,KAAK,CAACM,IAAI,CAACM,IAAI,CAAC;EAC/B;;EAEA;EACA;EACA,IAAIL,OAAO,CAACP,KAAK,CAACM,IAAI,CAACM,IAAI,CAAC,EAAE;IAC5B,OAAOL,OAAO,CAACP,KAAK,CAACM,IAAI,CAACM,IAAI,CAAC;EACjC;EAEA,OAAO,IAAI;AACb,CAAC;AAED,IAAIE,YAAY,GAAG,IAAI;;AAEvB;AACA,MAAMC,SAAS,GAAG,UAAUT,IAAI,EAAEC,OAAO,EAAEC,KAAK,EAAEQ,GAAG,EAAE;EACrD,MAAMP,IAAI,GAAGO,GAAG,IAAI,CAAC,CAAC;EACtB;EACA;EACA,QAAQV,IAAI,CAACH,IAAI;IACjB,KAAK,YAAY;MAAE;QACjB,OAAOE,aAAa,CAACC,IAAI,EAAEC,OAAO,EAAEC,KAAK,EAAEC,IAAI,CAAC;MAClD;IAEA,KAAK,kBAAkB;MAAE;QACvB,MAAMQ,GAAG,GAAGF,SAAS,CAACT,IAAI,CAACY,MAAM,EAAEX,OAAO,EAAEC,KAAK,EAAEC,IAAI,CAAC;QACxD,MAAMU,cAAc,GAAGJ,SAAS,CAACT,IAAI,CAACc,QAAQ,EAAEb,OAAO,EAAEC,KAAK,EAAE;UAC9DE,gBAAgB,EAAE,CAACJ,IAAI,CAACe;QAC1B,CAAC,CAAC;QACF,MAAMC,aAAa,GAAGrB,cAAc,CAACkB,cAAc,CAAC;;QAEpD;QACA,IAAIF,GAAG,IAAIK,aAAa,IAAIL,GAAG,CAACjB,KAAK,CAACsB,aAAa,CAAC,EAAE;UACpD,MAAMT,KAAK,GAAGI,GAAG,CAACjB,KAAK,CAACsB,aAAa,CAAC;UAEtC,OAAOT,KAAK;QACd;;QAEA;AACJ;AACA;AACA;AACA;AACA;QAEI;QACAhB,KAAK,CAAE,sCAAqCS,IAAI,CAACc,QAAQ,CAACR,IAAK,EAAC,CAAC;;QAEjE;QACA,OAAO,IAAI;MACb;IAEA,KAAK,iBAAiB;MAAE;QACtB,OAAOG,SAAS,CAACT,IAAI,CAACiB,IAAI,EAAEhB,OAAO,EAAEC,KAAK,EAAEC,IAAI,CAAC;MACnD;IAEA,KAAK,wBAAwB;IAC7B,KAAK,mBAAmB;IAAE,KAAK,wBAAwB;IACvD,KAAK,kBAAkB;IACvB,KAAK,oBAAoB;IAAE,KAAK,qBAAqB;IACrD,KAAK,yBAAyB;MAAE;QAC9B,MAAMe,GAAG,GAAGzB,UAAU,EAAE;QACxByB,GAAG,CAACxB,KAAK,CAACyB,SAAS,GAAG1B,UAAU,EAAE;QAClCyB,GAAG,CAACxB,KAAK,CAACyB,SAAS,CAACtB,IAAI,GAAG,QAAQ;QACnCqB,GAAG,CAACrB,IAAI,GAAG,QAAQ;QACnBqB,GAAG,CAACpB,KAAK,GAAGE,IAAI;QAEhB,OAAOkB,GAAG;MACZ;IAEA,KAAK,sBAAsB;MAAE;QAC3B,OAAOV,YAAY,CAACR,IAAI,CAACoB,IAAI,EAAEnB,OAAO,EAAED,IAAI,CAACqB,KAAK,EAAEnB,KAAK,EAAEC,IAAI,CAAC;MAClE;IAEA,KAAK,WAAW;MAAE;QAChB,MAAMe,GAAG,GAAGzB,UAAU,EAAE;QACxB,KAAK,MAAM6B,MAAM,IAAItB,IAAI,CAACiB,IAAI,EAAE;UAC9BC,GAAG,CAACxB,KAAK,CAAC4B,MAAM,CAACC,GAAG,CAACjB,IAAI,CAAC,GAAGb,UAAU,EAAE;UACzCyB,GAAG,CAACxB,KAAK,CAAC4B,MAAM,CAACC,GAAG,CAACjB,IAAI,CAAC,CAACT,IAAI,GAAG,QAAQ;UAC1CqB,GAAG,CAACxB,KAAK,CAAC4B,MAAM,CAACC,GAAG,CAACjB,IAAI,CAAC,CAACR,KAAK,GAAGwB,MAAM,CAACxB,KAAK;QACjD;QAEAoB,GAAG,CAACrB,IAAI,GAAG,QAAQ;QACnBqB,GAAG,CAACpB,KAAK,GAAGE,IAAI,CAACwB,MAAM;QAEvB,OAAON,GAAG;MACZ;IAEA,KAAK,kBAAkB;MAAE;QACvB,MAAMA,GAAG,GAAGzB,UAAU,EAAE;QACxByB,GAAG,CAACrB,IAAI,GAAG,QAAQ;QACnB,KAAK,MAAM4B,IAAI,IAAIzB,IAAI,CAAC0B,UAAU,EAAE;UAClC,IAAI;UACF;UACA,eAAe;UAEf;UACA,4BAA4B,CAC7B,CAACC,QAAQ,CAACF,IAAI,CAAC5B,IAAI,CAAC,EAAE;YACrB;UACF;UAEA,MAAM+B,OAAO,GAAGnB,SAAS,CAACgB,IAAI,CAAC3B,KAAK,EAAEG,OAAO,EAAEC,KAAK,EAAEC,IAAI,CAAC;UAC3D;UACA,IAAIyB,OAAO,EAAE;YACXV,GAAG,CAACxB,KAAK,CAAC+B,IAAI,CAACF,GAAG,CAACjB,IAAI,CAAC,GAAGsB,OAAO;UACpC;QACF;QAEA,OAAOV,GAAG;MACZ;IAEA,KAAK,SAAS;MAAE;QACd,MAAMA,GAAG,GAAGzB,UAAU,EAAE;QACxByB,GAAG,CAACrB,IAAI,GAAG,SAAS;QACpBqB,GAAG,CAACpB,KAAK,GAAGE,IAAI;QAEhB,OAAOkB,GAAG;MACZ;EAAC;;EAGD;EACA,OAAO,IAAI;AACb,CAAC;AAED,MAAMW,iBAAiB,GAAG,UAAUtB,KAAK,EAAED,IAAI,EAAER,KAAK,EAAEG,OAAO,EAAE6B,QAAQ,EAAE;EACzEvB,KAAK,CAACb,KAAK,CAACY,IAAI,CAAC,GAAGR,KAAK;EACzB,IAAIgC,QAAQ,IAAI7B,OAAO,CAACP,KAAK,CAACqC,MAAM,IAAI9B,OAAO,CAACP,KAAK,CAACqC,MAAM,CAACC,OAAO,EAAE;IACpE/B,OAAO,CAACP,KAAK,CAACqC,MAAM,CAACrC,KAAK,CAACY,IAAI,CAAC,GAAGR,KAAK;EAC1C;AACF,CAAC;AAEDU,YAAY,GAAG,UAAUR,IAAI,EAAEC,OAAO,EAAEH,KAAK,EAAEI,KAAK,EAAE4B,QAAQ,EAAE;EAC9D,MAAMvB,KAAK,GAAGL,KAAK,IAAID,OAAO;EAC9B,IAAIL,MAAM;EACV;EACA,QAAQI,IAAI,CAACH,IAAI;IACjB,KAAK,qBAAqB;IAC1B;IACA;IACA,KAAK,mBAAmB;IAAE,KAAK,wBAAwB;IACvD;IACA;IACA,KAAK,wBAAwB;IAAE,KAAK,kBAAkB;MAAE;QACtD;QACA,IAAIG,IAAI,CAACiC,EAAE,IAAIjC,IAAI,CAACiC,EAAE,CAACpC,IAAI,KAAK,YAAY,EAAE;UAC5C,OAAOW,YAAY,CAACR,IAAI,CAACiC,EAAE,EAAEhC,OAAO,EAAED,IAAI,EAAEC,OAAO,CAAC;QACtD;;QAEA;QACA;MACF;IAEA,KAAK,YAAY;MAAE;QACjB,IAAIH,KAAK,EAAE;UACT,MAAMoC,WAAW,GAAGzB,SAAS,CAACX,KAAK,EAAEG,OAAO,EAAEM,KAAK,CAAC;UACpD;UACA,IAAI2B,WAAW,EAAE;YACfL,iBAAiB,CAACtB,KAAK,EAAEP,IAAI,CAACM,IAAI,EAAE4B,WAAW,EAAEjC,OAAO,EAAE6B,QAAQ,CAAC;YAEnE,OAAOvB,KAAK,CAACb,KAAK,CAACM,IAAI,CAACM,IAAI,CAAC;UAC/B;;UAEA;UACAf,KAAK,CAAC,yCAAyC,EAAES,IAAI,CAACM,IAAI,CAAC;QAC7D,CAAC,MAAM;UACLuB,iBAAiB,CAACtB,KAAK,EAAEP,IAAI,CAACM,IAAI,EAAEb,UAAU,EAAE,EAAEQ,OAAO,EAAE6B,QAAQ,CAAC;UAEpE,OAAOvB,KAAK,CAACb,KAAK,CAACM,IAAI,CAACM,IAAI,CAAC;QAC/B;;QAEA;QACA;MACF;IAEA,KAAK,kBAAkB;MAAE;QACvBV,MAAM,GAAGa,SAAS,CAACT,IAAI,CAACY,MAAM,EAAEX,OAAO,EAAEM,KAAK,CAAC;QAE/C,MAAMM,cAAc,GAAGJ,SAAS,CAACT,IAAI,CAACc,QAAQ,EAAEb,OAAO,EAAEM,KAAK,EAAE;UAC9DH,gBAAgB,EAAE,CAACJ,IAAI,CAACe;QAC1B,CAAC,CAAC;QACF,MAAMC,aAAa,GAAGrB,cAAc,CAACkB,cAAc,CAAC;QACpD,IAAIjB,MAAM,IAAIoB,aAAa,EAAE;UAC3Ba,iBAAiB,CAACjC,MAAM,EAAEoB,aAAa,EAAEP,SAAS,CAACX,KAAK,EAAEG,OAAO,EAAEM,KAAK,CAAC,EAAEN,OAAO,EAAE6B,QAAQ,CAAC;UAE7F,OAAOlC,MAAM,CAACF,KAAK,CAACsB,aAAa,CAAC;QACpC;;QAEA;QACAzB,KAAK,CAAC,sCAAsC,EAAES,IAAI,CAACc,QAAQ,CAACR,IAAI,CAAC;QACjE;MACF;EAAC;EAGD,OAAO,IAAI;AACb,CAAC;;AAED;AACA,MAAM6B,aAAa,GAAG,UAAUnC,IAAI,EAAEC,OAAO,EAAEE,IAAI,EAAE;EACnD;EACA,QAAQH,IAAI,CAACH,IAAI;IACjB,KAAK,SAAS;MAAE;QACd,KAAK,MAAMuC,SAAS,IAAIpC,IAAI,CAACiB,IAAI,EAAE;UACjCkB,aAAa,CAACC,SAAS,EAAEnC,OAAO,EAAEE,IAAI,CAAC;QACzC;QAEA;MACF;IAEA,KAAK,qBAAqB;MAAE;QAC1BgC,aAAa,CAACnC,IAAI,CAACqC,UAAU,EAAEpC,OAAO,EAAEE,IAAI,CAAC;QAC7C;MACF;IAEA,KAAK,qBAAqB;MAAE;QAC1B,KAAK,MAAMmC,WAAW,IAAItC,IAAI,CAACuC,YAAY,EAAE;UAC3C;UACA,MAAM3C,MAAM,GAAGY,YAAY,CAAC8B,WAAW,CAACL,EAAE,EAAEhC,OAAO,EAAE,IAAI,EAAEA,OAAO,CAAC;UACnE,IAAIE,IAAI,CAACqC,UAAU,IAAIxC,IAAI,CAACyC,IAAI,KAAK,KAAK,IAAIxC,OAAO,CAACP,KAAK,CAACqC,MAAM,EAAE;YAClE;YACA9B,OAAO,CAACP,KAAK,CAACqC,MAAM,CAACrC,KAAK,CAAC4C,WAAW,CAACL,EAAE,CAAC3B,IAAI,CAAC,GAAGV,MAAM;UAC1D;QACF;QAEA;MACF;IAEA,KAAK,wBAAwB;MAAE;QAC7B,IAAII,IAAI,CAACsC,WAAW,EAAE;UACpBH,aAAa,CAACnC,IAAI,CAACsC,WAAW,EAAErC,OAAO,EAAEE,IAAI,CAAC;QAChD;QAEA;MACF;EAAC;AAEH,CAAC;;AAED;AACA;AACA,MAAMuC,YAAY,GAAG,UAAU1C,IAAI,EAAEC,OAAO,EAAES,GAAG,EAAEiC,QAAQ,EAAE;EAC3D;EACA,MAAMxC,IAAI,GAAGO,GAAG,IAAI,CAAC,CAAC;EACtB;EACA,QAAQV,IAAI,CAACH,IAAI;IACjB,KAAK,SAAS;MAAE;QACd,IAAIM,IAAI,CAACyC,aAAa,EAAE;UACtB,OAAO,KAAK;QACd;QAEA,KAAK,MAAMR,SAAS,IAAIpC,IAAI,CAACiB,IAAI,EAAE;UACjCyB,YAAY,CAACN,SAAS,EAAEnC,OAAO,EAAEE,IAAI,CAAC;QACxC;QAEA;MACF;IAEA,KAAK,qBAAqB;MAAE;QAC1BuC,YAAY,CAAC1C,IAAI,CAACqC,UAAU,EAAEpC,OAAO,EAAEE,IAAI,CAAC;QAC5C;MACF;IAEA,KAAK,sBAAsB;MAAE;QAC3BK,YAAY,CAACR,IAAI,CAACoB,IAAI,EAAEnB,OAAO,EAAED,IAAI,CAACqB,KAAK,CAAC;QAC5C;MACF;IAEA,KAAK,qBAAqB;MAAE;QAC1B,KAAK,MAAMiB,WAAW,IAAItC,IAAI,CAACuC,YAAY,EAAE;UAC3C,MAAMT,QAAQ,GAAG3B,IAAI,CAACqC,UAAU,IAAIxC,IAAI,CAACyC,IAAI,KAAK,KAAK,IAAIxC,OAAO,CAACP,KAAK,CAACqC,MAAM;UAC/E,MAAMnC,MAAM,GAAGY,YAAY,CAAC8B,WAAW,CAACL,EAAE,EAAEhC,OAAO,EAAEqC,WAAW,CAACO,IAAI,EAAE5C,OAAO,EAAE6B,QAAQ,CAAC;UACzF,IAAIlC,MAAM,IAAI+C,QAAQ,EAAE;YACtB/C,MAAM,CAACkD,QAAQ,GAAG,IAAI;UACxB;QACF;QAEA;MACF;IAEA,KAAK,qBAAqB;MAAE;QAC1B;QACA,IAAI9C,IAAI,CAACiC,EAAE,CAACpC,IAAI,KAAK,YAAY,EAAE;UACjCW,YAAY,CAACR,IAAI,CAACiC,EAAE,EAAEhC,OAAO,EAAED,IAAI,EAAEC,OAAO,EAAE,IAAI,CAAC;QACrD;QAEA;MACF;IAEA,KAAK,0BAA0B;MAAE;QAC/B,MAAML,MAAM,GAAGY,YAAY,CAACR,IAAI,CAACsC,WAAW,EAAErC,OAAO,EAAED,IAAI,CAACsC,WAAW,CAAC;QACxE,IAAI1C,MAAM,EAAE;UACVA,MAAM,CAACkD,QAAQ,GAAG,IAAI;QACxB,CAAC,MAAM,IAAI,CAAC9C,IAAI,CAACiC,EAAE,EAAE;UACnBhC,OAAO,CAAC8C,iBAAiB,GAAG/C,IAAI,CAACsC,WAAW;QAC9C;QAEA;MACF;IAEA,KAAK,wBAAwB;MAAE;QAC7B,IAAItC,IAAI,CAACsC,WAAW,EAAE;UACpB,IAAItC,IAAI,CAACsC,WAAW,CAACzC,IAAI,KAAK,qBAAqB,EAAE;YACnD6C,YAAY,CAAC1C,IAAI,CAACsC,WAAW,EAAErC,OAAO,EAAEE,IAAI,EAAE,IAAI,CAAC;UACrD,CAAC,MAAM;YACL,MAAMP,MAAM,GAAGY,YAAY,CAACR,IAAI,CAACsC,WAAW,EAAErC,OAAO,EAAED,IAAI,CAACsC,WAAW,CAAC;YACxE;YACA,IAAI1C,MAAM,EAAE;cACVA,MAAM,CAACkD,QAAQ,GAAG,IAAI;YACxB;UACF;QACF;QAEA,KAAK,MAAME,SAAS,IAAIhD,IAAI,CAACiD,UAAU,EAAE;UACvCP,YAAY,CAACM,SAAS,EAAE/C,OAAO,EAAEE,IAAI,CAAC;QACxC;QAEA;MACF;IAEA,KAAK,iBAAiB;MAAE;QACtB,MAAMP,MAAM,GAAGa,SAAS,CAACT,IAAI,CAACkD,KAAK,EAAEjD,OAAO,EAAEA,OAAO,CAAC;QACtD;QACA,IAAIL,MAAM,EAAE;UACVA,MAAM,CAACkD,QAAQ,GAAG,IAAI;QACxB;QAEA;MACF;IAEA,KAAK,kBAAkB;MAAE;QACvBtC,YAAY,CAACR,IAAI,CAACiC,EAAE,EAAEhC,OAAO,EAAED,IAAI,CAACiB,IAAI,EAAEhB,OAAO,CAAC;QAClD;MACF;IAEA;MAAS;QACP;QACA,OAAO,KAAK;MACd;EAAC;EAGD,OAAO,IAAI;AACb,CAAC;AAED,MAAMkD,QAAQ,GAAG,UAAUnD,IAAI,EAAEO,KAAK,EAAE6C,KAAK,EAAE;EAC7C,IAAIC,UAAU,GAAGD,KAAK,IAAI,EAAE;EAC5B;EACA,IAAI,CAAC7C,KAAK,IAAI8C,UAAU,CAAC1B,QAAQ,CAACpB,KAAK,CAAC,EAAE;IACxC,OAAO,KAAK;EACd;EAEA8C,UAAU,GAAGA,UAAU,CAACC,KAAK,EAAE;EAC/BD,UAAU,CAACE,IAAI,CAAChD,KAAK,CAAC;EAEtB,IACE,CAACA,KAAK,CAACV,IAAI,KAAK,QAAQ,IAAIU,KAAK,CAACV,IAAI,KAAK,kBAAkB,KAC7DU,KAAK,CAACT,KAAK,KAAKE,IAAI,EACpB;IACA,OAAO,IAAI;EACb;EAEA,MAAM;IACJN,KAAK,GAAGa,KAAK,CAACU;EAChB,CAAC,GAAGV,KAAK;EACT,KAAK,MAAMiD,OAAO,IAAIC,MAAM,CAACC,MAAM,CAAChE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE;IAChD,IAAIiE,KAAK,CAACC,OAAO,CAACJ,OAAO,CAAC,EAAE;MAC1B;MACA,IAAIA,OAAO,CAACK,IAAI,CAAE3C,GAAG,IAAK;QACxB,OAAOiC,QAAQ,CAACnD,IAAI,EAAEkB,GAAG,EAAEmC,UAAU,CAAC;MACxC,CAAC,CAAC,EAAE;QACF,OAAO,IAAI;MACb;IACF,CAAC,MAAM,IAAIF,QAAQ,CAACnD,IAAI,EAAEwD,OAAO,EAAEH,UAAU,CAAC,EAAE;MAC9C,OAAO,IAAI;IACb;EACF;EAEA,OAAO,KAAK;AACd,CAAC;AAED,MAAMS,WAAW,GAAG,IAAIC,GAAG,CAAC,CAC1B,wBAAwB,EAAE,0BAA0B,CACrD,CAAC;AACF,MAAMC,oBAAoB,GAAG,IAAID,GAAG,CAAC,CACnC,qBAAqB,EAAE,yBAAyB,EAAE,oBAAoB,CACvE,CAAC;AACF,MAAME,iBAAiB,GAAG,UAAUC,GAAG,EAAE;EACvC,IAAIlE,IAAI,GAAGkE,GAAG;EACd,IAAIC,GAAG,GAAG,CAAC;EACX,MAAMC,eAAe,GAAGJ,oBAAoB,CAACK,GAAG,CAACH,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAErE,IAAI,CAAC;EAC3D,OAAOG,IAAI,EAAE;IACX;IACA,IAAImE,GAAG,IAAI,CAAC,IAAIC,eAAe,EAAE;MAC/B;IACF;IAEA,IAAIN,WAAW,CAACO,GAAG,CAACrE,IAAI,CAACH,IAAI,CAAC,EAAE;MAC9B,OAAOG,IAAI;IACb;IAEAA,IAAI,GAAGA,IAAI,CAACwB,MAAM;IAClB2C,GAAG,EAAE;EACP;EAEA,OAAO,KAAK;AACd,CAAC;AAED,MAAMG,2BAA2B,GAAG,IAAIP,GAAG,CAAC,CAC1C,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,QAAQ,CACT,CAAC;AAEF,MAAMQ,qBAAqB,GAAG,IAAIR,GAAG,CAAC,CACpC,iBAAiB,EACjB,wBAAwB,EACxB,eAAe,EACf,wBAAwB,EACxB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,CACV,CAAC;AAEF,MAAMS,kBAAkB,GAAG,UAAUN,GAAG,EAAE;EACxC,IAAI,CAACI,2BAA2B,CAACD,GAAG,CAACH,GAAG,CAACrE,IAAI,CAAC,EAAE;IAC9C,OAAO,KAAK;EACd;EAEA,IAAIG,IAAI,GAAGkE,GAAG,CAAC1C,MAAM;EACrB,OAAOxB,IAAI,EAAE;IACX,IAAI8D,WAAW,CAACO,GAAG,CAACrE,IAAI,CAACH,IAAI,CAAC,EAAE;MAC9B,OAAOG,IAAI;IACb;IAEA,IAAI,CAACuE,qBAAqB,CAACF,GAAG,CAACrE,IAAI,CAACH,IAAI,CAAC,EAAE;MACzC,OAAO,KAAK;IACd;IAEAG,IAAI,GAAGA,IAAI,CAACwB,MAAM;EACpB;EAEA,OAAO,KAAK;AACd,CAAC;AAED,MAAMiD,gBAAgB,GAAG,UAAUlE,KAAK,EAAEP,IAAI,EAAEoD,KAAK,EAAE;EACrD;EACA,IAAI7C,KAAK,KAAK,IAAI,EAAE;IAClB,OAAO,KAAK;EACd;EAEA,MAAM8C,UAAU,GAAGD,KAAK,IAAI,EAAE;EAC9B,MAAM;IACJ1D;EACF,CAAC,GAAGa,KAAK;EACT,KAAK,MAAMiD,OAAO,IAAIC,MAAM,CAACC,MAAM,CAAChE,KAAK,CAAC,EAAE;IAC1C2D,UAAU,CAACE,IAAI,CAACC,OAAO,CAAC;IACxB,IAAIA,OAAO,CAACV,QAAQ,KAAK9C,IAAI,KAAKwD,OAAO,CAAC1D,KAAK,IAAIqD,QAAQ,CAACnD,IAAI,EAAEwD,OAAO,CAAC1D,KAAK,CAAC,CAAC,EAAE;MACjF,OAAO,IAAI;IACb;;IAEA;IACA;EACF;;EAEA,OAAO,KAAK;AACd,CAAC;AAED,MAAM4E,cAAc,GAAG,UAAU1E,IAAI,EAAEC,OAAO,EAAES,GAAG,EAAE;EAAA;EACnD,MAAMiE,aAAa,4BAAG1E,OAAO,CAACP,KAAK,CAACkF,MAAM,oFAApB,sBAAsBlF,KAAK,2DAA3B,uBAA6BmF,OAAO;EAC1D,IACEnE,GAAG,CAACoE,iBAAiB,IAAIH,aAAa,IAAIxB,QAAQ,CAACnD,IAAI,EAAE2E,aAAa,CAAC,EACvE;IACA,OAAO,IAAI;EACb;EAEA,IAAIjE,GAAG,CAAC8B,UAAU,IAAIvC,OAAO,CAACP,KAAK,CAACqC,MAAM,IAAIoB,QAAQ,CAACnD,IAAI,EAAEC,OAAO,CAACP,KAAK,CAACqC,MAAM,CAAC,EAAE;IAClF,OAAO,IAAI;EACb;EAEA,IAAIrB,GAAG,CAACqE,GAAG,IAAIN,gBAAgB,CAACxE,OAAO,EAAED,IAAI,CAAC,EAAE;IAC9C,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd,CAAC;AAED,MAAMgF,cAAc,GAAG,UAAUhF,IAAI,EAAEiF,UAAU,EAAE9E,IAAI,EAAE;EACvD;EACA,IAAIH,IAAI,CAACwB,MAAM,IAAIwD,cAAc,CAAChF,IAAI,CAACwB,MAAM,EAAEyD,UAAU,EAAE9E,IAAI,CAAC,EAAE;IAChE,OAAO,IAAI;EACb;EAEA,OAAOuC,YAAY,CAAC1C,IAAI,EAAEiF,UAAU,EAAE9E,IAAI,CAAC;AAC7C,CAAC;AAED,MAAM+E,KAAK,GAAG,UAAUC,GAAG,EAAEnF,IAAI,EAAEU,GAAG,EAAE;EACtC;EACA,MAAMP,IAAI,GAAGO,GAAG,IAAI;IAClBkC,aAAa,EAAE,KAAK;IACpBmC,GAAG,EAAE,IAAI;IACTD,iBAAiB,EAAE,IAAI;IACvBtC,UAAU,EAAE;EACd,CAAC;EAED,MAAMyC,UAAU,GAAGxF,UAAU,EAAE;EAC/B,IAAIU,IAAI,CAAC2E,iBAAiB,EAAE;IAC1BG,UAAU,CAACvF,KAAK,CAACkF,MAAM,GAAGnF,UAAU,EAAE;IACtCwF,UAAU,CAACvF,KAAK,CAACkF,MAAM,CAAClF,KAAK,CAACmF,OAAO,GAAGpF,UAAU,EAAE;IACpDwF,UAAU,CAACvF,KAAK,CAACmF,OAAO,GAAGI,UAAU,CAACvF,KAAK,CAACkF,MAAM,CAAClF,KAAK,CAACmF,OAAO;EAClE;EAEA,IAAI1E,IAAI,CAACqC,UAAU,EAAE;IACnByC,UAAU,CAACvF,KAAK,CAACqC,MAAM,GAAGtC,UAAU,EAAE;IACtCwF,UAAU,CAACvF,KAAK,CAACqC,MAAM,CAACC,OAAO,GAAG,IAAI;EACxC;EAEA,IAAI7B,IAAI,CAACyC,aAAa,EAAE;IACtBoC,cAAc,CAAChF,IAAI,EAAEiF,UAAU,EAAE9E,IAAI,CAAC;EACxC,CAAC,MAAM;IACLgC,aAAa,CAACgD,GAAG,EAAEF,UAAU,EAAE9E,IAAI,CAAC;IACpCuC,YAAY,CAACyC,GAAG,EAAEF,UAAU,EAAE9E,IAAI,CAAC;EACrC;EAEA,OAAO;IACL8E;EACF,CAAC;AACH,CAAC;AAED,MAAMG,mBAAmB,GAAG,UAAUpF,IAAI,EAAEqF,UAAU,EAAE3E,GAAG,EAAE4E,QAAQ,EAAE;EACrE;EACA;EACA,IAAI5E,GAAG,CAACqE,GAAG,EAAE;IACX,MAAMQ,UAAU,GAAGtB,iBAAiB,CAACjE,IAAI,CAAC;;IAE1C;IACA,IAAIuF,UAAU,IAAI,CAAC,IAAAC,8BAAgB,EAACD,UAAU,EAAEF,UAAU,EAAEC,QAAQ,CAAC,EAAE;MACrE,OAAO,IAAI;IACb;;IAEA;AACJ;AACA;IACI,IACEd,kBAAkB,CAACxE,IAAI,CAAC,IACxB,CAAC,IAAAwF,8BAAgB,EAACxF,IAAI,EAAEqF,UAAU,EAAEC,QAAQ,CAAC,EAC7C;MACA,OAAO,IAAI;IACb;EACF;EAEA,MAAMG,WAAW,GAAGP,KAAK,CAACG,UAAU,CAACF,GAAG,EAAEnF,IAAI,EAAEU,GAAG,CAAC;EAEpD,OAAOgE,cAAc,CAAC1E,IAAI,EAAEyF,WAAW,CAACR,UAAU,EAAEvE,GAAG,CAAC;AAC1D,CAAC;AAAC,eAEa;EACb0E,mBAAmB;EACnBF;AACF,CAAC;AAAA;AAAA"}
1
+ {"version":3,"file":"exportParser.js","names":["_jsdoccomment","require","_debug","_interopRequireDefault","obj","__esModule","default","debug","debugModule","createNode","props","getSymbolValue","symbol","type","value","getIdentifier","node","globals","scope","opts","simpleIdentifier","identifierLiteral","name","block","createSymbol","getSymbol","opt","object","propertySymbol","property","computed","propertyValue","body","val","prototype","left","right","method","key","parent","prop","properties","includes","propVal","createBlockSymbol","isGlobal","window","special","id","valueSymbol","initVariables","childNode","expression","declaration","declarations","initWindow","kind","mapVariables","isExport","ancestorsOnly","init","exported","ANONYMOUS_DEFAULT","specifier","specifiers","local","findNode","cache","blockCache","slice","push","propval","Object","values","Array","isArray","some","exportTypes","Set","ignorableNestedTypes","getExportAncestor","nde","idx","ignorableIfDeep","has","canBeExportedByAncestorType","canExportChildrenType","isExportByAncestor","findExportedNode","isNodeExported","_globals$props$module","_globals$props$module2","moduleExports","module","exports","initModuleExports","esm","parseRecursive","globalVars","parse","ast","isUncommentedExport","sourceCode","settings","exportNode","findJSDocComment","parseResult","_default"],"sources":["../src/exportParser.js"],"sourcesContent":["import {\n findJSDocComment,\n} from '@es-joy/jsdoccomment';\nimport debugModule from 'debug';\n\nconst debug = debugModule('requireExportJsdoc');\n\nconst createNode = function () {\n return {\n props: {},\n };\n};\n\nconst getSymbolValue = function (symbol) {\n /* istanbul ignore next */\n if (!symbol) {\n /* istanbul ignore next */\n return null;\n }\n\n /* istanbul ignore next */\n if (symbol.type === 'literal') {\n return symbol.value.value;\n }\n\n /* istanbul ignore next */\n return null;\n};\n\nconst getIdentifier = function (node, globals, scope, opts) {\n if (opts.simpleIdentifier) {\n // Type is Identier for noncomputed properties\n const identifierLiteral = createNode();\n identifierLiteral.type = 'literal';\n identifierLiteral.value = {\n value: node.name,\n };\n\n return identifierLiteral;\n }\n\n /* istanbul ignore next */\n const block = scope || globals;\n\n // As scopes are not currently supported, they are not traversed upwards recursively\n if (block.props[node.name]) {\n return block.props[node.name];\n }\n\n // Seems this will only be entered once scopes added and entered\n /* istanbul ignore next */\n if (globals.props[node.name]) {\n return globals.props[node.name];\n }\n\n return null;\n};\n\nlet createSymbol = null;\n\n// eslint-disable-next-line complexity\nconst getSymbol = function (node, globals, scope, opt) {\n const opts = opt || {};\n /* istanbul ignore next */\n // eslint-disable-next-line default-case\n switch (node.type) {\n case 'Identifier': {\n return getIdentifier(node, globals, scope, opts);\n }\n\n case 'MemberExpression': {\n const obj = getSymbol(node.object, globals, scope, opts);\n const propertySymbol = getSymbol(node.property, globals, scope, {\n simpleIdentifier: !node.computed,\n });\n const propertyValue = getSymbolValue(propertySymbol);\n\n /* istanbul ignore next */\n if (obj && propertyValue && obj.props[propertyValue]) {\n const block = obj.props[propertyValue];\n\n return block;\n }\n\n /*\n if (opts.createMissingProps && propertyValue) {\n obj.props[propertyValue] = createNode();\n\n return obj.props[propertyValue];\n }\n */\n /* istanbul ignore next */\n debug(`MemberExpression: Missing property ${node.property.name}`);\n\n /* istanbul ignore next */\n return null;\n }\n\n case 'ClassExpression': {\n return getSymbol(node.body, globals, scope, opts);\n }\n\n case 'TSTypeAliasDeclaration':\n case 'TSEnumDeclaration': case 'TSInterfaceDeclaration':\n case 'ClassDeclaration':\n case 'FunctionExpression': case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n const val = createNode();\n val.props.prototype = createNode();\n val.props.prototype.type = 'object';\n val.type = 'object';\n val.value = node;\n\n return val;\n }\n\n case 'AssignmentExpression': {\n return createSymbol(node.left, globals, node.right, scope, opts);\n }\n\n case 'ClassBody': {\n const val = createNode();\n for (const method of node.body) {\n val.props[method.key.name] = createNode();\n val.props[method.key.name].type = 'object';\n val.props[method.key.name].value = method.value;\n }\n\n val.type = 'object';\n val.value = node.parent;\n\n return val;\n }\n\n case 'ObjectExpression': {\n const val = createNode();\n val.type = 'object';\n for (const prop of node.properties) {\n if ([\n // @typescript-eslint/parser, espree, acorn, etc.\n 'SpreadElement',\n\n // @babel/eslint-parser\n 'ExperimentalSpreadProperty',\n ].includes(prop.type)) {\n continue;\n }\n\n const propVal = getSymbol(prop.value, globals, scope, opts);\n /* istanbul ignore next */\n if (propVal) {\n val.props[prop.key.name] = propVal;\n }\n }\n\n return val;\n }\n\n case 'Literal': {\n const val = createNode();\n val.type = 'literal';\n val.value = node;\n\n return val;\n }\n }\n\n /* istanbul ignore next */\n return null;\n};\n\nconst createBlockSymbol = function (block, name, value, globals, isGlobal) {\n block.props[name] = value;\n if (isGlobal && globals.props.window && globals.props.window.special) {\n globals.props.window.props[name] = value;\n }\n};\n\ncreateSymbol = function (node, globals, value, scope, isGlobal) {\n const block = scope || globals;\n let symbol;\n // eslint-disable-next-line default-case\n switch (node.type) {\n case 'FunctionDeclaration':\n /* istanbul ignore next */\n // Fall through\n case 'TSEnumDeclaration': case 'TSInterfaceDeclaration':\n /* istanbul ignore next */\n // Fall through\n case 'TSTypeAliasDeclaration': case 'ClassDeclaration': {\n /* istanbul ignore next */\n if (node.id && node.id.type === 'Identifier') {\n return createSymbol(node.id, globals, node, globals);\n }\n\n /* istanbul ignore next */\n break;\n }\n\n case 'Identifier': {\n if (value) {\n const valueSymbol = getSymbol(value, globals, block);\n /* istanbul ignore next */\n if (valueSymbol) {\n createBlockSymbol(block, node.name, valueSymbol, globals, isGlobal);\n\n return block.props[node.name];\n }\n\n /* istanbul ignore next */\n debug('Identifier: Missing value symbol for %s', node.name);\n } else {\n createBlockSymbol(block, node.name, createNode(), globals, isGlobal);\n\n return block.props[node.name];\n }\n\n /* istanbul ignore next */\n break;\n }\n\n case 'MemberExpression': {\n symbol = getSymbol(node.object, globals, block);\n\n const propertySymbol = getSymbol(node.property, globals, block, {\n simpleIdentifier: !node.computed,\n });\n const propertyValue = getSymbolValue(propertySymbol);\n if (symbol && propertyValue) {\n createBlockSymbol(symbol, propertyValue, getSymbol(value, globals, block), globals, isGlobal);\n\n return symbol.props[propertyValue];\n }\n\n /* istanbul ignore next */\n debug('MemberExpression: Missing symbol: %s', node.property.name);\n break;\n }\n }\n\n return null;\n};\n\n// Creates variables from variable definitions\nconst initVariables = function (node, globals, opts) {\n // eslint-disable-next-line default-case\n switch (node.type) {\n case 'Program': {\n for (const childNode of node.body) {\n initVariables(childNode, globals, opts);\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n initVariables(node.expression, globals, opts);\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\n // let and const\n const symbol = createSymbol(declaration.id, globals, null, globals);\n if (opts.initWindow && node.kind === 'var' && globals.props.window) {\n // If var, also add to window\n globals.props.window.props[declaration.id.name] = symbol;\n }\n }\n\n break;\n }\n\n case 'ExportNamedDeclaration': {\n if (node.declaration) {\n initVariables(node.declaration, globals, opts);\n }\n\n break;\n }\n }\n};\n\n// Populates variable maps using AST\n// eslint-disable-next-line complexity\nconst mapVariables = function (node, globals, opt, isExport) {\n /* istanbul ignore next */\n const opts = opt || {};\n /* istanbul ignore next */\n switch (node.type) {\n case 'Program': {\n if (opts.ancestorsOnly) {\n return false;\n }\n\n for (const childNode of node.body) {\n mapVariables(childNode, globals, opts);\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n mapVariables(node.expression, globals, opts);\n break;\n }\n\n case 'AssignmentExpression': {\n createSymbol(node.left, globals, node.right);\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\n const isGlobal = opts.initWindow && node.kind === 'var' && globals.props.window;\n const symbol = createSymbol(declaration.id, globals, declaration.init, globals, isGlobal);\n if (symbol && isExport) {\n symbol.exported = true;\n }\n }\n\n break;\n }\n\n case 'FunctionDeclaration': {\n /* istanbul ignore next */\n if (node.id.type === 'Identifier') {\n createSymbol(node.id, globals, node, globals, true);\n }\n\n break;\n }\n\n case 'ExportDefaultDeclaration': {\n const symbol = createSymbol(node.declaration, globals, node.declaration);\n if (symbol) {\n symbol.exported = true;\n } else if (!node.id) {\n globals.ANONYMOUS_DEFAULT = node.declaration;\n }\n\n break;\n }\n\n case 'ExportNamedDeclaration': {\n if (node.declaration) {\n if (node.declaration.type === 'VariableDeclaration') {\n mapVariables(node.declaration, globals, opts, true);\n } else {\n const symbol = createSymbol(node.declaration, globals, node.declaration);\n /* istanbul ignore next */\n if (symbol) {\n symbol.exported = true;\n }\n }\n }\n\n for (const specifier of node.specifiers) {\n mapVariables(specifier, globals, opts);\n }\n\n break;\n }\n\n case 'ExportSpecifier': {\n const symbol = getSymbol(node.local, globals, globals);\n /* istanbul ignore next */\n if (symbol) {\n symbol.exported = true;\n }\n\n break;\n }\n\n case 'ClassDeclaration': {\n createSymbol(node.id, globals, node.body, globals);\n break;\n }\n\n default: {\n /* istanbul ignore next */\n return false;\n }\n }\n\n return true;\n};\n\nconst findNode = function (node, block, cache) {\n let blockCache = cache || [];\n /* istanbul ignore next */\n if (!block || blockCache.includes(block)) {\n return false;\n }\n\n blockCache = blockCache.slice();\n blockCache.push(block);\n\n if (\n (block.type === 'object' || block.type === 'MethodDefinition') &&\n block.value === node\n ) {\n return true;\n }\n\n const {\n props = block.body,\n } = block;\n for (const propval of Object.values(props || {})) {\n if (Array.isArray(propval)) {\n /* istanbul ignore if */\n if (propval.some((val) => {\n return findNode(node, val, blockCache);\n })) {\n return true;\n }\n } else if (findNode(node, propval, blockCache)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst exportTypes = new Set([\n 'ExportNamedDeclaration', 'ExportDefaultDeclaration',\n]);\nconst ignorableNestedTypes = new Set([\n 'FunctionDeclaration', 'ArrowFunctionExpression', 'FunctionExpression',\n]);\nconst getExportAncestor = function (nde) {\n let node = nde;\n let idx = 0;\n const ignorableIfDeep = ignorableNestedTypes.has(nde?.type);\n while (node) {\n // Ignore functions nested more deeply than say `export default function () {}`\n if (idx >= 2 && ignorableIfDeep) {\n break;\n }\n\n if (exportTypes.has(node.type)) {\n return node;\n }\n\n node = node.parent;\n idx++;\n }\n\n return false;\n};\n\nconst canBeExportedByAncestorType = new Set([\n 'TSPropertySignature',\n 'TSMethodSignature',\n 'ClassProperty',\n 'PropertyDefinition',\n 'Method',\n]);\n\nconst canExportChildrenType = new Set([\n 'TSInterfaceBody',\n 'TSInterfaceDeclaration',\n 'TSTypeLiteral',\n 'TSTypeAliasDeclaration',\n 'ClassDeclaration',\n 'ClassBody',\n 'ClassDefinition',\n 'ClassExpression',\n 'Program',\n]);\n\nconst isExportByAncestor = function (nde) {\n if (!canBeExportedByAncestorType.has(nde.type)) {\n return false;\n }\n\n let node = nde.parent;\n while (node) {\n if (exportTypes.has(node.type)) {\n return node;\n }\n\n if (!canExportChildrenType.has(node.type)) {\n return false;\n }\n\n node = node.parent;\n }\n\n return false;\n};\n\nconst findExportedNode = function (block, node, cache) {\n /* istanbul ignore next */\n if (block === null) {\n return false;\n }\n\n const blockCache = cache || [];\n const {\n props,\n } = block;\n for (const propval of Object.values(props)) {\n blockCache.push(propval);\n if (propval.exported && (node === propval.value || findNode(node, propval.value))) {\n return true;\n }\n\n // No need to check `propval` for exported nodes as ESM\n // exports are only global\n }\n\n return false;\n};\n\nconst isNodeExported = function (node, globals, opt) {\n const moduleExports = globals.props.module?.props?.exports;\n if (\n opt.initModuleExports && moduleExports && findNode(node, moduleExports)\n ) {\n return true;\n }\n\n if (opt.initWindow && globals.props.window && findNode(node, globals.props.window)) {\n return true;\n }\n\n if (opt.esm && findExportedNode(globals, node)) {\n return true;\n }\n\n return false;\n};\n\nconst parseRecursive = function (node, globalVars, opts) {\n // Iterate from top using recursion - stop at first processed node from top\n if (node.parent && parseRecursive(node.parent, globalVars, opts)) {\n return true;\n }\n\n return mapVariables(node, globalVars, opts);\n};\n\nconst parse = function (ast, node, opt) {\n /* istanbul ignore next */\n const opts = opt || {\n ancestorsOnly: false,\n esm: true,\n initModuleExports: true,\n initWindow: true,\n };\n\n const globalVars = createNode();\n if (opts.initModuleExports) {\n globalVars.props.module = createNode();\n globalVars.props.module.props.exports = createNode();\n globalVars.props.exports = globalVars.props.module.props.exports;\n }\n\n if (opts.initWindow) {\n globalVars.props.window = createNode();\n globalVars.props.window.special = true;\n }\n\n if (opts.ancestorsOnly) {\n parseRecursive(node, globalVars, opts);\n } else {\n initVariables(ast, globalVars, opts);\n mapVariables(ast, globalVars, opts);\n }\n\n return {\n globalVars,\n };\n};\n\nconst isUncommentedExport = function (node, sourceCode, opt, settings) {\n // console.log({node});\n // Optimize with ancestor check for esm\n if (opt.esm) {\n const exportNode = getExportAncestor(node);\n\n // Is export node comment\n if (exportNode && !findJSDocComment(exportNode, sourceCode, settings)) {\n return true;\n }\n\n /**\n * Some typescript types are not in variable map, but inherit exported (interface property and method)\n */\n if (\n isExportByAncestor(node) &&\n !findJSDocComment(node, sourceCode, settings)\n ) {\n return true;\n }\n }\n\n const parseResult = parse(sourceCode.ast, node, opt);\n\n return isNodeExported(node, parseResult.globalVars, opt);\n};\n\nexport default {\n isUncommentedExport,\n parse,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"generateRule.js","names":["ruleName","options","process","argv","recommended","includes","console","error","test","ruleNamesPath","ruleNames","JSON","parse","fs","readFile","push","sort","writeFile","stringify","log","ruleTemplate","camelCasedRuleName","camelCase","rulePath","existsSync","ruleTestTemplate","ruleTestPath","ruleReadmeTemplate","ruleReadmePath","replaceInOrder","path","oldRegex","checkName","newLine","oldIsCamel","offsets","readme","replace","matchedLine","n1","offset","str","oldRule","oldRuleB","alreadyIncluded","itemIndex","findIndex","item","undefined","pop","length","slice","repeat","chdir","resolve","__dirname","open"],"sources":["../src/bin/generateRule.js"],"sourcesContent":["/* eslint-disable no-console -- CLI */\n\n/**\n * @example\n *\n * ```shell\n * npm run create-rule my-new-rule --recommended\n * ```\n */\n\nimport {\n existsSync,\n} from 'fs';\nimport fs from 'fs/promises';\nimport {\n resolve,\n} from 'path';\nimport camelCase from 'camelcase';\nimport open from 'open-editor';\n\n// Todo: Would ideally have prompts, e.g., to ask for whether type was problem/layout, etc.\n\nconst [\n , , ruleName,\n ...options\n] = process.argv;\n\nconst recommended = options.includes('--recommended');\n\n(async () => {\n if (!ruleName) {\n console.error('Please supply a rule name');\n\n return;\n }\n\n if ((/[A-Z]/u).test(ruleName)) {\n console.error('Please ensure the rule has no capital letters');\n\n return;\n }\n\n const ruleNamesPath = './test/rules/ruleNames.json';\n const ruleNames = JSON.parse(await fs.readFile(\n ruleNamesPath, 'utf8',\n ));\n if (!ruleNames.includes(ruleName)) {\n ruleNames.push(ruleName);\n ruleNames.sort();\n }\n\n await fs.writeFile(ruleNamesPath, JSON.stringify(ruleNames, null, 2) + '\\n');\n console.log('ruleNames', ruleNames);\n\n const ruleTemplate = `import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n utils,\n}) => {\n // Rule here\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-${ruleName}',\n },\n schema: [\n {\n additionalProperies: false,\n properties: {\n // Option properties here (or remove the object)\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n`;\n\n const camelCasedRuleName = camelCase(ruleName);\n\n const rulePath = `./src/rules/${camelCasedRuleName}.js`;\n\n if (!existsSync(rulePath)) {\n await fs.writeFile(rulePath, ruleTemplate);\n }\n\n const ruleTestTemplate = `export default {\n invalid: [\n {\n code: \\`\n \\`,\n errors: [\n {\n line: '',\n message: '',\n },\n ],\n },\n ],\n valid: [\n {\n code: \\`\n \\`,\n },\n ],\n};\n`;\n\n const ruleTestPath = `./test/rules/assertions/${camelCasedRuleName}.js`;\n if (!existsSync(ruleTestPath)) {\n await fs.writeFile(ruleTestPath, ruleTestTemplate);\n }\n\n const ruleReadmeTemplate = `### \\`${ruleName}\\`\n\n|||\n|---|---|\n|Context|everywhere|\n|Tags|\\`\\`|\n|Recommended|${recommended ? 'true' : 'false'}|\n|Settings||\n|Options||\n\n<!-- assertions ${camelCasedRuleName} -->\n`;\n\n const ruleReadmePath = `./.README/rules/${ruleName}.md`;\n if (!existsSync(ruleReadmePath)) {\n await fs.writeFile(ruleReadmePath, ruleReadmeTemplate);\n }\n\n const replaceInOrder = async ({\n path,\n oldRegex,\n checkName,\n newLine,\n oldIsCamel,\n }) => {\n const offsets = [];\n\n let readme = await fs.readFile(path, 'utf8');\n readme.replace(\n oldRegex,\n (matchedLine, n1, offset, str, {\n oldRule,\n }) => {\n offsets.push({\n matchedLine,\n offset,\n oldRule,\n });\n },\n );\n\n offsets.sort(({\n oldRule,\n }, {\n oldRule: oldRuleB,\n }) => {\n // eslint-disable-next-line no-extra-parens\n return oldRule < oldRuleB ? -1 : (oldRule > oldRuleB ? 1 : 0);\n });\n\n let alreadyIncluded = false;\n const itemIndex = offsets.findIndex(({\n oldRule,\n }) => {\n alreadyIncluded ||= oldIsCamel ? camelCasedRuleName === oldRule : ruleName === oldRule;\n\n return oldIsCamel ? camelCasedRuleName < oldRule : ruleName < oldRule;\n });\n let item = itemIndex !== undefined && offsets[itemIndex];\n if (item && itemIndex === 0 &&\n\n // This property would not always be sufficient but in this case it is.\n oldIsCamel\n ) {\n item.offset = 0;\n }\n\n if (!item) {\n item = offsets.pop();\n item.offset += item.matchedLine.length;\n }\n\n if (alreadyIncluded) {\n console.log(`Rule name is already present in ${checkName}.`);\n } else {\n readme = readme.slice(0, item.offset) +\n (item.offset ? '\\n' : '') +\n newLine +\n (item.offset ? '' : '\\n') +\n readme.slice(item.offset);\n\n await fs.writeFile(path, readme);\n }\n };\n\n await replaceInOrder({\n checkName: 'README',\n newLine: `{\"gitdown\": \"include\", \"file\": \"./rules/${ruleName}.md\"}`,\n oldRegex: /\\n\\{\"gitdown\": \"include\", \"file\": \".\\/rules\\/(?<oldRule>[^.]*).md\"\\}/gu,\n path: './.README/README.md',\n });\n\n await replaceInOrder({\n checkName: 'index import',\n newLine: `import ${camelCasedRuleName} from './rules/${camelCasedRuleName}';`,\n oldIsCamel: true,\n oldRegex: /\\nimport (?<oldRule>[^ ]*) from '.\\/rules\\/\\1';/gu,\n path: './src/index.js',\n });\n\n await replaceInOrder({\n checkName: 'index recommended',\n newLine: `${' '.repeat(8)}'jsdoc/${ruleName}': '${recommended ? 'warn' : 'off'}',`,\n oldRegex: /\\n\\s{8}'jsdoc\\/(?<oldRule>[^']*)': '[^']*',/gu,\n path: './src/index.js',\n });\n\n await replaceInOrder({\n checkName: 'index rules',\n newLine: `${' '.repeat(4)}'${ruleName}': ${camelCasedRuleName},`,\n oldRegex: /\\n\\s{4}'(?<oldRule>[^']*)': [^,]*,/gu,\n path: './src/index.js',\n });\n\n await import('./generateReadme.js');\n\n /*\n console.log('Paths to open for further editing\\n');\n console.log(`open ${ruleReadmePath}`);\n console.log(`open ${rulePath}`);\n console.log(`open ${ruleTestPath}\\n`);\n */\n\n // Set chdir as somehow still in operation from other test\n process.chdir(resolve(__dirname, '../../'));\n await open([\n // Could even add editor line column numbers like `${rulePath}:1:1`\n ruleReadmePath,\n ruleTestPath,\n rulePath,\n ]);\n})();\n"],"mappings":"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"}
1
+ {"version":3,"file":"generateRule.js","names":["_fs","require","_promises","_interopRequireDefault","_path","_camelcase","_openEditor","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_interopRequireWildcard","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ruleName","options","process","argv","recommended","includes","console","error","test","ruleNamesPath","ruleNames","JSON","parse","fs","readFile","push","sort","writeFile","stringify","log","ruleTemplate","camelCasedRuleName","camelCase","rulePath","existsSync","ruleTestTemplate","ruleTestPath","ruleReadmeTemplate","ruleReadmePath","replaceInOrder","path","oldRegex","checkName","newLine","oldIsCamel","offsets","readme","replace","matchedLine","n1","offset","str","oldRule","oldRuleB","alreadyIncluded","itemIndex","findIndex","item","undefined","pop","length","slice","repeat","Promise","resolve","then","chdir","__dirname","open"],"sources":["../src/bin/generateRule.js"],"sourcesContent":["/* eslint-disable no-console -- CLI */\n\n/**\n * @example\n *\n * ```shell\n * npm run create-rule my-new-rule --recommended\n * ```\n */\n\nimport {\n existsSync,\n} from 'fs';\nimport fs from 'fs/promises';\nimport {\n resolve,\n} from 'path';\nimport camelCase from 'camelcase';\nimport open from 'open-editor';\n\n// Todo: Would ideally have prompts, e.g., to ask for whether type was problem/layout, etc.\n\nconst [\n , , ruleName,\n ...options\n] = process.argv;\n\nconst recommended = options.includes('--recommended');\n\n(async () => {\n if (!ruleName) {\n console.error('Please supply a rule name');\n\n return;\n }\n\n if ((/[A-Z]/u).test(ruleName)) {\n console.error('Please ensure the rule has no capital letters');\n\n return;\n }\n\n const ruleNamesPath = './test/rules/ruleNames.json';\n const ruleNames = JSON.parse(await fs.readFile(\n ruleNamesPath, 'utf8',\n ));\n if (!ruleNames.includes(ruleName)) {\n ruleNames.push(ruleName);\n ruleNames.sort();\n }\n\n await fs.writeFile(ruleNamesPath, JSON.stringify(ruleNames, null, 2) + '\\n');\n console.log('ruleNames', ruleNames);\n\n const ruleTemplate = `import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n utils,\n}) => {\n // Rule here\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-${ruleName}',\n },\n schema: [\n {\n additionalProperies: false,\n properties: {\n // Option properties here (or remove the object)\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n`;\n\n const camelCasedRuleName = camelCase(ruleName);\n\n const rulePath = `./src/rules/${camelCasedRuleName}.js`;\n\n if (!existsSync(rulePath)) {\n await fs.writeFile(rulePath, ruleTemplate);\n }\n\n const ruleTestTemplate = `export default {\n invalid: [\n {\n code: \\`\n \\`,\n errors: [\n {\n line: '',\n message: '',\n },\n ],\n },\n ],\n valid: [\n {\n code: \\`\n \\`,\n },\n ],\n};\n`;\n\n const ruleTestPath = `./test/rules/assertions/${camelCasedRuleName}.js`;\n if (!existsSync(ruleTestPath)) {\n await fs.writeFile(ruleTestPath, ruleTestTemplate);\n }\n\n const ruleReadmeTemplate = `### \\`${ruleName}\\`\n\n|||\n|---|---|\n|Context|everywhere|\n|Tags|\\`\\`|\n|Recommended|${recommended ? 'true' : 'false'}|\n|Settings||\n|Options||\n\n<!-- assertions ${camelCasedRuleName} -->\n`;\n\n const ruleReadmePath = `./.README/rules/${ruleName}.md`;\n if (!existsSync(ruleReadmePath)) {\n await fs.writeFile(ruleReadmePath, ruleReadmeTemplate);\n }\n\n const replaceInOrder = async ({\n path,\n oldRegex,\n checkName,\n newLine,\n oldIsCamel,\n }) => {\n const offsets = [];\n\n let readme = await fs.readFile(path, 'utf8');\n readme.replace(\n oldRegex,\n (matchedLine, n1, offset, str, {\n oldRule,\n }) => {\n offsets.push({\n matchedLine,\n offset,\n oldRule,\n });\n },\n );\n\n offsets.sort(({\n oldRule,\n }, {\n oldRule: oldRuleB,\n }) => {\n // eslint-disable-next-line no-extra-parens\n return oldRule < oldRuleB ? -1 : (oldRule > oldRuleB ? 1 : 0);\n });\n\n let alreadyIncluded = false;\n const itemIndex = offsets.findIndex(({\n oldRule,\n }) => {\n alreadyIncluded ||= oldIsCamel ? camelCasedRuleName === oldRule : ruleName === oldRule;\n\n return oldIsCamel ? camelCasedRuleName < oldRule : ruleName < oldRule;\n });\n let item = itemIndex !== undefined && offsets[itemIndex];\n if (item && itemIndex === 0 &&\n\n // This property would not always be sufficient but in this case it is.\n oldIsCamel\n ) {\n item.offset = 0;\n }\n\n if (!item) {\n item = offsets.pop();\n item.offset += item.matchedLine.length;\n }\n\n if (alreadyIncluded) {\n console.log(`Rule name is already present in ${checkName}.`);\n } else {\n readme = readme.slice(0, item.offset) +\n (item.offset ? '\\n' : '') +\n newLine +\n (item.offset ? '' : '\\n') +\n readme.slice(item.offset);\n\n await fs.writeFile(path, readme);\n }\n };\n\n await replaceInOrder({\n checkName: 'README',\n newLine: `{\"gitdown\": \"include\", \"file\": \"./rules/${ruleName}.md\"}`,\n oldRegex: /\\n\\{\"gitdown\": \"include\", \"file\": \".\\/rules\\/(?<oldRule>[^.]*).md\"\\}/gu,\n path: './.README/README.md',\n });\n\n await replaceInOrder({\n checkName: 'index import',\n newLine: `import ${camelCasedRuleName} from './rules/${camelCasedRuleName}';`,\n oldIsCamel: true,\n oldRegex: /\\nimport (?<oldRule>[^ ]*) from '.\\/rules\\/\\1';/gu,\n path: './src/index.js',\n });\n\n await replaceInOrder({\n checkName: 'index recommended',\n newLine: `${' '.repeat(8)}'jsdoc/${ruleName}': '${recommended ? 'warn' : 'off'}',`,\n oldRegex: /\\n\\s{8}'jsdoc\\/(?<oldRule>[^']*)': '[^']*',/gu,\n path: './src/index.js',\n });\n\n await replaceInOrder({\n checkName: 'index rules',\n newLine: `${' '.repeat(4)}'${ruleName}': ${camelCasedRuleName},`,\n oldRegex: /\\n\\s{4}'(?<oldRule>[^']*)': [^,]*,/gu,\n path: './src/index.js',\n });\n\n await import('./generateReadme.js');\n\n /*\n console.log('Paths to open for further editing\\n');\n console.log(`open ${ruleReadmePath}`);\n console.log(`open ${rulePath}`);\n console.log(`open ${ruleTestPath}\\n`);\n */\n\n // Set chdir as somehow still in operation from other test\n process.chdir(resolve(__dirname, '../../'));\n await open([\n // Could even add editor line column numbers like `${rulePath}:1:1`\n ruleReadmePath,\n ruleTestPath,\n rulePath,\n ]);\n})();\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getDefaultTagStructureForMode.js","names":["getDefaultTagStructureForMode","mode","isJsdoc","isClosure","isTypescript","isPermissive","isJsdocOrPermissive","isJsdocOrTypescript","isTypescriptOrClosure","isClosureOrPermissive","isJsdocTypescriptOrPermissive","Map"],"sources":["../src/getDefaultTagStructureForMode.js"],"sourcesContent":["const getDefaultTagStructureForMode = (mode) => {\n const isJsdoc = mode === 'jsdoc';\n const isClosure = mode === 'closure';\n const isTypescript = mode === 'typescript';\n const isPermissive = mode === 'permissive';\n\n const isJsdocOrPermissive = isJsdoc || isPermissive;\n const isJsdocOrTypescript = isJsdoc || isTypescript;\n const isTypescriptOrClosure = isTypescript || isClosure;\n const isClosureOrPermissive = isClosure || isPermissive;\n const isJsdocTypescriptOrPermissive = isJsdocOrTypescript || isPermissive;\n\n // Properties:\n // `nameContents` - 'namepath-referencing'|'namepath-defining'|'text'|false\n // `typeAllowed` - boolean\n // `nameRequired` - boolean\n // `typeRequired` - boolean\n // `typeOrNameRequired` - boolean\n\n // All of `typeAllowed` have a signature with \"type\" except for\n // `augments`/`extends` (\"namepath\")\n // `param`/`arg`/`argument` (no signature)\n // `property`/`prop` (no signature)\n // `modifies` (undocumented)\n\n // None of the `nameContents: 'namepath-defining'` show as having curly\n // brackets for their name/namepath\n\n // Among `namepath-defining` and `namepath-referencing`, these do not seem\n // to allow curly brackets in their doc signature or examples (`modifies`\n // references namepaths within its type brackets and `param` is\n // name-defining but not namepath-defining, so not part of these groups)\n\n // Todo: Should support special processing for \"name\" as distinct from\n // \"namepath\" (e.g., param can't define a namepath)\n\n // Once checking inline tags:\n // Todo: Re: `typeOrNameRequired`, `@link` (or @linkcode/@linkplain) seems\n // to require a namepath OR URL and might be checked as such.\n // Todo: Should support a `tutorialID` type (for `@tutorial` block and\n // inline)\n\n return new Map([\n [\n 'alias', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'arg', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // See `param`\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'argument', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // See `param`\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'augments', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // Does not show curly brackets in either the signature or examples\n [\n 'typeAllowed', true,\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'borrows', new Map([\n // `borrows` has a different format, however, so needs special parsing;\n // seems to require both, and as \"namepath\"'s\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'callback', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples); TypeScript does not enforce but seems\n // problematic as not attached so presumably not useable without it\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // \"namepath\"\n [\n 'nameRequired', true,\n ],\n ]),\n ],\n\n [\n 'class', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Not in use, but should be this value if using to power `empty-tags`\n [\n 'nameAllowed', true,\n ],\n\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'const', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'constant', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'constructor', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'constructs', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'nameRequired', false,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'define', new Map([\n [\n 'typeRequired', isClosure,\n ],\n ]),\n ],\n\n [\n 'emits', new Map([\n // Signature seems to require a \"name\" (of an event) and no counter-examples\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'enum', new Map([\n // Has example showing curly brackets but not in doc signature\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'event', new Map([\n // The doc signature of `event` seems to require a \"name\"\n [\n 'nameRequired', true,\n ],\n\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n [\n 'nameContents', 'namepath-defining',\n ],\n ]),\n ],\n\n [\n 'exception', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n // Closure\n [\n 'export', new Map([\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'exports', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'nameRequired', isJsdoc,\n ],\n\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'extends', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // Does not show curly brackets in either the signature or examples\n [\n 'typeAllowed', isTypescriptOrClosure || isPermissive,\n ],\n\n [\n 'nameRequired', isJsdoc,\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', isTypescriptOrClosure || isPermissive,\n ],\n ]),\n ],\n\n [\n 'external', new Map([\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // \"name\" (and a special syntax for the `external` name)\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'fires', new Map([\n // Signature seems to require a \"name\" (of an event) and no\n // counter-examples\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'function', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'nameRequired', false,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n [\n 'func', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n ]),\n ],\n\n [\n 'host', new Map([\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // See `external`\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'interface', new Map([\n // Allows for \"name\" in signature, but indicates as optional\n [\n 'nameContents',\n isJsdocTypescriptOrPermissive ? 'namepath-defining' : false,\n ],\n\n // Not in use, but should be this value if using to power `empty-tags`\n [\n 'nameAllowed', isClosure,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'internal', new Map([\n // https://www.typescriptlang.org/tsconfig/#stripInternal\n [\n 'nameContents', false,\n ],\n // Not in use, but should be this value if using to power `empty-tags`\n [\n 'nameAllowed', false,\n ],\n ]),\n ],\n\n [\n 'implements', new Map([\n // Shows curly brackets in the doc signature and examples\n // \"typeExpression\"\n [\n 'typeRequired', true,\n ],\n ]),\n ],\n\n [\n 'lends', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'listens', new Map([\n // Signature seems to require a \"name\" (of an event) and no\n // counter-examples\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'member', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Has example showing curly brackets but not in doc signature\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'memberof', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n [\n 'memberof!', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'method', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n ]),\n ],\n [\n 'mixes', new Map([\n // Signature seems to require a \"OtherObjectPath\" with no\n // counter-examples\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"OtherObjectPath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'mixin', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'nameRequired', false,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'modifies', new Map([\n // Has no documentation, but test example has curly brackets, and\n // \"name\" would be suggested rather than \"namepath\" based on example;\n // not sure if name is required\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'module', new Map([\n // Optional \"name\" and no curly brackets\n // this block impacts `no-undefined-types` and `valid-types` (search for\n // \"isNamepathDefiningTag|tagMightHaveNamepath|tagMightHaveEitherTypeOrNamePosition\")\n [\n 'nameContents', isJsdoc ? 'namepath-defining' : 'text',\n ],\n\n // Shows the signature with curly brackets but not in the example\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'name', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // \"namepath\"\n [\n 'nameRequired', true,\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'namespace', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Shows the signature with curly brackets but not in the example\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'package', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'param', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Though no signature provided requiring, per\n // https://jsdoc.app/tags-param.html:\n // \"The @param tag requires you to specify the name of the parameter you\n // are documenting.\"\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'private', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'prop', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // See `property`\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'property', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // No docs indicate required, but since parallel to `param`, we treat as\n // such:\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'protected', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'public', new Map([\n // Does not show a signature nor show curly brackets in the example\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'requires', new Map([\n // <someModuleName>\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'returns', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'return', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'see', new Map([\n // Signature allows for \"namepath\" or text, so user must configure to\n // 'namepath-referencing' to enforce checks\n [\n 'nameContents', 'text',\n ],\n ]),\n ],\n\n [\n 'static', new Map([\n // Does not show a signature nor show curly brackets in the example\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'suppress', new Map([\n [\n 'nameContents', !isClosure,\n ],\n [\n 'typeRequired', isClosure,\n ],\n ]),\n ],\n\n [\n 'template', new Map([\n [\n 'nameContents', isJsdoc ? 'text' : 'namepath-referencing',\n ],\n\n // Though defines `nameContents: 'namepath-defining'` in a sense, it is\n // not parseable in the same way for template (e.g., allowing commas),\n // so not adding\n [\n 'typeAllowed', isTypescriptOrClosure || isPermissive,\n ],\n ]),\n ],\n\n [\n 'this', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n // Not used with namepath in Closure/TypeScript, however\n [\n 'nameContents', isJsdoc ? 'namepath-referencing' : false,\n ],\n\n [\n 'typeRequired', isTypescriptOrClosure,\n ],\n\n // namepath\n [\n 'typeOrNameRequired', isJsdoc,\n ],\n ]),\n ],\n\n [\n 'throws', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'tutorial', new Map([\n // (a tutorial ID)\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'type', new Map([\n // Shows curly brackets in the doc signature and examples\n // \"typeName\"\n [\n 'typeRequired', true,\n ],\n ]),\n ],\n\n [\n 'typedef', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // TypeScript may allow it to be dropped if followed by @property or @member;\n // also shown as missing in Closure\n // \"namepath\"\n [\n 'nameRequired', isJsdocOrPermissive,\n ],\n\n // Is not `typeRequired` for TypeScript because it gives an error:\n // JSDoc '@typedef' tag should either have a type annotation or be followed by '@property' or '@member' tags.\n\n // Has example showing curly brackets but not in doc signature\n [\n 'typeAllowed', true,\n ],\n\n // TypeScript may allow it to be dropped if followed by @property or @member\n // \"namepath\"\n [\n 'typeOrNameRequired', !isTypescript,\n ],\n ]),\n ],\n\n [\n 'var', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Has example showing curly brackets but not in doc signature\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'yields', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'yield', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n ]);\n};\n\nexport default getDefaultTagStructureForMode;\n"],"mappings":";;;;;;AAAA,MAAMA,6BAA6B,GAAIC,IAAI,IAAK;EAC9C,MAAMC,OAAO,GAAGD,IAAI,KAAK,OAAO;EAChC,MAAME,SAAS,GAAGF,IAAI,KAAK,SAAS;EACpC,MAAMG,YAAY,GAAGH,IAAI,KAAK,YAAY;EAC1C,MAAMI,YAAY,GAAGJ,IAAI,KAAK,YAAY;EAE1C,MAAMK,mBAAmB,GAAGJ,OAAO,IAAIG,YAAY;EACnD,MAAME,mBAAmB,GAAGL,OAAO,IAAIE,YAAY;EACnD,MAAMI,qBAAqB,GAAGJ,YAAY,IAAID,SAAS;EACvD,MAAMM,qBAAqB,GAAGN,SAAS,IAAIE,YAAY;EACvD,MAAMK,6BAA6B,GAAGH,mBAAmB,IAAIF,YAAY;;EAEzE;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;;EAEA;EACA;;EAEA;EACA;EACA;EACA;;EAEA;EACA;;EAEA;EACA;EACA;EACA;EACA;;EAEA,OAAO,IAAIM,GAAG,CAAC,CACb,CACE,OAAO,EAAE,IAAIA,GAAG,CAAC;EACf;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC;EAED;EACA,CACE,oBAAoB,EAAE,IAAI,CAC3B,CACF,CAAC,CACH,EAED,CACE,KAAK,EAAE,IAAIA,GAAG,CAAC,CACb,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,cAAc,EAAE,IAAI,CACrB;EAED;EACA;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC,CAClB,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,cAAc,EAAE,IAAI,CACrB;EAED;EACA;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC;EAClB;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC;EAED;EACA,CACE,aAAa,EAAE,IAAI,CACpB;EAED;EACA,CACE,oBAAoB,EAAE,IAAI,CAC3B,CACF,CAAC,CACH,EAED,CACE,SAAS,EAAE,IAAIA,GAAG,CAAC;EACjB;EACA;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC;EAED;EACA,CACE,oBAAoB,EAAE,IAAI,CAC3B,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC;EAClB;EACA;EACA;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,cAAc,EAAE,IAAI,CACrB,CACF,CAAC,CACH,EAED,CACE,OAAO,EAAE,IAAIA,GAAG,CAAC;EACf;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,aAAa,EAAE,IAAI,CACpB,EAED,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,OAAO,EAAE,IAAIA,GAAG,CAAC;EACf;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC,EAED,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EACD,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC;EAClB;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC,EAED,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EACD,CACE,aAAa,EAAE,IAAIA,GAAG,CAAC;EACrB;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC,EAED,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,YAAY,EAAE,IAAIA,GAAG,CAAC;EACpB;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC,EAED,CACE,cAAc,EAAE,KAAK,CACtB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EAED,CACE,QAAQ,EAAE,IAAIA,GAAG,CAAC,CAChB,CACE,cAAc,EAAER,SAAS,CAC1B,CACF,CAAC,CACH,EAED,CACE,OAAO,EAAE,IAAIQ,GAAG,CAAC;EACf;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC,EAED,CACE,cAAc,EAAE,IAAI,CACrB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EAED,CACE,MAAM,EAAE,IAAIA,GAAG,CAAC;EACd;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,OAAO,EAAE,IAAIA,GAAG,CAAC;EACf;EACA,CACE,cAAc,EAAE,IAAI,CACrB;EAED;EACA;EACA;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC,CACF,CAAC,CACH,EAED,CACE,WAAW,EAAE,IAAIA,GAAG,CAAC;EACnB;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH;EAED;EACA,CACE,QAAQ,EAAE,IAAIA,GAAG,CAAC,CAChB,CACE,aAAa,EAAEF,qBAAqB,CACrC,CACF,CAAC,CACH,EAED,CACE,SAAS,EAAE,IAAIE,GAAG,CAAC,CACjB,CACE,cAAc,EAAE,mBAAmB,CACpC,EAED,CACE,cAAc,EAAET,OAAO,CACxB,EAED,CACE,aAAa,EAAEO,qBAAqB,CACrC,CACF,CAAC,CACH,EAED,CACE,SAAS,EAAE,IAAIE,GAAG,CAAC;EACjB;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC;EAED;EACA,CACE,aAAa,EAAEH,qBAAqB,IAAIH,YAAY,CACrD,EAED,CACE,cAAc,EAAEH,OAAO,CACxB;EAED;EACA,CACE,oBAAoB,EAAEM,qBAAqB,IAAIH,YAAY,CAC5D,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIM,GAAG,CAAC;EAClB;EACA;EACA;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,cAAc,EAAE,IAAI,CACrB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EAED,CACE,OAAO,EAAE,IAAIA,GAAG,CAAC;EACf;EACA;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC,EAED,CACE,cAAc,EAAE,IAAI,CACrB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC;EAClB;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC,EAED,CACE,cAAc,EAAE,KAAK,CACtB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EACD,CAC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B,CACpC;EAED;EACA;EACA;EACA;EACA,CACE,cAAc,EAAE,IAAI,CACrB;EAED;EACA;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,SAAS,EAAE,IAAIA,GAAG,CAAC;EACjB;EACA;EACA,CACE,aAAa,EAAEF,qBAAqB,CACrC,CACF,CAAC,CACH,EAED,CACE,MAAM,EAAE,IAAIE,GAAG,CAAC,CACd,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,cAAc,EAAE,IAAI,CACrB;EAED;EACA;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC,CAClB,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA;EACA,CACE,cAAc,EAAE,IAAI,CACrB;EAED;EACA;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,WAAW,EAAE,IAAIA,GAAG,CAAC;EACnB;EACA;EACA,CACE,aAAa,EAAEF,qBAAqB,CACrC,CACF,CAAC,CACH,EAED,CACE,QAAQ,EAAE,IAAIE,GAAG,CAAC;EAChB;EACA,CACE,aAAa,EAAEF,qBAAqB,CACrC,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIE,GAAG,CAAC;EAClB;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC,EAED,CACE,cAAc,EAAE,IAAI,CACrB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EAED,CACE,SAAS,EAAE,IAAIA,GAAG,CAAC;EACjB;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EACD,CACE,QAAQ,EAAE,IAAIA,GAAG,CAAC;EAChB;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,KAAK,EAAE,IAAIA,GAAG,CAAC;EACb;EACA;EACA,CACE,cAAc,EAAE,MAAM,CACvB,CACF,CAAC,CACH,EAED,CACE,QAAQ,EAAE,IAAIA,GAAG,CAAC;EAChB;EACA,CACE,aAAa,EAAEF,qBAAqB,CACrC,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIE,GAAG,CAAC,CAClB,CACE,cAAc,EAAE,CAACR,SAAS,CAC3B,EACD,CACE,cAAc,EAAEA,SAAS,CAC1B,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIQ,GAAG,CAAC,CAClB,CACE,cAAc,EAAET,OAAO,GAAG,MAAM,GAAG,sBAAsB,CAC1D;EAED;EACA;EACA;EACA,CACE,aAAa,EAAEM,qBAAqB,IAAIH,YAAY,CACrD,CACF,CAAC,CACH,EAED,CACE,MAAM,EAAE,IAAIM,GAAG,CAAC;EACd;EACA;EACA,CACE,cAAc,EAAET,OAAO,GAAG,sBAAsB,GAAG,KAAK,CACzD,EAED,CACE,cAAc,EAAEM,qBAAqB,CACtC;EAED;EACA,CACE,oBAAoB,EAAEN,OAAO,CAC9B,CACF,CAAC,CACH,EAED,CACE,QAAQ,EAAE,IAAIS,GAAG,CAAC;EAChB;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC;EAClB;EACA,CACE,cAAc,EAAE,IAAI,CACrB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EAED,CACE,MAAM,EAAE,IAAIA,GAAG,CAAC;EACd;EACA;EACA,CACE,cAAc,EAAE,IAAI,CACrB,CACF,CAAC,CACH,EAED,CACE,SAAS,EAAE,IAAIA,GAAG,CAAC;EACjB;EACA;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA;EACA;EACA,CACE,cAAc,EAAEL,mBAAmB,CACpC;EAED;EACA;;EAEA;EACA,CACE,aAAa,EAAE,IAAI,CACpB;EAED;EACA;EACA,CACE,oBAAoB,EAAE,CAACF,YAAY,CACpC,CACF,CAAC,CACH,EAED,CACE,KAAK,EAAE,IAAIO,GAAG,CAAC;EACb;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,QAAQ,EAAE,IAAIA,GAAG,CAAC;EAChB;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EACD,CACE,OAAO,EAAE,IAAIA,GAAG,CAAC;EACf;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,CACF,CAAC;AACJ,CAAC;AAAC,eAEaX,6BAA6B;AAAA;AAAA"}
1
+ {"version":3,"file":"getDefaultTagStructureForMode.js","names":["getDefaultTagStructureForMode","mode","isJsdoc","isClosure","isTypescript","isPermissive","isJsdocOrPermissive","isJsdocOrTypescript","isTypescriptOrClosure","isClosureOrPermissive","isJsdocTypescriptOrPermissive","Map","_default","exports","default","module"],"sources":["../src/getDefaultTagStructureForMode.js"],"sourcesContent":["const getDefaultTagStructureForMode = (mode) => {\n const isJsdoc = mode === 'jsdoc';\n const isClosure = mode === 'closure';\n const isTypescript = mode === 'typescript';\n const isPermissive = mode === 'permissive';\n\n const isJsdocOrPermissive = isJsdoc || isPermissive;\n const isJsdocOrTypescript = isJsdoc || isTypescript;\n const isTypescriptOrClosure = isTypescript || isClosure;\n const isClosureOrPermissive = isClosure || isPermissive;\n const isJsdocTypescriptOrPermissive = isJsdocOrTypescript || isPermissive;\n\n // Properties:\n // `nameContents` - 'namepath-referencing'|'namepath-defining'|'text'|false\n // `typeAllowed` - boolean\n // `nameRequired` - boolean\n // `typeRequired` - boolean\n // `typeOrNameRequired` - boolean\n\n // All of `typeAllowed` have a signature with \"type\" except for\n // `augments`/`extends` (\"namepath\")\n // `param`/`arg`/`argument` (no signature)\n // `property`/`prop` (no signature)\n // `modifies` (undocumented)\n\n // None of the `nameContents: 'namepath-defining'` show as having curly\n // brackets for their name/namepath\n\n // Among `namepath-defining` and `namepath-referencing`, these do not seem\n // to allow curly brackets in their doc signature or examples (`modifies`\n // references namepaths within its type brackets and `param` is\n // name-defining but not namepath-defining, so not part of these groups)\n\n // Todo: Should support special processing for \"name\" as distinct from\n // \"namepath\" (e.g., param can't define a namepath)\n\n // Once checking inline tags:\n // Todo: Re: `typeOrNameRequired`, `@link` (or @linkcode/@linkplain) seems\n // to require a namepath OR URL and might be checked as such.\n // Todo: Should support a `tutorialID` type (for `@tutorial` block and\n // inline)\n\n return new Map([\n [\n 'alias', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'arg', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // See `param`\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'argument', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // See `param`\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'augments', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // Does not show curly brackets in either the signature or examples\n [\n 'typeAllowed', true,\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'borrows', new Map([\n // `borrows` has a different format, however, so needs special parsing;\n // seems to require both, and as \"namepath\"'s\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'callback', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples); TypeScript does not enforce but seems\n // problematic as not attached so presumably not useable without it\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // \"namepath\"\n [\n 'nameRequired', true,\n ],\n ]),\n ],\n\n [\n 'class', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Not in use, but should be this value if using to power `empty-tags`\n [\n 'nameAllowed', true,\n ],\n\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'const', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'constant', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'constructor', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'constructs', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'nameRequired', false,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'define', new Map([\n [\n 'typeRequired', isClosure,\n ],\n ]),\n ],\n\n [\n 'emits', new Map([\n // Signature seems to require a \"name\" (of an event) and no counter-examples\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'enum', new Map([\n // Has example showing curly brackets but not in doc signature\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'event', new Map([\n // The doc signature of `event` seems to require a \"name\"\n [\n 'nameRequired', true,\n ],\n\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n [\n 'nameContents', 'namepath-defining',\n ],\n ]),\n ],\n\n [\n 'exception', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n // Closure\n [\n 'export', new Map([\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'exports', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'nameRequired', isJsdoc,\n ],\n\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'extends', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // Does not show curly brackets in either the signature or examples\n [\n 'typeAllowed', isTypescriptOrClosure || isPermissive,\n ],\n\n [\n 'nameRequired', isJsdoc,\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', isTypescriptOrClosure || isPermissive,\n ],\n ]),\n ],\n\n [\n 'external', new Map([\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // \"name\" (and a special syntax for the `external` name)\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'fires', new Map([\n // Signature seems to require a \"name\" (of an event) and no\n // counter-examples\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'function', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'nameRequired', false,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n [\n 'func', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n ]),\n ],\n\n [\n 'host', new Map([\n // Appears to require a \"name\" in its signature, albeit somewhat\n // different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // See `external`\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'interface', new Map([\n // Allows for \"name\" in signature, but indicates as optional\n [\n 'nameContents',\n isJsdocTypescriptOrPermissive ? 'namepath-defining' : false,\n ],\n\n // Not in use, but should be this value if using to power `empty-tags`\n [\n 'nameAllowed', isClosure,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'internal', new Map([\n // https://www.typescriptlang.org/tsconfig/#stripInternal\n [\n 'nameContents', false,\n ],\n // Not in use, but should be this value if using to power `empty-tags`\n [\n 'nameAllowed', false,\n ],\n ]),\n ],\n\n [\n 'implements', new Map([\n // Shows curly brackets in the doc signature and examples\n // \"typeExpression\"\n [\n 'typeRequired', true,\n ],\n ]),\n ],\n\n [\n 'lends', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'listens', new Map([\n // Signature seems to require a \"name\" (of an event) and no\n // counter-examples\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'member', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Has example showing curly brackets but not in doc signature\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'memberof', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n [\n 'memberof!', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'method', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n ]),\n ],\n [\n 'mixes', new Map([\n // Signature seems to require a \"OtherObjectPath\" with no\n // counter-examples\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n // \"OtherObjectPath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'mixin', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n [\n 'nameRequired', false,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'modifies', new Map([\n // Has no documentation, but test example has curly brackets, and\n // \"name\" would be suggested rather than \"namepath\" based on example;\n // not sure if name is required\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'module', new Map([\n // Optional \"name\" and no curly brackets\n // this block impacts `no-undefined-types` and `valid-types` (search for\n // \"isNamepathDefiningTag|tagMightHaveNamepath|tagMightHaveEitherTypeOrNamePosition\")\n [\n 'nameContents', isJsdoc ? 'namepath-defining' : 'text',\n ],\n\n // Shows the signature with curly brackets but not in the example\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'name', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // \"namepath\"\n [\n 'nameRequired', true,\n ],\n\n // \"namepath\"\n [\n 'typeOrNameRequired', true,\n ],\n ]),\n ],\n\n [\n 'namespace', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Shows the signature with curly brackets but not in the example\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'package', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'param', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Though no signature provided requiring, per\n // https://jsdoc.app/tags-param.html:\n // \"The @param tag requires you to specify the name of the parameter you\n // are documenting.\"\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'private', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'prop', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // See `property`\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'property', new Map([\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // No docs indicate required, but since parallel to `param`, we treat as\n // such:\n [\n 'nameRequired', true,\n ],\n\n // Has no formal signature in the docs but shows curly brackets\n // in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'protected', new Map([\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'public', new Map([\n // Does not show a signature nor show curly brackets in the example\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'requires', new Map([\n // <someModuleName>\n [\n 'nameContents', 'namepath-referencing',\n ],\n\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'returns', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'return', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'see', new Map([\n // Signature allows for \"namepath\" or text, so user must configure to\n // 'namepath-referencing' to enforce checks\n [\n 'nameContents', 'text',\n ],\n ]),\n ],\n\n [\n 'static', new Map([\n // Does not show a signature nor show curly brackets in the example\n [\n 'typeAllowed', isClosureOrPermissive,\n ],\n ]),\n ],\n\n [\n 'suppress', new Map([\n [\n 'nameContents', !isClosure,\n ],\n [\n 'typeRequired', isClosure,\n ],\n ]),\n ],\n\n [\n 'template', new Map([\n [\n 'nameContents', isJsdoc ? 'text' : 'namepath-referencing',\n ],\n\n // Though defines `nameContents: 'namepath-defining'` in a sense, it is\n // not parseable in the same way for template (e.g., allowing commas),\n // so not adding\n [\n 'typeAllowed', isTypescriptOrClosure || isPermissive,\n ],\n ]),\n ],\n\n [\n 'this', new Map([\n // Signature seems to require a \"namepath\" (and no counter-examples)\n // Not used with namepath in Closure/TypeScript, however\n [\n 'nameContents', isJsdoc ? 'namepath-referencing' : false,\n ],\n\n [\n 'typeRequired', isTypescriptOrClosure,\n ],\n\n // namepath\n [\n 'typeOrNameRequired', isJsdoc,\n ],\n ]),\n ],\n\n [\n 'throws', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'tutorial', new Map([\n // (a tutorial ID)\n [\n 'nameRequired', true,\n ],\n\n [\n 'typeAllowed', false,\n ],\n ]),\n ],\n\n [\n 'type', new Map([\n // Shows curly brackets in the doc signature and examples\n // \"typeName\"\n [\n 'typeRequired', true,\n ],\n ]),\n ],\n\n [\n 'typedef', new Map([\n // Seems to require a \"namepath\" in the signature (with no\n // counter-examples)\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // TypeScript may allow it to be dropped if followed by @property or @member;\n // also shown as missing in Closure\n // \"namepath\"\n [\n 'nameRequired', isJsdocOrPermissive,\n ],\n\n // Is not `typeRequired` for TypeScript because it gives an error:\n // JSDoc '@typedef' tag should either have a type annotation or be followed by '@property' or '@member' tags.\n\n // Has example showing curly brackets but not in doc signature\n [\n 'typeAllowed', true,\n ],\n\n // TypeScript may allow it to be dropped if followed by @property or @member\n // \"namepath\"\n [\n 'typeOrNameRequired', !isTypescript,\n ],\n ]),\n ],\n\n [\n 'var', new Map([\n // Allows for \"name\"'s in signature, but indicated as optional\n [\n 'nameContents', 'namepath-defining',\n ],\n\n // Has example showing curly brackets but not in doc signature\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n\n [\n 'yields', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n [\n 'yield', new Map([\n // Shows curly brackets in the signature and in the examples\n [\n 'typeAllowed', true,\n ],\n ]),\n ],\n ]);\n};\n\nexport default getDefaultTagStructureForMode;\n"],"mappings":";;;;;;AAAA,MAAMA,6BAA6B,GAAIC,IAAI,IAAK;EAC9C,MAAMC,OAAO,GAAGD,IAAI,KAAK,OAAO;EAChC,MAAME,SAAS,GAAGF,IAAI,KAAK,SAAS;EACpC,MAAMG,YAAY,GAAGH,IAAI,KAAK,YAAY;EAC1C,MAAMI,YAAY,GAAGJ,IAAI,KAAK,YAAY;EAE1C,MAAMK,mBAAmB,GAAGJ,OAAO,IAAIG,YAAY;EACnD,MAAME,mBAAmB,GAAGL,OAAO,IAAIE,YAAY;EACnD,MAAMI,qBAAqB,GAAGJ,YAAY,IAAID,SAAS;EACvD,MAAMM,qBAAqB,GAAGN,SAAS,IAAIE,YAAY;EACvD,MAAMK,6BAA6B,GAAGH,mBAAmB,IAAIF,YAAY;;EAEzE;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;;EAEA;EACA;;EAEA;EACA;EACA;EACA;;EAEA;EACA;;EAEA;EACA;EACA;EACA;EACA;;EAEA,OAAO,IAAIM,GAAG,CAAC,CACb,CACE,OAAO,EAAE,IAAIA,GAAG,CAAC;EACf;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC;EAED;EACA,CACE,oBAAoB,EAAE,IAAI,CAC3B,CACF,CAAC,CACH,EAED,CACE,KAAK,EAAE,IAAIA,GAAG,CAAC,CACb,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,cAAc,EAAE,IAAI,CACrB;EAED;EACA;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC,CAClB,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,cAAc,EAAE,IAAI,CACrB;EAED;EACA;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC;EAClB;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC;EAED;EACA,CACE,aAAa,EAAE,IAAI,CACpB;EAED;EACA,CACE,oBAAoB,EAAE,IAAI,CAC3B,CACF,CAAC,CACH,EAED,CACE,SAAS,EAAE,IAAIA,GAAG,CAAC;EACjB;EACA;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC;EAED;EACA,CACE,oBAAoB,EAAE,IAAI,CAC3B,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC;EAClB;EACA;EACA;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,cAAc,EAAE,IAAI,CACrB,CACF,CAAC,CACH,EAED,CACE,OAAO,EAAE,IAAIA,GAAG,CAAC;EACf;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,aAAa,EAAE,IAAI,CACpB,EAED,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,OAAO,EAAE,IAAIA,GAAG,CAAC;EACf;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC,EAED,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EACD,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC;EAClB;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC,EAED,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EACD,CACE,aAAa,EAAE,IAAIA,GAAG,CAAC;EACrB;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC,EAED,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,YAAY,EAAE,IAAIA,GAAG,CAAC;EACpB;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC,EAED,CACE,cAAc,EAAE,KAAK,CACtB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EAED,CACE,QAAQ,EAAE,IAAIA,GAAG,CAAC,CAChB,CACE,cAAc,EAAER,SAAS,CAC1B,CACF,CAAC,CACH,EAED,CACE,OAAO,EAAE,IAAIQ,GAAG,CAAC;EACf;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC,EAED,CACE,cAAc,EAAE,IAAI,CACrB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EAED,CACE,MAAM,EAAE,IAAIA,GAAG,CAAC;EACd;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,OAAO,EAAE,IAAIA,GAAG,CAAC;EACf;EACA,CACE,cAAc,EAAE,IAAI,CACrB;EAED;EACA;EACA;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC,CACF,CAAC,CACH,EAED,CACE,WAAW,EAAE,IAAIA,GAAG,CAAC;EACnB;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH;EAED;EACA,CACE,QAAQ,EAAE,IAAIA,GAAG,CAAC,CAChB,CACE,aAAa,EAAEF,qBAAqB,CACrC,CACF,CAAC,CACH,EAED,CACE,SAAS,EAAE,IAAIE,GAAG,CAAC,CACjB,CACE,cAAc,EAAE,mBAAmB,CACpC,EAED,CACE,cAAc,EAAET,OAAO,CACxB,EAED,CACE,aAAa,EAAEO,qBAAqB,CACrC,CACF,CAAC,CACH,EAED,CACE,SAAS,EAAE,IAAIE,GAAG,CAAC;EACjB;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC;EAED;EACA,CACE,aAAa,EAAEH,qBAAqB,IAAIH,YAAY,CACrD,EAED,CACE,cAAc,EAAEH,OAAO,CACxB;EAED;EACA,CACE,oBAAoB,EAAEM,qBAAqB,IAAIH,YAAY,CAC5D,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIM,GAAG,CAAC;EAClB;EACA;EACA;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,cAAc,EAAE,IAAI,CACrB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EAED,CACE,OAAO,EAAE,IAAIA,GAAG,CAAC;EACf;EACA;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC,EAED,CACE,cAAc,EAAE,IAAI,CACrB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC;EAClB;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC,EAED,CACE,cAAc,EAAE,KAAK,CACtB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EACD,CAC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B,CACpC;EAED;EACA;EACA;EACA;EACA,CACE,cAAc,EAAE,IAAI,CACrB;EAED;EACA;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,SAAS,EAAE,IAAIA,GAAG,CAAC;EACjB;EACA;EACA,CACE,aAAa,EAAEF,qBAAqB,CACrC,CACF,CAAC,CACH,EAED,CACE,MAAM,EAAE,IAAIE,GAAG,CAAC,CACd,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,cAAc,EAAE,IAAI,CACrB;EAED;EACA;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC,CAClB,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA;EACA,CACE,cAAc,EAAE,IAAI,CACrB;EAED;EACA;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,WAAW,EAAE,IAAIA,GAAG,CAAC;EACnB;EACA;EACA,CACE,aAAa,EAAEF,qBAAqB,CACrC,CACF,CAAC,CACH,EAED,CACE,QAAQ,EAAE,IAAIE,GAAG,CAAC;EAChB;EACA,CACE,aAAa,EAAEF,qBAAqB,CACrC,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIE,GAAG,CAAC;EAClB;EACA,CACE,cAAc,EAAE,sBAAsB,CACvC,EAED,CACE,cAAc,EAAE,IAAI,CACrB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EAED,CACE,SAAS,EAAE,IAAIA,GAAG,CAAC;EACjB;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EACD,CACE,QAAQ,EAAE,IAAIA,GAAG,CAAC;EAChB;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,KAAK,EAAE,IAAIA,GAAG,CAAC;EACb;EACA;EACA,CACE,cAAc,EAAE,MAAM,CACvB,CACF,CAAC,CACH,EAED,CACE,QAAQ,EAAE,IAAIA,GAAG,CAAC;EAChB;EACA,CACE,aAAa,EAAEF,qBAAqB,CACrC,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIE,GAAG,CAAC,CAClB,CACE,cAAc,EAAE,CAACR,SAAS,CAC3B,EACD,CACE,cAAc,EAAEA,SAAS,CAC1B,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIQ,GAAG,CAAC,CAClB,CACE,cAAc,EAAET,OAAO,GAAG,MAAM,GAAG,sBAAsB,CAC1D;EAED;EACA;EACA;EACA,CACE,aAAa,EAAEM,qBAAqB,IAAIH,YAAY,CACrD,CACF,CAAC,CACH,EAED,CACE,MAAM,EAAE,IAAIM,GAAG,CAAC;EACd;EACA;EACA,CACE,cAAc,EAAET,OAAO,GAAG,sBAAsB,GAAG,KAAK,CACzD,EAED,CACE,cAAc,EAAEM,qBAAqB,CACtC;EAED;EACA,CACE,oBAAoB,EAAEN,OAAO,CAC9B,CACF,CAAC,CACH,EAED,CACE,QAAQ,EAAE,IAAIS,GAAG,CAAC;EAChB;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,UAAU,EAAE,IAAIA,GAAG,CAAC;EAClB;EACA,CACE,cAAc,EAAE,IAAI,CACrB,EAED,CACE,aAAa,EAAE,KAAK,CACrB,CACF,CAAC,CACH,EAED,CACE,MAAM,EAAE,IAAIA,GAAG,CAAC;EACd;EACA;EACA,CACE,cAAc,EAAE,IAAI,CACrB,CACF,CAAC,CACH,EAED,CACE,SAAS,EAAE,IAAIA,GAAG,CAAC;EACjB;EACA;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA;EACA;EACA,CACE,cAAc,EAAEL,mBAAmB,CACpC;EAED;EACA;;EAEA;EACA,CACE,aAAa,EAAE,IAAI,CACpB;EAED;EACA;EACA,CACE,oBAAoB,EAAE,CAACF,YAAY,CACpC,CACF,CAAC,CACH,EAED,CACE,KAAK,EAAE,IAAIO,GAAG,CAAC;EACb;EACA,CACE,cAAc,EAAE,mBAAmB,CACpC;EAED;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EAED,CACE,QAAQ,EAAE,IAAIA,GAAG,CAAC;EAChB;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,EACD,CACE,OAAO,EAAE,IAAIA,GAAG,CAAC;EACf;EACA,CACE,aAAa,EAAE,IAAI,CACpB,CACF,CAAC,CACH,CACF,CAAC;AACJ,CAAC;AAAC,IAAAC,QAAA,GAEaZ,6BAA6B;AAAAa,OAAA,CAAAC,OAAA,GAAAF,QAAA;AAAAG,MAAA,CAAAF,OAAA,GAAAA,OAAA,CAAAC,OAAA"}