jtcsv 3.0.0 → 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 +205 -146
- package/bin/jtcsv.ts +280 -202
- 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 +336 -7
- package/dist/jtcsv-core.cjs.js.map +1 -1
- package/dist/jtcsv-core.esm.js +336 -7
- package/dist/jtcsv-core.esm.js.map +1 -1
- package/dist/jtcsv-core.umd.js +336 -7
- package/dist/jtcsv-core.umd.js.map +1 -1
- package/dist/jtcsv-full.cjs.js +336 -7
- package/dist/jtcsv-full.cjs.js.map +1 -1
- package/dist/jtcsv-full.esm.js +336 -7
- package/dist/jtcsv-full.esm.js.map +1 -1
- package/dist/jtcsv-full.umd.js +336 -7
- package/dist/jtcsv-full.umd.js.map +1 -1
- package/dist/jtcsv-workers.esm.js +9 -0
- package/dist/jtcsv-workers.esm.js.map +1 -1
- package/dist/jtcsv-workers.umd.js +9 -0
- package/dist/jtcsv-workers.umd.js.map +1 -1
- package/dist/jtcsv.cjs.js +1998 -2092
- package/dist/jtcsv.cjs.js.map +1 -1
- package/dist/jtcsv.esm.js +1994 -2092
- package/dist/jtcsv.esm.js.map +1 -1
- package/dist/jtcsv.umd.js +2157 -2251
- 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/{src → dist/src}/web-server/index.js +251 -286
- 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 +2 -2
- package/examples/advanced/performance-optimization.ts +2 -2
- package/examples/cli-advanced-usage.md +2 -0
- package/examples/cli-tool.ts +1 -1
- package/examples/large-dataset-example.ts +2 -2
- package/examples/simple-usage.ts +2 -2
- package/examples/streaming-example.ts +1 -1
- package/index.d.ts +186 -15
- package/package.json +43 -108
- package/plugins.d.ts +37 -0
- package/schema.d.ts +103 -0
- package/src/browser/csv-to-json-browser.ts +233 -3
- package/src/browser/errors-browser.ts +45 -28
- package/src/browser/json-to-csv-browser.ts +81 -5
- package/src/browser/streams.ts +73 -6
- package/src/core/delimiter-cache.ts +21 -11
- package/src/core/plugin-system.ts +343 -155
- package/src/core/transform-hooks.ts +20 -12
- package/src/engines/fast-path-engine.ts +48 -32
- package/src/errors.ts +1 -72
- package/src/formats/ndjson-parser.ts +6 -0
- package/src/formats/tsv-parser.ts +6 -0
- package/src/types/index.ts +21 -1
- package/src/utils/validators.ts +35 -0
- package/src/web-server/index.ts +1 -1
- package/bin/jtcsv.js +0 -2532
- package/csv-to-json.js +0 -711
- package/errors.js +0 -394
- package/examples/advanced/conditional-transformations.js +0 -446
- package/examples/advanced/csv-parser.worker.js +0 -89
- package/examples/advanced/nested-objects-example.js +0 -306
- package/examples/advanced/performance-optimization.js +0 -504
- package/examples/advanced/run-demo-server.js +0 -116
- package/examples/cli-batch-processing.js +0 -38
- package/examples/cli-tool.js +0 -183
- package/examples/error-handling.js +0 -338
- package/examples/express-api.js +0 -164
- package/examples/large-dataset-example.js +0 -182
- package/examples/ndjson-processing.js +0 -434
- package/examples/plugin-excel-exporter.js +0 -406
- package/examples/schema-validation.js +0 -640
- package/examples/simple-usage.js +0 -282
- package/examples/streaming-example.js +0 -418
- package/examples/web-workers-advanced.js +0 -28
- package/index.js +0 -82
- package/json-save.js +0 -255
- package/json-to-csv.js +0 -668
- package/plugins/README.md +0 -91
- package/plugins/express-middleware/README.md +0 -83
- package/plugins/express-middleware/example.js +0 -135
- package/plugins/express-middleware/example.ts +0 -135
- package/plugins/express-middleware/index.d.ts +0 -114
- package/plugins/express-middleware/index.js +0 -512
- package/plugins/express-middleware/index.ts +0 -557
- package/plugins/express-middleware/package.json +0 -52
- package/plugins/fastify-plugin/index.js +0 -404
- package/plugins/fastify-plugin/index.ts +0 -443
- 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/index.ts +0 -226
- 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/index.ts +0 -201
- 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/ConverterComponent.tsx +0 -386
- package/plugins/nextjs-api/examples/api-convert.js +0 -67
- package/plugins/nextjs-api/examples/api-convert.ts +0 -67
- package/plugins/nextjs-api/index.js +0 -387
- package/plugins/nextjs-api/index.tsx +0 -339
- package/plugins/nextjs-api/package.json +0 -63
- package/plugins/nextjs-api/route.js +0 -370
- package/plugins/nextjs-api/route.ts +0 -370
- package/plugins/nuxt/README.md +0 -24
- package/plugins/nuxt/index.js +0 -21
- package/plugins/nuxt/index.ts +0 -94
- package/plugins/nuxt/package.json +0 -35
- package/plugins/nuxt/runtime/composables/useJtcsv.js +0 -6
- package/plugins/nuxt/runtime/composables/useJtcsv.ts +0 -100
- package/plugins/nuxt/runtime/plugin.js +0 -6
- package/plugins/nuxt/runtime/plugin.ts +0 -71
- 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/index.ts +0 -260
- 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/index.ts +0 -301
- 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/index.ts +0 -267
- package/plugins/trpc/package.json +0 -34
- package/src/browser/browser-functions.js +0 -219
- package/src/browser/core.js +0 -92
- package/src/browser/csv-to-json-browser.js +0 -722
- package/src/browser/errors-browser.js +0 -212
- package/src/browser/extensions/plugins.js +0 -92
- package/src/browser/extensions/workers.js +0 -39
- package/src/browser/index.js +0 -113
- package/src/browser/json-to-csv-browser.js +0 -319
- package/src/browser/streams.js +0 -403
- package/src/browser/workers/csv-parser.worker.js +0 -377
- package/src/browser/workers/worker-pool.js +0 -527
- package/src/core/delimiter-cache.js +0 -200
- package/src/core/node-optimizations.js +0 -408
- package/src/core/plugin-system.js +0 -494
- package/src/core/transform-hooks.js +0 -350
- package/src/engines/fast-path-engine-new.js +0 -338
- package/src/engines/fast-path-engine.js +0 -844
- package/src/errors.js +0 -26
- package/src/formats/ndjson-parser.js +0 -467
- package/src/formats/tsv-parser.js +0 -339
- package/src/index-with-plugins.js +0 -378
- package/src/utils/bom-utils.js +0 -259
- package/src/utils/encoding-support.js +0 -124
- package/src/utils/schema-validator.js +0 -594
- package/src/utils/transform-loader.js +0 -205
- package/src/utils/zod-adapter.js +0 -170
- package/stream-csv-to-json.js +0 -560
- package/stream-json-to-csv.js +0 -465
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
// Браузерные специфичные функции для jtcsv
|
|
2
|
-
// Функции, которые работают только в браузере
|
|
3
|
-
|
|
4
|
-
import { jsonToCsv } from './json-to-csv-browser.js';
|
|
5
|
-
import { csvToJson, csvToJsonIterator } from './csv-to-json-browser.js';
|
|
6
|
-
import { csvToJsonStream, jsonToCsvStream, jsonToNdjsonStream } from './streams.js';
|
|
7
|
-
import { ValidationError } from './errors-browser.js';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Скачивает JSON данные как CSV файл
|
|
11
|
-
*
|
|
12
|
-
* @param {Array<Object>} data - Массив объектов для конвертации
|
|
13
|
-
* @param {string} [filename='data.csv'] - Имя файла для скачивания
|
|
14
|
-
* @param {Object} [options] - Опции для jsonToCsv
|
|
15
|
-
* @returns {void}
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* const data = [
|
|
19
|
-
* { id: 1, name: 'John' },
|
|
20
|
-
* { id: 2, name: 'Jane' }
|
|
21
|
-
* ];
|
|
22
|
-
* downloadAsCsv(data, 'users.csv', { delimiter: ',' });
|
|
23
|
-
*/
|
|
24
|
-
export function downloadAsCsv(data, filename = 'data.csv', options = {}) {
|
|
25
|
-
// Проверка что мы в браузере
|
|
26
|
-
if (typeof window === 'undefined') {
|
|
27
|
-
throw new ValidationError('downloadAsCsv() работает только в браузере. Используйте saveAsCsv() в Node.js');
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Валидация имени файла
|
|
31
|
-
if (typeof filename !== 'string' || filename.trim() === '') {
|
|
32
|
-
throw new ValidationError('Filename must be a non-empty string');
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// Добавление расширения .csv если его нет
|
|
36
|
-
if (!filename.toLowerCase().endsWith('.csv')) {
|
|
37
|
-
filename += '.csv';
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// Конвертация в CSV
|
|
41
|
-
const csv = jsonToCsv(data, options);
|
|
42
|
-
|
|
43
|
-
// Создание Blob
|
|
44
|
-
const blob = new Blob([csv], {
|
|
45
|
-
type: 'text/csv;charset=utf-8;'
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
// Создание ссылки для скачивания
|
|
49
|
-
const link = document.createElement('a');
|
|
50
|
-
|
|
51
|
-
// Создание URL для Blob
|
|
52
|
-
const url = URL.createObjectURL(blob);
|
|
53
|
-
|
|
54
|
-
// Настройка ссылки
|
|
55
|
-
link.setAttribute('href', url);
|
|
56
|
-
link.setAttribute('download', filename);
|
|
57
|
-
link.style.visibility = 'hidden';
|
|
58
|
-
|
|
59
|
-
// Добавление в DOM и клик
|
|
60
|
-
document.body.appendChild(link);
|
|
61
|
-
link.click();
|
|
62
|
-
|
|
63
|
-
// Очистка
|
|
64
|
-
setTimeout(() => {
|
|
65
|
-
document.body.removeChild(link);
|
|
66
|
-
URL.revokeObjectURL(url);
|
|
67
|
-
}, 100);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Парсит CSV файл из input[type="file"] в JSON
|
|
72
|
-
*
|
|
73
|
-
* @param {File} file - File объект из input
|
|
74
|
-
* @param {Object} [options] - Опции для csvToJson
|
|
75
|
-
* @returns {Promise<Array<Object>>} Promise с JSON данными
|
|
76
|
-
*
|
|
77
|
-
* @example
|
|
78
|
-
* // HTML: <input type="file" id="csvFile" accept=".csv">
|
|
79
|
-
* const fileInput = document.getElementById('csvFile');
|
|
80
|
-
* const json = await parseCsvFile(fileInput.files[0], { delimiter: ',' });
|
|
81
|
-
*/
|
|
82
|
-
export async function parseCsvFile(file, options = {}) {
|
|
83
|
-
// Проверка что мы в браузере
|
|
84
|
-
if (typeof window === 'undefined') {
|
|
85
|
-
throw new ValidationError('parseCsvFile() работает только в браузере. Используйте readCsvAsJson() в Node.js');
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
// Валидация файла
|
|
89
|
-
if (!(file instanceof File)) {
|
|
90
|
-
throw new ValidationError('Input must be a File object');
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// Проверка расширения файла
|
|
94
|
-
if (!file.name.toLowerCase().endsWith('.csv')) {
|
|
95
|
-
throw new ValidationError('File must have .csv extension');
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
// Проверка размера файла (предупреждение для больших файлов)
|
|
99
|
-
const MAX_SIZE_WARNING = 50 * 1024 * 1024; // 50MB
|
|
100
|
-
if (file.size > MAX_SIZE_WARNING && process.env.NODE_ENV !== 'production') {
|
|
101
|
-
console.warn(
|
|
102
|
-
`⚠️ Warning: Processing large file (${(file.size / 1024 / 1024).toFixed(2)}MB).\n` +
|
|
103
|
-
'💡 Consider using Web Workers for better performance.\n' +
|
|
104
|
-
'🔧 Tip: Use parseCSVWithWorker() for files > 10MB.'
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
return new Promise((resolve, reject) => {
|
|
109
|
-
const reader = new FileReader();
|
|
110
|
-
|
|
111
|
-
reader.onload = function (event) {
|
|
112
|
-
try {
|
|
113
|
-
const csvText = event.target.result;
|
|
114
|
-
const json = csvToJson(csvText, options);
|
|
115
|
-
resolve(json);
|
|
116
|
-
} catch (error) {
|
|
117
|
-
reject(error);
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
reader.onerror = function () {
|
|
122
|
-
reject(new ValidationError('Ошибка чтения файла'));
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
reader.onabort = function () {
|
|
126
|
-
reject(new ValidationError('Чтение файла прервано'));
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
// Чтение как текст
|
|
130
|
-
reader.readAsText(file, 'UTF-8');
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Stream CSV file as async iterator without full buffering.
|
|
136
|
-
*
|
|
137
|
-
* @param {File} file - File selected from input
|
|
138
|
-
* @param {Object} [options] - csvToJson options
|
|
139
|
-
* @returns {AsyncGenerator<Object>} Async iterator of rows
|
|
140
|
-
*/
|
|
141
|
-
export function parseCsvFileStream(file, options = {}) {
|
|
142
|
-
if (typeof window === 'undefined') {
|
|
143
|
-
throw new ValidationError('parseCsvFileStream() is browser-only. Use readCsvAsJson() in Node.js');
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
if (!(file instanceof File)) {
|
|
147
|
-
throw new ValidationError('Input must be a File object');
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
if (!file.name.toLowerCase().endsWith('.csv')) {
|
|
151
|
-
throw new ValidationError('File must have .csv extension');
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
return csvToJsonIterator(file, options);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Создает CSV файл из JSON данных (альтернатива downloadAsCsv)
|
|
159
|
-
* Возвращает Blob вместо автоматического скачивания
|
|
160
|
-
*
|
|
161
|
-
* @param {Array<Object>} data - Массив объектов
|
|
162
|
-
* @param {Object} [options] - Опции для jsonToCsv
|
|
163
|
-
* @returns {Blob} CSV Blob
|
|
164
|
-
*/
|
|
165
|
-
export function createCsvBlob(data, options = {}) {
|
|
166
|
-
const csv = jsonToCsv(data, options);
|
|
167
|
-
return new Blob([csv], {
|
|
168
|
-
type: 'text/csv;charset=utf-8;'
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Парсит CSV строку из Blob
|
|
174
|
-
*
|
|
175
|
-
* @param {Blob} blob - CSV Blob
|
|
176
|
-
* @param {Object} [options] - Опции для csvToJson
|
|
177
|
-
* @returns {Promise<Array<Object>>} Promise с JSON данными
|
|
178
|
-
*/
|
|
179
|
-
export async function parseCsvBlob(blob, options = {}) {
|
|
180
|
-
if (!(blob instanceof Blob)) {
|
|
181
|
-
throw new ValidationError('Input must be a Blob object');
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
return new Promise((resolve, reject) => {
|
|
185
|
-
const reader = new FileReader();
|
|
186
|
-
|
|
187
|
-
reader.onload = function (event) {
|
|
188
|
-
try {
|
|
189
|
-
const csvText = event.target.result;
|
|
190
|
-
const json = csvToJson(csvText, options);
|
|
191
|
-
resolve(json);
|
|
192
|
-
} catch (error) {
|
|
193
|
-
reject(error);
|
|
194
|
-
}
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
reader.onerror = function () {
|
|
198
|
-
reject(new ValidationError('Ошибка чтения Blob'));
|
|
199
|
-
};
|
|
200
|
-
|
|
201
|
-
reader.readAsText(blob, 'UTF-8');
|
|
202
|
-
});
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
// Экспорт для Node.js совместимости
|
|
206
|
-
if (typeof module !== 'undefined' && module.exports) {
|
|
207
|
-
module.exports = {
|
|
208
|
-
downloadAsCsv,
|
|
209
|
-
parseCsvFile,
|
|
210
|
-
parseCsvFileStream,
|
|
211
|
-
createCsvBlob,
|
|
212
|
-
parseCsvBlob,
|
|
213
|
-
jsonToCsvStream,
|
|
214
|
-
jsonToNdjsonStream,
|
|
215
|
-
csvToJsonStream
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
export { jsonToCsvStream, jsonToNdjsonStream, csvToJsonStream };
|
package/src/browser/core.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
// Ядро jtcsv - только базовые функции JSON<->CSV
|
|
2
|
-
// Минимальный размер, максимальная производительность
|
|
3
|
-
|
|
4
|
-
import { jsonToCsv, preprocessData, deepUnwrap } from './json-to-csv-browser.js';
|
|
5
|
-
import { csvToJson, csvToJsonIterator, autoDetectDelimiter } from './csv-to-json-browser.js';
|
|
6
|
-
import {
|
|
7
|
-
downloadAsCsv,
|
|
8
|
-
parseCsvFile,
|
|
9
|
-
parseCsvFileStream,
|
|
10
|
-
jsonToCsvStream,
|
|
11
|
-
jsonToNdjsonStream,
|
|
12
|
-
csvToJsonStream
|
|
13
|
-
} from './browser-functions.js';
|
|
14
|
-
import {
|
|
15
|
-
ValidationError,
|
|
16
|
-
SecurityError,
|
|
17
|
-
FileSystemError,
|
|
18
|
-
ParsingError,
|
|
19
|
-
LimitError,
|
|
20
|
-
ConfigurationError,
|
|
21
|
-
ERROR_CODES
|
|
22
|
-
} from './errors-browser.js';
|
|
23
|
-
|
|
24
|
-
// Основной экспорт ядра
|
|
25
|
-
const jtcsvCore = {
|
|
26
|
-
// JSON to CSV функции
|
|
27
|
-
jsonToCsv,
|
|
28
|
-
preprocessData,
|
|
29
|
-
downloadAsCsv,
|
|
30
|
-
deepUnwrap,
|
|
31
|
-
|
|
32
|
-
// CSV to JSON функции
|
|
33
|
-
csvToJson,
|
|
34
|
-
csvToJsonIterator,
|
|
35
|
-
parseCsvFile,
|
|
36
|
-
parseCsvFileStream,
|
|
37
|
-
jsonToCsvStream,
|
|
38
|
-
jsonToNdjsonStream,
|
|
39
|
-
csvToJsonStream,
|
|
40
|
-
autoDetectDelimiter,
|
|
41
|
-
|
|
42
|
-
// Error classes
|
|
43
|
-
ValidationError,
|
|
44
|
-
SecurityError,
|
|
45
|
-
FileSystemError,
|
|
46
|
-
ParsingError,
|
|
47
|
-
LimitError,
|
|
48
|
-
ConfigurationError,
|
|
49
|
-
ERROR_CODES,
|
|
50
|
-
|
|
51
|
-
// Удобные алиасы
|
|
52
|
-
parse: csvToJson,
|
|
53
|
-
unparse: jsonToCsv,
|
|
54
|
-
|
|
55
|
-
// Версия
|
|
56
|
-
version: '3.0.0-core'
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
// Экспорт для разных сред
|
|
60
|
-
if (typeof module !== 'undefined' && module.exports) {
|
|
61
|
-
// Node.js CommonJS
|
|
62
|
-
module.exports = jtcsvCore;
|
|
63
|
-
} else if (typeof define === 'function' && define.amd) {
|
|
64
|
-
// AMD
|
|
65
|
-
define([], () => jtcsvCore);
|
|
66
|
-
} else if (typeof window !== 'undefined') {
|
|
67
|
-
// Браузер (глобальная переменная)
|
|
68
|
-
window.jtcsv = jtcsvCore;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export default jtcsvCore;
|
|
72
|
-
export {
|
|
73
|
-
jsonToCsv,
|
|
74
|
-
preprocessData,
|
|
75
|
-
downloadAsCsv,
|
|
76
|
-
deepUnwrap,
|
|
77
|
-
csvToJson,
|
|
78
|
-
csvToJsonIterator,
|
|
79
|
-
parseCsvFile,
|
|
80
|
-
parseCsvFileStream,
|
|
81
|
-
jsonToCsvStream,
|
|
82
|
-
jsonToNdjsonStream,
|
|
83
|
-
csvToJsonStream,
|
|
84
|
-
autoDetectDelimiter,
|
|
85
|
-
ValidationError,
|
|
86
|
-
SecurityError,
|
|
87
|
-
FileSystemError,
|
|
88
|
-
ParsingError,
|
|
89
|
-
LimitError,
|
|
90
|
-
ConfigurationError,
|
|
91
|
-
ERROR_CODES
|
|
92
|
-
};
|