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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors-browser.js","sourceRoot":"","sources":["../../../src/browser/errors-browser.ts"],"names":[],"mappings":"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","sourcesContent":["// Система ошибок для браузерной версии jtcsv\r\n// Адаптирована для работы без Node.js специфичных API\r\n\r\n/**\r\n * Детали ошибки\r\n */\r\nexport interface ErrorDetails {\n [key: string]: any;\n originalError?: Error;\n lineNumber?: number;\n limit?: any;\n actual?: any;\n hint?: string;\n docs?: string;\n context?: any;\n}\n\r\n/**\r\n * Базовый класс ошибки jtcsv\r\n */\r\nexport class JTCSVError extends Error {\n code: string;\n details: ErrorDetails;\n hint?: string;\n docs?: string;\n context?: any;\n\n constructor(message: string, code: string = 'JTCSV_ERROR', details: ErrorDetails = {}) {\n super(message);\n this.name = 'JTCSVError';\n this.code = code;\n this.details = details;\n this.hint = details.hint;\n this.docs = details.docs;\n this.context = details.context;\n \r\n // Сохранение stack trace\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, JTCSVError);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Ошибка валидации\r\n */\r\nexport class ValidationError extends JTCSVError {\r\n constructor(message: string, details: ErrorDetails = {}) {\r\n super(message, 'VALIDATION_ERROR', details);\r\n this.name = 'ValidationError';\r\n }\r\n}\r\n\r\n/**\r\n * Ошибка безопасности\r\n */\r\nexport class SecurityError extends JTCSVError {\r\n constructor(message: string, details: ErrorDetails = {}) {\r\n super(message, 'SECURITY_ERROR', details);\r\n this.name = 'SecurityError';\r\n }\r\n}\r\n\r\n/**\r\n * Ошибка файловой системы (адаптирована для браузера)\r\n */\r\nexport class FileSystemError extends JTCSVError {\r\n constructor(message: string, originalError?: Error, details: ErrorDetails = {}) {\r\n super(message, 'FILE_SYSTEM_ERROR', { ...details, originalError });\r\n this.name = 'FileSystemError';\r\n \r\n if (originalError && (originalError as any).code) {\r\n this.code = (originalError as any).code;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Ошибка парсинга\r\n */\r\nexport class ParsingError extends JTCSVError {\r\n lineNumber?: number;\r\n\r\n constructor(message: string, lineNumber?: number, details: ErrorDetails = {}) {\r\n super(message, 'PARSING_ERROR', { ...details, lineNumber });\r\n this.name = 'ParsingError';\r\n this.lineNumber = lineNumber;\r\n }\r\n}\r\n\r\n/**\r\n * Ошибка превышения лимита\r\n */\r\nexport class LimitError extends JTCSVError {\r\n limit: any;\r\n actual: any;\r\n\r\n constructor(message: string, limit: any, actual: any, details: ErrorDetails = {}) {\r\n super(message, 'LIMIT_ERROR', { ...details, limit, actual });\r\n this.name = 'LimitError';\r\n this.limit = limit;\r\n this.actual = actual;\r\n }\r\n}\r\n\r\n/**\r\n * Ошибка конфигурации\r\n */\r\nexport class ConfigurationError extends JTCSVError {\r\n constructor(message: string, details: ErrorDetails = {}) {\r\n super(message, 'CONFIGURATION_ERROR', details);\r\n this.name = 'ConfigurationError';\r\n }\r\n}\r\n\r\n/**\r\n * Коды ошибок\r\n */\r\nexport const ERROR_CODES = {\r\n JTCSV_ERROR: 'JTCSV_ERROR',\r\n VALIDATION_ERROR: 'VALIDATION_ERROR',\r\n SECURITY_ERROR: 'SECURITY_ERROR',\r\n FILE_SYSTEM_ERROR: 'FILE_SYSTEM_ERROR',\r\n PARSING_ERROR: 'PARSING_ERROR',\r\n LIMIT_ERROR: 'LIMIT_ERROR',\r\n CONFIGURATION_ERROR: 'CONFIGURATION_ERROR',\r\n INVALID_INPUT: 'INVALID_INPUT',\r\n SECURITY_VIOLATION: 'SECURITY_VIOLATION',\r\n FILE_NOT_FOUND: 'FILE_NOT_FOUND',\r\n PARSE_FAILED: 'PARSE_FAILED',\r\n SIZE_LIMIT: 'SIZE_LIMIT',\r\n INVALID_CONFIG: 'INVALID_CONFIG',\r\n UNKNOWN_ERROR: 'UNKNOWN_ERROR'\r\n} as const;\r\n\r\nexport type ErrorCode = typeof ERROR_CODES[keyof typeof ERROR_CODES];\r\n\r\n/**\r\n * Безопасное выполнение функции с обработкой ошибок\r\n * \r\n * @param fn - Функция для выполнения\r\n * @param errorCode - Код ошибки по умолчанию\r\n * @param errorDetails - Детали ошибки\r\n * @returns Результат выполнения функции\r\n */\r\nexport function safeExecute<T>(\r\n fn: () => T,\r\n errorCode: ErrorCode = 'UNKNOWN_ERROR',\r\n errorDetails: ErrorDetails = {}\r\n): T {\r\n try {\r\n if (typeof fn === 'function') {\r\n return fn();\r\n }\r\n throw new ValidationError('Function expected');\r\n } catch (error) {\r\n // Если ошибка уже является JTCSVError, перебросить её\r\n if (error instanceof JTCSVError) {\r\n throw error;\r\n }\r\n \r\n // Определить тип ошибки на основе сообщения или кода\r\n let enhancedError: JTCSVError;\r\n const errorMessage = (error as Error).message || String(error);\r\n \r\n if (errorMessage.includes('validation') || errorMessage.includes('Validation')) {\r\n enhancedError = new ValidationError(errorMessage, { ...errorDetails, originalError: error as Error });\r\n } else if (errorMessage.includes('security') || errorMessage.includes('Security')) {\r\n enhancedError = new SecurityError(errorMessage, { ...errorDetails, originalError: error as Error });\r\n } else if (errorMessage.includes('parsing') || errorMessage.includes('Parsing')) {\r\n enhancedError = new ParsingError(errorMessage, undefined, { ...errorDetails, originalError: error as Error });\r\n } else if (errorMessage.includes('limit') || errorMessage.includes('Limit')) {\r\n enhancedError = new LimitError(errorMessage, null, null, { ...errorDetails, originalError: error as Error });\r\n } else if (errorMessage.includes('configuration') || errorMessage.includes('Configuration')) {\r\n enhancedError = new ConfigurationError(errorMessage, { ...errorDetails, originalError: error as Error });\r\n } else if (errorMessage.includes('file') || errorMessage.includes('File')) {\r\n enhancedError = new FileSystemError(errorMessage, error as Error, errorDetails);\r\n } else {\r\n // Общая ошибка\r\n enhancedError = new JTCSVError(errorMessage, errorCode, { ...errorDetails, originalError: error as Error });\r\n }\r\n \r\n // Сохранить оригинальный stack trace если возможно\r\n if ((error as Error).stack) {\r\n enhancedError.stack = (error as Error).stack;\r\n }\r\n \r\n throw enhancedError;\r\n }\r\n}\r\n\r\n/**\r\n * Асинхронная версия safeExecute\r\n */\r\nexport async function safeExecuteAsync<T>(\r\n fn: () => Promise<T> | T,\r\n errorCode: ErrorCode = 'UNKNOWN_ERROR',\r\n errorDetails: ErrorDetails = {}\r\n): Promise<T> {\r\n try {\r\n if (typeof fn === 'function') {\r\n return await fn();\r\n }\r\n throw new ValidationError('Function expected');\r\n } catch (error) {\r\n // Если ошибка уже является JTCSVError, перебросить её\r\n if (error instanceof JTCSVError) {\r\n throw error;\r\n }\r\n \r\n // Определить тип ошибки\r\n let enhancedError: JTCSVError;\r\n const errorMessage = (error as Error).message || String(error);\r\n \r\n if (errorMessage.includes('validation') || errorMessage.includes('Validation')) {\r\n enhancedError = new ValidationError(errorMessage, { ...errorDetails, originalError: error as Error });\r\n } else if (errorMessage.includes('security') || errorMessage.includes('Security')) {\r\n enhancedError = new SecurityError(errorMessage, { ...errorDetails, originalError: error as Error });\r\n } else if (errorMessage.includes('parsing') || errorMessage.includes('Parsing')) {\r\n enhancedError = new ParsingError(errorMessage, undefined, { ...errorDetails, originalError: error as Error });\r\n } else if (errorMessage.includes('limit') || errorMessage.includes('Limit')) {\r\n enhancedError = new LimitError(errorMessage, null, null, { ...errorDetails, originalError: error as Error });\r\n } else if (errorMessage.includes('configuration') || errorMessage.includes('Configuration')) {\r\n enhancedError = new ConfigurationError(errorMessage, { ...errorDetails, originalError: error as Error });\r\n } else if (errorMessage.includes('file') || errorMessage.includes('File')) {\r\n enhancedError = new FileSystemError(errorMessage, error as Error, errorDetails);\r\n } else {\r\n enhancedError = new JTCSVError(errorMessage, errorCode, { ...errorDetails, originalError: error as Error });\r\n }\r\n \r\n if ((error as Error).stack) {\r\n enhancedError.stack = (error as Error).stack;\r\n }\r\n \r\n throw enhancedError;\r\n }\r\n}\r\n\r\n/**\r\n * Создать сообщение об ошибке\r\n */\r\nexport function createErrorMessage(\r\n error: Error | JTCSVError,\r\n includeStack: boolean = false\r\n): string {\r\n let message = error.message || 'Unknown error';\r\n \r\n if (error instanceof JTCSVError) {\n message = `[${error.code}] ${message}`;\n \n if (error instanceof ParsingError && error.lineNumber) {\n message += ` (line ${error.lineNumber})`;\n }\n \n if (error instanceof LimitError && error.limit && error.actual) {\n message += ` (limit: ${error.limit}, actual: ${error.actual})`;\n }\n\n if (error.hint) {\n message += `\\nHint: ${error.hint}`;\n }\n\n if (error.docs) {\n message += `\\nDocs: ${error.docs}`;\n }\n }\n \r\n if (includeStack && error.stack) {\r\n message += `\\n${error.stack}`;\r\n }\r\n \r\n return message;\r\n}\r\n\r\n/**\r\n * Обработка ошибки\r\n */\r\nexport function handleError(\r\n error: Error | JTCSVError,\r\n options: {\r\n log?: boolean;\r\n throw?: boolean;\r\n format?: boolean;\r\n } = {}\r\n): string {\r\n const { log = true, throw: shouldThrow = false, format = true } = options;\r\n const message = format ? createErrorMessage(error) : error.message;\r\n \r\n if (log) {\r\n console.error(`[jtcsv] ${message}`);\r\n \r\n if (error instanceof JTCSVError && error.details) {\r\n console.error('Error details:', error.details);\r\n }\r\n }\r\n \r\n if (shouldThrow) {\r\n throw error;\r\n }\r\n \r\n return message;\r\n}\r\n\r\n// Экспорт для Node.js совместимости\r\nif (typeof module !== 'undefined' && module.exports) {\r\n module.exports = {\r\n JTCSVError,\r\n ValidationError,\r\n SecurityError,\r\n FileSystemError,\r\n ParsingError,\r\n LimitError,\r\n ConfigurationError,\r\n ERROR_CODES,\r\n safeExecute,\r\n safeExecuteAsync,\r\n createErrorMessage,\r\n handleError\r\n };\r\n}\n"]}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadExpressPlugin = loadExpressPlugin;
37
+ exports.loadFastifyPlugin = loadFastifyPlugin;
38
+ exports.loadNextJsPlugin = loadNextJsPlugin;
39
+ exports.loadNestJsPlugin = loadNestJsPlugin;
40
+ exports.loadRemixPlugin = loadRemixPlugin;
41
+ exports.loadNuxtPlugin = loadNuxtPlugin;
42
+ exports.loadSvelteKitPlugin = loadSvelteKitPlugin;
43
+ exports.loadHonoPlugin = loadHonoPlugin;
44
+ exports.loadTrpcPlugin = loadTrpcPlugin;
45
+ const jtcsvPlugins = {};
46
+ async function loadExpressPlugin() {
47
+ const mod = await Promise.resolve().then(() => __importStar(require('../../../plugins/express-middleware/index.js')));
48
+ return mod.default || mod;
49
+ }
50
+ async function loadFastifyPlugin() {
51
+ const mod = await Promise.resolve().then(() => __importStar(require('../../../plugins/fastify-plugin/index.js')));
52
+ return mod.default || mod;
53
+ }
54
+ async function loadNextJsPlugin() {
55
+ const mod = await Promise.resolve().then(() => __importStar(require('../../../plugins/nextjs-api/index.js')));
56
+ return mod.default || mod;
57
+ }
58
+ async function loadNestJsPlugin() {
59
+ const mod = await Promise.resolve().then(() => __importStar(require('../../../plugins/nestjs/index.js')));
60
+ return mod.default || mod;
61
+ }
62
+ async function loadRemixPlugin() {
63
+ const mod = await Promise.resolve().then(() => __importStar(require('../../../plugins/remix/index.js')));
64
+ return mod.default || mod;
65
+ }
66
+ async function loadNuxtPlugin() {
67
+ const mod = await Promise.resolve().then(() => __importStar(require('../../../plugins/nuxt/index.js')));
68
+ return mod.default || mod;
69
+ }
70
+ async function loadSvelteKitPlugin() {
71
+ const mod = await Promise.resolve().then(() => __importStar(require('../../../plugins/sveltekit/index.js')));
72
+ return mod.default || mod;
73
+ }
74
+ async function loadHonoPlugin() {
75
+ const mod = await Promise.resolve().then(() => __importStar(require('../../../plugins/hono/index.js')));
76
+ return mod.default || mod;
77
+ }
78
+ async function loadTrpcPlugin() {
79
+ const mod = await Promise.resolve().then(() => __importStar(require('../../../plugins/trpc/index.js')));
80
+ return mod.default || mod;
81
+ }
82
+ Object.assign(jtcsvPlugins, {
83
+ loadExpressPlugin,
84
+ loadFastifyPlugin,
85
+ loadNextJsPlugin,
86
+ loadNestJsPlugin,
87
+ loadRemixPlugin,
88
+ loadNuxtPlugin,
89
+ loadSvelteKitPlugin,
90
+ loadHonoPlugin,
91
+ loadTrpcPlugin
92
+ });
93
+ if (typeof module !== 'undefined' && module.exports) {
94
+ module.exports = jtcsvPlugins;
95
+ }
96
+ else if (typeof define === 'function' && define.amd) {
97
+ define([], () => jtcsvPlugins);
98
+ }
99
+ else if (typeof window !== 'undefined' && window.jtcsv) {
100
+ if (!window.jtcsv.plugins) {
101
+ window.jtcsv.plugins = {};
102
+ }
103
+ Object.assign(window.jtcsv.plugins, jtcsvPlugins);
104
+ }
105
+ exports.default = jtcsvPlugins;
106
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../../src/browser/extensions/plugins.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmFE,8CAAiB;AACjB,8CAAiB;AACjB,4CAAgB;AAChB,4CAAgB;AAChB,0CAAe;AACf,wCAAc;AACd,kDAAmB;AACnB,wCAAc;AACd,wCAAc;AAxFhB,MAAM,YAAY,GAAG,EAGpB,CAAC;AAIF,KAAK,UAAU,iBAAiB;IAC9B,MAAM,GAAG,GAAG,wDAAa,8CAA8C,GAAC,CAAC;IACzE,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,GAAG,GAAG,wDAAa,0CAA0C,GAAC,CAAC;IACrE,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,gBAAgB;IAE7B,MAAM,GAAG,GAAG,wDAAa,sCAAsC,GAAC,CAAC;IACjE,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,MAAM,GAAG,GAAG,wDAAa,kCAAkC,GAAC,CAAC;IAC7D,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,MAAM,GAAG,GAAG,wDAAa,iCAAiC,GAAC,CAAC;IAC5D,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,GAAG,GAAG,wDAAa,gCAAgC,GAAC,CAAC;IAC3D,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,mBAAmB;IAChC,MAAM,GAAG,GAAG,wDAAa,qCAAqC,GAAC,CAAC;IAChE,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,GAAG,GAAG,wDAAa,gCAAgC,GAAC,CAAC;IAC3D,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,GAAG,GAAG,wDAAa,gCAAgC,GAAC,CAAC;IAC3D,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;IAC1B,iBAAiB;IACjB,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,mBAAmB;IACnB,cAAc;IACd,cAAc;CACf,CAAC,CAAC;AAGH,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;IACpD,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC;AAChC,CAAC;KAAM,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;IACtD,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC;KAAM,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IAEzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACpD,CAAC;AAED,kBAAe,YAAY,CAAC","sourcesContent":["// Расширение плагинов для jtcsv\r\n// Подключает все плагины (express, fastify, nextjs и т.д.)\r\n\r\nconst jtcsvPlugins = {\r\n // Плагины будут добавлены динамически при импорте\r\n // Это placeholder для будущей реализации\r\n};\r\n\r\n// Динамический импорт плагинов (ленивая загрузка)\r\n// Пути относительно корня проекта (плагины находятся в plugins/)\r\nasync function loadExpressPlugin() {\r\n const mod = await import('../../../plugins/express-middleware/index.js');\r\n return mod.default || mod;\r\n}\r\n\r\nasync function loadFastifyPlugin() {\r\n const mod = await import('../../../plugins/fastify-plugin/index.js');\r\n return mod.default || mod;\r\n}\r\n\r\nasync function loadNextJsPlugin() {\n // @ts-ignore - the TS source lives in .tsx, use runtime JS\n const mod = await import('../../../plugins/nextjs-api/index.js');\n return mod.default || mod;\n}\n\r\nasync function loadNestJsPlugin() {\r\n const mod = await import('../../../plugins/nestjs/index.js');\r\n return mod.default || mod;\r\n}\r\n\r\nasync function loadRemixPlugin() {\r\n const mod = await import('../../../plugins/remix/index.js');\r\n return mod.default || mod;\r\n}\r\n\r\nasync function loadNuxtPlugin() {\r\n const mod = await import('../../../plugins/nuxt/index.js');\r\n return mod.default || mod;\r\n}\r\n\r\nasync function loadSvelteKitPlugin() {\r\n const mod = await import('../../../plugins/sveltekit/index.js');\r\n return mod.default || mod;\r\n}\r\n\r\nasync function loadHonoPlugin() {\r\n const mod = await import('../../../plugins/hono/index.js');\r\n return mod.default || mod;\r\n}\r\n\r\nasync function loadTrpcPlugin() {\r\n const mod = await import('../../../plugins/trpc/index.js');\r\n return mod.default || mod;\r\n}\r\n\r\nObject.assign(jtcsvPlugins, {\r\n loadExpressPlugin,\r\n loadFastifyPlugin,\r\n loadNextJsPlugin,\r\n loadNestJsPlugin,\r\n loadRemixPlugin,\r\n loadNuxtPlugin,\r\n loadSvelteKitPlugin,\r\n loadHonoPlugin,\r\n loadTrpcPlugin\r\n});\r\n\r\n// Экспорт\r\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = jtcsvPlugins;\n} else if (typeof define === 'function' && define.amd) {\n define([], () => jtcsvPlugins);\n} else if (typeof window !== 'undefined' && window.jtcsv) {\n // Расширяем глобальный jtcsv, если он существует\r\n if (!window.jtcsv.plugins) {\n window.jtcsv.plugins = {};\n }\r\n Object.assign(window.jtcsv.plugins, jtcsvPlugins);\r\n}\n\r\nexport default jtcsvPlugins;\r\nexport {\r\n loadExpressPlugin,\r\n loadFastifyPlugin,\r\n loadNextJsPlugin,\r\n loadNestJsPlugin,\r\n loadRemixPlugin,\r\n loadNuxtPlugin,\r\n loadSvelteKitPlugin,\r\n loadHonoPlugin,\r\n loadTrpcPlugin\r\n};\n"]}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseCSVWithWorker = exports.createWorkerPool = void 0;
37
+ exports.createWorkerPoolLazy = createWorkerPoolLazy;
38
+ exports.parseCSVWithWorkerLazy = parseCSVWithWorkerLazy;
39
+ const worker_pool_1 = require("../workers/worker-pool");
40
+ Object.defineProperty(exports, "createWorkerPool", { enumerable: true, get: function () { return worker_pool_1.createWorkerPool; } });
41
+ Object.defineProperty(exports, "parseCSVWithWorker", { enumerable: true, get: function () { return worker_pool_1.parseCSVWithWorker; } });
42
+ async function createWorkerPoolLazy(options = {}) {
43
+ const mod = await Promise.resolve().then(() => __importStar(require('../workers/worker-pool')));
44
+ return mod.createWorkerPool(options);
45
+ }
46
+ async function parseCSVWithWorkerLazy(csvInput, options = {}, onProgress = null) {
47
+ const mod = await Promise.resolve().then(() => __importStar(require('../workers/worker-pool')));
48
+ return mod.parseCSVWithWorker(csvInput, options, onProgress);
49
+ }
50
+ const jtcsvWorkers = {
51
+ createWorkerPool: worker_pool_1.createWorkerPool,
52
+ parseCSVWithWorker: worker_pool_1.parseCSVWithWorker,
53
+ createWorkerPoolLazy,
54
+ parseCSVWithWorkerLazy
55
+ };
56
+ if (typeof module !== 'undefined' && module.exports) {
57
+ module.exports = jtcsvWorkers;
58
+ }
59
+ else if (typeof define === 'function' && define.amd) {
60
+ define([], () => jtcsvWorkers);
61
+ }
62
+ else if (typeof window !== 'undefined' && window.jtcsv) {
63
+ Object.assign(window.jtcsv, jtcsvWorkers);
64
+ }
65
+ exports.default = jtcsvWorkers;
66
+ //# sourceMappingURL=workers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workers.js","sourceRoot":"","sources":["../../../../src/browser/extensions/workers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCE,oDAAoB;AACpB,wDAAsB;AAlCxB,wDAA8E;AA+B5E,iGA/BO,8BAAgB,OA+BP;AAChB,mGAhCyB,gCAAkB,OAgCzB;AA9BpB,KAAK,UAAU,oBAAoB,CAAC,OAAO,GAAG,EAAE;IAC9C,MAAM,GAAG,GAAG,wDAAa,wBAAwB,GAAC,CAAC;IACnD,OAAO,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,UAAU,GAAG,IAAI;IAC7E,MAAM,GAAG,GAAG,wDAAa,wBAAwB,GAAC,CAAC;IACnD,OAAO,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,YAAY,GAAG;IACnB,gBAAgB,EAAhB,8BAAgB;IAChB,kBAAkB,EAAlB,gCAAkB;IAClB,oBAAoB;IACpB,sBAAsB;CACvB,CAAC;AAGF,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;IACpD,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC;AAChC,CAAC;KAAM,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;IACtD,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC;AACjC,CAAC;KAAM,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;IAEzD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;AAC5C,CAAC;AAED,kBAAe,YAAY,CAAC","sourcesContent":["// Расширение Web Workers для jtcsv\r\n// Дополнительный модуль для параллельной обработки больших CSV\r\n\r\nimport { createWorkerPool, parseCSVWithWorker } from '../workers/worker-pool';\n\r\nasync function createWorkerPoolLazy(options = {}) {\r\n const mod = await import('../workers/worker-pool');\n return mod.createWorkerPool(options);\r\n}\r\n\r\nasync function parseCSVWithWorkerLazy(csvInput, options = {}, onProgress = null) {\r\n const mod = await import('../workers/worker-pool');\n return mod.parseCSVWithWorker(csvInput, options, onProgress);\r\n}\r\n\r\nconst jtcsvWorkers = {\r\n createWorkerPool,\r\n parseCSVWithWorker,\r\n createWorkerPoolLazy,\r\n parseCSVWithWorkerLazy\r\n};\r\n\r\n// Экспорт\r\nif (typeof module !== 'undefined' && module.exports) {\n module.exports = jtcsvWorkers;\n} else if (typeof define === 'function' && define.amd) {\n define([], () => jtcsvWorkers);\n} else if (typeof window !== 'undefined' && window.jtcsv) {\n // Расширяем глобальный jtcsv, если он существует\r\n Object.assign(window.jtcsv, jtcsvWorkers);\r\n}\r\n\r\nexport default jtcsvWorkers;\r\nexport {\r\n createWorkerPool,\r\n parseCSVWithWorker,\r\n createWorkerPoolLazy,\r\n parseCSVWithWorkerLazy\r\n};\n"]}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ERROR_CODES = exports.ConfigurationError = exports.LimitError = exports.ParsingError = exports.FileSystemError = exports.SecurityError = exports.ValidationError = exports.parseCSVWithWorker = exports.createWorkerPool = exports.autoDetectDelimiter = exports.csvToJsonStream = exports.jsonToNdjsonStream = exports.jsonToCsvStream = exports.parseCsvFileStream = exports.parseCsvFile = exports.csvToJsonIterator = exports.csvToJson = exports.deepUnwrap = exports.downloadAsCsv = exports.preprocessData = exports.jsonToCsv = void 0;
37
+ exports.createWorkerPoolLazy = createWorkerPoolLazy;
38
+ exports.parseCSVWithWorkerLazy = parseCSVWithWorkerLazy;
39
+ exports.jsonToCsvAsync = jsonToCsvAsync;
40
+ exports.csvToJsonAsync = csvToJsonAsync;
41
+ exports.parseCsvFileAsync = parseCsvFileAsync;
42
+ exports.autoDetectDelimiterAsync = autoDetectDelimiterAsync;
43
+ exports.downloadAsCsvAsync = downloadAsCsvAsync;
44
+ const jsonToCsvBrowser = __importStar(require("./json-to-csv-browser"));
45
+ const csvToJsonBrowser = __importStar(require("./csv-to-json-browser"));
46
+ const browser_functions_1 = require("./browser-functions");
47
+ Object.defineProperty(exports, "downloadAsCsv", { enumerable: true, get: function () { return browser_functions_1.downloadAsCsv; } });
48
+ Object.defineProperty(exports, "parseCsvFile", { enumerable: true, get: function () { return browser_functions_1.parseCsvFile; } });
49
+ Object.defineProperty(exports, "parseCsvFileStream", { enumerable: true, get: function () { return browser_functions_1.parseCsvFileStream; } });
50
+ Object.defineProperty(exports, "jsonToCsvStream", { enumerable: true, get: function () { return browser_functions_1.jsonToCsvStream; } });
51
+ Object.defineProperty(exports, "jsonToNdjsonStream", { enumerable: true, get: function () { return browser_functions_1.jsonToNdjsonStream; } });
52
+ Object.defineProperty(exports, "csvToJsonStream", { enumerable: true, get: function () { return browser_functions_1.csvToJsonStream; } });
53
+ const worker_pool_1 = require("./workers/worker-pool");
54
+ Object.defineProperty(exports, "createWorkerPool", { enumerable: true, get: function () { return worker_pool_1.createWorkerPool; } });
55
+ Object.defineProperty(exports, "parseCSVWithWorker", { enumerable: true, get: function () { return worker_pool_1.parseCSVWithWorker; } });
56
+ const errors_browser_1 = require("./errors-browser");
57
+ Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return errors_browser_1.ValidationError; } });
58
+ Object.defineProperty(exports, "SecurityError", { enumerable: true, get: function () { return errors_browser_1.SecurityError; } });
59
+ Object.defineProperty(exports, "FileSystemError", { enumerable: true, get: function () { return errors_browser_1.FileSystemError; } });
60
+ Object.defineProperty(exports, "ParsingError", { enumerable: true, get: function () { return errors_browser_1.ParsingError; } });
61
+ Object.defineProperty(exports, "LimitError", { enumerable: true, get: function () { return errors_browser_1.LimitError; } });
62
+ Object.defineProperty(exports, "ConfigurationError", { enumerable: true, get: function () { return errors_browser_1.ConfigurationError; } });
63
+ Object.defineProperty(exports, "ERROR_CODES", { enumerable: true, get: function () { return errors_browser_1.ERROR_CODES; } });
64
+ const { jsonToCsv, preprocessData, deepUnwrap } = jsonToCsvBrowser;
65
+ exports.jsonToCsv = jsonToCsv;
66
+ exports.preprocessData = preprocessData;
67
+ exports.deepUnwrap = deepUnwrap;
68
+ const { csvToJson, csvToJsonIterator, autoDetectDelimiter } = csvToJsonBrowser;
69
+ exports.csvToJson = csvToJson;
70
+ exports.csvToJsonIterator = csvToJsonIterator;
71
+ exports.autoDetectDelimiter = autoDetectDelimiter;
72
+ async function createWorkerPoolLazy(options = {}) {
73
+ const mod = await Promise.resolve().then(() => __importStar(require('./workers/worker-pool')));
74
+ return mod.createWorkerPool(options);
75
+ }
76
+ async function parseCSVWithWorkerLazy(csvInput, options = {}, onProgress) {
77
+ const mod = await Promise.resolve().then(() => __importStar(require('./workers/worker-pool')));
78
+ return mod.parseCSVWithWorker(csvInput, options, onProgress);
79
+ }
80
+ async function jsonToCsvAsync(data, options = {}) {
81
+ return jsonToCsv(data, options);
82
+ }
83
+ async function csvToJsonAsync(csv, options = {}) {
84
+ return csvToJson(csv, options);
85
+ }
86
+ async function parseCsvFileAsync(file, options = {}) {
87
+ return (0, browser_functions_1.parseCsvFile)(file, options);
88
+ }
89
+ async function autoDetectDelimiterAsync(csv) {
90
+ return autoDetectDelimiter(csv);
91
+ }
92
+ async function downloadAsCsvAsync(data, filename = 'export.csv', options = {}) {
93
+ return (0, browser_functions_1.downloadAsCsv)(data, filename, options);
94
+ }
95
+ const jtcsv = {
96
+ jsonToCsv,
97
+ preprocessData,
98
+ downloadAsCsv: browser_functions_1.downloadAsCsv,
99
+ deepUnwrap,
100
+ csvToJson,
101
+ csvToJsonIterator,
102
+ parseCsvFile: browser_functions_1.parseCsvFile,
103
+ parseCsvFileStream: browser_functions_1.parseCsvFileStream,
104
+ jsonToCsvStream: browser_functions_1.jsonToCsvStream,
105
+ jsonToNdjsonStream: browser_functions_1.jsonToNdjsonStream,
106
+ csvToJsonStream: browser_functions_1.csvToJsonStream,
107
+ autoDetectDelimiter,
108
+ createWorkerPool: worker_pool_1.createWorkerPool,
109
+ parseCSVWithWorker: worker_pool_1.parseCSVWithWorker,
110
+ createWorkerPoolLazy,
111
+ parseCSVWithWorkerLazy,
112
+ jsonToCsvAsync,
113
+ csvToJsonAsync,
114
+ parseCsvFileAsync,
115
+ autoDetectDelimiterAsync,
116
+ downloadAsCsvAsync,
117
+ ValidationError: errors_browser_1.ValidationError,
118
+ SecurityError: errors_browser_1.SecurityError,
119
+ FileSystemError: errors_browser_1.FileSystemError,
120
+ ParsingError: errors_browser_1.ParsingError,
121
+ LimitError: errors_browser_1.LimitError,
122
+ ConfigurationError: errors_browser_1.ConfigurationError,
123
+ ERROR_CODES: errors_browser_1.ERROR_CODES,
124
+ parse: csvToJson,
125
+ unparse: jsonToCsv,
126
+ parseAsync: csvToJsonAsync,
127
+ unparseAsync: jsonToCsvAsync,
128
+ version: '2.0.0-browser'
129
+ };
130
+ if (typeof module !== 'undefined' && module.exports) {
131
+ module.exports = jtcsv;
132
+ }
133
+ else if (typeof define === 'function' && define.amd) {
134
+ define([], () => jtcsv);
135
+ }
136
+ else if (typeof window !== 'undefined') {
137
+ window.jtcsv = jtcsv;
138
+ }
139
+ exports.default = jtcsv;
140
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+KE,oDAAoB;AACpB,wDAAsB;AAEtB,wCAAc;AACd,wCAAc;AACd,8CAAiB;AACjB,4DAAwB;AACxB,gDAAkB;AAnLpB,wEAA0D;AAC1D,wEAA0D;AAC1D,2DAO6B;AAuJ3B,8FA7JA,iCAAa,OA6JA;AAIb,6FAhKA,gCAAY,OAgKA;AACZ,mGAhKA,sCAAkB,OAgKA;AAClB,gGAhKA,mCAAe,OAgKA;AACf,mGAhKA,sCAAkB,OAgKA;AAClB,gGAhKA,mCAAe,OAgKA;AA9JjB,uDAA6E;AAgK3E,iGAhKO,8BAAgB,OAgKP;AAChB,mGAjKyB,gCAAkB,OAiKzB;AAhKpB,qDAQ0B;AAkKxB,gGAzKA,gCAAe,OAyKA;AACf,8FAzKA,8BAAa,OAyKA;AACb,gGAzKA,gCAAe,OAyKA;AACf,6FAzKA,6BAAY,OAyKA;AACZ,2FAzKA,2BAAU,OAyKA;AACV,mGAzKA,mCAAkB,OAyKA;AAClB,4FAzKA,4BAAW,OAyKA;AApKb,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,gBAAuB,CAAC;AAuIxE,8BAAS;AACT,wCAAc;AAEd,gCAAU;AAzIZ,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,GAAG,gBAAuB,CAAC;AA0IpF,8BAAS;AACT,8CAAiB;AAMjB,kDAAmB;AAnIrB,KAAK,UAAU,oBAAoB,CAAC,UAAe,EAAE;IACnD,MAAM,GAAG,GAAG,wDAAa,uBAAuB,GAAC,CAAC;IAClD,OAAO,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAKD,KAAK,UAAU,sBAAsB,CACnC,QAAuB,EACvB,UAA4B,EAAE,EAC9B,UAAuC;IAEvC,MAAM,GAAG,GAAG,wDAAa,uBAAuB,GAAC,CAAC;IAClD,OAAO,GAAG,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAC/D,CAAC;AAKD,KAAK,UAAU,cAAc,CAAC,IAAS,EAAE,UAA4B,EAAE;IACrE,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAKD,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,UAA4B,EAAE;IACvE,OAAO,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC;AAKD,KAAK,UAAU,iBAAiB,CAAC,IAAU,EAAE,UAA4B,EAAE;IACzE,OAAO,IAAA,gCAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAKD,KAAK,UAAU,wBAAwB,CAAC,GAAW;IACjD,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAKD,KAAK,UAAU,kBAAkB,CAC/B,IAAS,EACT,WAAmB,YAAY,EAC/B,UAA4B,EAAE;IAE9B,OAAO,IAAA,iCAAa,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAGD,MAAM,KAAK,GAAG;IAEZ,SAAS;IACT,cAAc;IACd,aAAa,EAAb,iCAAa;IACb,UAAU;IAGV,SAAS;IACT,iBAAiB;IACjB,YAAY,EAAZ,gCAAY;IACZ,kBAAkB,EAAlB,sCAAkB;IAClB,eAAe,EAAf,mCAAe;IACf,kBAAkB,EAAlB,sCAAkB;IAClB,eAAe,EAAf,mCAAe;IACf,mBAAmB;IAGnB,gBAAgB,EAAhB,8BAAgB;IAChB,kBAAkB,EAAlB,gCAAkB;IAClB,oBAAoB;IACpB,sBAAsB;IAGtB,cAAc;IACd,cAAc;IACd,iBAAiB;IACjB,wBAAwB;IACxB,kBAAkB;IAGlB,eAAe,EAAf,gCAAe;IACf,aAAa,EAAb,8BAAa;IACb,eAAe,EAAf,gCAAe;IACf,YAAY,EAAZ,6BAAY;IACZ,UAAU,EAAV,2BAAU;IACV,kBAAkB,EAAlB,mCAAkB;IAClB,WAAW,EAAX,4BAAW;IAGX,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,cAAc;IAC1B,YAAY,EAAE,cAAc;IAG5B,OAAO,EAAE,eAAe;CACzB,CAAC;AAGF,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;IAEpD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AACzB,CAAC;KAAM,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;IAEtD,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC;KAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAExC,MAAc,CAAC,KAAK,GAAG,KAAK,CAAC;AAChC,CAAC;AAED,kBAAe,KAAK,CAAC","sourcesContent":["// Браузерный entry point для jtcsv\r\n// Экспортирует все функции с поддержкой браузера\r\n\r\nimport * as jsonToCsvBrowser from './json-to-csv-browser';\nimport * as csvToJsonBrowser from './csv-to-json-browser';\nimport {\r\n downloadAsCsv,\r\n parseCsvFile,\r\n parseCsvFileStream,\r\n jsonToCsvStream,\r\n jsonToNdjsonStream,\r\n csvToJsonStream\r\n} from './browser-functions';\nimport { createWorkerPool, parseCSVWithWorker } from './workers/worker-pool';\nimport {\r\n ValidationError,\r\n SecurityError,\r\n FileSystemError,\r\n ParsingError,\r\n LimitError,\r\n ConfigurationError,\r\n ERROR_CODES\r\n} from './errors-browser';\n\r\nimport type { JsonToCsvOptions, CsvToJsonOptions } from '../types';\n\nconst { jsonToCsv, preprocessData, deepUnwrap } = jsonToCsvBrowser as any;\nconst { csvToJson, csvToJsonIterator, autoDetectDelimiter } = csvToJsonBrowser as any;\n\r\n/**\r\n * Опции для ленивой инициализации Worker Pool\r\n */\r\ninterface WorkerPoolOptions {\r\n size?: number;\r\n timeout?: number;\r\n onError?: (error: Error) => void;\r\n}\r\n\r\n/**\r\n * Ленивая инициализация Worker Pool\r\n */\r\nasync function createWorkerPoolLazy(options: any = {}): Promise<any> {\r\n const mod = await import('./workers/worker-pool');\n return mod.createWorkerPool(options);\r\n}\r\n\r\n/**\r\n * Ленивый парсинг CSV с использованием Worker\r\n */\r\nasync function parseCSVWithWorkerLazy(\r\n csvInput: string | File,\r\n options: CsvToJsonOptions = {},\r\n onProgress?: (progress: number) => void\r\n): Promise<any[]> {\r\n const mod = await import('./workers/worker-pool');\n return mod.parseCSVWithWorker(csvInput, options, onProgress);\r\n}\r\n\r\n/**\r\n * Асинхронная версия jsonToCsv\r\n */\r\nasync function jsonToCsvAsync(data: any, options: JsonToCsvOptions = {}): Promise<string> {\r\n return jsonToCsv(data, options);\r\n}\r\n\r\n/**\r\n * Асинхронная версия csvToJson\r\n */\r\nasync function csvToJsonAsync(csv: string, options: CsvToJsonOptions = {}): Promise<any[]> {\r\n return csvToJson(csv, options);\r\n}\r\n\r\n/**\r\n * Асинхронная версия parseCsvFile\r\n */\r\nasync function parseCsvFileAsync(file: File, options: CsvToJsonOptions = {}): Promise<any[]> {\r\n return parseCsvFile(file, options);\r\n}\r\n\r\n/**\r\n * Асинхронная версия autoDetectDelimiter\r\n */\r\nasync function autoDetectDelimiterAsync(csv: string): Promise<string> {\r\n return autoDetectDelimiter(csv);\r\n}\r\n\r\n/**\r\n * Асинхронная версия downloadAsCsv\r\n */\r\nasync function downloadAsCsvAsync(\r\n data: any,\r\n filename: string = 'export.csv',\r\n options: JsonToCsvOptions = {}\r\n): Promise<void> {\r\n return downloadAsCsv(data, filename, options);\r\n}\r\n\r\n// Основной экспорт\r\nconst jtcsv = {\r\n // JSON to CSV функции\r\n jsonToCsv,\r\n preprocessData,\r\n downloadAsCsv,\r\n deepUnwrap,\r\n \r\n // CSV to JSON функции\r\n csvToJson,\r\n csvToJsonIterator,\r\n parseCsvFile,\r\n parseCsvFileStream,\r\n jsonToCsvStream,\r\n jsonToNdjsonStream,\r\n csvToJsonStream,\r\n autoDetectDelimiter,\r\n \r\n // Web Workers функции\r\n createWorkerPool,\r\n parseCSVWithWorker,\r\n createWorkerPoolLazy,\r\n parseCSVWithWorkerLazy,\r\n \r\n // Асинхронные функции\r\n jsonToCsvAsync,\r\n csvToJsonAsync,\r\n parseCsvFileAsync,\r\n autoDetectDelimiterAsync,\r\n downloadAsCsvAsync,\r\n \r\n // Error classes\r\n ValidationError,\r\n SecurityError,\r\n FileSystemError,\r\n ParsingError,\r\n LimitError,\r\n ConfigurationError,\r\n ERROR_CODES,\r\n \r\n // Удобные алиасы\r\n parse: csvToJson,\r\n unparse: jsonToCsv,\r\n parseAsync: csvToJsonAsync,\r\n unparseAsync: jsonToCsvAsync,\r\n \r\n // Версия\r\n version: '2.0.0-browser'\r\n};\r\n\r\n// Экспорт для разных сред\r\nif (typeof module !== 'undefined' && module.exports) {\r\n // Node.js CommonJS\r\n module.exports = jtcsv;\r\n} else if (typeof define === 'function' && define.amd) {\r\n // AMD\r\n define([], () => jtcsv);\r\n} else if (typeof window !== 'undefined') {\r\n // Браузер (глобальная переменная)\r\n (window as any).jtcsv = jtcsv;\r\n}\r\n\r\nexport default jtcsv;\r\nexport {\r\n jsonToCsv,\r\n preprocessData,\r\n downloadAsCsv,\r\n deepUnwrap,\r\n csvToJson,\r\n csvToJsonIterator,\r\n parseCsvFile,\r\n parseCsvFileStream,\r\n jsonToCsvStream,\r\n jsonToNdjsonStream,\r\n csvToJsonStream,\r\n autoDetectDelimiter,\r\n createWorkerPool,\r\n parseCSVWithWorker,\r\n createWorkerPoolLazy,\r\n parseCSVWithWorkerLazy,\r\n // Асинхронные функции\r\n jsonToCsvAsync,\r\n csvToJsonAsync,\r\n parseCsvFileAsync,\r\n autoDetectDelimiterAsync,\r\n downloadAsCsvAsync,\r\n // Error classes\r\n ValidationError,\r\n SecurityError,\r\n FileSystemError,\r\n ParsingError,\r\n LimitError,\r\n ConfigurationError,\r\n ERROR_CODES\r\n};\n"]}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsonToCsvIteratorAsync = void 0;
4
+ exports.jsonToCsv = jsonToCsv;
5
+ exports.jsonToCsvAsync = jsonToCsvAsync;
6
+ exports.jsonToCsvIterator = jsonToCsvIterator;
7
+ exports.jsonToCsvSafe = jsonToCsvSafe;
8
+ exports.jsonToCsvSafeAsync = jsonToCsvSafeAsync;
9
+ const errors_browser_1 = require("./errors-browser");
10
+ function validateInput(data, options) {
11
+ if (!Array.isArray(data)) {
12
+ throw new errors_browser_1.ValidationError('Input data must be an array');
13
+ }
14
+ if (options && typeof options !== 'object') {
15
+ throw new errors_browser_1.ConfigurationError('Options must be an object');
16
+ }
17
+ if (options?.delimiter && typeof options.delimiter !== 'string') {
18
+ throw new errors_browser_1.ConfigurationError('Delimiter must be a string');
19
+ }
20
+ if (options?.delimiter && options.delimiter.length !== 1) {
21
+ throw new errors_browser_1.ConfigurationError('Delimiter must be a single character');
22
+ }
23
+ if (options?.renameMap && typeof options.renameMap !== 'object') {
24
+ throw new errors_browser_1.ConfigurationError('renameMap must be an object');
25
+ }
26
+ if (options && options.maxRecords !== undefined) {
27
+ if (typeof options.maxRecords !== 'number' || options.maxRecords <= 0) {
28
+ throw new errors_browser_1.ConfigurationError('maxRecords must be a positive number');
29
+ }
30
+ }
31
+ if (options?.preventCsvInjection !== undefined && typeof options.preventCsvInjection !== 'boolean') {
32
+ throw new errors_browser_1.ConfigurationError('preventCsvInjection must be a boolean');
33
+ }
34
+ if (options?.rfc4180Compliant !== undefined && typeof options.rfc4180Compliant !== 'boolean') {
35
+ throw new errors_browser_1.ConfigurationError('rfc4180Compliant must be a boolean');
36
+ }
37
+ if (options?.normalizeQuotes !== undefined && typeof options.normalizeQuotes !== 'boolean') {
38
+ throw new errors_browser_1.ConfigurationError('normalizeQuotes must be a boolean');
39
+ }
40
+ return true;
41
+ }
42
+ function escapeCsvValue(value, preventInjection = true) {
43
+ if (value === null || value === undefined) {
44
+ return '';
45
+ }
46
+ const str = String(value);
47
+ const isPotentialFormula = (input) => {
48
+ let idx = 0;
49
+ while (idx < input.length) {
50
+ const code = input.charCodeAt(idx);
51
+ if (code === 32 || code === 9 || code === 10 || code === 13 || code === 0xfeff) {
52
+ idx++;
53
+ continue;
54
+ }
55
+ break;
56
+ }
57
+ if (idx < input.length && (input[idx] === '"' || input[idx] === "'")) {
58
+ idx++;
59
+ while (idx < input.length) {
60
+ const code = input.charCodeAt(idx);
61
+ if (code === 32 || code === 9) {
62
+ idx++;
63
+ continue;
64
+ }
65
+ break;
66
+ }
67
+ }
68
+ if (idx >= input.length) {
69
+ return false;
70
+ }
71
+ const char = input[idx];
72
+ return char === '=' || char === '+' || char === '-' || char === '@';
73
+ };
74
+ if (preventInjection && isPotentialFormula(str)) {
75
+ return "'" + str;
76
+ }
77
+ if (str.includes('"') || str.includes('\n') || str.includes('\r') || str.includes(',')) {
78
+ return '"' + str.replace(/"/g, '""') + '"';
79
+ }
80
+ return str;
81
+ }
82
+ function normalizeQuotesInField(value) {
83
+ if ((value.startsWith('{') && value.endsWith('}')) ||
84
+ (value.startsWith('[') && value.endsWith(']'))) {
85
+ return value;
86
+ }
87
+ let normalized = value.replace(/"{2,}/g, '"');
88
+ normalized = normalized.replace(/"\n/g, '\n').replace(/\n"/g, '\n');
89
+ if (normalized.length >= 2 && normalized.startsWith('"') && normalized.endsWith('"')) {
90
+ normalized = normalized.slice(1, -1);
91
+ }
92
+ return normalized;
93
+ }
94
+ function normalizePhoneValue(value) {
95
+ const trimmed = value.trim();
96
+ if (trimmed === '') {
97
+ return trimmed;
98
+ }
99
+ return trimmed.replace(/["'\\]/g, '');
100
+ }
101
+ function normalizeValueForCsv(value, key, normalizeQuotes) {
102
+ if (!normalizeQuotes || typeof value !== 'string') {
103
+ return value;
104
+ }
105
+ const base = normalizeQuotesInField(value);
106
+ if (!key) {
107
+ return base;
108
+ }
109
+ const phoneKeys = new Set(['phone', 'phonenumber', 'phone_number', 'tel', 'telephone']);
110
+ if (phoneKeys.has(String(key).toLowerCase())) {
111
+ return normalizePhoneValue(base);
112
+ }
113
+ return base;
114
+ }
115
+ function extractAllKeys(data) {
116
+ const keys = new Set();
117
+ for (const item of data) {
118
+ if (item && typeof item === 'object') {
119
+ Object.keys(item).forEach(key => keys.add(key));
120
+ }
121
+ }
122
+ return Array.from(keys);
123
+ }
124
+ function jsonToCsv(data, options = {}) {
125
+ return (0, errors_browser_1.safeExecute)(() => {
126
+ validateInput(data, options);
127
+ if (data.length === 0) {
128
+ return '';
129
+ }
130
+ const delimiter = options.delimiter || ';';
131
+ const includeHeaders = options.includeHeaders !== false;
132
+ const maxRecords = options.maxRecords || data.length;
133
+ const preventInjection = options.preventCsvInjection !== false;
134
+ const rfc4180Compliant = options.rfc4180Compliant !== false;
135
+ const normalizeQuotes = options.normalizeQuotes !== false;
136
+ const limitedData = data.slice(0, maxRecords);
137
+ const allKeys = extractAllKeys(limitedData);
138
+ const renameMap = options.renameMap || {};
139
+ const finalKeys = allKeys.map(key => renameMap[key] || key);
140
+ const lines = [];
141
+ if (includeHeaders) {
142
+ const headerLine = finalKeys.map(key => escapeCsvValue(key, preventInjection)).join(delimiter);
143
+ lines.push(headerLine);
144
+ }
145
+ for (const item of limitedData) {
146
+ const rowValues = allKeys.map(key => {
147
+ const value = item?.[key];
148
+ const normalized = normalizeValueForCsv(value, key, normalizeQuotes);
149
+ return escapeCsvValue(normalized, preventInjection);
150
+ });
151
+ lines.push(rowValues.join(delimiter));
152
+ }
153
+ if (rfc4180Compliant) {
154
+ return lines.join('\r\n');
155
+ }
156
+ return lines.join('\n');
157
+ });
158
+ }
159
+ async function jsonToCsvAsync(data, options = {}) {
160
+ return jsonToCsv(data, options);
161
+ }
162
+ async function* jsonToCsvIterator(data, options = {}) {
163
+ validateInput(Array.isArray(data) ? data : [], options);
164
+ const delimiter = options.delimiter || ';';
165
+ const includeHeaders = options.includeHeaders !== false;
166
+ const preventInjection = options.preventCsvInjection !== false;
167
+ const rfc4180Compliant = options.rfc4180Compliant !== false;
168
+ const normalizeQuotes = options.normalizeQuotes !== false;
169
+ let isFirstChunk = true;
170
+ let allKeys = [];
171
+ let renameMap = {};
172
+ if (Array.isArray(data)) {
173
+ if (data.length === 0) {
174
+ return;
175
+ }
176
+ allKeys = extractAllKeys(data);
177
+ renameMap = options.renameMap || {};
178
+ const finalKeys = allKeys.map(key => renameMap[key] || key);
179
+ if (includeHeaders) {
180
+ const headerLine = finalKeys.map(key => escapeCsvValue(key, preventInjection)).join(delimiter);
181
+ yield headerLine + (rfc4180Compliant ? '\r\n' : '\n');
182
+ }
183
+ for (const item of data) {
184
+ const rowValues = allKeys.map(key => {
185
+ const value = item?.[key];
186
+ const normalized = normalizeValueForCsv(value, key, normalizeQuotes);
187
+ return escapeCsvValue(normalized, preventInjection);
188
+ });
189
+ yield rowValues.join(delimiter) + (rfc4180Compliant ? '\r\n' : '\n');
190
+ }
191
+ }
192
+ else {
193
+ throw new errors_browser_1.ValidationError('Async iterators not yet implemented in browser version');
194
+ }
195
+ }
196
+ exports.jsonToCsvIteratorAsync = jsonToCsvIterator;
197
+ function jsonToCsvSafe(data, options = {}) {
198
+ try {
199
+ return jsonToCsv(data, options);
200
+ }
201
+ catch (error) {
202
+ console.error('JSON to CSV conversion error:', error);
203
+ return null;
204
+ }
205
+ }
206
+ async function jsonToCsvSafeAsync(data, options = {}) {
207
+ try {
208
+ return await jsonToCsvAsync(data, options);
209
+ }
210
+ catch (error) {
211
+ console.error('JSON to CSV conversion error:', error);
212
+ return null;
213
+ }
214
+ }
215
+ if (typeof module !== 'undefined' && module.exports) {
216
+ module.exports = {
217
+ jsonToCsv,
218
+ jsonToCsvAsync,
219
+ jsonToCsvIterator,
220
+ jsonToCsvIteratorAsync: exports.jsonToCsvIteratorAsync,
221
+ jsonToCsvSafe,
222
+ jsonToCsvSafeAsync
223
+ };
224
+ }
225
+ //# sourceMappingURL=json-to-csv-browser.js.map