diff --git a/.eslintrc.js b/.eslintrc.js index 9da471333..96658306b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -14,6 +14,7 @@ module.exports = { "plugin:@ota-meshi/+yaml", // "plugin:@ota-meshi/+md", "plugin:@ota-meshi/+prettier", + "plugin:import/recommended", "plugin:regexp/recommended", ], rules: { @@ -73,6 +74,8 @@ module.exports = { }, ], + "import/order": ["warn", { alphabetize: { order: "asc" } }], + // regexp next recommended "regexp/no-contradiction-with-assertion": "error", "regexp/no-empty-character-class": "error", @@ -118,6 +121,12 @@ module.exports = { "no-implicit-globals": "off", "@typescript-eslint/naming-convention": "off", }, + settings: { + "import/resolver": { + typescript: true, + node: true, + }, + }, }, { files: ["lib/rules/**"], @@ -148,6 +157,8 @@ module.exports = { rules: { "vue/multi-word-component-names": "off", "@typescript-eslint/no-explicit-any": "off", + "import/named": "off", + "import/no-unresolved": "off", }, }, { diff --git a/docs/.vitepress/build-system/build.ts b/docs/.vitepress/build-system/build.ts index 4c1001cc8..6806972a4 100644 --- a/docs/.vitepress/build-system/build.ts +++ b/docs/.vitepress/build-system/build.ts @@ -2,10 +2,10 @@ * Pre-build cjs packages that cannot be bundled well. */ -import esbuild from "esbuild" -import path from "path" import fs from "fs" +import path from "path" import { fileURLToPath } from "url" +import esbuild from "esbuild" const dirname = path.dirname( fileURLToPath( diff --git a/docs/.vitepress/theme/components/playground-block.vue b/docs/.vitepress/theme/components/playground-block.vue index 927f5d04a..80117a7f1 100644 --- a/docs/.vitepress/theme/components/playground-block.vue +++ b/docs/.vitepress/theme/components/playground-block.vue @@ -49,8 +49,8 @@ import PgEditor from "./components/PgEditor.vue" import RulesSettings from "./components/RulesSettings.vue" import SnsBar from "./components/SnsBar.vue" -import { deserializeState, serializeState } from "./state" import { DEFAULT_RULES_CONFIG, getRule } from "./rules" +import { deserializeState, serializeState } from "./state" const DEFAULT_CODE = String.raw` /eslint-plugin[-regexp]/u diff --git a/lib/all-rules.ts b/lib/all-rules.ts index 68010512c..a0053e897 100644 --- a/lib/all-rules.ts +++ b/lib/all-rules.ts @@ -1,4 +1,3 @@ -import type { RuleModule } from "./types" import confusingQuantifier from "./rules/confusing-quantifier" import controlCharacterEscape from "./rules/control-character-escape" import graphemeStringLiteral from "./rules/grapheme-string-literal" @@ -80,6 +79,7 @@ import sortFlags from "./rules/sort-flags" import strict from "./rules/strict" import unicodeEscape from "./rules/unicode-escape" import useIgnoreCase from "./rules/use-ignore-case" +import type { RuleModule } from "./types" export const rules: RuleModule[] = [ confusingQuantifier, diff --git a/lib/configs/rules/all.ts b/lib/configs/rules/all.ts index a2945c6a9..a3a6b2dda 100644 --- a/lib/configs/rules/all.ts +++ b/lib/configs/rules/all.ts @@ -1,5 +1,5 @@ -import { rules as recommendedRules } from "./recommended" import { rules as ruleLint } from "../../all-rules" +import { rules as recommendedRules } from "./recommended" const all: Record = {} for (const rule of ruleLint) { diff --git a/lib/index.ts b/lib/index.ts index 530f0e558..4085644de 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1,9 +1,9 @@ -import type { RuleModule } from "./types" import { rules as ruleList } from "./all-rules" -import * as recommended from "./configs/recommended" import * as all from "./configs/all" -import * as flatRecommended from "./configs/flat/recommended" import * as flatAll from "./configs/flat/all" +import * as flatRecommended from "./configs/flat/recommended" +import * as recommended from "./configs/recommended" +import type { RuleModule } from "./types" export * as meta from "./meta" export const configs = { diff --git a/lib/rules/confusing-quantifier.ts b/lib/rules/confusing-quantifier.ts index db5a7551f..8653fe53e 100644 --- a/lib/rules/confusing-quantifier.ts +++ b/lib/rules/confusing-quantifier.ts @@ -1,7 +1,7 @@ import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { isPotentiallyEmpty } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" -import { isPotentiallyEmpty } from "regexp-ast-analysis" import { quantToString, getQuantifierOffsets } from "../utils/regexp-ast" export default createRule("confusing-quantifier", { diff --git a/lib/rules/control-character-escape.ts b/lib/rules/control-character-escape.ts index c6f16f408..483667517 100644 --- a/lib/rules/control-character-escape.ts +++ b/lib/rules/control-character-escape.ts @@ -1,4 +1,3 @@ -import type { PatternRange } from "../utils/ast-utils/pattern-source" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { @@ -10,6 +9,7 @@ import { createRule, defineRegexpVisitor, } from "../utils" +import type { PatternRange } from "../utils/ast-utils/pattern-source" import { isRegexpLiteral } from "../utils/ast-utils/utils" import { mentionChar } from "../utils/mention" diff --git a/lib/rules/grapheme-string-literal.ts b/lib/rules/grapheme-string-literal.ts index 02a7226a4..eb2da2146 100644 --- a/lib/rules/grapheme-string-literal.ts +++ b/lib/rules/grapheme-string-literal.ts @@ -1,7 +1,7 @@ +import type { StringAlternative } from "@eslint-community/regexpp/ast" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" -import type { StringAlternative } from "@eslint-community/regexpp/ast" const segmenter = new Intl.Segmenter() diff --git a/lib/rules/hexadecimal-escape.ts b/lib/rules/hexadecimal-escape.ts index 1a824dcf1..38e55d2b2 100644 --- a/lib/rules/hexadecimal-escape.ts +++ b/lib/rules/hexadecimal-escape.ts @@ -1,5 +1,5 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Character } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { defineRegexpVisitor, createRule } from "../utils" import { diff --git a/lib/rules/letter-case.ts b/lib/rules/letter-case.ts index b83f18a6c..9f75836e3 100644 --- a/lib/rules/letter-case.ts +++ b/lib/rules/letter-case.ts @@ -1,8 +1,8 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Character, CharacterClassRange, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { createRule, diff --git a/lib/rules/match-any.ts b/lib/rules/match-any.ts index 2a6953d1c..fa8af4399 100644 --- a/lib/rules/match-any.ts +++ b/lib/rules/match-any.ts @@ -1,14 +1,14 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" -import type { Rule } from "eslint" import type { CharacterClass, ExpressionCharacterClass, Node, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { Rule } from "eslint" +import { matchesAllCharacters, hasStrings } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" import { isRegexpLiteral } from "../utils/ast-utils/utils" -import { matchesAllCharacters, hasStrings } from "regexp-ast-analysis" import { mention } from "../utils/mention" const OPTION_SS1 = "[\\s\\S]" as const diff --git a/lib/rules/negation.ts b/lib/rules/negation.ts index b518ee0dc..8a1c4a8e1 100644 --- a/lib/rules/negation.ts +++ b/lib/rules/negation.ts @@ -1,4 +1,3 @@ -import { toUnicodeSet } from "regexp-ast-analysis" import type { CharacterClass, CharacterClassElement, @@ -7,6 +6,7 @@ import type { ExpressionCharacterClass, } from "@eslint-community/regexpp/ast" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { toUnicodeSet } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" import { assertNever } from "../utils/util" diff --git a/lib/rules/no-contradiction-with-assertion.ts b/lib/rules/no-contradiction-with-assertion.ts index 2b4669fbd..81ff122c2 100644 --- a/lib/rules/no-contradiction-with-assertion.ts +++ b/lib/rules/no-contradiction-with-assertion.ts @@ -1,12 +1,10 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Assertion, Element, Alternative, Quantifier, } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { FirstLookChar, MatchingDirection, @@ -21,8 +19,10 @@ import { isZeroLength, FirstConsumedChars, } from "regexp-ast-analysis" -import { quantToString } from "../utils/regexp-ast" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" import { mention } from "../utils/mention" +import { quantToString } from "../utils/regexp-ast" /** * Returns whether the given assertions is guaranteed to always trivially diff --git a/lib/rules/no-control-character.ts b/lib/rules/no-control-character.ts index c3338e76d..f8bc4f69a 100644 --- a/lib/rules/no-control-character.ts +++ b/lib/rules/no-control-character.ts @@ -1,10 +1,10 @@ -import { mentionChar, mention } from "../utils/mention" -import { CP_TAB, CP_LF, CP_VT, CP_FF, CP_CR } from "../utils/unicode" +import type { Character } from "@eslint-community/regexpp/ast" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { Rule } from "eslint" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" -import type { Character } from "@eslint-community/regexpp/ast" -import type { Rule } from "eslint" +import { mentionChar, mention } from "../utils/mention" +import { CP_TAB, CP_LF, CP_VT, CP_FF, CP_CR } from "../utils/unicode" const CONTROL_CHARS = new Map([ [0, "\\0"], diff --git a/lib/rules/no-dupe-characters-character-class.ts b/lib/rules/no-dupe-characters-character-class.ts index ec6fd942c..81d6e2ccb 100644 --- a/lib/rules/no-dupe-characters-character-class.ts +++ b/lib/rules/no-dupe-characters-character-class.ts @@ -1,4 +1,3 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { CharacterClass, CharacterClassElement, @@ -12,18 +11,19 @@ import type { ClassStringDisjunction, ExpressionCharacterClass, } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { CharRange, CharSet } from "refa" +import { JS } from "refa" +import type { ReadonlyFlags } from "regexp-ast-analysis" +import { toCharSet, toUnicodeSet } from "regexp-ast-analysis" import { createRule, defineRegexpVisitor, fixRemoveCharacterClassElement, } from "../utils" -import { toCharSetSource, assertValidFlags } from "../utils/refa" -import type { CharRange, CharSet } from "refa" -import { JS } from "refa" -import type { ReadonlyFlags } from "regexp-ast-analysis" -import { toCharSet, toUnicodeSet } from "regexp-ast-analysis" +import type { RegExpContext } from "../utils" import { mentionChar } from "../utils/mention" +import { toCharSetSource, assertValidFlags } from "../utils/refa" import { assertNever } from "../utils/util" interface Grouping { diff --git a/lib/rules/no-dupe-disjunctions.ts b/lib/rules/no-dupe-disjunctions.ts index f271061f3..0c6968ff4 100644 --- a/lib/rules/no-dupe-disjunctions.ts +++ b/lib/rules/no-dupe-disjunctions.ts @@ -1,4 +1,3 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Alternative, CapturingGroup, @@ -9,15 +8,8 @@ import type { Pattern, Quantifier, } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" -import { - createRule, - defineRegexpVisitor, - fixRemoveCharacterClassElement, - fixRemoveAlternative, - fixRemoveStringAlternative, -} from "../utils" -import { isCoveredNode, isEqualNodes } from "../utils/regexp-ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { Rule } from "eslint" import type { Expression, FiniteAutomaton, NoParent, ReadonlyNFA } from "refa" import { Transformers, @@ -36,14 +28,22 @@ import { getEffectiveMaximumRepetition, canReorder, } from "regexp-ast-analysis" +import type { RegExpContext } from "../utils" +import { + createRule, + defineRegexpVisitor, + fixRemoveCharacterClassElement, + fixRemoveAlternative, + fixRemoveStringAlternative, +} from "../utils" +import { getAllowedCharRanges, inRange } from "../utils/char-ranges" import { UsageOfPattern } from "../utils/get-usage-of-pattern" import { mention, mentionChar } from "../utils/mention" import type { NestedAlternative } from "../utils/partial-parser" import { PartialParser } from "../utils/partial-parser" -import type { Rule } from "eslint" -import { getAllowedCharRanges, inRange } from "../utils/char-ranges" -import { assertNever } from "../utils/util" import { getParser, assertValidFlags } from "../utils/refa" +import { isCoveredNode, isEqualNodes } from "../utils/regexp-ast" +import { assertNever } from "../utils/util" type ParentNode = Group | CapturingGroup | Pattern | LookaroundAssertion diff --git a/lib/rules/no-empty-alternative.ts b/lib/rules/no-empty-alternative.ts index f831b530b..8e9c17f1a 100644 --- a/lib/rules/no-empty-alternative.ts +++ b/lib/rules/no-empty-alternative.ts @@ -1,4 +1,3 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Alternative, CapturingGroup, @@ -6,6 +5,7 @@ import type { Group, Pattern, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" diff --git a/lib/rules/no-empty-capturing-group.ts b/lib/rules/no-empty-capturing-group.ts index 92a565e85..3d2f5ef21 100644 --- a/lib/rules/no-empty-capturing-group.ts +++ b/lib/rules/no-empty-capturing-group.ts @@ -1,5 +1,5 @@ -import { isZeroLength } from "regexp-ast-analysis" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { isZeroLength } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" diff --git a/lib/rules/no-empty-character-class.ts b/lib/rules/no-empty-character-class.ts index 2ce863752..8499e4444 100644 --- a/lib/rules/no-empty-character-class.ts +++ b/lib/rules/no-empty-character-class.ts @@ -1,5 +1,5 @@ -import { matchesNoCharacters } from "regexp-ast-analysis" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { matchesNoCharacters } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" diff --git a/lib/rules/no-empty-group.ts b/lib/rules/no-empty-group.ts index 29f33a474..621af8f17 100644 --- a/lib/rules/no-empty-group.ts +++ b/lib/rules/no-empty-group.ts @@ -1,5 +1,5 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Group, CapturingGroup } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" diff --git a/lib/rules/no-empty-lookarounds-assertion.ts b/lib/rules/no-empty-lookarounds-assertion.ts index aa92f3263..01213ce68 100644 --- a/lib/rules/no-empty-lookarounds-assertion.ts +++ b/lib/rules/no-empty-lookarounds-assertion.ts @@ -1,5 +1,5 @@ -import { isPotentiallyEmpty } from "regexp-ast-analysis" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { isPotentiallyEmpty } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" diff --git a/lib/rules/no-lazy-ends.ts b/lib/rules/no-lazy-ends.ts index 7f3cb60ff..f9aa0bd06 100644 --- a/lib/rules/no-lazy-ends.ts +++ b/lib/rules/no-lazy-ends.ts @@ -1,7 +1,7 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Alternative, Quantifier } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Rule } from "eslint" +import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" import { UsageOfPattern } from "../utils/get-usage-of-pattern" diff --git a/lib/rules/no-legacy-features.ts b/lib/rules/no-legacy-features.ts index ce0b84db3..e053220e5 100644 --- a/lib/rules/no-legacy-features.ts +++ b/lib/rules/no-legacy-features.ts @@ -1,8 +1,8 @@ import type { MemberExpression } from "estree" -import type { TYPES } from "@eslint-community/eslint-utils" -import { READ, ReferenceTracker } from "@eslint-community/eslint-utils" import { createRule } from "../utils" import { createTypeTracker } from "../utils/type-tracker" +import type { TYPES } from "@eslint-community/eslint-utils" +import { READ, ReferenceTracker } from "@eslint-community/eslint-utils" type StaticProperty = | "input" diff --git a/lib/rules/no-misleading-capturing-group.ts b/lib/rules/no-misleading-capturing-group.ts index 157841978..bb3b077ff 100644 --- a/lib/rules/no-misleading-capturing-group.ts +++ b/lib/rules/no-misleading-capturing-group.ts @@ -1,14 +1,13 @@ /* eslint-disable eslint-comments/disable-enable-pair -- x */ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Alternative, CapturingGroup, Element, Quantifier, } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { CharSet } from "refa" import type { MatchingDirection, ReadonlyFlags } from "regexp-ast-analysis" import { isPotentiallyZeroLength, @@ -20,12 +19,13 @@ import { followPaths, toUnicodeSet, } from "regexp-ast-analysis" -import { canSimplifyQuantifier, hasCapturingGroup } from "../utils/regexp-ast" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" import { fixSimplifyQuantifier } from "../utils/fix-simplify-quantifier" import { joinEnglishList, mention } from "../utils/mention" import { getParser, toCharSetSource } from "../utils/refa" +import { canSimplifyQuantifier, hasCapturingGroup } from "../utils/regexp-ast" import { assertNever, cachedFn, reversed } from "../utils/util" -import { CharSet } from "refa" /** * Returns all quantifiers that are always at the start of the given element. diff --git a/lib/rules/no-misleading-unicode-character.ts b/lib/rules/no-misleading-unicode-character.ts index 6ed977c88..dd8122ae8 100644 --- a/lib/rules/no-misleading-unicode-character.ts +++ b/lib/rules/no-misleading-unicode-character.ts @@ -1,16 +1,16 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" -import type { ReadonlyFlags } from "regexp-ast-analysis" -import { mention, mentionChar } from "../utils/mention" -import { isEscapeSequence } from "../utils/regex-syntax" import type { CharacterClass, CharacterClassElement, Quantifier, } from "@eslint-community/regexpp/ast" -import type { PatternRange } from "../utils/ast-utils/pattern-source" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Rule } from "eslint" +import type { ReadonlyFlags } from "regexp-ast-analysis" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" +import type { PatternRange } from "../utils/ast-utils/pattern-source" +import { mention, mentionChar } from "../utils/mention" +import { isEscapeSequence } from "../utils/regex-syntax" const segmenter = new Intl.Segmenter() diff --git a/lib/rules/no-obscure-range.ts b/lib/rules/no-obscure-range.ts index f82301e0a..e6e5f9883 100644 --- a/lib/rules/no-obscure-range.ts +++ b/lib/rules/no-obscure-range.ts @@ -1,18 +1,18 @@ +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" import { getAllowedCharRanges, inRange, getAllowedCharValueSchema, } from "../utils/char-ranges" -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" +import { mentionChar } from "../utils/mention" import { isControlEscape, isEscapeSequence, isOctalEscape, isHexLikeEscape, } from "../utils/regex-syntax" -import { mentionChar } from "../utils/mention" export default createRule("no-obscure-range", { meta: { diff --git a/lib/rules/no-optional-assertion.ts b/lib/rules/no-optional-assertion.ts index d7636b491..49c33e124 100644 --- a/lib/rules/no-optional-assertion.ts +++ b/lib/rules/no-optional-assertion.ts @@ -1,4 +1,3 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Alternative, Assertion, @@ -6,10 +5,11 @@ import type { Group, Quantifier, } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { ReadonlyFlags } from "regexp-ast-analysis" import { isZeroLength } from "regexp-ast-analysis" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" type ZeroQuantifier = Quantifier & { min: 0 } diff --git a/lib/rules/no-potentially-useless-backreference.ts b/lib/rules/no-potentially-useless-backreference.ts index ed2f96167..3be50f808 100644 --- a/lib/rules/no-potentially-useless-backreference.ts +++ b/lib/rules/no-potentially-useless-backreference.ts @@ -1,10 +1,10 @@ import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" import { isEmptyBackreference, isStrictBackreference, } from "regexp-ast-analysis" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" export default createRule("no-potentially-useless-backreference", { meta: { diff --git a/lib/rules/no-super-linear-backtracking.ts b/lib/rules/no-super-linear-backtracking.ts index 8d00d8ec5..503647917 100644 --- a/lib/rules/no-super-linear-backtracking.ts +++ b/lib/rules/no-super-linear-backtracking.ts @@ -1,9 +1,9 @@ import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { Position, SourceLocation } from "estree" +import { analyse } from "scslre" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" import { UsageOfPattern } from "../utils/get-usage-of-pattern" -import { analyse } from "scslre" -import type { Position, SourceLocation } from "estree" import { mention } from "../utils/mention" import { getJSRegexppAst } from "../utils/refa" diff --git a/lib/rules/no-super-linear-move.ts b/lib/rules/no-super-linear-move.ts index 453e3e963..a366e797f 100644 --- a/lib/rules/no-super-linear-move.ts +++ b/lib/rules/no-super-linear-move.ts @@ -1,19 +1,9 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Alternative, Pattern, Quantifier, } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" -import { UsageOfPattern } from "../utils/get-usage-of-pattern" -import { analyse } from "scslre" -import type { Descendant, ReadonlyFlags } from "regexp-ast-analysis" -import { - isPotentiallyEmpty, - getMatchingDirection, - getFirstConsumedCharAfter, -} from "regexp-ast-analysis" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { NoParentNode, Expression } from "refa" import { visitAst, @@ -22,6 +12,16 @@ import { Transformers, CombinedTransformer, } from "refa" +import { + isPotentiallyEmpty, + getMatchingDirection, + getFirstConsumedCharAfter, +} from "regexp-ast-analysis" +import type { Descendant, ReadonlyFlags } from "regexp-ast-analysis" +import { analyse } from "scslre" +import { createRule, defineRegexpVisitor } from "../utils" +import type { RegExpContext } from "../utils" +import { UsageOfPattern } from "../utils/get-usage-of-pattern" import { getJSRegexppAst } from "../utils/refa" interface Report { diff --git a/lib/rules/no-trivially-nested-assertion.ts b/lib/rules/no-trivially-nested-assertion.ts index a9a90628e..3e40b460b 100644 --- a/lib/rules/no-trivially-nested-assertion.ts +++ b/lib/rules/no-trivially-nested-assertion.ts @@ -1,12 +1,12 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Node as RegExpNode, Assertion, LookaroundAssertion, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { hasSomeDescendant } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" -import { hasSomeDescendant } from "regexp-ast-analysis" function isLookaround(node: RegExpNode): node is LookaroundAssertion { return ( diff --git a/lib/rules/no-trivially-nested-quantifier.ts b/lib/rules/no-trivially-nested-quantifier.ts index bf9c1fe82..992c8c5ef 100644 --- a/lib/rules/no-trivially-nested-quantifier.ts +++ b/lib/rules/no-trivially-nested-quantifier.ts @@ -1,5 +1,5 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Group, Quantifier } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" import type { Quant } from "../utils/regexp-ast" diff --git a/lib/rules/no-unused-capturing-group.ts b/lib/rules/no-unused-capturing-group.ts index e0a86fa8d..1cb661739 100644 --- a/lib/rules/no-unused-capturing-group.ts +++ b/lib/rules/no-unused-capturing-group.ts @@ -1,8 +1,8 @@ +import type { CapturingGroup } from "@eslint-community/regexpp/ast" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { getCapturingGroupNumber } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" -import type { CapturingGroup } from "@eslint-community/regexpp/ast" -import { getCapturingGroupNumber } from "regexp-ast-analysis" /** * Returns an identifier for the given capturing group. diff --git a/lib/rules/no-useless-assertions.ts b/lib/rules/no-useless-assertions.ts index 6d8268d95..0da40e1f7 100644 --- a/lib/rules/no-useless-assertions.ts +++ b/lib/rules/no-useless-assertions.ts @@ -1,4 +1,3 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Alternative, Assertion, @@ -9,8 +8,7 @@ import type { Pattern, WordBoundaryAssertion, } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { MatchingDirection, ReadonlyFlags, @@ -28,6 +26,8 @@ import { FirstConsumedChars, invertMatchingDirection, } from "regexp-ast-analysis" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" import { mention } from "../utils/mention" import { assertNever } from "../utils/util" diff --git a/lib/rules/no-useless-backreference.ts b/lib/rules/no-useless-backreference.ts index 5d06039e2..be44ff8f1 100644 --- a/lib/rules/no-useless-backreference.ts +++ b/lib/rules/no-useless-backreference.ts @@ -1,18 +1,18 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Node as RegExpNode, Backreference, Alternative, CapturingGroup, } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { ReadonlyFlags } from "regexp-ast-analysis" import { getClosestAncestor, getMatchingDirection, isZeroLength, } from "regexp-ast-analysis" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" import { mention } from "../utils/mention" /** diff --git a/lib/rules/no-useless-character-class.ts b/lib/rules/no-useless-character-class.ts index 29fa2da34..604a0c2c6 100644 --- a/lib/rules/no-useless-character-class.ts +++ b/lib/rules/no-useless-character-class.ts @@ -1,12 +1,12 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" -import type { RegExpContext } from "../utils" -import { canUnwrapped, createRule, defineRegexpVisitor } from "../utils" import type { CharacterClass, CharacterClassElement, ExpressionCharacterClass, UnicodeSetsCharacterClass, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { RegExpContext } from "../utils" +import { canUnwrapped, createRule, defineRegexpVisitor } from "../utils" import { RESERVED_DOUBLE_PUNCTUATOR_CHARS } from "../utils/regex-syntax" const ESCAPES_OUTSIDE_CHARACTER_CLASS = new Set("$()*+./?[{|") diff --git a/lib/rules/no-useless-dollar-replacements.ts b/lib/rules/no-useless-dollar-replacements.ts index 29b071231..417704dcd 100644 --- a/lib/rules/no-useless-dollar-replacements.ts +++ b/lib/rules/no-useless-dollar-replacements.ts @@ -1,14 +1,14 @@ -import type { CallExpression, Literal } from "estree" -import { createRule } from "../utils" -import { createTypeTracker } from "../utils/type-tracker" import type { RegExpLiteral, Pattern } from "@eslint-community/regexpp/ast" import type { Rule } from "eslint" +import type { CallExpression, Literal } from "estree" +import { createRule } from "../utils" import type { ReferenceElement } from "../utils/ast-utils" import { isKnownMethodCall, parseReplacements } from "../utils/ast-utils" import { extractCaptures, getRegExpNodeFromExpression, } from "../utils/regexp-ast" +import { createTypeTracker } from "../utils/type-tracker" /** * Extract `$` replacements diff --git a/lib/rules/no-useless-escape.ts b/lib/rules/no-useless-escape.ts index d502c5561..15b7addb2 100644 --- a/lib/rules/no-useless-escape.ts +++ b/lib/rules/no-useless-escape.ts @@ -1,9 +1,9 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Character, CharacterClass, ExpressionCharacterClass, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { createRule, diff --git a/lib/rules/no-useless-flag.ts b/lib/rules/no-useless-flag.ts index 848d869e6..99f9c0e0f 100644 --- a/lib/rules/no-useless-flag.ts +++ b/lib/rules/no-useless-flag.ts @@ -1,5 +1,4 @@ -import type { RegExpContext, RegExpContextForSource } from "../utils" -import { compositingVisitors, createRule, defineRegexpVisitor } from "../utils" +import type { Rule } from "eslint" import type { CallExpression, Expression, @@ -8,16 +7,18 @@ import type { RegExpLiteral, Statement, } from "estree" +import type { RuleListener } from "../types" +import type { RegExpContext, RegExpContextForSource } from "../utils" +import { compositingVisitors, createRule, defineRegexpVisitor } from "../utils" import type { KnownMethodCall } from "../utils/ast-utils" import { isKnownMethodCall, extractExpressionReferences, + getFlagsRange, + getFlagsLocation, } from "../utils/ast-utils" -import { createTypeTracker } from "../utils/type-tracker" -import type { RuleListener } from "../types" -import type { Rule } from "eslint" import { isCaseVariant } from "../utils/regexp-ast" -import { getFlagsRange, getFlagsLocation } from "../utils/ast-utils" +import { createTypeTracker } from "../utils/type-tracker" type CodePathStack = { codePathId: string diff --git a/lib/rules/no-useless-lazy.ts b/lib/rules/no-useless-lazy.ts index acf65d09f..347f88eb0 100644 --- a/lib/rules/no-useless-lazy.ts +++ b/lib/rules/no-useless-lazy.ts @@ -1,3 +1,5 @@ +import type { Quantifier } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Rule } from "eslint" import type { SourceLocation } from "estree" import { @@ -5,8 +7,6 @@ import { getFirstConsumedChar, getFirstCharAfter, } from "regexp-ast-analysis" -import type { Quantifier } from "@eslint-community/regexpp/ast" -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" diff --git a/lib/rules/no-useless-quantifier.ts b/lib/rules/no-useless-quantifier.ts index 78060a851..f92abd4cc 100644 --- a/lib/rules/no-useless-quantifier.ts +++ b/lib/rules/no-useless-quantifier.ts @@ -1,9 +1,9 @@ -import type { Rule } from "eslint" -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Quantifier } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { Rule } from "eslint" +import { isEmpty, isPotentiallyEmpty, isZeroLength } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { canUnwrapped, createRule, defineRegexpVisitor } from "../utils" -import { isEmpty, isPotentiallyEmpty, isZeroLength } from "regexp-ast-analysis" export default createRule("no-useless-quantifier", { meta: { diff --git a/lib/rules/no-useless-set-operand.ts b/lib/rules/no-useless-set-operand.ts index 2f7d05df7..8bc2208b9 100644 --- a/lib/rules/no-useless-set-operand.ts +++ b/lib/rules/no-useless-set-operand.ts @@ -1,4 +1,3 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { CharacterClassElement, ClassSetOperand, @@ -6,9 +5,10 @@ import type { Node, StringAlternative, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { toUnicodeSet } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" -import { toUnicodeSet } from "regexp-ast-analysis" type FlatElement = CharacterClassElement | StringAlternative diff --git a/lib/rules/no-useless-string-literal.ts b/lib/rules/no-useless-string-literal.ts index b8fd32355..fa48c7760 100644 --- a/lib/rules/no-useless-string-literal.ts +++ b/lib/rules/no-useless-string-literal.ts @@ -1,10 +1,10 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" import type { ClassStringDisjunction, StringAlternative, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" import { RESERVED_DOUBLE_PUNCTUATOR_CHARS } from "../utils/regex-syntax" export default createRule("no-useless-string-literal", { diff --git a/lib/rules/no-zero-quantifier.ts b/lib/rules/no-zero-quantifier.ts index c776dcc62..f0f6f3dca 100644 --- a/lib/rules/no-zero-quantifier.ts +++ b/lib/rules/no-zero-quantifier.ts @@ -1,6 +1,6 @@ +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Rule } from "eslint" import { hasSomeDescendant } from "regexp-ast-analysis" -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { canUnwrapped, createRule, defineRegexpVisitor } from "../utils" diff --git a/lib/rules/optimal-lookaround-quantifier.ts b/lib/rules/optimal-lookaround-quantifier.ts index 0679207cb..b112822f6 100644 --- a/lib/rules/optimal-lookaround-quantifier.ts +++ b/lib/rules/optimal-lookaround-quantifier.ts @@ -1,12 +1,12 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Alternative, LookaroundAssertion, Quantifier, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { hasSomeDescendant } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" -import { hasSomeDescendant } from "regexp-ast-analysis" import { mention } from "../utils/mention" /** diff --git a/lib/rules/optimal-quantifier-concatenation.ts b/lib/rules/optimal-quantifier-concatenation.ts index 21d490e67..75eddc56b 100644 --- a/lib/rules/optimal-quantifier-concatenation.ts +++ b/lib/rules/optimal-quantifier-concatenation.ts @@ -1,4 +1,3 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Alternative, CapturingGroup, @@ -10,9 +9,9 @@ import type { QuantifiableElement, Quantifier, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { AST } from "eslint" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" +import type { CharSet } from "refa" import type { Ancestor, ReadonlyFlags } from "regexp-ast-analysis" import { Chars, @@ -20,16 +19,17 @@ import { getConsumedChars, toUnicodeSet, } from "regexp-ast-analysis" -import { getParser } from "../utils/refa" -import type { CharSet } from "refa" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" +import { fixSimplifyQuantifier } from "../utils/fix-simplify-quantifier" import { joinEnglishList, mention } from "../utils/mention" +import { getParser } from "../utils/refa" import type { Quant } from "../utils/regexp-ast" import { canSimplifyQuantifier, hasCapturingGroup, quantToString, } from "../utils/regexp-ast" -import { fixSimplifyQuantifier } from "../utils/fix-simplify-quantifier" import { assertNever } from "../utils/util" interface SingleConsumedChar { diff --git a/lib/rules/prefer-character-class.ts b/lib/rules/prefer-character-class.ts index 17aa37dc4..aea1c455c 100644 --- a/lib/rules/prefer-character-class.ts +++ b/lib/rules/prefer-character-class.ts @@ -1,4 +1,3 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Alternative, CapturingGroup, @@ -12,8 +11,8 @@ import type { Node, Pattern, } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { Position, SourceLocation } from "estree" import type { CharSet } from "refa" import type { FirstConsumedChar, ReadonlyFlags } from "regexp-ast-analysis" import { @@ -21,9 +20,10 @@ import { getMatchingDirection, toUnicodeSet, } from "regexp-ast-analysis" -import type { Position, SourceLocation } from "estree" -import { assertNever } from "../utils/util" +import { createRule, defineRegexpVisitor } from "../utils" +import type { RegExpContext } from "../utils" import { RESERVED_DOUBLE_PUNCTUATOR_CHARS } from "../utils/regex-syntax" +import { assertNever } from "../utils/util" /** * Find the first index of an element that satisfies the given condition. diff --git a/lib/rules/prefer-d.ts b/lib/rules/prefer-d.ts index 23a9ed5a3..2e99f9bbf 100644 --- a/lib/rules/prefer-d.ts +++ b/lib/rules/prefer-d.ts @@ -1,4 +1,12 @@ +import type { + CharacterClass, + CharacterClassElement, + CharacterClassRange, + EscapeCharacterSet, + ExpressionCharacterClass, +} from "@eslint-community/regexpp/ast" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { Chars, toUnicodeSet } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, @@ -6,15 +14,7 @@ import { CP_DIGIT_ZERO, CP_DIGIT_NINE, } from "../utils" -import { Chars, toUnicodeSet } from "regexp-ast-analysis" import { mention } from "../utils/mention" -import type { - CharacterClass, - CharacterClassElement, - CharacterClassRange, - EscapeCharacterSet, - ExpressionCharacterClass, -} from "@eslint-community/regexpp/ast" /** * Returns whether the given character class element is equivalent to `\d`. diff --git a/lib/rules/prefer-lookaround.ts b/lib/rules/prefer-lookaround.ts index 9fb75f86d..e25b1d3ec 100644 --- a/lib/rules/prefer-lookaround.ts +++ b/lib/rules/prefer-lookaround.ts @@ -1,13 +1,22 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { CapturingGroup, Element, LookaroundAssertion, Pattern, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { Rule } from "eslint" +import type { Expression, Literal } from "estree" +import type { CharSet } from "refa" +import { + getLengthRange, + isZeroLength, + FirstConsumedChars, + getConsumedChars, +} from "regexp-ast-analysis" +import type { ReadonlyFlags } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" -import { createTypeTracker } from "../utils/type-tracker" import type { KnownMethodCall, ReferenceElement } from "../utils/ast-utils" import { getParent, @@ -20,18 +29,9 @@ import type { PatternRange, PatternReplaceRange, } from "../utils/ast-utils/pattern-source" -import type { Expression, Literal } from "estree" -import type { Rule } from "eslint" import { mention } from "../utils/mention" import { getFirstConsumedCharPlusAfter } from "../utils/regexp-ast" -import type { ReadonlyFlags } from "regexp-ast-analysis" -import { - getLengthRange, - isZeroLength, - FirstConsumedChars, - getConsumedChars, -} from "regexp-ast-analysis" -import type { CharSet } from "refa" +import { createTypeTracker } from "../utils/type-tracker" type ReplaceReference = { ref: string | number; range?: [number, number] } type ReplaceReferences = { diff --git a/lib/rules/prefer-predefined-assertion.ts b/lib/rules/prefer-predefined-assertion.ts index 551b23f79..99126f690 100644 --- a/lib/rules/prefer-predefined-assertion.ts +++ b/lib/rules/prefer-predefined-assertion.ts @@ -1,12 +1,10 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { CharacterClass, CharacterSet, ExpressionCharacterClass, LookaroundAssertion, } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import { Chars, getFirstCharAfter, @@ -14,6 +12,8 @@ import { invertMatchingDirection, toUnicodeSet, } from "regexp-ast-analysis" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" /** * If the lookaround only consists of a single character, character set, or diff --git a/lib/rules/prefer-quantifier.ts b/lib/rules/prefer-quantifier.ts index 511ae71d0..2074f8d48 100644 --- a/lib/rules/prefer-quantifier.ts +++ b/lib/rules/prefer-quantifier.ts @@ -1,5 +1,5 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Character, CharacterSet } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { createRule, @@ -8,8 +8,8 @@ import { isLetter, isSymbol, } from "../utils" -import { quantToString } from "../utils/regexp-ast" import type { PatternRange } from "../utils/ast-utils/pattern-source" +import { quantToString } from "../utils/regexp-ast" type CharTarget = CharacterSet | Character diff --git a/lib/rules/prefer-question-quantifier.ts b/lib/rules/prefer-question-quantifier.ts index 66a842daf..59f0ad7c0 100644 --- a/lib/rules/prefer-question-quantifier.ts +++ b/lib/rules/prefer-question-quantifier.ts @@ -1,8 +1,8 @@ -import { mention } from "../utils/mention" import type { Group, Quantifier } from "@eslint-community/regexpp/ast" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" +import { mention } from "../utils/mention" import { getQuantifierOffsets } from "../utils/regexp-ast" export default createRule("prefer-question-quantifier", { diff --git a/lib/rules/prefer-range.ts b/lib/rules/prefer-range.ts index 1db18ecdb..02b66b283 100644 --- a/lib/rules/prefer-range.ts +++ b/lib/rules/prefer-range.ts @@ -1,16 +1,16 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Character, CharacterClassRange, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" +import type { PatternReplaceRange } from "../utils/ast-utils/pattern-source" import { getAllowedCharRanges, getAllowedCharValueSchema, inRange, } from "../utils/char-ranges" -import type { PatternReplaceRange } from "../utils/ast-utils/pattern-source" import { mention } from "../utils/mention" export default createRule("prefer-range", { diff --git a/lib/rules/prefer-regexp-exec.ts b/lib/rules/prefer-regexp-exec.ts index ce46acb17..f62b42a1e 100644 --- a/lib/rules/prefer-regexp-exec.ts +++ b/lib/rules/prefer-regexp-exec.ts @@ -1,7 +1,7 @@ import type { CallExpression } from "estree" import { createRule } from "../utils" -import { createTypeTracker } from "../utils/type-tracker" import { isKnownMethodCall, getStaticValue } from "../utils/ast-utils" +import { createTypeTracker } from "../utils/type-tracker" // Inspired by https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/prefer-regexp-exec.md export default createRule("prefer-regexp-exec", { diff --git a/lib/rules/prefer-regexp-test.ts b/lib/rules/prefer-regexp-test.ts index 3d1211cbc..aebeb8fb3 100644 --- a/lib/rules/prefer-regexp-test.ts +++ b/lib/rules/prefer-regexp-test.ts @@ -1,15 +1,15 @@ import type * as ES from "estree" -import { - hasSideEffect, - isOpeningParenToken, -} from "@eslint-community/eslint-utils" import { createRule } from "../utils" -import { createTypeTracker } from "../utils/type-tracker" import { getParent, isKnownMethodCall, getStaticValue, } from "../utils/ast-utils" +import { createTypeTracker } from "../utils/type-tracker" +import { + hasSideEffect, + isOpeningParenToken, +} from "@eslint-community/eslint-utils" // Inspired by https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-regexp-test.md export default createRule("prefer-regexp-test", { diff --git a/lib/rules/prefer-result-array-groups.ts b/lib/rules/prefer-result-array-groups.ts index 8a63fbf07..21e486d0b 100644 --- a/lib/rules/prefer-result-array-groups.ts +++ b/lib/rules/prefer-result-array-groups.ts @@ -1,5 +1,6 @@ import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" -import { isOpeningBracketToken } from "@eslint-community/eslint-utils" +import type { Expression, Super } from "estree" +import type * as TS from "typescript" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" import { @@ -9,8 +10,7 @@ import { isUnionOrIntersection, isNull, } from "../utils/ts-util" -import type * as TS from "typescript" -import type { Expression, Super } from "estree" +import { isOpeningBracketToken } from "@eslint-community/eslint-utils" export default createRule("prefer-result-array-groups", { meta: { diff --git a/lib/rules/prefer-set-operation.ts b/lib/rules/prefer-set-operation.ts index 86cdf0053..628c3353f 100644 --- a/lib/rules/prefer-set-operation.ts +++ b/lib/rules/prefer-set-operation.ts @@ -1,4 +1,3 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Alternative, Character, @@ -8,9 +7,10 @@ import type { LookaroundAssertion, Node, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { hasStrings } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" -import { hasStrings } from "regexp-ast-analysis" type CharElement = | Character diff --git a/lib/rules/prefer-w.ts b/lib/rules/prefer-w.ts index 61097e369..2c54324ed 100644 --- a/lib/rules/prefer-w.ts +++ b/lib/rules/prefer-w.ts @@ -1,9 +1,10 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { CharacterClass, CharacterClassElement, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Rule } from "eslint" +import { Chars, toUnicodeSet } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, @@ -16,7 +17,6 @@ import { CP_DIGIT_NINE, CP_LOW_LINE, } from "../utils" -import { Chars, toUnicodeSet } from "regexp-ast-analysis" import { mention } from "../utils/mention" function isSmallLetterRange(node: CharacterClassElement) { diff --git a/lib/rules/require-unicode-regexp.ts b/lib/rules/require-unicode-regexp.ts index 18505a5fa..9a1e8db71 100644 --- a/lib/rules/require-unicode-regexp.ts +++ b/lib/rules/require-unicode-regexp.ts @@ -1,4 +1,3 @@ -import type { CharRange } from "refa" import { visitRegExpAST, RegExpParser } from "@eslint-community/regexpp" import type { Character, @@ -9,8 +8,7 @@ import type { Quantifier, } from "@eslint-community/regexpp/ast" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" +import type { CharRange } from "refa" import type { ReadonlyFlags } from "regexp-ast-analysis" import { hasSomeDescendant, @@ -18,6 +16,8 @@ import { getFirstCharAfter, toUnicodeSet, } from "regexp-ast-analysis" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" const UTF16_MAX = 0xffff diff --git a/lib/rules/require-unicode-sets-regexp.ts b/lib/rules/require-unicode-sets-regexp.ts index f5d0390a6..43c704fa8 100644 --- a/lib/rules/require-unicode-sets-regexp.ts +++ b/lib/rules/require-unicode-sets-regexp.ts @@ -1,8 +1,8 @@ +import { RegExpParser, visitRegExpAST } from "@eslint-community/regexpp" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { toUnicodeSet } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" -import { RegExpParser, visitRegExpAST } from "@eslint-community/regexpp" -import { toUnicodeSet } from "regexp-ast-analysis" import { RESERVED_DOUBLE_PUNCTUATOR_PATTERN } from "../utils/regex-syntax" /** diff --git a/lib/rules/simplify-set-operations.ts b/lib/rules/simplify-set-operations.ts index e4c5a650f..0f09af974 100644 --- a/lib/rules/simplify-set-operations.ts +++ b/lib/rules/simplify-set-operations.ts @@ -1,6 +1,4 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" +import { RegExpParser } from "@eslint-community/regexpp" import type { CharacterClass, CharacterClassElement, @@ -11,9 +9,11 @@ import type { EscapeCharacterSet, ExpressionCharacterClass, } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { ReadonlyFlags, ToUnicodeSetElement } from "regexp-ast-analysis" import { toUnicodeSet } from "regexp-ast-analysis" -import { RegExpParser } from "@eslint-community/regexpp" +import { createRule, defineRegexpVisitor } from "../utils" +import type { RegExpContext } from "../utils" type NegatableCharacterClassElement = | CharacterClass diff --git a/lib/rules/sort-alternatives.ts b/lib/rules/sort-alternatives.ts index 983a7b37d..0d5a3e25b 100644 --- a/lib/rules/sort-alternatives.ts +++ b/lib/rules/sort-alternatives.ts @@ -1,4 +1,3 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Alternative, Character, @@ -10,18 +9,9 @@ import type { Pattern, StringAlternative, } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" -import { - CP_MINUS, - CP_PLUS, - CP_STAR, - CP_QUESTION, - CP_SLASH, - CP_SPACE, - CP_APOSTROPHE, - createRule, - defineRegexpVisitor, -} from "../utils" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { CharSet, Word, ReadonlyWord } from "refa" +import { NFA, JS, transform } from "refa" import type { GetLongestPrefixOptions, ReadonlyFlags, @@ -35,10 +25,20 @@ import { toUnicodeSet, hasStrings, } from "regexp-ast-analysis" -import type { CharSet, Word, ReadonlyWord } from "refa" -import { NFA, JS, transform } from "refa" -import { getParser, assertValidFlags } from "../utils/refa" +import { + CP_MINUS, + CP_PLUS, + CP_STAR, + CP_QUESTION, + CP_SLASH, + CP_SPACE, + CP_APOSTROPHE, + createRule, + defineRegexpVisitor, +} from "../utils" +import type { RegExpContext } from "../utils" import { getLexicographicallySmallestInConcatenation } from "../utils/lexicographically-smallest" +import { getParser, assertValidFlags } from "../utils/refa" interface AllowedChars { allowed: CharSet diff --git a/lib/rules/sort-character-class-elements.ts b/lib/rules/sort-character-class-elements.ts index a5ee911d7..9853fe675 100644 --- a/lib/rules/sort-character-class-elements.ts +++ b/lib/rules/sort-character-class-elements.ts @@ -1,4 +1,3 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { CharacterClass, CharacterClassElement, @@ -6,13 +5,14 @@ import type { UnicodePropertyCharacterSet, UnicodeSetsCharacterClassElement, } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "../utils" -import { createRule, defineRegexpVisitor } from "../utils" -import { mention } from "../utils/mention" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { ReadonlyWord } from "refa" import type { ReadonlyFlags } from "regexp-ast-analysis" import { toUnicodeSet } from "regexp-ast-analysis" -import type { ReadonlyWord } from "refa" +import type { RegExpContext } from "../utils" +import { createRule, defineRegexpVisitor } from "../utils" import { getLexicographicallySmallest } from "../utils/lexicographically-smallest" +import { mention } from "../utils/mention" type CharacterClassElementKind = | "\\w" diff --git a/lib/rules/strict.ts b/lib/rules/strict.ts index c248c8221..f051d8445 100644 --- a/lib/rules/strict.ts +++ b/lib/rules/strict.ts @@ -1,14 +1,14 @@ -import { mention } from "../utils/mention" import { RegExpValidator } from "@eslint-community/regexpp" import type { CharacterClassElement, Element, } from "@eslint-community/regexpp/ast" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { ReadonlyFlags } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" +import { mention } from "../utils/mention" import { isEscapeSequence, isOctalEscape } from "../utils/regex-syntax" -import type { ReadonlyFlags } from "regexp-ast-analysis" const validator = new RegExpValidator({ strict: true, ecmaVersion: 2020 }) diff --git a/lib/rules/unicode-escape.ts b/lib/rules/unicode-escape.ts index b25e66ddf..cc10ce2a1 100644 --- a/lib/rules/unicode-escape.ts +++ b/lib/rules/unicode-escape.ts @@ -1,5 +1,5 @@ -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Character } from "@eslint-community/regexpp/ast" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" import { diff --git a/lib/rules/use-ignore-case.ts b/lib/rules/use-ignore-case.ts index d7ba1e4ba..c99a5da26 100644 --- a/lib/rules/use-ignore-case.ts +++ b/lib/rules/use-ignore-case.ts @@ -1,5 +1,3 @@ -import { CharSet, JS } from "refa" -import { Chars, toUnicodeSet } from "regexp-ast-analysis" import type { CharacterClass, CharacterClassElement, @@ -7,16 +5,18 @@ import type { StringAlternative, } from "@eslint-community/regexpp/ast" import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import type { Rule } from "eslint" +import { CharSet, JS } from "refa" +import { Chars, toUnicodeSet } from "regexp-ast-analysis" import type { RegExpContext } from "../utils" import { createRule, defineRegexpVisitor } from "../utils" -import { getIgnoreCaseFlags, isCaseVariant } from "../utils/regexp-ast" -import { mention } from "../utils/mention" import type { PatternSource, PatternRange, } from "../utils/ast-utils/pattern-source" -import type { Rule } from "eslint" import { UsageOfPattern } from "../utils/get-usage-of-pattern" +import { mention } from "../utils/mention" +import { getIgnoreCaseFlags, isCaseVariant } from "../utils/regexp-ast" import { cachedFn } from "../utils/util" type FlatClassElement = CharacterClassElement | StringAlternative diff --git a/lib/types.ts b/lib/types.ts index 805fcfc1a..32adf711f 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -1,5 +1,5 @@ -import type { JSONSchema4 } from "json-schema" import type { Rule } from "eslint" +import type { JSONSchema4 } from "json-schema" export type RuleListener = Rule.RuleListener diff --git a/lib/utils/ast-utils/extract-property-references.ts b/lib/utils/ast-utils/extract-property-references.ts index 4b00fc097..b788b9042 100644 --- a/lib/utils/ast-utils/extract-property-references.ts +++ b/lib/utils/ast-utils/extract-property-references.ts @@ -12,11 +12,11 @@ import type { Property, SpreadElement, } from "estree" -import { getParent, getStringIfConstant } from "./utils" import { extractExpressionReferences, extractExpressionReferencesForVariable, } from "./extract-expression-references" +import { getParent, getStringIfConstant } from "./utils" export type PropertyReference = | { diff --git a/lib/utils/ast-utils/pattern-source.ts b/lib/utils/ast-utils/pattern-source.ts index 494d853d4..52046d5cc 100644 --- a/lib/utils/ast-utils/pattern-source.ts +++ b/lib/utils/ast-utils/pattern-source.ts @@ -1,5 +1,5 @@ -import type { Expression, Literal, RegExpLiteral } from "estree" import type { Rule, AST, SourceCode } from "eslint" +import type { Expression, Literal, RegExpLiteral } from "estree" import { dereferenceOwnedVariable, astRangeToLocation, diff --git a/lib/utils/ast-utils/regex.ts b/lib/utils/ast-utils/regex.ts index 32653f962..8fc304eaf 100644 --- a/lib/utils/ast-utils/regex.ts +++ b/lib/utils/ast-utils/regex.ts @@ -1,5 +1,5 @@ -import type * as ESTree from "estree" import type { AST, SourceCode } from "eslint" +import type * as ESTree from "estree" import { getStringValueRange, isRegexpLiteral, isStringLiteral } from "./utils" export function getFlagsRange(flagsNode: ESTree.RegExpLiteral): AST.Range diff --git a/lib/utils/ast-utils/utils.ts b/lib/utils/ast-utils/utils.ts index dd65a9687..a175313da 100644 --- a/lib/utils/ast-utils/utils.ts +++ b/lib/utils/ast-utils/utils.ts @@ -1,5 +1,4 @@ import type { Rule, SourceCode, AST, Scope } from "eslint" -import * as eslintUtils from "@eslint-community/eslint-utils" import type { ArrowFunctionExpression, CallExpression, @@ -12,8 +11,9 @@ import type { Node, RegExpLiteral, } from "estree" -import { parseStringLiteral, parseStringTokens } from "../string-literal-parser" import { baseParseReplacements } from "../replacements-utils" +import { parseStringLiteral, parseStringTokens } from "../string-literal-parser" +import * as eslintUtils from "@eslint-community/eslint-utils" /** * Get a parent node diff --git a/lib/utils/char-ranges.ts b/lib/utils/char-ranges.ts index 836a7fb9d..febb19ff3 100644 --- a/lib/utils/char-ranges.ts +++ b/lib/utils/char-ranges.ts @@ -1,4 +1,6 @@ import type { Rule } from "eslint" +import type { JSONSchema4 } from "json-schema" +import type { CharRange } from "refa" import { CP_CAPITAL_A, CP_CAPITAL_Z, @@ -7,8 +9,6 @@ import { CP_SMALL_A, CP_SMALL_Z, } from "./unicode" -import type { JSONSchema4 } from "json-schema" -import type { CharRange } from "refa" const ALL_RANGES: readonly CharRange[] = [{ min: 0, max: 0x10ffff }] const ALPHANUMERIC_RANGES: readonly CharRange[] = [ diff --git a/lib/utils/fix-simplify-quantifier.ts b/lib/utils/fix-simplify-quantifier.ts index 9cad20797..deddb1791 100644 --- a/lib/utils/fix-simplify-quantifier.ts +++ b/lib/utils/fix-simplify-quantifier.ts @@ -1,9 +1,9 @@ +import type { Quantifier } from "@eslint-community/regexpp/ast" import type { Rule } from "eslint" import { getClosestAncestor } from "regexp-ast-analysis" -import type { Quantifier } from "@eslint-community/regexpp/ast" -import type { RegExpContext } from "." import { quantToString } from "./regexp-ast" import type { CanSimplify } from "./regexp-ast" +import type { RegExpContext } from "." /** * Returns a fixer to simplify the given quantifier. diff --git a/lib/utils/index.ts b/lib/utils/index.ts index d71cfeb96..98374ec52 100644 --- a/lib/utils/index.ts +++ b/lib/utils/index.ts @@ -1,6 +1,4 @@ -import type * as ESTree from "estree" -import type { RuleListener, RuleModule, PartialRuleModule } from "../types" -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" +import { RegExpParser, visitRegExpAST } from "@eslint-community/regexpp" import type { Alternative, CapturingGroup, @@ -11,41 +9,43 @@ import type { Quantifier, StringAlternative, } from "@eslint-community/regexpp/ast" -import { RegExpParser, visitRegExpAST } from "@eslint-community/regexpp" -import { - CALL, - CONSTRUCT, - ReferenceTracker, -} from "@eslint-community/eslint-utils" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import type { Rule, AST } from "eslint" +import type * as ESTree from "estree" +import type { ReadonlyFlags } from "regexp-ast-analysis" +import { toCache } from "regexp-ast-analysis" +import type { RuleListener, RuleModule, PartialRuleModule } from "../types" import { getFlagLocation, getFlagsLocation, getFlagsRange, getStringIfConstant, } from "./ast-utils" -import type { Quant } from "./regexp-ast" -import { - extractCaptures, - getQuantifierOffsets, - quantToString, -} from "./regexp-ast" -import type { ReadonlyFlags } from "regexp-ast-analysis" -import { toCache } from "regexp-ast-analysis" -import type { UsageOfPattern } from "./get-usage-of-pattern" -import { getUsageOfPattern } from "./get-usage-of-pattern" +import type { PatternRange } from "./ast-utils/pattern-source" +import { PatternSource } from "./ast-utils/pattern-source" import { dereferenceOwnedVariable, isRegexpLiteral, isStringLiteral, } from "./ast-utils/utils" -import type { PatternRange } from "./ast-utils/pattern-source" -import { PatternSource } from "./ast-utils/pattern-source" import type { CapturingGroupReference } from "./extract-capturing-group-references" import { extractCapturingGroupReferences } from "./extract-capturing-group-references" +import { getUsageOfPattern } from "./get-usage-of-pattern" +import type { UsageOfPattern } from "./get-usage-of-pattern" +import { parseFlags } from "./regex-syntax" +import { + extractCaptures, + getQuantifierOffsets, + quantToString, +} from "./regexp-ast" +import type { Quant } from "./regexp-ast" import { createTypeTracker } from "./type-tracker" import { lazy } from "./util" -import { parseFlags } from "./regex-syntax" +import { + CALL, + CONSTRUCT, + ReferenceTracker, +} from "@eslint-community/eslint-utils" export * from "./unicode" type RegExpContextBase = { diff --git a/lib/utils/lexicographically-smallest.ts b/lib/utils/lexicographically-smallest.ts index 8d47bedb2..fab5f8377 100644 --- a/lib/utils/lexicographically-smallest.ts +++ b/lib/utils/lexicographically-smallest.ts @@ -1,5 +1,4 @@ -import type { Word } from "refa" -import type { JS } from "refa" +import type { Word, JS } from "refa" function findMin( array: readonly T[], diff --git a/lib/utils/partial-parser.ts b/lib/utils/partial-parser.ts index 6986c7184..3e55ac8f3 100644 --- a/lib/utils/partial-parser.ts +++ b/lib/utils/partial-parser.ts @@ -1,3 +1,4 @@ +import type { AST } from "@eslint-community/regexpp" import type { Concatenation, Element, @@ -6,7 +7,6 @@ import type { CharRange, } from "refa" import { JS } from "refa" -import type { AST } from "@eslint-community/regexpp" import { assertNever } from "./util" export type NestedAlternative = diff --git a/lib/utils/refa.ts b/lib/utils/refa.ts index 63be03e76..ef3fd0b81 100644 --- a/lib/utils/refa.ts +++ b/lib/utils/refa.ts @@ -1,8 +1,8 @@ import type { CharSet } from "refa" import { JS } from "refa" -import type { RegExpContext } from "." -import { cachedFn } from "./util" import type { ReadonlyFlags } from "regexp-ast-analysis" +import { cachedFn } from "./util" +import type { RegExpContext } from "." /** * Create a `JS.RegexppAst` object as required by refa's `JS.Parser.fromAst` diff --git a/lib/utils/regexp-ast/ast.ts b/lib/utils/regexp-ast/ast.ts index 6e8543d35..758b6e577 100644 --- a/lib/utils/regexp-ast/ast.ts +++ b/lib/utils/regexp-ast/ast.ts @@ -1,7 +1,7 @@ +import { parseRegExpLiteral, RegExpParser } from "@eslint-community/regexpp" import type { RegExpLiteral, Pattern } from "@eslint-community/regexpp/ast" import type { Rule } from "eslint" import type { Expression } from "estree" -import { parseRegExpLiteral, RegExpParser } from "@eslint-community/regexpp" import { getStaticValue } from "../ast-utils" const parser = new RegExpParser() diff --git a/lib/utils/regexp-ast/case-variation.ts b/lib/utils/regexp-ast/case-variation.ts index c58500f70..4e2d5fbff 100644 --- a/lib/utils/regexp-ast/case-variation.ts +++ b/lib/utils/regexp-ast/case-variation.ts @@ -1,11 +1,3 @@ -import type { ReadonlyFlags } from "regexp-ast-analysis" -import { - toCache, - hasSomeDescendant, - toCharSet, - isEmptyBackreference, - toUnicodeSet, -} from "regexp-ast-analysis" import type { Alternative, CharacterClass, @@ -16,6 +8,14 @@ import type { Pattern, StringAlternative, } from "@eslint-community/regexpp/ast" +import type { ReadonlyFlags } from "regexp-ast-analysis" +import { + toCache, + hasSomeDescendant, + toCharSet, + isEmptyBackreference, + toUnicodeSet, +} from "regexp-ast-analysis" import { assertNever, cachedFn } from "../util" /** diff --git a/lib/utils/regexp-ast/common.ts b/lib/utils/regexp-ast/common.ts index 6babc79f0..159f743a5 100644 --- a/lib/utils/regexp-ast/common.ts +++ b/lib/utils/regexp-ast/common.ts @@ -1,3 +1,12 @@ +import { visitRegExpAST } from "@eslint-community/regexpp" +import type { + Alternative, + CapturingGroup, + Element, + Node, + Pattern, + RegExpLiteral, +} from "@eslint-community/regexpp/ast" import type { FirstConsumedChar, MatchingDirection, @@ -9,15 +18,6 @@ import { getFirstConsumedCharAfter, hasSomeDescendant, } from "regexp-ast-analysis" -import type { - Alternative, - CapturingGroup, - Element, - Node, - Pattern, - RegExpLiteral, -} from "@eslint-community/regexpp/ast" -import { visitRegExpAST } from "@eslint-community/regexpp" export type ShortCircuit = (aNode: Node, bNode: Node) => boolean | null diff --git a/lib/utils/regexp-ast/is-covered.ts b/lib/utils/regexp-ast/is-covered.ts index caff87cf9..b18b70f98 100644 --- a/lib/utils/regexp-ast/is-covered.ts +++ b/lib/utils/regexp-ast/is-covered.ts @@ -7,15 +7,15 @@ import type { Pattern, LookaroundAssertion, } from "@eslint-community/regexpp/ast" -import { isEqualNodes } from "./is-equals" +import type { CharSet } from "refa" import type { ReadonlyFlags, ToCharSetElement, ToUnicodeSetElement, } from "regexp-ast-analysis" import { toCharSet, toUnicodeSet } from "regexp-ast-analysis" -import type { CharSet } from "refa" import { assertNever } from "../util" +import { isEqualNodes } from "./is-equals" type Options = { flags: ReadonlyFlags diff --git a/lib/utils/regexp-ast/is-equals.ts b/lib/utils/regexp-ast/is-equals.ts index 4d22b2f64..7a9161666 100644 --- a/lib/utils/regexp-ast/is-equals.ts +++ b/lib/utils/regexp-ast/is-equals.ts @@ -1,10 +1,10 @@ +import type { Node } from "@eslint-community/regexpp/ast" import type { ToCharSetElement, ReadonlyFlags, ToUnicodeSetElement, } from "regexp-ast-analysis" import { toUnicodeSet } from "regexp-ast-analysis" -import type { Node } from "@eslint-community/regexpp/ast" import type { ShortCircuit } from "./common" /** diff --git a/lib/utils/regexp-ast/simplify-quantifier.ts b/lib/utils/regexp-ast/simplify-quantifier.ts index aecd52a17..9237fbb0d 100644 --- a/lib/utils/regexp-ast/simplify-quantifier.ts +++ b/lib/utils/regexp-ast/simplify-quantifier.ts @@ -1,3 +1,10 @@ +import type { + Alternative, + Element, + Node, + QuantifiableElement, + Quantifier, +} from "@eslint-community/regexpp/ast" import type { JS } from "refa" import { DFA, NFA } from "refa" import type { MatchingDirection, ReadonlyFlags } from "regexp-ast-analysis" @@ -9,13 +16,6 @@ import { isPotentiallyZeroLength, getConsumedChars, } from "regexp-ast-analysis" -import type { - Alternative, - Element, - Node, - QuantifiableElement, - Quantifier, -} from "@eslint-community/regexpp/ast" import { assertNever, cachedFn, reversed } from "../util" /** Returns whether the given node contains any assertions. */ diff --git a/lib/utils/type-tracker/jsdoc.ts b/lib/utils/type-tracker/jsdoc.ts index 855027c39..e5621cd0b 100644 --- a/lib/utils/type-tracker/jsdoc.ts +++ b/lib/utils/type-tracker/jsdoc.ts @@ -1,10 +1,10 @@ import type { Rule, SourceCode, AST } from "eslint" import type * as ES from "estree" +import * as jsdocTypeParser from "jsdoc-type-pratt-parser" +import type { RootResult } from "jsdoc-type-pratt-parser" import { isCommentToken } from "@eslint-community/eslint-utils" import * as commentParser from "comment-parser" import type { Spec } from "comment-parser" -import * as jsdocTypeParser from "jsdoc-type-pratt-parser" -import type { RootResult } from "jsdoc-type-pratt-parser" type ParsedComment = ReturnType[number] diff --git a/lib/utils/type-tracker/tracker.ts b/lib/utils/type-tracker/tracker.ts index 05c889c4c..e17fb347a 100644 --- a/lib/utils/type-tracker/tracker.ts +++ b/lib/utils/type-tracker/tracker.ts @@ -1,7 +1,29 @@ import type { Rule } from "eslint" -import type * as TS from "typescript" import type * as ES from "estree" -import { findVariable, getPropertyName, isParenthesized } from "./utils" +import type { + RootResult as JSDocTypeRootResult, + KeyValueResult, +} from "jsdoc-type-pratt-parser" +import type * as TS from "typescript" +import { getParent } from "../ast-utils" +import { + getTypeScript, + getTypeScriptTools, + isAny, + isArrayLikeObject, + isBigIntLike, + isBooleanLike, + isClassOrInterface, + isNumberLike, + isObject, + isReferenceObject, + isStringLine, + isTypeParameter, + isUnionOrIntersection, + isUnknown, +} from "../ts-util" +import { assertNever } from "../util" +import { getJSDoc, parseTypeText } from "./jsdoc" import type { TypeInfo } from "./type-data" import { TypeFunction, @@ -26,30 +48,8 @@ import { UNKNOWN_SET, hasType, } from "./type-data" -import { getJSDoc, parseTypeText } from "./jsdoc" -import type { - RootResult as JSDocTypeRootResult, - KeyValueResult, -} from "jsdoc-type-pratt-parser" import { TypeIterable, UNKNOWN_ITERABLE } from "./type-data/iterable" -import { getParent } from "../ast-utils" -import { - getTypeScript, - getTypeScriptTools, - isAny, - isArrayLikeObject, - isBigIntLike, - isBooleanLike, - isClassOrInterface, - isNumberLike, - isObject, - isReferenceObject, - isStringLine, - isTypeParameter, - isUnionOrIntersection, - isUnknown, -} from "../ts-util" -import { assertNever } from "../util" +import { findVariable, getPropertyName, isParenthesized } from "./utils" const ts = getTypeScript()! diff --git a/lib/utils/type-tracker/type-data/array.ts b/lib/utils/type-tracker/type-data/array.ts index a9da3661c..d810fdc2b 100644 --- a/lib/utils/type-tracker/type-data/array.ts +++ b/lib/utils/type-tracker/type-data/array.ts @@ -1,10 +1,11 @@ -import type { - ITypeClass, - NamedType, - OtherTypeName, - TypeClass, - TypeInfo, -} from "." +import { lazy } from "../../util" +import { + createObject, + getTypeName, + isEquals, + isTypeClass, + TypeCollection, +} from "./common" import { RETURN_NUMBER, RETURN_STRING, @@ -14,19 +15,18 @@ import { RETURN_BOOLEAN, TypeGlobalFunction, } from "./function" -import { - createObject, - getTypeName, - isEquals, - isTypeClass, - TypeCollection, -} from "./common" +import { TypeIterable } from "./iterable" import { NUMBER } from "./number" import { getObjectPrototypes } from "./object" import { STRING } from "./string" import { TypeUnionOrIntersection } from "./union-or-intersection" -import { TypeIterable } from "./iterable" -import { lazy } from "../../util" +import type { + ITypeClass, + NamedType, + OtherTypeName, + TypeClass, + TypeInfo, +} from "." export class TypeArray implements ITypeClass { public type = "Array" as const diff --git a/lib/utils/type-tracker/type-data/bigint.ts b/lib/utils/type-tracker/type-data/bigint.ts index 064d3d025..1cd30da96 100644 --- a/lib/utils/type-tracker/type-data/bigint.ts +++ b/lib/utils/type-tracker/type-data/bigint.ts @@ -1,3 +1,8 @@ +import { lazy } from "../../util" +import { createObject } from "./common" +import { RETURN_BIGINT, RETURN_STRING, TypeGlobalFunction } from "./function" +import { getObjectPrototypes } from "./object" +import { STRING } from "./string" import type { ITypeClass, NamedType, @@ -5,11 +10,6 @@ import type { TypeClass, TypeInfo, } from "." -import { STRING } from "./string" -import { createObject } from "./common" -import { RETURN_BIGINT, RETURN_STRING, TypeGlobalFunction } from "./function" -import { getObjectPrototypes } from "./object" -import { lazy } from "../../util" export class TypeBigInt implements ITypeClass { public type = "BigInt" as const diff --git a/lib/utils/type-tracker/type-data/boolean.ts b/lib/utils/type-tracker/type-data/boolean.ts index 7b6633e29..dbbbf99cf 100644 --- a/lib/utils/type-tracker/type-data/boolean.ts +++ b/lib/utils/type-tracker/type-data/boolean.ts @@ -1,3 +1,7 @@ +import { lazy } from "../../util" +import { createObject } from "./common" +import { RETURN_BOOLEAN, TypeGlobalFunction } from "./function" +import { getObjectPrototypes } from "./object" import type { ITypeClass, NamedType, @@ -5,10 +9,6 @@ import type { TypeClass, TypeInfo, } from "." -import { createObject } from "./common" -import { RETURN_BOOLEAN, TypeGlobalFunction } from "./function" -import { getObjectPrototypes } from "./object" -import { lazy } from "../../util" export class TypeBoolean implements ITypeClass { public type = "Boolean" as const diff --git a/lib/utils/type-tracker/type-data/function.ts b/lib/utils/type-tracker/type-data/function.ts index f5fc8bdec..beae9f404 100644 --- a/lib/utils/type-tracker/type-data/function.ts +++ b/lib/utils/type-tracker/type-data/function.ts @@ -1,10 +1,4 @@ -import type { - ITypeClass, - NamedType, - OtherTypeName, - TypeClass, - TypeInfo, -} from "." +import { lazy } from "../../util" import type { TypeArray } from "./array" import { STRING_ARRAY, UNKNOWN_ARRAY } from "./array" import type { TypeBigInt } from "./bigint" @@ -20,7 +14,13 @@ import type { TypeRegExp } from "./regexp" import { REGEXP } from "./regexp" import type { TypeString } from "./string" import { STRING } from "./string" -import { lazy } from "../../util" +import type { + ITypeClass, + NamedType, + OtherTypeName, + TypeClass, + TypeInfo, +} from "." type FunctionArg = ( thisType: (() => TypeInfo | null) | null, diff --git a/lib/utils/type-tracker/type-data/global.ts b/lib/utils/type-tracker/type-data/global.ts index ff0c385c4..235e8810c 100644 --- a/lib/utils/type-tracker/type-data/global.ts +++ b/lib/utils/type-tracker/type-data/global.ts @@ -1,10 +1,4 @@ -import type { - ITypeClass, - NamedType, - OtherTypeName, - TypeClass, - TypeInfo, -} from "." +import { lazy } from "../../util" import { buildArrayConstructor } from "./array" import { buildBigIntConstructor } from "./bigint" import { buildBooleanConstructor } from "./boolean" @@ -21,7 +15,13 @@ import { buildObjectConstructor } from "./object" import { buildRegExpConstructor } from "./regexp" import { buildSetConstructor } from "./set" import { buildStringConstructor } from "./string" -import { lazy } from "../../util" +import type { + ITypeClass, + NamedType, + OtherTypeName, + TypeClass, + TypeInfo, +} from "." export class TypeGlobal implements ITypeClass { public type = "Global" as const diff --git a/lib/utils/type-tracker/type-data/iterable.ts b/lib/utils/type-tracker/type-data/iterable.ts index a8e3a2dfd..ee05b7132 100644 --- a/lib/utils/type-tracker/type-data/iterable.ts +++ b/lib/utils/type-tracker/type-data/iterable.ts @@ -1,3 +1,6 @@ +import { lazy } from "../../util" +import { createObject, getTypeName, isEquals } from "./common" +import { getObjectPrototypes } from "./object" import type { ITypeClass, NamedType, @@ -5,9 +8,6 @@ import type { TypeClass, TypeInfo, } from "." -import { createObject, getTypeName, isEquals } from "./common" -import { getObjectPrototypes } from "./object" -import { lazy } from "../../util" type IterableKeys = keyof Iterable diff --git a/lib/utils/type-tracker/type-data/map.ts b/lib/utils/type-tracker/type-data/map.ts index 948f80a0f..0ea667677 100644 --- a/lib/utils/type-tracker/type-data/map.ts +++ b/lib/utils/type-tracker/type-data/map.ts @@ -1,11 +1,4 @@ -import type { - ITypeClass, - NamedType, - OtherTypeName, - TypeClass, - TypeInfo, -} from "." -import { STRING } from "./string" +import { lazy } from "../../util" import { TypeArray } from "./array" import { createObject, getTypeName, isEquals, isTypeClass } from "./common" import { @@ -17,7 +10,14 @@ import { import { TypeIterable } from "./iterable" import { NUMBER } from "./number" import { getObjectPrototypes } from "./object" -import { lazy } from "../../util" +import { STRING } from "./string" +import type { + ITypeClass, + NamedType, + OtherTypeName, + TypeClass, + TypeInfo, +} from "." type MapKeys = keyof Map diff --git a/lib/utils/type-tracker/type-data/number.ts b/lib/utils/type-tracker/type-data/number.ts index 3c635e496..e043594b7 100644 --- a/lib/utils/type-tracker/type-data/number.ts +++ b/lib/utils/type-tracker/type-data/number.ts @@ -1,10 +1,4 @@ -import type { - ITypeClass, - NamedType, - OtherTypeName, - TypeClass, - TypeInfo, -} from "." +import { lazy } from "../../util" import { createObject } from "./common" import { RETURN_NUMBER, @@ -13,7 +7,13 @@ import { TypeGlobalFunction, } from "./function" import { getObjectPrototypes } from "./object" -import { lazy } from "../../util" +import type { + ITypeClass, + NamedType, + OtherTypeName, + TypeClass, + TypeInfo, +} from "." export class TypeNumber implements ITypeClass { public type = "Number" as const diff --git a/lib/utils/type-tracker/type-data/object.ts b/lib/utils/type-tracker/type-data/object.ts index 65ec4dae9..cdc469368 100644 --- a/lib/utils/type-tracker/type-data/object.ts +++ b/lib/utils/type-tracker/type-data/object.ts @@ -1,10 +1,4 @@ -import type { - ITypeClass, - NamedType, - OtherTypeName, - TypeClass, - TypeInfo, -} from "." +import { lazy } from "../../util" import { createObject, isEquals, isTypeClass } from "./common" import { RETURN_STRING, @@ -16,7 +10,13 @@ import { UNKNOWN_FUNCTION, TypeGlobalFunction, } from "./function" -import { lazy } from "../../util" +import type { + ITypeClass, + NamedType, + OtherTypeName, + TypeClass, + TypeInfo, +} from "." type ObjectKeys = | "constructor" diff --git a/lib/utils/type-tracker/type-data/regexp.ts b/lib/utils/type-tracker/type-data/regexp.ts index 88fefb0d6..61e66a982 100644 --- a/lib/utils/type-tracker/type-data/regexp.ts +++ b/lib/utils/type-tracker/type-data/regexp.ts @@ -1,10 +1,4 @@ -import type { - ITypeClass, - NamedType, - OtherTypeName, - TypeClass, - TypeInfo, -} from "." +import { lazy } from "../../util" import { BOOLEAN } from "./boolean" import { createObject } from "./common" import { @@ -16,7 +10,13 @@ import { import { NUMBER } from "./number" import { getObjectPrototypes } from "./object" import { STRING } from "./string" -import { lazy } from "../../util" +import type { + ITypeClass, + NamedType, + OtherTypeName, + TypeClass, + TypeInfo, +} from "." export class TypeRegExp implements ITypeClass { public type = "RegExp" as const diff --git a/lib/utils/type-tracker/type-data/set.ts b/lib/utils/type-tracker/type-data/set.ts index 011b41b1b..906294d87 100644 --- a/lib/utils/type-tracker/type-data/set.ts +++ b/lib/utils/type-tracker/type-data/set.ts @@ -1,12 +1,4 @@ -import type { - ITypeClass, - NamedType, - OtherTypeName, - TypeClass, - TypeInfo, -} from "." -import { STRING } from "./string" -import { isTypeClass } from "." +import { lazy } from "../../util" import { TypeArray } from "./array" import { createObject, getTypeName, isEquals } from "./common" import { @@ -18,7 +10,15 @@ import { import { TypeIterable } from "./iterable" import { NUMBER } from "./number" import { getObjectPrototypes } from "./object" -import { lazy } from "../../util" +import { STRING } from "./string" +import { isTypeClass } from "." +import type { + ITypeClass, + NamedType, + OtherTypeName, + TypeClass, + TypeInfo, +} from "." type SetKeys = keyof Set diff --git a/lib/utils/type-tracker/type-data/string.ts b/lib/utils/type-tracker/type-data/string.ts index df837b5f6..24a641f3b 100644 --- a/lib/utils/type-tracker/type-data/string.ts +++ b/lib/utils/type-tracker/type-data/string.ts @@ -1,10 +1,4 @@ -import type { - ITypeClass, - NamedType, - OtherTypeName, - TypeClass, - TypeInfo, -} from "." +import { lazy } from "../../util" import { createObject } from "./common" import { RETURN_STRING, @@ -15,7 +9,13 @@ import { } from "./function" import { NUMBER } from "./number" import { getObjectPrototypes } from "./object" -import { lazy } from "../../util" +import type { + ITypeClass, + NamedType, + OtherTypeName, + TypeClass, + TypeInfo, +} from "." export class TypeString implements ITypeClass { public type = "String" as const diff --git a/lib/utils/type-tracker/type-data/union-or-intersection.ts b/lib/utils/type-tracker/type-data/union-or-intersection.ts index df7731739..d2f276c09 100644 --- a/lib/utils/type-tracker/type-data/union-or-intersection.ts +++ b/lib/utils/type-tracker/type-data/union-or-intersection.ts @@ -1,3 +1,4 @@ +import { isEquals, TypeCollection } from "./common" import type { ITypeClass, NamedType, @@ -6,7 +7,6 @@ import type { TypeInfo, } from "." import { isTypeClass } from "." -import { isEquals, TypeCollection } from "./common" export class TypeUnionOrIntersection implements ITypeClass { public type = "TypeUnionOrIntersection" as const diff --git a/lib/utils/type-tracker/utils.ts b/lib/utils/type-tracker/utils.ts index 0dede0ed7..05b4fd7b6 100644 --- a/lib/utils/type-tracker/utils.ts +++ b/lib/utils/type-tracker/utils.ts @@ -1,8 +1,8 @@ -import * as eslintUtils from "@eslint-community/eslint-utils" -import type { Variable } from "eslint-scope" import type { Rule } from "eslint" +import type { Variable } from "eslint-scope" import type * as ES from "estree" import * as astUtils from "../ast-utils" +import * as eslintUtils from "@eslint-community/eslint-utils" /** * Find the variable of a given name. diff --git a/package-lock.json b/package-lock.json index f1c82f56e..1fcff88bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,8 +36,10 @@ "eslint": "^8.44.0", "eslint-config-prettier": "^9.0.0", "eslint-doc-generator": "^1.7.0", + "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-eslint-plugin": "^5.2.1", + "eslint-plugin-import": "^2.29.1", "eslint-plugin-json-schema-validator": "^4.6.1", "eslint-plugin-jsonc": "^2.0.0", "eslint-plugin-n": "^16.0.0", @@ -3003,6 +3005,12 @@ "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -4066,6 +4074,42 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -4075,15 +4119,35 @@ "node": ">=8" } }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -4093,6 +4157,46 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -4133,10 +4237,13 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -4331,13 +4438,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4670,6 +4783,57 @@ "integrity": "sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==", "dev": true }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dataloader": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz", @@ -4788,6 +4952,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -4798,11 +4979,12 @@ } }, "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -4979,6 +5161,19 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/enquirer": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", @@ -5039,35 +5234,57 @@ } }, "node_modules/es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.2.tgz", + "integrity": "sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -5076,13 +5293,60 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-shim-unscopables": { + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "has": "^1.0.3" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -5380,6 +5644,77 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/eslint-plugin-es-x": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.1.0.tgz", @@ -5443,6 +5778,67 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-json-schema-validator": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/eslint-plugin-json-schema-validator/-/eslint-plugin-json-schema-validator-4.6.1.tgz", @@ -6127,21 +6523,24 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -6187,14 +6586,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6222,13 +6626,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -6237,6 +6642,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", + "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -6319,6 +6736,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globalyzer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", @@ -6395,18 +6827,6 @@ "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -6425,12 +6845,24 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6449,12 +6881,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -6488,6 +6920,18 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -6620,13 +7064,13 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -6658,6 +7102,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -6729,12 +7189,27 @@ } }, "node_modules/is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, "dependencies": { - "has": "^1.0.3" + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6830,9 +7305,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -6908,12 +7383,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6974,16 +7452,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -7043,6 +7517,12 @@ "node": ">=8" } }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -8585,9 +9065,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8619,13 +9099,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -8636,6 +9116,55 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -8988,6 +9517,15 @@ "node": ">=8" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.4.32", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", @@ -9398,14 +9936,15 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -9451,12 +9990,12 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -9475,6 +10014,15 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -9560,6 +10108,24 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -9581,15 +10147,18 @@ ] }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9650,6 +10219,38 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -9691,14 +10292,18 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10070,29 +10675,47 @@ "node": ">=8" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10510,6 +11133,15 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/term-size": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", @@ -10675,6 +11307,39 @@ "node": ">=0.3.1" } }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/tslib": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", @@ -10816,6 +11481,79 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -11183,17 +11921,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -13612,6 +14349,12 @@ "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", @@ -14301,24 +15044,90 @@ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + } + }, + "array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + } + }, "array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true }, + "array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + } + }, "array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" } }, + "arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -14350,10 +15159,13 @@ "dev": true }, "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "requires": { + "possible-typed-array-names": "^1.0.0" + } }, "babel-plugin-istanbul": { "version": "6.1.1", @@ -14510,13 +15322,16 @@ } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "callsites": { @@ -14767,6 +15582,39 @@ "integrity": "sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==", "dev": true }, + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, "dataloader": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz", @@ -14849,6 +15697,17 @@ "clone": "^1.0.2" } }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, "define-lazy-prop": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", @@ -14856,11 +15715,12 @@ "dev": true }, "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "requires": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } @@ -14982,6 +15842,16 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, "enquirer": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", @@ -15024,44 +15894,101 @@ } }, "es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", + "version": "1.23.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.2.tgz", + "integrity": "sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.5", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4" } }, - "es-shim-unscopables": { + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, + "es-object-atoms": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "es-to-primitive": { @@ -15293,6 +16220,63 @@ } } }, + "eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + } + }, + "eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, "eslint-plugin-es-x": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.1.0.tgz", @@ -15331,6 +16315,57 @@ "estraverse": "^5.3.0" } }, + "eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, + "requires": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, "eslint-plugin-json-schema-validator": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/eslint-plugin-json-schema-validator/-/eslint-plugin-json-schema-validator-4.6.1.tgz", @@ -15804,21 +16839,21 @@ "optional": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true }, "function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" } }, "functions-have-names": { @@ -15846,14 +16881,16 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-package-type": { @@ -15869,13 +16906,23 @@ "dev": true }, "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + } + }, + "get-tsconfig": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", + "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" } }, "glob": { @@ -15938,6 +16985,15 @@ "type-fest": "^0.20.2" } }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, "globalyzer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", @@ -16002,15 +17058,6 @@ "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -16023,14 +17070,20 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "requires": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" } }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -16038,12 +17091,12 @@ "dev": true }, "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" } }, "hasha": { @@ -16064,6 +17117,15 @@ } } }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -16162,13 +17224,13 @@ "dev": true }, "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" } }, @@ -16191,6 +17253,16 @@ "has-tostringtag": "^1.0.0" } }, + "is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -16241,12 +17313,21 @@ } }, "is-core-module": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", - "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" + } + }, + "is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "requires": { + "is-typed-array": "^1.1.13" } }, "is-date-object": { @@ -16303,9 +17384,9 @@ } }, "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true }, "is-number": { @@ -16351,12 +17432,12 @@ } }, "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" } }, "is-stream": { @@ -16393,16 +17474,12 @@ } }, "is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.14" } }, "is-typedarray": { @@ -16441,6 +17518,12 @@ "is-docker": "^2.0.0" } }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -17638,9 +18721,9 @@ } }, "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true }, "object-is": { @@ -17660,17 +18743,51 @@ "dev": true }, "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, + "object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + } + }, + "object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + } + }, + "object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -17924,6 +19041,12 @@ } } }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true + }, "postcss": { "version": "8.4.32", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", @@ -18215,14 +19338,15 @@ } }, "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" } }, "release-zalgo": { @@ -18253,12 +19377,12 @@ "dev": true }, "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "requires": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -18268,6 +19392,12 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -18318,6 +19448,18 @@ "queue-microtask": "^1.2.2" } }, + "safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -18325,13 +19467,13 @@ "dev": true }, "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" } }, @@ -18382,6 +19524,32 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -18414,14 +19582,15 @@ } }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "signal-exit": { @@ -18726,26 +19895,38 @@ "strip-ansi": "^6.0.1" } }, + "string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + } + }, "string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "strip-ansi": { @@ -19019,6 +20200,12 @@ } } }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, "term-size": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", @@ -19132,6 +20319,35 @@ } } }, + "tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + } + } + }, "tslib": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", @@ -19238,6 +20454,58 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" }, + "typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", + "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + } + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -19497,17 +20765,16 @@ } }, "which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.2" } }, "workerpool": { diff --git a/package.json b/package.json index 7b6350843..a8a148dab 100644 --- a/package.json +++ b/package.json @@ -78,8 +78,10 @@ "eslint": "^8.44.0", "eslint-config-prettier": "^9.0.0", "eslint-doc-generator": "^1.7.0", + "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-eslint-plugin": "^5.2.1", + "eslint-plugin-import": "^2.29.1", "eslint-plugin-json-schema-validator": "^4.6.1", "eslint-plugin-jsonc": "^2.0.0", "eslint-plugin-n": "^16.0.0", diff --git a/tests/lib/all-rules.ts b/tests/lib/all-rules.ts index 799ab4bb4..06274e4f8 100644 --- a/tests/lib/all-rules.ts +++ b/tests/lib/all-rules.ts @@ -1,9 +1,9 @@ import assert from "assert" -import path from "path" import fs from "fs" +import path from "path" -import type { RuleModule } from "../../lib/types" import { rules as allRules } from "../../lib/all-rules" +import type { RuleModule } from "../../lib/types" /** * @returns {Array} Get the list of rules placed in the directory. diff --git a/tests/lib/eslint-plugin.ts b/tests/lib/eslint-plugin.ts index 04a2b7c8e..e107df2cc 100644 --- a/tests/lib/eslint-plugin.ts +++ b/tests/lib/eslint-plugin.ts @@ -1,5 +1,5 @@ -import path from "path" import assert from "assert" +import path from "path" import * as eslintModule from "eslint" import * as plugin from "../../lib/index" diff --git a/tests/lib/rules-with-unknown-flag.ts b/tests/lib/rules-with-unknown-flag.ts index 7a8c6480c..bbcf239a1 100644 --- a/tests/lib/rules-with-unknown-flag.ts +++ b/tests/lib/rules-with-unknown-flag.ts @@ -1,10 +1,10 @@ -import { Linter } from "eslint" +import assert from "assert" +import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" import * as parser from "@typescript-eslint/parser" +import { Linter } from "eslint" import { rules } from "../../lib/index" -import assert from "assert" import type { RegExpContext } from "../../lib/utils" import { createRule, defineRegexpVisitor } from "../../lib/utils" -import type { RegExpVisitor } from "@eslint-community/regexpp/visitor" const TEST_RULE = createRule("test", { meta: { diff --git a/tests/lib/rules/no-legacy-features.ts b/tests/lib/rules/no-legacy-features.ts index 0929d2a4d..d56971f4e 100644 --- a/tests/lib/rules/no-legacy-features.ts +++ b/tests/lib/rules/no-legacy-features.ts @@ -1,6 +1,6 @@ +import * as tsParser from "@typescript-eslint/parser" import { SnapshotRuleTester } from "eslint-snapshot-rule-tester" import rule from "../../../lib/rules/no-legacy-features" -import * as tsParser from "@typescript-eslint/parser" const tester = new SnapshotRuleTester({ languageOptions: { diff --git a/tests/lib/rules/no-non-standard-flag.ts b/tests/lib/rules/no-non-standard-flag.ts index 8849c40f5..14872b341 100644 --- a/tests/lib/rules/no-non-standard-flag.ts +++ b/tests/lib/rules/no-non-standard-flag.ts @@ -1,6 +1,6 @@ +import * as tsParser from "@typescript-eslint/parser" import { SnapshotRuleTester } from "eslint-snapshot-rule-tester" import rule from "../../../lib/rules/no-non-standard-flag" -import * as tsParser from "@typescript-eslint/parser" const tester = new SnapshotRuleTester({ languageOptions: { diff --git a/tests/lib/rules/no-useless-flag.ts b/tests/lib/rules/no-useless-flag.ts index 8ee3a91ce..a1aa7da3c 100644 --- a/tests/lib/rules/no-useless-flag.ts +++ b/tests/lib/rules/no-useless-flag.ts @@ -1,9 +1,9 @@ +import assert from "assert" import type { Rule } from "eslint" import { Linter } from "eslint" import { SnapshotRuleTester } from "eslint-snapshot-rule-tester" -import assert from "assert" -import rule from "../../../lib/rules/no-useless-flag" import { rules } from "../../../lib/all-rules" +import rule from "../../../lib/rules/no-useless-flag" const tester = new SnapshotRuleTester({ languageOptions: { diff --git a/tests/lib/rules/no-useless-non-capturing-group.ts b/tests/lib/rules/no-useless-non-capturing-group.ts index 6203cc4ff..bdb938c0e 100644 --- a/tests/lib/rules/no-useless-non-capturing-group.ts +++ b/tests/lib/rules/no-useless-non-capturing-group.ts @@ -1,5 +1,5 @@ -import rule from "../../../lib/rules/no-useless-non-capturing-group" import { SnapshotRuleTester } from "eslint-snapshot-rule-tester" +import rule from "../../../lib/rules/no-useless-non-capturing-group" const tester = new SnapshotRuleTester({ languageOptions: { diff --git a/tests/lib/rules/prefer-result-array-groups.ts b/tests/lib/rules/prefer-result-array-groups.ts index f942b2cdc..6721e97ed 100644 --- a/tests/lib/rules/prefer-result-array-groups.ts +++ b/tests/lib/rules/prefer-result-array-groups.ts @@ -1,6 +1,6 @@ +import * as tsParser from "@typescript-eslint/parser" import { SnapshotRuleTester } from "eslint-snapshot-rule-tester" import rule from "../../../lib/rules/prefer-result-array-groups" -import * as tsParser from "@typescript-eslint/parser" const filename = "tests/lib/rules/prefer-result-array-groups.ts" diff --git a/tests/lib/utils/ast-utils/extract-expression-references.ts b/tests/lib/utils/ast-utils/extract-expression-references.ts index 0876f2bf5..1c1bf5b6c 100644 --- a/tests/lib/utils/ast-utils/extract-expression-references.ts +++ b/tests/lib/utils/ast-utils/extract-expression-references.ts @@ -1,15 +1,15 @@ -import type { Rule } from "eslint" -import { Linter } from "eslint" import assert from "assert" +import { Linter } from "eslint" +import type { Rule } from "eslint" import type * as ESTree from "estree" +import type { ExpressionReference } from "../../../../lib/utils/ast-utils" +import { extractExpressionReferences } from "../../../../lib/utils/ast-utils" +import { isRegexpLiteral } from "../../../../lib/utils/ast-utils/utils" import { CALL, CONSTRUCT, ReferenceTracker, } from "@eslint-community/eslint-utils" -import type { ExpressionReference } from "../../../../lib/utils/ast-utils" -import { extractExpressionReferences } from "../../../../lib/utils/ast-utils" -import { isRegexpLiteral } from "../../../../lib/utils/ast-utils/utils" type ExpressionReferenceResult = { type: string; [key: string]: any } diff --git a/tests/lib/utils/ast-utils/extract-property-references.ts b/tests/lib/utils/ast-utils/extract-property-references.ts index 36863d832..465ac8c9e 100644 --- a/tests/lib/utils/ast-utils/extract-property-references.ts +++ b/tests/lib/utils/ast-utils/extract-property-references.ts @@ -1,15 +1,15 @@ -import type { Rule } from "eslint" -import { Linter } from "eslint" import assert from "assert" +import { Linter } from "eslint" +import type { Rule } from "eslint" import type * as ESTree from "estree" +import type { PropertyReference } from "../../../../lib/utils/ast-utils" +import { extractPropertyReferences } from "../../../../lib/utils/ast-utils" +import { isRegexpLiteral } from "../../../../lib/utils/ast-utils/utils" import { CALL, CONSTRUCT, ReferenceTracker, } from "@eslint-community/eslint-utils" -import type { PropertyReference } from "../../../../lib/utils/ast-utils" -import { extractPropertyReferences } from "../../../../lib/utils/ast-utils" -import { isRegexpLiteral } from "../../../../lib/utils/ast-utils/utils" type PropertyReferenceResult = { [key: string]: { type: string; refs?: PropertyReferenceResult } diff --git a/tests/lib/utils/get-usage-of-pattern.ts b/tests/lib/utils/get-usage-of-pattern.ts index 960c5aaa9..91098a8bc 100644 --- a/tests/lib/utils/get-usage-of-pattern.ts +++ b/tests/lib/utils/get-usage-of-pattern.ts @@ -1,6 +1,6 @@ +import assert from "assert" import type { Rule } from "eslint" import { Linter } from "eslint" -import assert from "assert" import type * as ESTree from "estree" import { isRegexpLiteral } from "../../../lib/utils/ast-utils/utils" import { diff --git a/tests/lib/utils/type-tracker/test-utils.ts b/tests/lib/utils/type-tracker/test-utils.ts index c4e349225..f4b7768b0 100644 --- a/tests/lib/utils/type-tracker/test-utils.ts +++ b/tests/lib/utils/type-tracker/test-utils.ts @@ -1,13 +1,14 @@ +import assert from "assert" +import path from "path" +import type * as tsParser from "@typescript-eslint/parser" import { Linter } from "eslint" -import type { AST } from "eslint" +import type { AST, Rule } from "eslint" +// eslint-disable-next-line import/no-duplicates -- we need both import type * as ES from "estree" +// eslint-disable-next-line import/no-duplicates -- we need both import type { Expression } from "estree" -import path from "path" import { createTypeTracker } from "../../../../lib/utils/type-tracker" -import assert from "assert" import { isCommentToken } from "@eslint-community/eslint-utils" -import type * as tsParser from "@typescript-eslint/parser" -import type { Rule } from "eslint" export type TestCase = { code: string diff --git a/tests/lib/utils/type-tracker/with-ts.ts b/tests/lib/utils/type-tracker/with-ts.ts index a86dc58bb..9e59031fa 100644 --- a/tests/lib/utils/type-tracker/with-ts.ts +++ b/tests/lib/utils/type-tracker/with-ts.ts @@ -1,6 +1,6 @@ +import * as tsParser from "@typescript-eslint/parser" import type { TestCase } from "./test-utils" import { testTypeTrackerWithLinter } from "./test-utils" -import * as tsParser from "@typescript-eslint/parser" const TESTCASES: TestCase[] = [ { diff --git a/tools/lib/changesets-util.ts b/tools/lib/changesets-util.ts index 01b1a8945..ebce9eaf2 100644 --- a/tools/lib/changesets-util.ts +++ b/tools/lib/changesets-util.ts @@ -1,5 +1,5 @@ -import getReleasePlan from "@changesets/get-release-plan" import path from "path" +import getReleasePlan from "@changesets/get-release-plan" /** Get new version string from changesets */ export async function getNewVersion(): Promise { diff --git a/tools/lib/load-rules.ts b/tools/lib/load-rules.ts index 5eb3fc9c6..8c744ac15 100644 --- a/tools/lib/load-rules.ts +++ b/tools/lib/load-rules.ts @@ -1,5 +1,5 @@ -import path from "path" import fs from "fs" +import path from "path" /** * Get the all rules diff --git a/tools/new-rule.ts b/tools/new-rule.ts index 1e622c7f9..fa5214808 100644 --- a/tools/new-rule.ts +++ b/tools/new-rule.ts @@ -1,6 +1,6 @@ -import path from "path" -import fs from "fs" import cp from "child_process" +import fs from "fs" +import path from "path" const logger = console // main diff --git a/tools/update-docs.ts b/tools/update-docs.ts index e9704b7d8..3e9f10304 100644 --- a/tools/update-docs.ts +++ b/tools/update-docs.ts @@ -1,5 +1,5 @@ -import path from "path" import fs from "fs" +import path from "path" import { rules } from "../lib/all-rules" import type { RuleModule } from "../lib/types" import { getNewVersion } from "./lib/changesets-util" diff --git a/tools/update-readme.ts b/tools/update-readme.ts index c5405ccb9..396c6e27c 100644 --- a/tools/update-readme.ts +++ b/tools/update-readme.ts @@ -1,5 +1,5 @@ -import path from "path" import fs from "fs" +import path from "path" import { rules } from "./lib/load-rules" import { getRemovedTable } from "./meta/removed-rules" diff --git a/tools/update-rules.ts b/tools/update-rules.ts index 179ac760b..f2c7521b7 100644 --- a/tools/update-rules.ts +++ b/tools/update-rules.ts @@ -1,5 +1,5 @@ -import path from "path" import fs from "fs" +import path from "path" // import eslint from "eslint" import { rules } from "./lib/load-rules" diff --git a/tools/update-rulesets.ts b/tools/update-rulesets.ts index 82889e0db..b14cf10c1 100644 --- a/tools/update-rulesets.ts +++ b/tools/update-rulesets.ts @@ -1,5 +1,5 @@ -import path from "path" import fs from "fs" +import path from "path" // import eslint from "eslint" import { rules } from "./lib/load-rules" diff --git a/typings/@eslint-community/eslint-utils/index.d.ts b/typings/@eslint-community/eslint-utils/index.d.ts index 21489a940..e77a4c99a 100644 --- a/typings/@eslint-community/eslint-utils/index.d.ts +++ b/typings/@eslint-community/eslint-utils/index.d.ts @@ -1,6 +1,6 @@ -import type * as ESTree from "estree" import type { SourceCode } from "eslint" import type eslint from "eslint" +import type * as ESTree from "estree" export function findVariable( initialScope: eslint.Scope.Scope,