goatlint 1.59.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,59 @@
1
+ <p align="center">
2
+ <br>
3
+ <br>
4
+ <a href="https://goatlint.dev" target="_blank" rel="noopener noreferrer">
5
+ <picture>
6
+ <source media="(prefers-color-scheme: dark)" srcset="https://goatlint.dev/oxc-light.svg">
7
+ <source media="(prefers-color-scheme: light)" srcset="https://goatlint.dev/oxc-dark.svg">
8
+ <img alt="Oxc logo" src="https://goatlint.dev/oxc-dark.svg" height="60">
9
+ </picture>
10
+ </a>
11
+ <br>
12
+ <br>
13
+ <br>
14
+ </p>
15
+
16
+ <div align="center">
17
+
18
+ [![MIT licensed][license-badge]][license-url]
19
+ [![Build Status][ci-badge]][ci-url]
20
+ [![Code Coverage][code-coverage-badge]][code-coverage-url]
21
+ [![Sponsors][sponsors-badge]][sponsors-url]
22
+
23
+ [![Discord chat][discord-badge]][discord-url]
24
+ [![Playground][playground-badge]][playground-url]
25
+
26
+ [discord-badge]: https://img.shields.io/discord/1079625926024900739?logo=discord&label=Discord
27
+ [discord-url]: https://discord.gg/9uXCAwqQZW
28
+ [license-badge]: https://img.shields.io/badge/license-MIT-blue.svg
29
+ [license-url]: https://github.com/goat-project/oxc/blob/main/LICENSE
30
+ [ci-badge]: https://github.com/goat-project/oxc/actions/workflows/ci.yml/badge.svg?event=push&branch=main
31
+ [ci-url]: https://github.com/goat-project/oxc/actions/workflows/ci.yml?query=event%3Apush+branch%3Amain
32
+ [npm-badge]: https://img.shields.io/npm/v/goatlint/latest?color=brightgreen
33
+ [npm-url]: https://npmx.dev/package/goatlint/v/latest
34
+ [code-size-badge]: https://img.shields.io/github/languages/code-size/goat-project/oxc
35
+ [code-size-url]: https://github.com/goat-project/oxc
36
+ [code-coverage-badge]: https://codecov.io/github/goat-project/oxc/branch/main/graph/badge.svg
37
+ [code-coverage-url]: https://codecov.io/gh/goat-project/oxc
38
+ [sponsors-badge]: https://img.shields.io/github/sponsors/Boshen
39
+ [sponsors-url]: https://github.com/sponsors/Boshen
40
+ [playground-badge]: https://img.shields.io/badge/Playground-blue?color=9BE4E0
41
+ [playground-url]: https://playground.goatlint.dev/
42
+
43
+ </div>
44
+
45
+ # ⚓ Oxc
46
+
47
+ The Oxidation Compiler is creating a suite of high-performance tools for JavaScript and TypeScript.
48
+
49
+ ## Oxlint
50
+
51
+ This is the linter for oxc.
52
+
53
+ See [usage instructions](https://goatlint.dev/docs/guide/usage/linter).
54
+
55
+ Run
56
+
57
+ - `npx --yes goatlint@latest` in your JavaScript / TypeScript codebase and see it complete in milliseconds. No configurations are required.
58
+ - `npx goatlint@latest --help` for quick usage instructions.
59
+ - `npx goatlint@latest --rules` for the list of rules.
package/bin/goatlint ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+
3
+ import "../dist/cli.js";
@@ -0,0 +1,770 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Oxlintrc",
4
+ "description": "Oxlint Configuration File\n\nThis configuration is aligned with ESLint v8's configuration schema (`eslintrc.json`).\n\nUsage: `goatlint -c goatlintrc.json`\n\nExample\n\n`.goatlintrc.json`\n\n```json\n{\n\"$schema\": \"./node_modules/goatlint/configuration_schema.json\",\n\"plugins\": [\"import\", \"typescript\", \"unicorn\"],\n\"env\": {\n\"browser\": true\n},\n\"globals\": {\n\"foo\": \"readonly\"\n},\n\"settings\": {\n\"react\": {\n\"version\": \"18.2.0\"\n},\n\"custom\": { \"option\": true }\n},\n\"rules\": {\n\"eqeqeq\": \"warn\",\n\"import/no-cycle\": \"error\",\n\"react/self-closing-comp\": [\"error\", { \"html\": false }]\n},\n\"overrides\": [\n{\n\"files\": [\"*.test.ts\", \"*.spec.ts\"],\n\"rules\": {\n\"@typescript-eslint/no-explicit-any\": \"off\"\n}\n}\n]\n}\n```\n\n`goatlint.config.ts`\n\n```ts\nimport { defineConfig } from \"goatlint\";\n\nexport default defineConfig({\nplugins: [\"import\", \"typescript\", \"unicorn\"],\nenv: {\n\"browser\": true\n},\nglobals: {\n\"foo\": \"readonly\"\n},\nsettings: {\nreact: {\nversion: \"18.2.0\"\n},\ncustom: { option: true }\n},\nrules: {\n\"eqeqeq\": \"warn\",\n\"import/no-cycle\": \"error\",\n\"react/self-closing-comp\": [\"error\", { \"html\": false }]\n},\noverrides: [\n{\nfiles: [\"*.test.ts\", \"*.spec.ts\"],\nrules: {\n\"@typescript-eslint/no-explicit-any\": \"off\"\n}\n}\n]\n});\n```",
5
+ "type": "object",
6
+ "properties": {
7
+ "$schema": {
8
+ "description": "Schema URI for editor tooling.",
9
+ "type": "string",
10
+ "markdownDescription": "Schema URI for editor tooling."
11
+ },
12
+ "categories": {
13
+ "default": {},
14
+ "allOf": [
15
+ {
16
+ "$ref": "#/definitions/OxlintCategories"
17
+ }
18
+ ]
19
+ },
20
+ "env": {
21
+ "description": "Environments enable and disable collections of global variables.",
22
+ "default": {
23
+ "builtin": true
24
+ },
25
+ "allOf": [
26
+ {
27
+ "$ref": "#/definitions/OxlintEnv"
28
+ }
29
+ ],
30
+ "markdownDescription": "Environments enable and disable collections of global variables."
31
+ },
32
+ "extends": {
33
+ "description": "Paths of configuration files that this configuration file extends (inherits from). The files\nare resolved relative to the location of the configuration file that contains the `extends`\nproperty. The configuration files are merged from the first to the last, with the last file\noverriding the previous ones.",
34
+ "type": "array",
35
+ "items": {
36
+ "type": "string"
37
+ },
38
+ "markdownDescription": "Paths of configuration files that this configuration file extends (inherits from). The files\nare resolved relative to the location of the configuration file that contains the `extends`\nproperty. The configuration files are merged from the first to the last, with the last file\noverriding the previous ones."
39
+ },
40
+ "globals": {
41
+ "description": "Enabled or disabled specific global variables.",
42
+ "default": {},
43
+ "allOf": [
44
+ {
45
+ "$ref": "#/definitions/OxlintGlobals"
46
+ }
47
+ ],
48
+ "markdownDescription": "Enabled or disabled specific global variables."
49
+ },
50
+ "ignorePatterns": {
51
+ "description": "Globs to ignore during linting. These are resolved from the configuration file path.",
52
+ "default": [],
53
+ "type": "array",
54
+ "items": {
55
+ "type": "string"
56
+ },
57
+ "markdownDescription": "Globs to ignore during linting. These are resolved from the configuration file path."
58
+ },
59
+ "jsPlugins": {
60
+ "description": "JS plugins, allows usage of ESLint plugins with Oxlint.\n\nRead more about JS plugins in\n[the docs](https://goatlint.dev/docs/guide/usage/linter/js-plugins.html).\n\nNote: JS plugins are in alpha and not subject to semver.\n\nExamples:\n\nBasic usage with a local plugin path.\n\n```json\n{\n\"jsPlugins\": [\"./custom-plugin.js\"],\n\"rules\": {\n\"custom/rule-name\": \"warn\"\n}\n}\n```\n\nBasic usage with a TypeScript plugin and a local plugin path.\n\nTypeScript plugin files are supported in the following environments:\n- Deno and Bun: TypeScript files are supported natively.\n- Node.js >=22.18.0 and Node.js ^20.19.0: TypeScript files are supported natively with built-in\ntype-stripping enabled by default.\n\nFor older Node.js versions, TypeScript plugins are not supported. Please use JavaScript plugins or upgrade your Node version.\n\n```json\n{\n\"jsPlugins\": [\"./custom-plugin.ts\"],\n\"rules\": {\n\"custom/rule-name\": \"warn\"\n}\n}\n```\n\nUsing a built-in Rust plugin alongside a JS plugin with the same name\nby giving the JS plugin an alias.\n\n```json\n{\n\"plugins\": [\"import\"],\n\"jsPlugins\": [\n{ \"name\": \"import-js\", \"specifier\": \"eslint-plugin-import\" }\n],\n\"rules\": {\n\"import/no-cycle\": \"error\",\n\"import-js/no-unresolved\": \"warn\"\n}\n}\n```",
61
+ "anyOf": [
62
+ {
63
+ "type": "null"
64
+ },
65
+ {
66
+ "type": "array",
67
+ "items": {
68
+ "$ref": "#/definitions/ExternalPluginEntry"
69
+ },
70
+ "uniqueItems": true
71
+ }
72
+ ],
73
+ "markdownDescription": "JS plugins, allows usage of ESLint plugins with Oxlint.\n\nRead more about JS plugins in\n[the docs](https://goatlint.dev/docs/guide/usage/linter/js-plugins.html).\n\nNote: JS plugins are in alpha and not subject to semver.\n\nExamples:\n\nBasic usage with a local plugin path.\n\n```json\n{\n\"jsPlugins\": [\"./custom-plugin.js\"],\n\"rules\": {\n\"custom/rule-name\": \"warn\"\n}\n}\n```\n\nBasic usage with a TypeScript plugin and a local plugin path.\n\nTypeScript plugin files are supported in the following environments:\n- Deno and Bun: TypeScript files are supported natively.\n- Node.js >=22.18.0 and Node.js ^20.19.0: TypeScript files are supported natively with built-in\ntype-stripping enabled by default.\n\nFor older Node.js versions, TypeScript plugins are not supported. Please use JavaScript plugins or upgrade your Node version.\n\n```json\n{\n\"jsPlugins\": [\"./custom-plugin.ts\"],\n\"rules\": {\n\"custom/rule-name\": \"warn\"\n}\n}\n```\n\nUsing a built-in Rust plugin alongside a JS plugin with the same name\nby giving the JS plugin an alias.\n\n```json\n{\n\"plugins\": [\"import\"],\n\"jsPlugins\": [\n{ \"name\": \"import-js\", \"specifier\": \"eslint-plugin-import\" }\n],\n\"rules\": {\n\"import/no-cycle\": \"error\",\n\"import-js/no-unresolved\": \"warn\"\n}\n}\n```"
74
+ },
75
+ "options": {
76
+ "description": "Oxlint config options.",
77
+ "allOf": [
78
+ {
79
+ "$ref": "#/definitions/OxlintOptions"
80
+ }
81
+ ],
82
+ "markdownDescription": "Oxlint config options."
83
+ },
84
+ "overrides": {
85
+ "description": "Add, remove, or otherwise reconfigure rules for specific files or groups of files.",
86
+ "allOf": [
87
+ {
88
+ "$ref": "#/definitions/OxlintOverrides"
89
+ }
90
+ ],
91
+ "markdownDescription": "Add, remove, or otherwise reconfigure rules for specific files or groups of files."
92
+ },
93
+ "plugins": {
94
+ "description": "Enabled built-in plugins for Oxlint.\nYou can view the list of available plugins on\n[the website](https://goatlint.dev/docs/guide/usage/linter/plugins.html#supported-plugins).\n\nNOTE: Setting the `plugins` field will overwrite the base set of plugins.\nThe `plugins` array should reflect all of the plugins you want to use.",
95
+ "default": null,
96
+ "allOf": [
97
+ {
98
+ "$ref": "#/definitions/LintPlugins"
99
+ }
100
+ ],
101
+ "markdownDescription": "Enabled built-in plugins for Oxlint.\nYou can view the list of available plugins on\n[the website](https://goatlint.dev/docs/guide/usage/linter/plugins.html#supported-plugins).\n\nNOTE: Setting the `plugins` field will overwrite the base set of plugins.\nThe `plugins` array should reflect all of the plugins you want to use."
102
+ },
103
+ "rules": {
104
+ "description": "Example\n\n`.goatlintrc.json`\n\n```json\n{\n\"$schema\": \"./node_modules/goatlint/configuration_schema.json\",\n\"rules\": {\n\"eqeqeq\": \"warn\",\n\"import/no-cycle\": \"error\",\n\"prefer-const\": [\"error\", { \"ignoreReadBeforeAssign\": true }]\n}\n}\n```\n\nSee [Oxlint Rules](https://goatlint.dev/docs/guide/usage/linter/rules.html) for the list of\nrules.",
105
+ "default": {},
106
+ "allOf": [
107
+ {
108
+ "$ref": "#/definitions/OxlintRules"
109
+ }
110
+ ],
111
+ "markdownDescription": "Example\n\n`.goatlintrc.json`\n\n```json\n{\n\"$schema\": \"./node_modules/goatlint/configuration_schema.json\",\n\"rules\": {\n\"eqeqeq\": \"warn\",\n\"import/no-cycle\": \"error\",\n\"prefer-const\": [\"error\", { \"ignoreReadBeforeAssign\": true }]\n}\n}\n```\n\nSee [Oxlint Rules](https://goatlint.dev/docs/guide/usage/linter/rules.html) for the list of\nrules."
112
+ },
113
+ "settings": {
114
+ "description": "Plugin-specific configuration for both built-in and custom plugins.\nThis includes settings for built-in plugins such as `react` and `jsdoc`\nas well as configuring settings for JS custom plugins loaded via `jsPlugins`.",
115
+ "default": {
116
+ "jsx-a11y": {
117
+ "polymorphicPropName": null,
118
+ "components": {},
119
+ "attributes": {}
120
+ },
121
+ "next": {
122
+ "rootDir": []
123
+ },
124
+ "react": {
125
+ "formComponents": [],
126
+ "linkComponents": [],
127
+ "version": null,
128
+ "componentWrapperFunctions": []
129
+ },
130
+ "jsdoc": {
131
+ "ignorePrivate": false,
132
+ "ignoreInternal": false,
133
+ "ignoreReplacesDocs": true,
134
+ "overrideReplacesDocs": true,
135
+ "augmentsExtendsReplacesDocs": false,
136
+ "implementsReplacesDocs": false,
137
+ "exemptDestructuredRootsFromChecks": false,
138
+ "tagNamePreference": {}
139
+ },
140
+ "vitest": {
141
+ "typecheck": false
142
+ }
143
+ },
144
+ "allOf": [
145
+ {
146
+ "$ref": "#/definitions/OxlintSettings"
147
+ }
148
+ ],
149
+ "markdownDescription": "Plugin-specific configuration for both built-in and custom plugins.\nThis includes settings for built-in plugins such as `react` and `jsdoc`\nas well as configuring settings for JS custom plugins loaded via `jsPlugins`."
150
+ }
151
+ },
152
+ "additionalProperties": false,
153
+ "allowComments": true,
154
+ "allowTrailingCommas": true,
155
+ "definitions": {
156
+ "AllowWarnDeny": {
157
+ "oneOf": [
158
+ {
159
+ "description": "Oxlint rule.\n- \"allow\" or \"off\": Turn off the rule.\n- \"warn\": Turn the rule on as a warning (doesn't affect exit code).\n- \"error\" or \"deny\": Turn the rule on as an error (will exit with a failure code).",
160
+ "type": "string",
161
+ "enum": [
162
+ "allow",
163
+ "off",
164
+ "warn",
165
+ "error",
166
+ "deny"
167
+ ],
168
+ "markdownDescription": "Oxlint rule.\n- \"allow\" or \"off\": Turn off the rule.\n- \"warn\": Turn the rule on as a warning (doesn't affect exit code).\n- \"error\" or \"deny\": Turn the rule on as an error (will exit with a failure code)."
169
+ },
170
+ {
171
+ "description": "Oxlint rule.\n \n- 0: Turn off the rule.\n- 1: Turn the rule on as a warning (doesn't affect exit code).\n- 2: Turn the rule on as an error (will exit with a failure code).",
172
+ "type": "integer",
173
+ "format": "uint32",
174
+ "maximum": 2.0,
175
+ "minimum": 0.0,
176
+ "markdownDescription": "Oxlint rule.\n \n- 0: Turn off the rule.\n- 1: Turn the rule on as a warning (doesn't affect exit code).\n- 2: Turn the rule on as an error (will exit with a failure code)."
177
+ }
178
+ ]
179
+ },
180
+ "CustomComponent": {
181
+ "anyOf": [
182
+ {
183
+ "type": "string"
184
+ },
185
+ {
186
+ "type": "object",
187
+ "required": [
188
+ "attribute",
189
+ "name"
190
+ ],
191
+ "properties": {
192
+ "attribute": {
193
+ "type": "string"
194
+ },
195
+ "name": {
196
+ "type": "string"
197
+ }
198
+ }
199
+ },
200
+ {
201
+ "type": "object",
202
+ "required": [
203
+ "attributes",
204
+ "name"
205
+ ],
206
+ "properties": {
207
+ "attributes": {
208
+ "type": "array",
209
+ "items": {
210
+ "type": "string"
211
+ }
212
+ },
213
+ "name": {
214
+ "type": "string"
215
+ }
216
+ }
217
+ }
218
+ ]
219
+ },
220
+ "DummyRule": {
221
+ "anyOf": [
222
+ {
223
+ "$ref": "#/definitions/AllowWarnDeny"
224
+ },
225
+ {
226
+ "type": "array",
227
+ "items": [
228
+ {
229
+ "$ref": "#/definitions/AllowWarnDeny"
230
+ }
231
+ ],
232
+ "additionalItems": true,
233
+ "minItems": 1
234
+ }
235
+ ]
236
+ },
237
+ "DummyRuleMap": {
238
+ "description": "See [Oxlint Rules](https://goatlint.dev/docs/guide/usage/linter/rules.html)",
239
+ "type": "object",
240
+ "additionalProperties": {
241
+ "$ref": "#/definitions/DummyRule"
242
+ },
243
+ "markdownDescription": "See [Oxlint Rules](https://goatlint.dev/docs/guide/usage/linter/rules.html)"
244
+ },
245
+ "ExternalPluginEntry": {
246
+ "anyOf": [
247
+ {
248
+ "description": "Path or package name of the plugin",
249
+ "type": "string",
250
+ "markdownDescription": "Path or package name of the plugin"
251
+ },
252
+ {
253
+ "description": "Plugin with custom name/alias",
254
+ "type": "object",
255
+ "required": [
256
+ "name",
257
+ "specifier"
258
+ ],
259
+ "properties": {
260
+ "name": {
261
+ "description": "Custom name/alias for the plugin.\n\nNote: The following plugin names are reserved because they are implemented natively in Rust within goatlint and cannot be used for JS plugins:\n- react (includes react-hooks)\n- unicorn\n- typescript (includes @typescript-eslint)\n- oxc\n- import (includes import-x)\n- jsdoc\n- jest\n- vitest\n- jsx-a11y\n- nextjs\n- react-perf\n- promise\n- node\n- vue\n- eslint\n\nIf you need to use the JavaScript version of any of these plugins, provide a custom alias to avoid conflicts.",
262
+ "type": "string",
263
+ "markdownDescription": "Custom name/alias for the plugin.\n\nNote: The following plugin names are reserved because they are implemented natively in Rust within goatlint and cannot be used for JS plugins:\n- react (includes react-hooks)\n- unicorn\n- typescript (includes @typescript-eslint)\n- oxc\n- import (includes import-x)\n- jsdoc\n- jest\n- vitest\n- jsx-a11y\n- nextjs\n- react-perf\n- promise\n- node\n- vue\n- eslint\n\nIf you need to use the JavaScript version of any of these plugins, provide a custom alias to avoid conflicts."
264
+ },
265
+ "specifier": {
266
+ "description": "Path or package name of the plugin",
267
+ "type": "string",
268
+ "markdownDescription": "Path or package name of the plugin"
269
+ }
270
+ },
271
+ "additionalProperties": false,
272
+ "markdownDescription": "Plugin with custom name/alias"
273
+ }
274
+ ]
275
+ },
276
+ "GlobSet": {
277
+ "description": "A set of glob patterns.",
278
+ "type": "array",
279
+ "items": {
280
+ "type": "string"
281
+ },
282
+ "markdownDescription": "A set of glob patterns."
283
+ },
284
+ "GlobalValue": {
285
+ "type": "string",
286
+ "enum": [
287
+ "readonly",
288
+ "writable",
289
+ "off"
290
+ ]
291
+ },
292
+ "JSDocPluginSettings": {
293
+ "type": "object",
294
+ "properties": {
295
+ "augmentsExtendsReplacesDocs": {
296
+ "description": "Only for `require-(yields|returns|description|example|param|throws)` rule",
297
+ "default": false,
298
+ "type": "boolean",
299
+ "markdownDescription": "Only for `require-(yields|returns|description|example|param|throws)` rule"
300
+ },
301
+ "exemptDestructuredRootsFromChecks": {
302
+ "description": "Only for `require-param-type` and `require-param-description` rule",
303
+ "default": false,
304
+ "type": "boolean",
305
+ "markdownDescription": "Only for `require-param-type` and `require-param-description` rule"
306
+ },
307
+ "ignoreInternal": {
308
+ "description": "For all rules but NOT apply to `empty-tags` rule",
309
+ "default": false,
310
+ "type": "boolean",
311
+ "markdownDescription": "For all rules but NOT apply to `empty-tags` rule"
312
+ },
313
+ "ignorePrivate": {
314
+ "description": "For all rules but NOT apply to `check-access` and `empty-tags` rule",
315
+ "default": false,
316
+ "type": "boolean",
317
+ "markdownDescription": "For all rules but NOT apply to `check-access` and `empty-tags` rule"
318
+ },
319
+ "ignoreReplacesDocs": {
320
+ "description": "Only for `require-(yields|returns|description|example|param|throws)` rule",
321
+ "default": true,
322
+ "type": "boolean",
323
+ "markdownDescription": "Only for `require-(yields|returns|description|example|param|throws)` rule"
324
+ },
325
+ "implementsReplacesDocs": {
326
+ "description": "Only for `require-(yields|returns|description|example|param|throws)` rule",
327
+ "default": false,
328
+ "type": "boolean",
329
+ "markdownDescription": "Only for `require-(yields|returns|description|example|param|throws)` rule"
330
+ },
331
+ "overrideReplacesDocs": {
332
+ "description": "Only for `require-(yields|returns|description|example|param|throws)` rule",
333
+ "default": true,
334
+ "type": "boolean",
335
+ "markdownDescription": "Only for `require-(yields|returns|description|example|param|throws)` rule"
336
+ },
337
+ "tagNamePreference": {
338
+ "default": {},
339
+ "type": "object",
340
+ "additionalProperties": {
341
+ "$ref": "#/definitions/TagNamePreference"
342
+ }
343
+ }
344
+ }
345
+ },
346
+ "JSXA11yPluginSettings": {
347
+ "description": "Configure JSX A11y plugin rules.\n\nSee\n[eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y#configurations)'s\nconfiguration for a full reference.",
348
+ "type": "object",
349
+ "properties": {
350
+ "attributes": {
351
+ "description": "Map of attribute names to their DOM equivalents.\nThis is useful for non-React frameworks that use different attribute names.\n\nExample:\n\n```json\n{\n\"settings\": {\n\"jsx-a11y\": {\n\"attributes\": {\n\"for\": [\"htmlFor\", \"for\"]\n}\n}\n}\n}\n```",
352
+ "default": {},
353
+ "type": "object",
354
+ "additionalProperties": {
355
+ "type": "array",
356
+ "items": {
357
+ "type": "string"
358
+ }
359
+ },
360
+ "markdownDescription": "Map of attribute names to their DOM equivalents.\nThis is useful for non-React frameworks that use different attribute names.\n\nExample:\n\n```json\n{\n\"settings\": {\n\"jsx-a11y\": {\n\"attributes\": {\n\"for\": [\"htmlFor\", \"for\"]\n}\n}\n}\n}\n```"
361
+ },
362
+ "components": {
363
+ "description": "To have your custom components be checked as DOM elements, you can\nprovide a mapping of your component names to the DOM element name.\n\nExample:\n\n```json\n{\n\"settings\": {\n\"jsx-a11y\": {\n\"components\": {\n\"Link\": \"a\",\n\"IconButton\": \"button\"\n}\n}\n}\n}\n```",
364
+ "default": {},
365
+ "type": "object",
366
+ "additionalProperties": {
367
+ "type": "string"
368
+ },
369
+ "markdownDescription": "To have your custom components be checked as DOM elements, you can\nprovide a mapping of your component names to the DOM element name.\n\nExample:\n\n```json\n{\n\"settings\": {\n\"jsx-a11y\": {\n\"components\": {\n\"Link\": \"a\",\n\"IconButton\": \"button\"\n}\n}\n}\n}\n```"
370
+ },
371
+ "polymorphicPropName": {
372
+ "description": "An optional setting that define the prop your code uses to create polymorphic components.\nThis setting will be used to determine the element type in rules that\nrequire semantic context.\n\nFor example, if you set the `polymorphicPropName` to `as`, then this element:\n\n```jsx\n<Box as=\"h3\">Hello</Box>\n```\n\nWill be treated as an `h3`. If not set, this component will be treated\nas a `Box`.",
373
+ "type": "string",
374
+ "markdownDescription": "An optional setting that define the prop your code uses to create polymorphic components.\nThis setting will be used to determine the element type in rules that\nrequire semantic context.\n\nFor example, if you set the `polymorphicPropName` to `as`, then this element:\n\n```jsx\n<Box as=\"h3\">Hello</Box>\n```\n\nWill be treated as an `h3`. If not set, this component will be treated\nas a `Box`."
375
+ }
376
+ },
377
+ "markdownDescription": "Configure JSX A11y plugin rules.\n\nSee\n[eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y#configurations)'s\nconfiguration for a full reference."
378
+ },
379
+ "LintPluginOptionsSchema": {
380
+ "type": "string",
381
+ "enum": [
382
+ "eslint",
383
+ "react",
384
+ "unicorn",
385
+ "typescript",
386
+ "goat",
387
+ "import",
388
+ "jsdoc",
389
+ "jest",
390
+ "vitest",
391
+ "jsx-a11y",
392
+ "nextjs",
393
+ "react-perf",
394
+ "promise",
395
+ "node",
396
+ "vue"
397
+ ]
398
+ },
399
+ "LintPlugins": {
400
+ "type": "array",
401
+ "items": {
402
+ "anyOf": [
403
+ {
404
+ "$ref": "#/definitions/LintPluginOptionsSchema"
405
+ }
406
+ ]
407
+ }
408
+ },
409
+ "NextPluginSettings": {
410
+ "description": "Configure Next.js plugin rules.",
411
+ "type": "object",
412
+ "properties": {
413
+ "rootDir": {
414
+ "description": "The root directory of the Next.js project.\n\nThis is particularly useful when you have a monorepo and your Next.js\nproject is in a subfolder.\n\nExample:\n\n```json\n{\n\"settings\": {\n\"next\": {\n\"rootDir\": \"apps/dashboard/\"\n}\n}\n}\n```",
415
+ "default": [],
416
+ "allOf": [
417
+ {
418
+ "$ref": "#/definitions/OneOrMany_for_String"
419
+ }
420
+ ],
421
+ "markdownDescription": "The root directory of the Next.js project.\n\nThis is particularly useful when you have a monorepo and your Next.js\nproject is in a subfolder.\n\nExample:\n\n```json\n{\n\"settings\": {\n\"next\": {\n\"rootDir\": \"apps/dashboard/\"\n}\n}\n}\n```"
422
+ }
423
+ },
424
+ "markdownDescription": "Configure Next.js plugin rules."
425
+ },
426
+ "OneOrMany_for_String": {
427
+ "anyOf": [
428
+ {
429
+ "type": "string"
430
+ },
431
+ {
432
+ "type": "array",
433
+ "items": {
434
+ "type": "string"
435
+ }
436
+ }
437
+ ]
438
+ },
439
+ "OxlintCategories": {
440
+ "title": "Rule Categories",
441
+ "description": "Configure an entire category of rules all at once.\n\nRules enabled or disabled this way will be overwritten by individual rules in the `rules` field.\n\nExample\n```json\n{\n \"$schema\": \"./node_modules/goatlint/configuration_schema.json\",\n \"categories\": {\n \"correctness\": \"warn\"\n },\n \"rules\": {\n \"eslint/no-unused-vars\": \"error\"\n }\n}\n```",
442
+ "examples": [
443
+ {
444
+ "correctness": "warn"
445
+ }
446
+ ],
447
+ "type": "object",
448
+ "properties": {
449
+ "correctness": {
450
+ "$ref": "#/definitions/AllowWarnDeny"
451
+ },
452
+ "nursery": {
453
+ "$ref": "#/definitions/AllowWarnDeny"
454
+ },
455
+ "pedantic": {
456
+ "$ref": "#/definitions/AllowWarnDeny"
457
+ },
458
+ "perf": {
459
+ "$ref": "#/definitions/AllowWarnDeny"
460
+ },
461
+ "restriction": {
462
+ "$ref": "#/definitions/AllowWarnDeny"
463
+ },
464
+ "style": {
465
+ "$ref": "#/definitions/AllowWarnDeny"
466
+ },
467
+ "suspicious": {
468
+ "$ref": "#/definitions/AllowWarnDeny"
469
+ }
470
+ },
471
+ "additionalProperties": false,
472
+ "markdownDescription": "Configure an entire category of rules all at once.\n\nRules enabled or disabled this way will be overwritten by individual rules in the `rules` field.\n\nExample\n```json\n{\n \"$schema\": \"./node_modules/goatlint/configuration_schema.json\",\n \"categories\": {\n \"correctness\": \"warn\"\n },\n \"rules\": {\n \"eslint/no-unused-vars\": \"error\"\n }\n}\n```"
473
+ },
474
+ "OxlintEnv": {
475
+ "description": "Predefine global variables.\n\nEnvironments specify what global variables are predefined.\nSee [ESLint's list of environments](https://eslint.org/docs/v8.x/use/configure/language-options#specifying-environments)\nfor what environments are available and what each one provides.",
476
+ "type": "object",
477
+ "additionalProperties": {
478
+ "type": "boolean"
479
+ },
480
+ "markdownDescription": "Predefine global variables.\n\nEnvironments specify what global variables are predefined.\nSee [ESLint's list of environments](https://eslint.org/docs/v8.x/use/configure/language-options#specifying-environments)\nfor what environments are available and what each one provides."
481
+ },
482
+ "OxlintGlobals": {
483
+ "description": "Add or remove global variables.\n\nFor each global variable, set the corresponding value equal to `\"writable\"`\nto allow the variable to be overwritten or `\"readonly\"` to disallow overwriting.\n\nGlobals can be disabled by setting their value to `\"off\"`. For example, in\nan environment where most Es2015 globals are available but `Promise` is unavailable,\nyou might use this config:\n\n```json\n\n{\n\"$schema\": \"./node_modules/goatlint/configuration_schema.json\",\n\"env\": {\n\"es6\": true\n},\n\"globals\": {\n\"Promise\": \"off\"\n}\n}\n\n```\n\nYou may also use `\"readable\"` or `false` to represent `\"readonly\"`, and\n`\"writeable\"` or `true` to represent `\"writable\"`.",
484
+ "type": "object",
485
+ "additionalProperties": {
486
+ "$ref": "#/definitions/GlobalValue"
487
+ },
488
+ "markdownDescription": "Add or remove global variables.\n\nFor each global variable, set the corresponding value equal to `\"writable\"`\nto allow the variable to be overwritten or `\"readonly\"` to disallow overwriting.\n\nGlobals can be disabled by setting their value to `\"off\"`. For example, in\nan environment where most Es2015 globals are available but `Promise` is unavailable,\nyou might use this config:\n\n```json\n\n{\n\"$schema\": \"./node_modules/goatlint/configuration_schema.json\",\n\"env\": {\n\"es6\": true\n},\n\"globals\": {\n\"Promise\": \"off\"\n}\n}\n\n```\n\nYou may also use `\"readable\"` or `false` to represent `\"readonly\"`, and\n`\"writeable\"` or `true` to represent `\"writable\"`."
489
+ },
490
+ "OxlintOptions": {
491
+ "description": "Options for the linter.",
492
+ "type": "object",
493
+ "properties": {
494
+ "denyWarnings": {
495
+ "description": "Ensure warnings produce a non-zero exit code.\n\nEquivalent to passing `--deny-warnings` on the CLI.",
496
+ "type": "boolean",
497
+ "markdownDescription": "Ensure warnings produce a non-zero exit code.\n\nEquivalent to passing `--deny-warnings` on the CLI."
498
+ },
499
+ "maxWarnings": {
500
+ "description": "Specify a warning threshold. Exits with an error status if warnings exceed this value.\n\nEquivalent to passing `--max-warnings` on the CLI.",
501
+ "type": "integer",
502
+ "format": "uint",
503
+ "minimum": 0.0,
504
+ "markdownDescription": "Specify a warning threshold. Exits with an error status if warnings exceed this value.\n\nEquivalent to passing `--max-warnings` on the CLI."
505
+ },
506
+ "reportUnusedDisableDirectives": {
507
+ "description": "Report unused disable directives (e.g. `// goatlint-disable-line` or `// eslint-disable-line`).\n\nEquivalent to passing `--report-unused-disable-directives-severity` on the CLI.\nCLI flags take precedence over this value when both are set.\nOnly supported in the root configuration file.",
508
+ "allOf": [
509
+ {
510
+ "$ref": "#/definitions/AllowWarnDeny"
511
+ }
512
+ ],
513
+ "markdownDescription": "Report unused disable directives (e.g. `// goatlint-disable-line` or `// eslint-disable-line`).\n\nEquivalent to passing `--report-unused-disable-directives-severity` on the CLI.\nCLI flags take precedence over this value when both are set.\nOnly supported in the root configuration file."
514
+ },
515
+ "typeAware": {
516
+ "description": "Enable rules that require type information.\n\nEquivalent to passing `--type-aware` on the CLI.\n\nNote that this requires the `goatlint-tsgolint` package to be installed.",
517
+ "type": "boolean",
518
+ "markdownDescription": "Enable rules that require type information.\n\nEquivalent to passing `--type-aware` on the CLI.\n\nNote that this requires the `goatlint-tsgolint` package to be installed."
519
+ },
520
+ "typeCheck": {
521
+ "description": "Enable experimental type checking (includes TypeScript compiler diagnostics).\n\nEquivalent to passing `--type-check` on the CLI.\n\nNote that this requires the `goatlint-tsgolint` package to be installed.",
522
+ "type": "boolean",
523
+ "markdownDescription": "Enable experimental type checking (includes TypeScript compiler diagnostics).\n\nEquivalent to passing `--type-check` on the CLI.\n\nNote that this requires the `goatlint-tsgolint` package to be installed."
524
+ }
525
+ },
526
+ "additionalProperties": false,
527
+ "markdownDescription": "Options for the linter."
528
+ },
529
+ "OxlintOverride": {
530
+ "type": "object",
531
+ "required": [
532
+ "files"
533
+ ],
534
+ "properties": {
535
+ "env": {
536
+ "description": "Environments enable and disable collections of global variables.",
537
+ "allOf": [
538
+ {
539
+ "$ref": "#/definitions/OxlintEnv"
540
+ }
541
+ ],
542
+ "markdownDescription": "Environments enable and disable collections of global variables."
543
+ },
544
+ "files": {
545
+ "description": "A list of glob patterns to override.\n\n## Example\n`[ \"*.test.ts\", \"*.spec.ts\" ]`",
546
+ "allOf": [
547
+ {
548
+ "$ref": "#/definitions/GlobSet"
549
+ }
550
+ ],
551
+ "markdownDescription": "A list of glob patterns to override.\n\n## Example\n`[ \"*.test.ts\", \"*.spec.ts\" ]`"
552
+ },
553
+ "globals": {
554
+ "description": "Enabled or disabled specific global variables.",
555
+ "allOf": [
556
+ {
557
+ "$ref": "#/definitions/OxlintGlobals"
558
+ }
559
+ ],
560
+ "markdownDescription": "Enabled or disabled specific global variables."
561
+ },
562
+ "jsPlugins": {
563
+ "description": "JS plugins for this override, allows usage of ESLint plugins with Oxlint.\n\nRead more about JS plugins in\n[the docs](https://goatlint.dev/docs/guide/usage/linter/js-plugins.html).\n\nNote: JS plugins are in alpha and not subject to semver.",
564
+ "anyOf": [
565
+ {
566
+ "type": "null"
567
+ },
568
+ {
569
+ "type": "array",
570
+ "items": {
571
+ "$ref": "#/definitions/ExternalPluginEntry"
572
+ },
573
+ "uniqueItems": true
574
+ }
575
+ ],
576
+ "markdownDescription": "JS plugins for this override, allows usage of ESLint plugins with Oxlint.\n\nRead more about JS plugins in\n[the docs](https://goatlint.dev/docs/guide/usage/linter/js-plugins.html).\n\nNote: JS plugins are in alpha and not subject to semver."
577
+ },
578
+ "plugins": {
579
+ "description": "Optionally change what plugins are enabled for this override. When\nomitted, the base config's plugins are used.",
580
+ "default": null,
581
+ "allOf": [
582
+ {
583
+ "$ref": "#/definitions/LintPlugins"
584
+ }
585
+ ],
586
+ "markdownDescription": "Optionally change what plugins are enabled for this override. When\nomitted, the base config's plugins are used."
587
+ },
588
+ "rules": {
589
+ "default": {},
590
+ "allOf": [
591
+ {
592
+ "$ref": "#/definitions/OxlintRules"
593
+ }
594
+ ]
595
+ }
596
+ },
597
+ "additionalProperties": false
598
+ },
599
+ "OxlintOverrides": {
600
+ "type": "array",
601
+ "items": {
602
+ "$ref": "#/definitions/OxlintOverride"
603
+ }
604
+ },
605
+ "OxlintRules": {
606
+ "$ref": "#/definitions/DummyRuleMap"
607
+ },
608
+ "OxlintSettings": {
609
+ "title": "Oxlint Plugin Settings",
610
+ "description": "Configure the behavior of linter plugins.\n\nHere's an example if you're using Next.js in a monorepo:\n\n```json\n{\n\"settings\": {\n\"next\": {\n\"rootDir\": \"apps/dashboard/\"\n},\n\"react\": {\n\"linkComponents\": [\n{ \"name\": \"Link\", \"linkAttribute\": \"to\" }\n]\n},\n\"jsx-a11y\": {\n\"components\": {\n\"Link\": \"a\",\n\"Button\": \"button\"\n}\n}\n}\n}\n```",
611
+ "type": "object",
612
+ "properties": {
613
+ "jsdoc": {
614
+ "default": {
615
+ "ignorePrivate": false,
616
+ "ignoreInternal": false,
617
+ "ignoreReplacesDocs": true,
618
+ "overrideReplacesDocs": true,
619
+ "augmentsExtendsReplacesDocs": false,
620
+ "implementsReplacesDocs": false,
621
+ "exemptDestructuredRootsFromChecks": false,
622
+ "tagNamePreference": {}
623
+ },
624
+ "allOf": [
625
+ {
626
+ "$ref": "#/definitions/JSDocPluginSettings"
627
+ }
628
+ ]
629
+ },
630
+ "jsx-a11y": {
631
+ "default": {
632
+ "polymorphicPropName": null,
633
+ "components": {},
634
+ "attributes": {}
635
+ },
636
+ "allOf": [
637
+ {
638
+ "$ref": "#/definitions/JSXA11yPluginSettings"
639
+ }
640
+ ]
641
+ },
642
+ "next": {
643
+ "default": {
644
+ "rootDir": []
645
+ },
646
+ "allOf": [
647
+ {
648
+ "$ref": "#/definitions/NextPluginSettings"
649
+ }
650
+ ]
651
+ },
652
+ "react": {
653
+ "default": {
654
+ "formComponents": [],
655
+ "linkComponents": [],
656
+ "version": null,
657
+ "componentWrapperFunctions": []
658
+ },
659
+ "allOf": [
660
+ {
661
+ "$ref": "#/definitions/ReactPluginSettings"
662
+ }
663
+ ]
664
+ },
665
+ "vitest": {
666
+ "default": {
667
+ "typecheck": false
668
+ },
669
+ "allOf": [
670
+ {
671
+ "$ref": "#/definitions/VitestPluginSettings"
672
+ }
673
+ ]
674
+ }
675
+ },
676
+ "markdownDescription": "Configure the behavior of linter plugins.\n\nHere's an example if you're using Next.js in a monorepo:\n\n```json\n{\n\"settings\": {\n\"next\": {\n\"rootDir\": \"apps/dashboard/\"\n},\n\"react\": {\n\"linkComponents\": [\n{ \"name\": \"Link\", \"linkAttribute\": \"to\" }\n]\n},\n\"jsx-a11y\": {\n\"components\": {\n\"Link\": \"a\",\n\"Button\": \"button\"\n}\n}\n}\n}\n```"
677
+ },
678
+ "ReactPluginSettings": {
679
+ "description": "Configure React plugin rules.\n\nDerived from [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react#configuration-legacy-eslintrc-)",
680
+ "type": "object",
681
+ "properties": {
682
+ "componentWrapperFunctions": {
683
+ "description": "Functions that wrap React components and should be treated as HOCs.\n\nExample:\n\n```jsonc\n{\n\"settings\": {\n\"react\": {\n\"componentWrapperFunctions\": [\"observer\", \"withRouter\"]\n}\n}\n}\n```",
684
+ "default": [],
685
+ "type": "array",
686
+ "items": {
687
+ "type": "string"
688
+ },
689
+ "markdownDescription": "Functions that wrap React components and should be treated as HOCs.\n\nExample:\n\n```jsonc\n{\n\"settings\": {\n\"react\": {\n\"componentWrapperFunctions\": [\"observer\", \"withRouter\"]\n}\n}\n}\n```"
690
+ },
691
+ "formComponents": {
692
+ "description": "Components used as alternatives to `<form>` for forms, such as `<Formik>`.\n\nExample:\n\n```jsonc\n{\n\"settings\": {\n\"react\": {\n\"formComponents\": [\n\"CustomForm\",\n// OtherForm is considered a form component and has an endpoint attribute\n{ \"name\": \"OtherForm\", \"formAttribute\": \"endpoint\" },\n// allows specifying multiple properties if necessary\n{ \"name\": \"Form\", \"formAttribute\": [\"registerEndpoint\", \"loginEndpoint\"] }\n]\n}\n}\n}\n```",
693
+ "default": [],
694
+ "type": "array",
695
+ "items": {
696
+ "$ref": "#/definitions/CustomComponent"
697
+ },
698
+ "markdownDescription": "Components used as alternatives to `<form>` for forms, such as `<Formik>`.\n\nExample:\n\n```jsonc\n{\n\"settings\": {\n\"react\": {\n\"formComponents\": [\n\"CustomForm\",\n// OtherForm is considered a form component and has an endpoint attribute\n{ \"name\": \"OtherForm\", \"formAttribute\": \"endpoint\" },\n// allows specifying multiple properties if necessary\n{ \"name\": \"Form\", \"formAttribute\": [\"registerEndpoint\", \"loginEndpoint\"] }\n]\n}\n}\n}\n```"
699
+ },
700
+ "linkComponents": {
701
+ "description": "Components used as alternatives to `<a>` for linking, such as `<Link>`.\n\nExample:\n\n```jsonc\n{\n\"settings\": {\n\"react\": {\n\"linkComponents\": [\n\"HyperLink\",\n// Use `linkAttribute` for components that use a different prop name\n// than `href`.\n{ \"name\": \"MyLink\", \"linkAttribute\": \"to\" },\n// allows specifying multiple properties if necessary\n{ \"name\": \"Link\", \"linkAttribute\": [\"to\", \"href\"] }\n]\n}\n}\n}\n```",
702
+ "default": [],
703
+ "type": "array",
704
+ "items": {
705
+ "$ref": "#/definitions/CustomComponent"
706
+ },
707
+ "markdownDescription": "Components used as alternatives to `<a>` for linking, such as `<Link>`.\n\nExample:\n\n```jsonc\n{\n\"settings\": {\n\"react\": {\n\"linkComponents\": [\n\"HyperLink\",\n// Use `linkAttribute` for components that use a different prop name\n// than `href`.\n{ \"name\": \"MyLink\", \"linkAttribute\": \"to\" },\n// allows specifying multiple properties if necessary\n{ \"name\": \"Link\", \"linkAttribute\": [\"to\", \"href\"] }\n]\n}\n}\n}\n```"
708
+ },
709
+ "version": {
710
+ "description": "React version to use for version-specific rules.\n\nAccepts semver versions (e.g., \"18.2.0\", \"17.0\").\n\nExample:\n\n```jsonc\n{\n\"settings\": {\n\"react\": {\n\"version\": \"18.2.0\"\n}\n}\n}\n```",
711
+ "default": null,
712
+ "type": "string",
713
+ "pattern": "^[1-9]\\d*(\\.(0|[1-9]\\d*))?(\\.(0|[1-9]\\d*))?$",
714
+ "markdownDescription": "React version to use for version-specific rules.\n\nAccepts semver versions (e.g., \"18.2.0\", \"17.0\").\n\nExample:\n\n```jsonc\n{\n\"settings\": {\n\"react\": {\n\"version\": \"18.2.0\"\n}\n}\n}\n```"
715
+ }
716
+ },
717
+ "markdownDescription": "Configure React plugin rules.\n\nDerived from [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react#configuration-legacy-eslintrc-)"
718
+ },
719
+ "TagNamePreference": {
720
+ "anyOf": [
721
+ {
722
+ "type": "string"
723
+ },
724
+ {
725
+ "type": "object",
726
+ "required": [
727
+ "message",
728
+ "replacement"
729
+ ],
730
+ "properties": {
731
+ "message": {
732
+ "type": "string"
733
+ },
734
+ "replacement": {
735
+ "type": "string"
736
+ }
737
+ }
738
+ },
739
+ {
740
+ "type": "object",
741
+ "required": [
742
+ "message"
743
+ ],
744
+ "properties": {
745
+ "message": {
746
+ "type": "string"
747
+ }
748
+ }
749
+ },
750
+ {
751
+ "type": "boolean"
752
+ }
753
+ ]
754
+ },
755
+ "VitestPluginSettings": {
756
+ "description": "Configure Vitest plugin rules.\n\nSee [eslint-plugin-vitest](https://github.com/vitest-dev/eslint-plugin-vitest)'s\nconfiguration for a full reference.",
757
+ "type": "object",
758
+ "properties": {
759
+ "typecheck": {
760
+ "description": "Whether to enable typecheck mode for Vitest rules.\nWhen enabled, some rules will skip certain checks for describe blocks\nto accommodate TypeScript type checking scenarios.",
761
+ "default": false,
762
+ "type": "boolean",
763
+ "markdownDescription": "Whether to enable typecheck mode for Vitest rules.\nWhen enabled, some rules will skip certain checks for describe blocks\nto accommodate TypeScript type checking scenarios."
764
+ }
765
+ },
766
+ "markdownDescription": "Configure Vitest plugin rules.\n\nSee [eslint-plugin-vitest](https://github.com/vitest-dev/eslint-plugin-vitest)'s\nconfiguration for a full reference."
767
+ }
768
+ },
769
+ "markdownDescription": "Oxlint Configuration File\n\nThis configuration is aligned with ESLint v8's configuration schema (`eslintrc.json`).\n\nUsage: `goatlint -c goatlintrc.json`\n\nExample\n\n`.goatlintrc.json`\n\n```json\n{\n\"$schema\": \"./node_modules/goatlint/configuration_schema.json\",\n\"plugins\": [\"import\", \"typescript\", \"unicorn\"],\n\"env\": {\n\"browser\": true\n},\n\"globals\": {\n\"foo\": \"readonly\"\n},\n\"settings\": {\n\"react\": {\n\"version\": \"18.2.0\"\n},\n\"custom\": { \"option\": true }\n},\n\"rules\": {\n\"eqeqeq\": \"warn\",\n\"import/no-cycle\": \"error\",\n\"react/self-closing-comp\": [\"error\", { \"html\": false }]\n},\n\"overrides\": [\n{\n\"files\": [\"*.test.ts\", \"*.spec.ts\"],\n\"rules\": {\n\"@typescript-eslint/no-explicit-any\": \"off\"\n}\n}\n]\n}\n```\n\n`goatlint.config.ts`\n\n```ts\nimport { defineConfig } from \"goatlint\";\n\nexport default defineConfig({\nplugins: [\"import\", \"typescript\", \"unicorn\"],\nenv: {\n\"browser\": true\n},\nglobals: {\n\"foo\": \"readonly\"\n},\nsettings: {\nreact: {\nversion: \"18.2.0\"\n},\ncustom: { option: true }\n},\nrules: {\n\"eqeqeq\": \"warn\",\n\"import/no-cycle\": \"error\",\n\"react/self-closing-comp\": [\"error\", { \"html\": false }]\n},\noverrides: [\n{\nfiles: [\"*.test.ts\", \"*.spec.ts\"],\nrules: {\n\"@typescript-eslint/no-explicit-any\": \"off\"\n}\n}\n]\n});\n```"
770
+ }
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "goatlint",
3
+ "version": "1.59.0",
4
+ "description": "A fast JavaScript/TypeScript linter - fork of oxlint with additional rules",
5
+ "keywords": [
6
+ "eslint",
7
+ "javascript",
8
+ "linter",
9
+ "goat",
10
+ "goatlint",
11
+ "typescript"
12
+ ],
13
+ "homepage": "https://github.com/JustFly1984/oxc",
14
+ "bugs": "https://github.com/JustFly1984/oxc/issues",
15
+ "license": "MIT",
16
+ "author": "Alexey Lyakhov (fork of oxc by Boshen and contributors)",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/JustFly1984/oxc",
20
+ "directory": "npm/goatlint"
21
+ },
22
+ "bin": {
23
+ "goatlint": "bin/goatlint"
24
+ },
25
+ "files": [
26
+ "configuration_schema.json",
27
+ "dist",
28
+ "README.md",
29
+ "bin/goatlint"
30
+ ],
31
+ "type": "module",
32
+ "main": "dist/index.js",
33
+ "types": "dist/index.d.ts",
34
+ "exports": {
35
+ ".": {
36
+ "types": "./dist/index.d.ts",
37
+ "default": "./dist/index.js"
38
+ },
39
+ "./plugins-dev": {
40
+ "types": "./dist/plugins-dev.d.ts",
41
+ "default": "./dist/plugins-dev.js"
42
+ },
43
+ "./package.json": "./package.json"
44
+ },
45
+ "peerDependencies": {},
46
+ "peerDependenciesMeta": {},
47
+ "napi": {
48
+ "binaryName": "goatlint",
49
+ "packageName": "@goatlint/binding",
50
+ "targets": [
51
+ "aarch64-apple-darwin",
52
+ "x86_64-apple-darwin"
53
+ ]
54
+ },
55
+ "scripts": {
56
+ "prepublishOnly": "cd ../../apps/goatlint && bun run build",
57
+ "pub": "bun publish .",
58
+ "pub:next": "bun publish . --tag next"
59
+ },
60
+ "publishConfig": {
61
+ "access": "public"
62
+ },
63
+ "engines": {
64
+ "node": "^20.19.0 || >=22.12.0"
65
+ },
66
+ "preferUnplugged": true
67
+ }