jtcsv 2.2.8 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/README.md +204 -115
  2. package/bin/jtcsv.ts +2612 -0
  3. package/browser.d.ts +142 -0
  4. package/dist/benchmark.js +446 -0
  5. package/dist/benchmark.js.map +1 -0
  6. package/dist/bin/jtcsv.js +1940 -0
  7. package/dist/bin/jtcsv.js.map +1 -0
  8. package/dist/csv-to-json.js +1262 -0
  9. package/dist/csv-to-json.js.map +1 -0
  10. package/dist/errors.js +291 -0
  11. package/dist/errors.js.map +1 -0
  12. package/dist/eslint.config.js +147 -0
  13. package/dist/eslint.config.js.map +1 -0
  14. package/dist/index-core.js +95 -0
  15. package/dist/index-core.js.map +1 -0
  16. package/dist/index.js +93 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/json-save.js +229 -0
  19. package/dist/json-save.js.map +1 -0
  20. package/dist/json-to-csv.js +576 -0
  21. package/dist/json-to-csv.js.map +1 -0
  22. package/dist/jtcsv-core.cjs.js +1736 -0
  23. package/dist/jtcsv-core.cjs.js.map +1 -0
  24. package/dist/jtcsv-core.esm.js +1708 -0
  25. package/dist/jtcsv-core.esm.js.map +1 -0
  26. package/dist/jtcsv-core.umd.js +1742 -0
  27. package/dist/jtcsv-core.umd.js.map +1 -0
  28. package/dist/jtcsv-full.cjs.js +2241 -0
  29. package/dist/jtcsv-full.cjs.js.map +1 -0
  30. package/dist/jtcsv-full.esm.js +2209 -0
  31. package/dist/jtcsv-full.esm.js.map +1 -0
  32. package/dist/jtcsv-full.umd.js +2247 -0
  33. package/dist/jtcsv-full.umd.js.map +1 -0
  34. package/dist/jtcsv-workers.esm.js +768 -0
  35. package/dist/jtcsv-workers.esm.js.map +1 -0
  36. package/dist/jtcsv-workers.umd.js +782 -0
  37. package/dist/jtcsv-workers.umd.js.map +1 -0
  38. package/dist/jtcsv.cjs.js +1996 -2048
  39. package/dist/jtcsv.cjs.js.map +1 -1
  40. package/dist/jtcsv.esm.js +1992 -2048
  41. package/dist/jtcsv.esm.js.map +1 -1
  42. package/dist/jtcsv.umd.js +2157 -2209
  43. package/dist/jtcsv.umd.js.map +1 -1
  44. package/dist/plugins/express-middleware/index.js +350 -0
  45. package/dist/plugins/express-middleware/index.js.map +1 -0
  46. package/dist/plugins/fastify-plugin/index.js +315 -0
  47. package/dist/plugins/fastify-plugin/index.js.map +1 -0
  48. package/dist/plugins/hono/index.js +111 -0
  49. package/dist/plugins/hono/index.js.map +1 -0
  50. package/dist/plugins/nestjs/index.js +112 -0
  51. package/dist/plugins/nestjs/index.js.map +1 -0
  52. package/dist/plugins/nuxt/index.js +53 -0
  53. package/dist/plugins/nuxt/index.js.map +1 -0
  54. package/dist/plugins/remix/index.js +133 -0
  55. package/dist/plugins/remix/index.js.map +1 -0
  56. package/dist/plugins/sveltekit/index.js +155 -0
  57. package/dist/plugins/sveltekit/index.js.map +1 -0
  58. package/dist/plugins/trpc/index.js +136 -0
  59. package/dist/plugins/trpc/index.js.map +1 -0
  60. package/dist/run-demo.js +49 -0
  61. package/dist/run-demo.js.map +1 -0
  62. package/dist/src/browser/browser-functions.js +193 -0
  63. package/dist/src/browser/browser-functions.js.map +1 -0
  64. package/dist/src/browser/core.js +123 -0
  65. package/dist/src/browser/core.js.map +1 -0
  66. package/dist/src/browser/csv-to-json-browser.js +353 -0
  67. package/dist/src/browser/csv-to-json-browser.js.map +1 -0
  68. package/dist/src/browser/errors-browser.js +219 -0
  69. package/dist/src/browser/errors-browser.js.map +1 -0
  70. package/dist/src/browser/extensions/plugins.js +106 -0
  71. package/dist/src/browser/extensions/plugins.js.map +1 -0
  72. package/dist/src/browser/extensions/workers.js +66 -0
  73. package/dist/src/browser/extensions/workers.js.map +1 -0
  74. package/dist/src/browser/index.js +140 -0
  75. package/dist/src/browser/index.js.map +1 -0
  76. package/dist/src/browser/json-to-csv-browser.js +225 -0
  77. package/dist/src/browser/json-to-csv-browser.js.map +1 -0
  78. package/dist/src/browser/streams.js +340 -0
  79. package/dist/src/browser/streams.js.map +1 -0
  80. package/dist/src/browser/workers/csv-parser.worker.js +264 -0
  81. package/dist/src/browser/workers/csv-parser.worker.js.map +1 -0
  82. package/dist/src/browser/workers/worker-pool.js +338 -0
  83. package/dist/src/browser/workers/worker-pool.js.map +1 -0
  84. package/dist/src/core/delimiter-cache.js +196 -0
  85. package/dist/src/core/delimiter-cache.js.map +1 -0
  86. package/dist/src/core/node-optimizations.js +279 -0
  87. package/dist/src/core/node-optimizations.js.map +1 -0
  88. package/dist/src/core/plugin-system.js +399 -0
  89. package/dist/src/core/plugin-system.js.map +1 -0
  90. package/dist/src/core/transform-hooks.js +348 -0
  91. package/dist/src/core/transform-hooks.js.map +1 -0
  92. package/dist/src/engines/fast-path-engine-new.js +262 -0
  93. package/dist/src/engines/fast-path-engine-new.js.map +1 -0
  94. package/dist/src/engines/fast-path-engine.js +671 -0
  95. package/dist/src/engines/fast-path-engine.js.map +1 -0
  96. package/dist/src/errors.js +18 -0
  97. package/dist/src/errors.js.map +1 -0
  98. package/dist/src/formats/ndjson-parser.js +332 -0
  99. package/dist/src/formats/ndjson-parser.js.map +1 -0
  100. package/dist/src/formats/tsv-parser.js +230 -0
  101. package/dist/src/formats/tsv-parser.js.map +1 -0
  102. package/dist/src/index-with-plugins.js +259 -0
  103. package/dist/src/index-with-plugins.js.map +1 -0
  104. package/dist/src/types/index.js +3 -0
  105. package/dist/src/types/index.js.map +1 -0
  106. package/dist/src/utils/bom-utils.js +267 -0
  107. package/dist/src/utils/bom-utils.js.map +1 -0
  108. package/dist/src/utils/encoding-support.js +77 -0
  109. package/dist/src/utils/encoding-support.js.map +1 -0
  110. package/dist/src/utils/schema-validator.js +609 -0
  111. package/dist/src/utils/schema-validator.js.map +1 -0
  112. package/dist/src/utils/transform-loader.js +281 -0
  113. package/dist/src/utils/transform-loader.js.map +1 -0
  114. package/dist/src/utils/validators.js +40 -0
  115. package/dist/src/utils/validators.js.map +1 -0
  116. package/dist/src/utils/zod-adapter.js +144 -0
  117. package/dist/src/utils/zod-adapter.js.map +1 -0
  118. package/dist/src/web-server/index.js +648 -0
  119. package/dist/src/web-server/index.js.map +1 -0
  120. package/dist/src/workers/csv-multithreaded.js +211 -0
  121. package/dist/src/workers/csv-multithreaded.js.map +1 -0
  122. package/dist/src/workers/csv-parser.worker.js +179 -0
  123. package/dist/src/workers/csv-parser.worker.js.map +1 -0
  124. package/dist/src/workers/worker-pool.js +228 -0
  125. package/dist/src/workers/worker-pool.js.map +1 -0
  126. package/dist/stream-csv-to-json.js +665 -0
  127. package/dist/stream-csv-to-json.js.map +1 -0
  128. package/dist/stream-json-to-csv.js +389 -0
  129. package/dist/stream-json-to-csv.js.map +1 -0
  130. package/examples/advanced/conditional-transformations.ts +446 -0
  131. package/examples/advanced/csv-parser.worker.ts +89 -0
  132. package/examples/advanced/nested-objects-example.ts +306 -0
  133. package/examples/advanced/performance-optimization.ts +504 -0
  134. package/examples/advanced/run-demo-server.ts +116 -0
  135. package/examples/advanced/web-worker-usage.html +874 -0
  136. package/examples/async-multithreaded-example.ts +335 -0
  137. package/examples/cli-advanced-usage.md +290 -0
  138. package/examples/{cli-batch-processing.js → cli-batch-processing.ts} +38 -38
  139. package/examples/{cli-tool.js → cli-tool.ts} +5 -8
  140. package/examples/{error-handling.js → error-handling.ts} +356 -324
  141. package/examples/{express-api.js → express-api.ts} +161 -164
  142. package/examples/{large-dataset-example.js → large-dataset-example.ts} +201 -182
  143. package/examples/{ndjson-processing.js → ndjson-processing.ts} +456 -434
  144. package/examples/{plugin-excel-exporter.js → plugin-excel-exporter.ts} +6 -7
  145. package/examples/react-integration.tsx +637 -0
  146. package/examples/{schema-validation.js → schema-validation.ts} +2 -2
  147. package/examples/simple-usage.ts +194 -0
  148. package/examples/{streaming-example.js → streaming-example.ts} +12 -12
  149. package/index.d.ts +187 -18
  150. package/package.json +75 -81
  151. package/plugins.d.ts +37 -0
  152. package/schema.d.ts +103 -0
  153. package/src/browser/browser-functions.ts +402 -0
  154. package/src/browser/core.ts +152 -0
  155. package/src/browser/csv-to-json-browser.d.ts +3 -0
  156. package/src/browser/csv-to-json-browser.ts +494 -0
  157. package/src/browser/{errors-browser.js → errors-browser.ts} +305 -197
  158. package/src/browser/extensions/plugins.ts +93 -0
  159. package/src/browser/extensions/workers.ts +39 -0
  160. package/src/browser/globals.d.ts +5 -0
  161. package/src/browser/index.ts +192 -0
  162. package/src/browser/json-to-csv-browser.d.ts +3 -0
  163. package/src/browser/json-to-csv-browser.ts +338 -0
  164. package/src/browser/streams.ts +403 -0
  165. package/src/browser/workers/{csv-parser.worker.js → csv-parser.worker.ts} +3 -3
  166. package/src/browser/workers/{worker-pool.js → worker-pool.ts} +51 -30
  167. package/src/core/delimiter-cache.ts +320 -0
  168. package/src/core/{node-optimizations.js → node-optimizations.ts} +448 -407
  169. package/src/core/plugin-system.ts +588 -0
  170. package/src/core/transform-hooks.ts +566 -0
  171. package/src/engines/{fast-path-engine-new.js → fast-path-engine-new.ts} +11 -2
  172. package/src/engines/{fast-path-engine.js → fast-path-engine.ts} +79 -53
  173. package/src/errors.ts +1 -0
  174. package/src/formats/{ndjson-parser.js → ndjson-parser.ts} +24 -16
  175. package/src/formats/{tsv-parser.js → tsv-parser.ts} +18 -17
  176. package/src/{index-with-plugins.js → index-with-plugins.ts} +381 -357
  177. package/src/types/index.ts +275 -0
  178. package/src/utils/bom-utils.ts +373 -0
  179. package/src/utils/encoding-support.ts +155 -0
  180. package/src/utils/{schema-validator.js → schema-validator.ts} +814 -589
  181. package/src/utils/transform-loader.ts +389 -0
  182. package/src/utils/validators.ts +35 -0
  183. package/src/utils/zod-adapter.ts +280 -0
  184. package/src/web-server/{index.js → index.ts} +19 -19
  185. package/src/workers/csv-multithreaded.ts +310 -0
  186. package/src/workers/csv-parser.worker.ts +227 -0
  187. package/src/workers/worker-pool.ts +409 -0
  188. package/bin/jtcsv.js +0 -2462
  189. package/csv-to-json.js +0 -688
  190. package/errors.js +0 -208
  191. package/examples/simple-usage.js +0 -282
  192. package/index.js +0 -68
  193. package/json-save.js +0 -254
  194. package/json-to-csv.js +0 -526
  195. package/plugins/README.md +0 -91
  196. package/plugins/express-middleware/README.md +0 -64
  197. package/plugins/express-middleware/example.js +0 -136
  198. package/plugins/express-middleware/index.d.ts +0 -114
  199. package/plugins/express-middleware/index.js +0 -360
  200. package/plugins/express-middleware/package.json +0 -52
  201. package/plugins/fastify-plugin/index.js +0 -406
  202. package/plugins/fastify-plugin/package.json +0 -55
  203. package/plugins/hono/README.md +0 -28
  204. package/plugins/hono/index.d.ts +0 -12
  205. package/plugins/hono/index.js +0 -36
  206. package/plugins/hono/package.json +0 -35
  207. package/plugins/nestjs/README.md +0 -35
  208. package/plugins/nestjs/index.d.ts +0 -25
  209. package/plugins/nestjs/index.js +0 -77
  210. package/plugins/nestjs/package.json +0 -37
  211. package/plugins/nextjs-api/README.md +0 -57
  212. package/plugins/nextjs-api/examples/ConverterComponent.jsx +0 -386
  213. package/plugins/nextjs-api/examples/api-convert.js +0 -69
  214. package/plugins/nextjs-api/index.js +0 -387
  215. package/plugins/nextjs-api/package.json +0 -63
  216. package/plugins/nextjs-api/route.js +0 -371
  217. package/plugins/nuxt/README.md +0 -24
  218. package/plugins/nuxt/index.js +0 -21
  219. package/plugins/nuxt/package.json +0 -35
  220. package/plugins/nuxt/runtime/composables/useJtcsv.js +0 -6
  221. package/plugins/nuxt/runtime/plugin.js +0 -6
  222. package/plugins/remix/README.md +0 -26
  223. package/plugins/remix/index.d.ts +0 -16
  224. package/plugins/remix/index.js +0 -62
  225. package/plugins/remix/package.json +0 -35
  226. package/plugins/sveltekit/README.md +0 -28
  227. package/plugins/sveltekit/index.d.ts +0 -17
  228. package/plugins/sveltekit/index.js +0 -54
  229. package/plugins/sveltekit/package.json +0 -33
  230. package/plugins/trpc/README.md +0 -25
  231. package/plugins/trpc/index.d.ts +0 -7
  232. package/plugins/trpc/index.js +0 -32
  233. package/plugins/trpc/package.json +0 -34
  234. package/src/browser/browser-functions.js +0 -219
  235. package/src/browser/csv-to-json-browser.js +0 -700
  236. package/src/browser/index.js +0 -113
  237. package/src/browser/json-to-csv-browser.js +0 -309
  238. package/src/browser/streams.js +0 -393
  239. package/src/core/delimiter-cache.js +0 -186
  240. package/src/core/plugin-system.js +0 -476
  241. package/src/core/transform-hooks.js +0 -350
  242. package/src/errors.js +0 -26
  243. package/src/utils/transform-loader.js +0 -205
  244. package/stream-csv-to-json.js +0 -542
  245. package/stream-json-to-csv.js +0 -464
  246. /package/examples/{web-workers-advanced.js → web-workers-advanced.ts} +0 -0
