jtcsv 2.1.1 → 2.1.5

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 (60) hide show
  1. package/README.md +64 -327
  2. package/bin/jtcsv.js +7 -24
  3. package/csv-to-json.js +35 -26
  4. package/dist/jtcsv.cjs.js +807 -133
  5. package/dist/jtcsv.cjs.js.map +1 -1
  6. package/dist/jtcsv.esm.js +800 -134
  7. package/dist/jtcsv.esm.js.map +1 -1
  8. package/dist/jtcsv.umd.js +807 -133
  9. package/dist/jtcsv.umd.js.map +1 -1
  10. package/errors.js +20 -0
  11. package/examples/browser-vanilla.html +37 -0
  12. package/examples/cli-batch-processing.js +38 -0
  13. package/examples/simple-usage.js +12 -10
  14. package/examples/web-workers-advanced.js +28 -0
  15. package/json-save.js +2 -1
  16. package/package.json +41 -21
  17. package/plugins/README.md +50 -332
  18. package/plugins/express-middleware/README.md +32 -274
  19. package/plugins/hono/README.md +28 -0
  20. package/plugins/hono/index.d.ts +12 -0
  21. package/plugins/hono/index.js +36 -0
  22. package/plugins/hono/package.json +35 -0
  23. package/plugins/nestjs/README.md +35 -0
  24. package/plugins/nestjs/index.d.ts +25 -0
  25. package/plugins/nestjs/index.js +77 -0
  26. package/plugins/nestjs/package.json +37 -0
  27. package/plugins/nextjs-api/README.md +28 -423
  28. package/plugins/nextjs-api/index.js +1 -2
  29. package/plugins/nextjs-api/route.js +1 -2
  30. package/plugins/nuxt/README.md +24 -0
  31. package/plugins/nuxt/index.js +21 -0
  32. package/plugins/nuxt/package.json +35 -0
  33. package/plugins/nuxt/runtime/composables/useJtcsv.js +6 -0
  34. package/plugins/nuxt/runtime/plugin.js +6 -0
  35. package/plugins/remix/README.md +26 -0
  36. package/plugins/remix/index.d.ts +16 -0
  37. package/plugins/remix/index.js +62 -0
  38. package/plugins/remix/package.json +35 -0
  39. package/plugins/sveltekit/README.md +28 -0
  40. package/plugins/sveltekit/index.d.ts +17 -0
  41. package/plugins/sveltekit/index.js +54 -0
  42. package/plugins/sveltekit/package.json +33 -0
  43. package/plugins/trpc/README.md +25 -0
  44. package/plugins/trpc/index.d.ts +7 -0
  45. package/plugins/trpc/index.js +32 -0
  46. package/plugins/trpc/package.json +34 -0
  47. package/src/browser/browser-functions.js +33 -3
  48. package/src/browser/csv-to-json-browser.js +269 -11
  49. package/src/browser/errors-browser.js +19 -1
  50. package/src/browser/index.js +39 -5
  51. package/src/browser/streams.js +393 -0
  52. package/src/browser/workers/csv-parser.worker.js +20 -2
  53. package/src/browser/workers/worker-pool.js +507 -447
  54. package/src/core/plugin-system.js +4 -0
  55. package/src/engines/fast-path-engine.js +31 -23
  56. package/src/formats/ndjson-parser.js +54 -5
  57. package/src/formats/tsv-parser.js +4 -1
  58. package/stream-csv-to-json.js +11 -2
  59. package/stream-json-to-csv.js +13 -1
  60. package/cli-tui.js +0 -1498
package/plugins/README.md CHANGED
@@ -1,17 +1,35 @@
1
- # JTCSV Плагины и Интеграции
2
-
3
- Пакеты интеграций JTCSV с популярными фреймворками и платформами.
4
-
5
- ## 📦 Доступные плагины
6
-
7
- ### 1. Express Middleware (@jtcsv/express-middleware)
8
-
9
- **Express middleware для автоматической конвертации CSV/JSON в HTTP запросах.**
10
-
1
+ # JTCSV framework integrations
2
+
3
+ This folder contains optional adapters published as separate packages. Each adapter depends on `jtcsv`.
4
+
5
+ ## Available packages
6
+ - @jtcsv/express-middleware
7
+ - @jtcsv/fastify
8
+ - @jtcsv/nextjs
9
+ - @jtcsv/nestjs
10
+ - @jtcsv/remix
11
+ - @jtcsv/nuxt
12
+ - @jtcsv/sveltekit
13
+ - @jtcsv/hono
14
+ - @jtcsv/trpc
15
+
16
+ ## Main package shortcuts
17
+ If you already depend on `jtcsv`, the adapters are also exported from the main package:
18
+ - jtcsv/express
19
+ - jtcsv/fastify
20
+ - jtcsv/nextjs
21
+ - jtcsv/nextjs/route
22
+ - jtcsv/nestjs
23
+ - jtcsv/remix
24
+ - jtcsv/nuxt
25
+ - jtcsv/sveltekit
26
+ - jtcsv/hono
27
+ - jtcsv/trpc
28
+
29
+ ## Express
11
30
  ```bash
12
31
  npm install @jtcsv/express-middleware express jtcsv
13
32
  ```
