@juspay/neurolink 9.1.1 → 9.3.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 (555) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +106 -37
  3. package/dist/agent/directTools.d.ts +11 -11
  4. package/dist/cli/commands/config.d.ts +6 -6
  5. package/dist/cli/commands/rag.d.ts +19 -0
  6. package/dist/cli/commands/rag.js +756 -0
  7. package/dist/cli/factories/commandFactory.js +146 -83
  8. package/dist/cli/parser.js +4 -1
  9. package/dist/core/baseProvider.d.ts +43 -30
  10. package/dist/core/baseProvider.js +98 -138
  11. package/dist/core/conversationMemoryFactory.d.ts +2 -2
  12. package/dist/core/conversationMemoryFactory.js +2 -2
  13. package/dist/core/conversationMemoryInitializer.d.ts +1 -2
  14. package/dist/core/conversationMemoryInitializer.js +2 -2
  15. package/dist/core/infrastructure/baseError.d.ts +21 -0
  16. package/dist/core/infrastructure/baseError.js +22 -0
  17. package/dist/core/infrastructure/baseFactory.d.ts +21 -0
  18. package/dist/core/infrastructure/baseFactory.js +54 -0
  19. package/dist/core/infrastructure/baseRegistry.d.ts +21 -0
  20. package/dist/core/infrastructure/baseRegistry.js +49 -0
  21. package/dist/core/infrastructure/index.d.ts +5 -0
  22. package/dist/core/infrastructure/index.js +5 -0
  23. package/dist/core/infrastructure/retry.d.ts +7 -0
  24. package/dist/core/infrastructure/retry.js +20 -0
  25. package/dist/core/infrastructure/typedEventEmitter.d.ts +8 -0
  26. package/dist/core/infrastructure/typedEventEmitter.js +23 -0
  27. package/dist/core/redisConversationMemoryManager.d.ts +1 -6
  28. package/dist/core/redisConversationMemoryManager.js +7 -19
  29. package/dist/factories/providerFactory.d.ts +5 -3
  30. package/dist/factories/providerFactory.js +31 -24
  31. package/dist/image-gen/ImageGenService.d.ts +143 -0
  32. package/dist/image-gen/ImageGenService.js +345 -0
  33. package/dist/image-gen/imageGenTools.d.ts +126 -0
  34. package/dist/image-gen/imageGenTools.js +304 -0
  35. package/dist/image-gen/index.d.ts +46 -0
  36. package/dist/image-gen/index.js +48 -0
  37. package/dist/image-gen/types.d.ts +237 -0
  38. package/dist/image-gen/types.js +24 -0
  39. package/dist/index.d.ts +46 -12
  40. package/dist/index.js +88 -36
  41. package/dist/lib/agent/directTools.d.ts +8 -8
  42. package/dist/lib/core/baseProvider.d.ts +43 -30
  43. package/dist/lib/core/baseProvider.js +98 -138
  44. package/dist/lib/core/conversationMemoryFactory.d.ts +2 -2
  45. package/dist/lib/core/conversationMemoryFactory.js +2 -2
  46. package/dist/lib/core/conversationMemoryInitializer.d.ts +1 -2
  47. package/dist/lib/core/conversationMemoryInitializer.js +2 -2
  48. package/dist/lib/core/infrastructure/baseError.d.ts +21 -0
  49. package/dist/lib/core/infrastructure/baseError.js +23 -0
  50. package/dist/lib/core/infrastructure/baseFactory.d.ts +21 -0
  51. package/dist/lib/core/infrastructure/baseFactory.js +55 -0
  52. package/dist/lib/core/infrastructure/baseRegistry.d.ts +21 -0
  53. package/dist/lib/core/infrastructure/baseRegistry.js +50 -0
  54. package/dist/lib/core/infrastructure/index.d.ts +5 -0
  55. package/dist/lib/core/infrastructure/index.js +6 -0
  56. package/dist/lib/core/infrastructure/retry.d.ts +7 -0
  57. package/dist/lib/core/infrastructure/retry.js +21 -0
  58. package/dist/lib/core/infrastructure/typedEventEmitter.d.ts +8 -0
  59. package/dist/lib/core/infrastructure/typedEventEmitter.js +24 -0
  60. package/dist/lib/core/redisConversationMemoryManager.d.ts +1 -6
  61. package/dist/lib/core/redisConversationMemoryManager.js +7 -19
  62. package/dist/lib/factories/providerFactory.d.ts +5 -3
  63. package/dist/lib/factories/providerFactory.js +31 -24
  64. package/dist/lib/image-gen/ImageGenService.d.ts +143 -0
  65. package/dist/lib/image-gen/ImageGenService.js +346 -0
  66. package/dist/lib/image-gen/imageGenTools.d.ts +126 -0
  67. package/dist/lib/image-gen/imageGenTools.js +305 -0
  68. package/dist/lib/image-gen/index.d.ts +46 -0
  69. package/dist/lib/image-gen/index.js +49 -0
  70. package/dist/lib/image-gen/types.d.ts +237 -0
  71. package/dist/lib/image-gen/types.js +25 -0
  72. package/dist/lib/index.d.ts +46 -12
  73. package/dist/lib/index.js +88 -36
  74. package/dist/lib/mcp/index.d.ts +6 -5
  75. package/dist/lib/mcp/index.js +7 -5
  76. package/dist/lib/neurolink.d.ts +11 -13
  77. package/dist/lib/neurolink.js +95 -29
  78. package/dist/lib/processors/base/BaseFileProcessor.d.ts +273 -0
  79. package/dist/lib/processors/base/BaseFileProcessor.js +614 -0
  80. package/dist/lib/processors/base/index.d.ts +14 -0
  81. package/dist/lib/processors/base/index.js +20 -0
  82. package/dist/lib/processors/base/types.d.ts +593 -0
  83. package/dist/lib/processors/base/types.js +77 -0
  84. package/dist/lib/processors/cli/fileProcessorCli.d.ts +163 -0
  85. package/dist/lib/processors/cli/fileProcessorCli.js +389 -0
  86. package/dist/lib/processors/cli/index.d.ts +37 -0
  87. package/dist/lib/processors/cli/index.js +50 -0
  88. package/dist/lib/processors/code/ConfigProcessor.d.ts +171 -0
  89. package/dist/lib/processors/code/ConfigProcessor.js +401 -0
  90. package/dist/lib/processors/code/SourceCodeProcessor.d.ts +174 -0
  91. package/dist/lib/processors/code/SourceCodeProcessor.js +305 -0
  92. package/dist/lib/processors/code/index.d.ts +44 -0
  93. package/dist/lib/processors/code/index.js +61 -0
  94. package/dist/lib/processors/config/fileTypes.d.ts +283 -0
  95. package/dist/lib/processors/config/fileTypes.js +521 -0
  96. package/dist/lib/processors/config/index.d.ts +32 -0
  97. package/dist/lib/processors/config/index.js +93 -0
  98. package/dist/lib/processors/config/languageMap.d.ts +66 -0
  99. package/dist/lib/processors/config/languageMap.js +411 -0
  100. package/dist/lib/processors/config/mimeTypes.d.ts +376 -0
  101. package/dist/lib/processors/config/mimeTypes.js +339 -0
  102. package/dist/lib/processors/config/sizeLimits.d.ts +194 -0
  103. package/dist/lib/processors/config/sizeLimits.js +247 -0
  104. package/dist/lib/processors/data/JsonProcessor.d.ts +122 -0
  105. package/dist/lib/processors/data/JsonProcessor.js +204 -0
  106. package/dist/lib/processors/data/XmlProcessor.d.ts +160 -0
  107. package/dist/lib/processors/data/XmlProcessor.js +284 -0
  108. package/dist/lib/processors/data/YamlProcessor.d.ts +163 -0
  109. package/dist/lib/processors/data/YamlProcessor.js +295 -0
  110. package/dist/lib/processors/data/index.d.ts +49 -0
  111. package/dist/lib/processors/data/index.js +77 -0
  112. package/dist/lib/processors/document/ExcelProcessor.d.ts +238 -0
  113. package/dist/lib/processors/document/ExcelProcessor.js +520 -0
  114. package/dist/lib/processors/document/OpenDocumentProcessor.d.ts +69 -0
  115. package/dist/lib/processors/document/OpenDocumentProcessor.js +211 -0
  116. package/dist/lib/processors/document/RtfProcessor.d.ts +152 -0
  117. package/dist/lib/processors/document/RtfProcessor.js +362 -0
  118. package/dist/lib/processors/document/WordProcessor.d.ts +168 -0
  119. package/dist/lib/processors/document/WordProcessor.js +354 -0
  120. package/dist/lib/processors/document/index.d.ts +54 -0
  121. package/dist/lib/processors/document/index.js +91 -0
  122. package/dist/lib/processors/errors/FileErrorCode.d.ts +98 -0
  123. package/dist/lib/processors/errors/FileErrorCode.js +256 -0
  124. package/dist/lib/processors/errors/errorHelpers.d.ts +151 -0
  125. package/dist/lib/processors/errors/errorHelpers.js +379 -0
  126. package/dist/lib/processors/errors/errorSerializer.d.ts +139 -0
  127. package/dist/lib/processors/errors/errorSerializer.js +508 -0
  128. package/dist/lib/processors/errors/index.d.ts +46 -0
  129. package/dist/lib/processors/errors/index.js +50 -0
  130. package/dist/lib/processors/index.d.ts +76 -0
  131. package/dist/lib/processors/index.js +113 -0
  132. package/dist/lib/processors/integration/FileProcessorIntegration.d.ts +244 -0
  133. package/dist/lib/processors/integration/FileProcessorIntegration.js +273 -0
  134. package/dist/lib/processors/integration/index.d.ts +42 -0
  135. package/dist/lib/processors/integration/index.js +45 -0
  136. package/dist/lib/processors/markup/HtmlProcessor.d.ts +169 -0
  137. package/dist/lib/processors/markup/HtmlProcessor.js +250 -0
  138. package/dist/lib/processors/markup/MarkdownProcessor.d.ts +165 -0
  139. package/dist/lib/processors/markup/MarkdownProcessor.js +245 -0
  140. package/dist/lib/processors/markup/SvgProcessor.d.ts +156 -0
  141. package/dist/lib/processors/markup/SvgProcessor.js +241 -0
  142. package/dist/lib/processors/markup/TextProcessor.d.ts +135 -0
  143. package/dist/lib/processors/markup/TextProcessor.js +189 -0
  144. package/dist/lib/processors/markup/index.d.ts +66 -0
  145. package/dist/lib/processors/markup/index.js +103 -0
  146. package/dist/lib/processors/registry/ProcessorRegistry.d.ts +334 -0
  147. package/dist/lib/processors/registry/ProcessorRegistry.js +609 -0
  148. package/dist/lib/processors/registry/index.d.ts +12 -0
  149. package/dist/lib/processors/registry/index.js +17 -0
  150. package/dist/lib/processors/registry/types.d.ts +53 -0
  151. package/dist/lib/processors/registry/types.js +11 -0
  152. package/dist/lib/providers/amazonBedrock.d.ts +15 -2
  153. package/dist/lib/providers/amazonBedrock.js +65 -8
  154. package/dist/lib/providers/anthropic.d.ts +3 -3
  155. package/dist/lib/providers/anthropic.js +10 -7
  156. package/dist/lib/providers/googleAiStudio.d.ts +5 -5
  157. package/dist/lib/providers/googleAiStudio.js +10 -7
  158. package/dist/lib/providers/googleVertex.d.ts +16 -4
  159. package/dist/lib/providers/googleVertex.js +72 -16
  160. package/dist/lib/providers/litellm.d.ts +3 -3
  161. package/dist/lib/providers/litellm.js +10 -10
  162. package/dist/lib/providers/mistral.d.ts +3 -3
  163. package/dist/lib/providers/mistral.js +7 -6
  164. package/dist/lib/providers/ollama.d.ts +3 -4
  165. package/dist/lib/providers/ollama.js +7 -8
  166. package/dist/lib/providers/openAI.d.ts +14 -2
  167. package/dist/lib/providers/openAI.js +60 -6
  168. package/dist/lib/providers/openRouter.d.ts +2 -2
  169. package/dist/lib/providers/openRouter.js +10 -6
  170. package/dist/lib/providers/sagemaker/language-model.d.ts +2 -2
  171. package/dist/lib/rag/ChunkerFactory.d.ts +91 -0
  172. package/dist/lib/rag/ChunkerFactory.js +321 -0
  173. package/dist/lib/rag/ChunkerRegistry.d.ts +91 -0
  174. package/dist/lib/rag/ChunkerRegistry.js +422 -0
  175. package/dist/lib/rag/chunkers/BaseChunker.d.ts +53 -0
  176. package/dist/lib/rag/chunkers/BaseChunker.js +144 -0
  177. package/dist/lib/rag/chunkers/CharacterChunker.d.ts +18 -0
  178. package/dist/lib/rag/chunkers/CharacterChunker.js +29 -0
  179. package/dist/lib/rag/chunkers/HTMLChunker.d.ts +19 -0
  180. package/dist/lib/rag/chunkers/HTMLChunker.js +39 -0
  181. package/dist/lib/rag/chunkers/JSONChunker.d.ts +19 -0
  182. package/dist/lib/rag/chunkers/JSONChunker.js +69 -0
  183. package/dist/lib/rag/chunkers/LaTeXChunker.d.ts +15 -0
  184. package/dist/lib/rag/chunkers/LaTeXChunker.js +64 -0
  185. package/dist/lib/rag/chunkers/MarkdownChunker.d.ts +15 -0
  186. package/dist/lib/rag/chunkers/MarkdownChunker.js +103 -0
  187. package/dist/lib/rag/chunkers/RecursiveChunker.d.ts +27 -0
  188. package/dist/lib/rag/chunkers/RecursiveChunker.js +140 -0
  189. package/dist/lib/rag/chunkers/SemanticMarkdownChunker.d.ts +22 -0
  190. package/dist/lib/rag/chunkers/SemanticMarkdownChunker.js +139 -0
  191. package/dist/lib/rag/chunkers/SentenceChunker.d.ts +19 -0
  192. package/dist/lib/rag/chunkers/SentenceChunker.js +67 -0
  193. package/dist/lib/rag/chunkers/TokenChunker.d.ts +19 -0
  194. package/dist/lib/rag/chunkers/TokenChunker.js +62 -0
  195. package/dist/lib/rag/chunkers/index.d.ts +15 -0
  196. package/dist/lib/rag/chunkers/index.js +16 -0
  197. package/dist/lib/rag/chunking/characterChunker.d.ts +16 -0
  198. package/dist/lib/rag/chunking/characterChunker.js +143 -0
  199. package/dist/lib/rag/chunking/chunkerRegistry.d.ts +67 -0
  200. package/dist/lib/rag/chunking/chunkerRegistry.js +195 -0
  201. package/dist/lib/rag/chunking/htmlChunker.d.ts +34 -0
  202. package/dist/lib/rag/chunking/htmlChunker.js +248 -0
  203. package/dist/lib/rag/chunking/index.d.ts +15 -0
  204. package/dist/lib/rag/chunking/index.js +18 -0
  205. package/dist/lib/rag/chunking/jsonChunker.d.ts +20 -0
  206. package/dist/lib/rag/chunking/jsonChunker.js +282 -0
  207. package/dist/lib/rag/chunking/latexChunker.d.ts +26 -0
  208. package/dist/lib/rag/chunking/latexChunker.js +252 -0
  209. package/dist/lib/rag/chunking/markdownChunker.d.ts +19 -0
  210. package/dist/lib/rag/chunking/markdownChunker.js +202 -0
  211. package/dist/lib/rag/chunking/recursiveChunker.d.ts +19 -0
  212. package/dist/lib/rag/chunking/recursiveChunker.js +149 -0
  213. package/dist/lib/rag/chunking/semanticChunker.d.ts +41 -0
  214. package/dist/lib/rag/chunking/semanticChunker.js +307 -0
  215. package/dist/lib/rag/chunking/sentenceChunker.d.ts +25 -0
  216. package/dist/lib/rag/chunking/sentenceChunker.js +231 -0
  217. package/dist/lib/rag/chunking/tokenChunker.d.ts +36 -0
  218. package/dist/lib/rag/chunking/tokenChunker.js +184 -0
  219. package/dist/lib/rag/document/MDocument.d.ts +198 -0
  220. package/dist/lib/rag/document/MDocument.js +393 -0
  221. package/dist/lib/rag/document/index.d.ts +5 -0
  222. package/dist/lib/rag/document/index.js +6 -0
  223. package/dist/lib/rag/document/loaders.d.ts +201 -0
  224. package/dist/lib/rag/document/loaders.js +501 -0
  225. package/dist/lib/rag/errors/RAGError.d.ts +244 -0
  226. package/dist/lib/rag/errors/RAGError.js +275 -0
  227. package/dist/lib/rag/errors/index.d.ts +6 -0
  228. package/dist/lib/rag/errors/index.js +7 -0
  229. package/dist/lib/rag/graphRag/graphRAG.d.ts +115 -0
  230. package/dist/lib/rag/graphRag/graphRAG.js +385 -0
  231. package/dist/lib/rag/graphRag/index.d.ts +4 -0
  232. package/dist/lib/rag/graphRag/index.js +5 -0
  233. package/dist/lib/rag/index.d.ts +103 -0
  234. package/dist/lib/rag/index.js +142 -0
  235. package/dist/lib/rag/metadata/MetadataExtractorFactory.d.ts +157 -0
  236. package/dist/lib/rag/metadata/MetadataExtractorFactory.js +419 -0
  237. package/dist/lib/rag/metadata/MetadataExtractorRegistry.d.ts +99 -0
  238. package/dist/lib/rag/metadata/MetadataExtractorRegistry.js +363 -0
  239. package/dist/lib/rag/metadata/index.d.ts +6 -0
  240. package/dist/lib/rag/metadata/index.js +10 -0
  241. package/dist/lib/rag/metadata/metadataExtractor.d.ts +69 -0
  242. package/dist/lib/rag/metadata/metadataExtractor.js +278 -0
  243. package/dist/lib/rag/pipeline/RAGPipeline.d.ts +235 -0
  244. package/dist/lib/rag/pipeline/RAGPipeline.js +402 -0
  245. package/dist/lib/rag/pipeline/contextAssembly.d.ts +126 -0
  246. package/dist/lib/rag/pipeline/contextAssembly.js +338 -0
  247. package/dist/lib/rag/pipeline/index.d.ts +5 -0
  248. package/dist/lib/rag/pipeline/index.js +6 -0
  249. package/dist/lib/rag/ragIntegration.d.ts +38 -0
  250. package/dist/lib/rag/ragIntegration.js +212 -0
  251. package/dist/lib/rag/reranker/RerankerFactory.d.ts +184 -0
  252. package/dist/lib/rag/reranker/RerankerFactory.js +431 -0
  253. package/dist/lib/rag/reranker/RerankerRegistry.d.ts +119 -0
  254. package/dist/lib/rag/reranker/RerankerRegistry.js +403 -0
  255. package/dist/lib/rag/reranker/index.d.ts +6 -0
  256. package/dist/lib/rag/reranker/index.js +10 -0
  257. package/dist/lib/rag/reranker/reranker.d.ts +71 -0
  258. package/dist/lib/rag/reranker/reranker.js +278 -0
  259. package/dist/lib/rag/resilience/CircuitBreaker.d.ts +215 -0
  260. package/dist/lib/rag/resilience/CircuitBreaker.js +432 -0
  261. package/dist/lib/rag/resilience/RetryHandler.d.ts +115 -0
  262. package/dist/lib/rag/resilience/RetryHandler.js +301 -0
  263. package/dist/lib/rag/resilience/index.d.ts +7 -0
  264. package/dist/lib/rag/resilience/index.js +8 -0
  265. package/dist/lib/rag/retrieval/hybridSearch.d.ts +94 -0
  266. package/dist/lib/rag/retrieval/hybridSearch.js +314 -0
  267. package/dist/lib/rag/retrieval/index.d.ts +5 -0
  268. package/dist/lib/rag/retrieval/index.js +6 -0
  269. package/dist/lib/rag/retrieval/vectorQueryTool.d.ts +93 -0
  270. package/dist/lib/rag/retrieval/vectorQueryTool.js +290 -0
  271. package/dist/lib/rag/types.d.ts +768 -0
  272. package/dist/lib/rag/types.js +9 -0
  273. package/dist/lib/server/index.d.ts +15 -11
  274. package/dist/lib/server/index.js +55 -51
  275. package/dist/lib/server/utils/validation.d.ts +2 -2
  276. package/dist/lib/types/common.d.ts +0 -1
  277. package/dist/lib/types/fileTypes.d.ts +1 -1
  278. package/dist/lib/types/generateTypes.d.ts +42 -8
  279. package/dist/lib/types/generateTypes.js +1 -1
  280. package/dist/lib/types/index.d.ts +25 -24
  281. package/dist/lib/types/index.js +21 -20
  282. package/dist/lib/types/modelTypes.d.ts +16 -16
  283. package/dist/lib/types/pptTypes.d.ts +14 -2
  284. package/dist/lib/types/pptTypes.js +16 -0
  285. package/dist/lib/types/streamTypes.d.ts +28 -8
  286. package/dist/lib/types/streamTypes.js +1 -1
  287. package/dist/lib/utils/async/delay.d.ts +40 -0
  288. package/dist/lib/utils/async/delay.js +43 -0
  289. package/dist/lib/utils/async/index.d.ts +23 -0
  290. package/dist/lib/utils/async/index.js +24 -0
  291. package/dist/lib/utils/async/retry.d.ts +141 -0
  292. package/dist/lib/utils/async/retry.js +172 -0
  293. package/dist/lib/utils/async/withTimeout.d.ts +73 -0
  294. package/dist/lib/utils/async/withTimeout.js +97 -0
  295. package/dist/lib/utils/fileDetector.d.ts +7 -1
  296. package/dist/lib/utils/fileDetector.js +91 -18
  297. package/dist/lib/utils/json/extract.d.ts +103 -0
  298. package/dist/lib/utils/json/extract.js +249 -0
  299. package/dist/lib/utils/json/index.d.ts +36 -0
  300. package/dist/lib/utils/json/index.js +37 -0
  301. package/dist/lib/utils/json/safeParse.d.ts +137 -0
  302. package/dist/lib/utils/json/safeParse.js +191 -0
  303. package/dist/lib/utils/messageBuilder.d.ts +2 -2
  304. package/dist/lib/utils/messageBuilder.js +15 -7
  305. package/dist/lib/utils/modelRouter.d.ts +4 -4
  306. package/dist/lib/utils/modelRouter.js +4 -4
  307. package/dist/lib/utils/sanitizers/filename.d.ts +137 -0
  308. package/dist/lib/utils/sanitizers/filename.js +366 -0
  309. package/dist/lib/utils/sanitizers/html.d.ts +170 -0
  310. package/dist/lib/utils/sanitizers/html.js +326 -0
  311. package/dist/lib/utils/sanitizers/index.d.ts +26 -0
  312. package/dist/lib/utils/sanitizers/index.js +30 -0
  313. package/dist/lib/utils/sanitizers/svg.d.ts +81 -0
  314. package/dist/lib/utils/sanitizers/svg.js +483 -0
  315. package/dist/mcp/index.d.ts +6 -5
  316. package/dist/mcp/index.js +7 -5
  317. package/dist/neurolink.d.ts +11 -13
  318. package/dist/neurolink.js +95 -29
  319. package/dist/processors/base/BaseFileProcessor.d.ts +273 -0
  320. package/dist/processors/base/BaseFileProcessor.js +613 -0
  321. package/dist/processors/base/index.d.ts +14 -0
  322. package/dist/processors/base/index.js +19 -0
  323. package/dist/processors/base/types.d.ts +593 -0
  324. package/dist/processors/base/types.js +76 -0
  325. package/dist/processors/cli/fileProcessorCli.d.ts +163 -0
  326. package/dist/processors/cli/fileProcessorCli.js +388 -0
  327. package/dist/processors/cli/index.d.ts +37 -0
  328. package/dist/processors/cli/index.js +49 -0
  329. package/dist/processors/code/ConfigProcessor.d.ts +171 -0
  330. package/dist/processors/code/ConfigProcessor.js +400 -0
  331. package/dist/processors/code/SourceCodeProcessor.d.ts +174 -0
  332. package/dist/processors/code/SourceCodeProcessor.js +304 -0
  333. package/dist/processors/code/index.d.ts +44 -0
  334. package/dist/processors/code/index.js +60 -0
  335. package/dist/processors/config/fileTypes.d.ts +283 -0
  336. package/dist/processors/config/fileTypes.js +520 -0
  337. package/dist/processors/config/index.d.ts +32 -0
  338. package/dist/processors/config/index.js +92 -0
  339. package/dist/processors/config/languageMap.d.ts +66 -0
  340. package/dist/processors/config/languageMap.js +410 -0
  341. package/dist/processors/config/mimeTypes.d.ts +376 -0
  342. package/dist/processors/config/mimeTypes.js +338 -0
  343. package/dist/processors/config/sizeLimits.d.ts +194 -0
  344. package/dist/processors/config/sizeLimits.js +246 -0
  345. package/dist/processors/data/JsonProcessor.d.ts +122 -0
  346. package/dist/processors/data/JsonProcessor.js +203 -0
  347. package/dist/processors/data/XmlProcessor.d.ts +160 -0
  348. package/dist/processors/data/XmlProcessor.js +283 -0
  349. package/dist/processors/data/YamlProcessor.d.ts +163 -0
  350. package/dist/processors/data/YamlProcessor.js +294 -0
  351. package/dist/processors/data/index.d.ts +49 -0
  352. package/dist/processors/data/index.js +76 -0
  353. package/dist/processors/document/ExcelProcessor.d.ts +238 -0
  354. package/dist/processors/document/ExcelProcessor.js +519 -0
  355. package/dist/processors/document/OpenDocumentProcessor.d.ts +69 -0
  356. package/dist/processors/document/OpenDocumentProcessor.js +210 -0
  357. package/dist/processors/document/RtfProcessor.d.ts +152 -0
  358. package/dist/processors/document/RtfProcessor.js +361 -0
  359. package/dist/processors/document/WordProcessor.d.ts +168 -0
  360. package/dist/processors/document/WordProcessor.js +353 -0
  361. package/dist/processors/document/index.d.ts +54 -0
  362. package/dist/processors/document/index.js +90 -0
  363. package/dist/processors/errors/FileErrorCode.d.ts +98 -0
  364. package/dist/processors/errors/FileErrorCode.js +255 -0
  365. package/dist/processors/errors/errorHelpers.d.ts +151 -0
  366. package/dist/processors/errors/errorHelpers.js +378 -0
  367. package/dist/processors/errors/errorSerializer.d.ts +139 -0
  368. package/dist/processors/errors/errorSerializer.js +507 -0
  369. package/dist/processors/errors/index.d.ts +46 -0
  370. package/dist/processors/errors/index.js +49 -0
  371. package/dist/processors/index.d.ts +76 -0
  372. package/dist/processors/index.js +112 -0
  373. package/dist/processors/integration/FileProcessorIntegration.d.ts +244 -0
  374. package/dist/processors/integration/FileProcessorIntegration.js +272 -0
  375. package/dist/processors/integration/index.d.ts +42 -0
  376. package/dist/processors/integration/index.js +44 -0
  377. package/dist/processors/markup/HtmlProcessor.d.ts +169 -0
  378. package/dist/processors/markup/HtmlProcessor.js +249 -0
  379. package/dist/processors/markup/MarkdownProcessor.d.ts +165 -0
  380. package/dist/processors/markup/MarkdownProcessor.js +244 -0
  381. package/dist/processors/markup/SvgProcessor.d.ts +156 -0
  382. package/dist/processors/markup/SvgProcessor.js +240 -0
  383. package/dist/processors/markup/TextProcessor.d.ts +135 -0
  384. package/dist/processors/markup/TextProcessor.js +188 -0
  385. package/dist/processors/markup/index.d.ts +66 -0
  386. package/dist/processors/markup/index.js +102 -0
  387. package/dist/processors/registry/ProcessorRegistry.d.ts +334 -0
  388. package/dist/processors/registry/ProcessorRegistry.js +608 -0
  389. package/dist/processors/registry/index.d.ts +12 -0
  390. package/dist/processors/registry/index.js +16 -0
  391. package/dist/processors/registry/types.d.ts +53 -0
  392. package/dist/processors/registry/types.js +10 -0
  393. package/dist/providers/amazonBedrock.d.ts +15 -2
  394. package/dist/providers/amazonBedrock.js +65 -8
  395. package/dist/providers/anthropic.d.ts +3 -3
  396. package/dist/providers/anthropic.js +10 -7
  397. package/dist/providers/googleAiStudio.d.ts +5 -5
  398. package/dist/providers/googleAiStudio.js +10 -7
  399. package/dist/providers/googleVertex.d.ts +16 -4
  400. package/dist/providers/googleVertex.js +72 -16
  401. package/dist/providers/litellm.d.ts +3 -3
  402. package/dist/providers/litellm.js +10 -10
  403. package/dist/providers/mistral.d.ts +3 -3
  404. package/dist/providers/mistral.js +7 -6
  405. package/dist/providers/ollama.d.ts +3 -4
  406. package/dist/providers/ollama.js +7 -8
  407. package/dist/providers/openAI.d.ts +14 -2
  408. package/dist/providers/openAI.js +60 -6
  409. package/dist/providers/openRouter.d.ts +2 -2
  410. package/dist/providers/openRouter.js +10 -6
  411. package/dist/rag/ChunkerFactory.d.ts +91 -0
  412. package/dist/rag/ChunkerFactory.js +320 -0
  413. package/dist/rag/ChunkerRegistry.d.ts +91 -0
  414. package/dist/rag/ChunkerRegistry.js +421 -0
  415. package/dist/rag/chunkers/BaseChunker.d.ts +53 -0
  416. package/dist/rag/chunkers/BaseChunker.js +143 -0
  417. package/dist/rag/chunkers/CharacterChunker.d.ts +18 -0
  418. package/dist/rag/chunkers/CharacterChunker.js +28 -0
  419. package/dist/rag/chunkers/HTMLChunker.d.ts +19 -0
  420. package/dist/rag/chunkers/HTMLChunker.js +38 -0
  421. package/dist/rag/chunkers/JSONChunker.d.ts +19 -0
  422. package/dist/rag/chunkers/JSONChunker.js +68 -0
  423. package/dist/rag/chunkers/LaTeXChunker.d.ts +15 -0
  424. package/dist/rag/chunkers/LaTeXChunker.js +63 -0
  425. package/dist/rag/chunkers/MarkdownChunker.d.ts +15 -0
  426. package/dist/rag/chunkers/MarkdownChunker.js +102 -0
  427. package/dist/rag/chunkers/RecursiveChunker.d.ts +27 -0
  428. package/dist/rag/chunkers/RecursiveChunker.js +139 -0
  429. package/dist/rag/chunkers/SemanticMarkdownChunker.d.ts +22 -0
  430. package/dist/rag/chunkers/SemanticMarkdownChunker.js +138 -0
  431. package/dist/rag/chunkers/SentenceChunker.d.ts +19 -0
  432. package/dist/rag/chunkers/SentenceChunker.js +66 -0
  433. package/dist/rag/chunkers/TokenChunker.d.ts +19 -0
  434. package/dist/rag/chunkers/TokenChunker.js +61 -0
  435. package/dist/rag/chunkers/index.d.ts +15 -0
  436. package/dist/rag/chunkers/index.js +15 -0
  437. package/dist/rag/chunking/characterChunker.d.ts +16 -0
  438. package/dist/rag/chunking/characterChunker.js +142 -0
  439. package/dist/rag/chunking/chunkerRegistry.d.ts +67 -0
  440. package/dist/rag/chunking/chunkerRegistry.js +194 -0
  441. package/dist/rag/chunking/htmlChunker.d.ts +34 -0
  442. package/dist/rag/chunking/htmlChunker.js +247 -0
  443. package/dist/rag/chunking/index.d.ts +15 -0
  444. package/dist/rag/chunking/index.js +17 -0
  445. package/dist/rag/chunking/jsonChunker.d.ts +20 -0
  446. package/dist/rag/chunking/jsonChunker.js +281 -0
  447. package/dist/rag/chunking/latexChunker.d.ts +26 -0
  448. package/dist/rag/chunking/latexChunker.js +251 -0
  449. package/dist/rag/chunking/markdownChunker.d.ts +19 -0
  450. package/dist/rag/chunking/markdownChunker.js +201 -0
  451. package/dist/rag/chunking/recursiveChunker.d.ts +19 -0
  452. package/dist/rag/chunking/recursiveChunker.js +148 -0
  453. package/dist/rag/chunking/semanticChunker.d.ts +41 -0
  454. package/dist/rag/chunking/semanticChunker.js +306 -0
  455. package/dist/rag/chunking/sentenceChunker.d.ts +25 -0
  456. package/dist/rag/chunking/sentenceChunker.js +230 -0
  457. package/dist/rag/chunking/tokenChunker.d.ts +36 -0
  458. package/dist/rag/chunking/tokenChunker.js +183 -0
  459. package/dist/rag/document/MDocument.d.ts +198 -0
  460. package/dist/rag/document/MDocument.js +392 -0
  461. package/dist/rag/document/index.d.ts +5 -0
  462. package/dist/rag/document/index.js +5 -0
  463. package/dist/rag/document/loaders.d.ts +201 -0
  464. package/dist/rag/document/loaders.js +500 -0
  465. package/dist/rag/errors/RAGError.d.ts +244 -0
  466. package/dist/rag/errors/RAGError.js +274 -0
  467. package/dist/rag/errors/index.d.ts +6 -0
  468. package/dist/rag/errors/index.js +6 -0
  469. package/dist/rag/graphRag/graphRAG.d.ts +115 -0
  470. package/dist/rag/graphRag/graphRAG.js +384 -0
  471. package/dist/rag/graphRag/index.d.ts +4 -0
  472. package/dist/rag/graphRag/index.js +4 -0
  473. package/dist/rag/index.d.ts +103 -0
  474. package/dist/rag/index.js +141 -0
  475. package/dist/rag/metadata/MetadataExtractorFactory.d.ts +157 -0
  476. package/dist/rag/metadata/MetadataExtractorFactory.js +418 -0
  477. package/dist/rag/metadata/MetadataExtractorRegistry.d.ts +99 -0
  478. package/dist/rag/metadata/MetadataExtractorRegistry.js +362 -0
  479. package/dist/rag/metadata/index.d.ts +6 -0
  480. package/dist/rag/metadata/index.js +9 -0
  481. package/dist/rag/metadata/metadataExtractor.d.ts +69 -0
  482. package/dist/rag/metadata/metadataExtractor.js +277 -0
  483. package/dist/rag/pipeline/RAGPipeline.d.ts +235 -0
  484. package/dist/rag/pipeline/RAGPipeline.js +401 -0
  485. package/dist/rag/pipeline/contextAssembly.d.ts +126 -0
  486. package/dist/rag/pipeline/contextAssembly.js +337 -0
  487. package/dist/rag/pipeline/index.d.ts +5 -0
  488. package/dist/rag/pipeline/index.js +5 -0
  489. package/dist/rag/ragIntegration.d.ts +38 -0
  490. package/dist/rag/ragIntegration.js +211 -0
  491. package/dist/rag/reranker/RerankerFactory.d.ts +184 -0
  492. package/dist/rag/reranker/RerankerFactory.js +430 -0
  493. package/dist/rag/reranker/RerankerRegistry.d.ts +119 -0
  494. package/dist/rag/reranker/RerankerRegistry.js +402 -0
  495. package/dist/rag/reranker/index.d.ts +6 -0
  496. package/dist/rag/reranker/index.js +9 -0
  497. package/dist/rag/reranker/reranker.d.ts +71 -0
  498. package/dist/rag/reranker/reranker.js +277 -0
  499. package/dist/rag/resilience/CircuitBreaker.d.ts +215 -0
  500. package/dist/rag/resilience/CircuitBreaker.js +431 -0
  501. package/dist/rag/resilience/RetryHandler.d.ts +115 -0
  502. package/dist/rag/resilience/RetryHandler.js +300 -0
  503. package/dist/rag/resilience/index.d.ts +7 -0
  504. package/dist/rag/resilience/index.js +7 -0
  505. package/dist/rag/retrieval/hybridSearch.d.ts +94 -0
  506. package/dist/rag/retrieval/hybridSearch.js +313 -0
  507. package/dist/rag/retrieval/index.d.ts +5 -0
  508. package/dist/rag/retrieval/index.js +5 -0
  509. package/dist/rag/retrieval/vectorQueryTool.d.ts +93 -0
  510. package/dist/rag/retrieval/vectorQueryTool.js +289 -0
  511. package/dist/rag/types.d.ts +768 -0
  512. package/dist/rag/types.js +8 -0
  513. package/dist/server/index.d.ts +15 -11
  514. package/dist/server/index.js +55 -51
  515. package/dist/server/utils/validation.d.ts +8 -8
  516. package/dist/types/common.d.ts +0 -1
  517. package/dist/types/fileTypes.d.ts +1 -1
  518. package/dist/types/generateTypes.d.ts +42 -8
  519. package/dist/types/generateTypes.js +1 -1
  520. package/dist/types/index.d.ts +25 -24
  521. package/dist/types/index.js +21 -20
  522. package/dist/types/modelTypes.d.ts +10 -10
  523. package/dist/types/pptTypes.d.ts +14 -2
  524. package/dist/types/pptTypes.js +16 -0
  525. package/dist/types/streamTypes.d.ts +28 -8
  526. package/dist/types/streamTypes.js +1 -1
  527. package/dist/utils/async/delay.d.ts +40 -0
  528. package/dist/utils/async/delay.js +42 -0
  529. package/dist/utils/async/index.d.ts +23 -0
  530. package/dist/utils/async/index.js +23 -0
  531. package/dist/utils/async/retry.d.ts +141 -0
  532. package/dist/utils/async/retry.js +171 -0
  533. package/dist/utils/async/withTimeout.d.ts +73 -0
  534. package/dist/utils/async/withTimeout.js +96 -0
  535. package/dist/utils/fileDetector.d.ts +7 -1
  536. package/dist/utils/fileDetector.js +91 -18
  537. package/dist/utils/json/extract.d.ts +103 -0
  538. package/dist/utils/json/extract.js +248 -0
  539. package/dist/utils/json/index.d.ts +36 -0
  540. package/dist/utils/json/index.js +36 -0
  541. package/dist/utils/json/safeParse.d.ts +137 -0
  542. package/dist/utils/json/safeParse.js +190 -0
  543. package/dist/utils/messageBuilder.d.ts +2 -2
  544. package/dist/utils/messageBuilder.js +15 -7
  545. package/dist/utils/modelRouter.d.ts +4 -4
  546. package/dist/utils/modelRouter.js +4 -4
  547. package/dist/utils/sanitizers/filename.d.ts +137 -0
  548. package/dist/utils/sanitizers/filename.js +365 -0
  549. package/dist/utils/sanitizers/html.d.ts +170 -0
  550. package/dist/utils/sanitizers/html.js +325 -0
  551. package/dist/utils/sanitizers/index.d.ts +26 -0
  552. package/dist/utils/sanitizers/index.js +29 -0
  553. package/dist/utils/sanitizers/svg.d.ts +81 -0
  554. package/dist/utils/sanitizers/svg.js +482 -0
  555. package/package.json +2 -2
