Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/aurelienbobenrieth/gadget/llms.txt

Use this file to discover all available pages before exploring further.

The ESLint plugin requires ESLint v9+ (flat config) and Node 18+. It includes peer dependencies for TypeScript ESLint utilities.

Install with package managers

pnpm add -D @aurelienbbn/eslint-plugin-gadget eslint @typescript-eslint/utils

Peer dependencies

The plugin requires the following peer dependencies:
PackageVersionPurpose
eslint>=9.0.0ESLint flat config support
@typescript-eslint/utils>=8.0.0TypeScript AST utilities for rule logic
The plugin works with both JavaScript and TypeScript Gadget action files. You do not need to install @typescript-eslint/parser unless you are using other TypeScript-specific ESLint rules.

Verify installation

Check that the plugin is available:
node -e "console.log(require('@aurelienbbn/eslint-plugin-gadget').meta)"
Expected output:
{
  "name": "eslint-plugin-gadget",
  "version": "0.0.1"
}

Minimal config

Create eslint.config.js in your project root:
eslint.config.js
import gadget from "@aurelienbbn/eslint-plugin-gadget";

export default [gadget.configs.recommended];
This enables all 16 rules with recommended severity levels (mix of error and warn).

Run ESLint

Lint your Gadget action files:
npx eslint "api/actions/**/*.{js,ts}" "api/models/**/actions/**/*.{js,ts}"
The plugin only activates rules on files matching Gadget action patterns:
  • **/api/actions/**/*.{js,ts} (global actions)
  • **/api/models/**/actions/**/*.{js,ts} (model actions)
The two enqueue rules (action-no-enqueue-max-concurrency-exceeded and action-no-implicit-enqueue-retries) apply to all files since api.enqueue() can be called anywhere.

Auto-fix issues

Many rules support auto-fixing:
npx eslint --fix "api/actions/**/*.{js,ts}"
Fixable rules include:
  • action-no-invalid-options - removes numeric separators, converts template literals to strings
  • action-no-invalid-timeout-ms - clamps timeout to 900000ms
  • action-require-timeout-ms-comment - adds trailing // N minutes comment
  • action-no-empty-on-success - removes empty onSuccess exports
  • action-require-action-run-type - adds ActionRun type annotations
See Configuration for advanced setup options.

Local development

If you are contributing to the plugin or testing unreleased changes, you can link it locally.
# In the monorepo
pnpm run build
cd packages/eslint-plugin-gadget
pnpm link --global

# In your project
pnpm link --global @aurelienbbn/eslint-plugin-gadget
Re-run pnpm run build after making changes.

Using pnpm pack

# In the monorepo
pnpm run build
cd packages/eslint-plugin-gadget
pnpm pack

# In your project
pnpm add -D ./path/to/aurelienbbn-eslint-plugin-gadget-0.0.1.tgz

Next steps

Configuration

Learn about file patterns and customizing rules

Configs

Compare recommended vs strict presets

Build docs developers (and LLMs) love