14
-
15
33
  ```javascript
16
34
  const express = require('express');
17
35
  const { middleware } = require('@jtcsv/express-middleware');
@@ -20,354 +38,54 @@ const app = express();
20
38
  app.use(express.json());
21
39
  app.use(express.text({ type: 'text/csv' }));
22
40
  app.use(middleware());
23
-
24
- app.post('/api/convert', (req, res) => {
25
- res.json({
26
- data: req.converted.data,
27
- format: req.converted.format,
28
- stats: req.converted.stats
29
- });
30
- });
31
41
  ```
32
42
 
33
- [📚 Документация](./express-middleware/README.md)
34
-
35
- ### 2. Fastify Plugin (@jtcsv/fastify)
36
-
37
- **Fastify plugin для автоматической конвертации CSV/JSON.**
38
-
43
+ ## Fastify
39
44
  ```bash
40
45
  npm install @jtcsv/fastify fastify fastify-plugin jtcsv
41
46
  ```
42
-
43
47
  ```javascript
44
48
  const fastify = require('fastify')();
45
-
46
- await fastify.register(require('@jtcsv/fastify'), {
47
- prefix: '/api/convert'
48
- });
49
-
50
- // Доступ через fastify.jtcsv
51
- const csv = await fastify.jtcsv.jsonToCsv([{ name: 'John' }]);
49
+ await fastify.register(require('@jtcsv/fastify'), { prefix: '/api' });
52
50
  ```
53
51
 
54
- [📚 Документация](./fastify-plugin/README.md)
55
-
56
- ### 3. Next.js Integration (@jtcsv/nextjs)
57
-
58
- **Next.js интеграция - API routes, React hooks и компоненты.**
59
-
52
+ ## Next.js
60
53
  ```bash
61
54
  npm install @jtcsv/nextjs jtcsv
62
55
  ```
63
-
64
- ```jsx
65
- // pages/api/convert.js
66
- import { handler } from '@jtcsv/nextjs/route';
67
- export default handler;
68
-
69
- // components/Converter.jsx
70
- 'use client';
71
- import { useJtcsv } from '@jtcsv/nextjs';
72
-
73
- export default function Converter() {
74
- const { convertCsvToJson } = useJtcsv();
75
- // ...
76
- }
77
- ```
78
-
79
- [📚 Документация](./nextjs-api/README.md)
80
-
81
- ## 🎯 Особенности
82
-
83
- ### Единый API
84
-
85
- Все плагины предоставляют согласованный API:
86
-
87
- ```javascript
88
- // Express
89
- app.use(jtcsvMiddleware({ delimiter: ',' }));
90
-
91
- // Fastify
92
- await fastify.register(jtcsvPlugin, { delimiter: ',' });
93
-
94
- // Next.js
95
- const { convertCsvToJson } = useJtcsv({ delimiter: ',' });
96
- ```
97
-
98
- ### Автоматическое определение формата
99
-
100
- - Определение по Content-Type заголовку
101
- - Автоматическое определение по содержимому
102
- - Поддержка query параметров для ручного указания
103
-
104
- ### Безопасность
105
-
106
- - Защита от CSV инъекций (по умолчанию включена)
107
- - Валидация размера запросов
108
- - RFC 4180 compliance
109
-
110
- ### Производительность
111
-
112
- - Fast-Path Engine для оптимизации
113
- - Streaming поддержка для больших файлов
114
- - Кеширование парсеров
115
-
116
- ## 🔧 Конфигурация
117
-
118
- ### Общие опции
119
-
120
- | Опция | Тип | По умолчанию | Описание |
121
- |-------|-----|--------------|----------|
122
- | `delimiter` | `string` | `','` | Разделитель CSV |
123
- | `preventCsvInjection` | `boolean` | `true` | Защита от CSV инъекций |
124
- | `rfc4180Compliant` | `boolean` | `true` | Соответствие RFC 4180 |
125
- | `useFastPath` | `boolean` | `true` | Использовать Fast-Path Engine |
126
-
127
- ### Специфичные опции
128
-
129
- #### Express Middleware
130
-
131
56
  ```javascript
132
- {
133
- maxSize: '10mb', // Максимальный размер тела запроса
134
- autoDetect: true // Автоматическое определение формата
135
- }
136
- ```
137
-
138
- #### Fastify Plugin
139
-
140
- ```javascript
141
- {
142
- prefix: '/convert' // Префикс для routes
143
- }
144
- ```
145
-
146
- #### Next.js Integration
147
-
148
- ```javascript
149
- {
150
- parseNumbers: true, // Парсить числа
151
- parseBooleans: true // Парсить булевы значения
152
- }
57
+ import handler from '@jtcsv/nextjs/route';
58
+ export default handler;
153
59
  ```
