@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.
Files changed (444) hide show
  1. package/README.md +138 -0
  2. package/data/.env.example +22 -0
  3. package/data/.gitattributes +47 -0
  4. package/data/.glfrc.json +7 -0
  5. package/data/.husky/pre-commit +5 -0
  6. package/data/.nvmrc +1 -0
  7. package/data/CHANGELOG.md +75 -0
  8. package/data/CODE_OF_CONDUCT.md +129 -0
  9. package/data/CONTRIBUTING.md +203 -0
  10. package/data/DOCS-STRUCTURE.md +307 -0
  11. package/data/I18N.md +292 -0
  12. package/data/LICENSE +22 -0
  13. package/data/README.md +315 -0
  14. package/data/SECURITY.md +125 -0
  15. package/data/WIKI-DEPLOYMENT.md +348 -0
  16. package/data/docs/AI-FEATURES.md +610 -0
  17. package/data/docs/API-REFERENCE.md +1022 -0
  18. package/data/docs/AUTHENTICATION.md +301 -0
  19. package/data/docs/BACKEND-API.md +468 -0
  20. package/data/docs/DEVELOPMENT.md +375 -0
  21. package/data/docs/EXAMPLES.md +622 -0
  22. package/data/docs/MCP-SERVER.md +307 -0
  23. package/data/docs/MIGRATION-GUIDE.md +367 -0
  24. package/data/docs/NPM-PUBLISH.md +193 -0
  25. package/data/docs/QUICKSTART.md +206 -0
  26. package/data/docs/REDIS-SETUP.md +162 -0
  27. package/data/docs/SERVER.md +228 -0
  28. package/data/docs/TROUBLESHOOTING.md +657 -0
  29. package/data/docs/WIDGET-GUIDE.md +638 -0
  30. package/data/docs/WIKI-HOME.md +58 -0
  31. package/data/docs/WIKI-SIDEBAR.md +39 -0
  32. package/data/package.json +171 -0
  33. package/data/playwright.config.ts +64 -0
  34. package/data/probe/.cargo/config.toml +10 -0
  35. package/data/probe/.claude/commands/performance-review.md +15 -0
  36. package/data/probe/.clinerules +288 -0
  37. package/data/probe/.dockerignore +57 -0
  38. package/data/probe/.githooks/post-commit +11 -0
  39. package/data/probe/.githooks/pre-commit +99 -0
  40. package/data/probe/.githooks/pre-commit-vow +9 -0
  41. package/data/probe/.prompts/engineer.md +41 -0
  42. package/data/probe/.roomodes +28 -0
  43. package/data/probe/.windsurfrules +0 -0
  44. package/data/probe/BASH_TOOL_SUMMARY.md +148 -0
  45. package/data/probe/BENCHMARKING.md +256 -0
  46. package/data/probe/CLAUDE.md +226 -0
  47. package/data/probe/CODE_OF_CONDUCT.md +128 -0
  48. package/data/probe/CONTRIBUTING.md +193 -0
  49. package/data/probe/Cargo.toml +120 -0
  50. package/data/probe/Cross.toml +10 -0
  51. package/data/probe/DOCKER-README.md +224 -0
  52. package/data/probe/Dockerfile +32 -0
  53. package/data/probe/ENHANCED_DEBUG_TELEMETRY.md +188 -0
  54. package/data/probe/LICENSE +201 -0
  55. package/data/probe/Makefile +210 -0
  56. package/data/probe/README.md +824 -0
  57. package/data/probe/SECURITY.md +67 -0
  58. package/data/probe/WINDOWS-GUIDE.md +294 -0
  59. package/data/probe/benches/parsing_benchmarks.rs +370 -0
  60. package/data/probe/benches/search_benchmarks.rs +599 -0
  61. package/data/probe/benches/simd_benchmarks.rs +372 -0
  62. package/data/probe/benches/timing_benchmarks.rs +287 -0
  63. package/data/probe/build-windows.bat +229 -0
  64. package/data/probe/codex-config/config.toml +6 -0
  65. package/data/probe/docs/PERFORMANCE_OPTIMIZATION.md +161 -0
  66. package/data/probe/examples/cache_demo.rs +46 -0
  67. package/data/probe/examples/chat/.dockerignore +37 -0
  68. package/data/probe/examples/chat/ChatSessionManager.js +295 -0
  69. package/data/probe/examples/chat/Dockerfile +98 -0
  70. package/data/probe/examples/chat/LICENSE +201 -0
  71. package/data/probe/examples/chat/LOCAL_IMAGE_SUPPORT.md +195 -0
  72. package/data/probe/examples/chat/MCP_INTEGRATION.md +400 -0
  73. package/data/probe/examples/chat/README.md +338 -0
  74. package/data/probe/examples/chat/TRACING.md +226 -0
  75. package/data/probe/examples/chat/appTracer.js +968 -0
  76. package/data/probe/examples/chat/auth.js +76 -0
  77. package/data/probe/examples/chat/bin/probe-chat.js +13 -0
  78. package/data/probe/examples/chat/build.js +104 -0
  79. package/data/probe/examples/chat/cancelRequest.js +84 -0
  80. package/data/probe/examples/chat/demo-agentic-image-flow.js +88 -0
  81. package/data/probe/examples/chat/demo-local-images.js +128 -0
  82. package/data/probe/examples/chat/fileSpanExporter.js +181 -0
  83. package/data/probe/examples/chat/implement/README.md +228 -0
  84. package/data/probe/examples/chat/implement/backends/AiderBackend.js +750 -0
  85. package/data/probe/examples/chat/implement/backends/BaseBackend.js +276 -0
  86. package/data/probe/examples/chat/implement/backends/ClaudeCodeBackend.js +767 -0
  87. package/data/probe/examples/chat/implement/backends/MockBackend.js +237 -0
  88. package/data/probe/examples/chat/implement/backends/registry.js +85 -0
  89. package/data/probe/examples/chat/implement/core/BackendManager.js +567 -0
  90. package/data/probe/examples/chat/implement/core/ImplementTool.js +354 -0
  91. package/data/probe/examples/chat/implement/core/config.js +428 -0
  92. package/data/probe/examples/chat/implement/core/timeouts.js +58 -0
  93. package/data/probe/examples/chat/implement/core/utils.js +496 -0
  94. package/data/probe/examples/chat/implement/types/BackendTypes.js +126 -0
  95. package/data/probe/examples/chat/index.js +669 -0
  96. package/data/probe/examples/chat/mcpServer.js +341 -0
  97. package/data/probe/examples/chat/npm/LICENSE +15 -0
  98. package/data/probe/examples/chat/npm/README.md +168 -0
  99. package/data/probe/examples/chat/npm/bin/probe-chat.js +156 -0
  100. package/data/probe/examples/chat/npm/index.js +259 -0
  101. package/data/probe/examples/chat/npm/package.json +54 -0
  102. package/data/probe/examples/chat/package.json +102 -0
  103. package/data/probe/examples/chat/probeChat.js +456 -0
  104. package/data/probe/examples/chat/probeTool.js +491 -0
  105. package/data/probe/examples/chat/storage/JsonChatStorage.js +476 -0
  106. package/data/probe/examples/chat/telemetry.js +281 -0
  107. package/data/probe/examples/chat/test/integration/chatFlows.test.js +320 -0
  108. package/data/probe/examples/chat/test/integration/toolCalling.test.js +471 -0
  109. package/data/probe/examples/chat/test/mocks/mockLLMProvider.js +269 -0
  110. package/data/probe/examples/chat/test/test-backends.js +90 -0
  111. package/data/probe/examples/chat/test/testUtils.js +530 -0
  112. package/data/probe/examples/chat/test/unit/backendTimeout.test.js +161 -0
  113. package/data/probe/examples/chat/test/unit/packageFiles.test.js +120 -0
  114. package/data/probe/examples/chat/test/verify-tests.js +118 -0
  115. package/data/probe/examples/chat/test-agentic-image-loading.js +294 -0
  116. package/data/probe/examples/chat/test-ai-sdk-telemetry.js +204 -0
  117. package/data/probe/examples/chat/test-chat-tracing.js +38 -0
  118. package/data/probe/examples/chat/test-direct-function.js +49 -0
  119. package/data/probe/examples/chat/test-file-size-validation.js +103 -0
  120. package/data/probe/examples/chat/test-full-mcp-integration.js +258 -0
  121. package/data/probe/examples/chat/test-github-context.txt +12 -0
  122. package/data/probe/examples/chat/test-hierarchy.js +203 -0
  123. package/data/probe/examples/chat/test-image-spans.js +37 -0
  124. package/data/probe/examples/chat/test-local-image-reading.js +176 -0
  125. package/data/probe/examples/chat/test-mcp-integration.js +136 -0
  126. package/data/probe/examples/chat/test-mcp-probe-server.js +161 -0
  127. package/data/probe/examples/chat/test-mcp-with-ai.js +279 -0
  128. package/data/probe/examples/chat/test-multiple-allowed-dirs.js +111 -0
  129. package/data/probe/examples/chat/test-probe-mcp-server.js +110 -0
  130. package/data/probe/examples/chat/test-security-validation.js +145 -0
  131. package/data/probe/examples/chat/test-simple-tracing.js +32 -0
  132. package/data/probe/examples/chat/test-trace-verification.js +235 -0
  133. package/data/probe/examples/chat/test-tracing.js +114 -0
  134. package/data/probe/examples/chat/tokenCounter.js +419 -0
  135. package/data/probe/examples/chat/tokenUsageDisplay.js +134 -0
  136. package/data/probe/examples/chat/webServer.js +1103 -0
  137. package/data/probe/examples/reranker/Cargo.toml +33 -0
  138. package/data/probe/examples/reranker/DEBUG_OUTPUT_ANALYSIS.md +71 -0
  139. package/data/probe/examples/reranker/MODELS.md +66 -0
  140. package/data/probe/examples/reranker/MODEL_COMPARISON.md +60 -0
  141. package/data/probe/examples/reranker/MULTI_MODEL_ANALYSIS.md +176 -0
  142. package/data/probe/examples/reranker/PERFORMANCE_SUMMARY.md +156 -0
  143. package/data/probe/examples/reranker/README.md +347 -0
  144. package/data/probe/examples/reranker/RUST_BERT_COMPARISON.md +82 -0
  145. package/data/probe/examples/reranker/TOKENIZATION_GUIDE.md +120 -0
  146. package/data/probe/examples/reranker/check_rust_tokenizer.py +108 -0
  147. package/data/probe/examples/reranker/convert_to_torchscript.py +109 -0
  148. package/data/probe/examples/reranker/debug_scoring.py +189 -0
  149. package/data/probe/examples/reranker/debug_tokenization.py +154 -0
  150. package/data/probe/examples/reranker/download_models.sh +73 -0
  151. package/data/probe/examples/reranker/requirements.txt +13 -0
  152. package/data/probe/examples/reranker/run_comprehensive_benchmark.sh +83 -0
  153. package/data/probe/examples/reranker/rust_bert_test/Cargo.toml +12 -0
  154. package/data/probe/examples/reranker/rust_bert_test/README.md +54 -0
  155. package/data/probe/examples/reranker/simple_test.py +50 -0
  156. package/data/probe/examples/reranker/test_all_models.sh +63 -0
  157. package/data/probe/examples/reranker/test_bert_results.sh +44 -0
  158. package/data/probe/examples/reranker/test_cross_encoder.py +334 -0
  159. package/data/probe/examples/reranker/test_cross_encoder.sh +80 -0
  160. package/data/probe/examples/reranker/test_exact_comparison.py +151 -0
  161. package/data/probe/examples/reranker/test_parallel_performance.sh +56 -0
  162. package/data/probe/examples/reranker/test_scores.py +132 -0
  163. package/data/probe/install.ps1 +508 -0
  164. package/data/probe/install.sh +460 -0
  165. package/data/probe/npm/CLONE_METHOD_EXAMPLES.md +596 -0
  166. package/data/probe/npm/CONTEXT_COMPACTION.md +303 -0
  167. package/data/probe/npm/DELEGATE_TOOL_README.md +166 -0
  168. package/data/probe/npm/MAID_INTEGRATION.md +313 -0
  169. package/data/probe/npm/MCP_INTEGRATION_SUMMARY.md +241 -0
  170. package/data/probe/npm/README.md +824 -0
  171. package/data/probe/npm/bin/.gitignore +7 -0
  172. package/data/probe/npm/bin/.gitkeep +0 -0
  173. package/data/probe/npm/bin/README.md +12 -0
  174. package/data/probe/npm/bin/probe +167 -0
  175. package/data/probe/npm/docs/CLAUDE_CODE_INTEGRATION.md +414 -0
  176. package/data/probe/npm/docs/CODEX_INTEGRATION.md +502 -0
  177. package/data/probe/npm/docs/EDIT_CREATE_TOOLS.md +233 -0
  178. package/data/probe/npm/docs/RETRY_AND_FALLBACK.md +674 -0
  179. package/data/probe/npm/example-usage.js +335 -0
  180. package/data/probe/npm/examples/multi-engine-demo.js +117 -0
  181. package/data/probe/npm/examples/probe-agent-cli.js +113 -0
  182. package/data/probe/npm/examples/test-agent-edit.js +114 -0
  183. package/data/probe/npm/examples/test-edit-create.js +120 -0
  184. package/data/probe/npm/examples/test-edit-direct.js +114 -0
  185. package/data/probe/npm/index.d.ts +744 -0
  186. package/data/probe/npm/jest.config.js +52 -0
  187. package/data/probe/npm/package.json +117 -0
  188. package/data/probe/npm/scripts/build-agent.cjs +75 -0
  189. package/data/probe/npm/scripts/build-cjs.js +124 -0
  190. package/data/probe/npm/scripts/build-mcp.cjs +36 -0
  191. package/data/probe/npm/scripts/postinstall.js +216 -0
  192. package/data/probe/npm/test-codex-e2e.js +78 -0
  193. package/data/probe/npm/test-download-lock.js +109 -0
  194. package/data/probe/npm/test-grep-security.js +94 -0
  195. package/data/probe/npm/test-grep-simplified.js +63 -0
  196. package/data/probe/npm/test-grep.js +51 -0
  197. package/data/probe/npm/tests/README.md +96 -0
  198. package/data/probe/npm/tests/agent-compact-history.test.js +174 -0
  199. package/data/probe/npm/tests/allow-tests-default.test.js +151 -0
  200. package/data/probe/npm/tests/contextCompactor.test.js +498 -0
  201. package/data/probe/npm/tests/delegate-config.test.js +353 -0
  202. package/data/probe/npm/tests/delegate-integration.test.js +348 -0
  203. package/data/probe/npm/tests/extractor-integration.test.js +162 -0
  204. package/data/probe/npm/tests/extractor.test.js +317 -0
  205. package/data/probe/npm/tests/fixtures/sampleDiagrams.js +267 -0
  206. package/data/probe/npm/tests/integration/claude-code-auto-fallback.spec.js +148 -0
  207. package/data/probe/npm/tests/integration/claude-code-multi-step.spec.js +127 -0
  208. package/data/probe/npm/tests/integration/claude-code-tool-events.spec.js +163 -0
  209. package/data/probe/npm/tests/integration/codex-auto-fallback.spec.js +191 -0
  210. package/data/probe/npm/tests/integration/codex-tool-events.spec.js +147 -0
  211. package/data/probe/npm/tests/integration/examplesChatMcp.test.js +402 -0
  212. package/data/probe/npm/tests/integration/mcpDotenvSupport.test.js +174 -0
  213. package/data/probe/npm/tests/integration/mcpErrorHandling.test.js +566 -0
  214. package/data/probe/npm/tests/integration/mcpRobustness.test.js +564 -0
  215. package/data/probe/npm/tests/integration/mcpStdoutPurity.test.js +355 -0
  216. package/data/probe/npm/tests/integration/probeAgentMcp.test.js +398 -0
  217. package/data/probe/npm/tests/integration/retryFallback.test.js +368 -0
  218. package/data/probe/npm/tests/integration/schema-in-initial-message.test.js +318 -0
  219. package/data/probe/npm/tests/integration/schema-validation-loop-prevention.test.js +244 -0
  220. package/data/probe/npm/tests/integration/schemaRetryLogic.test.js +94 -0
  221. package/data/probe/npm/tests/integration/validationFlow.test.js +329 -0
  222. package/data/probe/npm/tests/manual/test-codex-basic.js +110 -0
  223. package/data/probe/npm/tests/mcp/mcpClientManager.test.js +614 -0
  224. package/data/probe/npm/tests/mcp/mcpConfig.test.js +359 -0
  225. package/data/probe/npm/tests/mcp/mcpXmlBridge.test.js +436 -0
  226. package/data/probe/npm/tests/mcp/mockMcpServer.js +510 -0
  227. package/data/probe/npm/tests/mcp-strict-syntax.test.js +319 -0
  228. package/data/probe/npm/tests/mermaidQuoteEscaping.test.js +214 -0
  229. package/data/probe/npm/tests/nestedQuoteFix.test.js +40 -0
  230. package/data/probe/npm/tests/setup.js +46 -0
  231. package/data/probe/npm/tests/unit/allowed-tools.test.js +513 -0
  232. package/data/probe/npm/tests/unit/attempt-completion-closing-tag-in-content.test.js +188 -0
  233. package/data/probe/npm/tests/unit/attemptCompletionJsonFix.test.js +238 -0
  234. package/data/probe/npm/tests/unit/attemptCompletionJsonIssue.test.js +128 -0
  235. package/data/probe/npm/tests/unit/backtickAutoFix.test.js +35 -0
  236. package/data/probe/npm/tests/unit/bash-probe-agent-integration.test.js +389 -0
  237. package/data/probe/npm/tests/unit/bash-simple-commands.test.js +324 -0
  238. package/data/probe/npm/tests/unit/bash-tool-comprehensive.test.js +371 -0
  239. package/data/probe/npm/tests/unit/bash-tool-integration.test.js +310 -0
  240. package/data/probe/npm/tests/unit/bash-tool.test.js +341 -0
  241. package/data/probe/npm/tests/unit/completion-prompt.test.js +379 -0
  242. package/data/probe/npm/tests/unit/cwd-path-options.test.js +287 -0
  243. package/data/probe/npm/tests/unit/delegate-limits.test.js +422 -0
  244. package/data/probe/npm/tests/unit/direct-content-attempt-completion.test.js +235 -0
  245. package/data/probe/npm/tests/unit/edit-create-tools.test.js +609 -0
  246. package/data/probe/npm/tests/unit/enhancedMermaidValidation.test.js +577 -0
  247. package/data/probe/npm/tests/unit/extract-content.test.js +83 -0
  248. package/data/probe/npm/tests/unit/extract-multiple-targets.test.js +89 -0
  249. package/data/probe/npm/tests/unit/fallbackManager.test.js +442 -0
  250. package/data/probe/npm/tests/unit/githubCompatibilityValidation.test.js +258 -0
  251. package/data/probe/npm/tests/unit/imageConfig.test.js +149 -0
  252. package/data/probe/npm/tests/unit/imagePathResolution.test.js +345 -0
  253. package/data/probe/npm/tests/unit/json-fixing-agent.test.js +238 -0
  254. package/data/probe/npm/tests/unit/json-validation-enhanced-errors.test.js +199 -0
  255. package/data/probe/npm/tests/unit/jsonValidationInfiniteLoopFix.test.js +228 -0
  256. package/data/probe/npm/tests/unit/maidIntegration.test.js +139 -0
  257. package/data/probe/npm/tests/unit/maxIterationsWarning.test.js +195 -0
  258. package/data/probe/npm/tests/unit/mermaidEdgeLabelFix.test.js +161 -0
  259. package/data/probe/npm/tests/unit/mermaidHtmlEntities.test.js +76 -0
  260. package/data/probe/npm/tests/unit/mermaidInfiniteLoopFix.test.js +64 -0
  261. package/data/probe/npm/tests/unit/mermaidValidation.test.js +723 -0
  262. package/data/probe/npm/tests/unit/mermaidValidationVisorExample.test.js +309 -0
  263. package/data/probe/npm/tests/unit/probe-agent-clone-realistic.test.js +643 -0
  264. package/data/probe/npm/tests/unit/probe-agent-clone.test.js +476 -0
  265. package/data/probe/npm/tests/unit/probe-agent-delegate.test.js +400 -0
  266. package/data/probe/npm/tests/unit/probe-agent-model-option.test.js +118 -0
  267. package/data/probe/npm/tests/unit/probeTool-security.test.js +283 -0
  268. package/data/probe/npm/tests/unit/readImageTool.test.js +418 -0
  269. package/data/probe/npm/tests/unit/retryManager.test.js +317 -0
  270. package/data/probe/npm/tests/unit/schema-aware-reminders.test.js +288 -0
  271. package/data/probe/npm/tests/unit/schemaDefinitionDetection.test.js +115 -0
  272. package/data/probe/npm/tests/unit/schemaUtils.test.js +1268 -0
  273. package/data/probe/npm/tests/unit/simpleTelemetry.test.js +282 -0
  274. package/data/probe/npm/tests/unit/simplified-attempt-completion.test.js +274 -0
  275. package/data/probe/npm/tests/unit/single-quote-json-bug.test.js +231 -0
  276. package/data/probe/npm/tests/unit/subgraphAutoFix.test.js +110 -0
  277. package/data/probe/npm/tests/unit/system-prompt.test.js +32 -0
  278. package/data/probe/npm/tests/unit/types-probe-agent-options.test.js +42 -0
  279. package/data/probe/npm/tests/unit/xmlParsing.test.js +720 -0
  280. package/data/probe/npm/tsconfig.json +21 -0
  281. package/data/probe/result1.txt +19 -0
  282. package/data/probe/result2.txt +26 -0
  283. package/data/probe/scripts/benchmark.sh +270 -0
  284. package/data/probe/scripts/cache_memory_analysis.rs +844 -0
  285. package/data/probe/scripts/claude-hook-wrapper.sh +56 -0
  286. package/data/probe/site/.env.example +10 -0
  287. package/data/probe/site/DEPLOYMENT.md +86 -0
  288. package/data/probe/site/README.md +183 -0
  289. package/data/probe/site/adding-languages.md +135 -0
  290. package/data/probe/site/ai-chat.md +427 -0
  291. package/data/probe/site/ai-integration.md +1488 -0
  292. package/data/probe/site/blog/agentic-flow-custom-xml-protocol.md +407 -0
  293. package/data/probe/site/blog/index.md +118 -0
  294. package/data/probe/site/blog/v0.6.0-release.md +426 -0
  295. package/data/probe/site/blog.md +8 -0
  296. package/data/probe/site/changelog.md +200 -0
  297. package/data/probe/site/cli-mode.md +437 -0
  298. package/data/probe/site/code-extraction.md +436 -0
  299. package/data/probe/site/contributing/README.md +9 -0
  300. package/data/probe/site/contributing/documentation-cross-references.md +215 -0
  301. package/data/probe/site/contributing/documentation-maintenance.md +275 -0
  302. package/data/probe/site/contributing/documentation-structure.md +75 -0
  303. package/data/probe/site/documentation-cross-references.md +215 -0
  304. package/data/probe/site/documentation-guide.md +132 -0
  305. package/data/probe/site/documentation-maintenance.md +275 -0
  306. package/data/probe/site/features.md +147 -0
  307. package/data/probe/site/how-it-works.md +118 -0
  308. package/data/probe/site/index.md +175 -0
  309. package/data/probe/site/index.md.bak +133 -0
  310. package/data/probe/site/installation.md +235 -0
  311. package/data/probe/site/integrations/docker.md +248 -0
  312. package/data/probe/site/integrations/github-actions.md +413 -0
  313. package/data/probe/site/language-support-overview.md +168 -0
  314. package/data/probe/site/mcp-integration.md +587 -0
  315. package/data/probe/site/mcp-server.md +304 -0
  316. package/data/probe/site/navigation-structure.md +76 -0
  317. package/data/probe/site/nodejs-sdk.md +798 -0
  318. package/data/probe/site/output-formats.md +625 -0
  319. package/data/probe/site/package.json +21 -0
  320. package/data/probe/site/public/_headers +28 -0
  321. package/data/probe/site/public/_redirects +11 -0
  322. package/data/probe/site/quick-start.md +289 -0
  323. package/data/probe/site/search-functionality.md +291 -0
  324. package/data/probe/site/search-reference.md +291 -0
  325. package/data/probe/site/supported-languages.md +215 -0
  326. package/data/probe/site/use-cases/README.md +8 -0
  327. package/data/probe/site/use-cases/advanced-cli.md +253 -0
  328. package/data/probe/site/use-cases/ai-code-editors.md +239 -0
  329. package/data/probe/site/use-cases/building-ai-tools.md +529 -0
  330. package/data/probe/site/use-cases/cli-ai-workflows.md +285 -0
  331. package/data/probe/site/use-cases/deploying-probe-web-interface.md +255 -0
  332. package/data/probe/site/use-cases/integrating-probe-into-ai-code-editors.md +161 -0
  333. package/data/probe/site/use-cases/nodejs-sdk.md +596 -0
  334. package/data/probe/site/use-cases/team-chat.md +350 -0
  335. package/data/probe/site/web-interface.md +434 -0
  336. package/data/probe/site/wrangler.toml +9 -0
  337. package/data/probe/test-api-key.sh +1 -0
  338. package/data/probe/test-probe-implementation/hello.js +7 -0
  339. package/data/probe/test_cases/demonstrate_early_termination_issues.sh +176 -0
  340. package/data/probe/test_cases/early_termination_issues.rs +533 -0
  341. package/data/probe/test_data/test_nested_struct.go +26 -0
  342. package/data/probe/tests/README.md +286 -0
  343. package/data/probe/tests/README_search_determinism_tests.md +116 -0
  344. package/data/probe/tests/adjacent_comment_test.rs +152 -0
  345. package/data/probe/tests/apostrophe_handling_tests.rs +132 -0
  346. package/data/probe/tests/block_filtering_with_ast_tests.rs +669 -0
  347. package/data/probe/tests/block_merging_tests.rs +396 -0
  348. package/data/probe/tests/c_outline_format_tests.rs +2179 -0
  349. package/data/probe/tests/cache_invalidation_issues.rs.disabled +682 -0
  350. package/data/probe/tests/cache_order_tests.rs +147 -0
  351. package/data/probe/tests/cache_query_scoping_tests.rs +221 -0
  352. package/data/probe/tests/cli_tests.rs +680 -0
  353. package/data/probe/tests/comment_context_integration_test.rs +240 -0
  354. package/data/probe/tests/common.rs +33 -0
  355. package/data/probe/tests/complex_block_merging_tests.rs +599 -0
  356. package/data/probe/tests/complex_query_block_filtering_tests.rs +422 -0
  357. package/data/probe/tests/control_flow_closing_braces_test.rs +91 -0
  358. package/data/probe/tests/cpp_outline_format_tests.rs +1507 -0
  359. package/data/probe/tests/csharp_outline_format_tests.rs +941 -0
  360. package/data/probe/tests/elastic_query_integration_tests.rs +922 -0
  361. package/data/probe/tests/extract_command_tests.rs +1848 -0
  362. package/data/probe/tests/extract_deduplication_tests.rs +146 -0
  363. package/data/probe/tests/extract_input_file_tests.rs +84 -0
  364. package/data/probe/tests/extract_prompt_tests.rs +102 -0
  365. package/data/probe/tests/filename_search_tests.rs +96 -0
  366. package/data/probe/tests/fixtures/user/AssemblyInfo.cs +3 -0
  367. package/data/probe/tests/github_extract_tests.rs +234 -0
  368. package/data/probe/tests/go_comment_test.rs +253 -0
  369. package/data/probe/tests/go_outline_format_tests.rs +2587 -0
  370. package/data/probe/tests/go_path_resolver_tests.rs +96 -0
  371. package/data/probe/tests/html_outline_format_tests.rs +637 -0
  372. package/data/probe/tests/integration_tests.rs +837 -0
  373. package/data/probe/tests/ip_whitelist_test.rs +148 -0
  374. package/data/probe/tests/java_outline_format_tests.rs +1611 -0
  375. package/data/probe/tests/javascript_extract_tests.rs +315 -0
  376. package/data/probe/tests/javascript_outline_format_tests.rs +1464 -0
  377. package/data/probe/tests/json_format_tests.rs +436 -0
  378. package/data/probe/tests/json_schema_validation_tests.rs +450 -0
  379. package/data/probe/tests/lib_usage.rs +60 -0
  380. package/data/probe/tests/line_comment_context_extension_test.rs +459 -0
  381. package/data/probe/tests/line_map_cache_tests.rs +114 -0
  382. package/data/probe/tests/markdown_integration_tests.rs +190 -0
  383. package/data/probe/tests/mocks/test_ip_whitelist.go +11 -0
  384. package/data/probe/tests/mocks/test_object.js +27 -0
  385. package/data/probe/tests/mocks/test_struct.go +50 -0
  386. package/data/probe/tests/multi_keyword_pattern_tests.rs +464 -0
  387. package/data/probe/tests/multi_language_syntax_integration_tests.rs +218 -0
  388. package/data/probe/tests/multiple_capture_groups_tests.rs +169 -0
  389. package/data/probe/tests/negative_compound_word_tests.rs +246 -0
  390. package/data/probe/tests/nested_symbol_extraction_tests.rs +99 -0
  391. package/data/probe/tests/outline_cross_file_interference_test.rs +335 -0
  392. package/data/probe/tests/outline_keyword_preservation_test.rs +67 -0
  393. package/data/probe/tests/output_format_edge_cases_tests.rs +693 -0
  394. package/data/probe/tests/parallel_extraction_tests.rs +178 -0
  395. package/data/probe/tests/parallel_search_tests.rs +355 -0
  396. package/data/probe/tests/path_resolver_tests.rs +698 -0
  397. package/data/probe/tests/php_outline_format_extended_tests.rs +928 -0
  398. package/data/probe/tests/php_outline_format_tests.rs +768 -0
  399. package/data/probe/tests/property_tests.proptest-regressions +9 -0
  400. package/data/probe/tests/property_tests.rs +118 -0
  401. package/data/probe/tests/python_outline_format_tests.rs +1538 -0
  402. package/data/probe/tests/query_command_json_tests.rs +438 -0
  403. package/data/probe/tests/query_command_tests.rs +232 -0
  404. package/data/probe/tests/query_command_xml_tests.rs +569 -0
  405. package/data/probe/tests/quoted_term_with_negative_keyword_tests.rs +216 -0
  406. package/data/probe/tests/required_terms_filename_tests.rs +116 -0
  407. package/data/probe/tests/ruby_outline_format_tests.rs +1011 -0
  408. package/data/probe/tests/rust_line_comment_context_test.rs +151 -0
  409. package/data/probe/tests/rust_outline_format_enhanced_tests.rs +725 -0
  410. package/data/probe/tests/rust_outline_format_tests.rs +843 -0
  411. package/data/probe/tests/schemas/xml_output_schema.xsd +38 -0
  412. package/data/probe/tests/search_determinism_tests.rs +451 -0
  413. package/data/probe/tests/search_hints_tests.rs +253 -0
  414. package/data/probe/tests/special_character_escaping_tests.rs +417 -0
  415. package/data/probe/tests/stemming_compound_word_filtering_tests.rs +535 -0
  416. package/data/probe/tests/strict_elastic_syntax_tests.rs +404 -0
  417. package/data/probe/tests/swift_outline_format_tests.rs +3319 -0
  418. package/data/probe/tests/symbols_tests.rs +166 -0
  419. package/data/probe/tests/test_file.rs +45 -0
  420. package/data/probe/tests/test_tokenize.rs +28 -0
  421. package/data/probe/tests/timeout_tests.rs +82 -0
  422. package/data/probe/tests/tokenization_tests.rs +195 -0
  423. package/data/probe/tests/tokenized_block_filtering_tests.rs +174 -0
  424. package/data/probe/tests/typescript_extract_tests.rs +214 -0
  425. package/data/probe/tests/typescript_outline_format_tests.rs +2188 -0
  426. package/data/probe/tests/xml_format_tests.rs +568 -0
  427. package/data/probe/tests/xml_schema_validation_tests.rs +497 -0
  428. package/data/scripts/postinstall.mjs +9 -0
  429. package/data/scripts/set-version.js +0 -0
  430. package/data/scripts/wiki-build.sh +111 -0
  431. package/data/scripts/wiki-deploy.sh +73 -0
  432. package/data/serve.json +12 -0
  433. package/data/test/demo-dynamic.html +134 -0
  434. package/data/test/demo-esm.html +105 -0
  435. package/data/test/demo-iife.html +78 -0
  436. package/data/tsconfig.json +7 -0
  437. package/data/vite.server.ts +483 -0
  438. package/data/vitest.config.ts +40 -0
  439. package/data/wiki/Home.md +58 -0
  440. package/data/wiki/_Sidebar.md +39 -0
  441. package/docs-mcp.config.json +20 -0
  442. package/package.json +56 -0
  443. package/src/config.js +111 -0
  444. 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
+