npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

eslint-plugin-astige

v0.0.37

Published

Anthony Astige's eslint base with custom rules

Downloads

64

Readme

eslint-plugin-astige

My personal ESLint plugin collection containing multiple focused plugins with recommended configurations.

Installation

npm install eslint-plugin-astige --save-dev
npx eslint-plugin-astige-init

Usage (eslint.config.ts)

Assuming you're using ESLint's new flat config system and have TypeScript support, you can add the auto plugin collection to your ESLint configuration and optionally customize:

import { type FlatConfig } from "@typescript-eslint/utils/dist/ts-eslint";
import * as astige from "eslint-plugin-astige";

const config: FlatConfig.Config[] = [
  // Get all the recommended configs
  ...astige.auto,
  // Optionally: Take or override specific plugin rules
  {
    plugins: {
      "astige-javascript": astige.plugins.javascript,
    },
    rules: {
      "astige-javascript/no-tsx-without-jsx": "warn",
      "astige-javascript/fta-complexity-needs-improvement": [
        "error",
        { "when-above": 66 },
      ],
    },
  },
];

export default config;

Plugins

📏 Contains Custom Rules

Guiding Principles

This extremely opinionated preset is designed with these key principles:

  1. One Right Way: The config is intentionally strict and opinionated to encourage consistency across all projects. There should be minimal ambiguity about how code should be written. This is still JavaScript/TypeScript though, so there will be inherent flexibility.
  2. Formatters First: Linters are not formatters and are inherently slower. We rely on formatters for whatever they can do, and minimize the formatting work we have ESLint do.
  3. TypeScript Best Practices: Fully embrace TypeScript's type system and idioms, following TypeScript conventions and best practices wherever practical.
  4. Fast: Any included rules should be fast enough to run across entire codebases with hundreds of files in seconds, and on individual files within milliseconds for complete analysis and editor integration.
  5. LLM-Friendly Code: The rules are optimized for code that is easily processed and understood by large language models (LLMs), emphasizing clear and explicit code patterns with minimal use of complex or ambiguous syntax. The code maintains consistent formatting and structure while being modular and concise for better context window management. This results in consistent, predictable code patterns that are easy to parse, simple to extend, and clear in intent.
  6. Technology Foundations: The preset is built around a carefully curated set of core technologies that provide a stable development foundation. Current primary influences include:
    1. dprint
    2. TypeScript
    3. Canonical ESLint Config
    4. T3 stack
      1. Next.js (built on React)
      2. PostgreSQL (accessed via Prisma)
      3. tRPC (typesafe via Zod)
      4. Tailwind
    5. Aider
  7. Custom Rules When Necessary: While I prioritize leveraging existing ESLint rules to maintain consistency and development speed, I'm willing to create custom rules when needed to enforce my guiding principles and address specific needs.
  8. Multiple Sub-Plugins: The plugin is structured as a collection of sub-plugins in a single repository to enable logical grouping by usage, modular rule adoption, and a single source of truth for all shared ESLint configurations. This approach simplifies dependency management, versioning, and coding of multiple plugins while enabling focused development and testing of specific rule sets.

The plugins

📏 Contains Custom Rules

Tightly Coupled Non-ESLint Configurations

These base configurations are included and installed with npx eslint-plugin-astige-init. They help reduce conflicts and duplication with ESLint rules:

  • dprint.base.json: Handles code formatting to minimize ESLint formatting rules
  • tsconfig.base.json: Manages TypeScript compiler options to reduce overlap with ESLint rules

Contributing

While this is primarily my personal preset, I welcome suggestions and discussions about the rules. Please open an issue to start a conversation.

License

ISC

Related