eslint-plugin-etc-misc 1.1.0 → 1.1.2
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 +3 -0
- package/dist/configs/all-strict.d.ts +1 -0
- package/dist/configs/all-strict.d.ts.map +1 -1
- package/dist/configs/all-strict.js +1 -0
- package/dist/configs/all-strict.js.map +1 -1
- package/dist/configs/all.d.ts +1 -0
- package/dist/configs/all.d.ts.map +1 -1
- package/dist/configs/all.js +1 -0
- package/dist/configs/all.js.map +1 -1
- package/dist/configs/minimal.d.ts +3 -0
- package/dist/configs/minimal.d.ts.map +1 -1
- package/dist/configs/minimal.js +3 -0
- package/dist/configs/minimal.js.map +1 -1
- package/dist/configs/recommended.d.ts +3 -0
- package/dist/configs/recommended.d.ts.map +1 -1
- package/dist/configs/recommended.js +3 -0
- package/dist/configs/recommended.js.map +1 -1
- package/dist/configs/strict-type-checked.d.ts +1 -0
- package/dist/configs/strict-type-checked.d.ts.map +1 -1
- package/dist/configs/strict-type-checked.js +1 -0
- package/dist/configs/strict-type-checked.js.map +1 -1
- package/dist/configs/strict.d.ts +1 -0
- package/dist/configs/strict.d.ts.map +1 -1
- package/dist/configs/strict.js +1 -0
- package/dist/configs/strict.js.map +1 -1
- package/dist/configs.d.ts +8 -7
- package/dist/configs.d.ts.map +1 -1
- package/dist/configs.js +1 -0
- package/dist/configs.js.map +1 -1
- package/dist/plugin.cjs +967 -404
- package/dist/plugin.cjs.map +4 -4
- package/dist/rules/no-commented-out-code.d.ts.map +1 -1
- package/dist/rules/no-commented-out-code.js.map +1 -1
- package/dist/rules/no-function-declare-after-return.d.ts +19 -0
- package/dist/rules/no-function-declare-after-return.d.ts.map +1 -0
- package/dist/rules/no-function-declare-after-return.js +119 -0
- package/dist/rules/no-function-declare-after-return.js.map +1 -0
- package/dist/rules/no-use-extend-native.d.ts +9 -0
- package/dist/rules/no-use-extend-native.d.ts.map +1 -0
- package/dist/rules/no-use-extend-native.js +296 -0
- package/dist/rules/no-use-extend-native.js.map +1 -0
- package/dist/rules/no-vulnerable.d.ts +15 -0
- package/dist/rules/no-vulnerable.d.ts.map +1 -0
- package/dist/rules/no-vulnerable.js +182 -0
- package/dist/rules/no-vulnerable.js.map +1 -0
- package/dist/rules.d.ts.map +1 -1
- package/dist/rules.js +8 -0
- package/dist/rules.js.map +1 -1
- package/docs/docusaurus/package.json +5 -5
- package/docs/docusaurus/src/components/GitHubStats.jsx +2 -1
- package/docs/docusaurus/src/components/GitHubStats.module.css.d.ts +7 -0
- package/docs/docusaurus/src/css/custom.css.d.ts +3 -0
- package/docs/docusaurus/src/pages/index.module.css +23 -12
- package/docs/docusaurus/src/pages/index.module.css.d.ts +6 -11
- package/docs/rules/no-function-declare-after-return.md +143 -0
- package/docs/rules/no-use-extend-native.md +89 -0
- package/docs/rules/no-vulnerable.md +110 -0
- package/package.json +32 -221
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-commented-out-code.d.ts","sourceRoot":"","sources":["../../src/rules/no-commented-out-code.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAW3D,KAAK,UAAU,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"no-commented-out-code.d.ts","sourceRoot":"","sources":["../../src/rules/no-commented-out-code.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAW3D,KAAK,UAAU,GAAG,WAAW,CAAC;AAkM9B;;;GAGG;AACH,QAAA,MAAM,IAAI,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,SAAS,EAAE,EAAE,UAAU,CAAC,CA8E5D,CAAC;AAEP;;GAEG;AACH,QAAA,MAAM,cAAc,EAAE,OAAO,IAgB3B,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-commented-out-code.js","sourceRoot":"","sources":["../../src/rules/no-commented-out-code.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EACH,yBAAyB,EACzB,2BAA2B,GAC9B,MAAM,kCAAkC,CAAC;AAS1C,MAAM,aAAa,GAGd;IACD,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,QAAQ;CACvB,CAAC;AAEF,MAAM,mBAAmB,GAAG,CACxB,KAA6C,EAC7C,OAAe,
|
|
1
|
+
{"version":3,"file":"no-commented-out-code.js","sourceRoot":"","sources":["../../src/rules/no-commented-out-code.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EACH,yBAAyB,EACzB,2BAA2B,GAC9B,MAAM,kCAAkC,CAAC;AAS1C,MAAM,aAAa,GAGd;IACD,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,QAAQ;CACvB,CAAC;AAEF,MAAM,mBAAmB,GAAG,CACxB,KAA6C,EAC7C,OAAe,EAMjB,EAAE;IACA,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/B,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACL,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7B,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAClC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,OAAe,EAAW,EAAE;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;IACrD,OAAO,CACH,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAC1E,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAU,EAAE;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IACrC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,4BAA4B,GAAG,CAAC,OAAe,EAAU,EAAE,CAC7D,SAAS,CACL,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EACpE,IAAI,CACP,CAAC;AAEN,MAAM,SAAS,GAAG,CAAC,GAAgC,EAAqB,EAAE,CAAC,CAAC;IACxE,GAAG,EAAE,GAAG,CAAC,GAAG;IACZ,KAAK,EAAE,GAAG,CAAC,KAAK;CACnB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CACpB,QAAyC,EAClB,EAAE;IACzB,IAAI,MAAM,GAA4B,EAAE,CAAC;IACzC,IAAI,mBAAmB,GAA0B,IAAI,CAAC;IAEtD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,GAAG;gBACL,GAAG,MAAM;gBACT;oBACI,OAAO,EAAE,4BAA4B,CAAC,OAAO,CAAC,KAAK,CAAC;oBACpD,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;iBAC9B;aACJ,CAAC;YACF,mBAAmB,GAAG,IAAI,CAAC;YAC3B,SAAS;QACb,CAAC;QAED,MAAM,kBAAkB,GACpB,mBAAmB,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;YAC9D,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,MAAM,aAAa,GACf,kBAAkB,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAErE,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC;YAC7B,CAAC,CAAC;gBACI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC;gBACtC;oBACI,OAAO,EAAE,GAAG,aAAa,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,EAAE;oBACrD,GAAG,EAAE;wBACD,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG;wBACpB,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK;qBACjC;iBACJ;gBACD,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC;aAC1C;YACH,CAAC,CAAC;gBACI,GAAG,MAAM;gBACT;oBACI,OAAO,EAAE,OAAO,CAAC,KAAK;oBACtB,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;iBAC9B;aACJ,CAAC;QAER,mBAAmB,GAAG,OAAO,CAAC;IAClC,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,iCAAiC,GAAG,CACtC,IAAuB,EAChB,EAAE;IACT,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,CACH,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,CAChD,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CAAC,OAA6B,EAAW,EAAE;IAChE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IACI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACzB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,kBAAkB,EACvD,CAAC;QACC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CACrB,CAAC,SAAS,EAAE,EAAE,CACV,SAAS,CAAC,IAAI,KAAK,qBAAqB;QACxC,iCAAiC,CAAC,SAAS,CAAC,UAAU,CAAC,CAC9D,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACtB,OAAe,EACf,IAA8B,EACZ,EAAE;IACpB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAClC,OAAO,oBAAoB,OAAO,GAAG,CAAC;IAC1C,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO,mBAAmB,OAAO,IAAI,CAAC;IAC1C,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACtC,OAAO,oBAAoB,OAAO,MAAM,CAAC;IAC7C,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACpC,OAAO,YAAY,OAAO,mBAAmB,CAAC;IAClD,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACnC,OAAO,qBAAqB,OAAO,IAAI,CAAC;IAC5C,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAClC,OAAO,sBAAsB,OAAO,IAAI,CAAC;IAC7C,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAClC,OAAO,uBAAuB,OAAO,IAAI,CAAC;IAC9C,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAChC,OAAO,oBAAoB,OAAO,IAAI,CAAC;IAC3C,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,IAAI,GACN,WAAW,CAA0B;IACjC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;QAChB,IAAI,UAAU,GAA2C,IAAI,GAAG,EAG7D,CAAC;QAEJ,OAAO;YACH,OAAO,EAAE,GAAG,EAAE;gBACV,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;gBAE/B,KAAK,MAAM,KAAK,IAAI,eAAe,CAC/B,UAAU,CAAC,cAAc,EAAE,CAC9B,EAAE,CAAC;oBACA,IAAI,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;wBACjC,SAAS;oBACb,CAAC;oBAED,MAAM,CAAC,mBAAmB,EAAE,aAAa,CAAC,GACtC,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBACnD,UAAU,GAAG,mBAAmB,CAAC;oBACjC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;wBAC9B,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;4BACnC,OAAO,CAAC,MAAM,CAAC;gCACX,GAAG,EAAE,KAAK,CAAC,GAAG;gCACd,SAAS,EAAE,WAAW;6BACzB,CAAC,CAAC;wBACP,CAAC;wBAED,SAAS;oBACb,CAAC;oBAED,MAAM,KAAK,GAAG,UAAU,CAAC,eAAe,CACpC,KAAK,CAAC,GAAG,CAAC,KAAK,CAClB,CAAC;oBACF,MAAM,IAAI,GAAG,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBACnD,MAAM,cAAc,GAAG,iBAAiB,CACpC,KAAK,CAAC,OAAO,EACb,IAAI,CACP,CAAC;oBACF,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;wBAC7B,SAAS;oBACb,CAAC;oBAED,MAAM,CACF,0BAA0B,EAC1B,oBAAoB,EACvB,GAAG,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;oBACpD,UAAU,GAAG,0BAA0B,CAAC;oBAExC,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;wBACrC,OAAO,CAAC,MAAM,CAAC;4BACX,GAAG,EAAE,KAAK,CAAC,GAAG;4BACd,SAAS,EAAE,WAAW;yBACzB,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;YACL,CAAC;SACJ,CAAC;IACN,CAAC;IACD,IAAI,EAAE;QACF,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE;YACF,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,qCAAqC;YAClD,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,KAAK;YAClB,GAAG,EAAE,sFAAsF;SAC9F;QACD,cAAc,EAAE,KAAK;QACrB,QAAQ,EAAE;YACN,SAAS,EAAE,kCAAkC;SAChD;QACD,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,SAAS;KAClB;IACD,IAAI,EAAE,uBAAuB;CAChC,CAAC,CAAC;AAEP;;GAEG;AACH,MAAM,cAAc,GAAgB,2BAA2B,CAAC,IAAI,EAAE;IAClE,OAAO,EACH,2EAA2E;IAC/E,UAAU,EAAE;QACR,yBAAyB,CAAC;YACtB,MAAM,EAAE;gBACJ,IAAI,EAAE,mBAAmB;gBACzB,GAAG,EAAE,+DAA+D;aACvE;YACD,IAAI,EAAE;gBACF,IAAI,EAAE,mBAAmB;gBACzB,GAAG,EAAE,+DAA+D;aACvE;SACJ,CAAC;KACL;IACD,MAAM,EAAE,uBAAuB;CAClC,CAAC,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ruleCreator } from "../_internal/rule-creator.js";
|
|
2
|
+
type MessageIds = "forbidden";
|
|
3
|
+
type Options = readonly [];
|
|
4
|
+
/**
|
|
5
|
+
* Disallow function declarations that appear after a `return` statement in the
|
|
6
|
+
* same block scope.
|
|
7
|
+
*
|
|
8
|
+
* JavaScript hoists function declarations to the top of their enclosing scope,
|
|
9
|
+
* so placing a function declaration after a `return` works at runtime. However,
|
|
10
|
+
* it hurts readability and confuses readers who are not aware of hoisting.
|
|
11
|
+
*
|
|
12
|
+
* Only `FunctionDeclaration` nodes are targeted. Arrow-function expressions,
|
|
13
|
+
* function expressions assigned to variables, and any code that is genuinely
|
|
14
|
+
* unreachable are not in scope for this rule — `no-unreachable` already covers
|
|
15
|
+
* that case.
|
|
16
|
+
*/
|
|
17
|
+
declare const rule: ReturnType<typeof ruleCreator<Options, MessageIds>>;
|
|
18
|
+
export default rule;
|
|
19
|
+
//# sourceMappingURL=no-function-declare-after-return.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-function-declare-after-return.d.ts","sourceRoot":"","sources":["../../src/rules/no-function-declare-after-return.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,KAAK,UAAU,GAAG,WAAW,CAAC;AAE9B,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AA2D3B;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,IAAI,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CA2G5D,CAAC;AAEH,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { arrayFirst, arrayLast } from "ts-extras";
|
|
2
|
+
import { ruleCreator } from "../_internal/rule-creator.js";
|
|
3
|
+
/**
|
|
4
|
+
* Returns true if the given node is a `BlockStatement` or a `Program` — i.e., a
|
|
5
|
+
* node that has a `body` array of `Statement` nodes.
|
|
6
|
+
*/
|
|
7
|
+
const isStatementList = (node) => node.type === "BlockStatement" || node.type === "Program";
|
|
8
|
+
const getLineStartIndex = (sourceText, index) => sourceText.lastIndexOf("\n", index - 1) + 1;
|
|
9
|
+
const getSafeFixRangeStart = (sourceCode, node) => {
|
|
10
|
+
const declarationStart = arrayFirst(node.range) ?? 0;
|
|
11
|
+
const tokenBeforeDeclaration = sourceCode.getTokenBefore(node);
|
|
12
|
+
const tokenBeforeEnd = tokenBeforeDeclaration === null
|
|
13
|
+
? 0
|
|
14
|
+
: (arrayLast(tokenBeforeDeclaration.range) ?? 0);
|
|
15
|
+
const commentsBeforeDeclaration = sourceCode
|
|
16
|
+
.getCommentsBefore(node)
|
|
17
|
+
.filter((comment) => (arrayFirst(comment.range) ?? 0) >= tokenBeforeEnd &&
|
|
18
|
+
(arrayLast(comment.range) ?? 0) <= declarationStart);
|
|
19
|
+
const firstLeadingComment = arrayFirst(commentsBeforeDeclaration);
|
|
20
|
+
const firstMovableNodeStart = firstLeadingComment === undefined
|
|
21
|
+
? declarationStart
|
|
22
|
+
: (arrayFirst(firstLeadingComment.range) ?? declarationStart);
|
|
23
|
+
return getLineStartIndex(sourceCode.text, firstMovableNodeStart);
|
|
24
|
+
};
|
|
25
|
+
const getSafeFixRangeEnd = (sourceCode, node) => {
|
|
26
|
+
const declarationEnd = arrayLast(node.range) ?? 0;
|
|
27
|
+
const tokenAfterDeclaration = sourceCode.getTokenAfter(node);
|
|
28
|
+
if (tokenAfterDeclaration === null) {
|
|
29
|
+
return declarationEnd;
|
|
30
|
+
}
|
|
31
|
+
return getLineStartIndex(sourceCode.text, arrayFirst(tokenAfterDeclaration.range) ?? declarationEnd);
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Disallow function declarations that appear after a `return` statement in the
|
|
35
|
+
* same block scope.
|
|
36
|
+
*
|
|
37
|
+
* JavaScript hoists function declarations to the top of their enclosing scope,
|
|
38
|
+
* so placing a function declaration after a `return` works at runtime. However,
|
|
39
|
+
* it hurts readability and confuses readers who are not aware of hoisting.
|
|
40
|
+
*
|
|
41
|
+
* Only `FunctionDeclaration` nodes are targeted. Arrow-function expressions,
|
|
42
|
+
* function expressions assigned to variables, and any code that is genuinely
|
|
43
|
+
* unreachable are not in scope for this rule — `no-unreachable` already covers
|
|
44
|
+
* that case.
|
|
45
|
+
*/
|
|
46
|
+
const rule = ruleCreator({
|
|
47
|
+
create: (context) => ({
|
|
48
|
+
ReturnStatement(node) {
|
|
49
|
+
const parent = node.parent;
|
|
50
|
+
// Only check return statements that live directly inside a block
|
|
51
|
+
// (`BlockStatement`) or at the top level of a script/module
|
|
52
|
+
// (`Program`). Return statements inside a `SwitchCase` consequent
|
|
53
|
+
// do not have a traditional `body` array, so skip them.
|
|
54
|
+
if (!isStatementList(parent)) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const siblings = parent.body;
|
|
58
|
+
const returnIndex = siblings.indexOf(node);
|
|
59
|
+
// Scan every statement that follows this return in the same block.
|
|
60
|
+
for (let i = returnIndex + 1; i < siblings.length; i++) {
|
|
61
|
+
const sibling = siblings[i];
|
|
62
|
+
if (sibling?.type !== "FunctionDeclaration") {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
// Capture in closure for the fix function.
|
|
66
|
+
const functionDeclaration = sibling;
|
|
67
|
+
const returnStatement = node;
|
|
68
|
+
context.report({
|
|
69
|
+
data: {
|
|
70
|
+
name: functionDeclaration.id?.name ?? "(anonymous)",
|
|
71
|
+
},
|
|
72
|
+
fix(fixer) {
|
|
73
|
+
const sourceCode = context.sourceCode;
|
|
74
|
+
// Text of the function declaration to move.
|
|
75
|
+
const declarationEnd = arrayLast(functionDeclaration.range) ?? 0;
|
|
76
|
+
const fixRangeStart = getSafeFixRangeStart(sourceCode, functionDeclaration);
|
|
77
|
+
const fixRangeEnd = getSafeFixRangeEnd(sourceCode, functionDeclaration);
|
|
78
|
+
const functionAndLeadingCommentsText = sourceCode.text.slice(fixRangeStart, declarationEnd);
|
|
79
|
+
if (functionAndLeadingCommentsText.trim().length === 0) {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
// We want to insert before the return statement.
|
|
83
|
+
// Determine the correct indentation by looking at the
|
|
84
|
+
// token that starts the return statement.
|
|
85
|
+
const returnToken = sourceCode.getFirstToken(returnStatement);
|
|
86
|
+
const indentationEnd = arrayFirst(returnToken?.range ?? [0]) ?? 0;
|
|
87
|
+
const returnLineStart = getLineStartIndex(sourceCode.text, indentationEnd);
|
|
88
|
+
return [
|
|
89
|
+
fixer.insertTextBeforeRange([returnLineStart, returnLineStart], `${functionAndLeadingCommentsText}\n`),
|
|
90
|
+
fixer.removeRange([fixRangeStart, fixRangeEnd]),
|
|
91
|
+
];
|
|
92
|
+
},
|
|
93
|
+
messageId: "forbidden",
|
|
94
|
+
node: functionDeclaration,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
}),
|
|
99
|
+
meta: {
|
|
100
|
+
deprecated: false,
|
|
101
|
+
docs: {
|
|
102
|
+
deprecated: false,
|
|
103
|
+
description: "disallow function declarations after a return statement.",
|
|
104
|
+
frozen: false,
|
|
105
|
+
recommended: true,
|
|
106
|
+
url: "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-function-declare-after-return",
|
|
107
|
+
},
|
|
108
|
+
fixable: "code",
|
|
109
|
+
hasSuggestions: false,
|
|
110
|
+
messages: {
|
|
111
|
+
forbidden: "Function declaration '{{name}}' should be moved before the return statement for readability.",
|
|
112
|
+
},
|
|
113
|
+
schema: [],
|
|
114
|
+
type: "suggestion",
|
|
115
|
+
},
|
|
116
|
+
name: "no-function-declare-after-return",
|
|
117
|
+
});
|
|
118
|
+
export default rule;
|
|
119
|
+
//# sourceMappingURL=no-function-declare-after-return.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-function-declare-after-return.js","sourceRoot":"","sources":["../../src/rules/no-function-declare-after-return.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ruleCreator } from "../_internal/rule-creator.js";
|
|
2
|
+
type MessageIds = "forbidden";
|
|
3
|
+
type Options = readonly [];
|
|
4
|
+
/**
|
|
5
|
+
* Disallow using non-native members on built-in JavaScript types.
|
|
6
|
+
*/
|
|
7
|
+
declare const rule: ReturnType<typeof ruleCreator<Options, MessageIds>>;
|
|
8
|
+
export default rule;
|
|
9
|
+
//# sourceMappingURL=no-use-extend-native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-use-extend-native.d.ts","sourceRoot":"","sources":["../../src/rules/no-use-extend-native.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAI3D,KAAK,UAAU,GAAG,WAAW,CAAC;AA+B9B,KAAK,OAAO,GAAG,SAAS,EAAE,CAAC;AAwT3B;;GAEG;AACH,QAAA,MAAM,IAAI,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAsE5D,CAAC;AAEH,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-use-before-define, perfectionist/sort-modules -- helper declarations are grouped by concern; forward references are functionally harmless and keep inference code readable. */
|
|
2
|
+
import { isDefined, setHas } from "ts-extras";
|
|
3
|
+
import { ruleCreator } from "../_internal/rule-creator.js";
|
|
4
|
+
const nativeTypeDefinitions = [
|
|
5
|
+
{
|
|
6
|
+
constructorRef: Array,
|
|
7
|
+
dataProperties: ["length"],
|
|
8
|
+
name: "Array",
|
|
9
|
+
prototypeRef: Array.prototype,
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
constructorRef: BigInt,
|
|
13
|
+
name: "BigInt",
|
|
14
|
+
prototypeRef: BigInt.prototype,
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
constructorRef: Boolean,
|
|
18
|
+
name: "Boolean",
|
|
19
|
+
prototypeRef: Boolean.prototype,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
constructorRef: Date,
|
|
23
|
+
name: "Date",
|
|
24
|
+
prototypeRef: Date.prototype,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
constructorRef: Error,
|
|
28
|
+
name: "Error",
|
|
29
|
+
prototypeRef: Error.prototype,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
constructorRef: Function,
|
|
33
|
+
name: "Function",
|
|
34
|
+
prototypeRef: Function.prototype,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
constructorRef: Map,
|
|
38
|
+
name: "Map",
|
|
39
|
+
prototypeRef: Map.prototype,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
constructorRef: Number,
|
|
43
|
+
name: "Number",
|
|
44
|
+
prototypeRef: Number.prototype,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
constructorRef: Object,
|
|
48
|
+
name: "Object",
|
|
49
|
+
prototypeRef: Object.prototype,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
constructorRef: Promise,
|
|
53
|
+
name: "Promise",
|
|
54
|
+
prototypeRef: Promise.prototype,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
constructorRef: RegExp,
|
|
58
|
+
dataProperties: ["lastIndex"],
|
|
59
|
+
name: "RegExp",
|
|
60
|
+
prototypeRef: RegExp.prototype,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
constructorRef: Set,
|
|
64
|
+
name: "Set",
|
|
65
|
+
prototypeRef: Set.prototype,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
constructorRef: String,
|
|
69
|
+
dataProperties: ["length"],
|
|
70
|
+
name: "String",
|
|
71
|
+
prototypeRef: String.prototype,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
constructorRef: Symbol,
|
|
75
|
+
name: "Symbol",
|
|
76
|
+
prototypeRef: Symbol.prototype,
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
constructorRef: WeakMap,
|
|
80
|
+
name: "WeakMap",
|
|
81
|
+
prototypeRef: WeakMap.prototype,
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
constructorRef: WeakSet,
|
|
85
|
+
name: "WeakSet",
|
|
86
|
+
prototypeRef: WeakSet.prototype,
|
|
87
|
+
},
|
|
88
|
+
];
|
|
89
|
+
const nativeTypeNameSet = new Set(nativeTypeDefinitions.map((definition) => definition.name));
|
|
90
|
+
function buildNativeTypeInfoByName(definitions) {
|
|
91
|
+
return new Map(definitions.map((definition) => [
|
|
92
|
+
definition.name,
|
|
93
|
+
{
|
|
94
|
+
propertyKinds: collectPropertyKinds(definition),
|
|
95
|
+
},
|
|
96
|
+
]));
|
|
97
|
+
}
|
|
98
|
+
function collectPropertyKinds(definition) {
|
|
99
|
+
const propertyKinds = new Map();
|
|
100
|
+
const descriptorSources = [
|
|
101
|
+
definition.prototypeRef,
|
|
102
|
+
definition.constructorRef,
|
|
103
|
+
];
|
|
104
|
+
for (const descriptorSource of descriptorSources) {
|
|
105
|
+
if (!isDefined(descriptorSource)) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
const ownPropertyNames = Object.getOwnPropertyNames(descriptorSource);
|
|
109
|
+
for (const propertyName of ownPropertyNames) {
|
|
110
|
+
if (propertyKinds.has(propertyName)) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const descriptor = Object.getOwnPropertyDescriptor(descriptorSource, propertyName);
|
|
114
|
+
if (!isDefined(descriptor)) {
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
propertyKinds.set(propertyName, getMemberKind(descriptor));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
for (const dataPropertyName of definition.dataProperties ?? []) {
|
|
121
|
+
if (!propertyKinds.has(dataPropertyName)) {
|
|
122
|
+
propertyKinds.set(dataPropertyName, "data");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return propertyKinds;
|
|
126
|
+
}
|
|
127
|
+
function unwrapExpression(node) {
|
|
128
|
+
if (node.type === "TSAsExpression" || node.type === "TSTypeAssertion") {
|
|
129
|
+
return unwrapExpression(node.expression);
|
|
130
|
+
}
|
|
131
|
+
if (node.type === "ChainExpression") {
|
|
132
|
+
return unwrapExpression(node.expression);
|
|
133
|
+
}
|
|
134
|
+
return node;
|
|
135
|
+
}
|
|
136
|
+
const inferNativeType = (rawExpression) => {
|
|
137
|
+
const expression = unwrapExpression(rawExpression);
|
|
138
|
+
if (expression.type === "ArrayExpression") {
|
|
139
|
+
return "Array";
|
|
140
|
+
}
|
|
141
|
+
if (expression.type === "ObjectExpression") {
|
|
142
|
+
return "Object";
|
|
143
|
+
}
|
|
144
|
+
if (expression.type === "TemplateLiteral") {
|
|
145
|
+
return "String";
|
|
146
|
+
}
|
|
147
|
+
if (expression.type === "Literal") {
|
|
148
|
+
return inferNativeTypeFromLiteral(expression);
|
|
149
|
+
}
|
|
150
|
+
if (expression.type === "Identifier" && isNativeTypeName(expression.name)) {
|
|
151
|
+
return expression.name;
|
|
152
|
+
}
|
|
153
|
+
if (expression.type === "BinaryExpression") {
|
|
154
|
+
return inferNativeTypeFromBinaryExpression(expression);
|
|
155
|
+
}
|
|
156
|
+
if (expression.type === "MemberExpression") {
|
|
157
|
+
return inferNativeTypeFromMemberExpression(expression);
|
|
158
|
+
}
|
|
159
|
+
if (expression.type === "NewExpression") {
|
|
160
|
+
return inferNativeTypeFromNewExpression(expression);
|
|
161
|
+
}
|
|
162
|
+
return null;
|
|
163
|
+
};
|
|
164
|
+
function inferNativeTypeFromBinaryExpression(expression) {
|
|
165
|
+
if (expression.operator !== "+") {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
const leftType = inferNativeType(expression.left);
|
|
169
|
+
const rightType = inferNativeType(expression.right);
|
|
170
|
+
if (leftType === "String" || rightType === "String") {
|
|
171
|
+
return "String";
|
|
172
|
+
}
|
|
173
|
+
if (leftType === "RegExp" && rightType === "RegExp") {
|
|
174
|
+
return "String";
|
|
175
|
+
}
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
function inferNativeTypeFromLiteral(expression) {
|
|
179
|
+
if (typeof expression.value === "string") {
|
|
180
|
+
return "String";
|
|
181
|
+
}
|
|
182
|
+
if (typeof expression.value === "number") {
|
|
183
|
+
return "Number";
|
|
184
|
+
}
|
|
185
|
+
if (typeof expression.value === "boolean") {
|
|
186
|
+
return "Boolean";
|
|
187
|
+
}
|
|
188
|
+
if (typeof expression.value === "bigint") {
|
|
189
|
+
return "BigInt";
|
|
190
|
+
}
|
|
191
|
+
if (expression.value instanceof RegExp) {
|
|
192
|
+
return "RegExp";
|
|
193
|
+
}
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
function inferNativeTypeFromMemberExpression(expression) {
|
|
197
|
+
if (expression.computed ||
|
|
198
|
+
expression.property.type !== "Identifier" ||
|
|
199
|
+
expression.property.name !== "prototype" ||
|
|
200
|
+
expression.object.type !== "Identifier" ||
|
|
201
|
+
!isNativeTypeName(expression.object.name)) {
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
return expression.object.name;
|
|
205
|
+
}
|
|
206
|
+
function inferNativeTypeFromNewExpression(expression) {
|
|
207
|
+
if (expression.callee.type !== "Identifier" ||
|
|
208
|
+
!isNativeTypeName(expression.callee.name)) {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
return expression.callee.name;
|
|
212
|
+
}
|
|
213
|
+
function getMemberKind(descriptor) {
|
|
214
|
+
if (typeof descriptor.value === "function") {
|
|
215
|
+
return "method";
|
|
216
|
+
}
|
|
217
|
+
if (isDefined(descriptor.get) || isDefined(descriptor.set)) {
|
|
218
|
+
return "accessor";
|
|
219
|
+
}
|
|
220
|
+
return "data";
|
|
221
|
+
}
|
|
222
|
+
const getStaticMemberPropertyName = (node) => {
|
|
223
|
+
if (node.computed || node.property.type !== "Identifier") {
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
return node.property.name;
|
|
227
|
+
};
|
|
228
|
+
const isCallUsage = (node) => {
|
|
229
|
+
const parent = node.parent;
|
|
230
|
+
return parent.type === "CallExpression" && parent.callee === node;
|
|
231
|
+
};
|
|
232
|
+
const nativeTypeInfoByName = buildNativeTypeInfoByName(nativeTypeDefinitions);
|
|
233
|
+
const isNativeTypeName = (value) => setHas(nativeTypeNameSet, value);
|
|
234
|
+
/**
|
|
235
|
+
* Disallow using non-native members on built-in JavaScript types.
|
|
236
|
+
*/
|
|
237
|
+
const rule = ruleCreator({
|
|
238
|
+
create: (context) => ({
|
|
239
|
+
MemberExpression: (node) => {
|
|
240
|
+
const propertyName = getStaticMemberPropertyName(node);
|
|
241
|
+
if (propertyName === null || propertyName === "prototype") {
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
const nativeTypeName = inferNativeType(node.object);
|
|
245
|
+
if (nativeTypeName === null) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
const nativeTypeInfo = nativeTypeInfoByName.get(nativeTypeName);
|
|
249
|
+
if (!isDefined(nativeTypeInfo)) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
const memberKind = nativeTypeInfo.propertyKinds.get(propertyName);
|
|
253
|
+
if (!isDefined(memberKind)) {
|
|
254
|
+
context.report({
|
|
255
|
+
data: {
|
|
256
|
+
nativeTypeName,
|
|
257
|
+
propertyName,
|
|
258
|
+
},
|
|
259
|
+
messageId: "forbidden",
|
|
260
|
+
node,
|
|
261
|
+
});
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
if (isCallUsage(node) && memberKind !== "method") {
|
|
265
|
+
context.report({
|
|
266
|
+
data: {
|
|
267
|
+
nativeTypeName,
|
|
268
|
+
propertyName,
|
|
269
|
+
},
|
|
270
|
+
messageId: "forbidden",
|
|
271
|
+
node,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
}),
|
|
276
|
+
meta: {
|
|
277
|
+
deprecated: false,
|
|
278
|
+
docs: {
|
|
279
|
+
deprecated: false,
|
|
280
|
+
description: "disallow usage of non-native members on built-in JavaScript objects.",
|
|
281
|
+
frozen: false,
|
|
282
|
+
recommended: false,
|
|
283
|
+
url: "https://nick2bad4u.github.io/eslint-plugin-etc-misc/docs/rules/no-use-extend-native",
|
|
284
|
+
},
|
|
285
|
+
hasSuggestions: false,
|
|
286
|
+
messages: {
|
|
287
|
+
forbidden: "Avoid using '{{nativeTypeName}}.{{propertyName}}' when it is not part of the native JavaScript API.",
|
|
288
|
+
},
|
|
289
|
+
schema: [],
|
|
290
|
+
type: "problem",
|
|
291
|
+
},
|
|
292
|
+
name: "no-use-extend-native",
|
|
293
|
+
});
|
|
294
|
+
export default rule;
|
|
295
|
+
/* eslint-enable @typescript-eslint/no-use-before-define, perfectionist/sort-modules -- Re-enable after this file-scoped exception block. */
|
|
296
|
+
//# sourceMappingURL=no-use-extend-native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-use-extend-native.js","sourceRoot":"","sources":["../../src/rules/no-use-extend-native.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Parameters as RecheckParameters } from "recheck";
|
|
2
|
+
import { ruleCreator } from "../_internal/rule-creator.js";
|
|
3
|
+
type ComplexityType = "exponential" | "polynomial";
|
|
4
|
+
type MessageIds = "checkerError" | "vulnerable";
|
|
5
|
+
type Options = readonly [RuleOption?];
|
|
6
|
+
type RuleOption = Readonly<RecheckParameters & {
|
|
7
|
+
readonly ignoreErrors?: boolean;
|
|
8
|
+
readonly permittableComplexities?: readonly ComplexityType[];
|
|
9
|
+
}>;
|
|
10
|
+
/**
|
|
11
|
+
* Detect ReDoS-vulnerable regular expressions using `recheck`.
|
|
12
|
+
*/
|
|
13
|
+
declare const rule: ReturnType<typeof ruleCreator<Options, MessageIds>>;
|
|
14
|
+
export default rule;
|
|
15
|
+
//# sourceMappingURL=no-vulnerable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-vulnerable.d.ts","sourceRoot":"","sources":["../../src/rules/no-vulnerable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,IAAI,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAK/D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,KAAK,cAAc,GAAG,aAAa,GAAG,YAAY,CAAC;AAEnD,KAAK,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;AAEhD,KAAK,OAAO,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AAEtC,KAAK,UAAU,GAAG,QAAQ,CACtB,iBAAiB,GAAG;IAChB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAChE,CACJ,CAAC;AAqFF;;GAEG;AACH,QAAA,MAAM,IAAI,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAkK5D,CAAC;AAEH,eAAe,IAAI,CAAC"}
|