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

@zeno-lib/typescript

v1.0.0

Published

This package provides shared TypeScript configurations for the monorepo, with progressive levels of strictness and framework-specific settings.

Readme

TypeScript Configuration

This package provides shared TypeScript configurations for the monorepo, with progressive levels of strictness and framework-specific settings.

Configurations

base.json

The foundation configuration with modern ESM features and sensible defaults.

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "compilerOptions": {
    // Enable top-level await, and other modern ESM features.
    "target": "ES6",
    "module": "ESNext",    
    // Enable module resolution without file extensions on relative paths, for things like npm package imports.
    "moduleResolution": "Bundler",    
    // Allow importing TypeScript files using their native extension (.ts(x)).
    "allowImportingTsExtensions": true,    
    // Enable JSON imports.
    "resolveJsonModule": true,    
    // Enforce the usage of type-only imports when needed, which helps avoiding bundling issues.
    "verbatimModuleSyntax": true,    
    // Speed up compilation by saving information about the project graph from the last compilation
    "incremental": true,    
    // Ensure that each file can be transpiled without relying on other imports.
    // This is redundant with the previous option, however it ensures that it's on even if someone disable `verbatimModuleSyntax`
    "isolatedModules": true,    
    // Astro directly run TypeScript code, no transpilation needed.
    "noEmit": true,    
    // Report an error when importing a file using a casing different from another import of the same file.
    "forceConsistentCasingInFileNames": true,    
    // Properly support importing CJS modules in ESM
    "esModuleInterop": true,    
    // Skip typechecking libraries and .d.ts files
    "skipLibCheck": true,    
    // Allow JavaScript files to be imported
    "allowJs": true
  }
}

strict.json

Extends base.json with strict type checking enabled.

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "extends": "./base.json",
  "compilerOptions": {
    // Enable strict mode. This enables a few options at a time, see https://www.typescriptlang.org/tsconfig#strict for a list.
    "strict": true
  }
}

strictest.json

Extends strict.json with the most stringent rules for maximum type safety.

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "extends": "./strict.json",
  "compilerOptions": {
    // Report errors for fallthrough cases in switch statements
    "noFallthroughCasesInSwitch": true,    
    // Force functions designed to override their parent class to be specified as `override`.
    "noImplicitOverride": true,    
    // Force functions to specify that they can return `undefined` if a possible code path does not return a value.
    "noImplicitReturns": true,    
    // Report an error when a variable is declared but never used.
    "noUnusedLocals": true,    
    // Report an error when a parameter is declared but never used.
    "noUnusedParameters": true,    
    // Force the usage of the indexed syntax to access fields declared using an index signature.
    "noUncheckedIndexedAccess": true,    
    // Report an error when the value `undefined` is given to an optional property that doesn't specify `undefined` as a valid value.
    // "exactOptionalPropertyTypes": true,    
    // Report an error for unreachable code instead of just a warning.
    "allowUnreachableCode": false,    
    // Report an error for unused labels instead of just a warning.
    "allowUnusedLabels": false
  }
}

react.json

Extends strictest.json with React-specific configurations.

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "extends": "./strictest.json",
  "compilerOptions": {
    // Allow JSX files (or files that are internally considered JSX, like Astro files) to be imported inside `.js` and `.ts` files.
    "jsx": "preserve",    
    // React needed libs
    "lib": ["dom", "dom.iterable", "esnext"]
  }
}

nextjs.json

Extends react.json with Next.js-specific configurations.

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "extends": "./react.json",
  "compilerOptions": {
    // Uncomment and configure these if you need custom path mapping:
    // "baseUrl": "${configDir}",
    // "paths": {
    //   "@/*": ["${configDir}/*"]
    // },
    "plugins": [{ "name": "next" }]
  },
  "include": [
    "${configDir}/next-env.d.ts",
    "${configDir}/.next/types/**/*.ts",
    "${configDir}/**/*.ts",
    "${configDir}/**/*.tsx"
  ]
}

Usage

Choose the appropriate configuration based on your needs:

  • base.json: For basic TypeScript projects with modern ESM support
  • strict.json: For projects that want strict type checking
  • strictest.json: For projects that want maximum type safety (recommended)
  • react.json: For React applications
  • nextjs.json: For Next.js applications

Example

In your project's tsconfig.json:

{
  "extends": "@zeno-lib/typescript/nextjs.json",
  "compilerOptions": {
    // Your project-specific overrides
  },
  "include": [
    // Your project-specific includes
  ]
}

Configuration Hierarchy

base.json
└── strict.json
    └── strictest.json
        └── react.json
            └── nextjs.json