@antfu/eslint-config 4.1.1 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -12,8 +12,8 @@ import c from "picocolors";
12
12
  var package_default = {
13
13
  name: "@antfu/eslint-config",
14
14
  type: "module",
15
- version: "4.1.1",
16
- packageManager: "pnpm@10.0.0",
15
+ version: "4.2.0",
16
+ packageManager: "pnpm@10.2.1",
17
17
  description: "Anthony's ESLint config",
18
18
  author: "Anthony Fu <anthonyfu117@hotmail.com> (https://github.com/antfu/)",
19
19
  license: "MIT",
@@ -105,16 +105,16 @@ var package_default = {
105
105
  },
106
106
  dependencies: {
107
107
  "@antfu/install-pkg": "^1.0.0",
108
- "@clack/prompts": "^0.9.1",
108
+ "@clack/prompts": "^0.10.0",
109
109
  "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
110
110
  "@eslint/markdown": "^6.2.2",
111
- "@stylistic/eslint-plugin": "^3.0.1",
112
- "@typescript-eslint/eslint-plugin": "^8.22.0",
113
- "@typescript-eslint/parser": "^8.22.0",
114
- "@vitest/eslint-plugin": "^1.1.25",
111
+ "@stylistic/eslint-plugin": "^4.0.0-beta.1",
112
+ "@typescript-eslint/eslint-plugin": "^8.23.0",
113
+ "@typescript-eslint/parser": "^8.23.0",
114
+ "@vitest/eslint-plugin": "^1.1.27",
115
115
  "eslint-config-flat-gitignore": "^2.0.0",
116
116
  "eslint-flat-config-utils": "^2.0.1",
117
- "eslint-merge-processors": "^1.0.0",
117
+ "eslint-merge-processors": "^2.0.0",
118
118
  "eslint-plugin-antfu": "^3.0.0",
119
119
  "eslint-plugin-command": "^3.0.0",
120
120
  "eslint-plugin-import-x": "^4.6.1",
@@ -122,14 +122,14 @@ var package_default = {
122
122
  "eslint-plugin-jsonc": "^2.19.1",
123
123
  "eslint-plugin-n": "^17.15.1",
124
124
  "eslint-plugin-no-only-tests": "^3.3.0",
125
- "eslint-plugin-perfectionist": "^4.7.0",
125
+ "eslint-plugin-perfectionist": "^4.8.0",
126
126
  "eslint-plugin-regexp": "^2.7.0",
127
127
  "eslint-plugin-toml": "^0.12.0",
128
128
  "eslint-plugin-unicorn": "^56.0.1",
129
129
  "eslint-plugin-unused-imports": "^4.1.4",
130
130
  "eslint-plugin-vue": "^9.32.0",
131
131
  "eslint-plugin-yml": "^1.16.0",
132
- "eslint-processor-vue-blocks": "^1.0.0",
132
+ "eslint-processor-vue-blocks": "^2.0.0",
133
133
  globals: "^15.14.0",
134
134
  "jsonc-eslint-parser": "^2.4.0",
135
135
  "local-pkg": "^1.0.0",
@@ -143,22 +143,22 @@ var package_default = {
143
143
  devDependencies: {
144
144
  "@antfu/eslint-config": "workspace:*",
145
145
  "@antfu/ni": "^23.3.1",
146
- "@eslint-react/eslint-plugin": "^1.26.0",
146
+ "@eslint-react/eslint-plugin": "^1.26.2",
147
147
  "@eslint/config-inspector": "^1.0.0",
148
148
  "@prettier/plugin-xml": "^3.4.1",
149
- "@stylistic/eslint-plugin-migrate": "^3.0.1",
149
+ "@stylistic/eslint-plugin-migrate": "^4.0.0-beta.1",
150
150
  "@types/fs-extra": "^11.0.4",
151
- "@types/node": "^22.13.0",
151
+ "@types/node": "^22.13.1",
152
152
  "@types/prompts": "^2.4.9",
153
153
  "@types/yargs": "^17.0.33",
154
154
  "@unocss/eslint-plugin": "^65.4.3",
155
155
  "astro-eslint-parser": "^1.2.1",
156
- bumpp: "^10.0.1",
157
- eslint: "^9.19.0",
156
+ bumpp: "^10.0.2",
157
+ eslint: "^9.20.0",
158
158
  "eslint-plugin-astro": "^1.3.1",
159
159
  "eslint-plugin-format": "^1.0.1",
160
160
  "eslint-plugin-react-hooks": "^5.1.0",
161
- "eslint-plugin-react-refresh": "^0.4.18",
161
+ "eslint-plugin-react-refresh": "^0.4.19",
162
162
  "eslint-plugin-solid": "^0.14.5",
163
163
  "eslint-plugin-svelte": "^2.46.1",
164
164
  "eslint-typegen": "^1.0.0",
@@ -171,18 +171,18 @@ var package_default = {
171
171
  "prettier-plugin-slidev": "^1.0.5",
172
172
  rimraf: "^6.0.1",
173
173
  "simple-git-hooks": "^2.11.1",
174
- svelte: "^5.19.6",
174
+ svelte: "^5.19.9",
175
175
  "svelte-eslint-parser": "^0.43.0",
176
176
  tsup: "^8.3.6",
177
177
  tsx: "^4.19.2",
178
178
  typescript: "^5.7.3",
179
- vitest: "^3.0.4",
179
+ vitest: "^3.0.5",
180
180
  vue: "^3.5.13"
181
181
  },
182
182
  resolutions: {
183
183
  "@eslint-community/eslint-utils": "^4.4.1",
184
- "@typescript-eslint/utils": "^8.22.0",
185
- eslint: "^9.19.0",
184
+ "@typescript-eslint/utils": "^8.23.0",
185
+ eslint: "^9.20.0",
186
186
  tsx: "^4.19.2"
187
187
  },
188
188
  "simple-git-hooks": {
package/dist/index.d.ts CHANGED
@@ -4934,6 +4934,11 @@ interface RuleOptions {
4934
4934
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-spy-on.md
4935
4935
  */
4936
4936
  'test/prefer-spy-on'?: Linter.RuleEntry<[]>
4937
+ /**
4938
+ * enforce using `toBe(true)` and `toBe(false)` over matchers that coerce types to boolean
4939
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-boolean-matchers.md
4940
+ */
4941
+ 'test/prefer-strict-boolean-matchers'?: Linter.RuleEntry<[]>
4937
4942
  /**
4938
4943
  * enforce strict equal over equal
4939
4944
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-strict-equal.md
@@ -4989,6 +4994,11 @@ interface RuleOptions {
4989
4994
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-local-test-context-for-concurrent-snapshots.md
4990
4995
  */
4991
4996
  'test/require-local-test-context-for-concurrent-snapshots'?: Linter.RuleEntry<[]>
4997
+ /**
4998
+ * enforce using type parameters with vitest mock functions
4999
+ * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-mock-type-parameters.md
5000
+ */
5001
+ 'test/require-mock-type-parameters'?: Linter.RuleEntry<TestRequireMockTypeParameters>
4992
5002
  /**
4993
5003
  * require toThrow() to be called with an error message
4994
5004
  * @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/require-to-throw-message.md
@@ -6748,7 +6758,7 @@ interface RuleOptions {
6748
6758
  */
6749
6759
  'vue/jsx-uses-vars'?: Linter.RuleEntry<[]>
6750
6760
  /**
6751
- * Enforce consistent spacing between property names and type annotations in types and interfaces in `<template>`
6761
+ * Enforce consistent spacing between keys and values in object literal properties in `<template>`
6752
6762
  * @see https://eslint.vuejs.org/rules/key-spacing.html
6753
6763
  */
6754
6764
  'vue/key-spacing'?: Linter.RuleEntry<VueKeySpacing>
@@ -7441,7 +7451,7 @@ interface RuleOptions {
7441
7451
  */
7442
7452
  'vue/prop-name-casing'?: Linter.RuleEntry<VuePropNameCasing>
7443
7453
  /**
7444
- * Require quotes around object literal, type literal, interfaces and enums property names in `<template>`
7454
+ * Require quotes around object literal property names in `<template>`
7445
7455
  * @see https://eslint.vuejs.org/rules/quote-props.html
7446
7456
  */
7447
7457
  'vue/quote-props'?: Linter.RuleEntry<VueQuoteProps>
@@ -10721,6 +10731,37 @@ type PerfectionistSortEnums = []|[{
10721
10731
  order?: ("asc" | "desc")
10722
10732
 
10723
10733
  forceNumericSort?: boolean
10734
+ customGroups?: ({
10735
+ [k: string]: (string | string[]) | undefined
10736
+ } | ({
10737
+
10738
+ groupName?: string
10739
+
10740
+ type?: ("alphabetical" | "line-length" | "natural" | "unsorted")
10741
+
10742
+ order?: ("desc" | "asc")
10743
+
10744
+ newlinesInside?: ("always" | "never")
10745
+ anyOf?: {
10746
+
10747
+ elementValuePattern?: string
10748
+
10749
+ elementNamePattern?: string
10750
+ }[]
10751
+ } | {
10752
+
10753
+ groupName?: string
10754
+
10755
+ type?: ("alphabetical" | "line-length" | "natural" | "unsorted")
10756
+
10757
+ order?: ("desc" | "asc")
10758
+
10759
+ newlinesInside?: ("always" | "never")
10760
+
10761
+ elementValuePattern?: string
10762
+
10763
+ elementNamePattern?: string
10764
+ })[])
10724
10765
 
10725
10766
  sortByValue?: boolean
10726
10767
 
@@ -10732,7 +10773,15 @@ type PerfectionistSortEnums = []|[{
10732
10773
 
10733
10774
  partitionByNewLine?: boolean
10734
10775
 
10776
+ newlinesBetween?: ("ignore" | "always" | "never")
10777
+
10735
10778
  type?: ("alphabetical" | "natural" | "line-length" | "custom")
10779
+
10780
+ groups?: (string | string[] | {
10781
+
10782
+ newlinesBetween?: ("ignore" | "always" | "never")
10783
+ [k: string]: unknown | undefined
10784
+ })[]
10736
10785
  }]
10737
10786
  // ----- perfectionist/sort-exports -----
10738
10787
  type PerfectionistSortExports = []|[{
@@ -11124,6 +11173,8 @@ type PerfectionistSortNamedExports = []|[{
11124
11173
 
11125
11174
  groupKind?: ("mixed" | "values-first" | "types-first")
11126
11175
 
11176
+ ignoreAlias?: boolean
11177
+
11127
11178
  partitionByComment?: (string[] | boolean | string | {
11128
11179
  block?: (string[] | boolean | string)
11129
11180
  line?: (string[] | boolean | string)
@@ -13214,6 +13265,10 @@ type TestPreferSnapshotHint = []|[("always" | "multi")]
13214
13265
  type TestRequireHook = []|[{
13215
13266
  allowedFunctionCalls?: string[]
13216
13267
  }]
13268
+ // ----- test/require-mock-type-parameters -----
13269
+ type TestRequireMockTypeParameters = []|[{
13270
+ checkImportFunctions?: boolean
13271
+ }]
13217
13272
  // ----- test/require-top-level-describe -----
13218
13273
  type TestRequireTopLevelDescribe = []|[{
13219
13274
  maxNumberOfTopLevelDescribes?: number
@@ -14155,6 +14210,8 @@ type TsNoUnnecessaryBooleanLiteralCompare = []|[{
14155
14210
  allowComparingNullableBooleansToFalse?: boolean
14156
14211
 
14157
14212
  allowComparingNullableBooleansToTrue?: boolean
14213
+
14214
+ allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing?: boolean
14158
14215
  }]
14159
14216
  // ----- ts/no-unnecessary-condition -----
14160
14217
  type TsNoUnnecessaryCondition = []|[{
@@ -14796,7 +14853,6 @@ type VueArrayElementNewline = []|[(_VueArrayElementNewlineBasicConfig | {
14796
14853
  ArrayPattern?: _VueArrayElementNewlineBasicConfig
14797
14854
  })]
14798
14855
  type _VueArrayElementNewlineBasicConfig = (("always" | "never" | "consistent") | {
14799
- consistent?: boolean
14800
14856
  multiline?: boolean
14801
14857
  minItems?: (number | null)
14802
14858
  })
@@ -14865,14 +14921,9 @@ type VueCommaDangle = []|[(_VueCommaDangleValue | {
14865
14921
  imports?: _VueCommaDangleValueWithIgnore
14866
14922
  exports?: _VueCommaDangleValueWithIgnore
14867
14923
  functions?: _VueCommaDangleValueWithIgnore
14868
- importAttributes?: _VueCommaDangleValueWithIgnore
14869
- dynamicImports?: _VueCommaDangleValueWithIgnore
14870
- enums?: _VueCommaDangleValueWithIgnore
14871
- generics?: _VueCommaDangleValueWithIgnore
14872
- tuples?: _VueCommaDangleValueWithIgnore
14873
14924
  })]
14874
14925
  type _VueCommaDangleValue = ("always-multiline" | "always" | "never" | "only-multiline")
14875
- type _VueCommaDangleValueWithIgnore = ("always-multiline" | "always" | "never" | "only-multiline" | "ignore")
14926
+ type _VueCommaDangleValueWithIgnore = ("always-multiline" | "always" | "ignore" | "never" | "only-multiline")
14876
14927
  // ----- vue/comma-spacing -----
14877
14928
  type VueCommaSpacing = []|[{
14878
14929
  before?: boolean
@@ -14943,10 +14994,6 @@ type VueFirstAttributeLinebreak = []|[{
14943
14994
  // ----- vue/func-call-spacing -----
14944
14995
  type VueFuncCallSpacing = ([]|["never"] | []|["always"]|["always", {
14945
14996
  allowNewlines?: boolean
14946
- optionalChain?: {
14947
- before?: boolean
14948
- after?: boolean
14949
- }
14950
14997
  }])
14951
14998
  // ----- vue/html-button-has-type -----
14952
14999
  type VueHtmlButtonHasType = []|[{
@@ -15028,7 +15075,6 @@ type VueKeySpacing = []|[({
15028
15075
  mode?: ("strict" | "minimum")
15029
15076
  beforeColon?: boolean
15030
15077
  afterColon?: boolean
15031
- ignoredNodes?: ("ObjectExpression" | "ObjectPattern" | "ImportDeclaration" | "ExportNamedDeclaration" | "ExportAllDeclaration" | "TSTypeLiteral" | "TSInterfaceBody" | "ClassBody")[]
15032
15078
  } | {
15033
15079
  singleLine?: {
15034
15080
  mode?: ("strict" | "minimum")
@@ -15265,10 +15311,6 @@ type VueKeywordSpacing = []|[{
15265
15311
  before?: boolean
15266
15312
  after?: boolean
15267
15313
  }
15268
- satisfies?: {
15269
- before?: boolean
15270
- after?: boolean
15271
- }
15272
15314
  set?: {
15273
15315
  before?: boolean
15274
15316
  after?: boolean
@@ -15345,10 +15387,6 @@ type VueKeywordSpacing = []|[{
15345
15387
  before?: boolean
15346
15388
  after?: boolean
15347
15389
  }
15348
- type?: {
15349
- before?: boolean
15350
- after?: boolean
15351
- }
15352
15390
  }
15353
15391
  }]
15354
15392
  // ----- vue/match-component-file-name -----
@@ -15477,10 +15515,7 @@ type VueMultilineHtmlElementContentNewline = []|[{
15477
15515
  allowEmptyLines?: boolean
15478
15516
  }]
15479
15517
  // ----- vue/multiline-ternary -----
15480
- type VueMultilineTernary = []|[("always" | "always-multiline" | "never")]|[("always" | "always-multiline" | "never"), {
15481
- ignoreJSX?: boolean
15482
- [k: string]: unknown | undefined
15483
- }]
15518
+ type VueMultilineTernary = []|[("always" | "always-multiline" | "never")]
15484
15519
  // ----- vue/mustache-interpolation-spacing -----
15485
15520
  type VueMustacheInterpolationSpacing = []|[("always" | "never")]
15486
15521
  // ----- vue/new-line-between-multi-line-property -----
@@ -15555,7 +15590,6 @@ type VueNoExtraParens = ([]|["functions"] | []|["all"]|["all", {
15555
15590
  enforceForNewInMemberExpressions?: boolean
15556
15591
  enforceForFunctionPrototypeMethods?: boolean
15557
15592
  allowParensAfterCommentPattern?: string
15558
- nestedConditionalExpressions?: boolean
15559
15593
  }])
15560
15594
  // ----- vue/no-irregular-whitespace -----
15561
15595
  type VueNoIrregularWhitespace = []|[{
@@ -15798,16 +15832,6 @@ type VueObjectCurlyNewline = []|[((("always" | "never") | {
15798
15832
  minProperties?: number
15799
15833
  consistent?: boolean
15800
15834
  })
15801
- TSTypeLiteral?: (("always" | "never") | {
15802
- multiline?: boolean
15803
- minProperties?: number
15804
- consistent?: boolean
15805
- })
15806
- TSInterfaceBody?: (("always" | "never") | {
15807
- multiline?: boolean
15808
- minProperties?: number
15809
- consistent?: boolean
15810
- })
15811
15835
  })]
15812
15836
  // ----- vue/object-curly-spacing -----
15813
15837
  type VueObjectCurlySpacing = []|[("always" | "never")]|[("always" | "never"), {
@@ -15829,7 +15853,7 @@ type VueObjectShorthand = ([]|[("always" | "methods" | "properties" | "never" |
15829
15853
  avoidExplicitReturnArrows?: boolean
15830
15854
  }])
15831
15855
  // ----- vue/operator-linebreak -----
15832
- type VueOperatorLinebreak = []|[(("after" | "before" | "none") | null)]|[(("after" | "before" | "none") | null), {
15856
+ type VueOperatorLinebreak = []|[("after" | "before" | "none" | null)]|[("after" | "before" | "none" | null), {
15833
15857
  overrides?: {
15834
15858
  [k: string]: ("after" | "before" | "none" | "ignore") | undefined
15835
15859
  }
package/dist/index.js CHANGED
@@ -357,7 +357,6 @@ async function stylistic(options = {}) {
357
357
  };
358
358
  const pluginStylistic = await interopDefault(import("@stylistic/eslint-plugin"));
359
359
  const config = pluginStylistic.configs.customize({
360
- flat: true,
361
360
  indent,
362
361
  jsx: jsx2,
363
362
  pluginName: "style",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@antfu/eslint-config",
3
3
  "type": "module",
4
- "version": "4.1.1",
4
+ "version": "4.2.0",
5
5
  "description": "Anthony's ESLint config",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com> (https://github.com/antfu/)",
7
7
  "license": "MIT",
@@ -79,16 +79,16 @@
79
79
  },
80
80
  "dependencies": {
81
81
  "@antfu/install-pkg": "^1.0.0",
82
- "@clack/prompts": "^0.9.1",
82
+ "@clack/prompts": "^0.10.0",
83
83
  "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1",
84
84
  "@eslint/markdown": "^6.2.2",
85
- "@stylistic/eslint-plugin": "^3.0.1",
86
- "@typescript-eslint/eslint-plugin": "^8.22.0",
87
- "@typescript-eslint/parser": "^8.22.0",
88
- "@vitest/eslint-plugin": "^1.1.25",
85
+ "@stylistic/eslint-plugin": "^4.0.0-beta.1",
86
+ "@typescript-eslint/eslint-plugin": "^8.23.0",
87
+ "@typescript-eslint/parser": "^8.23.0",
88
+ "@vitest/eslint-plugin": "^1.1.27",
89
89
  "eslint-config-flat-gitignore": "^2.0.0",
90
90
  "eslint-flat-config-utils": "^2.0.1",
91
- "eslint-merge-processors": "^1.0.0",
91
+ "eslint-merge-processors": "^2.0.0",
92
92
  "eslint-plugin-antfu": "^3.0.0",
93
93
  "eslint-plugin-command": "^3.0.0",
94
94
  "eslint-plugin-import-x": "^4.6.1",
@@ -96,14 +96,14 @@
96
96
  "eslint-plugin-jsonc": "^2.19.1",
97
97
  "eslint-plugin-n": "^17.15.1",
98
98
  "eslint-plugin-no-only-tests": "^3.3.0",
99
- "eslint-plugin-perfectionist": "^4.7.0",
99
+ "eslint-plugin-perfectionist": "^4.8.0",
100
100
  "eslint-plugin-regexp": "^2.7.0",
101
101
  "eslint-plugin-toml": "^0.12.0",
102
102
  "eslint-plugin-unicorn": "^56.0.1",
103
103
  "eslint-plugin-unused-imports": "^4.1.4",
104
104
  "eslint-plugin-vue": "^9.32.0",
105
105
  "eslint-plugin-yml": "^1.16.0",
106
- "eslint-processor-vue-blocks": "^1.0.0",
106
+ "eslint-processor-vue-blocks": "^2.0.0",
107
107
  "globals": "^15.14.0",
108
108
  "jsonc-eslint-parser": "^2.4.0",
109
109
  "local-pkg": "^1.0.0",
@@ -116,22 +116,22 @@
116
116
  },
117
117
  "devDependencies": {
118
118
  "@antfu/ni": "^23.3.1",
119
- "@eslint-react/eslint-plugin": "^1.26.0",
119
+ "@eslint-react/eslint-plugin": "^1.26.2",
120
120
  "@eslint/config-inspector": "^1.0.0",
121
121
  "@prettier/plugin-xml": "^3.4.1",
122
- "@stylistic/eslint-plugin-migrate": "^3.0.1",
122
+ "@stylistic/eslint-plugin-migrate": "^4.0.0-beta.1",
123
123
  "@types/fs-extra": "^11.0.4",
124
- "@types/node": "^22.13.0",
124
+ "@types/node": "^22.13.1",
125
125
  "@types/prompts": "^2.4.9",
126
126
  "@types/yargs": "^17.0.33",
127
127
  "@unocss/eslint-plugin": "^65.4.3",
128
128
  "astro-eslint-parser": "^1.2.1",
129
- "bumpp": "^10.0.1",
130
- "eslint": "^9.19.0",
129
+ "bumpp": "^10.0.2",
130
+ "eslint": "^9.20.0",
131
131
  "eslint-plugin-astro": "^1.3.1",
132
132
  "eslint-plugin-format": "^1.0.1",
133
133
  "eslint-plugin-react-hooks": "^5.1.0",
134
- "eslint-plugin-react-refresh": "^0.4.18",
134
+ "eslint-plugin-react-refresh": "^0.4.19",
135
135
  "eslint-plugin-solid": "^0.14.5",
136
136
  "eslint-plugin-svelte": "^2.46.1",
137
137
  "eslint-typegen": "^1.0.0",
@@ -144,19 +144,19 @@
144
144
  "prettier-plugin-slidev": "^1.0.5",
145
145
  "rimraf": "^6.0.1",
146
146
  "simple-git-hooks": "^2.11.1",
147
- "svelte": "^5.19.6",
147
+ "svelte": "^5.19.9",
148
148
  "svelte-eslint-parser": "^0.43.0",
149
149
  "tsup": "^8.3.6",
150
150
  "tsx": "^4.19.2",
151
151
  "typescript": "^5.7.3",
152
- "vitest": "^3.0.4",
152
+ "vitest": "^3.0.5",
153
153
  "vue": "^3.5.13",
154
- "@antfu/eslint-config": "4.1.1"
154
+ "@antfu/eslint-config": "4.2.0"
155
155
  },
156
156
  "resolutions": {
157
157
  "@eslint-community/eslint-utils": "^4.4.1",
158
- "@typescript-eslint/utils": "^8.22.0",
159
- "eslint": "^9.19.0",
158
+ "@typescript-eslint/utils": "^8.23.0",
159
+ "eslint": "^9.20.0",
160
160
  "tsx": "^4.19.2"
161
161
  },
162
162
  "simple-git-hooks": {