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.
- package/README.md +204 -115
- package/bin/jtcsv.ts +2612 -0
- package/browser.d.ts +142 -0
- package/dist/benchmark.js +446 -0
- package/dist/benchmark.js.map +1 -0
- package/dist/bin/jtcsv.js +1940 -0
- package/dist/bin/jtcsv.js.map +1 -0
- package/dist/csv-to-json.js +1262 -0
- package/dist/csv-to-json.js.map +1 -0
- package/dist/errors.js +291 -0
- package/dist/errors.js.map +1 -0
- package/dist/eslint.config.js +147 -0
- package/dist/eslint.config.js.map +1 -0
- package/dist/index-core.js +95 -0
- package/dist/index-core.js.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/json-save.js +229 -0
- package/dist/json-save.js.map +1 -0
- package/dist/json-to-csv.js +576 -0
- package/dist/json-to-csv.js.map +1 -0
- package/dist/jtcsv-core.cjs.js +1736 -0
- package/dist/jtcsv-core.cjs.js.map +1 -0
- package/dist/jtcsv-core.esm.js +1708 -0
- package/dist/jtcsv-core.esm.js.map +1 -0
- package/dist/jtcsv-core.umd.js +1742 -0
- package/dist/jtcsv-core.umd.js.map +1 -0
- package/dist/jtcsv-full.cjs.js +2241 -0
- package/dist/jtcsv-full.cjs.js.map +1 -0
- package/dist/jtcsv-full.esm.js +2209 -0
- package/dist/jtcsv-full.esm.js.map +1 -0
- package/dist/jtcsv-full.umd.js +2247 -0
- package/dist/jtcsv-full.umd.js.map +1 -0
- package/dist/jtcsv-workers.esm.js +768 -0
- package/dist/jtcsv-workers.esm.js.map +1 -0
- package/dist/jtcsv-workers.umd.js +782 -0
- package/dist/jtcsv-workers.umd.js.map +1 -0
- package/dist/jtcsv.cjs.js +1996 -2048
- package/dist/jtcsv.cjs.js.map +1 -1
- package/dist/jtcsv.esm.js +1992 -2048
- package/dist/jtcsv.esm.js.map +1 -1
- package/dist/jtcsv.umd.js +2157 -2209
- package/dist/jtcsv.umd.js.map +1 -1
- package/dist/plugins/express-middleware/index.js +350 -0
- package/dist/plugins/express-middleware/index.js.map +1 -0
- package/dist/plugins/fastify-plugin/index.js +315 -0
- package/dist/plugins/fastify-plugin/index.js.map +1 -0
- package/dist/plugins/hono/index.js +111 -0
- package/dist/plugins/hono/index.js.map +1 -0
- package/dist/plugins/nestjs/index.js +112 -0
- package/dist/plugins/nestjs/index.js.map +1 -0
- package/dist/plugins/nuxt/index.js +53 -0
- package/dist/plugins/nuxt/index.js.map +1 -0
- package/dist/plugins/remix/index.js +133 -0
- package/dist/plugins/remix/index.js.map +1 -0
- package/dist/plugins/sveltekit/index.js +155 -0
- package/dist/plugins/sveltekit/index.js.map +1 -0
- package/dist/plugins/trpc/index.js +136 -0
- package/dist/plugins/trpc/index.js.map +1 -0
- package/dist/run-demo.js +49 -0
- package/dist/run-demo.js.map +1 -0
- package/dist/src/browser/browser-functions.js +193 -0
- package/dist/src/browser/browser-functions.js.map +1 -0
- package/dist/src/browser/core.js +123 -0
- package/dist/src/browser/core.js.map +1 -0
- package/dist/src/browser/csv-to-json-browser.js +353 -0
- package/dist/src/browser/csv-to-json-browser.js.map +1 -0
- package/dist/src/browser/errors-browser.js +219 -0
- package/dist/src/browser/errors-browser.js.map +1 -0
- package/dist/src/browser/extensions/plugins.js +106 -0
- package/dist/src/browser/extensions/plugins.js.map +1 -0
- package/dist/src/browser/extensions/workers.js +66 -0
- package/dist/src/browser/extensions/workers.js.map +1 -0
- package/dist/src/browser/index.js +140 -0
- package/dist/src/browser/index.js.map +1 -0
- package/dist/src/browser/json-to-csv-browser.js +225 -0
- package/dist/src/browser/json-to-csv-browser.js.map +1 -0
- package/dist/src/browser/streams.js +340 -0
- package/dist/src/browser/streams.js.map +1 -0
- package/dist/src/browser/workers/csv-parser.worker.js +264 -0
- package/dist/src/browser/workers/csv-parser.worker.js.map +1 -0
- package/dist/src/browser/workers/worker-pool.js +338 -0
- package/dist/src/browser/workers/worker-pool.js.map +1 -0
- package/dist/src/core/delimiter-cache.js +196 -0
- package/dist/src/core/delimiter-cache.js.map +1 -0
- package/dist/src/core/node-optimizations.js +279 -0
- package/dist/src/core/node-optimizations.js.map +1 -0
- package/dist/src/core/plugin-system.js +399 -0
- package/dist/src/core/plugin-system.js.map +1 -0
- package/dist/src/core/transform-hooks.js +348 -0
- package/dist/src/core/transform-hooks.js.map +1 -0
- package/dist/src/engines/fast-path-engine-new.js +262 -0
- package/dist/src/engines/fast-path-engine-new.js.map +1 -0
- package/dist/src/engines/fast-path-engine.js +671 -0
- package/dist/src/engines/fast-path-engine.js.map +1 -0
- package/dist/src/errors.js +18 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/formats/ndjson-parser.js +332 -0
- package/dist/src/formats/ndjson-parser.js.map +1 -0
- package/dist/src/formats/tsv-parser.js +230 -0
- package/dist/src/formats/tsv-parser.js.map +1 -0
- package/dist/src/index-with-plugins.js +259 -0
- package/dist/src/index-with-plugins.js.map +1 -0
- package/dist/src/types/index.js +3 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/utils/bom-utils.js +267 -0
- package/dist/src/utils/bom-utils.js.map +1 -0
- package/dist/src/utils/encoding-support.js +77 -0
- package/dist/src/utils/encoding-support.js.map +1 -0
- package/dist/src/utils/schema-validator.js +609 -0
- package/dist/src/utils/schema-validator.js.map +1 -0
- package/dist/src/utils/transform-loader.js +281 -0
- package/dist/src/utils/transform-loader.js.map +1 -0
- package/dist/src/utils/validators.js +40 -0
- package/dist/src/utils/validators.js.map +1 -0
- package/dist/src/utils/zod-adapter.js +144 -0
- package/dist/src/utils/zod-adapter.js.map +1 -0
- package/dist/src/web-server/index.js +648 -0
- package/dist/src/web-server/index.js.map +1 -0
- package/dist/src/workers/csv-multithreaded.js +211 -0
- package/dist/src/workers/csv-multithreaded.js.map +1 -0
- package/dist/src/workers/csv-parser.worker.js +179 -0
- package/dist/src/workers/csv-parser.worker.js.map +1 -0
- package/dist/src/workers/worker-pool.js +228 -0
- package/dist/src/workers/worker-pool.js.map +1 -0
- package/dist/stream-csv-to-json.js +665 -0
- package/dist/stream-csv-to-json.js.map +1 -0
- package/dist/stream-json-to-csv.js +389 -0
- package/dist/stream-json-to-csv.js.map +1 -0
- package/examples/advanced/conditional-transformations.ts +446 -0
- package/examples/advanced/csv-parser.worker.ts +89 -0
- package/examples/advanced/nested-objects-example.ts +306 -0
- package/examples/advanced/performance-optimization.ts +504 -0
- package/examples/advanced/run-demo-server.ts +116 -0
- package/examples/advanced/web-worker-usage.html +874 -0
- package/examples/async-multithreaded-example.ts +335 -0
- package/examples/cli-advanced-usage.md +290 -0
- package/examples/{cli-batch-processing.js → cli-batch-processing.ts} +38 -38
- package/examples/{cli-tool.js → cli-tool.ts} +5 -8
- package/examples/{error-handling.js → error-handling.ts} +356 -324
- package/examples/{express-api.js → express-api.ts} +161 -164
- package/examples/{large-dataset-example.js → large-dataset-example.ts} +201 -182
- package/examples/{ndjson-processing.js → ndjson-processing.ts} +456 -434
- package/examples/{plugin-excel-exporter.js → plugin-excel-exporter.ts} +6 -7
- package/examples/react-integration.tsx +637 -0
- package/examples/{schema-validation.js → schema-validation.ts} +2 -2
- package/examples/simple-usage.ts +194 -0
- package/examples/{streaming-example.js → streaming-example.ts} +12 -12
- package/index.d.ts +187 -18
- package/package.json +75 -81
- package/plugins.d.ts +37 -0
- package/schema.d.ts +103 -0
- package/src/browser/browser-functions.ts +402 -0
- package/src/browser/core.ts +152 -0
- package/src/browser/csv-to-json-browser.d.ts +3 -0
- package/src/browser/csv-to-json-browser.ts +494 -0
- package/src/browser/{errors-browser.js → errors-browser.ts} +305 -197
- package/src/browser/extensions/plugins.ts +93 -0
- package/src/browser/extensions/workers.ts +39 -0
- package/src/browser/globals.d.ts +5 -0
- package/src/browser/index.ts +192 -0
- package/src/browser/json-to-csv-browser.d.ts +3 -0
- package/src/browser/json-to-csv-browser.ts +338 -0
- package/src/browser/streams.ts +403 -0
- package/src/browser/workers/{csv-parser.worker.js → csv-parser.worker.ts} +3 -3
- package/src/browser/workers/{worker-pool.js → worker-pool.ts} +51 -30
- package/src/core/delimiter-cache.ts +320 -0
- package/src/core/{node-optimizations.js → node-optimizations.ts} +448 -407
- package/src/core/plugin-system.ts +588 -0
- package/src/core/transform-hooks.ts +566 -0
- package/src/engines/{fast-path-engine-new.js → fast-path-engine-new.ts} +11 -2
- package/src/engines/{fast-path-engine.js → fast-path-engine.ts} +79 -53
- package/src/errors.ts +1 -0
- package/src/formats/{ndjson-parser.js → ndjson-parser.ts} +24 -16
- package/src/formats/{tsv-parser.js → tsv-parser.ts} +18 -17
- package/src/{index-with-plugins.js → index-with-plugins.ts} +381 -357
- package/src/types/index.ts +275 -0
- package/src/utils/bom-utils.ts +373 -0
- package/src/utils/encoding-support.ts +155 -0
- package/src/utils/{schema-validator.js → schema-validator.ts} +814 -589
- package/src/utils/transform-loader.ts +389 -0
- package/src/utils/validators.ts +35 -0
- package/src/utils/zod-adapter.ts +280 -0
- package/src/web-server/{index.js → index.ts} +19 -19
- package/src/workers/csv-multithreaded.ts +310 -0
- package/src/workers/csv-parser.worker.ts +227 -0
- package/src/workers/worker-pool.ts +409 -0
- package/bin/jtcsv.js +0 -2462
- package/csv-to-json.js +0 -688
- package/errors.js +0 -208
- package/examples/simple-usage.js +0 -282
- package/index.js +0 -68
- package/json-save.js +0 -254
- package/json-to-csv.js +0 -526
- package/plugins/README.md +0 -91
- package/plugins/express-middleware/README.md +0 -64
- package/plugins/express-middleware/example.js +0 -136
- package/plugins/express-middleware/index.d.ts +0 -114
- package/plugins/express-middleware/index.js +0 -360
- package/plugins/express-middleware/package.json +0 -52
- package/plugins/fastify-plugin/index.js +0 -406
- package/plugins/fastify-plugin/package.json +0 -55
- package/plugins/hono/README.md +0 -28
- package/plugins/hono/index.d.ts +0 -12
- package/plugins/hono/index.js +0 -36
- package/plugins/hono/package.json +0 -35
- package/plugins/nestjs/README.md +0 -35
- package/plugins/nestjs/index.d.ts +0 -25
- package/plugins/nestjs/index.js +0 -77
- package/plugins/nestjs/package.json +0 -37
- package/plugins/nextjs-api/README.md +0 -57
- package/plugins/nextjs-api/examples/ConverterComponent.jsx +0 -386
- package/plugins/nextjs-api/examples/api-convert.js +0 -69
- package/plugins/nextjs-api/index.js +0 -387
- package/plugins/nextjs-api/package.json +0 -63
- package/plugins/nextjs-api/route.js +0 -371
- package/plugins/nuxt/README.md +0 -24
- package/plugins/nuxt/index.js +0 -21
- package/plugins/nuxt/package.json +0 -35
- package/plugins/nuxt/runtime/composables/useJtcsv.js +0 -6
- package/plugins/nuxt/runtime/plugin.js +0 -6
- package/plugins/remix/README.md +0 -26
- package/plugins/remix/index.d.ts +0 -16
- package/plugins/remix/index.js +0 -62
- package/plugins/remix/package.json +0 -35
- package/plugins/sveltekit/README.md +0 -28
- package/plugins/sveltekit/index.d.ts +0 -17
- package/plugins/sveltekit/index.js +0 -54
- package/plugins/sveltekit/package.json +0 -33
- package/plugins/trpc/README.md +0 -25
- package/plugins/trpc/index.d.ts +0 -7
- package/plugins/trpc/index.js +0 -32
- package/plugins/trpc/package.json +0 -34
- package/src/browser/browser-functions.js +0 -219
- package/src/browser/csv-to-json-browser.js +0 -700
- package/src/browser/index.js +0 -113
- package/src/browser/json-to-csv-browser.js +0 -309
- package/src/browser/streams.js +0 -393
- package/src/core/delimiter-cache.js +0 -186
- package/src/core/plugin-system.js +0 -476
- package/src/core/transform-hooks.js +0 -350
- package/src/errors.js +0 -26
- package/src/utils/transform-loader.js +0 -205
- package/stream-csv-to-json.js +0 -542
- package/stream-json-to-csv.js +0 -464
- /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
|
-
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/jtcsv)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
[](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`.
|