@@ -0,0 +1,246 @@
1
+ /**
2
+ * Size Limit Constants
3
+ * Centralized size limits for file processing and validation
4
+ *
5
+ * @module processors/config/sizeLimits
6
+ */
7
+ // =============================================================================
8
+ // FILE SIZE LIMITS (in MB)
9
+ // =============================================================================
10
+ /**
11
+ * Maximum file sizes in megabytes for different file types
12
+ */
13
+ export const SIZE_LIMITS_MB = {
14
+ /** Maximum image file size (10MB) */
15
+ IMAGE_MAX_MB: 10,
16
+ /** Maximum PDF file size (20MB) */
17
+ PDF_MAX_MB: 20,
18
+ /** Maximum document file size (10MB) */
19
+ DOCUMENT_MAX_MB: 10,
20
+ /** Maximum Word document size (10MB) */
21
+ WORD_MAX_MB: 10,
22
+ /** Maximum text file size (5MB) */
23
+ TEXT_MAX_MB: 5,
24
+ /** Maximum CSV file size (10MB) */
25
+ CSV_MAX_MB: 10,
26
+ /** Maximum Excel file size (10MB) */
27
+ EXCEL_MAX_MB: 10,
28
+ /** Maximum source code file size (5MB) */
29
+ SOURCE_CODE_MAX_MB: 5,
30
+ /** Maximum JSON file size (5MB) */
31
+ JSON_MAX_MB: 5,
32
+ /** Maximum YAML file size (5MB) */
33
+ YAML_MAX_MB: 5,
34
+ /** Maximum XML file size (5MB) */
35
+ XML_MAX_MB: 5,
36
+ /** Maximum general file size (50MB) */
37
+ GENERAL_MAX_MB: 50,
38
+ };
39
+ // =============================================================================
40
+ // FILE SIZE LIMITS (in bytes)
41
+ // =============================================================================
42
+ /**
43
+ * Maximum file sizes in bytes for different file types
44
+ */
45
+ export const SIZE_LIMITS_BYTES = {
46
+ /** Maximum image file size (10MB) */
47
+ IMAGE_MAX: 10 * 1024 * 1024,
48
+ /** Maximum PDF file size (20MB) */
49
+ PDF_MAX: 20 * 1024 * 1024,
50
+ /** Maximum document file size (10MB) */
51
+ DOCUMENT_MAX: 10 * 1024 * 1024,
52
+ /** Maximum Word document size (10MB) */
53
+ WORD_MAX: 10 * 1024 * 1024,
54
+ /** Maximum text file size (5MB) */
55
+ TEXT_MAX: 5 * 1024 * 1024,
56
+ /** Maximum CSV file size (10MB) */
57
+ CSV_MAX: 10 * 1024 * 1024,
58
+ /** Maximum Excel file size (10MB) */
59
+ EXCEL_MAX: 10 * 1024 * 1024,
60
+ /** Maximum source code file size (5MB) */
61
+ SOURCE_CODE_MAX: 5 * 1024 * 1024,
62
+ /** Maximum JSON file size (5MB) */
63
+ JSON_MAX: 5 * 1024 * 1024,
64
+ /** Maximum YAML file size (5MB) */
65
+ YAML_MAX: 5 * 1024 * 1024,
66
+ /** Maximum XML file size (5MB) */
67
+ XML_MAX: 5 * 1024 * 1024,
68
+ /** Maximum general file size (50MB) */
69
+ GENERAL_MAX: 50 * 1024 * 1024,
70
+ };
71
+ // =============================================================================
72
+ // PROCESSING LIMITS
73
+ // =============================================================================
74
+ /**
75
+ * Processing limits for different content types
76
+ */
77
+ export const PROCESSING_LIMITS = {
78
+ /** Maximum lines for source code files */
79
+ MAX_SOURCE_CODE_LINES: 10000,
80
+ /** Maximum lines for text files */
81
+ MAX_TEXT_LINES: 10000,
82
+ /** Maximum characters for text extraction */
83
+ MAX_TEXT_LENGTH: 1000000,
84
+ /** Maximum rows for CSV files */
85
+ MAX_CSV_ROWS: 10000,
86
+ /** Maximum rows per Excel sheet */
87
+ MAX_EXCEL_ROWS: 5000,
88
+ /** Maximum sheets to process in Excel */
89
+ MAX_EXCEL_SHEETS: 10,
90
+ /** Maximum pages for PDF files */
91
+ MAX_PDF_PAGES: 100,
92
+ /** Maximum depth for JSON/YAML objects */
93
+ MAX_OBJECT_DEPTH: 50,
94
+ /** Maximum array length in JSON/YAML */
95
+ MAX_ARRAY_LENGTH: 10000,
96
+ };
97
+ // =============================================================================
98
+ // ARCHIVE LIMITS (Security)
99
+ // =============================================================================
100
+ /**
101
+ * Security limits for archive processing (ZIP bomb protection)
102
+ */
103
+ export const ARCHIVE_LIMITS = {
104
+ /** Maximum decompressed size (100MB) */
105
+ MAX_DECOMPRESSED_SIZE: 100 * 1024 * 1024,
106
+ /** Maximum compression ratio (100:1) */
107
+ MAX_COMPRESSION_RATIO: 100,
108
+ /** Maximum entries in archive */
109
+ MAX_ENTRIES: 1000,
110
+ /** Maximum nesting depth */
111
+ MAX_NESTING_DEPTH: 5,
112
+ };
113
+ // =============================================================================
114
+ // YAML SECURITY LIMITS
115
+ // =============================================================================
116
+ /**
117
+ * Security limits for YAML processing (billion laughs protection)
118
+ */
119
+ export const YAML_LIMITS = {
120
+ /** Maximum alias expansion count */
121
+ MAX_ALIAS_COUNT: 100,
122
+ /** Maximum document count in multi-doc YAML */
123
+ MAX_DOCUMENTS: 10,
124
+ /** Maximum anchor references */
125
+ MAX_ANCHORS: 100,
126
+ };
127
+ // =============================================================================
128
+ // COMBINED SIZE LIMITS
129
+ // =============================================================================
130
+ /**
131
+ * All size limits combined for backward compatibility
132
+ */
133
+ export const SIZE_LIMITS = {
134
+ // MB limits
135
+ IMAGE_MAX_MB: SIZE_LIMITS_MB.IMAGE_MAX_MB,
136
+ PDF_MAX_MB: SIZE_LIMITS_MB.PDF_MAX_MB,
137
+ DOCUMENT_MAX_MB: SIZE_LIMITS_MB.DOCUMENT_MAX_MB,
138
+ WORD_MAX_MB: SIZE_LIMITS_MB.WORD_MAX_MB,
139
+ TEXT_MAX_MB: SIZE_LIMITS_MB.TEXT_MAX_MB,
140
+ CSV_MAX_MB: SIZE_LIMITS_MB.CSV_MAX_MB,
141
+ EXCEL_MAX_MB: SIZE_LIMITS_MB.EXCEL_MAX_MB,
142
+ SOURCE_CODE_MAX_MB: SIZE_LIMITS_MB.SOURCE_CODE_MAX_MB,
143
+ // Byte limits
144
+ MAX_FILE_SIZE: SIZE_LIMITS_BYTES.GENERAL_MAX,
145
+ MAX_IMAGE_SIZE: SIZE_LIMITS_BYTES.IMAGE_MAX,
146
+ MAX_TEXT_SIZE: SIZE_LIMITS_BYTES.TEXT_MAX,
147
+ // Processing limits
148
+ MAX_SOURCE_CODE_LINES: PROCESSING_LIMITS.MAX_SOURCE_CODE_LINES,
149
+ MAX_TEXT_LINES: PROCESSING_LIMITS.MAX_TEXT_LINES,
150
+ MAX_TEXT_LENGTH: PROCESSING_LIMITS.MAX_TEXT_LENGTH,
151
+ MAX_CSV_ROWS: PROCESSING_LIMITS.MAX_CSV_ROWS,
152
+ EXCEL_MAX_ROWS: PROCESSING_LIMITS.MAX_EXCEL_ROWS,
153
+ EXCEL_MAX_SHEETS: PROCESSING_LIMITS.MAX_EXCEL_SHEETS,
154
+ MAX_PDF_PAGES: PROCESSING_LIMITS.MAX_PDF_PAGES,
155
+ // Archive limits
156
+ MAX_DECOMPRESSED_SIZE: ARCHIVE_LIMITS.MAX_DECOMPRESSED_SIZE,
157
+ MAX_COMPRESSION_RATIO: ARCHIVE_LIMITS.MAX_COMPRESSION_RATIO,
158
+ MAX_ZIP_ENTRIES: ARCHIVE_LIMITS.MAX_ENTRIES,
159
+ // YAML limits
160
+ YAML_MAX_ALIAS_COUNT: YAML_LIMITS.MAX_ALIAS_COUNT,
161
+ };
162
+ // =============================================================================
163
+ // UTILITY FUNCTIONS
164
+ // =============================================================================
165
+ /**
166
+ * Converts bytes to megabytes
167
+ *
168
+ * @param bytes - Size in bytes
169
+ * @returns Size in megabytes
170
+ */
171
+ export function bytesToMB(bytes) {
172
+ return bytes / (1024 * 1024);
173
+ }
174
+ /**
175
+ * Converts megabytes to bytes
176
+ *
177
+ * @param mb - Size in megabytes
178
+ * @returns Size in bytes
179
+ */
180
+ export function mbToBytes(mb) {
181
+ return mb * 1024 * 1024;
182
+ }
183
+ /**
184
+ * Formats bytes to human-readable string
185
+ *
186
+ * @param bytes - Size in bytes
187
+ * @param precision - Decimal places (default: 2)
188
+ * @returns Formatted string like "1.5 MB" or "500 KB"
189
+ */
190
+ export function formatBytes(bytes, precision = 2) {
191
+ if (bytes === 0) {
192
+ return "0 Bytes";
193
+ }
194
+ const k = 1024;
195
+ const sizes = ["Bytes", "KB", "MB", "GB", "TB"];
196
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
197
+ return `${parseFloat((bytes / k ** i).toFixed(precision))} ${sizes[i]}`;
198
+ }
199
+ /**
200
+ * Checks if a file size is within the specified limit
201
+ *
202
+ * @param sizeInBytes - File size in bytes
203
+ * @param limitKey - Key from SIZE_LIMITS_BYTES
204
+ * @returns True if the file size is within the limit
205
+ */
206
+ export function isWithinSizeLimit(sizeInBytes, limitKey) {
207
+ return sizeInBytes <= SIZE_LIMITS_BYTES[limitKey];
208
+ }
209
+ /**
210
+ * Gets the appropriate size limit for a file type
211
+ *
212
+ * @param fileType - Type of file (image, pdf, document, etc.)
213
+ * @returns Size limit in bytes
214
+ */
215
+ export function getSizeLimitForType(fileType) {
216
+ const limitMap = {
217
+ image: SIZE_LIMITS_BYTES.IMAGE_MAX,
218
+ pdf: SIZE_LIMITS_BYTES.PDF_MAX,
219
+ document: SIZE_LIMITS_BYTES.DOCUMENT_MAX,
220
+ text: SIZE_LIMITS_BYTES.TEXT_MAX,
221
+ csv: SIZE_LIMITS_BYTES.CSV_MAX,
222
+ excel: SIZE_LIMITS_BYTES.EXCEL_MAX,
223
+ code: SIZE_LIMITS_BYTES.SOURCE_CODE_MAX,
224
+ json: SIZE_LIMITS_BYTES.JSON_MAX,
225
+ yaml: SIZE_LIMITS_BYTES.YAML_MAX,
226
+ xml: SIZE_LIMITS_BYTES.XML_MAX,
227
+ };
228
+ return limitMap[fileType] || SIZE_LIMITS_BYTES.GENERAL_MAX;
229
+ }
230
+ /**
231
+ * Validates file size against the appropriate limit
232
+ *
233
+ * @param sizeInBytes - File size in bytes
234
+ * @param fileType - Type of file
235
+ * @returns Object with isValid flag and error message if invalid
236
+ */
237
+ export function validateFileSize(sizeInBytes, fileType) {
238
+ const limit = getSizeLimitForType(fileType);
239
+ if (sizeInBytes <= limit) {
240
+ return { isValid: true };
241
+ }
242
+ return {
243
+ isValid: false,
244
+ error: `File size (${formatBytes(sizeInBytes)}) exceeds the maximum allowed size of ${formatBytes(limit)} for ${fileType} files.`,
245
+ };
246
+ }
@@ -0,0 +1,122 @@
1
+ /**
2
+ * JSON Processing Utility
3
+ *
4
+ * Handles downloading, validating, and processing JSON files.
5
+ * Provides parsed JSON content with validation and metadata extraction.
6
+ *
7
+ * Features:
8
+ * - JSON syntax validation
9
+ * - Pretty-printing for valid JSON
10
+ * - Metadata extraction (key count, array length)
11
+ * - Graceful error handling with detailed messages
12
+ *
13
+ * @module processors/data/JsonProcessor
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * import { jsonProcessor, isJsonFile, processJson } from "./JsonProcessor.js";
18
+ *
19
+ * // Check if file is JSON
20
+ * if (isJsonFile("application/json", "config.json")) {
21
+ * // Process the file
22
+ * const result = await processJson(fileInfo);
23
+ * if (result.success && result.data) {
24
+ * console.log("Parsed JSON:", result.data.parsed);
25
+ * console.log("Pretty-printed:", result.data.content);
26
+ * }
27
+ * }
28
+ * ```
29
+ */
30
+ import { BaseFileProcessor } from "../base/BaseFileProcessor.js";
31
+ import type { FileInfo, FileProcessingResult, ProcessOptions } from "../base/types.js";
32
+ export type { ProcessedJson } from "../base/types.js";
33
+ import type { ProcessedJson } from "../base/types.js";
34
+ /**
35
+ * JSON file processor.
36
+ * Extends BaseFileProcessor with JSON-specific parsing and validation.
37
+ *
38
+ * @example
39
+ * ```typescript
40
+ * const processor = new JsonProcessor();
41
+ *
42
+ * const result = await processor.processFile({
43
+ * id: "file-123",
44
+ * name: "config.json",
45
+ * mimetype: "application/json",
46
+ * size: 1024,
47
+ * buffer: jsonBuffer,
48
+ * });
49
+ *
50
+ * if (result.success && result.data?.valid) {
51
+ * console.log("JSON keys:", result.data.keyCount);
52
+ * }
53
+ * ```
54
+ */
55
+ export declare class JsonProcessor extends BaseFileProcessor<ProcessedJson> {
56
+ constructor();
57
+ /**
58
+ * Validate downloaded JSON is parseable.
59
+ *
60
+ * @param buffer - Downloaded file content
61
+ * @param _fileInfo - Original file information
62
+ * @returns null if valid, error message if invalid
63
+ */
64
+ protected validateDownloadedFile(buffer: Buffer, _fileInfo: FileInfo): Promise<string | null>;
65
+ /**
66
+ * Build processed JSON result with parsed content.
67
+ *
68
+ * @param buffer - Downloaded file content
69
+ * @param fileInfo - Original file information
70
+ * @returns Processed JSON result
71
+ */
72
+ protected buildProcessedResult(buffer: Buffer, fileInfo: FileInfo): ProcessedJson;
73
+ }
74
+ /** Singleton JSON processor instance */
75
+ export declare const jsonProcessor: JsonProcessor;
76
+ /**
77
+ * Check if a file is a JSON file based on MIME type or extension.
78
+ *
79
+ * @param mimetype - MIME type of the file
80
+ * @param filename - Filename (for extension-based detection)
81
+ * @returns true if the file is a JSON file
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * if (isJsonFile("application/json", "config.json")) {
86
+ * // Process as JSON
87
+ * }
88
+ * ```
89
+ */
90
+ export declare function isJsonFile(mimetype: string, filename: string): boolean;
91
+ /**
92
+ * Validate JSON file size against configured limit.
93
+ *
94
+ * @param sizeBytes - File size in bytes
95
+ * @returns true if size is within the limit
96
+ */
97
+ export declare function validateJsonSize(sizeBytes: number): boolean;
98
+ /**
99
+ * Process a single JSON file.
100
+ *
101
+ * @param fileInfo - File information (with URL or buffer)
102
+ * @param options - Optional processing options (auth headers, timeout, retry config)
103
+ * @returns Processing result with parsed JSON or error
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * const result = await processJson({
108
+ * id: "file-123",
109
+ * name: "data.json",
110
+ * mimetype: "application/json",
111
+ * size: 2048,
112
+ * url: "https://example.com/data.json",
113
+ * }, {
114
+ * authHeaders: { "Authorization": "Bearer token" },
115
+ * });
116
+ *
117
+ * if (result.success && result.data) {
118
+ * console.log("Parsed:", result.data.parsed);
119
+ * }
120
+ * ```
121
+ */
122
+ export declare function processJson(fileInfo: FileInfo, options?: ProcessOptions): Promise<FileProcessingResult<ProcessedJson>>;
@@ -0,0 +1,203 @@
1
+ /**
2
+ * JSON Processing Utility
3
+ *
4
+ * Handles downloading, validating, and processing JSON files.
5
+ * Provides parsed JSON content with validation and metadata extraction.
6
+ *
7
+ * Features:
8
+ * - JSON syntax validation
9
+ * - Pretty-printing for valid JSON
10
+ * - Metadata extraction (key count, array length)
11
+ * - Graceful error handling with detailed messages
12
+ *
13
+ * @module processors/data/JsonProcessor
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * import { jsonProcessor, isJsonFile, processJson } from "./JsonProcessor.js";
18
+ *
19
+ * // Check if file is JSON
20
+ * if (isJsonFile("application/json", "config.json")) {
21
+ * // Process the file
22
+ * const result = await processJson(fileInfo);
23
+ * if (result.success && result.data) {
24
+ * console.log("Parsed JSON:", result.data.parsed);
25
+ * console.log("Pretty-printed:", result.data.content);
26
+ * }
27
+ * }
28
+ * ```
29
+ */
30
+ import { BaseFileProcessor } from "../base/BaseFileProcessor.js";
31
+ import { SIZE_LIMITS_MB } from "../config/index.js";
32
+ // =============================================================================
33
+ // CONSTANTS
34
+ // =============================================================================
35
+ /** Supported JSON MIME types */
36
+ const SUPPORTED_JSON_TYPES = ["application/json", "text/json"];
37
+ /** Supported JSON file extensions */
38
+ const SUPPORTED_JSON_EXTENSIONS = [".json"];
39
+ // =============================================================================
40
+ // JSON PROCESSOR CLASS
41
+ // =============================================================================
42
+ /**
43
+ * JSON file processor.
44
+ * Extends BaseFileProcessor with JSON-specific parsing and validation.
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const processor = new JsonProcessor();
49
+ *
50
+ * const result = await processor.processFile({
51
+ * id: "file-123",
52
+ * name: "config.json",
53
+ * mimetype: "application/json",
54
+ * size: 1024,
55
+ * buffer: jsonBuffer,
56
+ * });
57
+ *
58
+ * if (result.success && result.data?.valid) {
59
+ * console.log("JSON keys:", result.data.keyCount);
60
+ * }
61
+ * ```
62
+ */
63
+ export class JsonProcessor extends BaseFileProcessor {
64
+ constructor() {
65
+ super({
66
+ maxSizeMB: SIZE_LIMITS_MB.JSON_MAX_MB,
67
+ timeoutMs: 30000,
68
+ supportedMimeTypes: SUPPORTED_JSON_TYPES,
69
+ supportedExtensions: SUPPORTED_JSON_EXTENSIONS,
70
+ fileTypeName: "JSON",
71
+ defaultFilename: "data.json",
72
+ });
73
+ }
74
+ /**
75
+ * Validate downloaded JSON is parseable.
76
+ *
77
+ * @param buffer - Downloaded file content
78
+ * @param _fileInfo - Original file information
79
+ * @returns null if valid, error message if invalid
80
+ */
81
+ async validateDownloadedFile(buffer, _fileInfo) {
82
+ try {
83
+ const content = buffer.toString("utf-8");
84
+ JSON.parse(content);
85
+ return null;
86
+ }
87
+ catch (error) {
88
+ return `Invalid JSON file: ${error instanceof Error ? error.message : "Parse error"}`;
89
+ }
90
+ }
91
+ /**
92
+ * Build processed JSON result with parsed content.
93
+ *
94
+ * @param buffer - Downloaded file content
95
+ * @param fileInfo - Original file information
96
+ * @returns Processed JSON result
97
+ */
98
+ buildProcessedResult(buffer, fileInfo) {
99
+ const rawContent = buffer.toString("utf-8");
100
+ let parsed = null;
101
+ let valid = true;
102
+ let errorMessage;
103
+ let keyCount;
104
+ let arrayLength;
105
+ let content;
106
+ try {
107
+ parsed = JSON.parse(rawContent);
108
+ // Extract metadata based on parsed type
109
+ if (typeof parsed === "object" && parsed !== null) {
110
+ if (Array.isArray(parsed)) {
111
+ arrayLength = parsed.length;
112
+ }
113
+ else {
114
+ keyCount = Object.keys(parsed).length;
115
+ }
116
+ }
117
+ // Pretty print valid JSON
118
+ content = JSON.stringify(parsed, null, 2);
119
+ }
120
+ catch (error) {
121
+ // This shouldn't happen since we validate, but handle gracefully
122
+ valid = false;
123
+ errorMessage = error instanceof Error ? error.message : "Invalid JSON";
124
+ content = rawContent;
125
+ }
126
+ return {
127
+ content,
128
+ rawContent,
129
+ parsed,
130
+ valid,
131
+ errorMessage,
132
+ keyCount,
133
+ arrayLength,
134
+ truncated: false,
135
+ buffer,
136
+ mimetype: fileInfo.mimetype || "application/json",
137
+ size: fileInfo.size,
138
+ filename: this.getFilename(fileInfo),
139
+ };
140
+ }
141
+ }
142
+ // =============================================================================
143
+ // SINGLETON INSTANCE
144
+ // =============================================================================
145
+ /** Singleton JSON processor instance */
146
+ export const jsonProcessor = new JsonProcessor();
147
+ // =============================================================================
148
+ // UTILITY FUNCTIONS
149
+ // =============================================================================
150
+ /**
151
+ * Check if a file is a JSON file based on MIME type or extension.
152
+ *
153
+ * @param mimetype - MIME type of the file
154
+ * @param filename - Filename (for extension-based detection)
155
+ * @returns true if the file is a JSON file
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * if (isJsonFile("application/json", "config.json")) {
160
+ * // Process as JSON
161
+ * }
162
+ * ```
163
+ */
164
+ export function isJsonFile(mimetype, filename) {
165
+ return jsonProcessor.isFileSupported(mimetype, filename);
166
+ }
167
+ /**
168
+ * Validate JSON file size against configured limit.
169
+ *
170
+ * @param sizeBytes - File size in bytes
171
+ * @returns true if size is within the limit
172
+ */
173
+ export function validateJsonSize(sizeBytes) {
174
+ const maxBytes = SIZE_LIMITS_MB.JSON_MAX_MB * 1024 * 1024;
175
+ return sizeBytes <= maxBytes;
176
+ }
177
+ /**
178
+ * Process a single JSON file.
179
+ *
180
+ * @param fileInfo - File information (with URL or buffer)
181
+ * @param options - Optional processing options (auth headers, timeout, retry config)
182
+ * @returns Processing result with parsed JSON or error
183
+ *
184
+ * @example
185
+ * ```typescript
186
+ * const result = await processJson({
187
+ * id: "file-123",
188
+ * name: "data.json",
189
+ * mimetype: "application/json",
190
+ * size: 2048,
191
+ * url: "https://example.com/data.json",
192
+ * }, {
193
+ * authHeaders: { "Authorization": "Bearer token" },
194
+ * });
195
+ *
196
+ * if (result.success && result.data) {
197
+ * console.log("Parsed:", result.data.parsed);
198
+ * }
199
+ * ```
200
+ */
201
+ export function processJson(fileInfo, options) {
202
+ return jsonProcessor.processFile(fileInfo, options);
203
+ }