154
60
 
155
- ## 🌐 Примеры использования
156
-
157
- ### REST API
158
-
61
+ ## NestJS
159
62
  ```bash
160
- # JSON CSV
161
- curl -X POST https://api.example.com/convert \
162
- -H "Content-Type: application/json" \
163
- -d '[{"name":"John","age":30}]'
164
-
165
- # CSV → JSON
166
- curl -X POST https://api.example.com/convert \
167
- -H "Content-Type: text/csv" \
168
- -d 'name,age\nJohn,30\nJane,25'
63
+ npm install @jtcsv/nestjs jtcsv
169
64
  ```
170
65
 
171
- ### Web Application
172
-
173
- ```jsx
174
- // React/Next.js компонент
175
- function DataExporter({ data }) {
176
- const { convertJsonToCsv } = useJtcsv();
177
-
178
- const handleExport = async () => {
179
- const csv = await convertJsonToCsv(data);
180
- downloadCsv(csv, 'export.csv');
181
- };
182
-
183
- return (
184
- <button onClick={handleExport}>
185
- Export as CSV
186
- </button>
187
- );
188
- }
189
- ```
190
-
191
- ### Backend Service
192
-
193
- ```javascript
194
- // Express приложение для обработки загрузок
195
- app.post('/api/upload', upload.single('file'), async (req, res) => {
196
- const csv = req.file.buffer.toString();
197
- const json = await csvToJson(csv);
198
-
199
- // Сохранение в базу данных
200
- await db.insert('data', json);
201
-
202
- res.json({ success: true, rows: json.length });
203
- });
204
- ```
205
-
206
- ## 📊 Мониторинг и Health Check
207
-
208
- Все плагины предоставляют health check endpoints:
209
-
66
+ ## Remix
210
67
  ```bash
211
- # Express
212
- GET /api/health
213
-
214
- # Fastify
215
- GET /convert/health
216
-
217
- # Next.js
218
- GET /api/convert/health
68
+ npm install @jtcsv/remix jtcsv
219
69
  ```
220
70
 
