{"id":17720,"library":"istanbul-middleware-ts","title":"Istanbul Middleware for TypeScript","description":"istanbul-middleware-ts is a TypeScript-first middleware designed for integrating Istanbul code coverage reporting into Node.js applications, primarily with Express.js. It provides HTTP endpoints to collect, reset, merge, report, and download code coverage data. The package is currently at version 1.1.4, indicating active maintenance with several recent minor releases, and offers complete TypeScript support with type definitions. Its release cadence appears to be driven by feature additions and bug fixes within the 1.x series. A key differentiator is its modern TypeScript implementation that is compatible with the API of the original `istanbul-middleware`, making it a drop-in replacement for users seeking enhanced type safety and up-to-date Node.js practices. It offers robust functionality for CI/CD pipelines and local development environments by enabling dynamic coverage data management, HTML report generation, and LCOV/ZIP package downloads, alongside features like differential coverage reporting against git targets.","status":"active","version":"1.1.4","language":"javascript","source_language":"en","source_url":"https://github.com/129tyc/istanbul-middleware-ts","tags":["javascript","istanbul","coverage","middleware","typescript","express","testing","code-coverage","nodejs"],"install":[{"cmd":"npm install istanbul-middleware-ts","lang":"bash","label":"npm"},{"cmd":"yarn add istanbul-middleware-ts","lang":"bash","label":"yarn"},{"cmd":"pnpm add istanbul-middleware-ts","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required for middleware integration with Express.js applications.","package":"express","optional":false},{"reason":"Required for differential coverage reports if `diffTarget` option is configured and `enableDiffCoverage` is true.","package":"diff-cover","optional":true}],"imports":[{"note":"Primary export for middleware creation, typically used with Express.js `app.use()`.","wrong":"const { createHandler } = require('istanbul-middleware-ts');","symbol":"createHandler","correct":"import { createHandler } from 'istanbul-middleware-ts';"},{"note":"Use for programmatic access to the current collected Istanbul coverage data object.","wrong":"const { getCoverageObject } = require('istanbul-middleware-ts');","symbol":"getCoverageObject","correct":"import { getCoverageObject } from 'istanbul-middleware-ts';"},{"note":"Use for programmatic resetting of the coverage data collected by the middleware.","wrong":"const { resetCoverage } = require('istanbul-middleware-ts');","symbol":"resetCoverage","correct":"import { resetCoverage } from 'istanbul-middleware-ts';"}],"quickstart":{"code":"import express from \"express\";\nimport { createHandler } from \"istanbul-middleware-ts\";\n\nconst app = express();\n\n// Add Istanbul middleware\napp.use(\n  \"/coverage\",\n  createHandler({\n    resetOnGet: true // Allow GET requests to reset coverage\n  })\n);\n\napp.listen(3000, () => {\n  console.log(\"Server running on http://localhost:3000\");\n  console.log(\"Coverage available at http://localhost:3000/coverage\");\n});","lang":"typescript","description":"This example sets up an Express.js server with the Istanbul middleware, making coverage reports and data available at the `/coverage` endpoint, and enabling GET requests to reset coverage."},"warnings":[{"fix":"Pass `{ resetOnGet: true }` to the `createHandler` options to enable `GET /reset` functionality.","message":"The `/reset` endpoint accessible via GET requests is disabled by default for security reasons and to prevent accidental data loss. It must be explicitly enabled.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Install `diff-cover` (e.g., `pip install diff-cover`) and configure the `diffTarget` option in the `createHandler` options to a branch, commit, or tag.","message":"Differential coverage functionality (GET /diff, GET /diff/info) requires the Python `diff-cover` package to be installed globally or available in the system's PATH, and the `diffTarget` option to be configured.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-23T00:00:00.000Z","next_check":"2026-07-22T00:00:00.000Z","problems":[{"fix":"Install Express.js and its type definitions: `npm install express @types/express`","cause":"Express.js is a peer dependency and must be installed separately by your project.","error":"Cannot find module 'express' or its corresponding type declarations."},{"fix":"Ensure `app` is an instance of `express()` before calling `app.use()`.","cause":"Attempting to use the `istanbul-middleware-ts` handler without a valid Express application instance.","error":"TypeError: app.use is not a function"},{"fix":"Use ES module import syntax: `import { createHandler } from 'istanbul-middleware-ts';`","cause":"Using CommonJS `require` syntax in a TypeScript or ES Module project (e.g., `package.json` `\"type\": \"module\"` or `.mjs` files).","error":"ReferenceError: require is not defined in ES module scope"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}