package/README.md CHANGED
@@ -1,116 +1,205 @@
1
- # jtcsv - JSON <-> CSV toolkit for Node.js and browser
2
-
3
- [![npm version](https://img.shields.io/npm/v/jtcsv)](https://www.npmjs.com/package/jtcsv)
4
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
- [![Zero-Deps Core](https://img.shields.io/badge/core-zero%20deps-brightgreen.svg)](https://www.npmjs.com/package/jtcsv)
6
-
7
- Fast JSON <-> CSV conversion with streaming helpers, NDJSON/TSV support, and optional integrations.
8
-
9
- ## Features
10
- - JSON <-> CSV conversion with security defaults
11
- - Streaming helpers and async iterator API
12
- - NDJSON and TSV helpers
13
- - Browser bundle with Web Worker helpers
14
- - Optional plugin system and framework adapters
15
- - CLI and optional TUI
16
-
17
- ## Installation
18
- ```bash
19
- npm install jtcsv
20
- ```
21
-
22
- ### Optional add-ons
23
- ```bash
24
- npm install @jtcsv/tui
25
- npm install @jtcsv/excel exceljs
26
- npm install @jtcsv/validator
27
- ```
28
-
29
- ## Quick start (Node.js)
30
- ```javascript
31
- const { jsonToCsv, csvToJson } = require('jtcsv');
32
-
33
- const data = [
34
- { id: 1, name: 'John', email: 'john@example.com' },
35
- { id: 2, name: 'Jane', email: 'jane@example.com' }
36
- ];
37
-
38
- const csv = jsonToCsv(data, { delimiter: ',', includeHeaders: true });
39
- const json = csvToJson(csv, { delimiter: ',', parseNumbers: true });
40
-
41
- console.log(csv);
42
- console.log(json);
43
- ```
44
-
45
- ### Async iterator
46
- ```javascript
47
- const { csvToJsonIterator } = require('jtcsv');
48
-
49
- const csv = 'id,name\n1,Jane\n2,John';
50
- for await (const row of csvToJsonIterator(csv, { fastPathMode: 'compact' })) {
51
- console.log(row);
52
- }
53
- ```
54
-
55
- ## Browser usage
56
- - Bundler: `import { csvToJson, jsonToCsv } from 'jtcsv/browser';`
57
- - CDN UMD: `https://cdn.jsdelivr.net/npm/jtcsv/dist/jtcsv.umd.js`
58
- - CDN ESM: `https://cdn.jsdelivr.net/npm/jtcsv/dist/jtcsv.esm.js`
59
-
60
- See `README-browser.md` for full browser API and worker helpers.
61
-
62
- ## CLI
63
- ```bash
64
- npx jtcsv csv-to-json input.csv output.json
65
- npx jtcsv json-to-csv input.json output.csv
66
- npx jtcsv stream csv-to-json big.csv output.json
67
- npx jtcsv batch json-to-csv "data/*.json" output/
68
-
69
- # optional TUI
70
- npx jtcsv tui
71
- ```
72
-
73
- See `CLI.md` for full command list and options.
74
-
75
- ## Demos
76
- Run these from the repo root:
77
- ```bash
78
- # Express API demo
79
- npm run demo
80
-
81
- # Web demo (Vite dev server on http://localhost:3000)
82
- npm run demo:web
83
-
84
- # Preview built demo
85
- npm run demo:serve
86
- ```
87
-
88
- From inside `demo/` use:
89
- ```bash
90
- npm run dev
91
- npm run preview
92
- npm run serve
93
- ```
94
-
95
- ## Plugin system
96
- The plugin-enabled API is exported from `jtcsv/plugins`.
97
-
98
- ```javascript
99
- const { create } = require('jtcsv/plugins');
100
-
101
- const jtcsv = create();
102
- jtcsv.use('my-plugin', { name: 'My Plugin', version: '1.0.0' });
103
- ```
104
-
105
- See `README-PLUGINS.md` and `plugins/README.md` for integrations.
106
-
107
- ## Development
108
- Run from the repo root:
109
- ```bash
110
- npm test
111
- npm run test:coverage
112
- npm run build
113
- ```
114
-
115
- ## License
1
+ # jtcsv - JSON <-> CSV toolkit for Node.js and browser
2
+ Current version: 3.1.0
3
+
4
+
5
+ [![npm version](https://img.shields.io/npm/v/jtcsv)](https://www.npmjs.com/package/jtcsv)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+ [![Zero-Deps Core](https://img.shields.io/badge/core-zero%20deps-brightgreen.svg)](https://www.npmjs.com/package/jtcsv)
8
+
9
+ Fast JSON <-> CSV conversion with streaming helpers, NDJSON/TSV support, and optional integrations.
10
+
11
+ **Try Live:** `playground.html` (local) - `npm run demo:web`
12
+ [TRY LIVE](playground.html)
13
+
14
+ ## Features
15
+ - JSON <-> CSV conversion with security defaults
16
+ - Streaming helpers and async iterator API
17
+ - NDJSON and TSV helpers
18
+ - Browser bundle with Web Worker helpers
19
+ - Optional plugin system and framework adapters
20
+ - CLI and optional TUI
21
+ - Fast‑path engine for 2–3× faster parsing of simple CSV patterns
22
+ - Comprehensive security features: CSV injection prevention, path traversal protection, RFC 4180 compliance, automatic row shift repair, quote normalization
23
+ - Performance-optimized - fast number parsing, single-pass BOM stripping, efficient delimiter detection
24
+ - Built‑in benchmarks and performance monitoring (see `BENCHMARK-RESULTS.md`)
25
+
26
+ ## Documentation
27
+ - docs/README.md (docs hub)
28
+ - docs/GETTING_STARTED.md (5-minute quick start)
29
+ - docs/API_DECISION_TREE.md (pick the right API)
30
+ - docs/API_CANONICALIZATION.md (canonical names and aliases)
31
+ - docs/ERRORS.md (error reference)
32
+ - docs/TROUBLESHOOTING.md (common errors and fixes)
33
+ - docs/recipes/index.md (practical recipes)
34
+ - docs/SCHEMA_VALIDATOR.md (schema format)
35
+ - docs/BROWSER.md (browser API)
36
+ - docs/CLI.md (CLI usage)
37
+ - docs/PLUGINS.md (plugin system)
38
+ - docs/PLUGIN_AUTHORING.md (plugin authoring guide)
39
+ - docs/BENCHMARKS.md (public benchmarks)
40
+ - docs/PLUGIN_REGISTRY.md (community plugins)
41
+ - docs/integrations/index.md (framework integrations)
42
+
43
+ ## Playground
44
+ - Local HTML playground: `playground.html` (open in a browser)
45
+ - Vite demo: `npm run demo:web` (runs on http://localhost:3000)
46
+
47
+ <iframe
48
+ src="https://stackblitz.com/github/Linol-Hamelton/jtcsv?embed=1&file=playground.html&view=preview"
49
+ width="100%"
50
+ height="520"
51
+ style="border:0;border-radius:12px;overflow:hidden;"
52
+ title="JTCSV Playground (StackBlitz)"
53
+ ></iframe>
54
+
55
+
56
+ ## Integrations
57
+ - docs/integrations/index.md (overview)
58
+ - docs/integrations/express.md (Express upload API)
59
+ - docs/integrations/fastify.md (Fastify upload API)
60
+ - docs/integrations/react-hook-form.md (React Hook Form uploader)
61
+ - docs/integrations/nextjs-app-router.md (Next.js App Router upload)
62
+ - docs/integrations/drizzle-orm.md (Drizzle ORM import)
63
+ - docs/integrations/graphql.md (GraphQL upload)
64
+
65
+ ## Entry points
66
+ - `jtcsv` (main)
67
+ - `jtcsv/browser` (browser build)
68
+ - `jtcsv/plugins` (plugin manager)
69
+ - `jtcsv/cli` (CLI runner)
70
+ - `jtcsv/schema` (schema validator helpers)
71
+
72
+ ## Installation
73
+ ```bash
74
+ npm install jtcsv
75
+ ```
76
+
77
+ ### Optional add-ons
78
+ ```bash
79
+ npm install @jtcsv/tui
80
+ npm install @jtcsv/excel exceljs
81
+ npm install @jtcsv/validator
82
+ ```
83
+
84
+ ## Quick start (Node.js)
85
+ ```javascript
86
+ const { jsonToCsv, csvToJson } = require('jtcsv');
87
+
88
+ const data = [
89
+ { id: 1, name: 'John', email: 'john@example.com' },
90
+ { id: 2, name: 'Jane', email: 'jane@example.com' }
91
+ ];
92
+
93
+ const csv = jsonToCsv(data, { delimiter: ',', includeHeaders: true });
94
+ const json = csvToJson(csv, { delimiter: ',', parseNumbers: true });
95
+
96
+ console.log(csv);
97
+ console.log(json);
98
+ ```
99
+
100
+ ### Naming aliases (CSV -> JSON)
101
+ - `csvToJsonFile` / `csvToJsonFileSync` -> aliases of `readCsvAsJson` / `readCsvAsJsonSync`
102
+ - `csvToJsonStream` / `csvFileToJsonStream` -> aliases of `createCsvToJsonStream` / `createCsvFileToJsonStream`
103
+
104
+ ### Async iterator
105
+ ```javascript
106
+ const { csvToJsonIterator } = require('jtcsv');
107
+
108
+ const csv = 'id,name\n1,Jane\n2,John';
109
+
110
+ for await (const row of csvToJsonIterator(csv, { fastPathMode: 'compact' })) {
111
+ console.log(row);
112
+ }
113
+ ```
114
+
115
+ ### Command Line Interface
116
+
117
+ JTCSV includes a powerful CLI for batch conversion, file processing, and data transformation.
118
+
119
+ ```bash
120
+ # Convert CSV file to JSON
121
+ npx jtcsv csv-to-json data.csv --output data.json
122
+
123
+ # Convert JSON to CSV with custom delimiter
124
+ npx jtcsv json-to-csv data.json --delimiter ";" --output out.csv
125
+
126
+ # Stream processing with NDJSON
127
+ npx jtcsv csv-to-ndjson large.csv output.ndjson --stream
128
+
129
+ # See all options
130
+ npx jtcsv --help
131
+ ```
132
+
133
+ Full documentation: `docs/CLI.md`
134
+
135
+ ## Browser usage
136
+ - Bundler: `import { csvToJson, jsonToCsv } from 'jtcsv/browser';`
137
+ - CDN UMD: `https://cdn.jsdelivr.net/npm/jtcsv/dist/jtcsv.umd.js`
138
+ - CDN ESM: `https://cdn.jsdelivr.net/npm/jtcsv/dist/jtcsv.esm.js`
139
+
140
+ See `docs/BROWSER.md` for full browser API and worker helpers.
141
+
142
+ ## CLI
143
+ ```bash
144
+ npx jtcsv csv-to-json input.csv output.json
145
+ npx jtcsv json-to-csv input.json output.csv
146
+ npx jtcsv stream csv-to-json big.csv output.json
147
+ npx jtcsv batch json-to-csv "data/*.json" output/
148
+
149
+ # optional TUI
150
+ npx jtcsv tui
151
+ ```
152
+
153
+ See `docs/CLI.md` for full command list and options.
154
+
155
+ ## Demos
156
+ Run these from the repo root:
157
+ ```bash
158
+ # Express API demo
159
+ npm run demo
160
+
161
+ # Web demo (Vite dev server on http://localhost:3000)
162
+ npm run demo:web
163
+
164
+ # Preview built demo
165
+ npm run demo:serve
166
+ ```
167
+
168
+ From inside `demo/` use:
169
+ ```bash
170
+ npm run dev
171
+ npm run preview
172
+ npm run serve
173
+ ```
174
+
175
+ ## Plugin system
176
+ The plugin-enabled API is exported from `jtcsv/plugins`.
177
+
178
+ ```javascript
179
+ const { create } = require('jtcsv/plugins');
180
+
181
+ const jtcsv = create();
182
+ jtcsv.use('my-plugin', { name: 'My Plugin', version: '1.0.0' });
183
+ ```
184
+
185
+ See `docs/PLUGINS.md` and `plugins/README.md` for integrations.
186
+
187
+ ## Development
188
+ Run from the repo root:
189
+ ```bash
190
+ npm test
191
+ npm run test:coverage
192
+ npm run test:coverage:entry
193
+ npm run test:coverage:ts
194
+ npm run test:types
195
+ npm run tsc:types
196
+ npm run build
197
+ ```
198
+
199
+ Linux validation (Docker):
200
+ ```bash
201
+ docker run --rm -v /path/to/jtcsv:/work -w /work node:20 bash -lc "npm ci && npm test"
202
+ ```
203
+
204
+ ## License
116
205
  MIT. See `LICENSE`.