221
- **Пример ответа:**
222
- ```json
223
- {
224
- "service": "jtcsv-integration",
225
- "status": "healthy",
226
- "version": "1.0.0",
227
- "features": {
228
- "csvToJson": true,
229
- "jsonToCsv": true,
230
- "fastPathEngine": true,
231
- "csvInjectionProtection": true
232
- }
233
- }
234
- ```
235
-
236
- ## 🔌 Расширяемость
237
-
238
- ### Кастомные middleware
239
-
240
- ```javascript
241
- // Express
242
- app.use((req, res, next) => {
243
- // Логирование
244
- console.log(`[${new Date()}] ${req.method} ${req.url}`);
245
-
246
- // Rate limiting
247
- // ...
248
-
249
- next();
250
- });
251
-
252
- app.use(jtcsvMiddleware());
71
+ ## Nuxt
72
+ ```bash
73
+ npm install @jtcsv/nuxt jtcsv
253
74
  ```
254
75
 
255
- ### Плагины JTCSV
256
-
257
- Все интеграции совместимы с plugin system JTCSV:
258
-
259
- ```javascript
260
- const jtcsv = require('jtcsv;
261
-
262
- jtcsv.use('my-plugin', {
263
- hooks: {
264
- 'before:csvToJson': (csv) => {
265
- // Кастомная обработка
266
- return csv;
267
- }
268
- }
269
- });
76
+ ## SvelteKit
77
+ ```bash
78
+ npm install @jtcsv/sveltekit jtcsv
270
79
  ```
271
80
 
272
- ## 🚀 Производительность
273
-
274
- ### Бенчмарки
275
-
276
- | Операция | Без плагина | С плагином | Ускорение |
277
- |----------|-------------|------------|-----------|
278
- | CSV → JSON (10k rows) | 120ms | 45ms | 2.7x |
279
- | JSON → CSV (10k rows) | 85ms | 32ms | 2.7x |
280
- | File Upload (1MB) | 210ms | 95ms | 2.2x |
281
-
282
- ### Оптимизации
283
-
284
- 1. **Fast-Path Engine** - автоматический выбор оптимального парсера
285
- 2. **Streaming** - обработка больших файлов без загрузки в память
286
- 3. **Кеширование** - кеширование скомпилированных парсеров
287
- 4. **Пакетная обработка** - оптимизация для bulk операций
288
-
289
- ## 🔐 Безопасность
290
-
291
- ### Защитные механизмы
292
-
293
- 1. **CSV Injection Protection** - экранирование опасных символов
294
- 2. **Size Limits** - ограничение размера запросов
295
- 3. **Input Validation** - валидация входных данных
296
- 4. **Error Handling** - безопасная обработка ошибок
297
-
298
- ### Рекомендации
299
-
300
- ```javascript
301
- // Production конфигурация
302
- app.use(jtcsvMiddleware({
303
- maxSize: '10mb',
304
- preventCsvInjection: true,
305
- rfc4180Compliant: true
306
- }));
307
-
308
- // Rate limiting
309
- app.use(rateLimit({
310
- windowMs: 15 * 60 * 1000,
311
- max: 100
312
- }));
81
+ ## Hono
82
+ ```bash
83
+ npm install @jtcsv/hono jtcsv
313
84
  ```
314
85
 
315
- ## 📚 Документация
316
-
317
- - [Express Middleware](./express-middleware/README.md)
318
- - [Fastify Plugin](./fastify-plugin/README.md)
319
- - [Next.js Integration](./nextjs-api/README.md)
320
- - [Основная документация JTCSV](../README.md)
321
-
322
- ## 🧪 Тестирование
323
-
86
+ ## tRPC
324
87
  ```bash
325
- # Тестирование всех плагинов
326
- cd plugins
327
- npm test
328
-
329
- # Тестирование конкретного плагина
330
- cd express-middleware
331
- npm test
332
-
333
- # Запуск примеров
334
- cd nextjs-api/examples
335
- node api-convert.js
88
+ npm install @jtcsv/trpc jtcsv
336
89
  ```
337
90
 
338
- ## 🤝 Вклад в развитие
339
-
340
- Мы приветствуем вклады в развитие плагинов!
341
-
342
- ### Как помочь
343
-
344
- 1. **Сообщить о баге** - создайте issue с подробным описанием
345
- 2. **Предложить улучшение** - обсудите в Discussions
346
- 3. **Создать pull request** - реализуйте новую функцию
347
- 4. **Улучшить документацию** - помогите другим разработчикам
348
-
349
- ### Руководство по разработке
350
-
351
- 1. Клонируйте репозиторий
352
- 2. Установите зависимости: `npm install`
353
- 3. Создайте ветку: `git checkout -b feature/amazing`
354
- 4. Внесите изменения и протестируйте
355
- 5. Запушьте изменения: `git push origin feature/amazing`
356
- 6. Откройте Pull Request
357
-
358
- ## 📞 Поддержка
359
-
360
- - **Issues**: [GitHub Issues](https://github.com/Linol-Hamelton/jtcsv/issues)
361
- - **Discussions**: [GitHub Discussions](https://github.com/Linol-Hamelton/jtcsv/discussions)
362
- - **Documentation**: [Основная документация](../README.md)
363
- - **Email**: [Указать email если есть]
364
-
365
- ## 📄 Лицензия
366
-
367
- Все плагины распространяются под лицензией MIT. См. файл [LICENSE](../LICENSE) для подробностей.
368
-
369
- ---
370
-
371
- **JTCSV Плагины** - делаем работу с CSV/JSON проще в любом фреймворке! 🚀
372
-
373
-
91
+ See each package README in this folder for API details.