◆ Stream 対応とか余計な機能がついてるのばかり
◆ 文字列渡すとを二重配列が返ってくるだけのシンプルで最小なものがほしい

ときどき使うことになる CSV フォーマットですが 求めてるライブラリが意外とありませんでした

JavaScript 上のデータを CSV 化するなら簡単です
単に配列を 「,」 や改行で join するだけです
文字列内に 「,」 があれば 「"」 を 「""」 に置換してから 「"」 で囲むだけです
その場で数行でさっと書けます

ですがパースになるともう少し面倒です
数値データのみなど 「"」 やエスケープがない前提のデータなら split するだけなので CSV 化と同じ程度に簡単です
しかし 「"」 やエスケープが入ってくると ちょっと時間がかかります
なので適当なライブラリを npm から入れればいいかなと思って探したのですが これといったのが見つかりません

有名どころは必要ない機能を入れすぎて規模が大きいんです
ほしいのは文字列を渡したら 2 重配列になって返ってくる それだけでいいんです
コードも 100 行もいらないようなものです
しかし 実際には Stream 対応とか言って API も複雑になっていたりするのが多いです
それにほとんどが Node.js 向けです
使うのはブラウザで textarea にある文字列をパースする程度の用途です
Node.js 用だと作りによっては動かないですし 動いても polyfill が追加されてさらにサイズが大きくなります

API 的には求めてるようなシンプルなものでも 実際には Stream 対応の高機能ライブラリをラップしてる作りだったというのもありました
最小限のライブラリはないものでしょうか
一応 npm はライブラリ数は多いので下の方まで見ていくと 完全に無いというわけではありません
ただ週間ダウンロード数はほぼ無いに等しく bot のアクセスくらいというものです
本人も作るだけ作って満足して放置してるようなものでしょう
私もよくわからないものを勢いで作ってみてはそのまま放置してるものが山程あるので気持ちわかります
最小限の CSV パーサなら脆弱性が見つかるとかもないでしょうし 仕様も変わらないなら放置でいいかもしれませんが 使用者が全くいないものだとちゃんと動くかも不安です
こうして結局自作になるんですよね

今までも何度か作ったことはありますが 何のときに作ったかも覚えてないので探す手間もあるので 結局作りました
未だに正規表現を頑張るのと for-of で文字列一文字ずつ処理するので どっちのほうが速い(実装速度+実行速度)かはっきりしません
ただどっちにしても実行速度については 余計な機能はないのでどっちで作っても高機能系の速度重視よりは十分速いはずです
ですが fastify のときのように 謎技術で高機能なのに最小限のはずの作りよりも速いとかがある可能性が無いとは言えないので一応比較してみました

とりあえず対象は名前的にも fast がついていて速度重視そうでダウンロード数もそれなりにある fast-csv にしました
ブラウザ用にビルドするのは手間がかかりそうなので Node.js で比較します
対象の CSV は 「各セルに 1 文字の 100 列 × 1000 行」 のデータにしました
結果は fast-csv は 90ms くらいで自作は 15ms くらいでした
まぁそんなものでしょう
機能の多さ以外にも 使い方の時点で fast-csv は Stream 的な API で 行ごとに関数が呼び出されますし仕方ないところです
https://c2fo.github.io/fast-csv/docs/parsing/methods#parsestring