@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
package/data/README.md
ADDED
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
# Crownpeak DQM React Component
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@crownpeak/dqm-react-component)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
[](https://www.typescriptlang.org/)
|
|
6
|
+
[](https://reactjs.org/)
|
|
7
|
+
|
|
8
|
+
A React component library for integrating [Crownpeak Digital Quality Management (DQM)](https://www.crownpeak.com/) into
|
|
9
|
+
your React applications. Display quality analysis, accessibility violations, and checkpoint errors with visual
|
|
10
|
+
highlighting capabilities.
|
|
11
|
+
|
|
12
|
+
## 🌟 Features
|
|
13
|
+
|
|
14
|
+
- **🤖 AI-Powered Translation & Summary** - Automatically translate analysis results into your language and generate intelligent summaries using OpenAI
|
|
15
|
+
- **📊 Quality Analysis** - Comprehensive quality metrics and scores
|
|
16
|
+
- **♿ Accessibility Checks** - WCAG compliance validation
|
|
17
|
+
- **🎯 Error Highlighting** - Visual highlighting of issues in HTML
|
|
18
|
+
- **🎨 Material-UI Design** - Beautiful, responsive sidebar interface
|
|
19
|
+
- **🔐 Secure Authentication** - Backend session management with secure credential storage
|
|
20
|
+
- **⚡ Real-time Analysis** - Live quality assessment as you edit
|
|
21
|
+
- **📱 Responsive** - Works on desktop, tablet, and mobile
|
|
22
|
+
- **🌍 Internationalization** - Supports English, German, and Spanish
|
|
23
|
+
- **🔧 TypeScript Support** - Full type definitions included
|
|
24
|
+
|
|
25
|
+
## 📦 Installation
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install @crownpeak/dqm-react-component
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 🚀 Quick Start
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
import React, {useState} from 'react';
|
|
35
|
+
import {DQMSidebar} from '@crownpeak/dqm-react-component';
|
|
36
|
+
|
|
37
|
+
function App() {
|
|
38
|
+
const [open, setOpen] = useState(false);
|
|
39
|
+
|
|
40
|
+
const customHtml = `<html>
|
|
41
|
+
<head><title>Test Page</title></head>
|
|
42
|
+
<body>
|
|
43
|
+
<h1>Hello World</h1>
|
|
44
|
+
<img src="image.jpg" />
|
|
45
|
+
</body>`
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<div>
|
|
49
|
+
<button onClick={() => setOpen(true)}>Check Quality</button>
|
|
50
|
+
|
|
51
|
+
<DQMSidebar
|
|
52
|
+
open={sidebarOpen}
|
|
53
|
+
onOpen={() => setOpen(true)}
|
|
54
|
+
onClose={() => setOpen(false)}
|
|
55
|
+
debugHtml={customHtml}
|
|
56
|
+
config={{
|
|
57
|
+
// ... authentication options here
|
|
58
|
+
// look for "🔑 Authentication Setup" below
|
|
59
|
+
}}
|
|
60
|
+
/>
|
|
61
|
+
</div>
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export default App;
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### AI-Powered Translation & Summary (Quick Example)
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
import {DQMSidebar} from '@crownpeak/dqm-react-component';
|
|
72
|
+
|
|
73
|
+
<DQMSidebar
|
|
74
|
+
open={isOpen}
|
|
75
|
+
onClose={() => setIsOpen(false)}
|
|
76
|
+
onOpen={() => setIsOpen(true)}
|
|
77
|
+
config={{
|
|
78
|
+
websiteId: 'your-website-id',
|
|
79
|
+
apiKey: 'your-api-key',
|
|
80
|
+
// Enable AI Translation (API key via localStorage: dqm_openai_apiKey)
|
|
81
|
+
translation: {
|
|
82
|
+
enabledByDefault: true,
|
|
83
|
+
computeBudgetMs: 15000, // 15s timeout for 'fast' mode
|
|
84
|
+
},
|
|
85
|
+
// Enable AI Summary (uses same OpenAI API key)
|
|
86
|
+
summary: {
|
|
87
|
+
timeoutMs: 30000, // 30s timeout
|
|
88
|
+
}
|
|
89
|
+
}}
|
|
90
|
+
/>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
See **[AI Features Guide](./docs/AI-FEATURES.md)** for complete documentation including caching strategies and performance tuning.
|
|
94
|
+
|
|
95
|
+
## 📖 Documentation
|
|
96
|
+
|
|
97
|
+
### Core Documentation
|
|
98
|
+
- **[Quick Start Guide](./docs/QUICKSTART.md)** - Get up and running in 5 minutes
|
|
99
|
+
- **[Examples](./docs/EXAMPLES.md)** - Integration examples for React, Next.js, TypeScript
|
|
100
|
+
- **[Authentication Guide](./docs/AUTHENTICATION.md)** - Setup and configuration
|
|
101
|
+
|
|
102
|
+
### AI Features
|
|
103
|
+
- **[AI Features Guide](./docs/AI-FEATURES.md)** - Translation & Summary with OpenAI
|
|
104
|
+
- **[API Reference](./docs/API-REFERENCE.md)** - Full TypeScript API documentation
|
|
105
|
+
- **[Migration Guide](./docs/MIGRATION-GUIDE.md)** - Upgrade from v1.1 to v1.2
|
|
106
|
+
|
|
107
|
+
### Advanced
|
|
108
|
+
- **[Widget Guide](./docs/WIDGET-GUIDE.md)** - Standalone IIFE/ESM bundle usage
|
|
109
|
+
- **[Backend API](./docs/BACKEND-API.md)** - Backend server endpoints and usage
|
|
110
|
+
- **[Development Guide](./docs/DEVELOPMENT.md)** - Contributing and local development
|
|
111
|
+
- **[Troubleshooting](./docs/TROUBLESHOOTING.md)** - Common issues and solutions
|
|
112
|
+
|
|
113
|
+
## 🔑 Authentication Setup
|
|
114
|
+
|
|
115
|
+
The component requires authentication with Crownpeak DQM. Two options are available:
|
|
116
|
+
|
|
117
|
+
```tsx
|
|
118
|
+
import {DQMSidebar} from '@crownpeak/dqm-react-component';
|
|
119
|
+
|
|
120
|
+
<DQMSidebar
|
|
121
|
+
{/* ... */}
|
|
122
|
+
config={{
|
|
123
|
+
// Option 1: Direct API Key and Website ID (not recommended for production)
|
|
124
|
+
// websiteId: 'your-website-id',
|
|
125
|
+
// apiKey: 'your-api-key',
|
|
126
|
+
|
|
127
|
+
// Option 2: Auth Backend for API Key management (recommended)
|
|
128
|
+
authBackendUrl: '', // Dev: empty (same origin) | Prod: 'https://your-backend.com'
|
|
129
|
+
useLocalStorage: true,
|
|
130
|
+
}}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Direct Backend Integration
|
|
134
|
+
|
|
135
|
+
Run the included backend server for session management:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
npm run server
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
See [AUTHENTICATION.md](./AUTHENTICATION.md) for detailed setup instructions.
|
|
142
|
+
|
|
143
|
+
## 🛠️ Development Server
|
|
144
|
+
|
|
145
|
+
For local development with test harness:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
npm install
|
|
149
|
+
npm run dev
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
This starts:
|
|
153
|
+
|
|
154
|
+
- Frontend + Backend on `http://localhost:5173` (Vite dev server with integrated backend)
|
|
155
|
+
- Backend routes (`/auth/*`, `/dqm/*`) handled by Vite plugin
|
|
156
|
+
|
|
157
|
+
### Standalone Server (Optional)
|
|
158
|
+
|
|
159
|
+
If using the included backend server:
|
|
160
|
+
|
|
161
|
+
- Node.js 18+ or 20+
|
|
162
|
+
- Redis (for session storage)
|
|
163
|
+
|
|
164
|
+
See [REDIS-SETUP.md](./REDIS-SETUP.md) for Redis installation.
|
|
165
|
+
|
|
166
|
+
## 📊 API Reference
|
|
167
|
+
|
|
168
|
+
### DQMSidebar Props
|
|
169
|
+
|
|
170
|
+
| Prop | Type | Required | Description |
|
|
171
|
+
|-------------|--------------|----------|------------------------------|
|
|
172
|
+
| `open` | `boolean` | ✅ | Controls sidebar visibility |
|
|
173
|
+
| `onClose` | `() => void` | ✅ | Callback when sidebar closes |
|
|
174
|
+
| `onOpen` | `() => void` | ✅ | Callback when sidebar opens |
|
|
175
|
+
| `debugHtml` | `string` | ❌ | HTML for testing (dev only) |
|
|
176
|
+
| `config` | `DQMConfig` | ❌ | Configuration options |
|
|
177
|
+
|
|
178
|
+
### DQMConfig Options
|
|
179
|
+
|
|
180
|
+
| Option | Type | Default | Description |
|
|
181
|
+
|-------------------|-----------------|---------|------------------------------------------------|
|
|
182
|
+
| `apiKey` | `string` | - | Direct API key (not for production) |
|
|
183
|
+
| `websiteId` | `string` | - | Website ID for DQM |
|
|
184
|
+
| `authBackendUrl` | `string` | - | Backend URL for session management |
|
|
185
|
+
| `useLocalStorage` | `boolean` | `true` | Persist credentials in localStorage |
|
|
186
|
+
| `disabled` | `boolean` | `false` | Disable DQM completely |
|
|
187
|
+
| `disableLogout` | `boolean` | `false` | Hide the logout control (host manages session) |
|
|
188
|
+
| `shadowDomMode` | `boolean` | `false` | Enable for Shadow DOM embedding |
|
|
189
|
+
| `overlayConfig` | `OverlayConfig` | - | Overlay/toolbar detection config |
|
|
190
|
+
|
|
191
|
+
### OverlayConfig (for Toolbars & Overlays)
|
|
192
|
+
|
|
193
|
+
Configure how the sidebar adapts to fixed overlays (e.g., admin toolbars):
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
<DQMSidebar
|
|
197
|
+
config={{
|
|
198
|
+
overlayConfig: {
|
|
199
|
+
// CSS selector for the overlay element
|
|
200
|
+
selector: 'iframe#MyToolbar',
|
|
201
|
+
|
|
202
|
+
// Validate iFrame has contentWindow (default: true)
|
|
203
|
+
validateIframe: true,
|
|
204
|
+
|
|
205
|
+
// Polling interval in ms for cross-origin iFrames (default: 1000)
|
|
206
|
+
pollMs: 1000,
|
|
207
|
+
|
|
208
|
+
// OR: Manual offset when auto-detection doesn't work
|
|
209
|
+
// (e.g., for iFrames that fill screen but have smaller internal content)
|
|
210
|
+
manualOffset: {
|
|
211
|
+
position: 'top', // 'top' | 'bottom' | 'left' | 'right'
|
|
212
|
+
pixels: 50
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}}
|
|
216
|
+
/>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**Common overlay configurations:**
|
|
220
|
+
|
|
221
|
+
[//]: # (@formatter:off)
|
|
222
|
+
```tsx
|
|
223
|
+
// Disable overlay detection
|
|
224
|
+
overlayConfig: {
|
|
225
|
+
selector: null
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Manual 50px offset from top
|
|
229
|
+
overlayConfig: {
|
|
230
|
+
manualOffset: {
|
|
231
|
+
position: 'top', pixels: 50
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// Custom selector without iFrame validation
|
|
236
|
+
overlayConfig: {
|
|
237
|
+
selector: '.admin-toolbar', validateIframe: false
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
[//]: # (@formatter:on)
|
|
241
|
+
|
|
242
|
+
### Exported Types
|
|
243
|
+
|
|
244
|
+
```typescript
|
|
245
|
+
import type {
|
|
246
|
+
AnalysisState,
|
|
247
|
+
Checkpoint,
|
|
248
|
+
AnalysisData,
|
|
249
|
+
DQMSidebarProps,
|
|
250
|
+
DQMConfig,
|
|
251
|
+
OverlayConfig,
|
|
252
|
+
OverlayOffsetPosition
|
|
253
|
+
} from '@crownpeak/dqm-react-component';
|
|
254
|
+
|
|
255
|
+
// For advanced overlay handling
|
|
256
|
+
import {useOverlayResistant} from '@crownpeak/dqm-react-component';
|
|
257
|
+
import type {OverlayInfo, OverlayPosition} from '@crownpeak/dqm-react-component';
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
See [TypeScript examples](./EXAMPLES.md#typescript-configuration) for full type definitions.
|
|
261
|
+
|
|
262
|
+
## 🧪 Testing
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# Lint code
|
|
266
|
+
npm run lint
|
|
267
|
+
|
|
268
|
+
# Build library
|
|
269
|
+
npm run build:lib
|
|
270
|
+
|
|
271
|
+
# Test as package
|
|
272
|
+
npm pack
|
|
273
|
+
npm install ./crownpeak-dqm-react-component-1.0.0.tgz
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
## 🤝 Contributing
|
|
277
|
+
|
|
278
|
+
We welcome contributions! Please see our [Contributing Guide](./CONTRIBUTING.md) for details.
|
|
279
|
+
|
|
280
|
+
1. Fork the repository
|
|
281
|
+
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
282
|
+
3. Commit your changes (`git commit -m 'feat: Add amazing feature'`)
|
|
283
|
+
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
284
|
+
5. Open a Pull Request
|
|
285
|
+
|
|
286
|
+
## 📜 License
|
|
287
|
+
|
|
288
|
+
MIT © [Crownpeak Technology GmbH](https://www.crownpeak.com/)
|
|
289
|
+
|
|
290
|
+
See [LICENSE](./LICENSE) file for details.
|
|
291
|
+
|
|
292
|
+
## 🐛 Issues
|
|
293
|
+
|
|
294
|
+
Found a bug or have a feature request?
|
|
295
|
+
Please [open an issue](https://github.com/Crownpeak/dqm-react-component/issues/new/choose).
|
|
296
|
+
|
|
297
|
+
## 📞 Support
|
|
298
|
+
|
|
299
|
+
- **Documentation**: Check the [docs folder](.)
|
|
300
|
+
- **Issues**: [GitHub Issues](https://github.com/Crownpeak/dqm-react-component/issues)
|
|
301
|
+
- **Website**: [crownpeak.com](https://www.crownpeak.com/)
|
|
302
|
+
|
|
303
|
+
## 🔗 Links
|
|
304
|
+
|
|
305
|
+
- [NPM Package](https://www.npmjs.com/package/@crownpeak/dqm-react-component)
|
|
306
|
+
- [GitHub Repository](https://github.com/Crownpeak/dqm-react-component)
|
|
307
|
+
- [Material-UI Documentation](https://mui.com/)
|
|
308
|
+
|
|
309
|
+
## 📝 Changelog
|
|
310
|
+
|
|
311
|
+
See [CHANGELOG.md](./CHANGELOG.md) for release history.
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
Made with ❤️ by the Crownpeak team
|
package/data/SECURITY.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Security Policy
|
|
2
|
+
|
|
3
|
+
## Supported Versions
|
|
4
|
+
|
|
5
|
+
We release patches for security vulnerabilities for the following versions:
|
|
6
|
+
|
|
7
|
+
| Version | Supported |
|
|
8
|
+
| ------- | ------------------ |
|
|
9
|
+
| 1.x.x | :white_check_mark: |
|
|
10
|
+
|
|
11
|
+
## Reporting a Vulnerability
|
|
12
|
+
|
|
13
|
+
We take security vulnerabilities seriously. If you discover a security issue in this project, please report it responsibly.
|
|
14
|
+
|
|
15
|
+
### How to Report
|
|
16
|
+
|
|
17
|
+
**Please do NOT report security vulnerabilities through public GitHub issues.**
|
|
18
|
+
|
|
19
|
+
Instead, please report them via email to: **security@crownpeak.com**
|
|
20
|
+
|
|
21
|
+
Include the following information in your report:
|
|
22
|
+
|
|
23
|
+
1. **Description** - A clear description of the vulnerability
|
|
24
|
+
2. **Impact** - What an attacker could achieve by exploiting this vulnerability
|
|
25
|
+
3. **Steps to Reproduce** - Detailed steps to reproduce the issue
|
|
26
|
+
4. **Affected Versions** - Which versions are affected
|
|
27
|
+
5. **Possible Fix** - If you have suggestions for fixing the vulnerability
|
|
28
|
+
6. **Your Contact Info** - So we can follow up with questions if needed
|
|
29
|
+
|
|
30
|
+
### What to Expect
|
|
31
|
+
|
|
32
|
+
- **Acknowledgment** - We'll acknowledge receipt of your report within 48 hours
|
|
33
|
+
- **Investigation** - We'll investigate and validate the vulnerability
|
|
34
|
+
- **Status Updates** - We'll keep you informed of our progress
|
|
35
|
+
- **Resolution** - We'll work on a fix and release a patched version
|
|
36
|
+
- **Credit** - With your permission, we'll credit you in the security advisory
|
|
37
|
+
|
|
38
|
+
### Security Best Practices
|
|
39
|
+
|
|
40
|
+
When using this component:
|
|
41
|
+
|
|
42
|
+
1. **Keep Dependencies Updated**
|
|
43
|
+
```bash
|
|
44
|
+
npm audit
|
|
45
|
+
npm audit fix
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
2. **Use Environment Variables** - Never hardcode API keys or credentials
|
|
49
|
+
```bash
|
|
50
|
+
# .env file (never commit this)
|
|
51
|
+
DQM_API_KEY=your_api_key_here
|
|
52
|
+
DQM_WEBSITE_ID=your_website_id
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
3. **Secure Backend** - If using the included backend server:
|
|
56
|
+
- Use HTTPS in production
|
|
57
|
+
- Set secure Redis password
|
|
58
|
+
- Use environment variables for secrets
|
|
59
|
+
- Enable CORS only for trusted domains
|
|
60
|
+
|
|
61
|
+
4. **Session Management**
|
|
62
|
+
- Sessions expire after 24 hours
|
|
63
|
+
- Clear localStorage on logout
|
|
64
|
+
- Validate tokens on backend
|
|
65
|
+
|
|
66
|
+
5. **Content Security Policy** - Configure CSP headers:
|
|
67
|
+
```
|
|
68
|
+
Content-Security-Policy:
|
|
69
|
+
default-src 'self';
|
|
70
|
+
connect-src 'self' https://api.crownpeak.net;
|
|
71
|
+
style-src 'self' 'unsafe-inline';
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Known Security Considerations
|
|
75
|
+
|
|
76
|
+
1. **HTML Rendering**
|
|
77
|
+
- Component uses DOMPurify to sanitize rendered HTML
|
|
78
|
+
- Shadow DOM isolation prevents style leakage
|
|
79
|
+
- Be cautious when using `debugHtml` prop (dev only)
|
|
80
|
+
|
|
81
|
+
2. **Session Storage**
|
|
82
|
+
- Redis sessions expire after 24 hours
|
|
83
|
+
- Tokens stored in localStorage (consider security implications)
|
|
84
|
+
- Clear sensitive data on logout
|
|
85
|
+
|
|
86
|
+
3. **API Keys**
|
|
87
|
+
- Never expose API keys in client-side code
|
|
88
|
+
- Use backend proxy for API calls
|
|
89
|
+
- Rotate keys regularly
|
|
90
|
+
|
|
91
|
+
### Third-Party Dependencies
|
|
92
|
+
|
|
93
|
+
We regularly monitor and update dependencies for security vulnerabilities:
|
|
94
|
+
|
|
95
|
+
- React 18+
|
|
96
|
+
- Material-UI 5+
|
|
97
|
+
- Axios (HTTP client)
|
|
98
|
+
- DOMPurify (HTML sanitization)
|
|
99
|
+
- Express (backend server)
|
|
100
|
+
- Redis (session storage)
|
|
101
|
+
|
|
102
|
+
Run `npm audit` to check for known vulnerabilities in dependencies.
|
|
103
|
+
|
|
104
|
+
### Security Updates
|
|
105
|
+
|
|
106
|
+
Security patches will be released as soon as possible:
|
|
107
|
+
|
|
108
|
+
- **Critical** - Within 24-48 hours
|
|
109
|
+
- **High** - Within 1 week
|
|
110
|
+
- **Medium** - Within 2 weeks
|
|
111
|
+
- **Low** - In next scheduled release
|
|
112
|
+
|
|
113
|
+
### Disclosure Policy
|
|
114
|
+
|
|
115
|
+
- We follow responsible disclosure practices
|
|
116
|
+
- Security issues will be disclosed after a fix is available
|
|
117
|
+
- We'll publish a security advisory on GitHub
|
|
118
|
+
|
|
119
|
+
### Security Hall of Fame
|
|
120
|
+
|
|
121
|
+
We recognize security researchers who help improve our security:
|
|
122
|
+
|
|
123
|
+
<!-- Security researchers will be listed here after disclosure -->
|
|
124
|
+
|
|
125
|
+
Thank you for helping keep Crownpeak DQM React Component secure! 🔒
|