@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.
- package/CHANGELOG.md +27 -0
- package/README.md +106 -37
- package/dist/agent/directTools.d.ts +11 -11
- package/dist/cli/commands/config.d.ts +6 -6
- package/dist/cli/commands/rag.d.ts +19 -0
- package/dist/cli/commands/rag.js +756 -0
- package/dist/cli/factories/commandFactory.js +146 -83
- package/dist/cli/parser.js +4 -1
- package/dist/core/baseProvider.d.ts +43 -30
- package/dist/core/baseProvider.js +98 -138
- package/dist/core/conversationMemoryFactory.d.ts +2 -2
- package/dist/core/conversationMemoryFactory.js +2 -2
- package/dist/core/conversationMemoryInitializer.d.ts +1 -2
- package/dist/core/conversationMemoryInitializer.js +2 -2
- package/dist/core/infrastructure/baseError.d.ts +21 -0
- package/dist/core/infrastructure/baseError.js +22 -0
- package/dist/core/infrastructure/baseFactory.d.ts +21 -0
- package/dist/core/infrastructure/baseFactory.js +54 -0
- package/dist/core/infrastructure/baseRegistry.d.ts +21 -0
- package/dist/core/infrastructure/baseRegistry.js +49 -0
- package/dist/core/infrastructure/index.d.ts +5 -0
- package/dist/core/infrastructure/index.js +5 -0
- package/dist/core/infrastructure/retry.d.ts +7 -0
- package/dist/core/infrastructure/retry.js +20 -0
- package/dist/core/infrastructure/typedEventEmitter.d.ts +8 -0
- package/dist/core/infrastructure/typedEventEmitter.js +23 -0
- package/dist/core/redisConversationMemoryManager.d.ts +1 -6
- package/dist/core/redisConversationMemoryManager.js +7 -19
- package/dist/factories/providerFactory.d.ts +5 -3
- package/dist/factories/providerFactory.js +31 -24
- package/dist/image-gen/ImageGenService.d.ts +143 -0
- package/dist/image-gen/ImageGenService.js +345 -0
- package/dist/image-gen/imageGenTools.d.ts +126 -0
- package/dist/image-gen/imageGenTools.js +304 -0
- package/dist/image-gen/index.d.ts +46 -0
- package/dist/image-gen/index.js +48 -0
- package/dist/image-gen/types.d.ts +237 -0
- package/dist/image-gen/types.js +24 -0
- package/dist/index.d.ts +46 -12
- package/dist/index.js +88 -36
- package/dist/lib/agent/directTools.d.ts +8 -8
- package/dist/lib/core/baseProvider.d.ts +43 -30
- package/dist/lib/core/baseProvider.js +98 -138
- package/dist/lib/core/conversationMemoryFactory.d.ts +2 -2
- package/dist/lib/core/conversationMemoryFactory.js +2 -2
- package/dist/lib/core/conversationMemoryInitializer.d.ts +1 -2
- package/dist/lib/core/conversationMemoryInitializer.js +2 -2
- package/dist/lib/core/infrastructure/baseError.d.ts +21 -0
- package/dist/lib/core/infrastructure/baseError.js +23 -0
- package/dist/lib/core/infrastructure/baseFactory.d.ts +21 -0
- package/dist/lib/core/infrastructure/baseFactory.js +55 -0
- package/dist/lib/core/infrastructure/baseRegistry.d.ts +21 -0
- package/dist/lib/core/infrastructure/baseRegistry.js +50 -0
- package/dist/lib/core/infrastructure/index.d.ts +5 -0
- package/dist/lib/core/infrastructure/index.js +6 -0
- package/dist/lib/core/infrastructure/retry.d.ts +7 -0
- package/dist/lib/core/infrastructure/retry.js +21 -0
- package/dist/lib/core/infrastructure/typedEventEmitter.d.ts +8 -0
- package/dist/lib/core/infrastructure/typedEventEmitter.js +24 -0
- package/dist/lib/core/redisConversationMemoryManager.d.ts +1 -6
- package/dist/lib/core/redisConversationMemoryManager.js +7 -19
- package/dist/lib/factories/providerFactory.d.ts +5 -3
- package/dist/lib/factories/providerFactory.js +31 -24
- package/dist/lib/image-gen/ImageGenService.d.ts +143 -0
- package/dist/lib/image-gen/ImageGenService.js +346 -0
- package/dist/lib/image-gen/imageGenTools.d.ts +126 -0
- package/dist/lib/image-gen/imageGenTools.js +305 -0
- package/dist/lib/image-gen/index.d.ts +46 -0
- package/dist/lib/image-gen/index.js +49 -0
- package/dist/lib/image-gen/types.d.ts +237 -0
- package/dist/lib/image-gen/types.js +25 -0
- package/dist/lib/index.d.ts +46 -12
- package/dist/lib/index.js +88 -36
- package/dist/lib/mcp/index.d.ts +6 -5
- package/dist/lib/mcp/index.js +7 -5
- package/dist/lib/neurolink.d.ts +11 -13
- package/dist/lib/neurolink.js +95 -29
- package/dist/lib/processors/base/BaseFileProcessor.d.ts +273 -0
- package/dist/lib/processors/base/BaseFileProcessor.js +614 -0
- package/dist/lib/processors/base/index.d.ts +14 -0
- package/dist/lib/processors/base/index.js +20 -0
- package/dist/lib/processors/base/types.d.ts +593 -0
- package/dist/lib/processors/base/types.js +77 -0
- package/dist/lib/processors/cli/fileProcessorCli.d.ts +163 -0
- package/dist/lib/processors/cli/fileProcessorCli.js +389 -0
- package/dist/lib/processors/cli/index.d.ts +37 -0
- package/dist/lib/processors/cli/index.js +50 -0
- package/dist/lib/processors/code/ConfigProcessor.d.ts +171 -0
- package/dist/lib/processors/code/ConfigProcessor.js +401 -0
- package/dist/lib/processors/code/SourceCodeProcessor.d.ts +174 -0
- package/dist/lib/processors/code/SourceCodeProcessor.js +305 -0
- package/dist/lib/processors/code/index.d.ts +44 -0
- package/dist/lib/processors/code/index.js +61 -0
- package/dist/lib/processors/config/fileTypes.d.ts +283 -0
- package/dist/lib/processors/config/fileTypes.js +521 -0
- package/dist/lib/processors/config/index.d.ts +32 -0
- package/dist/lib/processors/config/index.js +93 -0
- package/dist/lib/processors/config/languageMap.d.ts +66 -0
- package/dist/lib/processors/config/languageMap.js +411 -0
- package/dist/lib/processors/config/mimeTypes.d.ts +376 -0
- package/dist/lib/processors/config/mimeTypes.js +339 -0
- package/dist/lib/processors/config/sizeLimits.d.ts +194 -0
- package/dist/lib/processors/config/sizeLimits.js +247 -0
- package/dist/lib/processors/data/JsonProcessor.d.ts +122 -0
- package/dist/lib/processors/data/JsonProcessor.js +204 -0
- package/dist/lib/processors/data/XmlProcessor.d.ts +160 -0
- package/dist/lib/processors/data/XmlProcessor.js +284 -0
- package/dist/lib/processors/data/YamlProcessor.d.ts +163 -0
- package/dist/lib/processors/data/YamlProcessor.js +295 -0
- package/dist/lib/processors/data/index.d.ts +49 -0
- package/dist/lib/processors/data/index.js +77 -0
- package/dist/lib/processors/document/ExcelProcessor.d.ts +238 -0
- package/dist/lib/processors/document/ExcelProcessor.js +520 -0
- package/dist/lib/processors/document/OpenDocumentProcessor.d.ts +69 -0
- package/dist/lib/processors/document/OpenDocumentProcessor.js +211 -0
- package/dist/lib/processors/document/RtfProcessor.d.ts +152 -0
- package/dist/lib/processors/document/RtfProcessor.js +362 -0
- package/dist/lib/processors/document/WordProcessor.d.ts +168 -0
- package/dist/lib/processors/document/WordProcessor.js +354 -0
- package/dist/lib/processors/document/index.d.ts +54 -0
- package/dist/lib/processors/document/index.js +91 -0
- package/dist/lib/processors/errors/FileErrorCode.d.ts +98 -0
- package/dist/lib/processors/errors/FileErrorCode.js +256 -0
- package/dist/lib/processors/errors/errorHelpers.d.ts +151 -0
- package/dist/lib/processors/errors/errorHelpers.js +379 -0
- package/dist/lib/processors/errors/errorSerializer.d.ts +139 -0
- package/dist/lib/processors/errors/errorSerializer.js +508 -0
- package/dist/lib/processors/errors/index.d.ts +46 -0
- package/dist/lib/processors/errors/index.js +50 -0
- package/dist/lib/processors/index.d.ts +76 -0
- package/dist/lib/processors/index.js +113 -0
- package/dist/lib/processors/integration/FileProcessorIntegration.d.ts +244 -0
- package/dist/lib/processors/integration/FileProcessorIntegration.js +273 -0
- package/dist/lib/processors/integration/index.d.ts +42 -0
- package/dist/lib/processors/integration/index.js +45 -0
- package/dist/lib/processors/markup/HtmlProcessor.d.ts +169 -0
- package/dist/lib/processors/markup/HtmlProcessor.js +250 -0
- package/dist/lib/processors/markup/MarkdownProcessor.d.ts +165 -0
- package/dist/lib/processors/markup/MarkdownProcessor.js +245 -0
- package/dist/lib/processors/markup/SvgProcessor.d.ts +156 -0
- package/dist/lib/processors/markup/SvgProcessor.js +241 -0
- package/dist/lib/processors/markup/TextProcessor.d.ts +135 -0
- package/dist/lib/processors/markup/TextProcessor.js +189 -0
- package/dist/lib/processors/markup/index.d.ts +66 -0
- package/dist/lib/processors/markup/index.js +103 -0
- package/dist/lib/processors/registry/ProcessorRegistry.d.ts +334 -0
- package/dist/lib/processors/registry/ProcessorRegistry.js +609 -0
- package/dist/lib/processors/registry/index.d.ts +12 -0
- package/dist/lib/processors/registry/index.js +17 -0
- package/dist/lib/processors/registry/types.d.ts +53 -0
- package/dist/lib/processors/registry/types.js +11 -0
- package/dist/lib/providers/amazonBedrock.d.ts +15 -2
- package/dist/lib/providers/amazonBedrock.js +65 -8
- package/dist/lib/providers/anthropic.d.ts +3 -3
- package/dist/lib/providers/anthropic.js +10 -7
- package/dist/lib/providers/googleAiStudio.d.ts +5 -5
- package/dist/lib/providers/googleAiStudio.js +10 -7
- package/dist/lib/providers/googleVertex.d.ts +16 -4
- package/dist/lib/providers/googleVertex.js +72 -16
- package/dist/lib/providers/litellm.d.ts +3 -3
- package/dist/lib/providers/litellm.js +10 -10
- package/dist/lib/providers/mistral.d.ts +3 -3
- package/dist/lib/providers/mistral.js +7 -6
- package/dist/lib/providers/ollama.d.ts +3 -4
- package/dist/lib/providers/ollama.js +7 -8
- package/dist/lib/providers/openAI.d.ts +14 -2
- package/dist/lib/providers/openAI.js +60 -6
- package/dist/lib/providers/openRouter.d.ts +2 -2
- package/dist/lib/providers/openRouter.js +10 -6
- package/dist/lib/providers/sagemaker/language-model.d.ts +2 -2
- package/dist/lib/rag/ChunkerFactory.d.ts +91 -0
- package/dist/lib/rag/ChunkerFactory.js +321 -0
- package/dist/lib/rag/ChunkerRegistry.d.ts +91 -0
- package/dist/lib/rag/ChunkerRegistry.js +422 -0
- package/dist/lib/rag/chunkers/BaseChunker.d.ts +53 -0
- package/dist/lib/rag/chunkers/BaseChunker.js +144 -0
- package/dist/lib/rag/chunkers/CharacterChunker.d.ts +18 -0
- package/dist/lib/rag/chunkers/CharacterChunker.js +29 -0
- package/dist/lib/rag/chunkers/HTMLChunker.d.ts +19 -0
- package/dist/lib/rag/chunkers/HTMLChunker.js +39 -0
- package/dist/lib/rag/chunkers/JSONChunker.d.ts +19 -0
- package/dist/lib/rag/chunkers/JSONChunker.js +69 -0
- package/dist/lib/rag/chunkers/LaTeXChunker.d.ts +15 -0
- package/dist/lib/rag/chunkers/LaTeXChunker.js +64 -0
- package/dist/lib/rag/chunkers/MarkdownChunker.d.ts +15 -0
- package/dist/lib/rag/chunkers/MarkdownChunker.js +103 -0
- package/dist/lib/rag/chunkers/RecursiveChunker.d.ts +27 -0
- package/dist/lib/rag/chunkers/RecursiveChunker.js +140 -0
- package/dist/lib/rag/chunkers/SemanticMarkdownChunker.d.ts +22 -0
- package/dist/lib/rag/chunkers/SemanticMarkdownChunker.js +139 -0
- package/dist/lib/rag/chunkers/SentenceChunker.d.ts +19 -0
- package/dist/lib/rag/chunkers/SentenceChunker.js +67 -0
- package/dist/lib/rag/chunkers/TokenChunker.d.ts +19 -0
- package/dist/lib/rag/chunkers/TokenChunker.js +62 -0
- package/dist/lib/rag/chunkers/index.d.ts +15 -0
- package/dist/lib/rag/chunkers/index.js +16 -0
- package/dist/lib/rag/chunking/characterChunker.d.ts +16 -0
- package/dist/lib/rag/chunking/characterChunker.js +143 -0
- package/dist/lib/rag/chunking/chunkerRegistry.d.ts +67 -0
- package/dist/lib/rag/chunking/chunkerRegistry.js +195 -0
- package/dist/lib/rag/chunking/htmlChunker.d.ts +34 -0
- package/dist/lib/rag/chunking/htmlChunker.js +248 -0
- package/dist/lib/rag/chunking/index.d.ts +15 -0
- package/dist/lib/rag/chunking/index.js +18 -0
- package/dist/lib/rag/chunking/jsonChunker.d.ts +20 -0
- package/dist/lib/rag/chunking/jsonChunker.js +282 -0
- package/dist/lib/rag/chunking/latexChunker.d.ts +26 -0
- package/dist/lib/rag/chunking/latexChunker.js +252 -0
- package/dist/lib/rag/chunking/markdownChunker.d.ts +19 -0
- package/dist/lib/rag/chunking/markdownChunker.js +202 -0
- package/dist/lib/rag/chunking/recursiveChunker.d.ts +19 -0
- package/dist/lib/rag/chunking/recursiveChunker.js +149 -0
- package/dist/lib/rag/chunking/semanticChunker.d.ts +41 -0
- package/dist/lib/rag/chunking/semanticChunker.js +307 -0
- package/dist/lib/rag/chunking/sentenceChunker.d.ts +25 -0
- package/dist/lib/rag/chunking/sentenceChunker.js +231 -0
- package/dist/lib/rag/chunking/tokenChunker.d.ts +36 -0
- package/dist/lib/rag/chunking/tokenChunker.js +184 -0
- package/dist/lib/rag/document/MDocument.d.ts +198 -0
- package/dist/lib/rag/document/MDocument.js +393 -0
- package/dist/lib/rag/document/index.d.ts +5 -0
- package/dist/lib/rag/document/index.js +6 -0
- package/dist/lib/rag/document/loaders.d.ts +201 -0
- package/dist/lib/rag/document/loaders.js +501 -0
- package/dist/lib/rag/errors/RAGError.d.ts +244 -0
- package/dist/lib/rag/errors/RAGError.js +275 -0
- package/dist/lib/rag/errors/index.d.ts +6 -0
- package/dist/lib/rag/errors/index.js +7 -0
- package/dist/lib/rag/graphRag/graphRAG.d.ts +115 -0
- package/dist/lib/rag/graphRag/graphRAG.js +385 -0
- package/dist/lib/rag/graphRag/index.d.ts +4 -0
- package/dist/lib/rag/graphRag/index.js +5 -0
- package/dist/lib/rag/index.d.ts +103 -0
- package/dist/lib/rag/index.js +142 -0
- package/dist/lib/rag/metadata/MetadataExtractorFactory.d.ts +157 -0
- package/dist/lib/rag/metadata/MetadataExtractorFactory.js +419 -0
- package/dist/lib/rag/metadata/MetadataExtractorRegistry.d.ts +99 -0
- package/dist/lib/rag/metadata/MetadataExtractorRegistry.js +363 -0
- package/dist/lib/rag/metadata/index.d.ts +6 -0
- package/dist/lib/rag/metadata/index.js +10 -0
- package/dist/lib/rag/metadata/metadataExtractor.d.ts +69 -0
- package/dist/lib/rag/metadata/metadataExtractor.js +278 -0
- package/dist/lib/rag/pipeline/RAGPipeline.d.ts +235 -0
- package/dist/lib/rag/pipeline/RAGPipeline.js +402 -0
- package/dist/lib/rag/pipeline/contextAssembly.d.ts +126 -0
- package/dist/lib/rag/pipeline/contextAssembly.js +338 -0
- package/dist/lib/rag/pipeline/index.d.ts +5 -0
- package/dist/lib/rag/pipeline/index.js +6 -0
- package/dist/lib/rag/ragIntegration.d.ts +38 -0
- package/dist/lib/rag/ragIntegration.js +212 -0
- package/dist/lib/rag/reranker/RerankerFactory.d.ts +184 -0
- package/dist/lib/rag/reranker/RerankerFactory.js +431 -0
- package/dist/lib/rag/reranker/RerankerRegistry.d.ts +119 -0
- package/dist/lib/rag/reranker/RerankerRegistry.js +403 -0
- package/dist/lib/rag/reranker/index.d.ts +6 -0
- package/dist/lib/rag/reranker/index.js +10 -0
- package/dist/lib/rag/reranker/reranker.d.ts +71 -0
- package/dist/lib/rag/reranker/reranker.js +278 -0
- package/dist/lib/rag/resilience/CircuitBreaker.d.ts +215 -0
- package/dist/lib/rag/resilience/CircuitBreaker.js +432 -0
- package/dist/lib/rag/resilience/RetryHandler.d.ts +115 -0
- package/dist/lib/rag/resilience/RetryHandler.js +301 -0
- package/dist/lib/rag/resilience/index.d.ts +7 -0
- package/dist/lib/rag/resilience/index.js +8 -0
- package/dist/lib/rag/retrieval/hybridSearch.d.ts +94 -0
- package/dist/lib/rag/retrieval/hybridSearch.js +314 -0
- package/dist/lib/rag/retrieval/index.d.ts +5 -0
- package/dist/lib/rag/retrieval/index.js +6 -0
- package/dist/lib/rag/retrieval/vectorQueryTool.d.ts +93 -0
- package/dist/lib/rag/retrieval/vectorQueryTool.js +290 -0
- package/dist/lib/rag/types.d.ts +768 -0
- package/dist/lib/rag/types.js +9 -0
- package/dist/lib/server/index.d.ts +15 -11
- package/dist/lib/server/index.js +55 -51
- package/dist/lib/server/utils/validation.d.ts +2 -2
- package/dist/lib/types/common.d.ts +0 -1
- package/dist/lib/types/fileTypes.d.ts +1 -1
- package/dist/lib/types/generateTypes.d.ts +42 -8
- package/dist/lib/types/generateTypes.js +1 -1
- package/dist/lib/types/index.d.ts +25 -24
- package/dist/lib/types/index.js +21 -20
- package/dist/lib/types/modelTypes.d.ts +16 -16
- package/dist/lib/types/pptTypes.d.ts +14 -2
- package/dist/lib/types/pptTypes.js +16 -0
- package/dist/lib/types/streamTypes.d.ts +28 -8
- package/dist/lib/types/streamTypes.js +1 -1
- package/dist/lib/utils/async/delay.d.ts +40 -0
- package/dist/lib/utils/async/delay.js +43 -0
- package/dist/lib/utils/async/index.d.ts +23 -0
- package/dist/lib/utils/async/index.js +24 -0
- package/dist/lib/utils/async/retry.d.ts +141 -0
- package/dist/lib/utils/async/retry.js +172 -0
- package/dist/lib/utils/async/withTimeout.d.ts +73 -0
- package/dist/lib/utils/async/withTimeout.js +97 -0
- package/dist/lib/utils/fileDetector.d.ts +7 -1
- package/dist/lib/utils/fileDetector.js +91 -18
- package/dist/lib/utils/json/extract.d.ts +103 -0
- package/dist/lib/utils/json/extract.js +249 -0
- package/dist/lib/utils/json/index.d.ts +36 -0
- package/dist/lib/utils/json/index.js +37 -0
- package/dist/lib/utils/json/safeParse.d.ts +137 -0
- package/dist/lib/utils/json/safeParse.js +191 -0
- package/dist/lib/utils/messageBuilder.d.ts +2 -2
- package/dist/lib/utils/messageBuilder.js +15 -7
- package/dist/lib/utils/modelRouter.d.ts +4 -4
- package/dist/lib/utils/modelRouter.js +4 -4
- package/dist/lib/utils/sanitizers/filename.d.ts +137 -0
- package/dist/lib/utils/sanitizers/filename.js +366 -0
- package/dist/lib/utils/sanitizers/html.d.ts +170 -0
- package/dist/lib/utils/sanitizers/html.js +326 -0
- package/dist/lib/utils/sanitizers/index.d.ts +26 -0
- package/dist/lib/utils/sanitizers/index.js +30 -0
- package/dist/lib/utils/sanitizers/svg.d.ts +81 -0
- package/dist/lib/utils/sanitizers/svg.js +483 -0
- package/dist/mcp/index.d.ts +6 -5
- package/dist/mcp/index.js +7 -5
- package/dist/neurolink.d.ts +11 -13
- package/dist/neurolink.js +95 -29
- package/dist/processors/base/BaseFileProcessor.d.ts +273 -0
- package/dist/processors/base/BaseFileProcessor.js +613 -0
- package/dist/processors/base/index.d.ts +14 -0
- package/dist/processors/base/index.js +19 -0
- package/dist/processors/base/types.d.ts +593 -0
- package/dist/processors/base/types.js +76 -0
- package/dist/processors/cli/fileProcessorCli.d.ts +163 -0
- package/dist/processors/cli/fileProcessorCli.js +388 -0
- package/dist/processors/cli/index.d.ts +37 -0
- package/dist/processors/cli/index.js +49 -0
- package/dist/processors/code/ConfigProcessor.d.ts +171 -0
- package/dist/processors/code/ConfigProcessor.js +400 -0
- package/dist/processors/code/SourceCodeProcessor.d.ts +174 -0
- package/dist/processors/code/SourceCodeProcessor.js +304 -0
- package/dist/processors/code/index.d.ts +44 -0
- package/dist/processors/code/index.js +60 -0
- package/dist/processors/config/fileTypes.d.ts +283 -0
- package/dist/processors/config/fileTypes.js +520 -0
- package/dist/processors/config/index.d.ts +32 -0
- package/dist/processors/config/index.js +92 -0
- package/dist/processors/config/languageMap.d.ts +66 -0
- package/dist/processors/config/languageMap.js +410 -0
- package/dist/processors/config/mimeTypes.d.ts +376 -0
- package/dist/processors/config/mimeTypes.js +338 -0
- package/dist/processors/config/sizeLimits.d.ts +194 -0
- package/dist/processors/config/sizeLimits.js +246 -0
- package/dist/processors/data/JsonProcessor.d.ts +122 -0
- package/dist/processors/data/JsonProcessor.js +203 -0
- package/dist/processors/data/XmlProcessor.d.ts +160 -0
- package/dist/processors/data/XmlProcessor.js +283 -0
- package/dist/processors/data/YamlProcessor.d.ts +163 -0
- package/dist/processors/data/YamlProcessor.js +294 -0
- package/dist/processors/data/index.d.ts +49 -0
- package/dist/processors/data/index.js +76 -0
- package/dist/processors/document/ExcelProcessor.d.ts +238 -0
- package/dist/processors/document/ExcelProcessor.js +519 -0
- package/dist/processors/document/OpenDocumentProcessor.d.ts +69 -0
- package/dist/processors/document/OpenDocumentProcessor.js +210 -0
- package/dist/processors/document/RtfProcessor.d.ts +152 -0
- package/dist/processors/document/RtfProcessor.js +361 -0
- package/dist/processors/document/WordProcessor.d.ts +168 -0
- package/dist/processors/document/WordProcessor.js +353 -0
- package/dist/processors/document/index.d.ts +54 -0
- package/dist/processors/document/index.js +90 -0
- package/dist/processors/errors/FileErrorCode.d.ts +98 -0
- package/dist/processors/errors/FileErrorCode.js +255 -0
- package/dist/processors/errors/errorHelpers.d.ts +151 -0
- package/dist/processors/errors/errorHelpers.js +378 -0
- package/dist/processors/errors/errorSerializer.d.ts +139 -0
- package/dist/processors/errors/errorSerializer.js +507 -0
- package/dist/processors/errors/index.d.ts +46 -0
- package/dist/processors/errors/index.js +49 -0
- package/dist/processors/index.d.ts +76 -0
- package/dist/processors/index.js +112 -0
- package/dist/processors/integration/FileProcessorIntegration.d.ts +244 -0
- package/dist/processors/integration/FileProcessorIntegration.js +272 -0
- package/dist/processors/integration/index.d.ts +42 -0
- package/dist/processors/integration/index.js +44 -0
- package/dist/processors/markup/HtmlProcessor.d.ts +169 -0
- package/dist/processors/markup/HtmlProcessor.js +249 -0
- package/dist/processors/markup/MarkdownProcessor.d.ts +165 -0
- package/dist/processors/markup/MarkdownProcessor.js +244 -0
- package/dist/processors/markup/SvgProcessor.d.ts +156 -0
- package/dist/processors/markup/SvgProcessor.js +240 -0
- package/dist/processors/markup/TextProcessor.d.ts +135 -0
- package/dist/processors/markup/TextProcessor.js +188 -0
- package/dist/processors/markup/index.d.ts +66 -0
- package/dist/processors/markup/index.js +102 -0
- package/dist/processors/registry/ProcessorRegistry.d.ts +334 -0
- package/dist/processors/registry/ProcessorRegistry.js +608 -0
- package/dist/processors/registry/index.d.ts +12 -0
- package/dist/processors/registry/index.js +16 -0
- package/dist/processors/registry/types.d.ts +53 -0
- package/dist/processors/registry/types.js +10 -0
- package/dist/providers/amazonBedrock.d.ts +15 -2
- package/dist/providers/amazonBedrock.js +65 -8
- package/dist/providers/anthropic.d.ts +3 -3
- package/dist/providers/anthropic.js +10 -7
- package/dist/providers/googleAiStudio.d.ts +5 -5
- package/dist/providers/googleAiStudio.js +10 -7
- package/dist/providers/googleVertex.d.ts +16 -4
- package/dist/providers/googleVertex.js +72 -16
- package/dist/providers/litellm.d.ts +3 -3
- package/dist/providers/litellm.js +10 -10
- package/dist/providers/mistral.d.ts +3 -3
- package/dist/providers/mistral.js +7 -6
- package/dist/providers/ollama.d.ts +3 -4
- package/dist/providers/ollama.js +7 -8
- package/dist/providers/openAI.d.ts +14 -2
- package/dist/providers/openAI.js +60 -6
- package/dist/providers/openRouter.d.ts +2 -2
- package/dist/providers/openRouter.js +10 -6
- package/dist/rag/ChunkerFactory.d.ts +91 -0
- package/dist/rag/ChunkerFactory.js +320 -0
- package/dist/rag/ChunkerRegistry.d.ts +91 -0
- package/dist/rag/ChunkerRegistry.js +421 -0
- package/dist/rag/chunkers/BaseChunker.d.ts +53 -0
- package/dist/rag/chunkers/BaseChunker.js +143 -0
- package/dist/rag/chunkers/CharacterChunker.d.ts +18 -0
- package/dist/rag/chunkers/CharacterChunker.js +28 -0
- package/dist/rag/chunkers/HTMLChunker.d.ts +19 -0
- package/dist/rag/chunkers/HTMLChunker.js +38 -0
- package/dist/rag/chunkers/JSONChunker.d.ts +19 -0
- package/dist/rag/chunkers/JSONChunker.js +68 -0
- package/dist/rag/chunkers/LaTeXChunker.d.ts +15 -0
- package/dist/rag/chunkers/LaTeXChunker.js +63 -0
- package/dist/rag/chunkers/MarkdownChunker.d.ts +15 -0
- package/dist/rag/chunkers/MarkdownChunker.js +102 -0
- package/dist/rag/chunkers/RecursiveChunker.d.ts +27 -0
- package/dist/rag/chunkers/RecursiveChunker.js +139 -0
- package/dist/rag/chunkers/SemanticMarkdownChunker.d.ts +22 -0
- package/dist/rag/chunkers/SemanticMarkdownChunker.js +138 -0
- package/dist/rag/chunkers/SentenceChunker.d.ts +19 -0
- package/dist/rag/chunkers/SentenceChunker.js +66 -0
- package/dist/rag/chunkers/TokenChunker.d.ts +19 -0
- package/dist/rag/chunkers/TokenChunker.js +61 -0
- package/dist/rag/chunkers/index.d.ts +15 -0
- package/dist/rag/chunkers/index.js +15 -0
- package/dist/rag/chunking/characterChunker.d.ts +16 -0
- package/dist/rag/chunking/characterChunker.js +142 -0
- package/dist/rag/chunking/chunkerRegistry.d.ts +67 -0
- package/dist/rag/chunking/chunkerRegistry.js +194 -0
- package/dist/rag/chunking/htmlChunker.d.ts +34 -0
- package/dist/rag/chunking/htmlChunker.js +247 -0
- package/dist/rag/chunking/index.d.ts +15 -0
- package/dist/rag/chunking/index.js +17 -0
- package/dist/rag/chunking/jsonChunker.d.ts +20 -0
- package/dist/rag/chunking/jsonChunker.js +281 -0
- package/dist/rag/chunking/latexChunker.d.ts +26 -0
- package/dist/rag/chunking/latexChunker.js +251 -0
- package/dist/rag/chunking/markdownChunker.d.ts +19 -0
- package/dist/rag/chunking/markdownChunker.js +201 -0
- package/dist/rag/chunking/recursiveChunker.d.ts +19 -0
- package/dist/rag/chunking/recursiveChunker.js +148 -0
- package/dist/rag/chunking/semanticChunker.d.ts +41 -0
- package/dist/rag/chunking/semanticChunker.js +306 -0
- package/dist/rag/chunking/sentenceChunker.d.ts +25 -0
- package/dist/rag/chunking/sentenceChunker.js +230 -0
- package/dist/rag/chunking/tokenChunker.d.ts +36 -0
- package/dist/rag/chunking/tokenChunker.js +183 -0
- package/dist/rag/document/MDocument.d.ts +198 -0
- package/dist/rag/document/MDocument.js +392 -0
- package/dist/rag/document/index.d.ts +5 -0
- package/dist/rag/document/index.js +5 -0
- package/dist/rag/document/loaders.d.ts +201 -0
- package/dist/rag/document/loaders.js +500 -0
- package/dist/rag/errors/RAGError.d.ts +244 -0
- package/dist/rag/errors/RAGError.js +274 -0
- package/dist/rag/errors/index.d.ts +6 -0
- package/dist/rag/errors/index.js +6 -0
- package/dist/rag/graphRag/graphRAG.d.ts +115 -0
- package/dist/rag/graphRag/graphRAG.js +384 -0
- package/dist/rag/graphRag/index.d.ts +4 -0
- package/dist/rag/graphRag/index.js +4 -0
- package/dist/rag/index.d.ts +103 -0
- package/dist/rag/index.js +141 -0
- package/dist/rag/metadata/MetadataExtractorFactory.d.ts +157 -0
- package/dist/rag/metadata/MetadataExtractorFactory.js +418 -0
- package/dist/rag/metadata/MetadataExtractorRegistry.d.ts +99 -0
- package/dist/rag/metadata/MetadataExtractorRegistry.js +362 -0
- package/dist/rag/metadata/index.d.ts +6 -0
- package/dist/rag/metadata/index.js +9 -0
- package/dist/rag/metadata/metadataExtractor.d.ts +69 -0
- package/dist/rag/metadata/metadataExtractor.js +277 -0
- package/dist/rag/pipeline/RAGPipeline.d.ts +235 -0
- package/dist/rag/pipeline/RAGPipeline.js +401 -0
- package/dist/rag/pipeline/contextAssembly.d.ts +126 -0
- package/dist/rag/pipeline/contextAssembly.js +337 -0
- package/dist/rag/pipeline/index.d.ts +5 -0
- package/dist/rag/pipeline/index.js +5 -0
- package/dist/rag/ragIntegration.d.ts +38 -0
- package/dist/rag/ragIntegration.js +211 -0
- package/dist/rag/reranker/RerankerFactory.d.ts +184 -0
- package/dist/rag/reranker/RerankerFactory.js +430 -0
- package/dist/rag/reranker/RerankerRegistry.d.ts +119 -0
- package/dist/rag/reranker/RerankerRegistry.js +402 -0
- package/dist/rag/reranker/index.d.ts +6 -0
- package/dist/rag/reranker/index.js +9 -0
- package/dist/rag/reranker/reranker.d.ts +71 -0
- package/dist/rag/reranker/reranker.js +277 -0
- package/dist/rag/resilience/CircuitBreaker.d.ts +215 -0
- package/dist/rag/resilience/CircuitBreaker.js +431 -0
- package/dist/rag/resilience/RetryHandler.d.ts +115 -0
- package/dist/rag/resilience/RetryHandler.js +300 -0
- package/dist/rag/resilience/index.d.ts +7 -0
- package/dist/rag/resilience/index.js +7 -0
- package/dist/rag/retrieval/hybridSearch.d.ts +94 -0
- package/dist/rag/retrieval/hybridSearch.js +313 -0
- package/dist/rag/retrieval/index.d.ts +5 -0
- package/dist/rag/retrieval/index.js +5 -0
- package/dist/rag/retrieval/vectorQueryTool.d.ts +93 -0
- package/dist/rag/retrieval/vectorQueryTool.js +289 -0
- package/dist/rag/types.d.ts +768 -0
- package/dist/rag/types.js +8 -0
- package/dist/server/index.d.ts +15 -11
- package/dist/server/index.js +55 -51
- package/dist/server/utils/validation.d.ts +8 -8
- package/dist/types/common.d.ts +0 -1
- package/dist/types/fileTypes.d.ts +1 -1
- package/dist/types/generateTypes.d.ts +42 -8
- package/dist/types/generateTypes.js +1 -1
- package/dist/types/index.d.ts +25 -24
- package/dist/types/index.js +21 -20
- package/dist/types/modelTypes.d.ts +10 -10
- package/dist/types/pptTypes.d.ts +14 -2
- package/dist/types/pptTypes.js +16 -0
- package/dist/types/streamTypes.d.ts +28 -8
- package/dist/types/streamTypes.js +1 -1
- package/dist/utils/async/delay.d.ts +40 -0
- package/dist/utils/async/delay.js +42 -0
- package/dist/utils/async/index.d.ts +23 -0
- package/dist/utils/async/index.js +23 -0
- package/dist/utils/async/retry.d.ts +141 -0
- package/dist/utils/async/retry.js +171 -0
- package/dist/utils/async/withTimeout.d.ts +73 -0
- package/dist/utils/async/withTimeout.js +96 -0
- package/dist/utils/fileDetector.d.ts +7 -1
- package/dist/utils/fileDetector.js +91 -18
- package/dist/utils/json/extract.d.ts +103 -0
- package/dist/utils/json/extract.js +248 -0
- package/dist/utils/json/index.d.ts +36 -0
- package/dist/utils/json/index.js +36 -0
- package/dist/utils/json/safeParse.d.ts +137 -0
- package/dist/utils/json/safeParse.js +190 -0
- package/dist/utils/messageBuilder.d.ts +2 -2
- package/dist/utils/messageBuilder.js +15 -7
- package/dist/utils/modelRouter.d.ts +4 -4
- package/dist/utils/modelRouter.js +4 -4
- package/dist/utils/sanitizers/filename.d.ts +137 -0
- package/dist/utils/sanitizers/filename.js +365 -0
- package/dist/utils/sanitizers/html.d.ts +170 -0
- package/dist/utils/sanitizers/html.js +325 -0
- package/dist/utils/sanitizers/index.d.ts +26 -0
- package/dist/utils/sanitizers/index.js +29 -0
- package/dist/utils/sanitizers/svg.d.ts +81 -0
- package/dist/utils/sanitizers/svg.js +482 -0
- 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
|
+
}
|