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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cosyte/eslint-config

v0.1.0

Published

Shared ESLint flat config (ESLint 10 + typescript-eslint) for @cosyte/* packages.

Readme

@cosyte/eslint-config

The cosyte lint bar in one factory call: no any, no undocumented public export, no drift.

npm version CI License: MIT Node

Shared ESLint flat config (ESLint 10 + typescript-eslint) for @cosyte/* packages.

Why this exists

A healthcare parser's lint rules are not style preferences. no-explicit-any and the cast rules are what keep a claim about a field's type from being a guess, and a JSDoc gate on public exports is what keeps a published API from shipping undocumented. Copied per repository, those rules get relaxed locally to unblock a release and stay relaxed.

The nearest alternative is eslint-config-airbnb or a hand-rolled flat config per repo. Neither encodes the cosyte rules, and neither closes the drift: this is a published package, so a rule added here reaches every consumer as a version bump.

Status

@cosyte/eslint-config is on the cosyte 0.1.x line: the public API is settled and bump types follow ordinary semver.

The factory signature cosyte(tsconfigRootDir, opts?) is settling, but the RULE SET behind it is not: rules are added as the parsers find gaps, and a version bump can therefore red a consumer that was passing. Pin an exact version if you need a lint run to stay green across an install.

Install

pnpm add -D @cosyte/eslint-config eslint typescript

eslint (^9 or ^10) and typescript are peer dependencies. Node >=22.14. ESM only.

Usage

eslint.config.js exports the array the factory returns:

import cosyte from "@cosyte/eslint-config";

const config = cosyte(import.meta.dirname);
Array.isArray(config); // => true

The argument is tsconfigRootDir: the directory holding the tsconfig.json the type-checked rules resolve against, which is why import.meta.dirname is the normal value. Lint at --max-warnings=0, which is what every @cosyte/* repo's lint script passes.

Entry points

| entry point | what it is | | ----------------------- | -------------------------------------------------------------------------------- | | @cosyte/eslint-config | the default export cosyte(tsconfigRootDir, opts?), a flat-config array factory |

One entry point, so @cosyte/eslint-config is the only specifier a consumer ever writes.

Overrides

The second argument is the whole override surface: opts.ignores appends ignore globs, opts.files replaces which globs the type-checked rules apply to, and opts.library drops the JSDoc, @example and no-console gates for an application. The API below states each one's default.

Every type-safety rule (no any, no unjustified casts, exhaustiveness, strict imports) stays on either way. An application has no published API surface to document and legitimately logs; it has no licence to be less type-safe, so that half is not reachable through opts at all. Appending your own config object after the factory's array is ESLint's own escape hatch and nothing here can stop it, but a rule switched off that way is switched off in one repo while every sibling still enforces it. Change it here and take a version bump instead.

PHI and safety

This package is lint configuration. It reads source files to check them and never executes them, and it sees no patient data: nothing here logs, retains or transmits anything.

The rules do carry a safety intent worth naming. no-console in library code is not tidiness, it is what keeps a parser from printing a field it was handed, and the type-safety rules are what keep a PHI-bearing field from being cast into something the compiler stops checking. The gate that actually scans for patient data is @cosyte/script-utils/phi-scan, not this package.

API

The factory is cosyte(tsconfigRootDir, opts?):

  • opts.ignores: extra ignore globs.
  • opts.files: override which globs the type-checked rules apply to (defaults to src / test / scripts / *.config.ts).
  • opts.library: defaults to true. Set false for an application (for example a service or engine) to drop the JSDoc and @example gate and no-console. Every type-safety rule (no any, no unjustified casts, exhaustiveness, strict imports) stays on either way: apps just have no published API surface to document and legitimately log.
// An application: same type safety, no doc/console gate.
export default cosyte(import.meta.dirname, { library: false });

Compatibility

ESLint 10 flat config, built on the unified typescript-eslint package at recommendedTypeChecked, so type-aware linting needs a real tsconfig and the tsconfigRootDir the factory takes. Tests and build scripts relax the JSDoc and console rules. eslint-config-prettier is applied last, so formatting stays Prettier's job and no rule here fights it.

Contributing

Questions, bug reports and proposals go to the issue tracker. Pull requests are welcome, in cosyte/config, where this package lives.

A change has to clear the required verify job, and a new rule needs a changeset saying what it refuses: adding one reds every consumer that was passing without it.

License

MIT, copyright Cosyte. See LICENSE.