eslint-plugin-jsdoc 36.0.5 → 36.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -15
- package/dist/alignTransform.js +4 -3
- package/dist/alignTransform.js.map +1 -1
- package/dist/iterateJsdoc.js +20 -12
- package/dist/iterateJsdoc.js.map +1 -1
- package/dist/rules/checkValues.js +1 -1
- package/dist/rules/checkValues.js.map +1 -1
- package/dist/rules/tagLines.js +10 -12
- package/dist/rules/tagLines.js.map +1 -1
- package/package.json +18 -18
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ JSDoc linting rules for ESLint.
|
|
|
18
18
|
* [`maxLines` and `minLines`](#eslint-plugin-jsdoc-settings-maxlines-and-minlines)
|
|
19
19
|
* [Mode](#eslint-plugin-jsdoc-settings-mode)
|
|
20
20
|
* [Alias Preference](#eslint-plugin-jsdoc-settings-alias-preference)
|
|
21
|
-
* [`@override`/`@augments`/`@extends`/`@implements` Without Accompanying `@param`/`@description`/`@example`/`@returns`](#eslint-plugin-jsdoc-settings-override-augments-extends-implements-without-accompanying-param-description-example-returns)
|
|
21
|
+
* [`@override`/`@augments`/`@extends`/`@implements`/`@ignore` Without Accompanying `@param`/`@description`/`@example`/`@returns`/`@throws`/`@yields`](#eslint-plugin-jsdoc-settings-override-augments-extends-implements-ignore-without-accompanying-param-description-example-returns-throws-yields)
|
|
22
22
|
* [Settings to Configure `check-types` and `no-undefined-types`](#eslint-plugin-jsdoc-settings-settings-to-configure-check-types-and-no-undefined-types)
|
|
23
23
|
* [`structuredTags`](#eslint-plugin-jsdoc-settings-structuredtags)
|
|
24
24
|
* [Advanced](#eslint-plugin-jsdoc-advanced)
|
|
@@ -389,14 +389,15 @@ This setting is utilized by the the rule for tag name checking
|
|
|
389
389
|
- `require-returns-description`
|
|
390
390
|
- `require-returns-type`
|
|
391
391
|
|
|
392
|
-
<a name="eslint-plugin-jsdoc-settings-override-augments-extends-implements-without-accompanying-param-description-example-returns"></a>
|
|
393
|
-
### <code>@override</code>/<code>@augments</code>/<code>@extends</code>/<code>@implements</code> Without Accompanying <code>@param</code>/<code>@description</code>/<code>@example</code>/<code>@returns</code>
|
|
392
|
+
<a name="eslint-plugin-jsdoc-settings-override-augments-extends-implements-ignore-without-accompanying-param-description-example-returns-throws-yields"></a>
|
|
393
|
+
### <code>@override</code>/<code>@augments</code>/<code>@extends</code>/<code>@implements</code>/<code>@ignore</code> Without Accompanying <code>@param</code>/<code>@description</code>/<code>@example</code>/<code>@returns</code>/<code>@throws</code>/<code>@yields</code>
|
|
394
394
|
|
|
395
395
|
The following settings allows the element(s) they reference to be omitted
|
|
396
396
|
on the JSDoc comment block of the function or that of its parent class
|
|
397
397
|
for any of the "require" rules (i.e., `require-param`, `require-description`,
|
|
398
|
-
`require-example`,
|
|
398
|
+
`require-example`, `require-returns`, `require-throws`, `require-yields`).
|
|
399
399
|
|
|
400
|
+
* `settings.jsdoc.ignoreReplacesDocs` (`@ignore`) - Defaults to `true`
|
|
400
401
|
* `settings.jsdoc.overrideReplacesDocs` (`@override`) - Defaults to `true`
|
|
401
402
|
* `settings.jsdoc.augmentsExtendsReplacesDocs` (`@augments` or its alias
|
|
402
403
|
`@extends`) - Defaults to `false`.
|
|
@@ -409,6 +410,7 @@ The format of the configuration is as follows:
|
|
|
409
410
|
"rules": {},
|
|
410
411
|
"settings": {
|
|
411
412
|
"jsdoc": {
|
|
413
|
+
"ignoreReplacesDocs": true,
|
|
412
414
|
"overrideReplacesDocs": true,
|
|
413
415
|
"augmentsExtendsReplacesDocs": true,
|
|
414
416
|
"implementsReplacesDocs": true
|
|
@@ -4770,10 +4772,12 @@ footprint is a tiny little bit smaller, and the
|
|
|
4770
4772
|
[GC](https://en.wikipedia.org/wiki/Garbage_collection_(computer_science)) has
|
|
4771
4773
|
less work to do.
|
|
4772
4774
|
|
|
4773
|
-
So in a sense, there two types of strings in Javascript
|
|
4774
|
-
|
|
4775
|
-
|
|
4776
|
-
|
|
4775
|
+
So in a sense, there are two types of strings in Javascript:
|
|
4776
|
+
1. `{string}` literals, also called primitives
|
|
4777
|
+
2. `{String}` Objects.
|
|
4778
|
+
|
|
4779
|
+
We use the primitives because it's easier to write and uses less memory.
|
|
4780
|
+
`{String}` and `{string}` are technically both valid, but they are not the same.
|
|
4777
4781
|
|
|
4778
4782
|
```js
|
|
4779
4783
|
new String('lard') // String {0: "l", 1: "a", 2: "r", 3: "d", length: 4}
|
|
@@ -5735,7 +5739,7 @@ If present as an array, will be used in place of SPDX identifiers.
|
|
|
5735
5739
|
A string to be converted into a `RegExp` (with `u` flag) and whose first
|
|
5736
5740
|
parenthetical grouping, if present, will match the portion of the license
|
|
5737
5741
|
description to check (if no grouping is present, then the whole portion
|
|
5738
|
-
matched will be used). Defaults to `/([^\n]*)/gu`, i.e., the SPDX expression
|
|
5742
|
+
matched will be used). Defaults to `/([^\n\r]*)/gu`, i.e., the SPDX expression
|
|
5739
5743
|
is expected before any line breaks.
|
|
5740
5744
|
|
|
5741
5745
|
Note that the `/` delimiters are optional, but necessary to add flags.
|
|
@@ -5997,6 +6001,12 @@ function quux (foo) {
|
|
|
5997
6001
|
function quux (foo) {
|
|
5998
6002
|
|
|
5999
6003
|
}
|
|
6004
|
+
|
|
6005
|
+
/**
|
|
6006
|
+
* @module test
|
|
6007
|
+
* @license MIT
|
|
6008
|
+
*/
|
|
6009
|
+
'use strict';
|
|
6000
6010
|
````
|
|
6001
6011
|
|
|
6002
6012
|
|
|
@@ -10739,7 +10749,7 @@ An options object may have any of the following properties:
|
|
|
10739
10749
|
| Aliases | `desc` |
|
|
10740
10750
|
| Recommended | false |
|
|
10741
10751
|
| Options | `contexts`, `exemptedBy`, `descriptionStyle`, `checkConstructors`, `checkGetters`, `checkSetters` |
|
|
10742
|
-
| Settings | `overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs` |
|
|
10752
|
+
| Settings | `ignoreReplacesDocs`, `overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs` |
|
|
10743
10753
|
|
|
10744
10754
|
The following patterns are considered problems:
|
|
10745
10755
|
|
|
@@ -11318,7 +11328,7 @@ report a missing example description after this is added.
|
|
|
11318
11328
|
|Tags|`example`|
|
|
11319
11329
|
|Recommended|false|
|
|
11320
11330
|
|Options|`exemptedBy`, `exemptNoArguments`, `avoidExampleOnConstructors`, `contexts`|
|
|
11321
|
-
|Settings|`overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs`|
|
|
11331
|
+
|Settings|`ignoreReplacesDocs`, `overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs`|
|
|
11322
11332
|
|
|
11323
11333
|
The following patterns are considered problems:
|
|
11324
11334
|
|
|
@@ -14523,7 +14533,7 @@ supplied as default values. Defaults to `false`.
|
|
|
14523
14533
|
| Aliases | `arg`, `argument` |
|
|
14524
14534
|
|Recommended | true|
|
|
14525
14535
|
| Options | `autoIncrementBase`, `checkDestructured`, `checkDestructuredRoots`, `contexts`, `enableFixer`, `enableRootFixer`, `enableRestElementFixer`, `checkRestProperty`, `exemptedBy`, `checkConstructors`, `checkGetters`, `checkSetters`, `checkTypesPattern`, `unnamedRootBase`, `useDefaultObjectProperties`|
|
|
14526
|
-
| Settings | `overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs`|
|
|
14536
|
+
| Settings | `ignoreReplacesDocs`, `overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs`|
|
|
14527
14537
|
|
|
14528
14538
|
The following patterns are considered problems:
|
|
14529
14539
|
|
|
@@ -14715,6 +14725,15 @@ function quux (foo) {
|
|
|
14715
14725
|
// Settings: {"jsdoc":{"overrideReplacesDocs":false}}
|
|
14716
14726
|
// Message: Missing JSDoc @param "foo" declaration.
|
|
14717
14727
|
|
|
14728
|
+
/**
|
|
14729
|
+
* @ignore
|
|
14730
|
+
*/
|
|
14731
|
+
function quux (foo) {
|
|
14732
|
+
|
|
14733
|
+
}
|
|
14734
|
+
// Settings: {"jsdoc":{"ignoreReplacesDocs":false}}
|
|
14735
|
+
// Message: Missing JSDoc @param "foo" declaration.
|
|
14736
|
+
|
|
14718
14737
|
/**
|
|
14719
14738
|
* @implements
|
|
14720
14739
|
*/
|
|
@@ -14754,6 +14773,20 @@ class A {
|
|
|
14754
14773
|
// Settings: {"jsdoc":{"overrideReplacesDocs":false}}
|
|
14755
14774
|
// Message: Missing JSDoc @param "foo" declaration.
|
|
14756
14775
|
|
|
14776
|
+
/**
|
|
14777
|
+
* @ignore
|
|
14778
|
+
*/
|
|
14779
|
+
class A {
|
|
14780
|
+
/**
|
|
14781
|
+
*
|
|
14782
|
+
*/
|
|
14783
|
+
quux (foo) {
|
|
14784
|
+
|
|
14785
|
+
}
|
|
14786
|
+
}
|
|
14787
|
+
// Settings: {"jsdoc":{"ignoreReplacesDocs":false}}
|
|
14788
|
+
// Message: Missing JSDoc @param "foo" declaration.
|
|
14789
|
+
|
|
14757
14790
|
/**
|
|
14758
14791
|
* @implements
|
|
14759
14792
|
*/
|
|
@@ -15294,6 +15327,14 @@ function quux (foo) {
|
|
|
15294
15327
|
}
|
|
15295
15328
|
// Settings: {"jsdoc":{"overrideReplacesDocs":true}}
|
|
15296
15329
|
|
|
15330
|
+
/**
|
|
15331
|
+
* @ignore
|
|
15332
|
+
*/
|
|
15333
|
+
function quux (foo) {
|
|
15334
|
+
|
|
15335
|
+
}
|
|
15336
|
+
// Settings: {"jsdoc":{"ignoreReplacesDocs":true}}
|
|
15337
|
+
|
|
15297
15338
|
/**
|
|
15298
15339
|
* @implements
|
|
15299
15340
|
*/
|
|
@@ -15402,6 +15443,19 @@ class A {
|
|
|
15402
15443
|
}
|
|
15403
15444
|
// Settings: {"jsdoc":{"overrideReplacesDocs":true}}
|
|
15404
15445
|
|
|
15446
|
+
/**
|
|
15447
|
+
* @ignore
|
|
15448
|
+
*/
|
|
15449
|
+
class A {
|
|
15450
|
+
/**
|
|
15451
|
+
*
|
|
15452
|
+
*/
|
|
15453
|
+
quux (foo) {
|
|
15454
|
+
|
|
15455
|
+
}
|
|
15456
|
+
}
|
|
15457
|
+
// Settings: {"jsdoc":{"ignoreReplacesDocs":true}}
|
|
15458
|
+
|
|
15405
15459
|
/**
|
|
15406
15460
|
* @implements
|
|
15407
15461
|
*/
|
|
@@ -17003,7 +17057,7 @@ Will also report if multiple `@returns` tags are present.
|
|
|
17003
17057
|
| Aliases | `return` |
|
|
17004
17058
|
|Recommended|true|
|
|
17005
17059
|
| Options | `checkConstructors`, `checkGetters`, `contexts`, `exemptedBy`, `forceRequireReturn`, `forceReturnsWithAsync` |
|
|
17006
|
-
| Settings | `overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs` |
|
|
17060
|
+
| Settings | `ignoreReplacesDocs`, `overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs` |
|
|
17007
17061
|
|
|
17008
17062
|
The following patterns are considered problems:
|
|
17009
17063
|
|
|
@@ -18047,7 +18101,7 @@ Requires that throw statements are documented.
|
|
|
18047
18101
|
| Aliases | `exception` |
|
|
18048
18102
|
|Recommended|true|
|
|
18049
18103
|
| Options | `contexts`, `exemptedBy` |
|
|
18050
|
-
| Settings | `overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs` |
|
|
18104
|
+
| Settings | `ignoreReplacesDocs`, `overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs` |
|
|
18051
18105
|
|
|
18052
18106
|
The following patterns are considered problems:
|
|
18053
18107
|
|
|
@@ -18357,7 +18411,7 @@ option to expect a non-standard `@next` tag.
|
|
|
18357
18411
|
|Aliases|`yield`|
|
|
18358
18412
|
|Recommended|true|
|
|
18359
18413
|
| Options | `contexts`, `exemptedBy`, `withGeneratorTag`, `nextWithGeneratorTag`, `forceRequireYields`, `next` |
|
|
18360
|
-
| Settings | `overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs` |
|
|
18414
|
+
| Settings | `ignoreReplacesDocs`, `overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs` |
|
|
18361
18415
|
|
|
18362
18416
|
The following patterns are considered problems:
|
|
18363
18417
|
|
package/dist/alignTransform.js
CHANGED
|
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _jsdoccomment = require("@es-joy/jsdoccomment");
|
|
9
|
-
|
|
10
8
|
var _commentParser = require("comment-parser");
|
|
11
9
|
|
|
12
10
|
/**
|
|
@@ -14,6 +12,9 @@ var _commentParser = require("comment-parser");
|
|
|
14
12
|
*
|
|
15
13
|
* It contains some customizations to align based on the tags, and some custom options.
|
|
16
14
|
*/
|
|
15
|
+
const {
|
|
16
|
+
rewireSource
|
|
17
|
+
} = _commentParser.util;
|
|
17
18
|
const zeroWidth = {
|
|
18
19
|
name: 0,
|
|
19
20
|
start: 0,
|
|
@@ -201,7 +202,7 @@ const alignTransform = ({
|
|
|
201
202
|
}) => {
|
|
202
203
|
width = source.reduce(getWidth(tags), { ...zeroWidth
|
|
203
204
|
});
|
|
204
|
-
return
|
|
205
|
+
return rewireSource({ ...fields,
|
|
205
206
|
source: source.map(update)
|
|
206
207
|
});
|
|
207
208
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/alignTransform.js"],"names":["zeroWidth","name","start","tag","type","shouldAlign","tags","index","source","tokens","replace","includesTag","includes","iterator","previousTag","getWidth","width","Math","max","length","delimiter","Markers","space","len","padStart","alignTransform","customSpacings","indent","preserveMainDescriptionPostDelimiter","intoTags","alignTokens","nothingAfter","delim","description","postName","postType","postTag","spacings","postDelimiter","update","line","isEmpty","end","fields","reduce","map"],"mappings":"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","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/util` re-exports\n rewireSource,\n} from '@es-joy/jsdoccomment';\nimport {\n\n // `comment-parser/primitives` export\n Markers,\n} from 'comment-parser';\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, {tokens}, 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 space = (len) => {\n return ''.padStart(len, ' ');\n};\n\nconst alignTransform = ({\n customSpacings,\n tags,\n indent,\n preserveMainDescriptionPostDelimiter,\n}) => {\n let intoTags = false;\n let width;\n\n const alignTokens = (tokens) => {\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 // 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 if (!nothingAfter.type) {\n tokens.postType = space(width.type - tokens.type.length + spacings.postType);\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);\n }\n\n return tokens;\n };\n\n const update = (line, index, source) => {\n const tokens = {...line.tokens};\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 /* eslint-disable indent */\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 /* eslint-enable */\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 // Not align.\n if (!shouldAlign(tags, index, source)) {\n return {\n ...line,\n tokens,\n };\n }\n\n return {\n ...line,\n tokens: alignTokens(tokens),\n };\n };\n\n return ({source, ...fields}) => {\n width = source.reduce(getWidth(tags), {...zeroWidth});\n\n return rewireSource({\n ...fields,\n source: source.map(update),\n });\n };\n};\n\nexport default alignTransform;\n"],"file":"alignTransform.js"}
|
|
1
|
+
{"version":3,"sources":["../src/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","space","len","padStart","alignTransform","customSpacings","indent","preserveMainDescriptionPostDelimiter","intoTags","alignTokens","nothingAfter","delim","description","postName","postType","postTag","spacings","postDelimiter","update","line","isEmpty","end","fields","reduce","map"],"mappings":"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","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 {rewireSource} = 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, {tokens}, 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 space = (len) => {\n return ''.padStart(len, ' ');\n};\n\nconst alignTransform = ({\n customSpacings,\n tags,\n indent,\n preserveMainDescriptionPostDelimiter,\n}) => {\n let intoTags = false;\n let width;\n\n const alignTokens = (tokens) => {\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 // 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 if (!nothingAfter.type) {\n tokens.postType = space(width.type - tokens.type.length + spacings.postType);\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);\n }\n\n return tokens;\n };\n\n const update = (line, index, source) => {\n const tokens = {...line.tokens};\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 /* eslint-disable indent */\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 /* eslint-enable */\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 // Not align.\n if (!shouldAlign(tags, index, source)) {\n return {\n ...line,\n tokens,\n };\n }\n\n return {\n ...line,\n tokens: alignTokens(tokens),\n };\n };\n\n return ({source, ...fields}) => {\n width = source.reduce(getWidth(tags), {...zeroWidth});\n\n return rewireSource({\n ...fields,\n source: source.map(update),\n });\n };\n};\n\nexport default alignTransform;\n"],"file":"alignTransform.js"}
|
package/dist/iterateJsdoc.js
CHANGED
|
@@ -22,6 +22,10 @@ var _jsdocUtils = _interopRequireDefault(require("./jsdocUtils"));
|
|
|
22
22
|
|
|
23
23
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
24
|
|
|
25
|
+
const {
|
|
26
|
+
rewireSpecs,
|
|
27
|
+
seedTokens
|
|
28
|
+
} = _commentParser.util;
|
|
25
29
|
/*
|
|
26
30
|
const {
|
|
27
31
|
align as commentAlign,
|
|
@@ -29,6 +33,7 @@ const {
|
|
|
29
33
|
indent: commentIndent,
|
|
30
34
|
} = transforms;
|
|
31
35
|
*/
|
|
36
|
+
|
|
32
37
|
const globalState = new Map();
|
|
33
38
|
|
|
34
39
|
const getBasicUtils = (context, {
|
|
@@ -82,6 +87,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
|
|
|
82
87
|
const {
|
|
83
88
|
tagNamePreference,
|
|
84
89
|
overrideReplacesDocs,
|
|
90
|
+
ignoreReplacesDocs,
|
|
85
91
|
implementsReplacesDocs,
|
|
86
92
|
augmentsExtendsReplacesDocs,
|
|
87
93
|
maxLines,
|
|
@@ -98,7 +104,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
|
|
|
98
104
|
};
|
|
99
105
|
|
|
100
106
|
utils.stringify = (tagBlock, specRewire) => {
|
|
101
|
-
return (0, _commentParser.stringify)(specRewire ?
|
|
107
|
+
return (0, _commentParser.stringify)(specRewire ? rewireSpecs(tagBlock) : tagBlock);
|
|
102
108
|
};
|
|
103
109
|
|
|
104
110
|
utils.reportJSDoc = (msg, tag, handler, specRewire, data) => {
|
|
@@ -183,7 +189,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
|
|
|
183
189
|
tag.source = [{
|
|
184
190
|
// Or tag.source[0].number?
|
|
185
191
|
number: tag.line,
|
|
186
|
-
tokens:
|
|
192
|
+
tokens: seedTokens({
|
|
187
193
|
delimiter: '*',
|
|
188
194
|
postDelimiter: ' ',
|
|
189
195
|
start: indent + ' ',
|
|
@@ -251,7 +257,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
|
|
|
251
257
|
jsdoc.source.splice(number, 0, {
|
|
252
258
|
number,
|
|
253
259
|
source: '',
|
|
254
|
-
tokens:
|
|
260
|
+
tokens: seedTokens({
|
|
255
261
|
delimiter: '*',
|
|
256
262
|
postDelimiter: ' ',
|
|
257
263
|
start: indent + ' ',
|
|
@@ -263,7 +269,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
|
|
|
263
269
|
});
|
|
264
270
|
};
|
|
265
271
|
|
|
266
|
-
utils.seedTokens =
|
|
272
|
+
utils.seedTokens = seedTokens;
|
|
267
273
|
|
|
268
274
|
utils.emptyTokens = tokens => {
|
|
269
275
|
['start', 'postDelimiter', 'tag', 'type', 'postType', 'postTag', 'name', 'postName', 'description', 'end', 'lineEnd'].forEach(prop => {
|
|
@@ -278,7 +284,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
|
|
|
278
284
|
jsdoc.source.splice(sourceIndex, 0, {
|
|
279
285
|
number,
|
|
280
286
|
source: '',
|
|
281
|
-
tokens:
|
|
287
|
+
tokens: seedTokens(tokens)
|
|
282
288
|
}); // If necessary, we can rewire the tags (misnamed method)
|
|
283
289
|
// rewireSource(jsdoc);
|
|
284
290
|
};
|
|
@@ -296,7 +302,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
|
|
|
296
302
|
return {
|
|
297
303
|
number,
|
|
298
304
|
source: '',
|
|
299
|
-
tokens:
|
|
305
|
+
tokens: seedTokens({
|
|
300
306
|
delimiter: '*',
|
|
301
307
|
start: indent + ' '
|
|
302
308
|
})
|
|
@@ -471,7 +477,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
|
|
|
471
477
|
utils.avoidDocs = () => {
|
|
472
478
|
var _context$options$0$ex, _context$options$;
|
|
473
479
|
|
|
474
|
-
if (overrideReplacesDocs !== false && (utils.hasTag('override') || utils.classHasTag('override')) || implementsReplacesDocs !== false && (utils.hasTag('implements') || utils.classHasTag('implements')) || augmentsExtendsReplacesDocs && (utils.hasATag(['augments', 'extends']) || utils.classHasTag('augments') || utils.classHasTag('extends'))) {
|
|
480
|
+
if (ignoreReplacesDocs !== false && (utils.hasTag('ignore') || utils.classHasTag('ignore')) || overrideReplacesDocs !== false && (utils.hasTag('override') || utils.classHasTag('override')) || implementsReplacesDocs !== false && (utils.hasTag('implements') || utils.classHasTag('implements')) || augmentsExtendsReplacesDocs && (utils.hasATag(['augments', 'extends']) || utils.classHasTag('augments') || utils.classHasTag('extends'))) {
|
|
475
481
|
return true;
|
|
476
482
|
}
|
|
477
483
|
|
|
@@ -646,7 +652,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
|
|
|
646
652
|
};
|
|
647
653
|
|
|
648
654
|
const getSettings = context => {
|
|
649
|
-
var _context$settings$jsd, _context$settings$jsd2, _context$settings$jsd3, _context$settings$jsd4, _context$settings$jsd5, _context$settings$jsd6, _context$settings$jsd7, _context$settings$jsd8, _context$settings$jsd9, _context$settings$jsd10, _context$settings$jsd11, _context$settings$jsd12, _context$settings$jsd13, _context$settings$jsd14, _context$settings$jsd15, _context$settings$jsd16, _context$settings$jsd17;
|
|
655
|
+
var _context$settings$jsd, _context$settings$jsd2, _context$settings$jsd3, _context$settings$jsd4, _context$settings$jsd5, _context$settings$jsd6, _context$settings$jsd7, _context$settings$jsd8, _context$settings$jsd9, _context$settings$jsd10, _context$settings$jsd11, _context$settings$jsd12, _context$settings$jsd13, _context$settings$jsd14, _context$settings$jsd15, _context$settings$jsd16, _context$settings$jsd17, _context$settings$jsd18;
|
|
650
656
|
|
|
651
657
|
/* eslint-disable sort-keys-fix/sort-keys-fix */
|
|
652
658
|
const settings = {
|
|
@@ -661,12 +667,14 @@ const getSettings = context => {
|
|
|
661
667
|
preferredTypes: (_context$settings$jsd9 = (_context$settings$jsd10 = context.settings.jsdoc) === null || _context$settings$jsd10 === void 0 ? void 0 : _context$settings$jsd10.preferredTypes) !== null && _context$settings$jsd9 !== void 0 ? _context$settings$jsd9 : {},
|
|
662
668
|
// `check-types`, `no-undefined-types`, `valid-types`
|
|
663
669
|
structuredTags: (_context$settings$jsd11 = (_context$settings$jsd12 = context.settings.jsdoc) === null || _context$settings$jsd12 === void 0 ? void 0 : _context$settings$jsd12.structuredTags) !== null && _context$settings$jsd11 !== void 0 ? _context$settings$jsd11 : {},
|
|
664
|
-
// `require-param`, `require-description`, `require-example`,
|
|
670
|
+
// `require-param`, `require-description`, `require-example`,
|
|
671
|
+
// `require-returns`, `require-throw`, `require-yields`
|
|
665
672
|
overrideReplacesDocs: (_context$settings$jsd13 = context.settings.jsdoc) === null || _context$settings$jsd13 === void 0 ? void 0 : _context$settings$jsd13.overrideReplacesDocs,
|
|
666
|
-
|
|
667
|
-
|
|
673
|
+
ignoreReplacesDocs: (_context$settings$jsd14 = context.settings.jsdoc) === null || _context$settings$jsd14 === void 0 ? void 0 : _context$settings$jsd14.ignoreReplacesDocs,
|
|
674
|
+
implementsReplacesDocs: (_context$settings$jsd15 = context.settings.jsdoc) === null || _context$settings$jsd15 === void 0 ? void 0 : _context$settings$jsd15.implementsReplacesDocs,
|
|
675
|
+
augmentsExtendsReplacesDocs: (_context$settings$jsd16 = context.settings.jsdoc) === null || _context$settings$jsd16 === void 0 ? void 0 : _context$settings$jsd16.augmentsExtendsReplacesDocs,
|
|
668
676
|
// Many rules, e.g., `check-tag-names`
|
|
669
|
-
mode: (_context$settings$
|
|
677
|
+
mode: (_context$settings$jsd17 = (_context$settings$jsd18 = context.settings.jsdoc) === null || _context$settings$jsd18 === void 0 ? void 0 : _context$settings$jsd18.mode) !== null && _context$settings$jsd17 !== void 0 ? _context$settings$jsd17 : context.parserPath.includes('@typescript-eslint') ? 'typescript' : 'jsdoc'
|
|
670
678
|
};
|
|
671
679
|
/* eslint-enable sort-keys-fix/sort-keys-fix */
|
|
672
680
|
|
package/dist/iterateJsdoc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/iterateJsdoc.js"],"names":["globalState","Map","getBasicUtils","context","tagNamePreference","mode","utils","reportSettings","message","report","loc","start","column","line","parseClosureTemplateTag","tag","jsdocUtils","pathDoesNotBeginWith","getPreferredTagNameObject","tagName","ret","getPreferredTagName","isObject","replacement","blocked","getUtils","node","jsdoc","jsdocNode","settings","iteratingAll","ruleConfig","indent","ancestors","getAncestors","sourceCode","getSourceCode","overrideReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","isIteratingFunction","includes","type","isVirtualFunction","hasATag","stringify","tagBlock","specRewire","reportJSDoc","msg","handler","data","fixer","replaceText","getRegexFromString","str","requiredFlags","getTagDescription","tg","descriptions","source","some","tokens","end","lineEnd","postDelimiter","postTag","name","description","desc","slice","push","join","getDescription","lastDescriptionLine","idx","changeTag","forEach","src","setTag","number","delimiter","removeTag","removeTagItem","tagIndex","tagSourceOffset","tagSource","tags","lastIndex","firstNumber","tagIdx","sourceIndex","findIndex","srcNumber","spliceCount","splice","addTag","targetTagName","length","seedTokens","emptyTokens","prop","addLine","addLines","numLines","makeLine","makeLines","Array","from","lines","makeMultiline","postName","postType","trimEnd","flattenRoots","params","getFunctionParameterNames","useDefaultObjectProperties","hasParams","isGenerator","generator","value","declaration","isConstructor","getJsdocTagsDeep","skipReportingBlockedTag","allowObjectReturn","defaultMessage","hasTag","getTags","isValidTag","definedTags","names","comparePaths","dropPathSegmentQuotes","avoidDocs","classHasTag","exemptSpeciaMethods","meta","schema","exemptedBy","options","getPresentTags","method","otherModeMaps","result","otherResult","otherModeMap","otherMode","every","getTagStructureForMode","mde","structuredTags","hasDefinedTypeTag","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","hasYieldValue","hasYieldReturnValue","hasThrowValue","isAsync","async","filterTags","item","tagList","filter","getTagsByType","hasOptionTag","Boolean","getClassNode","reverse","find","parent","getClassJsdoc","classNode","classJsdocNode","indnt","repeat","classJsdoc","forEachPreferredTag","arrayHandler","matchingJsdocTags","_","matchingJsdocTag","getSettings","ignorePrivate","ignoreInternal","Number","preferredTypes","parserPath","setTagStructure","overrideTagStructure","error","makeReport","commentNode","fix","jsdocLoc","lineNumber","colNumber","iterate","info","iterator","state","checkInternal","checkPrivate","getIndentAndJSDoc","sourceLine","charAt","jsdc","iterateAllJsdocs","contexts","additiveContexts","trackedJsdocs","callIterator","jsdocNodes","lastCall","test","getText","comment","selector","lastComment","exit","create","reducedNode","nonComment","allComments","getAllComments","untrackedJSdoc","checkFile","iterateJsdoc","metaType","TypeError","contextDefaults","contextSelected","matchContext","match","enforcedContexts","map","obj","hasPlainAny","hasObjectAny","ctxt","checkJsdoc","contextObject","getContextObject","bind"],"mappings":"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","sourcesContent":["import {\n getReducedASTNode, getJSDocComment, commentHandler, parseComment,\n\n // `comment-parser/util` re-exports\n rewireSpecs,\n seedTokens,\n} from '@es-joy/jsdoccomment';\nimport {\n stringify as commentStringify,\n} from 'comment-parser';\nimport _ from 'lodash';\nimport jsdocUtils from './jsdocUtils';\n\n/*\nconst {\n align as commentAlign,\n flow: commentFlow,\n indent: commentIndent,\n} = transforms;\n*/\n\nconst globalState = new Map();\n\nconst getBasicUtils = (context, {tagNamePreference, mode}) => {\n const utils = {};\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n utils.parseClosureTemplateTag = (tag) => {\n return jsdocUtils.parseClosureTemplateTag(tag);\n };\n\n utils.pathDoesNotBeginWith = jsdocUtils.pathDoesNotBeginWith;\n\n utils.getPreferredTagNameObject = ({tagName}) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (ret === false || isObject && !ret.replacement) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n return ret;\n };\n\n return utils;\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = getBasicUtils(context, settings);\n\n const {\n tagNamePreference,\n overrideReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n mode,\n } = settings;\n\n utils.isIteratingFunction = () => {\n return !iteratingAll || [\n 'MethodDefinition',\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(node && node.type);\n };\n\n utils.isVirtualFunction = () => {\n return iteratingAll && utils.hasATag(['callback', 'function', 'func', 'method']);\n };\n\n utils.stringify = (tagBlock, specRewire) => {\n return commentStringify(specRewire ? rewireSpecs(tagBlock) : tagBlock);\n };\n\n utils.reportJSDoc = (msg, tag, handler, specRewire, data) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc, specRewire);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag, data);\n };\n\n utils.getRegexFromString = (str, requiredFlags) => {\n return jsdocUtils.getRegexFromString(str, requiredFlags);\n };\n\n utils.getTagDescription = (tg) => {\n const descriptions = [];\n tg.source.some(({\n tokens: {end, lineEnd, postDelimiter, tag, postTag, name, type, description},\n }) => {\n const desc = (\n tag && postTag ||\n !tag && !name && !type && postDelimiter || ''\n\n // Remove space\n ).slice(1) +\n (description || '') + (lineEnd || '');\n\n if (end) {\n if (desc) {\n descriptions.push(desc);\n }\n\n return true;\n }\n descriptions.push(desc);\n\n return false;\n });\n\n return descriptions.join('\\n');\n };\n\n utils.getDescription = () => {\n const descriptions = [];\n let lastDescriptionLine = 0;\n jsdoc.source.some(({tokens: {description, tag, end}}, idx) => {\n if (idx && (tag || end)) {\n lastDescriptionLine = idx - 1;\n\n return true;\n }\n if (idx || description) {\n descriptions.push(description);\n }\n\n return false;\n });\n\n return {\n description: descriptions.join('\\n'),\n lastDescriptionLine,\n };\n };\n\n utils.changeTag = (tag, ...tokens) => {\n tag.source.forEach((src, idx) => {\n src.tokens = {\n ...src.tokens,\n ...tokens[idx],\n };\n });\n };\n\n utils.setTag = (tag, tokens) => {\n tag.source = [{\n // Or tag.source[0].number?\n number: tag.line,\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: '@' + tag.tag,\n ...tokens,\n }),\n }];\n };\n\n utils.removeTag = (idx) => {\n return utils.removeTagItem(idx);\n };\n\n utils.removeTagItem = (tagIndex, tagSourceOffset = 0) => {\n const {source: tagSource} = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({number}, tagIdx) => {\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber, tokens: {end},\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n let spliceCount = 1;\n tagSource.slice(tagIdx + 1).some(({tokens: {tag, end}}) => {\n if (!tag && !end) {\n spliceCount++;\n\n return false;\n }\n\n return true;\n });\n jsdoc.source.splice(sourceIndex + tagSourceOffset, spliceCount - tagSourceOffset);\n tagSource.splice(tagIdx + tagSourceOffset, spliceCount - tagSourceOffset);\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n jsdoc.source.slice(lastIndex).forEach((src, idx) => {\n src.number = firstNumber + lastIndex + idx;\n });\n };\n\n utils.addTag = (targetTagName) => {\n const number = (jsdoc.tags[jsdoc.tags.length - 1]?.source[0]?.number ?? 0) + 1;\n jsdoc.source.splice(number, 0, {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: `@${targetTagName}`,\n }),\n });\n jsdoc.source.slice(number + 1).forEach((src) => {\n src.number++;\n });\n };\n\n utils.seedTokens = seedTokens;\n\n utils.emptyTokens = (tokens) => {\n [\n 'start',\n 'postDelimiter',\n 'tag',\n 'type',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n 'end',\n 'lineEnd',\n ].forEach((prop) => {\n tokens[prop] = '';\n });\n };\n\n utils.addLine = (sourceIndex, tokens) => {\n const number = (jsdoc.source[sourceIndex - 1]?.number || 0) + 1;\n jsdoc.source.splice(sourceIndex, 0, {\n number,\n source: '',\n tokens: seedTokens(tokens),\n });\n\n // If necessary, we can rewire the tags (misnamed method)\n // rewireSource(jsdoc);\n };\n\n utils.addLines = (tagIndex, tagSourceOffset, numLines) => {\n const {source: tagSource} = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({number}) => {\n const makeLine = () => {\n return {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n start: indent + ' ',\n }),\n };\n };\n const makeLines = () => {\n return Array.from({length: numLines}, makeLine);\n };\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber, tokens: {end},\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n const lines = makeLines();\n jsdoc.source.splice(sourceIndex + tagSourceOffset, 0, ...lines);\n\n // tagSource.splice(tagIdx + 1, 0, ...makeLines());\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n jsdoc.source.slice(lastIndex).forEach((src, idx) => {\n src.number = firstNumber + lastIndex + idx;\n });\n };\n\n utils.makeMultiline = () => {\n const {source: [{tokens}]} = jsdoc;\n const {postDelimiter, description, lineEnd, tag, name, type} = tokens;\n\n let {tokens: {\n postName, postTag, postType,\n }} = jsdoc.source[0];\n\n // Strip trailing leftovers from single line ending\n if (!description) {\n if (postName) {\n postName = '';\n } else if (postType) {\n postType = '';\n // eslint-disable-next-line max-len, no-inline-comments\n } else /* istanbul ignore else -- `comment-parser` prevents empty blocks currently per https://github.com/syavorsky/comment-parser/issues/128 */ if (postTag) {\n postTag = '';\n }\n }\n\n utils.emptyTokens(tokens);\n\n utils.addLine(1, {\n delimiter: '*',\n\n // If a description were present, it may have whitespace attached\n // due to being at the end of the single line\n description: description.trimEnd(),\n name,\n postDelimiter,\n postName,\n postTag,\n postType,\n start: indent + ' ',\n tag,\n type,\n });\n utils.addLine(2, {\n end: '*/',\n lineEnd,\n start: indent + ' ',\n });\n };\n\n utils.flattenRoots = (params) => {\n return jsdocUtils.flattenRoots(params);\n };\n\n utils.getFunctionParameterNames = (useDefaultObjectProperties) => {\n return jsdocUtils.getFunctionParameterNames(node, useDefaultObjectProperties);\n };\n\n utils.hasParams = () => {\n return jsdocUtils.hasParams(node);\n };\n\n utils.isGenerator = () => {\n return node && (\n node.generator ||\n node.type === 'MethodDefinition' && node.value.generator ||\n ['ExportNamedDeclaration', 'ExportDefaultDeclaration'].includes(node.type) &&\n node.declaration.generator\n );\n };\n\n utils.isConstructor = () => {\n return jsdocUtils.isConstructor(node);\n };\n\n utils.getJsdocTagsDeep = (tagName) => {\n const name = utils.getPreferredTagName({tagName});\n if (!name) {\n return false;\n }\n\n return jsdocUtils.getJsdocTagsDeep(jsdoc, name);\n };\n\n utils.getPreferredTagName = ({tagName, skipReportingBlockedTag = false, allowObjectReturn = false, defaultMessage = `Unexpected tag \\`@${tagName}\\``}) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(context, mode, name, definedTags);\n };\n\n utils.hasATag = (names) => {\n return jsdocUtils.hasATag(jsdoc, names);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.comparePaths = (name) => {\n return jsdocUtils.comparePaths(name);\n };\n\n utils.dropPathSegmentQuotes = (name) => {\n return jsdocUtils.dropPathSegmentQuotes(name);\n };\n\n utils.avoidDocs = () => {\n if (\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag(['augments', 'extends']) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n if (jsdocUtils.exemptSpeciaMethods(\n jsdoc, node, context, ruleConfig.meta.schema,\n )) {\n return true;\n }\n\n const exemptedBy = context.options[0]?.exemptedBy ?? [\n 'inheritDoc',\n ...mode === 'closure' ? [] : ['inheritdoc'],\n ];\n if (exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n [\n 'tagMightHaveNamePosition',\n 'tagMightHaveTypePosition',\n ].forEach((method) => {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (result) {\n return true;\n }\n\n if (!otherModeMaps) {\n return false;\n }\n\n const otherResult = otherModeMaps.some((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? {otherMode: true} : false;\n };\n });\n\n [\n 'tagMustHaveNamePosition',\n 'tagMustHaveTypePosition',\n 'tagMissingRequiredTypeOrNamepath',\n ].forEach((method) => {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (!result) {\n return false;\n }\n\n // if (!otherModeMaps) { return true; }\n\n const otherResult = otherModeMaps.every((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? true : {otherMode: false};\n };\n });\n\n [\n 'isNamepathDefiningTag',\n 'tagMightHaveNamepath',\n ].forEach((method) => {\n utils[method] = (tagName) => {\n return jsdocUtils[method](tagName);\n };\n });\n\n utils.getTagStructureForMode = (mde) => {\n return jsdocUtils.getTagStructureForMode(mde, settings.structuredTags);\n };\n\n utils.hasDefinedTypeTag = (tag) => {\n return jsdocUtils.hasDefinedTypeTag(tag);\n };\n\n utils.hasValueOrExecutorHasNonEmptyResolveValue = (anyPromiseAsReturn) => {\n return jsdocUtils.hasValueOrExecutorHasNonEmptyResolveValue(node, anyPromiseAsReturn);\n };\n\n utils.hasYieldValue = () => {\n if (['ExportNamedDeclaration', 'ExportDefaultDeclaration'].includes(node.type)) {\n return jsdocUtils.hasYieldValue(node.declaration);\n }\n\n return jsdocUtils.hasYieldValue(node);\n };\n\n utils.hasYieldReturnValue = () => {\n return jsdocUtils.hasYieldValue(node, true);\n };\n\n utils.hasThrowValue = () => {\n return jsdocUtils.hasThrowValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(context, mode, tags, tagNamePreference);\n };\n\n utils.hasOptionTag = (tagName) => {\n const {tags} = context.options[0] ?? {};\n\n return Boolean(tags && tags.includes(tagName));\n };\n\n utils.getClassNode = () => {\n return [...ancestors, node].reverse().find((parent) => {\n return parent && ['ClassDeclaration', 'ClassExpression'].includes(parent.type);\n }) || null;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n\n if (!classNode) {\n return null;\n }\n\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n const indnt = ' '.repeat(classJsdocNode.loc.start.column);\n\n return parseComment(classJsdocNode, indnt);\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return Boolean(classJsdoc) && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n const matchingJsdocTags = _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n matchingJsdocTags.forEach((matchingJsdocTag) => {\n arrayHandler(matchingJsdocTag, targetTagName);\n });\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n const settings = {\n // All rules\n ignorePrivate: Boolean(context.settings.jsdoc?.ignorePrivate),\n ignoreInternal: Boolean(context.settings.jsdoc?.ignoreInternal),\n maxLines: Number(context.settings.jsdoc?.maxLines ?? 1),\n minLines: Number(context.settings.jsdoc?.minLines ?? 0),\n\n // `check-tag-names` and many returns/param rules\n tagNamePreference: context.settings.jsdoc?.tagNamePreference ?? {},\n\n // `check-types` and `no-undefined-types`\n preferredTypes: context.settings.jsdoc?.preferredTypes ?? {},\n\n // `check-types`, `no-undefined-types`, `valid-types`\n structuredTags: context.settings.jsdoc?.structuredTags ?? {},\n\n // `require-param`, `require-description`, `require-example`, `require-returns`\n overrideReplacesDocs: context.settings.jsdoc?.overrideReplacesDocs,\n implementsReplacesDocs: context.settings.jsdoc?.implementsReplacesDocs,\n augmentsExtendsReplacesDocs: context.settings.jsdoc?.augmentsExtendsReplacesDocs,\n\n // Many rules, e.g., `check-tag-names`\n mode: context.settings.jsdoc?.mode ??\n (context.parserPath.includes('@typescript-eslint') ? 'typescript' : 'jsdoc'),\n };\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n\n jsdocUtils.setTagStructure(settings.mode);\n try {\n jsdocUtils.overrideTagStructure(settings.structuredTags);\n } catch (error) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: error.message,\n });\n\n return false;\n }\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n if (!('line' in jsdocLoc)) {\n jsdocLoc.line = jsdocLoc.source[0].number;\n }\n\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {line: lineNumber},\n start: {line: lineNumber},\n };\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: object,\n * sourceCode: object,\n * indent: string,\n * jsdoc: object,\n * jsdocNode: object,\n * node: object | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n\nconst iterate = (\n info,\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node, settings,\n sourceCode, iterator, state, iteratingAll,\n) => {\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n );\n\n if (\n !ruleConfig.checkInternal && settings.ignoreInternal &&\n utils.hasTag('internal')\n ) {\n return;\n }\n if (\n !ruleConfig.checkPrivate && settings.ignorePrivate &&\n (utils.hasTag('private') || _.filter(jsdoc.tags, {\n tag: 'access',\n }).some(({description}) => {\n return description === 'private';\n }))\n ) {\n return;\n }\n\n iterator({\n context,\n globalState,\n indent,\n info,\n iteratingAll,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n state,\n utils,\n });\n};\n\nconst getIndentAndJSDoc = function (lines, jsdocNode) {\n const sourceLine = lines[jsdocNode.loc.start.line - 1];\n const indnt = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n const jsdc = parseComment(jsdocNode, indnt);\n\n return [indnt, jsdc];\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n * @param contexts\n * @param {boolean} additiveContexts\n */\nconst iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveContexts) => {\n const trackedJsdocs = [];\n\n let handler;\n let settings;\n const callIterator = (context, node, jsdocNodes, state, lastCall) => {\n const sourceCode = context.getSourceCode();\n const {lines} = sourceCode;\n\n const utils = getBasicUtils(context, settings);\n jsdocNodes.forEach((jsdocNode) => {\n if (!(/^\\/\\*\\*\\s/).test(sourceCode.getText(jsdocNode))) {\n return;\n }\n\n const [indent, jsdoc] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (additiveContexts) {\n contexts.forEach(({comment}, idx) => {\n if (comment && handler(comment, jsdoc) === false) {\n return;\n }\n iterate(\n {\n comment,\n lastIndex: idx,\n selector: node?.type,\n },\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator,\n state, true,\n );\n });\n\n return;\n }\n\n let lastComment;\n let lastIndex;\n if (contexts && contexts.every(({comment}, idx) => {\n lastComment = comment;\n lastIndex = idx;\n\n return comment && handler(comment, jsdoc) === false;\n })) {\n return;\n }\n\n iterate(\n lastComment ? {\n comment: lastComment,\n lastIndex,\n selector: node?.type,\n } : {\n lastIndex,\n selector: node?.type,\n },\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator,\n state, true,\n );\n });\n if (lastCall && ruleConfig.exit) {\n ruleConfig.exit({\n context,\n state,\n utils,\n });\n }\n };\n\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n settings = getSettings(context);\n if (!settings) {\n return {};\n }\n if (contexts) {\n handler = commentHandler(settings);\n }\n\n const state = {};\n\n return {\n '*:not(Program)' (node) {\n const reducedNode = getReducedASTNode(node, sourceCode);\n\n if (node !== reducedNode) {\n return;\n }\n\n const commentNode = getJSDocComment(sourceCode, node, settings);\n if (trackedJsdocs.includes(commentNode)) {\n return;\n }\n if (!commentNode) {\n if (ruleConfig.nonComment) {\n ruleConfig.nonComment({\n node,\n state,\n });\n }\n\n return;\n }\n\n trackedJsdocs.push(commentNode);\n callIterator(context, node, [commentNode], state);\n },\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const untrackedJSdoc = allComments.filter((node) => {\n return !trackedJsdocs.includes(node);\n });\n\n callIterator(context, null, untrackedJSdoc, state, true);\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n */\nconst checkFile = (iterator, ruleConfig) => {\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n return {\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const {lines} = sourceCode;\n const utils = getBasicUtils(context, settings);\n\n iterator({\n allComments,\n context,\n lines,\n makeReport,\n settings,\n sourceCode,\n utils,\n });\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {{\n * meta: any,\n * contextDefaults?: true | string[],\n * contextSelected?: true,\n * iterateAllJsdocs?: true,\n * }} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = ruleConfig?.meta?.type;\n if (!metaType || !['problem', 'suggestion', 'layout'].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.checkFile) {\n return checkFile(iterator, ruleConfig);\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, ruleConfig);\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n let contexts;\n if (ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext) {\n contexts = ruleConfig.matchContext && context.options[0]?.match ?\n context.options[0].match :\n jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n if (contexts) {\n contexts = contexts.map((obj) => {\n if (typeof obj === 'object' && !obj.context) {\n return {...obj, context: 'any'};\n }\n\n return obj;\n });\n }\n\n const hasPlainAny = contexts?.includes('any');\n const hasObjectAny = !hasPlainAny && contexts?.find((ctxt) => {\n return ctxt?.context === 'any';\n });\n if (hasPlainAny || hasObjectAny) {\n return iterateAllJsdocs(\n iterator, ruleConfig, hasObjectAny ? contexts : null, ruleConfig.matchContext,\n ).create(context);\n }\n }\n const sourceCode = context.getSourceCode();\n const {lines} = sourceCode;\n\n const state = {};\n\n const checkJsdoc = (info, handler, node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n\n if (!jsdocNode) {\n return;\n }\n\n const [indent, jsdoc] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (\n // Note, `handler` should already be bound in its first argument\n // with these only to be called after the value of\n // `comment`\n handler && handler(jsdoc) === false\n ) {\n return;\n }\n\n iterate(\n info, indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator, state,\n );\n };\n\n let contextObject = {};\n\n if (contexts && (\n ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext\n )) {\n contextObject = jsdocUtils.getContextObject(\n contexts,\n checkJsdoc,\n commentHandler(settings),\n );\n } else {\n [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].forEach((prop) => {\n contextObject[prop] = checkJsdoc.bind(null, {\n selector: prop,\n }, null);\n });\n }\n\n if (ruleConfig.exit) {\n contextObject['Program:exit'] = () => {\n ruleConfig.exit({\n context,\n state,\n });\n };\n }\n\n return contextObject;\n },\n meta: ruleConfig.meta,\n };\n}\n"],"file":"iterateJsdoc.js"}
|
|
1
|
+
{"version":3,"sources":["../src/iterateJsdoc.js"],"names":["rewireSpecs","seedTokens","util","globalState","Map","getBasicUtils","context","tagNamePreference","mode","utils","reportSettings","message","report","loc","start","column","line","parseClosureTemplateTag","tag","jsdocUtils","pathDoesNotBeginWith","getPreferredTagNameObject","tagName","ret","getPreferredTagName","isObject","replacement","blocked","getUtils","node","jsdoc","jsdocNode","settings","iteratingAll","ruleConfig","indent","ancestors","getAncestors","sourceCode","getSourceCode","overrideReplacesDocs","ignoreReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","isIteratingFunction","includes","type","isVirtualFunction","hasATag","stringify","tagBlock","specRewire","reportJSDoc","msg","handler","data","fixer","replaceText","getRegexFromString","str","requiredFlags","getTagDescription","tg","descriptions","source","some","tokens","end","lineEnd","postDelimiter","postTag","name","description","desc","slice","push","join","getDescription","lastDescriptionLine","idx","changeTag","forEach","src","setTag","number","delimiter","removeTag","removeTagItem","tagIndex","tagSourceOffset","tagSource","tags","lastIndex","firstNumber","tagIdx","sourceIndex","findIndex","srcNumber","spliceCount","splice","addTag","targetTagName","length","emptyTokens","prop","addLine","addLines","numLines","makeLine","makeLines","Array","from","lines","makeMultiline","postName","postType","trimEnd","flattenRoots","params","getFunctionParameterNames","useDefaultObjectProperties","hasParams","isGenerator","generator","value","declaration","isConstructor","getJsdocTagsDeep","skipReportingBlockedTag","allowObjectReturn","defaultMessage","hasTag","getTags","isValidTag","definedTags","names","comparePaths","dropPathSegmentQuotes","avoidDocs","classHasTag","exemptSpeciaMethods","meta","schema","exemptedBy","options","getPresentTags","method","otherModeMaps","result","otherResult","otherModeMap","otherMode","every","getTagStructureForMode","mde","structuredTags","hasDefinedTypeTag","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","hasYieldValue","hasYieldReturnValue","hasThrowValue","isAsync","async","filterTags","item","tagList","filter","getTagsByType","hasOptionTag","Boolean","getClassNode","reverse","find","parent","getClassJsdoc","classNode","classJsdocNode","indnt","repeat","classJsdoc","forEachPreferredTag","arrayHandler","matchingJsdocTags","_","matchingJsdocTag","getSettings","ignorePrivate","ignoreInternal","Number","preferredTypes","parserPath","setTagStructure","overrideTagStructure","error","makeReport","commentNode","fix","jsdocLoc","lineNumber","colNumber","iterate","info","iterator","state","checkInternal","checkPrivate","getIndentAndJSDoc","sourceLine","charAt","jsdc","iterateAllJsdocs","contexts","additiveContexts","trackedJsdocs","callIterator","jsdocNodes","lastCall","test","getText","comment","selector","lastComment","exit","create","reducedNode","nonComment","allComments","getAllComments","untrackedJSdoc","checkFile","iterateJsdoc","metaType","TypeError","contextDefaults","contextSelected","matchContext","match","enforcedContexts","map","obj","hasPlainAny","hasObjectAny","ctxt","checkJsdoc","contextObject","getContextObject","bind"],"mappings":";;;;;;;;;;;;;;AAAA;;AAGA;;AAIA;;AACA;;;;AAEA,MAAM;AACJA,EAAAA,WADI;AAEJC,EAAAA;AAFI,IAGFC,mBAHJ;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,WAAW,GAAG,IAAIC,GAAJ,EAApB;;AAEA,MAAMC,aAAa,GAAG,CAACC,OAAD,EAAU;AAACC,EAAAA,iBAAD;AAAoBC,EAAAA;AAApB,CAAV,KAAwC;AAC5D,QAAMC,KAAK,GAAG,EAAd;;AACAA,EAAAA,KAAK,CAACC,cAAN,GAAwBC,OAAD,IAAa;AAClCL,IAAAA,OAAO,CAACM,MAAR,CAAe;AACbC,MAAAA,GAAG,EAAE;AACHC,QAAAA,KAAK,EAAE;AACLC,UAAAA,MAAM,EAAE,CADH;AAELC,UAAAA,IAAI,EAAE;AAFD;AADJ,OADQ;AAObL,MAAAA;AAPa,KAAf;AASD,GAVD;;AAYAF,EAAAA,KAAK,CAACQ,uBAAN,GAAiCC,GAAD,IAAS;AACvC,WAAOC,oBAAWF,uBAAX,CAAmCC,GAAnC,CAAP;AACD,GAFD;;AAIAT,EAAAA,KAAK,CAACW,oBAAN,GAA6BD,oBAAWC,oBAAxC;;AAEAX,EAAAA,KAAK,CAACY,yBAAN,GAAkC,CAAC;AAACC,IAAAA;AAAD,GAAD,KAAe;AAC/C,UAAMC,GAAG,GAAGJ,oBAAWK,mBAAX,CAA+BlB,OAA/B,EAAwCE,IAAxC,EAA8Cc,OAA9C,EAAuDf,iBAAvD,CAAZ;;AACA,UAAMkB,QAAQ,GAAGF,GAAG,IAAI,OAAOA,GAAP,KAAe,QAAvC;;AACA,QAAIA,GAAG,KAAK,KAAR,IAAiBE,QAAQ,IAAI,CAACF,GAAG,CAACG,WAAtC,EAAmD;AACjD,aAAO;AACLC,QAAAA,OAAO,EAAE,IADJ;AAELL,QAAAA;AAFK,OAAP;AAID;;AAED,WAAOC,GAAP;AACD,GAXD;;AAaA,SAAOd,KAAP;AACD,CAlCD;;AAoCA,MAAMmB,QAAQ,GAAG,CACfC,IADe,EAEfC,KAFe,EAGfC,SAHe,EAIfC,QAJe,EAKfpB,MALe,EAMfN,OANe,EAOf2B,YAPe,EAQfC,UARe,EASfC,MATe,KAUZ;AACH,QAAMC,SAAS,GAAG9B,OAAO,CAAC+B,YAAR,EAAlB;AACA,QAAMC,UAAU,GAAGhC,OAAO,CAACiC,aAAR,EAAnB;AAEA,QAAM9B,KAAK,GAAGJ,aAAa,CAACC,OAAD,EAAU0B,QAAV,CAA3B;AAEA,QAAM;AACJzB,IAAAA,iBADI;AAEJiC,IAAAA,oBAFI;AAGJC,IAAAA,kBAHI;AAIJC,IAAAA,sBAJI;AAKJC,IAAAA,2BALI;AAMJC,IAAAA,QANI;AAOJC,IAAAA,QAPI;AAQJrC,IAAAA;AARI,MASFwB,QATJ;;AAWAvB,EAAAA,KAAK,CAACqC,mBAAN,GAA4B,MAAM;AAChC,WAAO,CAACb,YAAD,IAAiB,CACtB,kBADsB,EAEtB,yBAFsB,EAGtB,qBAHsB,EAItB,oBAJsB,EAKtBc,QALsB,CAKblB,IAAI,IAAIA,IAAI,CAACmB,IALA,CAAxB;AAMD,GAPD;;AASAvC,EAAAA,KAAK,CAACwC,iBAAN,GAA0B,MAAM;AAC9B,WAAOhB,YAAY,IAAIxB,KAAK,CAACyC,OAAN,CAAc,CAAC,UAAD,EAAa,UAAb,EAAyB,MAAzB,EAAiC,QAAjC,CAAd,CAAvB;AACD,GAFD;;AAIAzC,EAAAA,KAAK,CAAC0C,SAAN,GAAkB,CAACC,QAAD,EAAWC,UAAX,KAA0B;AAC1C,WAAO,8BAAiBA,UAAU,GAAGrD,WAAW,CAACoD,QAAD,CAAd,GAA2BA,QAAtD,CAAP;AACD,GAFD;;AAIA3C,EAAAA,KAAK,CAAC6C,WAAN,GAAoB,CAACC,GAAD,EAAMrC,GAAN,EAAWsC,OAAX,EAAoBH,UAApB,EAAgCI,IAAhC,KAAyC;AAC3D7C,IAAAA,MAAM,CAAC2C,GAAD,EAAMC,OAAO,GAAIE,KAAD,IAAW;AAC/BF,MAAAA,OAAO;AACP,YAAM9B,WAAW,GAAGjB,KAAK,CAAC0C,SAAN,CAAgBrB,KAAhB,EAAuBuB,UAAvB,CAApB;AAEA,aAAOK,KAAK,CAACC,WAAN,CAAkB5B,SAAlB,EAA6BL,WAA7B,CAAP;AACD,KALkB,GAKf,IALE,EAKIR,GALJ,EAKSuC,IALT,CAAN;AAMD,GAPD;;AASAhD,EAAAA,KAAK,CAACmD,kBAAN,GAA2B,CAACC,GAAD,EAAMC,aAAN,KAAwB;AACjD,WAAO3C,oBAAWyC,kBAAX,CAA8BC,GAA9B,EAAmCC,aAAnC,CAAP;AACD,GAFD;;AAIArD,EAAAA,KAAK,CAACsD,iBAAN,GAA2BC,EAAD,IAAQ;AAChC,UAAMC,YAAY,GAAG,EAArB;AACAD,IAAAA,EAAE,CAACE,MAAH,CAAUC,IAAV,CAAe,CAAC;AACdC,MAAAA,MAAM,EAAE;AAACC,QAAAA,GAAD;AAAMC,QAAAA,OAAN;AAAeC,QAAAA,aAAf;AAA8BrD,QAAAA,GAA9B;AAAmCsD,QAAAA,OAAnC;AAA4CC,QAAAA,IAA5C;AAAkDzB,QAAAA,IAAlD;AAAwD0B,QAAAA;AAAxD;AADM,KAAD,KAET;AACJ,YAAMC,IAAI,GAAG,CACXzD,GAAG,IAAIsD,OAAP,IACA,CAACtD,GAAD,IAAQ,CAACuD,IAAT,IAAiB,CAACzB,IAAlB,IAA0BuB,aAD1B,IAC2C,EAFhC,CAIb;AAJa,QAKXK,KALW,CAKL,CALK,KAMVF,WAAW,IAAI,EANL,KAMYJ,OAAO,IAAI,EANvB,CAAb;;AAQA,UAAID,GAAJ,EAAS;AACP,YAAIM,IAAJ,EAAU;AACRV,UAAAA,YAAY,CAACY,IAAb,CAAkBF,IAAlB;AACD;;AAED,eAAO,IAAP;AACD;;AACDV,MAAAA,YAAY,CAACY,IAAb,CAAkBF,IAAlB;AAEA,aAAO,KAAP;AACD,KArBD;AAuBA,WAAOV,YAAY,CAACa,IAAb,CAAkB,IAAlB,CAAP;AACD,GA1BD;;AA4BArE,EAAAA,KAAK,CAACsE,cAAN,GAAuB,MAAM;AAC3B,UAAMd,YAAY,GAAG,EAArB;AACA,QAAIe,mBAAmB,GAAG,CAA1B;AACAlD,IAAAA,KAAK,CAACoC,MAAN,CAAaC,IAAb,CAAkB,CAAC;AAACC,MAAAA,MAAM,EAAE;AAACM,QAAAA,WAAD;AAAcxD,QAAAA,GAAd;AAAmBmD,QAAAA;AAAnB;AAAT,KAAD,EAAoCY,GAApC,KAA4C;AAC5D,UAAIA,GAAG,KAAK/D,GAAG,IAAImD,GAAZ,CAAP,EAAyB;AACvBW,QAAAA,mBAAmB,GAAGC,GAAG,GAAG,CAA5B;AAEA,eAAO,IAAP;AACD;;AACD,UAAIA,GAAG,IAAIP,WAAX,EAAwB;AACtBT,QAAAA,YAAY,CAACY,IAAb,CAAkBH,WAAlB;AACD;;AAED,aAAO,KAAP;AACD,KAXD;AAaA,WAAO;AACLA,MAAAA,WAAW,EAAET,YAAY,CAACa,IAAb,CAAkB,IAAlB,CADR;AAELE,MAAAA;AAFK,KAAP;AAID,GApBD;;AAsBAvE,EAAAA,KAAK,CAACyE,SAAN,GAAkB,CAAChE,GAAD,EAAM,GAAGkD,MAAT,KAAoB;AACpClD,IAAAA,GAAG,CAACgD,MAAJ,CAAWiB,OAAX,CAAmB,CAACC,GAAD,EAAMH,GAAN,KAAc;AAC/BG,MAAAA,GAAG,CAAChB,MAAJ,GAAa,EACX,GAAGgB,GAAG,CAAChB,MADI;AAEX,WAAGA,MAAM,CAACa,GAAD;AAFE,OAAb;AAID,KALD;AAMD,GAPD;;AASAxE,EAAAA,KAAK,CAAC4E,MAAN,GAAe,CAACnE,GAAD,EAAMkD,MAAN,KAAiB;AAC9BlD,IAAAA,GAAG,CAACgD,MAAJ,GAAa,CAAC;AACZ;AACAoB,MAAAA,MAAM,EAAEpE,GAAG,CAACF,IAFA;AAGZoD,MAAAA,MAAM,EAAEnE,UAAU,CAAC;AACjBsF,QAAAA,SAAS,EAAE,GADM;AAEjBhB,QAAAA,aAAa,EAAE,GAFE;AAGjBzD,QAAAA,KAAK,EAAEqB,MAAM,GAAG,GAHC;AAIjBjB,QAAAA,GAAG,EAAE,MAAMA,GAAG,CAACA,GAJE;AAKjB,WAAGkD;AALc,OAAD;AAHN,KAAD,CAAb;AAWD,GAZD;;AAcA3D,EAAAA,KAAK,CAAC+E,SAAN,GAAmBP,GAAD,IAAS;AACzB,WAAOxE,KAAK,CAACgF,aAAN,CAAoBR,GAApB,CAAP;AACD,GAFD;;AAIAxE,EAAAA,KAAK,CAACgF,aAAN,GAAsB,CAACC,QAAD,EAAWC,eAAe,GAAG,CAA7B,KAAmC;AACvD,UAAM;AAACzB,MAAAA,MAAM,EAAE0B;AAAT,QAAsB9D,KAAK,CAAC+D,IAAN,CAAWH,QAAX,CAA5B;AACA,QAAII,SAAJ;AACA,UAAMC,WAAW,GAAGjE,KAAK,CAACoC,MAAN,CAAa,CAAb,EAAgBoB,MAApC;AACAM,IAAAA,SAAS,CAACzB,IAAV,CAAe,CAAC;AAACmB,MAAAA;AAAD,KAAD,EAAWU,MAAX,KAAsB;AACnC,YAAMC,WAAW,GAAGnE,KAAK,CAACoC,MAAN,CAAagC,SAAb,CAAuB,CAAC;AAC1CZ,QAAAA,MAAM,EAAEa,SADkC;AACvB/B,QAAAA,MAAM,EAAE;AAACC,UAAAA;AAAD;AADe,OAAD,KAErC;AACJ,eAAOiB,MAAM,KAAKa,SAAX,IAAwB,CAAC9B,GAAhC;AACD,OAJmB,CAApB,CADmC,CAMnC;;AACA,UAAI4B,WAAW,GAAG,CAAC,CAAnB,EAAsB;AACpB,YAAIG,WAAW,GAAG,CAAlB;AACAR,QAAAA,SAAS,CAAChB,KAAV,CAAgBoB,MAAM,GAAG,CAAzB,EAA4B7B,IAA5B,CAAiC,CAAC;AAACC,UAAAA,MAAM,EAAE;AAAClD,YAAAA,GAAD;AAAMmD,YAAAA;AAAN;AAAT,SAAD,KAA0B;AACzD,cAAI,CAACnD,GAAD,IAAQ,CAACmD,GAAb,EAAkB;AAChB+B,YAAAA,WAAW;AAEX,mBAAO,KAAP;AACD;;AAED,iBAAO,IAAP;AACD,SARD;AASAtE,QAAAA,KAAK,CAACoC,MAAN,CAAamC,MAAb,CAAoBJ,WAAW,GAAGN,eAAlC,EAAmDS,WAAW,GAAGT,eAAjE;AACAC,QAAAA,SAAS,CAACS,MAAV,CAAiBL,MAAM,GAAGL,eAA1B,EAA2CS,WAAW,GAAGT,eAAzD;AACAG,QAAAA,SAAS,GAAGG,WAAZ;AAEA,eAAO,IAAP;AACD,OAvBkC,CAyBnC;;;AACA,aAAO,KAAP;AACD,KA3BD;AA4BAnE,IAAAA,KAAK,CAACoC,MAAN,CAAaU,KAAb,CAAmBkB,SAAnB,EAA8BX,OAA9B,CAAsC,CAACC,GAAD,EAAMH,GAAN,KAAc;AAClDG,MAAAA,GAAG,CAACE,MAAJ,GAAaS,WAAW,GAAGD,SAAd,GAA0Bb,GAAvC;AACD,KAFD;AAGD,GAnCD;;AAqCAxE,EAAAA,KAAK,CAAC6F,MAAN,GAAgBC,aAAD,IAAmB;AAAA;;AAChC,UAAMjB,MAAM,GAAG,yCAACxD,KAAK,CAAC+D,IAAN,CAAW/D,KAAK,CAAC+D,IAAN,CAAWW,MAAX,GAAoB,CAA/B,CAAD,uEAAC,YAAmCtC,MAAnC,CAA0C,CAA1C,CAAD,wDAAC,oBAA8CoB,MAA/C,yEAAyD,CAAzD,IAA8D,CAA7E;AACAxD,IAAAA,KAAK,CAACoC,MAAN,CAAamC,MAAb,CAAoBf,MAApB,EAA4B,CAA5B,EAA+B;AAC7BA,MAAAA,MAD6B;AAE7BpB,MAAAA,MAAM,EAAE,EAFqB;AAG7BE,MAAAA,MAAM,EAAEnE,UAAU,CAAC;AACjBsF,QAAAA,SAAS,EAAE,GADM;AAEjBhB,QAAAA,aAAa,EAAE,GAFE;AAGjBzD,QAAAA,KAAK,EAAEqB,MAAM,GAAG,GAHC;AAIjBjB,QAAAA,GAAG,EAAG,IAAGqF,aAAc;AAJN,OAAD;AAHW,KAA/B;AAUAzE,IAAAA,KAAK,CAACoC,MAAN,CAAaU,KAAb,CAAmBU,MAAM,GAAG,CAA5B,EAA+BH,OAA/B,CAAwCC,GAAD,IAAS;AAC9CA,MAAAA,GAAG,CAACE,MAAJ;AACD,KAFD;AAGD,GAfD;;AAiBA7E,EAAAA,KAAK,CAACR,UAAN,GAAmBA,UAAnB;;AAEAQ,EAAAA,KAAK,CAACgG,WAAN,GAAqBrC,MAAD,IAAY;AAC9B,KACE,OADF,EAEE,eAFF,EAGE,KAHF,EAIE,MAJF,EAKE,UALF,EAME,SANF,EAOE,MAPF,EAQE,UARF,EASE,aATF,EAUE,KAVF,EAWE,SAXF,EAYEe,OAZF,CAYWuB,IAAD,IAAU;AAClBtC,MAAAA,MAAM,CAACsC,IAAD,CAAN,GAAe,EAAf;AACD,KAdD;AAeD,GAhBD;;AAkBAjG,EAAAA,KAAK,CAACkG,OAAN,GAAgB,CAACV,WAAD,EAAc7B,MAAd,KAAyB;AAAA;;AACvC,UAAMkB,MAAM,GAAG,CAAC,kBAAAxD,KAAK,CAACoC,MAAN,CAAa+B,WAAW,GAAG,CAA3B,iEAA+BX,MAA/B,KAAyC,CAA1C,IAA+C,CAA9D;AACAxD,IAAAA,KAAK,CAACoC,MAAN,CAAamC,MAAb,CAAoBJ,WAApB,EAAiC,CAAjC,EAAoC;AAClCX,MAAAA,MADkC;AAElCpB,MAAAA,MAAM,EAAE,EAF0B;AAGlCE,MAAAA,MAAM,EAAEnE,UAAU,CAACmE,MAAD;AAHgB,KAApC,EAFuC,CAQvC;AACA;AACD,GAVD;;AAYA3D,EAAAA,KAAK,CAACmG,QAAN,GAAiB,CAAClB,QAAD,EAAWC,eAAX,EAA4BkB,QAA5B,KAAyC;AACxD,UAAM;AAAC3C,MAAAA,MAAM,EAAE0B;AAAT,QAAsB9D,KAAK,CAAC+D,IAAN,CAAWH,QAAX,CAA5B;AACA,QAAII,SAAJ;AACA,UAAMC,WAAW,GAAGjE,KAAK,CAACoC,MAAN,CAAa,CAAb,EAAgBoB,MAApC;AACAM,IAAAA,SAAS,CAACzB,IAAV,CAAe,CAAC;AAACmB,MAAAA;AAAD,KAAD,KAAc;AAC3B,YAAMwB,QAAQ,GAAG,MAAM;AACrB,eAAO;AACLxB,UAAAA,MADK;AAELpB,UAAAA,MAAM,EAAE,EAFH;AAGLE,UAAAA,MAAM,EAAEnE,UAAU,CAAC;AACjBsF,YAAAA,SAAS,EAAE,GADM;AAEjBzE,YAAAA,KAAK,EAAEqB,MAAM,GAAG;AAFC,WAAD;AAHb,SAAP;AAQD,OATD;;AAUA,YAAM4E,SAAS,GAAG,MAAM;AACtB,eAAOC,KAAK,CAACC,IAAN,CAAW;AAACT,UAAAA,MAAM,EAAEK;AAAT,SAAX,EAA+BC,QAA/B,CAAP;AACD,OAFD;;AAGA,YAAMb,WAAW,GAAGnE,KAAK,CAACoC,MAAN,CAAagC,SAAb,CAAuB,CAAC;AAC1CZ,QAAAA,MAAM,EAAEa,SADkC;AACvB/B,QAAAA,MAAM,EAAE;AAACC,UAAAA;AAAD;AADe,OAAD,KAErC;AACJ,eAAOiB,MAAM,KAAKa,SAAX,IAAwB,CAAC9B,GAAhC;AACD,OAJmB,CAApB,CAd2B,CAmB3B;;AACA,UAAI4B,WAAW,GAAG,CAAC,CAAnB,EAAsB;AACpB,cAAMiB,KAAK,GAAGH,SAAS,EAAvB;AACAjF,QAAAA,KAAK,CAACoC,MAAN,CAAamC,MAAb,CAAoBJ,WAAW,GAAGN,eAAlC,EAAmD,CAAnD,EAAsD,GAAGuB,KAAzD,EAFoB,CAIpB;;AACApB,QAAAA,SAAS,GAAGG,WAAZ;AAEA,eAAO,IAAP;AACD,OA5B0B,CA8B3B;;;AACA,aAAO,KAAP;AACD,KAhCD;AAiCAnE,IAAAA,KAAK,CAACoC,MAAN,CAAaU,KAAb,CAAmBkB,SAAnB,EAA8BX,OAA9B,CAAsC,CAACC,GAAD,EAAMH,GAAN,KAAc;AAClDG,MAAAA,GAAG,CAACE,MAAJ,GAAaS,WAAW,GAAGD,SAAd,GAA0Bb,GAAvC;AACD,KAFD;AAGD,GAxCD;;AA0CAxE,EAAAA,KAAK,CAAC0G,aAAN,GAAsB,MAAM;AAC1B,UAAM;AAACjD,MAAAA,MAAM,EAAE,CAAC;AAACE,QAAAA;AAAD,OAAD;AAAT,QAAuBtC,KAA7B;AACA,UAAM;AAACyC,MAAAA,aAAD;AAAgBG,MAAAA,WAAhB;AAA6BJ,MAAAA,OAA7B;AAAsCpD,MAAAA,GAAtC;AAA2CuD,MAAAA,IAA3C;AAAiDzB,MAAAA;AAAjD,QAAyDoB,MAA/D;AAEA,QAAI;AAACA,MAAAA,MAAM,EAAE;AACXgD,QAAAA,QADW;AACD5C,QAAAA,OADC;AACQ6C,QAAAA;AADR;AAAT,QAECvF,KAAK,CAACoC,MAAN,CAAa,CAAb,CAFL,CAJ0B,CAQ1B;;AACA,QAAI,CAACQ,WAAL,EAAkB;AAChB,UAAI0C,QAAJ,EAAc;AACZA,QAAAA,QAAQ,GAAG,EAAX;AACD,OAFD,MAEO,IAAIC,QAAJ,EAAc;AACnBA,QAAAA,QAAQ,GAAG,EAAX,CADmB,CAErB;AACC,OAHM;AAGA;AAA0I,YAAI7C,OAAJ,EAAa;AAC5JA,UAAAA,OAAO,GAAG,EAAV;AACD;AACF;;AAED/D,IAAAA,KAAK,CAACgG,WAAN,CAAkBrC,MAAlB;AAEA3D,IAAAA,KAAK,CAACkG,OAAN,CAAc,CAAd,EAAiB;AACfpB,MAAAA,SAAS,EAAE,GADI;AAGf;AACA;AACAb,MAAAA,WAAW,EAAEA,WAAW,CAAC4C,OAAZ,EALE;AAMf7C,MAAAA,IANe;AAOfF,MAAAA,aAPe;AAQf6C,MAAAA,QARe;AASf5C,MAAAA,OATe;AAUf6C,MAAAA,QAVe;AAWfvG,MAAAA,KAAK,EAAEqB,MAAM,GAAG,GAXD;AAYfjB,MAAAA,GAZe;AAaf8B,MAAAA;AAbe,KAAjB;AAeAvC,IAAAA,KAAK,CAACkG,OAAN,CAAc,CAAd,EAAiB;AACftC,MAAAA,GAAG,EAAE,IADU;AAEfC,MAAAA,OAFe;AAGfxD,MAAAA,KAAK,EAAEqB,MAAM,GAAG;AAHD,KAAjB;AAKD,GA1CD;;AA4CA1B,EAAAA,KAAK,CAAC8G,YAAN,GAAsBC,MAAD,IAAY;AAC/B,WAAOrG,oBAAWoG,YAAX,CAAwBC,MAAxB,CAAP;AACD,GAFD;;AAIA/G,EAAAA,KAAK,CAACgH,yBAAN,GAAmCC,0BAAD,IAAgC;AAChE,WAAOvG,oBAAWsG,yBAAX,CAAqC5F,IAArC,EAA2C6F,0BAA3C,CAAP;AACD,GAFD;;AAIAjH,EAAAA,KAAK,CAACkH,SAAN,GAAkB,MAAM;AACtB,WAAOxG,oBAAWwG,SAAX,CAAqB9F,IAArB,CAAP;AACD,GAFD;;AAIApB,EAAAA,KAAK,CAACmH,WAAN,GAAoB,MAAM;AACxB,WAAO/F,IAAI,KACTA,IAAI,CAACgG,SAAL,IACAhG,IAAI,CAACmB,IAAL,KAAc,kBAAd,IAAoCnB,IAAI,CAACiG,KAAL,CAAWD,SAD/C,IAEA,CAAC,wBAAD,EAA2B,0BAA3B,EAAuD9E,QAAvD,CAAgElB,IAAI,CAACmB,IAArE,KACEnB,IAAI,CAACkG,WAAL,CAAiBF,SAJV,CAAX;AAMD,GAPD;;AASApH,EAAAA,KAAK,CAACuH,aAAN,GAAsB,MAAM;AAC1B,WAAO7G,oBAAW6G,aAAX,CAAyBnG,IAAzB,CAAP;AACD,GAFD;;AAIApB,EAAAA,KAAK,CAACwH,gBAAN,GAA0B3G,OAAD,IAAa;AACpC,UAAMmD,IAAI,GAAGhE,KAAK,CAACe,mBAAN,CAA0B;AAACF,MAAAA;AAAD,KAA1B,CAAb;;AACA,QAAI,CAACmD,IAAL,EAAW;AACT,aAAO,KAAP;AACD;;AAED,WAAOtD,oBAAW8G,gBAAX,CAA4BnG,KAA5B,EAAmC2C,IAAnC,CAAP;AACD,GAPD;;AASAhE,EAAAA,KAAK,CAACe,mBAAN,GAA4B,CAAC;AAACF,IAAAA,OAAD;AAAU4G,IAAAA,uBAAuB,GAAG,KAApC;AAA2CC,IAAAA,iBAAiB,GAAG,KAA/D;AAAsEC,IAAAA,cAAc,GAAI,qBAAoB9G,OAAQ;AAApH,GAAD,KAA8H;AACxJ,UAAMC,GAAG,GAAGJ,oBAAWK,mBAAX,CAA+BlB,OAA/B,EAAwCE,IAAxC,EAA8Cc,OAA9C,EAAuDf,iBAAvD,CAAZ;;AACA,UAAMkB,QAAQ,GAAGF,GAAG,IAAI,OAAOA,GAAP,KAAe,QAAvC;;AACA,QAAId,KAAK,CAAC4H,MAAN,CAAa/G,OAAb,MAA0BC,GAAG,KAAK,KAAR,IAAiBE,QAAQ,IAAI,CAACF,GAAG,CAACG,WAA5D,CAAJ,EAA8E;AAC5E,UAAIwG,uBAAJ,EAA6B;AAC3B,eAAO;AACLvG,UAAAA,OAAO,EAAE,IADJ;AAELL,UAAAA;AAFK,SAAP;AAID;;AACD,YAAMX,OAAO,GAAGc,QAAQ,IAAIF,GAAG,CAACZ,OAAhB,IAA2ByH,cAA3C;AACAxH,MAAAA,MAAM,CAACD,OAAD,EAAU,IAAV,EAAgBF,KAAK,CAAC6H,OAAN,CAAchH,OAAd,EAAuB,CAAvB,CAAhB,CAAN;AAEA,aAAO,KAAP;AACD;;AAED,WAAOG,QAAQ,IAAI,CAAC0G,iBAAb,GAAiC5G,GAAG,CAACG,WAArC,GAAmDH,GAA1D;AACD,GAjBD;;AAmBAd,EAAAA,KAAK,CAAC8H,UAAN,GAAmB,CAAC9D,IAAD,EAAO+D,WAAP,KAAuB;AACxC,WAAOrH,oBAAWoH,UAAX,CAAsBjI,OAAtB,EAA+BE,IAA/B,EAAqCiE,IAArC,EAA2C+D,WAA3C,CAAP;AACD,GAFD;;AAIA/H,EAAAA,KAAK,CAACyC,OAAN,GAAiBuF,KAAD,IAAW;AACzB,WAAOtH,oBAAW+B,OAAX,CAAmBpB,KAAnB,EAA0B2G,KAA1B,CAAP;AACD,GAFD;;AAIAhI,EAAAA,KAAK,CAAC4H,MAAN,GAAgB5D,IAAD,IAAU;AACvB,WAAOtD,oBAAWkH,MAAX,CAAkBvG,KAAlB,EAAyB2C,IAAzB,CAAP;AACD,GAFD;;AAIAhE,EAAAA,KAAK,CAACiI,YAAN,GAAsBjE,IAAD,IAAU;AAC7B,WAAOtD,oBAAWuH,YAAX,CAAwBjE,IAAxB,CAAP;AACD,GAFD;;AAIAhE,EAAAA,KAAK,CAACkI,qBAAN,GAA+BlE,IAAD,IAAU;AACtC,WAAOtD,oBAAWwH,qBAAX,CAAiClE,IAAjC,CAAP;AACD,GAFD;;AAIAhE,EAAAA,KAAK,CAACmI,SAAN,GAAkB,MAAM;AAAA;;AACtB,QACEnG,kBAAkB,KAAK,KAAvB,KACGhC,KAAK,CAAC4H,MAAN,CAAa,QAAb,KAA0B5H,KAAK,CAACoI,WAAN,CAAkB,QAAlB,CAD7B,KAEArG,oBAAoB,KAAK,KAAzB,KACG/B,KAAK,CAAC4H,MAAN,CAAa,UAAb,KAA4B5H,KAAK,CAACoI,WAAN,CAAkB,UAAlB,CAD/B,CAFA,IAIAnG,sBAAsB,KAAK,KAA3B,KACGjC,KAAK,CAAC4H,MAAN,CAAa,YAAb,KAA8B5H,KAAK,CAACoI,WAAN,CAAkB,YAAlB,CADjC,CAJA,IAOAlG,2BAA2B,KACxBlC,KAAK,CAACyC,OAAN,CAAc,CAAC,UAAD,EAAa,SAAb,CAAd,KACCzC,KAAK,CAACoI,WAAN,CAAkB,UAAlB,CADD,IAEGpI,KAAK,CAACoI,WAAN,CAAkB,SAAlB,CAHqB,CAR7B,EAWuC;AACrC,aAAO,IAAP;AACD;;AAED,QAAI1H,oBAAW2H,mBAAX,CACFhH,KADE,EACKD,IADL,EACWvB,OADX,EACoB4B,UAAU,CAAC6G,IAAX,CAAgBC,MADpC,CAAJ,EAEG;AACD,aAAO,IAAP;AACD;;AAED,UAAMC,UAAU,iDAAG3I,OAAO,CAAC4I,OAAR,CAAgB,CAAhB,CAAH,sDAAG,kBAAoBD,UAAvB,yEAAqC,CACnD,YADmD,EAEnD,IAAGzI,IAAI,KAAK,SAAT,GAAqB,EAArB,GAA0B,CAAC,YAAD,CAA7B,CAFmD,CAArD;;AAIA,QAAIyI,UAAU,CAACzC,MAAX,IAAqB/F,KAAK,CAAC0I,cAAN,CAAqBF,UAArB,EAAiCzC,MAA1D,EAAkE;AAChE,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD,GA/BD;;AAiCA,GACE,0BADF,EAEE,0BAFF,EAGErB,OAHF,CAGWiE,MAAD,IAAY;AACpB3I,IAAAA,KAAK,CAAC2I,MAAD,CAAL,GAAgB,CAAC9H,OAAD,EAAU+H,aAAV,KAA4B;AAC1C,YAAMC,MAAM,GAAGnI,oBAAWiI,MAAX,EAAmB9H,OAAnB,CAAf;;AACA,UAAIgI,MAAJ,EAAY;AACV,eAAO,IAAP;AACD;;AAED,UAAI,CAACD,aAAL,EAAoB;AAClB,eAAO,KAAP;AACD;;AAED,YAAME,WAAW,GAAGF,aAAa,CAAClF,IAAd,CAAoBqF,YAAD,IAAkB;AACvD,eAAOrI,oBAAWiI,MAAX,EAAmB9H,OAAnB,EAA4BkI,YAA5B,CAAP;AACD,OAFmB,CAApB;AAIA,aAAOD,WAAW,GAAG;AAACE,QAAAA,SAAS,EAAE;AAAZ,OAAH,GAAuB,KAAzC;AACD,KAfD;AAgBD,GApBD;AAsBA,GACE,yBADF,EAEE,yBAFF,EAGE,kCAHF,EAIEtE,OAJF,CAIWiE,MAAD,IAAY;AACpB3I,IAAAA,KAAK,CAAC2I,MAAD,CAAL,GAAgB,CAAC9H,OAAD,EAAU+H,aAAV,KAA4B;AAC1C,YAAMC,MAAM,GAAGnI,oBAAWiI,MAAX,EAAmB9H,OAAnB,CAAf;;AACA,UAAI,CAACgI,MAAL,EAAa;AACX,eAAO,KAAP;AACD,OAJyC,CAM1C;;;AAEA,YAAMC,WAAW,GAAGF,aAAa,CAACK,KAAd,CAAqBF,YAAD,IAAkB;AACxD,eAAOrI,oBAAWiI,MAAX,EAAmB9H,OAAnB,EAA4BkI,YAA5B,CAAP;AACD,OAFmB,CAApB;AAIA,aAAOD,WAAW,GAAG,IAAH,GAAU;AAACE,QAAAA,SAAS,EAAE;AAAZ,OAA5B;AACD,KAbD;AAcD,GAnBD;AAqBA,GACE,uBADF,EAEE,sBAFF,EAGEtE,OAHF,CAGWiE,MAAD,IAAY;AACpB3I,IAAAA,KAAK,CAAC2I,MAAD,CAAL,GAAiB9H,OAAD,IAAa;AAC3B,aAAOH,oBAAWiI,MAAX,EAAmB9H,OAAnB,CAAP;AACD,KAFD;AAGD,GAPD;;AASAb,EAAAA,KAAK,CAACkJ,sBAAN,GAAgCC,GAAD,IAAS;AACtC,WAAOzI,oBAAWwI,sBAAX,CAAkCC,GAAlC,EAAuC5H,QAAQ,CAAC6H,cAAhD,CAAP;AACD,GAFD;;AAIApJ,EAAAA,KAAK,CAACqJ,iBAAN,GAA2B5I,GAAD,IAAS;AACjC,WAAOC,oBAAW2I,iBAAX,CAA6B5I,GAA7B,CAAP;AACD,GAFD;;AAIAT,EAAAA,KAAK,CAACsJ,yCAAN,GAAmDC,kBAAD,IAAwB;AACxE,WAAO7I,oBAAW4I,yCAAX,CAAqDlI,IAArD,EAA2DmI,kBAA3D,CAAP;AACD,GAFD;;AAIAvJ,EAAAA,KAAK,CAACwJ,aAAN,GAAsB,MAAM;AAC1B,QAAI,CAAC,wBAAD,EAA2B,0BAA3B,EAAuDlH,QAAvD,CAAgElB,IAAI,CAACmB,IAArE,CAAJ,EAAgF;AAC9E,aAAO7B,oBAAW8I,aAAX,CAAyBpI,IAAI,CAACkG,WAA9B,CAAP;AACD;;AAED,WAAO5G,oBAAW8I,aAAX,CAAyBpI,IAAzB,CAAP;AACD,GAND;;AAQApB,EAAAA,KAAK,CAACyJ,mBAAN,GAA4B,MAAM;AAChC,WAAO/I,oBAAW8I,aAAX,CAAyBpI,IAAzB,EAA+B,IAA/B,CAAP;AACD,GAFD;;AAIApB,EAAAA,KAAK,CAAC0J,aAAN,GAAsB,MAAM;AAC1B,WAAOhJ,oBAAWgJ,aAAX,CAAyBtI,IAAzB,CAAP;AACD,GAFD;;AAIApB,EAAAA,KAAK,CAAC2J,OAAN,GAAgB,MAAM;AACpB,WAAOvI,IAAI,CAACwI,KAAZ;AACD,GAFD;;AAIA5J,EAAAA,KAAK,CAAC6H,OAAN,GAAiBhH,OAAD,IAAa;AAC3B,WAAOb,KAAK,CAAC6J,UAAN,CAAkBC,IAAD,IAAU;AAChC,aAAOA,IAAI,CAACrJ,GAAL,KAAaI,OAApB;AACD,KAFM,CAAP;AAGD,GAJD;;AAMAb,EAAAA,KAAK,CAAC0I,cAAN,GAAwBqB,OAAD,IAAa;AAClC,WAAO/J,KAAK,CAAC6J,UAAN,CAAkBpJ,GAAD,IAAS;AAC/B,aAAOsJ,OAAO,CAACzH,QAAR,CAAiB7B,GAAG,CAACA,GAArB,CAAP;AACD,KAFM,CAAP;AAGD,GAJD;;AAMAT,EAAAA,KAAK,CAAC6J,UAAN,GAAoBG,MAAD,IAAY;AAC7B,WAAOtJ,oBAAWmJ,UAAX,CAAsBxI,KAAK,CAAC+D,IAA5B,EAAkC4E,MAAlC,CAAP;AACD,GAFD;;AAIAhK,EAAAA,KAAK,CAACiK,aAAN,GAAuB7E,IAAD,IAAU;AAC9B,WAAO1E,oBAAWuJ,aAAX,CAAyBpK,OAAzB,EAAkCE,IAAlC,EAAwCqF,IAAxC,EAA8CtF,iBAA9C,CAAP;AACD,GAFD;;AAIAE,EAAAA,KAAK,CAACkK,YAAN,GAAsBrJ,OAAD,IAAa;AAAA;;AAChC,UAAM;AAACuE,MAAAA;AAAD,8BAASvF,OAAO,CAAC4I,OAAR,CAAgB,CAAhB,CAAT,mEAA+B,EAArC;AAEA,WAAO0B,OAAO,CAAC/E,IAAI,IAAIA,IAAI,CAAC9C,QAAL,CAAczB,OAAd,CAAT,CAAd;AACD,GAJD;;AAMAb,EAAAA,KAAK,CAACoK,YAAN,GAAqB,MAAM;AACzB,WAAO,CAAC,GAAGzI,SAAJ,EAAeP,IAAf,EAAqBiJ,OAArB,GAA+BC,IAA/B,CAAqCC,MAAD,IAAY;AACrD,aAAOA,MAAM,IAAI,CAAC,kBAAD,EAAqB,iBAArB,EAAwCjI,QAAxC,CAAiDiI,MAAM,CAAChI,IAAxD,CAAjB;AACD,KAFM,KAED,IAFN;AAGD,GAJD;;AAMAvC,EAAAA,KAAK,CAACwK,aAAN,GAAsB,MAAM;AAC1B,UAAMC,SAAS,GAAGzK,KAAK,CAACoK,YAAN,EAAlB;;AAEA,QAAI,CAACK,SAAL,EAAgB;AACd,aAAO,IAAP;AACD;;AAED,UAAMC,cAAc,GAAG,mCAAgB7I,UAAhB,EAA4B4I,SAA5B,EAAuC;AAC5DtI,MAAAA,QAD4D;AAE5DC,MAAAA;AAF4D,KAAvC,CAAvB;;AAKA,QAAIsI,cAAJ,EAAoB;AAClB,YAAMC,KAAK,GAAG,IAAIC,MAAJ,CAAWF,cAAc,CAACtK,GAAf,CAAmBC,KAAnB,CAAyBC,MAApC,CAAd;AAEA,aAAO,gCAAaoK,cAAb,EAA6BC,KAA7B,CAAP;AACD;;AAED,WAAO,IAAP;AACD,GAnBD;;AAqBA3K,EAAAA,KAAK,CAACoI,WAAN,GAAqBvH,OAAD,IAAa;AAC/B,UAAMgK,UAAU,GAAG7K,KAAK,CAACwK,aAAN,EAAnB;AAEA,WAAOL,OAAO,CAACU,UAAD,CAAP,IAAuBnK,oBAAWkH,MAAX,CAAkBiD,UAAlB,EAA8BhK,OAA9B,CAA9B;AACD,GAJD;;AAMAb,EAAAA,KAAK,CAAC8K,mBAAN,GAA4B,CAACjK,OAAD,EAAUkK,YAAV,EAAwBtD,uBAAuB,GAAG,KAAlD,KAA4D;AACtF,UAAM3B,aAAa,GAAG9F,KAAK,CAACe,mBAAN,CAA0B;AAC9C0G,MAAAA,uBAD8C;AAE9C5G,MAAAA;AAF8C,KAA1B,CAAtB;;AAIA,QAAI,CAACiF,aAAD,IACF2B,uBAAuB,IAAI3B,aAA3B,IAA4C,OAAOA,aAAP,KAAyB,QADvE,EAEE;AACA;AACD;;AACD,UAAMkF,iBAAiB,GAAGC,gBAAEjB,MAAF,CAAS3I,KAAK,CAAC+D,IAAf,EAAqB;AAC7C3E,MAAAA,GAAG,EAAEqF;AADwC,KAArB,CAA1B;;AAIAkF,IAAAA,iBAAiB,CAACtG,OAAlB,CAA2BwG,gBAAD,IAAsB;AAC9CH,MAAAA,YAAY,CAACG,gBAAD,EAAmBpF,aAAnB,CAAZ;AACD,KAFD;AAGD,GAjBD;;AAmBA,SAAO9F,KAAP;AACD,CA/jBD;;AAikBA,MAAMmL,WAAW,GAAItL,OAAD,IAAa;AAAA;;AAC/B;AACA,QAAM0B,QAAQ,GAAG;AACf;AACA6J,IAAAA,aAAa,EAAEjB,OAAO,0BAACtK,OAAO,CAAC0B,QAAR,CAAiBF,KAAlB,0DAAC,sBAAwB+J,aAAzB,CAFP;AAGfC,IAAAA,cAAc,EAAElB,OAAO,2BAACtK,OAAO,CAAC0B,QAAR,CAAiBF,KAAlB,2DAAC,uBAAwBgK,cAAzB,CAHR;AAIflJ,IAAAA,QAAQ,EAAEmJ,MAAM,qDAACzL,OAAO,CAAC0B,QAAR,CAAiBF,KAAlB,2DAAC,uBAAwBc,QAAzB,2EAAqC,CAArC,CAJD;AAKfC,IAAAA,QAAQ,EAAEkJ,MAAM,qDAACzL,OAAO,CAAC0B,QAAR,CAAiBF,KAAlB,2DAAC,uBAAwBe,QAAzB,2EAAqC,CAArC,CALD;AAOf;AACAtC,IAAAA,iBAAiB,sDAAED,OAAO,CAAC0B,QAAR,CAAiBF,KAAnB,2DAAE,uBAAwBvB,iBAA1B,2EAA+C,EARjD;AAUf;AACAyL,IAAAA,cAAc,uDAAE1L,OAAO,CAAC0B,QAAR,CAAiBF,KAAnB,4DAAE,wBAAwBkK,cAA1B,2EAA4C,EAX3C;AAaf;AACAnC,IAAAA,cAAc,wDAAEvJ,OAAO,CAAC0B,QAAR,CAAiBF,KAAnB,4DAAE,wBAAwB+H,cAA1B,6EAA4C,EAd3C;AAgBf;AACA;AACArH,IAAAA,oBAAoB,6BAAElC,OAAO,CAAC0B,QAAR,CAAiBF,KAAnB,4DAAE,wBAAwBU,oBAlB/B;AAmBfC,IAAAA,kBAAkB,6BAAEnC,OAAO,CAAC0B,QAAR,CAAiBF,KAAnB,4DAAE,wBAAwBW,kBAnB7B;AAoBfC,IAAAA,sBAAsB,6BAAEpC,OAAO,CAAC0B,QAAR,CAAiBF,KAAnB,4DAAE,wBAAwBY,sBApBjC;AAqBfC,IAAAA,2BAA2B,6BAAErC,OAAO,CAAC0B,QAAR,CAAiBF,KAAnB,4DAAE,wBAAwBa,2BArBtC;AAuBf;AACAnC,IAAAA,IAAI,wDAAEF,OAAO,CAAC0B,QAAR,CAAiBF,KAAnB,4DAAE,wBAAwBtB,IAA1B,6EACDF,OAAO,CAAC2L,UAAR,CAAmBlJ,QAAnB,CAA4B,oBAA5B,IAAoD,YAApD,GAAmE;AAzBvD,GAAjB;AA2BA;;AAEA5B,sBAAW+K,eAAX,CAA2BlK,QAAQ,CAACxB,IAApC;;AACA,MAAI;AACFW,wBAAWgL,oBAAX,CAAgCnK,QAAQ,CAAC6H,cAAzC;AACD,GAFD,CAEE,OAAOuC,KAAP,EAAc;AACd9L,IAAAA,OAAO,CAACM,MAAR,CAAe;AACbC,MAAAA,GAAG,EAAE;AACHC,QAAAA,KAAK,EAAE;AACLC,UAAAA,MAAM,EAAE,CADH;AAELC,UAAAA,IAAI,EAAE;AAFD;AADJ,OADQ;AAObL,MAAAA,OAAO,EAAEyL,KAAK,CAACzL;AAPF,KAAf;AAUA,WAAO,KAAP;AACD;;AAED,SAAOqB,QAAP;AACD,CAjDD;AAmDA;AACA;AACA;AACA;AACA;AACA;;;;;AACA,MAAMqK,UAAU,GAAG,CAAC/L,OAAD,EAAUgM,WAAV,KAA0B;AAC3C,QAAM1L,MAAM,GAAG,CAACD,OAAD,EAAU4L,GAAG,GAAG,IAAhB,EAAsBC,QAAQ,GAAG,IAAjC,EAAuC/I,IAAI,GAAG,IAA9C,KAAuD;AACpE,QAAI5C,GAAJ;;AAEA,QAAI2L,QAAJ,EAAc;AACZ,UAAI,EAAE,UAAUA,QAAZ,CAAJ,EAA2B;AACzBA,QAAAA,QAAQ,CAACxL,IAAT,GAAgBwL,QAAQ,CAACtI,MAAT,CAAgB,CAAhB,EAAmBoB,MAAnC;AACD;;AAED,YAAMmH,UAAU,GAAGH,WAAW,CAACzL,GAAZ,CAAgBC,KAAhB,CAAsBE,IAAtB,GAA6BwL,QAAQ,CAACxL,IAAzD;AAEAH,MAAAA,GAAG,GAAG;AACJwD,QAAAA,GAAG,EAAE;AAACrD,UAAAA,IAAI,EAAEyL;AAAP,SADD;AAEJ3L,QAAAA,KAAK,EAAE;AAACE,UAAAA,IAAI,EAAEyL;AAAP;AAFH,OAAN;;AAIA,UAAID,QAAQ,CAACzL,MAAb,EAAqB;AACnB,cAAM2L,SAAS,GAAGJ,WAAW,CAACzL,GAAZ,CAAgBC,KAAhB,CAAsBC,MAAtB,GAA+ByL,QAAQ,CAACzL,MAA1D;AAEAF,QAAAA,GAAG,CAACwD,GAAJ,CAAQtD,MAAR,GAAiB2L,SAAjB;AACA7L,QAAAA,GAAG,CAACC,KAAJ,CAAUC,MAAV,GAAmB2L,SAAnB;AACD;AACF;;AAEDpM,IAAAA,OAAO,CAACM,MAAR,CAAe;AACb6C,MAAAA,IADa;AAEb8I,MAAAA,GAFa;AAGb1L,MAAAA,GAHa;AAIbF,MAAAA,OAJa;AAKbkB,MAAAA,IAAI,EAAEyK;AALO,KAAf;AAOD,GA7BD;;AA+BA,SAAO1L,MAAP;AACD,CAjCD;AAmCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA,MAAM+L,OAAO,GAAG,CACdC,IADc,EAEdzK,MAFc,EAENL,KAFM,EAGdI,UAHc,EAGF5B,OAHE,EAGO4G,KAHP,EAGcnF,SAHd,EAGyBF,IAHzB,EAG+BG,QAH/B,EAIdM,UAJc,EAIFuK,QAJE,EAIQC,KAJR,EAIe7K,YAJf,KAKX;AACH,QAAMrB,MAAM,GAAGyL,UAAU,CAAC/L,OAAD,EAAUyB,SAAV,CAAzB;AAEA,QAAMtB,KAAK,GAAGmB,QAAQ,CACpBC,IADoB,EAEpBC,KAFoB,EAGpBC,SAHoB,EAIpBC,QAJoB,EAKpBpB,MALoB,EAMpBN,OANoB,EAOpB2B,YAPoB,EAQpBC,UARoB,EASpBC,MAToB,CAAtB;;AAYA,MACE,CAACD,UAAU,CAAC6K,aAAZ,IAA6B/K,QAAQ,CAAC8J,cAAtC,IACArL,KAAK,CAAC4H,MAAN,CAAa,UAAb,CAFF,EAGE;AACA;AACD;;AACD,MACE,CAACnG,UAAU,CAAC8K,YAAZ,IAA4BhL,QAAQ,CAAC6J,aAArC,KACCpL,KAAK,CAAC4H,MAAN,CAAa,SAAb,KAA2BqD,gBAAEjB,MAAF,CAAS3I,KAAK,CAAC+D,IAAf,EAAqB;AAC/C3E,IAAAA,GAAG,EAAE;AAD0C,GAArB,EAEzBiD,IAFyB,CAEpB,CAAC;AAACO,IAAAA;AAAD,GAAD,KAAmB;AACzB,WAAOA,WAAW,KAAK,SAAvB;AACD,GAJ2B,CAD5B,CADF,EAOE;AACA;AACD;;AAEDmI,EAAAA,QAAQ,CAAC;AACPvM,IAAAA,OADO;AAEPH,IAAAA,WAFO;AAGPgC,IAAAA,MAHO;AAIPyK,IAAAA,IAJO;AAKP3K,IAAAA,YALO;AAMPH,IAAAA,KANO;AAOPC,IAAAA,SAPO;AAQPF,IAAAA,IARO;AASPjB,IAAAA,MATO;AAUPoB,IAAAA,QAVO;AAWPM,IAAAA,UAXO;AAYPwK,IAAAA,KAZO;AAaPrM,IAAAA;AAbO,GAAD,CAAR;AAeD,CApDD;;AAsDA,MAAMwM,iBAAiB,GAAG,UAAU/F,KAAV,EAAiBnF,SAAjB,EAA4B;AACpD,QAAMmL,UAAU,GAAGhG,KAAK,CAACnF,SAAS,CAAClB,GAAV,CAAcC,KAAd,CAAoBE,IAApB,GAA2B,CAA5B,CAAxB;AACA,QAAMoK,KAAK,GAAG8B,UAAU,CAACC,MAAX,CAAkB,CAAlB,EAAqB9B,MAArB,CAA4BtJ,SAAS,CAAClB,GAAV,CAAcC,KAAd,CAAoBC,MAAhD,CAAd;AACA,QAAMqM,IAAI,GAAG,gCAAarL,SAAb,EAAwBqJ,KAAxB,CAAb;AAEA,SAAO,CAACA,KAAD,EAAQgC,IAAR,CAAP;AACD,CAND;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,gBAAgB,GAAG,CAACR,QAAD,EAAW3K,UAAX,EAAuBoL,QAAvB,EAAiCC,gBAAjC,KAAsD;AAC7E,QAAMC,aAAa,GAAG,EAAtB;AAEA,MAAIhK,OAAJ;AACA,MAAIxB,QAAJ;;AACA,QAAMyL,YAAY,GAAG,CAACnN,OAAD,EAAUuB,IAAV,EAAgB6L,UAAhB,EAA4BZ,KAA5B,EAAmCa,QAAnC,KAAgD;AACnE,UAAMrL,UAAU,GAAGhC,OAAO,CAACiC,aAAR,EAAnB;AACA,UAAM;AAAC2E,MAAAA;AAAD,QAAU5E,UAAhB;AAEA,UAAM7B,KAAK,GAAGJ,aAAa,CAACC,OAAD,EAAU0B,QAAV,CAA3B;AACA0L,IAAAA,UAAU,CAACvI,OAAX,CAAoBpD,SAAD,IAAe;AAChC,UAAI,CAAE,WAAD,CAAc6L,IAAd,CAAmBtL,UAAU,CAACuL,OAAX,CAAmB9L,SAAnB,CAAnB,CAAL,EAAwD;AACtD;AACD;;AAED,YAAM,CAACI,MAAD,EAASL,KAAT,IAAkBmL,iBAAiB,CACvC/F,KADuC,EAChCnF,SADgC,CAAzC;;AAIA,UAAIwL,gBAAJ,EAAsB;AACpBD,QAAAA,QAAQ,CAACnI,OAAT,CAAiB,CAAC;AAAC2I,UAAAA;AAAD,SAAD,EAAY7I,GAAZ,KAAoB;AACnC,cAAI6I,OAAO,IAAItK,OAAO,CAACsK,OAAD,EAAUhM,KAAV,CAAP,KAA4B,KAA3C,EAAkD;AAChD;AACD;;AACD6K,UAAAA,OAAO,CACL;AACEmB,YAAAA,OADF;AAEEhI,YAAAA,SAAS,EAAEb,GAFb;AAGE8I,YAAAA,QAAQ,EAAElM,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAEmB;AAHlB,WADK,EAMLb,MANK,EAMGL,KANH,EAOLI,UAPK,EAOO5B,OAPP,EAOgB4G,KAPhB,EAOuBnF,SAPvB,EAOkCF,IAPlC,EAQLG,QARK,EAQKM,UARL,EAQiBuK,QARjB,EASLC,KATK,EASE,IATF,CAAP;AAWD,SAfD;AAiBA;AACD;;AAED,UAAIkB,WAAJ;AACA,UAAIlI,SAAJ;;AACA,UAAIwH,QAAQ,IAAIA,QAAQ,CAAC5D,KAAT,CAAe,CAAC;AAACoE,QAAAA;AAAD,OAAD,EAAY7I,GAAZ,KAAoB;AACjD+I,QAAAA,WAAW,GAAGF,OAAd;AACAhI,QAAAA,SAAS,GAAGb,GAAZ;AAEA,eAAO6I,OAAO,IAAItK,OAAO,CAACsK,OAAD,EAAUhM,KAAV,CAAP,KAA4B,KAA9C;AACD,OALe,CAAhB,EAKI;AACF;AACD;;AAED6K,MAAAA,OAAO,CACLqB,WAAW,GAAG;AACZF,QAAAA,OAAO,EAAEE,WADG;AAEZlI,QAAAA,SAFY;AAGZiI,QAAAA,QAAQ,EAAElM,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAEmB;AAHJ,OAAH,GAIP;AACF8C,QAAAA,SADE;AAEFiI,QAAAA,QAAQ,EAAElM,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAEmB;AAFd,OALC,EASLb,MATK,EASGL,KATH,EAULI,UAVK,EAUO5B,OAVP,EAUgB4G,KAVhB,EAUuBnF,SAVvB,EAUkCF,IAVlC,EAWLG,QAXK,EAWKM,UAXL,EAWiBuK,QAXjB,EAYLC,KAZK,EAYE,IAZF,CAAP;AAcD,KAvDD;;AAwDA,QAAIa,QAAQ,IAAIzL,UAAU,CAAC+L,IAA3B,EAAiC;AAC/B/L,MAAAA,UAAU,CAAC+L,IAAX,CAAgB;AACd3N,QAAAA,OADc;AAEdwM,QAAAA,KAFc;AAGdrM,QAAAA;AAHc,OAAhB;AAKD;AACF,GApED;;AAsEA,SAAO;AACLyN,IAAAA,MAAM,CAAE5N,OAAF,EAAW;AACf,YAAMgC,UAAU,GAAGhC,OAAO,CAACiC,aAAR,EAAnB;AACAP,MAAAA,QAAQ,GAAG4J,WAAW,CAACtL,OAAD,CAAtB;;AACA,UAAI,CAAC0B,QAAL,EAAe;AACb,eAAO,EAAP;AACD;;AACD,UAAIsL,QAAJ,EAAc;AACZ9J,QAAAA,OAAO,GAAG,kCAAexB,QAAf,CAAV;AACD;;AAED,YAAM8K,KAAK,GAAG,EAAd;AAEA,aAAO;AACL,yBAAkBjL,IAAlB,EAAwB;AACtB,gBAAMsM,WAAW,GAAG,qCAAkBtM,IAAlB,EAAwBS,UAAxB,CAApB;;AAEA,cAAIT,IAAI,KAAKsM,WAAb,EAA0B;AACxB;AACD;;AAED,gBAAM7B,WAAW,GAAG,mCAAgBhK,UAAhB,EAA4BT,IAA5B,EAAkCG,QAAlC,CAApB;;AACA,cAAIwL,aAAa,CAACzK,QAAd,CAAuBuJ,WAAvB,CAAJ,EAAyC;AACvC;AACD;;AACD,cAAI,CAACA,WAAL,EAAkB;AAChB,gBAAIpK,UAAU,CAACkM,UAAf,EAA2B;AACzBlM,cAAAA,UAAU,CAACkM,UAAX,CAAsB;AACpBvM,gBAAAA,IADoB;AAEpBiL,gBAAAA;AAFoB,eAAtB;AAID;;AAED;AACD;;AAEDU,UAAAA,aAAa,CAAC3I,IAAd,CAAmByH,WAAnB;AACAmB,UAAAA,YAAY,CAACnN,OAAD,EAAUuB,IAAV,EAAgB,CAACyK,WAAD,CAAhB,EAA+BQ,KAA/B,CAAZ;AACD,SAzBI;;AA0BL,yBAAkB;AAChB,gBAAMuB,WAAW,GAAG/L,UAAU,CAACgM,cAAX,EAApB;AACA,gBAAMC,cAAc,GAAGF,WAAW,CAAC5D,MAAZ,CAAoB5I,IAAD,IAAU;AAClD,mBAAO,CAAC2L,aAAa,CAACzK,QAAd,CAAuBlB,IAAvB,CAAR;AACD,WAFsB,CAAvB;AAIA4L,UAAAA,YAAY,CAACnN,OAAD,EAAU,IAAV,EAAgBiO,cAAhB,EAAgCzB,KAAhC,EAAuC,IAAvC,CAAZ;AACD;;AAjCI,OAAP;AAmCD,KAhDI;;AAiDL/D,IAAAA,IAAI,EAAE7G,UAAU,CAAC6G;AAjDZ,GAAP;AAmDD,CA9HD;AAgIA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMyF,SAAS,GAAG,CAAC3B,QAAD,EAAW3K,UAAX,KAA0B;AAC1C,SAAO;AACLgM,IAAAA,MAAM,CAAE5N,OAAF,EAAW;AACf,YAAMgC,UAAU,GAAGhC,OAAO,CAACiC,aAAR,EAAnB;AACA,YAAMP,QAAQ,GAAG4J,WAAW,CAACtL,OAAD,CAA5B;;AACA,UAAI,CAAC0B,QAAL,EAAe;AACb,eAAO,EAAP;AACD;;AAED,aAAO;AACL,yBAAkB;AAChB,gBAAMqM,WAAW,GAAG/L,UAAU,CAACgM,cAAX,EAApB;AACA,gBAAM;AAACpH,YAAAA;AAAD,cAAU5E,UAAhB;AACA,gBAAM7B,KAAK,GAAGJ,aAAa,CAACC,OAAD,EAAU0B,QAAV,CAA3B;AAEA6K,UAAAA,QAAQ,CAAC;AACPwB,YAAAA,WADO;AAEP/N,YAAAA,OAFO;AAGP4G,YAAAA,KAHO;AAIPmF,YAAAA,UAJO;AAKPrK,YAAAA,QALO;AAMPM,YAAAA,UANO;AAOP7B,YAAAA;AAPO,WAAD,CAAR;AASD;;AAfI,OAAP;AAiBD,KAzBI;;AA0BLsI,IAAAA,IAAI,EAAE7G,UAAU,CAAC6G;AA1BZ,GAAP;AA4BD,CA7BD;;AAoCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,SAAS0F,YAAT,CAAuB5B,QAAvB,EAAiC3K,UAAjC,EAA6C;AAAA;;AAC1D,QAAMwM,QAAQ,GAAGxM,UAAH,aAAGA,UAAH,2CAAGA,UAAU,CAAE6G,IAAf,qDAAG,iBAAkB/F,IAAnC;;AACA,MAAI,CAAC0L,QAAD,IAAa,CAAC,CAAC,SAAD,EAAY,YAAZ,EAA0B,QAA1B,EAAoC3L,QAApC,CAA6C2L,QAA7C,CAAlB,EAA0E;AACxE,UAAM,IAAIC,SAAJ,CAAc,wFAAd,CAAN;AACD;;AACD,MAAI,OAAO9B,QAAP,KAAoB,UAAxB,EAAoC;AAClC,UAAM,IAAI8B,SAAJ,CAAc,2CAAd,CAAN;AACD;;AAED,MAAIzM,UAAU,CAACsM,SAAf,EAA0B;AACxB,WAAOA,SAAS,CAAC3B,QAAD,EAAW3K,UAAX,CAAhB;AACD;;AAED,MAAIA,UAAU,CAACmL,gBAAf,EAAiC;AAC/B,WAAOA,gBAAgB,CAACR,QAAD,EAAW3K,UAAX,CAAvB;AACD;;AAED,SAAO;AACL;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACIgM,IAAAA,MAAM,CAAE5N,OAAF,EAAW;AACf,YAAM0B,QAAQ,GAAG4J,WAAW,CAACtL,OAAD,CAA5B;;AACA,UAAI,CAAC0B,QAAL,EAAe;AACb,eAAO,EAAP;AACD;;AAED,UAAIsL,QAAJ;;AACA,UAAIpL,UAAU,CAAC0M,eAAX,IAA8B1M,UAAU,CAAC2M,eAAzC,IAA4D3M,UAAU,CAAC4M,YAA3E,EAAyF;AAAA;;AACvFxB,QAAAA,QAAQ,GAAGpL,UAAU,CAAC4M,YAAX,0BAA2BxO,OAAO,CAAC4I,OAAR,CAAgB,CAAhB,CAA3B,+CAA2B,mBAAoB6F,KAA/C,GACTzO,OAAO,CAAC4I,OAAR,CAAgB,CAAhB,EAAmB6F,KADV,GAET5N,oBAAW6N,gBAAX,CAA4B1O,OAA5B,EAAqC4B,UAAU,CAAC0M,eAAhD,CAFF;;AAIA,YAAItB,QAAJ,EAAc;AACZA,UAAAA,QAAQ,GAAGA,QAAQ,CAAC2B,GAAT,CAAcC,GAAD,IAAS;AAC/B,gBAAI,OAAOA,GAAP,KAAe,QAAf,IAA2B,CAACA,GAAG,CAAC5O,OAApC,EAA6C;AAC3C,qBAAO,EAAC,GAAG4O,GAAJ;AAAS5O,gBAAAA,OAAO,EAAE;AAAlB,eAAP;AACD;;AAED,mBAAO4O,GAAP;AACD,WANU,CAAX;AAOD;;AAED,cAAMC,WAAW,gBAAG7B,QAAH,8CAAG,UAAUvK,QAAV,CAAmB,KAAnB,CAApB;AACA,cAAMqM,YAAY,GAAG,CAACD,WAAD,mBAAgB7B,QAAhB,+CAAgB,WAAUvC,IAAV,CAAgBsE,IAAD,IAAU;AAC5D,iBAAO,CAAAA,IAAI,SAAJ,IAAAA,IAAI,WAAJ,YAAAA,IAAI,CAAE/O,OAAN,MAAkB,KAAzB;AACD,SAFoC,CAAhB,CAArB;;AAGA,YAAI6O,WAAW,IAAIC,YAAnB,EAAiC;AAC/B,iBAAO/B,gBAAgB,CACrBR,QADqB,EACX3K,UADW,EACCkN,YAAY,GAAG9B,QAAH,GAAc,IAD3B,EACiCpL,UAAU,CAAC4M,YAD5C,CAAhB,CAELZ,MAFK,CAEE5N,OAFF,CAAP;AAGD;AACF;;AACD,YAAMgC,UAAU,GAAGhC,OAAO,CAACiC,aAAR,EAAnB;AACA,YAAM;AAAC2E,QAAAA;AAAD,UAAU5E,UAAhB;AAEA,YAAMwK,KAAK,GAAG,EAAd;;AAEA,YAAMwC,UAAU,GAAG,CAAC1C,IAAD,EAAOpJ,OAAP,EAAgB3B,IAAhB,KAAyB;AAC1C,cAAME,SAAS,GAAG,mCAAgBO,UAAhB,EAA4BT,IAA5B,EAAkCG,QAAlC,CAAlB;;AAEA,YAAI,CAACD,SAAL,EAAgB;AACd;AACD;;AAED,cAAM,CAACI,MAAD,EAASL,KAAT,IAAkBmL,iBAAiB,CACvC/F,KADuC,EAChCnF,SADgC,CAAzC;;AAIA,aACE;AACA;AACA;AACAyB,QAAAA,OAAO,IAAIA,OAAO,CAAC1B,KAAD,CAAP,KAAmB,KAJhC,EAKE;AACA;AACD;;AAED6K,QAAAA,OAAO,CACLC,IADK,EACCzK,MADD,EACSL,KADT,EAELI,UAFK,EAEO5B,OAFP,EAEgB4G,KAFhB,EAEuBnF,SAFvB,EAEkCF,IAFlC,EAGLG,QAHK,EAGKM,UAHL,EAGiBuK,QAHjB,EAG2BC,KAH3B,CAAP;AAKD,OAzBD;;AA2BA,UAAIyC,aAAa,GAAG,EAApB;;AAEA,UAAIjC,QAAQ,KACVpL,UAAU,CAAC0M,eAAX,IAA8B1M,UAAU,CAAC2M,eAAzC,IAA4D3M,UAAU,CAAC4M,YAD7D,CAAZ,EAEG;AACDS,QAAAA,aAAa,GAAGpO,oBAAWqO,gBAAX,CACdlC,QADc,EAEdgC,UAFc,EAGd,kCAAetN,QAAf,CAHc,CAAhB;AAKD,OARD,MAQO;AACL,SACE,yBADF,EAEE,qBAFF,EAGE,oBAHF,EAIEmD,OAJF,CAIWuB,IAAD,IAAU;AAClB6I,UAAAA,aAAa,CAAC7I,IAAD,CAAb,GAAsB4I,UAAU,CAACG,IAAX,CAAgB,IAAhB,EAAsB;AAC1C1B,YAAAA,QAAQ,EAAErH;AADgC,WAAtB,EAEnB,IAFmB,CAAtB;AAGD,SARD;AASD;;AAED,UAAIxE,UAAU,CAAC+L,IAAf,EAAqB;AACnBsB,QAAAA,aAAa,CAAC,cAAD,CAAb,GAAgC,MAAM;AACpCrN,UAAAA,UAAU,CAAC+L,IAAX,CAAgB;AACd3N,YAAAA,OADc;AAEdwM,YAAAA;AAFc,WAAhB;AAID,SALD;AAMD;;AAED,aAAOyC,aAAP;AACD,KA1GI;;AA2GLxG,IAAAA,IAAI,EAAE7G,UAAU,CAAC6G;AA3GZ,GAAP;AA6GD","sourcesContent":["import {\n getReducedASTNode, getJSDocComment, commentHandler, parseComment,\n} from '@es-joy/jsdoccomment';\nimport {\n stringify as commentStringify,\n util,\n} from 'comment-parser';\nimport _ from 'lodash';\nimport jsdocUtils from './jsdocUtils';\n\nconst {\n rewireSpecs,\n seedTokens,\n} = util;\n\n/*\nconst {\n align as commentAlign,\n flow: commentFlow,\n indent: commentIndent,\n} = transforms;\n*/\n\nconst globalState = new Map();\n\nconst getBasicUtils = (context, {tagNamePreference, mode}) => {\n const utils = {};\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n utils.parseClosureTemplateTag = (tag) => {\n return jsdocUtils.parseClosureTemplateTag(tag);\n };\n\n utils.pathDoesNotBeginWith = jsdocUtils.pathDoesNotBeginWith;\n\n utils.getPreferredTagNameObject = ({tagName}) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (ret === false || isObject && !ret.replacement) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n return ret;\n };\n\n return utils;\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = getBasicUtils(context, settings);\n\n const {\n tagNamePreference,\n overrideReplacesDocs,\n ignoreReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n mode,\n } = settings;\n\n utils.isIteratingFunction = () => {\n return !iteratingAll || [\n 'MethodDefinition',\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(node && node.type);\n };\n\n utils.isVirtualFunction = () => {\n return iteratingAll && utils.hasATag(['callback', 'function', 'func', 'method']);\n };\n\n utils.stringify = (tagBlock, specRewire) => {\n return commentStringify(specRewire ? rewireSpecs(tagBlock) : tagBlock);\n };\n\n utils.reportJSDoc = (msg, tag, handler, specRewire, data) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc, specRewire);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag, data);\n };\n\n utils.getRegexFromString = (str, requiredFlags) => {\n return jsdocUtils.getRegexFromString(str, requiredFlags);\n };\n\n utils.getTagDescription = (tg) => {\n const descriptions = [];\n tg.source.some(({\n tokens: {end, lineEnd, postDelimiter, tag, postTag, name, type, description},\n }) => {\n const desc = (\n tag && postTag ||\n !tag && !name && !type && postDelimiter || ''\n\n // Remove space\n ).slice(1) +\n (description || '') + (lineEnd || '');\n\n if (end) {\n if (desc) {\n descriptions.push(desc);\n }\n\n return true;\n }\n descriptions.push(desc);\n\n return false;\n });\n\n return descriptions.join('\\n');\n };\n\n utils.getDescription = () => {\n const descriptions = [];\n let lastDescriptionLine = 0;\n jsdoc.source.some(({tokens: {description, tag, end}}, idx) => {\n if (idx && (tag || end)) {\n lastDescriptionLine = idx - 1;\n\n return true;\n }\n if (idx || description) {\n descriptions.push(description);\n }\n\n return false;\n });\n\n return {\n description: descriptions.join('\\n'),\n lastDescriptionLine,\n };\n };\n\n utils.changeTag = (tag, ...tokens) => {\n tag.source.forEach((src, idx) => {\n src.tokens = {\n ...src.tokens,\n ...tokens[idx],\n };\n });\n };\n\n utils.setTag = (tag, tokens) => {\n tag.source = [{\n // Or tag.source[0].number?\n number: tag.line,\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: '@' + tag.tag,\n ...tokens,\n }),\n }];\n };\n\n utils.removeTag = (idx) => {\n return utils.removeTagItem(idx);\n };\n\n utils.removeTagItem = (tagIndex, tagSourceOffset = 0) => {\n const {source: tagSource} = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({number}, tagIdx) => {\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber, tokens: {end},\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n let spliceCount = 1;\n tagSource.slice(tagIdx + 1).some(({tokens: {tag, end}}) => {\n if (!tag && !end) {\n spliceCount++;\n\n return false;\n }\n\n return true;\n });\n jsdoc.source.splice(sourceIndex + tagSourceOffset, spliceCount - tagSourceOffset);\n tagSource.splice(tagIdx + tagSourceOffset, spliceCount - tagSourceOffset);\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n jsdoc.source.slice(lastIndex).forEach((src, idx) => {\n src.number = firstNumber + lastIndex + idx;\n });\n };\n\n utils.addTag = (targetTagName) => {\n const number = (jsdoc.tags[jsdoc.tags.length - 1]?.source[0]?.number ?? 0) + 1;\n jsdoc.source.splice(number, 0, {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: `@${targetTagName}`,\n }),\n });\n jsdoc.source.slice(number + 1).forEach((src) => {\n src.number++;\n });\n };\n\n utils.seedTokens = seedTokens;\n\n utils.emptyTokens = (tokens) => {\n [\n 'start',\n 'postDelimiter',\n 'tag',\n 'type',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n 'end',\n 'lineEnd',\n ].forEach((prop) => {\n tokens[prop] = '';\n });\n };\n\n utils.addLine = (sourceIndex, tokens) => {\n const number = (jsdoc.source[sourceIndex - 1]?.number || 0) + 1;\n jsdoc.source.splice(sourceIndex, 0, {\n number,\n source: '',\n tokens: seedTokens(tokens),\n });\n\n // If necessary, we can rewire the tags (misnamed method)\n // rewireSource(jsdoc);\n };\n\n utils.addLines = (tagIndex, tagSourceOffset, numLines) => {\n const {source: tagSource} = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({number}) => {\n const makeLine = () => {\n return {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n start: indent + ' ',\n }),\n };\n };\n const makeLines = () => {\n return Array.from({length: numLines}, makeLine);\n };\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber, tokens: {end},\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n const lines = makeLines();\n jsdoc.source.splice(sourceIndex + tagSourceOffset, 0, ...lines);\n\n // tagSource.splice(tagIdx + 1, 0, ...makeLines());\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n jsdoc.source.slice(lastIndex).forEach((src, idx) => {\n src.number = firstNumber + lastIndex + idx;\n });\n };\n\n utils.makeMultiline = () => {\n const {source: [{tokens}]} = jsdoc;\n const {postDelimiter, description, lineEnd, tag, name, type} = tokens;\n\n let {tokens: {\n postName, postTag, postType,\n }} = jsdoc.source[0];\n\n // Strip trailing leftovers from single line ending\n if (!description) {\n if (postName) {\n postName = '';\n } else if (postType) {\n postType = '';\n // eslint-disable-next-line max-len, no-inline-comments\n } else /* istanbul ignore else -- `comment-parser` prevents empty blocks currently per https://github.com/syavorsky/comment-parser/issues/128 */ if (postTag) {\n postTag = '';\n }\n }\n\n utils.emptyTokens(tokens);\n\n utils.addLine(1, {\n delimiter: '*',\n\n // If a description were present, it may have whitespace attached\n // due to being at the end of the single line\n description: description.trimEnd(),\n name,\n postDelimiter,\n postName,\n postTag,\n postType,\n start: indent + ' ',\n tag,\n type,\n });\n utils.addLine(2, {\n end: '*/',\n lineEnd,\n start: indent + ' ',\n });\n };\n\n utils.flattenRoots = (params) => {\n return jsdocUtils.flattenRoots(params);\n };\n\n utils.getFunctionParameterNames = (useDefaultObjectProperties) => {\n return jsdocUtils.getFunctionParameterNames(node, useDefaultObjectProperties);\n };\n\n utils.hasParams = () => {\n return jsdocUtils.hasParams(node);\n };\n\n utils.isGenerator = () => {\n return node && (\n node.generator ||\n node.type === 'MethodDefinition' && node.value.generator ||\n ['ExportNamedDeclaration', 'ExportDefaultDeclaration'].includes(node.type) &&\n node.declaration.generator\n );\n };\n\n utils.isConstructor = () => {\n return jsdocUtils.isConstructor(node);\n };\n\n utils.getJsdocTagsDeep = (tagName) => {\n const name = utils.getPreferredTagName({tagName});\n if (!name) {\n return false;\n }\n\n return jsdocUtils.getJsdocTagsDeep(jsdoc, name);\n };\n\n utils.getPreferredTagName = ({tagName, skipReportingBlockedTag = false, allowObjectReturn = false, defaultMessage = `Unexpected tag \\`@${tagName}\\``}) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(context, mode, name, definedTags);\n };\n\n utils.hasATag = (names) => {\n return jsdocUtils.hasATag(jsdoc, names);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.comparePaths = (name) => {\n return jsdocUtils.comparePaths(name);\n };\n\n utils.dropPathSegmentQuotes = (name) => {\n return jsdocUtils.dropPathSegmentQuotes(name);\n };\n\n utils.avoidDocs = () => {\n if (\n ignoreReplacesDocs !== false &&\n (utils.hasTag('ignore') || utils.classHasTag('ignore')) ||\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag(['augments', 'extends']) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n if (jsdocUtils.exemptSpeciaMethods(\n jsdoc, node, context, ruleConfig.meta.schema,\n )) {\n return true;\n }\n\n const exemptedBy = context.options[0]?.exemptedBy ?? [\n 'inheritDoc',\n ...mode === 'closure' ? [] : ['inheritdoc'],\n ];\n if (exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n [\n 'tagMightHaveNamePosition',\n 'tagMightHaveTypePosition',\n ].forEach((method) => {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (result) {\n return true;\n }\n\n if (!otherModeMaps) {\n return false;\n }\n\n const otherResult = otherModeMaps.some((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? {otherMode: true} : false;\n };\n });\n\n [\n 'tagMustHaveNamePosition',\n 'tagMustHaveTypePosition',\n 'tagMissingRequiredTypeOrNamepath',\n ].forEach((method) => {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (!result) {\n return false;\n }\n\n // if (!otherModeMaps) { return true; }\n\n const otherResult = otherModeMaps.every((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? true : {otherMode: false};\n };\n });\n\n [\n 'isNamepathDefiningTag',\n 'tagMightHaveNamepath',\n ].forEach((method) => {\n utils[method] = (tagName) => {\n return jsdocUtils[method](tagName);\n };\n });\n\n utils.getTagStructureForMode = (mde) => {\n return jsdocUtils.getTagStructureForMode(mde, settings.structuredTags);\n };\n\n utils.hasDefinedTypeTag = (tag) => {\n return jsdocUtils.hasDefinedTypeTag(tag);\n };\n\n utils.hasValueOrExecutorHasNonEmptyResolveValue = (anyPromiseAsReturn) => {\n return jsdocUtils.hasValueOrExecutorHasNonEmptyResolveValue(node, anyPromiseAsReturn);\n };\n\n utils.hasYieldValue = () => {\n if (['ExportNamedDeclaration', 'ExportDefaultDeclaration'].includes(node.type)) {\n return jsdocUtils.hasYieldValue(node.declaration);\n }\n\n return jsdocUtils.hasYieldValue(node);\n };\n\n utils.hasYieldReturnValue = () => {\n return jsdocUtils.hasYieldValue(node, true);\n };\n\n utils.hasThrowValue = () => {\n return jsdocUtils.hasThrowValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(context, mode, tags, tagNamePreference);\n };\n\n utils.hasOptionTag = (tagName) => {\n const {tags} = context.options[0] ?? {};\n\n return Boolean(tags && tags.includes(tagName));\n };\n\n utils.getClassNode = () => {\n return [...ancestors, node].reverse().find((parent) => {\n return parent && ['ClassDeclaration', 'ClassExpression'].includes(parent.type);\n }) || null;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n\n if (!classNode) {\n return null;\n }\n\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n const indnt = ' '.repeat(classJsdocNode.loc.start.column);\n\n return parseComment(classJsdocNode, indnt);\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return Boolean(classJsdoc) && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n const matchingJsdocTags = _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n matchingJsdocTags.forEach((matchingJsdocTag) => {\n arrayHandler(matchingJsdocTag, targetTagName);\n });\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n const settings = {\n // All rules\n ignorePrivate: Boolean(context.settings.jsdoc?.ignorePrivate),\n ignoreInternal: Boolean(context.settings.jsdoc?.ignoreInternal),\n maxLines: Number(context.settings.jsdoc?.maxLines ?? 1),\n minLines: Number(context.settings.jsdoc?.minLines ?? 0),\n\n // `check-tag-names` and many returns/param rules\n tagNamePreference: context.settings.jsdoc?.tagNamePreference ?? {},\n\n // `check-types` and `no-undefined-types`\n preferredTypes: context.settings.jsdoc?.preferredTypes ?? {},\n\n // `check-types`, `no-undefined-types`, `valid-types`\n structuredTags: context.settings.jsdoc?.structuredTags ?? {},\n\n // `require-param`, `require-description`, `require-example`,\n // `require-returns`, `require-throw`, `require-yields`\n overrideReplacesDocs: context.settings.jsdoc?.overrideReplacesDocs,\n ignoreReplacesDocs: context.settings.jsdoc?.ignoreReplacesDocs,\n implementsReplacesDocs: context.settings.jsdoc?.implementsReplacesDocs,\n augmentsExtendsReplacesDocs: context.settings.jsdoc?.augmentsExtendsReplacesDocs,\n\n // Many rules, e.g., `check-tag-names`\n mode: context.settings.jsdoc?.mode ??\n (context.parserPath.includes('@typescript-eslint') ? 'typescript' : 'jsdoc'),\n };\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n\n jsdocUtils.setTagStructure(settings.mode);\n try {\n jsdocUtils.overrideTagStructure(settings.structuredTags);\n } catch (error) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: error.message,\n });\n\n return false;\n }\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n if (!('line' in jsdocLoc)) {\n jsdocLoc.line = jsdocLoc.source[0].number;\n }\n\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {line: lineNumber},\n start: {line: lineNumber},\n };\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: object,\n * sourceCode: object,\n * indent: string,\n * jsdoc: object,\n * jsdocNode: object,\n * node: object | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n\nconst iterate = (\n info,\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node, settings,\n sourceCode, iterator, state, iteratingAll,\n) => {\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n );\n\n if (\n !ruleConfig.checkInternal && settings.ignoreInternal &&\n utils.hasTag('internal')\n ) {\n return;\n }\n if (\n !ruleConfig.checkPrivate && settings.ignorePrivate &&\n (utils.hasTag('private') || _.filter(jsdoc.tags, {\n tag: 'access',\n }).some(({description}) => {\n return description === 'private';\n }))\n ) {\n return;\n }\n\n iterator({\n context,\n globalState,\n indent,\n info,\n iteratingAll,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n state,\n utils,\n });\n};\n\nconst getIndentAndJSDoc = function (lines, jsdocNode) {\n const sourceLine = lines[jsdocNode.loc.start.line - 1];\n const indnt = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n const jsdc = parseComment(jsdocNode, indnt);\n\n return [indnt, jsdc];\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n * @param contexts\n * @param {boolean} additiveContexts\n */\nconst iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveContexts) => {\n const trackedJsdocs = [];\n\n let handler;\n let settings;\n const callIterator = (context, node, jsdocNodes, state, lastCall) => {\n const sourceCode = context.getSourceCode();\n const {lines} = sourceCode;\n\n const utils = getBasicUtils(context, settings);\n jsdocNodes.forEach((jsdocNode) => {\n if (!(/^\\/\\*\\*\\s/).test(sourceCode.getText(jsdocNode))) {\n return;\n }\n\n const [indent, jsdoc] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (additiveContexts) {\n contexts.forEach(({comment}, idx) => {\n if (comment && handler(comment, jsdoc) === false) {\n return;\n }\n iterate(\n {\n comment,\n lastIndex: idx,\n selector: node?.type,\n },\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator,\n state, true,\n );\n });\n\n return;\n }\n\n let lastComment;\n let lastIndex;\n if (contexts && contexts.every(({comment}, idx) => {\n lastComment = comment;\n lastIndex = idx;\n\n return comment && handler(comment, jsdoc) === false;\n })) {\n return;\n }\n\n iterate(\n lastComment ? {\n comment: lastComment,\n lastIndex,\n selector: node?.type,\n } : {\n lastIndex,\n selector: node?.type,\n },\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator,\n state, true,\n );\n });\n if (lastCall && ruleConfig.exit) {\n ruleConfig.exit({\n context,\n state,\n utils,\n });\n }\n };\n\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n settings = getSettings(context);\n if (!settings) {\n return {};\n }\n if (contexts) {\n handler = commentHandler(settings);\n }\n\n const state = {};\n\n return {\n '*:not(Program)' (node) {\n const reducedNode = getReducedASTNode(node, sourceCode);\n\n if (node !== reducedNode) {\n return;\n }\n\n const commentNode = getJSDocComment(sourceCode, node, settings);\n if (trackedJsdocs.includes(commentNode)) {\n return;\n }\n if (!commentNode) {\n if (ruleConfig.nonComment) {\n ruleConfig.nonComment({\n node,\n state,\n });\n }\n\n return;\n }\n\n trackedJsdocs.push(commentNode);\n callIterator(context, node, [commentNode], state);\n },\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const untrackedJSdoc = allComments.filter((node) => {\n return !trackedJsdocs.includes(node);\n });\n\n callIterator(context, null, untrackedJSdoc, state, true);\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n */\nconst checkFile = (iterator, ruleConfig) => {\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n return {\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const {lines} = sourceCode;\n const utils = getBasicUtils(context, settings);\n\n iterator({\n allComments,\n context,\n lines,\n makeReport,\n settings,\n sourceCode,\n utils,\n });\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {{\n * meta: any,\n * contextDefaults?: true | string[],\n * contextSelected?: true,\n * iterateAllJsdocs?: true,\n * }} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = ruleConfig?.meta?.type;\n if (!metaType || !['problem', 'suggestion', 'layout'].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.checkFile) {\n return checkFile(iterator, ruleConfig);\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, ruleConfig);\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n let contexts;\n if (ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext) {\n contexts = ruleConfig.matchContext && context.options[0]?.match ?\n context.options[0].match :\n jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n if (contexts) {\n contexts = contexts.map((obj) => {\n if (typeof obj === 'object' && !obj.context) {\n return {...obj, context: 'any'};\n }\n\n return obj;\n });\n }\n\n const hasPlainAny = contexts?.includes('any');\n const hasObjectAny = !hasPlainAny && contexts?.find((ctxt) => {\n return ctxt?.context === 'any';\n });\n if (hasPlainAny || hasObjectAny) {\n return iterateAllJsdocs(\n iterator, ruleConfig, hasObjectAny ? contexts : null, ruleConfig.matchContext,\n ).create(context);\n }\n }\n const sourceCode = context.getSourceCode();\n const {lines} = sourceCode;\n\n const state = {};\n\n const checkJsdoc = (info, handler, node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n\n if (!jsdocNode) {\n return;\n }\n\n const [indent, jsdoc] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (\n // Note, `handler` should already be bound in its first argument\n // with these only to be called after the value of\n // `comment`\n handler && handler(jsdoc) === false\n ) {\n return;\n }\n\n iterate(\n info, indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator, state,\n );\n };\n\n let contextObject = {};\n\n if (contexts && (\n ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext\n )) {\n contextObject = jsdocUtils.getContextObject(\n contexts,\n checkJsdoc,\n commentHandler(settings),\n );\n } else {\n [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].forEach((prop) => {\n contextObject[prop] = checkJsdoc.bind(null, {\n selector: prop,\n }, null);\n });\n }\n\n if (ruleConfig.exit) {\n contextObject['Program:exit'] = () => {\n ruleConfig.exit({\n context,\n state,\n });\n };\n }\n\n return contextObject;\n },\n meta: ruleConfig.meta,\n };\n}\n"],"file":"iterateJsdoc.js"}
|
|
@@ -23,7 +23,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
23
23
|
allowedLicenses = null,
|
|
24
24
|
allowedAuthors = null,
|
|
25
25
|
numericOnlyVariation = false,
|
|
26
|
-
licensePattern = '/([^\n]*)/gu'
|
|
26
|
+
licensePattern = '/([^\n\r]*)/gu'
|
|
27
27
|
} = options;
|
|
28
28
|
utils.forEachPreferredTag('version', (jsdocParameter, targetTagName) => {
|
|
29
29
|
const version = utils.getTagDescription(jsdocParameter).trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/checkValues.js"],"names":["utils","report","context","options","allowedLicenses","allowedAuthors","numericOnlyVariation","licensePattern","forEachPreferredTag","jsdocParameter","targetTagName","version","getTagDescription","trim","semver","valid","variation","Number","isInteger","licenseRegex","getRegexFromString","match","license","includes","join","author","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items","type","anyOf"],"mappings":"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","sourcesContent":["import semver from 'semver';\nimport spdxExpressionParse from 'spdx-expression-parse';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n utils,\n report,\n context,\n}) => {\n const options = context.options[0] || {};\n const {\n allowedLicenses = null,\n allowedAuthors = null,\n numericOnlyVariation = false,\n licensePattern = '/([^\\n]*)/gu',\n } = options;\n\n utils.forEachPreferredTag('version', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n if (numericOnlyVariation) {\n utils.forEachPreferredTag('variation', (jsdocParameter, targetTagName) => {\n const variation = utils.getTagDescription(jsdocParameter).trim();\n if (!variation) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (\n !Number.isInteger(Number(variation)) ||\n Number(variation) <= 0\n ) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n }\n utils.forEachPreferredTag('since', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => {\n const licenseRegex = utils.getRegexFromString(licensePattern, 'g');\n const match = utils.getTagDescription(jsdocParameter).match(licenseRegex);\n const license = match && match[1] || match[0];\n if (!license.trim()) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedLicenses) {\n if (allowedLicenses !== true && !allowedLicenses.includes(license)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected one of ${allowedLicenses.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n } else {\n try {\n spdxExpressionParse(license);\n } catch {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected SPDX expression: https://spdx.org/licenses/.`,\n null,\n jsdocParameter,\n );\n }\n }\n });\n\n utils.forEachPreferredTag('author', (jsdocParameter, targetTagName) => {\n const author = utils.getTagDescription(jsdocParameter).trim();\n if (!author) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedAuthors && !allowedAuthors.includes(author)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; expected one of ${allowedAuthors.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-values',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowedAuthors: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n allowedLicenses: {\n anyOf: [\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n {\n type: 'boolean',\n },\n ],\n },\n licensePattern: {\n type: 'string',\n },\n numericOnlyVariation: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkValues.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/rules/checkValues.js"],"names":["utils","report","context","options","allowedLicenses","allowedAuthors","numericOnlyVariation","licensePattern","forEachPreferredTag","jsdocParameter","targetTagName","version","getTagDescription","trim","semver","valid","variation","Number","isInteger","licenseRegex","getRegexFromString","match","license","includes","join","author","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items","type","anyOf"],"mappings":"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","sourcesContent":["import semver from 'semver';\nimport spdxExpressionParse from 'spdx-expression-parse';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n utils,\n report,\n context,\n}) => {\n const options = context.options[0] || {};\n const {\n allowedLicenses = null,\n allowedAuthors = null,\n numericOnlyVariation = false,\n licensePattern = '/([^\\n\\r]*)/gu',\n } = options;\n\n utils.forEachPreferredTag('version', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n if (numericOnlyVariation) {\n utils.forEachPreferredTag('variation', (jsdocParameter, targetTagName) => {\n const variation = utils.getTagDescription(jsdocParameter).trim();\n if (!variation) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (\n !Number.isInteger(Number(variation)) ||\n Number(variation) <= 0\n ) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n }\n utils.forEachPreferredTag('since', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => {\n const licenseRegex = utils.getRegexFromString(licensePattern, 'g');\n const match = utils.getTagDescription(jsdocParameter).match(licenseRegex);\n const license = match && match[1] || match[0];\n if (!license.trim()) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedLicenses) {\n if (allowedLicenses !== true && !allowedLicenses.includes(license)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected one of ${allowedLicenses.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n } else {\n try {\n spdxExpressionParse(license);\n } catch {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected SPDX expression: https://spdx.org/licenses/.`,\n null,\n jsdocParameter,\n );\n }\n }\n });\n\n utils.forEachPreferredTag('author', (jsdocParameter, targetTagName) => {\n const author = utils.getTagDescription(jsdocParameter).trim();\n if (!author) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedAuthors && !allowedAuthors.includes(author)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; expected one of ${allowedAuthors.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-values',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowedAuthors: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n allowedLicenses: {\n anyOf: [\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n {\n type: 'boolean',\n },\n ],\n },\n licensePattern: {\n type: 'string',\n },\n numericOnlyVariation: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkValues.js"}
|
package/dist/rules/tagLines.js
CHANGED
|
@@ -143,18 +143,16 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
143
143
|
type: 'boolean'
|
|
144
144
|
},
|
|
145
145
|
tags: {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
type: 'string'
|
|
157
|
-
}
|
|
146
|
+
patternProperties: {
|
|
147
|
+
'.*': {
|
|
148
|
+
additionalProperties: false,
|
|
149
|
+
properties: {
|
|
150
|
+
count: {
|
|
151
|
+
type: 'integer'
|
|
152
|
+
},
|
|
153
|
+
lines: {
|
|
154
|
+
enum: ['always', 'never', 'any'],
|
|
155
|
+
type: 'string'
|
|
158
156
|
}
|
|
159
157
|
}
|
|
160
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/tagLines.js"],"names":["context","jsdoc","utils","alwaysNever","count","noEndLines","tags","options","some","tg","tagIdx","lastTag","reportIndex","source","forEach","tokens","tag","name","type","description","end","idx","includes","slice","lines","fixer","removeTagItem","reportJSDoc","line","number","currentTag","tagSourceIdx","splice","length","push","currentTg","tagCount","defaultAlways","overrideAlways","fixCount","addLines","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperies","properties","patternProperties","additionalProperties"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../../src/rules/tagLines.js"],"names":["context","jsdoc","utils","alwaysNever","count","noEndLines","tags","options","some","tg","tagIdx","lastTag","reportIndex","source","forEach","tokens","tag","name","type","description","end","idx","includes","slice","lines","fixer","removeTagItem","reportJSDoc","line","number","currentTag","tagSourceIdx","splice","length","push","currentTg","tagCount","defaultAlways","overrideAlways","fixCount","addLines","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperies","properties","patternProperties","additionalProperties"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const [\n alwaysNever = 'never',\n {\n count = 1,\n noEndLines = false,\n tags = {},\n } = {},\n ] = context.options;\n\n jsdoc.tags.some((tg, tagIdx) => {\n let lastTag;\n\n let reportIndex = null;\n tg.source.forEach(({tokens: {tag, name, type, description, end}}, idx) => {\n // May be text after a line break within a tag description\n if (description) {\n reportIndex = null;\n }\n if (lastTag && ['any', 'always'].includes(tags[lastTag.slice(1)]?.lines)) {\n return;\n }\n\n if (\n !tag && !name && !type && !description && !end &&\n (alwaysNever === 'never' ||\n lastTag && tags[lastTag.slice(1)]?.lines === 'never'\n )\n ) {\n reportIndex = idx;\n\n return;\n }\n\n lastTag = tag;\n });\n if (reportIndex !== null) {\n const fixer = () => {\n utils.removeTagItem(tagIdx, reportIndex);\n };\n utils.reportJSDoc(\n 'Expected no lines between tags',\n {line: tg.source[0].number + 1},\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n\n (noEndLines ? jsdoc.tags.slice(0, -1) : jsdoc.tags).some((tg, tagIdx) => {\n const lines = [];\n\n let currentTag;\n let tagSourceIdx = 0;\n tg.source.forEach(({number, tokens: {tag, name, type, description, end}}, idx) => {\n if (description) {\n lines.splice(0, lines.length);\n tagSourceIdx = idx;\n }\n if (tag) {\n currentTag = tag;\n }\n if (!tag && !name && !type && !description && !end) {\n lines.push({idx, number});\n }\n });\n\n const currentTg = currentTag && tags[currentTag.slice(1)];\n const tagCount = currentTg?.count;\n\n const defaultAlways = alwaysNever === 'always' && currentTg?.lines !== 'never' &&\n currentTg?.lines !== 'any' && lines.length < count;\n\n let overrideAlways;\n let fixCount = count;\n if (!defaultAlways) {\n fixCount = typeof tagCount === 'number' ? tagCount : count;\n overrideAlways = currentTg?.lines === 'always' &&\n lines.length < fixCount;\n }\n\n if (defaultAlways || overrideAlways) {\n const fixer = () => {\n utils.addLines(tagIdx, lines[lines.length - 1]?.idx || tagSourceIdx + 1, fixCount - lines.length);\n };\n const line = lines[lines.length - 1]?.number || tg.source[tagSourceIdx].number;\n utils.reportJSDoc(\n `Expected ${fixCount} line${fixCount === 1 ? '' : 's'} between tags but found ${lines.length}`,\n {\n line,\n },\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Enforces lines (or no lines) between tags.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-tag-lines',\n },\n fixable: 'code',\n schema: [\n {\n enum: ['always', 'any', 'never'],\n type: 'string',\n },\n {\n additionalProperies: false,\n properties: {\n count: {\n type: 'integer',\n },\n noEndLines: {\n type: 'boolean',\n },\n tags: {\n patternProperties: {\n '.*': {\n additionalProperties: false,\n properties: {\n count: {\n type: 'integer',\n },\n lines: {\n enum: ['always', 'never', 'any'],\n type: 'string',\n },\n },\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"tagLines.js"}
|
package/package.json
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"url": "http://gajus.com"
|
|
6
6
|
},
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@es-joy/jsdoccomment": "0.10.
|
|
9
|
-
"comment-parser": "1.2.
|
|
8
|
+
"@es-joy/jsdoccomment": "0.10.8",
|
|
9
|
+
"comment-parser": "1.2.4",
|
|
10
10
|
"debug": "^4.3.2",
|
|
11
11
|
"esquery": "^1.4.0",
|
|
12
12
|
"jsdoc-type-pratt-parser": "^1.1.1",
|
|
@@ -17,35 +17,35 @@
|
|
|
17
17
|
},
|
|
18
18
|
"description": "JSDoc linting rules for ESLint.",
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@babel/cli": "^7.
|
|
21
|
-
"@babel/core": "^7.
|
|
22
|
-
"@babel/eslint-parser": "^7.
|
|
23
|
-
"@babel/node": "^7.
|
|
20
|
+
"@babel/cli": "^7.15.4",
|
|
21
|
+
"@babel/core": "^7.15.5",
|
|
22
|
+
"@babel/eslint-parser": "^7.15.4",
|
|
23
|
+
"@babel/node": "^7.15.4",
|
|
24
24
|
"@babel/plugin-syntax-class-properties": "^7.12.13",
|
|
25
25
|
"@babel/plugin-transform-flow-strip-types": "^7.14.5",
|
|
26
|
-
"@babel/preset-env": "^7.
|
|
27
|
-
"@babel/register": "^7.
|
|
26
|
+
"@babel/preset-env": "^7.15.4",
|
|
27
|
+
"@babel/register": "^7.15.3",
|
|
28
28
|
"@hkdobrev/run-if-changed": "^0.3.1",
|
|
29
|
-
"@typescript-eslint/parser": "^4.
|
|
29
|
+
"@typescript-eslint/parser": "^4.31.0",
|
|
30
30
|
"babel-plugin-add-module-exports": "^1.0.4",
|
|
31
31
|
"babel-plugin-istanbul": "^6.0.0",
|
|
32
32
|
"chai": "^4.3.4",
|
|
33
33
|
"cross-env": "^7.0.3",
|
|
34
|
-
"eslint": "7.
|
|
35
|
-
"eslint-config-canonical": "^
|
|
34
|
+
"eslint": "7.32.0",
|
|
35
|
+
"eslint-config-canonical": "^27.0.0",
|
|
36
36
|
"gitdown": "^3.1.4",
|
|
37
37
|
"glob": "^7.1.7",
|
|
38
|
-
"husky": "^7.0.
|
|
39
|
-
"lint-staged": "^11.1.
|
|
40
|
-
"mocha": "^9.
|
|
38
|
+
"husky": "^7.0.2",
|
|
39
|
+
"lint-staged": "^11.1.2",
|
|
40
|
+
"mocha": "^9.1.1",
|
|
41
41
|
"nyc": "^15.1.0",
|
|
42
42
|
"open-editor": "^3.0.0",
|
|
43
43
|
"rimraf": "^3.0.2",
|
|
44
|
-
"semantic-release": "^17.4.
|
|
45
|
-
"typescript": "^4.
|
|
44
|
+
"semantic-release": "^17.4.7",
|
|
45
|
+
"typescript": "^4.4.2"
|
|
46
46
|
},
|
|
47
47
|
"engines": {
|
|
48
|
-
"node": "^12
|
|
48
|
+
"node": "^12 || ^14 || ^16"
|
|
49
49
|
},
|
|
50
50
|
"lint-staged": {
|
|
51
51
|
".eslintignore": "npm run lint",
|
|
@@ -101,5 +101,5 @@
|
|
|
101
101
|
"functions": 100,
|
|
102
102
|
"statements": 100
|
|
103
103
|
},
|
|
104
|
-
"version": "36.0
|
|
104
|
+
"version": "36.1.0"
|
|
105
105
|
}
|