@crownpeak/dqm-react-component-dev-mcp 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +138 -0
- package/data/.env.example +22 -0
- package/data/.gitattributes +47 -0
- package/data/.glfrc.json +7 -0
- package/data/.husky/pre-commit +5 -0
- package/data/.nvmrc +1 -0
- package/data/CHANGELOG.md +75 -0
- package/data/CODE_OF_CONDUCT.md +129 -0
- package/data/CONTRIBUTING.md +203 -0
- package/data/DOCS-STRUCTURE.md +307 -0
- package/data/I18N.md +292 -0
- package/data/LICENSE +22 -0
- package/data/README.md +315 -0
- package/data/SECURITY.md +125 -0
- package/data/WIKI-DEPLOYMENT.md +348 -0
- package/data/docs/AI-FEATURES.md +610 -0
- package/data/docs/API-REFERENCE.md +1022 -0
- package/data/docs/AUTHENTICATION.md +301 -0
- package/data/docs/BACKEND-API.md +468 -0
- package/data/docs/DEVELOPMENT.md +375 -0
- package/data/docs/EXAMPLES.md +622 -0
- package/data/docs/MCP-SERVER.md +307 -0
- package/data/docs/MIGRATION-GUIDE.md +367 -0
- package/data/docs/NPM-PUBLISH.md +193 -0
- package/data/docs/QUICKSTART.md +206 -0
- package/data/docs/REDIS-SETUP.md +162 -0
- package/data/docs/SERVER.md +228 -0
- package/data/docs/TROUBLESHOOTING.md +657 -0
- package/data/docs/WIDGET-GUIDE.md +638 -0
- package/data/docs/WIKI-HOME.md +58 -0
- package/data/docs/WIKI-SIDEBAR.md +39 -0
- package/data/package.json +171 -0
- package/data/playwright.config.ts +64 -0
- package/data/probe/.cargo/config.toml +10 -0
- package/data/probe/.claude/commands/performance-review.md +15 -0
- package/data/probe/.clinerules +288 -0
- package/data/probe/.dockerignore +57 -0
- package/data/probe/.githooks/post-commit +11 -0
- package/data/probe/.githooks/pre-commit +99 -0
- package/data/probe/.githooks/pre-commit-vow +9 -0
- package/data/probe/.prompts/engineer.md +41 -0
- package/data/probe/.roomodes +28 -0
- package/data/probe/.windsurfrules +0 -0
- package/data/probe/BASH_TOOL_SUMMARY.md +148 -0
- package/data/probe/BENCHMARKING.md +256 -0
- package/data/probe/CLAUDE.md +226 -0
- package/data/probe/CODE_OF_CONDUCT.md +128 -0
- package/data/probe/CONTRIBUTING.md +193 -0
- package/data/probe/Cargo.toml +120 -0
- package/data/probe/Cross.toml +10 -0
- package/data/probe/DOCKER-README.md +224 -0
- package/data/probe/Dockerfile +32 -0
- package/data/probe/ENHANCED_DEBUG_TELEMETRY.md +188 -0
- package/data/probe/LICENSE +201 -0
- package/data/probe/Makefile +210 -0
- package/data/probe/README.md +824 -0
- package/data/probe/SECURITY.md +67 -0
- package/data/probe/WINDOWS-GUIDE.md +294 -0
- package/data/probe/benches/parsing_benchmarks.rs +370 -0
- package/data/probe/benches/search_benchmarks.rs +599 -0
- package/data/probe/benches/simd_benchmarks.rs +372 -0
- package/data/probe/benches/timing_benchmarks.rs +287 -0
- package/data/probe/build-windows.bat +229 -0
- package/data/probe/codex-config/config.toml +6 -0
- package/data/probe/docs/PERFORMANCE_OPTIMIZATION.md +161 -0
- package/data/probe/examples/cache_demo.rs +46 -0
- package/data/probe/examples/chat/.dockerignore +37 -0
- package/data/probe/examples/chat/ChatSessionManager.js +295 -0
- package/data/probe/examples/chat/Dockerfile +98 -0
- package/data/probe/examples/chat/LICENSE +201 -0
- package/data/probe/examples/chat/LOCAL_IMAGE_SUPPORT.md +195 -0
- package/data/probe/examples/chat/MCP_INTEGRATION.md +400 -0
- package/data/probe/examples/chat/README.md +338 -0
- package/data/probe/examples/chat/TRACING.md +226 -0
- package/data/probe/examples/chat/appTracer.js +968 -0
- package/data/probe/examples/chat/auth.js +76 -0
- package/data/probe/examples/chat/bin/probe-chat.js +13 -0
- package/data/probe/examples/chat/build.js +104 -0
- package/data/probe/examples/chat/cancelRequest.js +84 -0
- package/data/probe/examples/chat/demo-agentic-image-flow.js +88 -0
- package/data/probe/examples/chat/demo-local-images.js +128 -0
- package/data/probe/examples/chat/fileSpanExporter.js +181 -0
- package/data/probe/examples/chat/implement/README.md +228 -0
- package/data/probe/examples/chat/implement/backends/AiderBackend.js +750 -0
- package/data/probe/examples/chat/implement/backends/BaseBackend.js +276 -0
- package/data/probe/examples/chat/implement/backends/ClaudeCodeBackend.js +767 -0
- package/data/probe/examples/chat/implement/backends/MockBackend.js +237 -0
- package/data/probe/examples/chat/implement/backends/registry.js +85 -0
- package/data/probe/examples/chat/implement/core/BackendManager.js +567 -0
- package/data/probe/examples/chat/implement/core/ImplementTool.js +354 -0
- package/data/probe/examples/chat/implement/core/config.js +428 -0
- package/data/probe/examples/chat/implement/core/timeouts.js +58 -0
- package/data/probe/examples/chat/implement/core/utils.js +496 -0
- package/data/probe/examples/chat/implement/types/BackendTypes.js +126 -0
- package/data/probe/examples/chat/index.js +669 -0
- package/data/probe/examples/chat/mcpServer.js +341 -0
- package/data/probe/examples/chat/npm/LICENSE +15 -0
- package/data/probe/examples/chat/npm/README.md +168 -0
- package/data/probe/examples/chat/npm/bin/probe-chat.js +156 -0
- package/data/probe/examples/chat/npm/index.js +259 -0
- package/data/probe/examples/chat/npm/package.json +54 -0
- package/data/probe/examples/chat/package.json +102 -0
- package/data/probe/examples/chat/probeChat.js +456 -0
- package/data/probe/examples/chat/probeTool.js +491 -0
- package/data/probe/examples/chat/storage/JsonChatStorage.js +476 -0
- package/data/probe/examples/chat/telemetry.js +281 -0
- package/data/probe/examples/chat/test/integration/chatFlows.test.js +320 -0
- package/data/probe/examples/chat/test/integration/toolCalling.test.js +471 -0
- package/data/probe/examples/chat/test/mocks/mockLLMProvider.js +269 -0
- package/data/probe/examples/chat/test/test-backends.js +90 -0
- package/data/probe/examples/chat/test/testUtils.js +530 -0
- package/data/probe/examples/chat/test/unit/backendTimeout.test.js +161 -0
- package/data/probe/examples/chat/test/unit/packageFiles.test.js +120 -0
- package/data/probe/examples/chat/test/verify-tests.js +118 -0
- package/data/probe/examples/chat/test-agentic-image-loading.js +294 -0
- package/data/probe/examples/chat/test-ai-sdk-telemetry.js +204 -0
- package/data/probe/examples/chat/test-chat-tracing.js +38 -0
- package/data/probe/examples/chat/test-direct-function.js +49 -0
- package/data/probe/examples/chat/test-file-size-validation.js +103 -0
- package/data/probe/examples/chat/test-full-mcp-integration.js +258 -0
- package/data/probe/examples/chat/test-github-context.txt +12 -0
- package/data/probe/examples/chat/test-hierarchy.js +203 -0
- package/data/probe/examples/chat/test-image-spans.js +37 -0
- package/data/probe/examples/chat/test-local-image-reading.js +176 -0
- package/data/probe/examples/chat/test-mcp-integration.js +136 -0
- package/data/probe/examples/chat/test-mcp-probe-server.js +161 -0
- package/data/probe/examples/chat/test-mcp-with-ai.js +279 -0
- package/data/probe/examples/chat/test-multiple-allowed-dirs.js +111 -0
- package/data/probe/examples/chat/test-probe-mcp-server.js +110 -0
- package/data/probe/examples/chat/test-security-validation.js +145 -0
- package/data/probe/examples/chat/test-simple-tracing.js +32 -0
- package/data/probe/examples/chat/test-trace-verification.js +235 -0
- package/data/probe/examples/chat/test-tracing.js +114 -0
- package/data/probe/examples/chat/tokenCounter.js +419 -0
- package/data/probe/examples/chat/tokenUsageDisplay.js +134 -0
- package/data/probe/examples/chat/webServer.js +1103 -0
- package/data/probe/examples/reranker/Cargo.toml +33 -0
- package/data/probe/examples/reranker/DEBUG_OUTPUT_ANALYSIS.md +71 -0
- package/data/probe/examples/reranker/MODELS.md +66 -0
- package/data/probe/examples/reranker/MODEL_COMPARISON.md +60 -0
- package/data/probe/examples/reranker/MULTI_MODEL_ANALYSIS.md +176 -0
- package/data/probe/examples/reranker/PERFORMANCE_SUMMARY.md +156 -0
- package/data/probe/examples/reranker/README.md +347 -0
- package/data/probe/examples/reranker/RUST_BERT_COMPARISON.md +82 -0
- package/data/probe/examples/reranker/TOKENIZATION_GUIDE.md +120 -0
- package/data/probe/examples/reranker/check_rust_tokenizer.py +108 -0
- package/data/probe/examples/reranker/convert_to_torchscript.py +109 -0
- package/data/probe/examples/reranker/debug_scoring.py +189 -0
- package/data/probe/examples/reranker/debug_tokenization.py +154 -0
- package/data/probe/examples/reranker/download_models.sh +73 -0
- package/data/probe/examples/reranker/requirements.txt +13 -0
- package/data/probe/examples/reranker/run_comprehensive_benchmark.sh +83 -0
- package/data/probe/examples/reranker/rust_bert_test/Cargo.toml +12 -0
- package/data/probe/examples/reranker/rust_bert_test/README.md +54 -0
- package/data/probe/examples/reranker/simple_test.py +50 -0
- package/data/probe/examples/reranker/test_all_models.sh +63 -0
- package/data/probe/examples/reranker/test_bert_results.sh +44 -0
- package/data/probe/examples/reranker/test_cross_encoder.py +334 -0
- package/data/probe/examples/reranker/test_cross_encoder.sh +80 -0
- package/data/probe/examples/reranker/test_exact_comparison.py +151 -0
- package/data/probe/examples/reranker/test_parallel_performance.sh +56 -0
- package/data/probe/examples/reranker/test_scores.py +132 -0
- package/data/probe/install.ps1 +508 -0
- package/data/probe/install.sh +460 -0
- package/data/probe/npm/CLONE_METHOD_EXAMPLES.md +596 -0
- package/data/probe/npm/CONTEXT_COMPACTION.md +303 -0
- package/data/probe/npm/DELEGATE_TOOL_README.md +166 -0
- package/data/probe/npm/MAID_INTEGRATION.md +313 -0
- package/data/probe/npm/MCP_INTEGRATION_SUMMARY.md +241 -0
- package/data/probe/npm/README.md +824 -0
- package/data/probe/npm/bin/.gitignore +7 -0
- package/data/probe/npm/bin/.gitkeep +0 -0
- package/data/probe/npm/bin/README.md +12 -0
- package/data/probe/npm/bin/probe +167 -0
- package/data/probe/npm/docs/CLAUDE_CODE_INTEGRATION.md +414 -0
- package/data/probe/npm/docs/CODEX_INTEGRATION.md +502 -0
- package/data/probe/npm/docs/EDIT_CREATE_TOOLS.md +233 -0
- package/data/probe/npm/docs/RETRY_AND_FALLBACK.md +674 -0
- package/data/probe/npm/example-usage.js +335 -0
- package/data/probe/npm/examples/multi-engine-demo.js +117 -0
- package/data/probe/npm/examples/probe-agent-cli.js +113 -0
- package/data/probe/npm/examples/test-agent-edit.js +114 -0
- package/data/probe/npm/examples/test-edit-create.js +120 -0
- package/data/probe/npm/examples/test-edit-direct.js +114 -0
- package/data/probe/npm/index.d.ts +744 -0
- package/data/probe/npm/jest.config.js +52 -0
- package/data/probe/npm/package.json +117 -0
- package/data/probe/npm/scripts/build-agent.cjs +75 -0
- package/data/probe/npm/scripts/build-cjs.js +124 -0
- package/data/probe/npm/scripts/build-mcp.cjs +36 -0
- package/data/probe/npm/scripts/postinstall.js +216 -0
- package/data/probe/npm/test-codex-e2e.js +78 -0
- package/data/probe/npm/test-download-lock.js +109 -0
- package/data/probe/npm/test-grep-security.js +94 -0
- package/data/probe/npm/test-grep-simplified.js +63 -0
- package/data/probe/npm/test-grep.js +51 -0
- package/data/probe/npm/tests/README.md +96 -0
- package/data/probe/npm/tests/agent-compact-history.test.js +174 -0
- package/data/probe/npm/tests/allow-tests-default.test.js +151 -0
- package/data/probe/npm/tests/contextCompactor.test.js +498 -0
- package/data/probe/npm/tests/delegate-config.test.js +353 -0
- package/data/probe/npm/tests/delegate-integration.test.js +348 -0
- package/data/probe/npm/tests/extractor-integration.test.js +162 -0
- package/data/probe/npm/tests/extractor.test.js +317 -0
- package/data/probe/npm/tests/fixtures/sampleDiagrams.js +267 -0
- package/data/probe/npm/tests/integration/claude-code-auto-fallback.spec.js +148 -0
- package/data/probe/npm/tests/integration/claude-code-multi-step.spec.js +127 -0
- package/data/probe/npm/tests/integration/claude-code-tool-events.spec.js +163 -0
- package/data/probe/npm/tests/integration/codex-auto-fallback.spec.js +191 -0
- package/data/probe/npm/tests/integration/codex-tool-events.spec.js +147 -0
- package/data/probe/npm/tests/integration/examplesChatMcp.test.js +402 -0
- package/data/probe/npm/tests/integration/mcpDotenvSupport.test.js +174 -0
- package/data/probe/npm/tests/integration/mcpErrorHandling.test.js +566 -0
- package/data/probe/npm/tests/integration/mcpRobustness.test.js +564 -0
- package/data/probe/npm/tests/integration/mcpStdoutPurity.test.js +355 -0
- package/data/probe/npm/tests/integration/probeAgentMcp.test.js +398 -0
- package/data/probe/npm/tests/integration/retryFallback.test.js +368 -0
- package/data/probe/npm/tests/integration/schema-in-initial-message.test.js +318 -0
- package/data/probe/npm/tests/integration/schema-validation-loop-prevention.test.js +244 -0
- package/data/probe/npm/tests/integration/schemaRetryLogic.test.js +94 -0
- package/data/probe/npm/tests/integration/validationFlow.test.js +329 -0
- package/data/probe/npm/tests/manual/test-codex-basic.js +110 -0
- package/data/probe/npm/tests/mcp/mcpClientManager.test.js +614 -0
- package/data/probe/npm/tests/mcp/mcpConfig.test.js +359 -0
- package/data/probe/npm/tests/mcp/mcpXmlBridge.test.js +436 -0
- package/data/probe/npm/tests/mcp/mockMcpServer.js +510 -0
- package/data/probe/npm/tests/mcp-strict-syntax.test.js +319 -0
- package/data/probe/npm/tests/mermaidQuoteEscaping.test.js +214 -0
- package/data/probe/npm/tests/nestedQuoteFix.test.js +40 -0
- package/data/probe/npm/tests/setup.js +46 -0
- package/data/probe/npm/tests/unit/allowed-tools.test.js +513 -0
- package/data/probe/npm/tests/unit/attempt-completion-closing-tag-in-content.test.js +188 -0
- package/data/probe/npm/tests/unit/attemptCompletionJsonFix.test.js +238 -0
- package/data/probe/npm/tests/unit/attemptCompletionJsonIssue.test.js +128 -0
- package/data/probe/npm/tests/unit/backtickAutoFix.test.js +35 -0
- package/data/probe/npm/tests/unit/bash-probe-agent-integration.test.js +389 -0
- package/data/probe/npm/tests/unit/bash-simple-commands.test.js +324 -0
- package/data/probe/npm/tests/unit/bash-tool-comprehensive.test.js +371 -0
- package/data/probe/npm/tests/unit/bash-tool-integration.test.js +310 -0
- package/data/probe/npm/tests/unit/bash-tool.test.js +341 -0
- package/data/probe/npm/tests/unit/completion-prompt.test.js +379 -0
- package/data/probe/npm/tests/unit/cwd-path-options.test.js +287 -0
- package/data/probe/npm/tests/unit/delegate-limits.test.js +422 -0
- package/data/probe/npm/tests/unit/direct-content-attempt-completion.test.js +235 -0
- package/data/probe/npm/tests/unit/edit-create-tools.test.js +609 -0
- package/data/probe/npm/tests/unit/enhancedMermaidValidation.test.js +577 -0
- package/data/probe/npm/tests/unit/extract-content.test.js +83 -0
- package/data/probe/npm/tests/unit/extract-multiple-targets.test.js +89 -0
- package/data/probe/npm/tests/unit/fallbackManager.test.js +442 -0
- package/data/probe/npm/tests/unit/githubCompatibilityValidation.test.js +258 -0
- package/data/probe/npm/tests/unit/imageConfig.test.js +149 -0
- package/data/probe/npm/tests/unit/imagePathResolution.test.js +345 -0
- package/data/probe/npm/tests/unit/json-fixing-agent.test.js +238 -0
- package/data/probe/npm/tests/unit/json-validation-enhanced-errors.test.js +199 -0
- package/data/probe/npm/tests/unit/jsonValidationInfiniteLoopFix.test.js +228 -0
- package/data/probe/npm/tests/unit/maidIntegration.test.js +139 -0
- package/data/probe/npm/tests/unit/maxIterationsWarning.test.js +195 -0
- package/data/probe/npm/tests/unit/mermaidEdgeLabelFix.test.js +161 -0
- package/data/probe/npm/tests/unit/mermaidHtmlEntities.test.js +76 -0
- package/data/probe/npm/tests/unit/mermaidInfiniteLoopFix.test.js +64 -0
- package/data/probe/npm/tests/unit/mermaidValidation.test.js +723 -0
- package/data/probe/npm/tests/unit/mermaidValidationVisorExample.test.js +309 -0
- package/data/probe/npm/tests/unit/probe-agent-clone-realistic.test.js +643 -0
- package/data/probe/npm/tests/unit/probe-agent-clone.test.js +476 -0
- package/data/probe/npm/tests/unit/probe-agent-delegate.test.js +400 -0
- package/data/probe/npm/tests/unit/probe-agent-model-option.test.js +118 -0
- package/data/probe/npm/tests/unit/probeTool-security.test.js +283 -0
- package/data/probe/npm/tests/unit/readImageTool.test.js +418 -0
- package/data/probe/npm/tests/unit/retryManager.test.js +317 -0
- package/data/probe/npm/tests/unit/schema-aware-reminders.test.js +288 -0
- package/data/probe/npm/tests/unit/schemaDefinitionDetection.test.js +115 -0
- package/data/probe/npm/tests/unit/schemaUtils.test.js +1268 -0
- package/data/probe/npm/tests/unit/simpleTelemetry.test.js +282 -0
- package/data/probe/npm/tests/unit/simplified-attempt-completion.test.js +274 -0
- package/data/probe/npm/tests/unit/single-quote-json-bug.test.js +231 -0
- package/data/probe/npm/tests/unit/subgraphAutoFix.test.js +110 -0
- package/data/probe/npm/tests/unit/system-prompt.test.js +32 -0
- package/data/probe/npm/tests/unit/types-probe-agent-options.test.js +42 -0
- package/data/probe/npm/tests/unit/xmlParsing.test.js +720 -0
- package/data/probe/npm/tsconfig.json +21 -0
- package/data/probe/result1.txt +19 -0
- package/data/probe/result2.txt +26 -0
- package/data/probe/scripts/benchmark.sh +270 -0
- package/data/probe/scripts/cache_memory_analysis.rs +844 -0
- package/data/probe/scripts/claude-hook-wrapper.sh +56 -0
- package/data/probe/site/.env.example +10 -0
- package/data/probe/site/DEPLOYMENT.md +86 -0
- package/data/probe/site/README.md +183 -0
- package/data/probe/site/adding-languages.md +135 -0
- package/data/probe/site/ai-chat.md +427 -0
- package/data/probe/site/ai-integration.md +1488 -0
- package/data/probe/site/blog/agentic-flow-custom-xml-protocol.md +407 -0
- package/data/probe/site/blog/index.md +118 -0
- package/data/probe/site/blog/v0.6.0-release.md +426 -0
- package/data/probe/site/blog.md +8 -0
- package/data/probe/site/changelog.md +200 -0
- package/data/probe/site/cli-mode.md +437 -0
- package/data/probe/site/code-extraction.md +436 -0
- package/data/probe/site/contributing/README.md +9 -0
- package/data/probe/site/contributing/documentation-cross-references.md +215 -0
- package/data/probe/site/contributing/documentation-maintenance.md +275 -0
- package/data/probe/site/contributing/documentation-structure.md +75 -0
- package/data/probe/site/documentation-cross-references.md +215 -0
- package/data/probe/site/documentation-guide.md +132 -0
- package/data/probe/site/documentation-maintenance.md +275 -0
- package/data/probe/site/features.md +147 -0
- package/data/probe/site/how-it-works.md +118 -0
- package/data/probe/site/index.md +175 -0
- package/data/probe/site/index.md.bak +133 -0
- package/data/probe/site/installation.md +235 -0
- package/data/probe/site/integrations/docker.md +248 -0
- package/data/probe/site/integrations/github-actions.md +413 -0
- package/data/probe/site/language-support-overview.md +168 -0
- package/data/probe/site/mcp-integration.md +587 -0
- package/data/probe/site/mcp-server.md +304 -0
- package/data/probe/site/navigation-structure.md +76 -0
- package/data/probe/site/nodejs-sdk.md +798 -0
- package/data/probe/site/output-formats.md +625 -0
- package/data/probe/site/package.json +21 -0
- package/data/probe/site/public/_headers +28 -0
- package/data/probe/site/public/_redirects +11 -0
- package/data/probe/site/quick-start.md +289 -0
- package/data/probe/site/search-functionality.md +291 -0
- package/data/probe/site/search-reference.md +291 -0
- package/data/probe/site/supported-languages.md +215 -0
- package/data/probe/site/use-cases/README.md +8 -0
- package/data/probe/site/use-cases/advanced-cli.md +253 -0
- package/data/probe/site/use-cases/ai-code-editors.md +239 -0
- package/data/probe/site/use-cases/building-ai-tools.md +529 -0
- package/data/probe/site/use-cases/cli-ai-workflows.md +285 -0
- package/data/probe/site/use-cases/deploying-probe-web-interface.md +255 -0
- package/data/probe/site/use-cases/integrating-probe-into-ai-code-editors.md +161 -0
- package/data/probe/site/use-cases/nodejs-sdk.md +596 -0
- package/data/probe/site/use-cases/team-chat.md +350 -0
- package/data/probe/site/web-interface.md +434 -0
- package/data/probe/site/wrangler.toml +9 -0
- package/data/probe/test-api-key.sh +1 -0
- package/data/probe/test-probe-implementation/hello.js +7 -0
- package/data/probe/test_cases/demonstrate_early_termination_issues.sh +176 -0
- package/data/probe/test_cases/early_termination_issues.rs +533 -0
- package/data/probe/test_data/test_nested_struct.go +26 -0
- package/data/probe/tests/README.md +286 -0
- package/data/probe/tests/README_search_determinism_tests.md +116 -0
- package/data/probe/tests/adjacent_comment_test.rs +152 -0
- package/data/probe/tests/apostrophe_handling_tests.rs +132 -0
- package/data/probe/tests/block_filtering_with_ast_tests.rs +669 -0
- package/data/probe/tests/block_merging_tests.rs +396 -0
- package/data/probe/tests/c_outline_format_tests.rs +2179 -0
- package/data/probe/tests/cache_invalidation_issues.rs.disabled +682 -0
- package/data/probe/tests/cache_order_tests.rs +147 -0
- package/data/probe/tests/cache_query_scoping_tests.rs +221 -0
- package/data/probe/tests/cli_tests.rs +680 -0
- package/data/probe/tests/comment_context_integration_test.rs +240 -0
- package/data/probe/tests/common.rs +33 -0
- package/data/probe/tests/complex_block_merging_tests.rs +599 -0
- package/data/probe/tests/complex_query_block_filtering_tests.rs +422 -0
- package/data/probe/tests/control_flow_closing_braces_test.rs +91 -0
- package/data/probe/tests/cpp_outline_format_tests.rs +1507 -0
- package/data/probe/tests/csharp_outline_format_tests.rs +941 -0
- package/data/probe/tests/elastic_query_integration_tests.rs +922 -0
- package/data/probe/tests/extract_command_tests.rs +1848 -0
- package/data/probe/tests/extract_deduplication_tests.rs +146 -0
- package/data/probe/tests/extract_input_file_tests.rs +84 -0
- package/data/probe/tests/extract_prompt_tests.rs +102 -0
- package/data/probe/tests/filename_search_tests.rs +96 -0
- package/data/probe/tests/fixtures/user/AssemblyInfo.cs +3 -0
- package/data/probe/tests/github_extract_tests.rs +234 -0
- package/data/probe/tests/go_comment_test.rs +253 -0
- package/data/probe/tests/go_outline_format_tests.rs +2587 -0
- package/data/probe/tests/go_path_resolver_tests.rs +96 -0
- package/data/probe/tests/html_outline_format_tests.rs +637 -0
- package/data/probe/tests/integration_tests.rs +837 -0
- package/data/probe/tests/ip_whitelist_test.rs +148 -0
- package/data/probe/tests/java_outline_format_tests.rs +1611 -0
- package/data/probe/tests/javascript_extract_tests.rs +315 -0
- package/data/probe/tests/javascript_outline_format_tests.rs +1464 -0
- package/data/probe/tests/json_format_tests.rs +436 -0
- package/data/probe/tests/json_schema_validation_tests.rs +450 -0
- package/data/probe/tests/lib_usage.rs +60 -0
- package/data/probe/tests/line_comment_context_extension_test.rs +459 -0
- package/data/probe/tests/line_map_cache_tests.rs +114 -0
- package/data/probe/tests/markdown_integration_tests.rs +190 -0
- package/data/probe/tests/mocks/test_ip_whitelist.go +11 -0
- package/data/probe/tests/mocks/test_object.js +27 -0
- package/data/probe/tests/mocks/test_struct.go +50 -0
- package/data/probe/tests/multi_keyword_pattern_tests.rs +464 -0
- package/data/probe/tests/multi_language_syntax_integration_tests.rs +218 -0
- package/data/probe/tests/multiple_capture_groups_tests.rs +169 -0
- package/data/probe/tests/negative_compound_word_tests.rs +246 -0
- package/data/probe/tests/nested_symbol_extraction_tests.rs +99 -0
- package/data/probe/tests/outline_cross_file_interference_test.rs +335 -0
- package/data/probe/tests/outline_keyword_preservation_test.rs +67 -0
- package/data/probe/tests/output_format_edge_cases_tests.rs +693 -0
- package/data/probe/tests/parallel_extraction_tests.rs +178 -0
- package/data/probe/tests/parallel_search_tests.rs +355 -0
- package/data/probe/tests/path_resolver_tests.rs +698 -0
- package/data/probe/tests/php_outline_format_extended_tests.rs +928 -0
- package/data/probe/tests/php_outline_format_tests.rs +768 -0
- package/data/probe/tests/property_tests.proptest-regressions +9 -0
- package/data/probe/tests/property_tests.rs +118 -0
- package/data/probe/tests/python_outline_format_tests.rs +1538 -0
- package/data/probe/tests/query_command_json_tests.rs +438 -0
- package/data/probe/tests/query_command_tests.rs +232 -0
- package/data/probe/tests/query_command_xml_tests.rs +569 -0
- package/data/probe/tests/quoted_term_with_negative_keyword_tests.rs +216 -0
- package/data/probe/tests/required_terms_filename_tests.rs +116 -0
- package/data/probe/tests/ruby_outline_format_tests.rs +1011 -0
- package/data/probe/tests/rust_line_comment_context_test.rs +151 -0
- package/data/probe/tests/rust_outline_format_enhanced_tests.rs +725 -0
- package/data/probe/tests/rust_outline_format_tests.rs +843 -0
- package/data/probe/tests/schemas/xml_output_schema.xsd +38 -0
- package/data/probe/tests/search_determinism_tests.rs +451 -0
- package/data/probe/tests/search_hints_tests.rs +253 -0
- package/data/probe/tests/special_character_escaping_tests.rs +417 -0
- package/data/probe/tests/stemming_compound_word_filtering_tests.rs +535 -0
- package/data/probe/tests/strict_elastic_syntax_tests.rs +404 -0
- package/data/probe/tests/swift_outline_format_tests.rs +3319 -0
- package/data/probe/tests/symbols_tests.rs +166 -0
- package/data/probe/tests/test_file.rs +45 -0
- package/data/probe/tests/test_tokenize.rs +28 -0
- package/data/probe/tests/timeout_tests.rs +82 -0
- package/data/probe/tests/tokenization_tests.rs +195 -0
- package/data/probe/tests/tokenized_block_filtering_tests.rs +174 -0
- package/data/probe/tests/typescript_extract_tests.rs +214 -0
- package/data/probe/tests/typescript_outline_format_tests.rs +2188 -0
- package/data/probe/tests/xml_format_tests.rs +568 -0
- package/data/probe/tests/xml_schema_validation_tests.rs +497 -0
- package/data/scripts/postinstall.mjs +9 -0
- package/data/scripts/set-version.js +0 -0
- package/data/scripts/wiki-build.sh +111 -0
- package/data/scripts/wiki-deploy.sh +73 -0
- package/data/serve.json +12 -0
- package/data/test/demo-dynamic.html +134 -0
- package/data/test/demo-esm.html +105 -0
- package/data/test/demo-iife.html +78 -0
- package/data/tsconfig.json +7 -0
- package/data/vite.server.ts +483 -0
- package/data/vitest.config.ts +40 -0
- package/data/wiki/Home.md +58 -0
- package/data/wiki/_Sidebar.md +39 -0
- package/docs-mcp.config.json +20 -0
- package/package.json +56 -0
- package/src/config.js +111 -0
- package/src/index.js +395 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# Documentation Structure
|
|
2
|
+
|
|
3
|
+
This document explains how documentation is organized and maintained in this repository.
|
|
4
|
+
|
|
5
|
+
## Single Source of Truth
|
|
6
|
+
|
|
7
|
+
**All documentation lives in `/docs`** - no duplicates elsewhere.
|
|
8
|
+
|
|
9
|
+
## Directory Structure
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
/
|
|
13
|
+
├── docs/ 📚 SINGLE SOURCE OF TRUTH
|
|
14
|
+
│ ├── QUICKSTART.md - Quick start guide
|
|
15
|
+
│ ├── EXAMPLES.md - Integration examples (10 examples)
|
|
16
|
+
│ ├── AUTHENTICATION.md - Auth configuration + 3 Mermaid diagrams
|
|
17
|
+
│ ├── AI-FEATURES.md - AI features + 4 Mermaid diagrams
|
|
18
|
+
│ ├── WIDGET-GUIDE.md - Widget bundles + 1 Mermaid diagram
|
|
19
|
+
│ ├── MIGRATION-GUIDE.md - v1.0→v1.1 migration
|
|
20
|
+
│ ├── API-REFERENCE.md - TypeScript API (800+ lines)
|
|
21
|
+
│ ├── TROUBLESHOOTING.md - FAQ + error codes (600+ lines)
|
|
22
|
+
│ ├── BACKEND-API.md - Backend server docs
|
|
23
|
+
│ ├── DEVELOPMENT.md - Development guide
|
|
24
|
+
│ ├── NPM-PUBLISH.md - npm publishing workflow
|
|
25
|
+
│ ├── REDIS-SETUP.md - Redis configuration
|
|
26
|
+
│ └── SERVER.md - Server documentation
|
|
27
|
+
│
|
|
28
|
+
├── wiki/ 🔨 BUILD OUTPUT (gitignored except templates)
|
|
29
|
+
│ ├── Home.md - Wiki home page (template, committed)
|
|
30
|
+
│ ├── _Sidebar.md - Navigation (template, committed)
|
|
31
|
+
│ ├── README.md - Wiki docs (committed)
|
|
32
|
+
│ └── *.md - Generated from docs/ (NOT committed)
|
|
33
|
+
│
|
|
34
|
+
└── Root (GitHub features only)
|
|
35
|
+
├── README.md - Repository landing page
|
|
36
|
+
├── CHANGELOG.md - Release notes
|
|
37
|
+
├── CONTRIBUTING.md - Contribution guidelines (GitHub feature)
|
|
38
|
+
├── CODE_OF_CONDUCT.md - Code of conduct (GitHub feature)
|
|
39
|
+
└── LICENSE - MIT license
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Why This Structure?
|
|
43
|
+
|
|
44
|
+
### `/docs` as Single Source
|
|
45
|
+
|
|
46
|
+
✅ **No Duplication** - Documentation exists in ONE place only
|
|
47
|
+
✅ **Version Control** - Docs are versioned with code in Git
|
|
48
|
+
✅ **Pull Request Reviews** - Documentation changes reviewed with code
|
|
49
|
+
✅ **Developer Access** - Developers have docs locally when they clone
|
|
50
|
+
✅ **Branch Support** - Different docs for different branches
|
|
51
|
+
|
|
52
|
+
### `wiki/` as Build Output
|
|
53
|
+
|
|
54
|
+
✅ **Automated Generation** - Built from `/docs` via `scripts/wiki-build.sh`
|
|
55
|
+
✅ **Clean Git History** - Generated files not committed (in `.gitignore`)
|
|
56
|
+
✅ **Deploy Target** - `scripts/wiki-deploy.sh` pushes to GitHub Wiki
|
|
57
|
+
✅ **Link Conversion** - Links automatically converted to Wiki format
|
|
58
|
+
|
|
59
|
+
### Root Stays Minimal
|
|
60
|
+
|
|
61
|
+
✅ **GitHub Features** - `CONTRIBUTING.md` and `CODE_OF_CONDUCT.md` used by GitHub
|
|
62
|
+
✅ **Landing Page** - `README.md` shown on repository homepage
|
|
63
|
+
✅ **Visibility** - Important files remain at root for easy discovery
|
|
64
|
+
|
|
65
|
+
## Workflow
|
|
66
|
+
|
|
67
|
+
### Editing Documentation
|
|
68
|
+
|
|
69
|
+
1. **Edit source files in `/docs`:**
|
|
70
|
+
```bash
|
|
71
|
+
vim docs/QUICKSTART.md
|
|
72
|
+
vim docs/AI-FEATURES.md
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
2. **Commit to repository:**
|
|
76
|
+
```bash
|
|
77
|
+
git add docs/
|
|
78
|
+
git commit -m "docs: update quick start guide"
|
|
79
|
+
git push origin feat/localization
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Deploying to GitHub Wiki
|
|
83
|
+
|
|
84
|
+
1. **Build wiki from docs:**
|
|
85
|
+
```bash
|
|
86
|
+
./scripts/wiki-build.sh
|
|
87
|
+
```
|
|
88
|
+
This creates `wiki/*.md` files with converted links.
|
|
89
|
+
|
|
90
|
+
2. **Deploy to GitHub Wiki:**
|
|
91
|
+
```bash
|
|
92
|
+
./scripts/wiki-deploy.sh "Update AI features documentation"
|
|
93
|
+
```
|
|
94
|
+
This pushes `wiki/` to the GitHub Wiki repository.
|
|
95
|
+
|
|
96
|
+
### One-Step Deployment
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
# Build and deploy in one command
|
|
100
|
+
./scripts/wiki-deploy.sh "Update documentation"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The deploy script automatically runs `wiki-build.sh` first.
|
|
104
|
+
|
|
105
|
+
## Link Formats
|
|
106
|
+
|
|
107
|
+
### In `/docs` (Repository)
|
|
108
|
+
|
|
109
|
+
Use standard markdown links:
|
|
110
|
+
|
|
111
|
+
```markdown
|
|
112
|
+
[Quick Start](./QUICKSTART.md)
|
|
113
|
+
[Examples](./EXAMPLES.md)
|
|
114
|
+
[AI Features](./AI-FEATURES.md)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### In `wiki/` (Generated)
|
|
118
|
+
|
|
119
|
+
Links are automatically converted to Wiki format (no `.md` extension):
|
|
120
|
+
|
|
121
|
+
```markdown
|
|
122
|
+
[Quick Start](Quick-Start)
|
|
123
|
+
[Examples](Examples)
|
|
124
|
+
[AI Features](AI-Features)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### In Root `README.md`
|
|
128
|
+
|
|
129
|
+
Point to `/docs`:
|
|
130
|
+
|
|
131
|
+
```markdown
|
|
132
|
+
[Quick Start](./docs/QUICKSTART.md)
|
|
133
|
+
[Examples](./docs/EXAMPLES.md)
|
|
134
|
+
[AI Features](./docs/AI-FEATURES.md)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## File Mapping
|
|
138
|
+
|
|
139
|
+
| Source (`docs/`) | Wiki Output (`wiki/`) | Description |
|
|
140
|
+
|------------------|-----------------------|-------------|
|
|
141
|
+
| `QUICKSTART.md` | `Quick-Start.md` | Getting started |
|
|
142
|
+
| `EXAMPLES.md` | `Examples.md` | Integration examples |
|
|
143
|
+
| `AUTHENTICATION.md` | `Authentication.md` | Auth configuration |
|
|
144
|
+
| `AI-FEATURES.md` | `AI-Features.md` | AI features guide |
|
|
145
|
+
| `WIDGET-GUIDE.md` | `Widget-Bundle.md` | Widget bundles |
|
|
146
|
+
| `MIGRATION-GUIDE.md` | `Migration-Guide.md` | Migration guide |
|
|
147
|
+
| `API-REFERENCE.md` | `API-Reference.md` | TypeScript API |
|
|
148
|
+
| `TROUBLESHOOTING.md` | `Troubleshooting.md` | Troubleshooting |
|
|
149
|
+
| `BACKEND-API.md` | `Backend-Server.md` | Backend server |
|
|
150
|
+
| `DEVELOPMENT.md` | `Development.md` | Development guide |
|
|
151
|
+
| `NPM-PUBLISH.md` | `NPM-Publish.md` | Publishing workflow |
|
|
152
|
+
| `REDIS-SETUP.md` | `Redis-Setup.md` | Redis setup |
|
|
153
|
+
| `SERVER.md` | `Server.md` | Server docs |
|
|
154
|
+
|
|
155
|
+
## Git Ignore Rules
|
|
156
|
+
|
|
157
|
+
```gitignore
|
|
158
|
+
# Wiki build output (keep templates only)
|
|
159
|
+
wiki/*
|
|
160
|
+
!wiki/Home.md
|
|
161
|
+
!wiki/_Sidebar.md
|
|
162
|
+
!wiki/README.md
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
This ensures:
|
|
166
|
+
- ✅ Wiki templates (`Home.md`, `_Sidebar.md`, `README.md`) are committed
|
|
167
|
+
- ✅ Generated wiki files (`*.md`) are NOT committed
|
|
168
|
+
- ✅ Clean git history without build artifacts
|
|
169
|
+
|
|
170
|
+
## Scripts
|
|
171
|
+
|
|
172
|
+
### `scripts/wiki-build.sh`
|
|
173
|
+
|
|
174
|
+
Builds `wiki/` directory from `docs/` source files.
|
|
175
|
+
|
|
176
|
+
**What it does:**
|
|
177
|
+
1. Copies `docs/*.md` → `wiki/*.md` with name mapping
|
|
178
|
+
2. Converts markdown links to Wiki format (removes `.md` extensions)
|
|
179
|
+
3. Preserves wiki templates (`Home.md`, `_Sidebar.md`)
|
|
180
|
+
|
|
181
|
+
**Usage:**
|
|
182
|
+
```bash
|
|
183
|
+
./scripts/wiki-build.sh
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### `scripts/wiki-deploy.sh`
|
|
187
|
+
|
|
188
|
+
Deploys `wiki/` directory to GitHub Wiki repository.
|
|
189
|
+
|
|
190
|
+
**What it does:**
|
|
191
|
+
1. Runs `wiki-build.sh` to generate wiki files
|
|
192
|
+
2. Clones GitHub Wiki repository (if not exists)
|
|
193
|
+
3. Copies `wiki/*.md` to wiki repository
|
|
194
|
+
4. Commits and pushes to GitHub Wiki
|
|
195
|
+
|
|
196
|
+
**Usage:**
|
|
197
|
+
```bash
|
|
198
|
+
./scripts/wiki-deploy.sh "Update AI features documentation"
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Benefits
|
|
202
|
+
|
|
203
|
+
### For Developers
|
|
204
|
+
|
|
205
|
+
✅ Edit docs alongside code
|
|
206
|
+
✅ See docs in GitHub file browser
|
|
207
|
+
✅ Review documentation in pull requests
|
|
208
|
+
✅ Access docs offline
|
|
209
|
+
✅ Branch-specific documentation
|
|
210
|
+
|
|
211
|
+
### For Users
|
|
212
|
+
|
|
213
|
+
✅ Browse docs in GitHub Wiki
|
|
214
|
+
✅ Search all documentation
|
|
215
|
+
✅ Formatted wiki pages
|
|
216
|
+
✅ Sidebar navigation
|
|
217
|
+
✅ Always up-to-date
|
|
218
|
+
|
|
219
|
+
### For Maintainers
|
|
220
|
+
|
|
221
|
+
✅ Single source of truth - no duplication
|
|
222
|
+
✅ Automated wiki deployment
|
|
223
|
+
✅ No manual sync required
|
|
224
|
+
✅ Clean git history
|
|
225
|
+
✅ Easy to update
|
|
226
|
+
|
|
227
|
+
## Comparison with Alternatives
|
|
228
|
+
|
|
229
|
+
### ❌ Root-Level Docs (Old Approach)
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
/
|
|
233
|
+
├── QUICKSTART.md
|
|
234
|
+
├── EXAMPLES.md
|
|
235
|
+
├── AI-FEATURES.md
|
|
236
|
+
└── ... (13 files at root)
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Problems:**
|
|
240
|
+
- Cluttered root directory
|
|
241
|
+
- Hard to distinguish docs from config files
|
|
242
|
+
- No organization
|
|
243
|
+
|
|
244
|
+
### ❌ Duplicate Docs (Old Wiki Approach)
|
|
245
|
+
|
|
246
|
+
```
|
|
247
|
+
/
|
|
248
|
+
├── QUICKSTART.md (source)
|
|
249
|
+
├── EXAMPLES.md (source)
|
|
250
|
+
└── wiki/
|
|
251
|
+
├── Quick-Start.md (duplicate!)
|
|
252
|
+
└── Examples.md (duplicate!)
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Problems:**
|
|
256
|
+
- Duplication causes sync issues
|
|
257
|
+
- Which is the source of truth?
|
|
258
|
+
- Double maintenance burden
|
|
259
|
+
|
|
260
|
+
### ✅ `/docs` + Generated `wiki/` (Current)
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
/
|
|
264
|
+
├── docs/
|
|
265
|
+
│ ├── QUICKSTART.md (source)
|
|
266
|
+
│ └── EXAMPLES.md (source)
|
|
267
|
+
└── wiki/
|
|
268
|
+
├── Quick-Start.md (generated, gitignored)
|
|
269
|
+
└── Examples.md (generated, gitignored)
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**Benefits:**
|
|
273
|
+
- Single source of truth (`docs/`)
|
|
274
|
+
- No duplication
|
|
275
|
+
- Automated wiki generation
|
|
276
|
+
- Clean git history
|
|
277
|
+
|
|
278
|
+
## Maintenance
|
|
279
|
+
|
|
280
|
+
### Regular Updates
|
|
281
|
+
|
|
282
|
+
After each feature/bugfix:
|
|
283
|
+
1. Update relevant docs in `docs/`
|
|
284
|
+
2. Commit to repository
|
|
285
|
+
3. Deploy to wiki: `./scripts/wiki-deploy.sh "Description"`
|
|
286
|
+
|
|
287
|
+
### After Releases
|
|
288
|
+
|
|
289
|
+
After releasing v1.1.0, v1.2.0, etc.:
|
|
290
|
+
1. Update version numbers in docs
|
|
291
|
+
2. Update `MIGRATION-GUIDE.md` with breaking changes
|
|
292
|
+
3. Update `CHANGELOG.md`
|
|
293
|
+
4. Deploy updated wiki
|
|
294
|
+
|
|
295
|
+
## Statistics
|
|
296
|
+
|
|
297
|
+
- **Source Files:** 13 markdown files in `docs/`
|
|
298
|
+
- **Total Lines:** ~4,500+ lines of documentation
|
|
299
|
+
- **Mermaid Diagrams:** 8 (3 in Authentication, 4 in AI Features, 1 in Widget)
|
|
300
|
+
- **Code Examples:** 60+ with TypeScript/JavaScript/HTML/PHP/Liquid
|
|
301
|
+
- **Languages:** TypeScript, JavaScript, Bash, JSON, HTML, PHP, Liquid
|
|
302
|
+
|
|
303
|
+
## See Also
|
|
304
|
+
|
|
305
|
+
- [WIKI-DEPLOYMENT.md](./WIKI-DEPLOYMENT.md) - Complete wiki deployment guide
|
|
306
|
+
- [CONTRIBUTING.md](./CONTRIBUTING.md) - How to contribute
|
|
307
|
+
- [GitHub Wiki](https://github.com/Crownpeak/dqm-react-component/wiki) - Live wiki
|
package/data/I18N.md
ADDED
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
# Internationalization (i18n) Guide
|
|
2
|
+
|
|
3
|
+
This document explains how to work with translations in the DQM React Component.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The DQM component supports multiple languages with a modular translation system. Translations are organized by **namespace** (feature area) and **language**, making it easy to add new languages or update specific sections.
|
|
8
|
+
|
|
9
|
+
## Supported Languages
|
|
10
|
+
|
|
11
|
+
| Language | Code | Status |
|
|
12
|
+
|----------|------|--------|
|
|
13
|
+
| English | `en` | ✅ Default / Fallback |
|
|
14
|
+
| German | `de` | ✅ Complete |
|
|
15
|
+
| Spanish | `es` | ✅ Complete |
|
|
16
|
+
|
|
17
|
+
### Regional Variants
|
|
18
|
+
|
|
19
|
+
Regional variants (e.g., `de-AT`, `es-MX`) automatically fall back to their base language:
|
|
20
|
+
|
|
21
|
+
- `de-AT` → `de` → `en`
|
|
22
|
+
- `de-CH` → `de` → `en`
|
|
23
|
+
- `es-MX` → `es` → `en`
|
|
24
|
+
- `en-GB` → `en`
|
|
25
|
+
|
|
26
|
+
## File Structure
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
src/i18n/
|
|
30
|
+
├── index.ts # Main configuration, combines all namespaces
|
|
31
|
+
├── common/ # Shared UI strings
|
|
32
|
+
│ ├── en.ts
|
|
33
|
+
│ ├── de.ts
|
|
34
|
+
│ ├── es.ts
|
|
35
|
+
│ └── index.ts
|
|
36
|
+
├── sidebar/ # DQM sidebar strings (~100 keys)
|
|
37
|
+
│ ├── en.ts
|
|
38
|
+
│ ├── de.ts
|
|
39
|
+
│ ├── es.ts
|
|
40
|
+
│ └── index.ts
|
|
41
|
+
├── auth/ # Authentication strings
|
|
42
|
+
│ ├── en.ts
|
|
43
|
+
│ ├── de.ts
|
|
44
|
+
│ ├── es.ts
|
|
45
|
+
│ └── index.ts
|
|
46
|
+
└── demo/ # Demo app strings (dev only)
|
|
47
|
+
├── en.ts
|
|
48
|
+
├── de.ts
|
|
49
|
+
├── es.ts
|
|
50
|
+
└── index.ts
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Adding a New Language
|
|
54
|
+
|
|
55
|
+
### Step 1: Create translation files
|
|
56
|
+
|
|
57
|
+
For each namespace, create a new file with your language code:
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
// src/i18n/common/fr.ts
|
|
61
|
+
export const common = {
|
|
62
|
+
language: 'Langue',
|
|
63
|
+
language_switch_label: 'Langue',
|
|
64
|
+
// ... copy all keys from en.ts and translate
|
|
65
|
+
} as const;
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Step 2: Export from namespace index
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
// src/i18n/common/index.ts
|
|
72
|
+
export { common as en } from './en';
|
|
73
|
+
export { common as de } from './de';
|
|
74
|
+
export { common as es } from './es';
|
|
75
|
+
export { common as fr } from './fr'; // Add this line
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Step 3: Add to main configuration
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
// src/i18n/index.ts
|
|
82
|
+
import * as common from './common';
|
|
83
|
+
// ...
|
|
84
|
+
|
|
85
|
+
const resources = {
|
|
86
|
+
en: { common: common.en, /* ... */ },
|
|
87
|
+
de: { common: common.de, /* ... */ },
|
|
88
|
+
es: { common: common.es, /* ... */ },
|
|
89
|
+
fr: { common: common.fr, /* ... */ }, // Add this
|
|
90
|
+
} as const;
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Step 4: Update locale.ts
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
// src/locale.ts
|
|
97
|
+
const SUPPORTED_LOCALES = ['en', 'de', 'es', 'fr'] as const;
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Step 5: Add language name translations
|
|
101
|
+
|
|
102
|
+
In **each** language file's `common` namespace, add the new language name:
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
// common/en.ts
|
|
106
|
+
language_fr: 'French',
|
|
107
|
+
|
|
108
|
+
// common/de.ts
|
|
109
|
+
language_fr: 'Französisch',
|
|
110
|
+
|
|
111
|
+
// common/fr.ts
|
|
112
|
+
language_fr: 'Français',
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Adding New Translation Keys
|
|
116
|
+
|
|
117
|
+
### Step 1: Add to English (fallback) first
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// src/i18n/sidebar/en.ts
|
|
121
|
+
export const sidebar = {
|
|
122
|
+
// ... existing keys
|
|
123
|
+
my_new_feature: 'My new feature',
|
|
124
|
+
} as const;
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Step 2: Add to all other languages
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
// src/i18n/sidebar/de.ts
|
|
131
|
+
my_new_feature: 'Meine neue Funktion',
|
|
132
|
+
|
|
133
|
+
// src/i18n/sidebar/es.ts
|
|
134
|
+
my_new_feature: 'Mi nueva función',
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Step 3: Use in components
|
|
138
|
+
|
|
139
|
+
```tsx
|
|
140
|
+
import { useTranslation } from 'react-i18next';
|
|
141
|
+
|
|
142
|
+
const MyComponent = () => {
|
|
143
|
+
const { t } = useTranslation('sidebar');
|
|
144
|
+
return <span>{t('my_new_feature')}</span>;
|
|
145
|
+
};
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Interpolation
|
|
149
|
+
|
|
150
|
+
Use `{{variable}}` for dynamic values:
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
// Translation file
|
|
154
|
+
translation_progress: '{{done}} / {{total}} checkpoints',
|
|
155
|
+
|
|
156
|
+
// Usage
|
|
157
|
+
t('sidebar:translation_progress', { done: 5, total: 10 })
|
|
158
|
+
// Output: "5 / 10 checkpoints"
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Namespaces
|
|
162
|
+
|
|
163
|
+
| Namespace | Purpose | Used in |
|
|
164
|
+
|-----------|---------|---------|
|
|
165
|
+
| `common` | Shared strings (language names, buttons) | All components |
|
|
166
|
+
| `sidebar` | Main DQM sidebar UI | `DQMSidebar.tsx` |
|
|
167
|
+
| `auth` | Login/authentication | `DQMLogin.tsx` |
|
|
168
|
+
| `demo` | Demo application (dev only) | `App.tsx` |
|
|
169
|
+
|
|
170
|
+
### Using namespaces
|
|
171
|
+
|
|
172
|
+
```tsx
|
|
173
|
+
// Single namespace
|
|
174
|
+
const { t } = useTranslation('sidebar');
|
|
175
|
+
t('title') // Uses sidebar:title
|
|
176
|
+
|
|
177
|
+
// Multiple namespaces
|
|
178
|
+
const { t } = useTranslation(['sidebar', 'common']);
|
|
179
|
+
t('sidebar:title')
|
|
180
|
+
t('common:logout')
|
|
181
|
+
|
|
182
|
+
// With namespace prefix
|
|
183
|
+
t('sidebar:translation_progress', { done: 5, total: 10 })
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Type Safety
|
|
187
|
+
|
|
188
|
+
Translation keys are typed. TypeScript will warn if you use a non-existent key:
|
|
189
|
+
|
|
190
|
+
```typescript
|
|
191
|
+
import type { SidebarTranslationKeys } from './i18n';
|
|
192
|
+
|
|
193
|
+
// This is type-safe
|
|
194
|
+
const key: SidebarTranslationKeys = 'title'; // ✅
|
|
195
|
+
const bad: SidebarTranslationKeys = 'nonexistent'; // ❌ Type error
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Best Practices
|
|
199
|
+
|
|
200
|
+
1. **Always add to English first** – English is the fallback language
|
|
201
|
+
2. **Keep keys descriptive** – Use `translation_progress` not `tp`
|
|
202
|
+
3. **Group related keys** – Use comments to organize sections
|
|
203
|
+
4. **Test all languages** – Switch languages in the UI to verify
|
|
204
|
+
5. **Don't hardcode strings** – All user-visible text should be translated
|
|
205
|
+
|
|
206
|
+
## Changing the User's Language
|
|
207
|
+
|
|
208
|
+
The library exports the i18next instance for programmatic language control:
|
|
209
|
+
|
|
210
|
+
```tsx
|
|
211
|
+
import { i18n, SUPPORTED_LOCALES } from '@crownpeak/dqm-react-component';
|
|
212
|
+
|
|
213
|
+
// Change language programmatically
|
|
214
|
+
i18n.changeLanguage('de');
|
|
215
|
+
|
|
216
|
+
// Get current language
|
|
217
|
+
const currentLang = i18n.language;
|
|
218
|
+
|
|
219
|
+
// Check supported locales
|
|
220
|
+
console.log(SUPPORTED_LOCALES); // ['en', 'de', 'es']
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Handling Regional Variants
|
|
224
|
+
|
|
225
|
+
```tsx
|
|
226
|
+
import { resolveLanguage, normalizeLocale } from '@crownpeak/dqm-react-component';
|
|
227
|
+
|
|
228
|
+
// Resolve regional variant to base language
|
|
229
|
+
resolveLanguage('de-AT'); // Returns 'de'
|
|
230
|
+
resolveLanguage('es-MX'); // Returns 'es'
|
|
231
|
+
resolveLanguage('fr'); // Returns 'en' (fallback)
|
|
232
|
+
|
|
233
|
+
// Validate and normalize locale input
|
|
234
|
+
normalizeLocale('de-AT'); // Returns 'de'
|
|
235
|
+
normalizeLocale('fr'); // Returns null (unsupported)
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Using the LanguageSwitch Component
|
|
239
|
+
|
|
240
|
+
```tsx
|
|
241
|
+
import { LanguageSwitch } from '@crownpeak/dqm-react-component';
|
|
242
|
+
|
|
243
|
+
// Built-in language switcher (used in sidebar footer)
|
|
244
|
+
<LanguageSwitch />
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Listening for Language Changes
|
|
248
|
+
|
|
249
|
+
```tsx
|
|
250
|
+
import { i18n } from '@crownpeak/dqm-react-component';
|
|
251
|
+
import { useEffect } from 'react';
|
|
252
|
+
|
|
253
|
+
function MyComponent() {
|
|
254
|
+
useEffect(() => {
|
|
255
|
+
const handleLanguageChange = (lng: string) => {
|
|
256
|
+
console.log('DQM language changed to:', lng);
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
i18n.on('languageChanged', handleLanguageChange);
|
|
260
|
+
return () => i18n.off('languageChanged', handleLanguageChange);
|
|
261
|
+
}, []);
|
|
262
|
+
|
|
263
|
+
return <div>Current: {i18n.language}</div>;
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## Troubleshooting
|
|
268
|
+
|
|
269
|
+
### Missing translation shows key name
|
|
270
|
+
|
|
271
|
+
If you see `sidebar:my_key` instead of the translation:
|
|
272
|
+
- Check the key exists in all language files
|
|
273
|
+
- Verify the namespace is correct
|
|
274
|
+
- Ensure the language file is exported in `index.ts`
|
|
275
|
+
|
|
276
|
+
### Regional variant not working
|
|
277
|
+
|
|
278
|
+
Regional variants (e.g., `de-AT`) fall back to the base language. If you need region-specific translations:
|
|
279
|
+
|
|
280
|
+
1. Create `de-AT.ts` alongside `de.ts`
|
|
281
|
+
2. Export it in the namespace's `index.ts`
|
|
282
|
+
3. Add to `REGIONAL_FALLBACKS` in `src/i18n/index.ts`
|
|
283
|
+
|
|
284
|
+
### TypeScript errors on translation keys
|
|
285
|
+
|
|
286
|
+
Ensure all translation files export `as const` for proper type inference:
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
export const sidebar = {
|
|
290
|
+
// ...
|
|
291
|
+
} as const; // ← Important!
|
|
292
|
+
```
|
package/data/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Crownpeak Technology GmbH
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|