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

jtcsv-codemod

v0.1.1

Published

jscodeshift transforms for migrating to jtcsv from papaparse, csvtojson, csv-parser, and similar libraries

Readme

jtcsv-codemod

jscodeshift transforms that migrate existing CSV-handling code to jtcsv.

npx jtcsv-codemod papaparse "src/**/*.{js,ts,tsx}"

Available transforms

| Transform | From | What it rewrites | |-------------|---------------|------------------------------------------------------| | papaparse | papaparse | imports, Papa.parse, Papa.unparse, option names |

More transforms (csvtojson, csv-parser) are planned — open an issue or PR with a code sample if you'd like one.

papaparse → jtcsv

Imports

- import Papa from 'papaparse';
+ import { csvToJson, jsonToCsv } from 'jtcsv';
- const Papa = require('papaparse');
+ const { csvToJson, jsonToCsv } = require('jtcsv');

Calls and option renames

- Papa.parse(csv, { header: true, dynamicTyping: true })
+ csvToJson(csv, { hasHeaders: true, parseNumbers: true })
- Papa.unparse(rows, { delimiter: ';' })
+ jsonToCsv(rows, { delimiter: ';' })
- const rows = Papa.parse(csv).data;
+ const rows = csvToJson(csv);

| Papa option | jtcsv option | Notes | |-------------------|--------------------|--------------------------------------| | header | hasHeaders | | | dynamicTyping | parseNumbers | | | delimiter | delimiter | unchanged | | newline | newline | unchanged | | quoteChar | quoteChar | unchanged | | escapeChar | escapeChar | unchanged | | comments | comments | unchanged | | skipEmptyLines | skipEmptyLines | unchanged |

Dropped options

These have no jtcsv equivalent and are stripped, with a // TODO(jtcsv-codemod): … comment left at the call site so you can review:

worker, download, fastMode, beforeFirstChunk, transformHeader, preview, encoding, chunk, step, complete, error.

If you used step/complete for streaming, switch to:

import { createCsvToJsonStream } from 'jtcsv';
import { createReadStream } from 'fs';

await createReadStream('big.csv')
  .pipe(createCsvToJsonStream({ hasHeaders: true, parseNumbers: true }))
  .on('data', (row) => { /* per-row logic that used to live in step() */ });

CLI flags

The CLI is a thin wrapper around jscodeshift. Anything after -- is passed straight through:

# dry-run (no writes, prints diff)
npx jtcsv-codemod papaparse src/ -- --dry --print

# only .ts and .tsx files
npx jtcsv-codemod papaparse src/ -- --extensions=ts,tsx

Limitations

  • Streaming patterns (Papa.parse(file, { step })) are flagged but not rewritten end-to-end — the manual switch is short, see above.
  • Web Workers (Papa.parse(file, { worker: true })) require deciding between jtcsv/web-workers and Node worker_threads; we don't guess.
  • Comment placement varies slightly by jscodeshift version; review the diff before committing.

Contributing

Source: transforms/papaparse-to-jtcsv.js. Tests: __tests__/papaparse-to-jtcsv.test.js (jscodeshift's applyTransform helper).

PRs welcome.