bluera-knowledge 0.9.21
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/.claude/commands/commit.md +37 -0
- package/.claude/hooks/post-edit-check.sh +41 -0
- package/.claude/settings.local.json.example +40 -0
- package/.claude/skills/atomic-commits/SKILL.md +53 -0
- package/.claude-plugin/plugin.json +13 -0
- package/.editorconfig +15 -0
- package/.github/workflows/auto-release.yml +59 -0
- package/.github/workflows/ci.yml +142 -0
- package/.github/workflows/release.yml +66 -0
- package/.github/workflows/update-marketplace.yml +96 -0
- package/.husky/pre-commit +47 -0
- package/.husky/pre-push +29 -0
- package/.versionrc.json +28 -0
- package/CHANGELOG.md +410 -0
- package/CLAUDE.md +109 -0
- package/LICENSE +21 -0
- package/NOTICE +47 -0
- package/README.md +1546 -0
- package/SECURITY.md +65 -0
- package/bun.lock +1758 -0
- package/commands/add-folder.md +48 -0
- package/commands/add-repo.md +50 -0
- package/commands/cancel.md +63 -0
- package/commands/check-status.md +78 -0
- package/commands/crawl.md +51 -0
- package/commands/index.md +48 -0
- package/commands/remove-store.md +52 -0
- package/commands/search.md +79 -0
- package/commands/search.sh +63 -0
- package/commands/stores.md +54 -0
- package/commands/suggest.md +82 -0
- package/dist/chunk-5QMHZUC4.js +3617 -0
- package/dist/chunk-5QMHZUC4.js.map +1 -0
- package/dist/chunk-BICFAWMN.js +656 -0
- package/dist/chunk-BICFAWMN.js.map +1 -0
- package/dist/chunk-J7J6LXOJ.js +958 -0
- package/dist/chunk-J7J6LXOJ.js.map +1 -0
- package/dist/chunk-L2YVNC63.js +59 -0
- package/dist/chunk-L2YVNC63.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1429 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/server.d.ts +15 -0
- package/dist/mcp/server.js +11 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/watch.service-YAIKKDCF.js +7 -0
- package/dist/watch.service-YAIKKDCF.js.map +1 -0
- package/dist/workers/background-worker-cli.d.ts +1 -0
- package/dist/workers/background-worker-cli.js +310 -0
- package/dist/workers/background-worker-cli.js.map +1 -0
- package/docs/plans/2024-12-17-ai-search-quality-implementation.md +752 -0
- package/docs/plans/2024-12-17-ai-search-quality-testing-design.md +201 -0
- package/docs/plans/2025-12-16-bluera-knowledge-cli.md +2951 -0
- package/docs/plans/2025-12-16-phase2-features.md +1518 -0
- package/docs/plans/2025-12-17-hil-implementation.md +926 -0
- package/docs/plans/2025-12-17-hil-quality-testing.md +224 -0
- package/docs/plans/2025-12-17-search-quality-phase1-implementation.md +1416 -0
- package/docs/plans/2025-12-17-search-quality-testing-v2-design.md +212 -0
- package/docs/plans/2025-12-28-ai-agent-optimization.md +1630 -0
- package/eslint-rules/require-skip-comment.js +81 -0
- package/eslint.config.js +61 -0
- package/hooks/check-dependencies.sh +110 -0
- package/hooks/format-search-results.py +132 -0
- package/hooks/hooks.json +27 -0
- package/hooks/job-status-hook.sh +51 -0
- package/knip.json +43 -0
- package/mcp.plugin.json +12 -0
- package/package.json +103 -0
- package/python/crawl_worker.py +275 -0
- package/python/requirements.txt +2 -0
- package/scripts/readme-version-updater.cjs +18 -0
- package/skills/advanced-workflows/SKILL.md +273 -0
- package/skills/atomic-commits/SKILL.md +77 -0
- package/skills/knowledge-search/SKILL.md +54 -0
- package/skills/search-optimization/SKILL.md +396 -0
- package/skills/store-lifecycle/SKILL.md +470 -0
- package/skills/when-to-query/SKILL.md +66 -0
- package/src/analysis/ast-parser.test.ts +423 -0
- package/src/analysis/ast-parser.ts +192 -0
- package/src/analysis/code-graph.test.ts +698 -0
- package/src/analysis/code-graph.ts +245 -0
- package/src/analysis/dependency-usage-analyzer.test.ts +799 -0
- package/src/analysis/dependency-usage-analyzer.ts +405 -0
- package/src/analysis/go-ast-parser.test.ts +531 -0
- package/src/analysis/go-ast-parser.ts +478 -0
- package/src/analysis/parser-factory.test.ts +132 -0
- package/src/analysis/parser-factory.ts +44 -0
- package/src/analysis/python-ast-parser.test.ts +210 -0
- package/src/analysis/python-ast-parser.ts +34 -0
- package/src/analysis/repo-url-resolver.test.ts +533 -0
- package/src/analysis/repo-url-resolver.ts +233 -0
- package/src/analysis/rust-ast-parser.test.ts +568 -0
- package/src/analysis/rust-ast-parser.ts +477 -0
- package/src/analysis/tree-sitter-parser.test.ts +297 -0
- package/src/analysis/tree-sitter-parser.ts +223 -0
- package/src/cli/commands/crawl.test.ts +942 -0
- package/src/cli/commands/crawl.ts +141 -0
- package/src/cli/commands/index-cmd.test.ts +722 -0
- package/src/cli/commands/index-cmd.ts +105 -0
- package/src/cli/commands/mcp.test.ts +218 -0
- package/src/cli/commands/mcp.ts +18 -0
- package/src/cli/commands/plugin-api.test.ts +313 -0
- package/src/cli/commands/plugin-api.ts +45 -0
- package/src/cli/commands/search.test.ts +911 -0
- package/src/cli/commands/search.ts +113 -0
- package/src/cli/commands/serve.test.ts +329 -0
- package/src/cli/commands/serve.ts +28 -0
- package/src/cli/commands/setup.test.ts +820 -0
- package/src/cli/commands/setup.ts +153 -0
- package/src/cli/commands/store.test.ts +1003 -0
- package/src/cli/commands/store.ts +167 -0
- package/src/cli/index.ts +7 -0
- package/src/cli/program.ts +59 -0
- package/src/crawl/article-converter.test.ts +604 -0
- package/src/crawl/article-converter.ts +98 -0
- package/src/crawl/bridge.test.ts +674 -0
- package/src/crawl/bridge.ts +236 -0
- package/src/crawl/claude-client.test.ts +663 -0
- package/src/crawl/claude-client.ts +234 -0
- package/src/crawl/intelligent-crawler.test.ts +931 -0
- package/src/crawl/intelligent-crawler.ts +428 -0
- package/src/crawl/markdown-utils.test.ts +703 -0
- package/src/crawl/markdown-utils.ts +228 -0
- package/src/crawl/schemas.ts +114 -0
- package/src/db/embeddings.test.ts +63 -0
- package/src/db/embeddings.ts +69 -0
- package/src/db/index.ts +2 -0
- package/src/db/lance.test.ts +390 -0
- package/src/db/lance.ts +164 -0
- package/src/defaults/repos.ts +67 -0
- package/src/index.ts +107 -0
- package/src/mcp/cache.test.ts +202 -0
- package/src/mcp/cache.ts +103 -0
- package/src/mcp/commands/index.ts +20 -0
- package/src/mcp/commands/job.commands.ts +54 -0
- package/src/mcp/commands/meta.commands.ts +54 -0
- package/src/mcp/commands/registry.ts +183 -0
- package/src/mcp/commands/store.commands.ts +75 -0
- package/src/mcp/handlers/execute.handler.test.ts +179 -0
- package/src/mcp/handlers/execute.handler.ts +24 -0
- package/src/mcp/handlers/index.ts +43 -0
- package/src/mcp/handlers/job.handler.test.ts +189 -0
- package/src/mcp/handlers/job.handler.ts +116 -0
- package/src/mcp/handlers/search.handler.test.ts +334 -0
- package/src/mcp/handlers/search.handler.ts +209 -0
- package/src/mcp/handlers/store.handler.test.ts +415 -0
- package/src/mcp/handlers/store.handler.ts +295 -0
- package/src/mcp/schemas/index.test.ts +315 -0
- package/src/mcp/schemas/index.ts +138 -0
- package/src/mcp/server.test.ts +36 -0
- package/src/mcp/server.ts +162 -0
- package/src/mcp/types.ts +41 -0
- package/src/plugin/commands.test.ts +789 -0
- package/src/plugin/commands.ts +257 -0
- package/src/plugin/dependency-analyzer.test.ts +380 -0
- package/src/plugin/dependency-analyzer.ts +147 -0
- package/src/plugin/git-clone.test.ts +332 -0
- package/src/plugin/git-clone.ts +57 -0
- package/src/server/app.test.ts +752 -0
- package/src/server/app.ts +119 -0
- package/src/server/index.test.ts +477 -0
- package/src/server/index.ts +1 -0
- package/src/services/chunking.service.test.ts +363 -0
- package/src/services/chunking.service.ts +350 -0
- package/src/services/code-graph.service.test.ts +304 -0
- package/src/services/code-graph.service.ts +302 -0
- package/src/services/code-unit.service.test.ts +596 -0
- package/src/services/code-unit.service.ts +115 -0
- package/src/services/config.service.test.ts +127 -0
- package/src/services/config.service.ts +69 -0
- package/src/services/index.service.test.ts +1002 -0
- package/src/services/index.service.ts +266 -0
- package/src/services/index.ts +75 -0
- package/src/services/job.service.test.ts +418 -0
- package/src/services/job.service.ts +246 -0
- package/src/services/project-root.service.test.ts +506 -0
- package/src/services/project-root.service.ts +112 -0
- package/src/services/search.service.test.ts +1105 -0
- package/src/services/search.service.ts +892 -0
- package/src/services/services.test.ts +38 -0
- package/src/services/snippet.service.test.ts +205 -0
- package/src/services/snippet.service.ts +166 -0
- package/src/services/store.service.test.ts +474 -0
- package/src/services/store.service.ts +225 -0
- package/src/services/watch.service.test.ts +553 -0
- package/src/services/watch.service.ts +71 -0
- package/src/types/brands.test.ts +45 -0
- package/src/types/brands.ts +32 -0
- package/src/types/config.ts +79 -0
- package/src/types/document.ts +30 -0
- package/src/types/index.ts +66 -0
- package/src/types/job.ts +46 -0
- package/src/types/progress.ts +9 -0
- package/src/types/result.test.ts +44 -0
- package/src/types/result.ts +41 -0
- package/src/types/search.ts +95 -0
- package/src/types/store.test.ts +69 -0
- package/src/types/store.ts +47 -0
- package/src/utils/type-guards.test.ts +346 -0
- package/src/utils/type-guards.ts +61 -0
- package/src/workers/background-worker-cli.ts +105 -0
- package/src/workers/background-worker.test.ts +178 -0
- package/src/workers/background-worker.ts +294 -0
- package/src/workers/spawn-worker.test.ts +128 -0
- package/src/workers/spawn-worker.ts +49 -0
- package/tests/analysis/ast-parser.test.ts +98 -0
- package/tests/analysis/code-graph.test.ts +60 -0
- package/tests/fixtures/README.md +114 -0
- package/tests/fixtures/code-snippets/api/error-handling.ts +267 -0
- package/tests/fixtures/code-snippets/api/rest-controller.ts +303 -0
- package/tests/fixtures/code-snippets/auth/jwt-auth.ts +213 -0
- package/tests/fixtures/code-snippets/auth/oauth-flow.ts +245 -0
- package/tests/fixtures/code-snippets/database/repository-pattern.ts +272 -0
- package/tests/fixtures/corpus/VERSION.md +25 -0
- package/tests/fixtures/corpus/articles/jwt-authentication.md +97 -0
- package/tests/fixtures/corpus/articles/react-hooks-patterns.md +127 -0
- package/tests/fixtures/corpus/articles/typescript-generics.md +111 -0
- package/tests/fixtures/corpus/documentation/express-middleware.md +71 -0
- package/tests/fixtures/corpus/documentation/express-routing.md +83 -0
- package/tests/fixtures/corpus/documentation/node-streams.md +78 -0
- package/tests/fixtures/corpus/oss-repos/express/History.md +3871 -0
- package/tests/fixtures/corpus/oss-repos/express/LICENSE +24 -0
- package/tests/fixtures/corpus/oss-repos/express/Readme.md +276 -0
- package/tests/fixtures/corpus/oss-repos/express/SECURITY.md +56 -0
- package/tests/fixtures/corpus/oss-repos/express/benchmarks/Makefile +17 -0
- package/tests/fixtures/corpus/oss-repos/express/benchmarks/README.md +34 -0
- package/tests/fixtures/corpus/oss-repos/express/benchmarks/middleware.js +20 -0
- package/tests/fixtures/corpus/oss-repos/express/benchmarks/run +18 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/README.md +29 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/auth/index.js +134 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/foot.ejs +2 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/head.ejs +20 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/login.ejs +21 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/db.js +9 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/index.js +46 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/users.js +19 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/cookie-sessions/index.js +25 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/cookies/index.js +53 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/CCTV/345/244/247/350/265/233/344/270/212/346/265/267/345/210/206/350/265/233/345/214/272.txt +2 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/amazing.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/notes/groceries.txt +3 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/downloads/index.js +40 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/index.js +57 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/public/stylesheets/style.css +4 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/footer.html +2 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/header.html +9 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/users.html +10 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error/index.js +53 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/index.js +103 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/404.ejs +3 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/500.ejs +8 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/error_header.ejs +10 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/footer.ejs +2 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/index.ejs +20 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/hello-world/index.js +15 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/markdown/index.js +44 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/markdown/views/index.md +4 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/controllers/api_v1.js +15 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/controllers/api_v2.js +15 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/index.js +18 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/main/index.js +5 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/index.js +31 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/views/edit.ejs +17 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/views/show.ejs +15 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/index.js +41 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/edit.hbs +27 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/list.hbs +18 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/show.hbs +31 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user-pet/index.js +22 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/db.js +16 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/index.js +95 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/lib/boot.js +83 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/public/style.css +14 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/views/404.ejs +13 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/views/5xx.ejs +13 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/online/index.js +61 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/params/index.js +74 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/resource/index.js +95 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-map/index.js +75 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-middleware/index.js +90 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/index.js +55 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/post.js +13 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/public/style.css +24 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/site.js +5 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/user.js +47 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/footer.ejs +2 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/header.ejs +9 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/index.ejs +10 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/posts/index.ejs +12 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/edit.ejs +23 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/index.ejs +14 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/view.ejs +9 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/search/index.js +61 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/search/public/client.js +15 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/search/public/index.html +21 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/session/index.js +37 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/session/redis.js +39 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/static-files/index.js +43 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/css/style.css +3 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/hello.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/js/app.js +1 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/vhost/index.js +53 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/view-constructor/github-view.js +53 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/view-constructor/index.js +48 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/index.js +155 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/user.js +36 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/views/index.ejs +20 -0
- package/tests/fixtures/corpus/oss-repos/express/examples/web-service/index.js +117 -0
- package/tests/fixtures/corpus/oss-repos/express/index.js +11 -0
- package/tests/fixtures/corpus/oss-repos/express/lib/application.js +631 -0
- package/tests/fixtures/corpus/oss-repos/express/lib/express.js +81 -0
- package/tests/fixtures/corpus/oss-repos/express/lib/request.js +514 -0
- package/tests/fixtures/corpus/oss-repos/express/lib/response.js +1053 -0
- package/tests/fixtures/corpus/oss-repos/express/lib/utils.js +271 -0
- package/tests/fixtures/corpus/oss-repos/express/lib/view.js +205 -0
- package/tests/fixtures/corpus/oss-repos/express/package.json +99 -0
- package/tests/fixtures/corpus/oss-repos/express/test/Route.js +274 -0
- package/tests/fixtures/corpus/oss-repos/express/test/Router.js +636 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/auth.js +117 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/content-negotiation.js +49 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/cookie-sessions.js +38 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/cookies.js +71 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/downloads.js +47 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/ejs.js +17 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/error-pages.js +99 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/error.js +29 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/hello-world.js +21 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/markdown.js +21 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/multi-router.js +44 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/mvc.js +132 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/params.js +44 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/resource.js +68 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/route-map.js +45 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/route-separation.js +97 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/vhost.js +46 -0
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/web-service.js +105 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.all.js +38 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.engine.js +83 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.head.js +66 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.js +120 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.listen.js +55 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.locals.js +26 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.options.js +116 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.param.js +323 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.render.js +374 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.request.js +143 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.response.js +143 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.route.js +197 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.router.js +1217 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.routes.error.js +62 -0
- package/tests/fixtures/corpus/oss-repos/express/test/app.use.js +542 -0
- package/tests/fixtures/corpus/oss-repos/express/test/config.js +207 -0
- package/tests/fixtures/corpus/oss-repos/express/test/exports.js +82 -0
- package/tests/fixtures/corpus/oss-repos/express/test/express.json.js +755 -0
- package/tests/fixtures/corpus/oss-repos/express/test/express.raw.js +513 -0
- package/tests/fixtures/corpus/oss-repos/express/test/express.static.js +815 -0
- package/tests/fixtures/corpus/oss-repos/express/test/express.text.js +566 -0
- package/tests/fixtures/corpus/oss-repos/express/test/express.urlencoded.js +828 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/% of dogs.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/.name +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/blog/index.html +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/blog/post/index.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/broken.send +0 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/default_layout/name.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/default_layout/user.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/email.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/empty.txt +0 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/local_layout/user.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/name.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/name.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/nums.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/pets/names.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/snow /342/230/203/.gitkeep +0 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/todo.html +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/todo.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/user.html +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/user.tmpl +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/users/index.html +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/users/tobi.txt +1 -0
- package/tests/fixtures/corpus/oss-repos/express/test/middleware.basic.js +42 -0
- package/tests/fixtures/corpus/oss-repos/express/test/regression.js +20 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.accepts.js +125 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsCharsets.js +50 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsEncodings.js +39 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsLanguages.js +57 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.baseUrl.js +88 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.fresh.js +70 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.get.js +60 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.host.js +156 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.hostname.js +188 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.ip.js +113 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.ips.js +71 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.is.js +169 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.path.js +20 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.protocol.js +113 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.query.js +106 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.range.js +104 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.route.js +28 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.secure.js +101 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.signedCookies.js +37 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.stale.js +50 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.subdomains.js +173 -0
- package/tests/fixtures/corpus/oss-repos/express/test/req.xhr.js +42 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.append.js +116 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.attachment.js +79 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.clearCookie.js +62 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.cookie.js +295 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.download.js +487 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.format.js +248 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.get.js +21 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.json.js +186 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.jsonp.js +344 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.links.js +65 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.locals.js +40 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.location.js +316 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.redirect.js +214 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.render.js +367 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.send.js +569 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.sendFile.js +913 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.sendStatus.js +44 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.set.js +124 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.status.js +206 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.type.js +46 -0
- package/tests/fixtures/corpus/oss-repos/express/test/res.vary.js +90 -0
- package/tests/fixtures/corpus/oss-repos/express/test/support/env.js +3 -0
- package/tests/fixtures/corpus/oss-repos/express/test/support/tmpl.js +36 -0
- package/tests/fixtures/corpus/oss-repos/express/test/support/utils.js +86 -0
- package/tests/fixtures/corpus/oss-repos/express/test/utils.js +83 -0
- package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/Dockerfile +11 -0
- package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/devcontainer.json +21 -0
- package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/docker-compose.yml +18 -0
- package/tests/fixtures/corpus/oss-repos/hono/.eslintignore +1 -0
- package/tests/fixtures/corpus/oss-repos/hono/.eslintrc.cjs +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/.gitpod.yml +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/.prettierrc +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/jsx-runtime-default.ts +15 -0
- package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/jsx-runtime-dom.ts +15 -0
- package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/setup-vitest.ts +47 -0
- package/tests/fixtures/corpus/oss-repos/hono/LICENSE +21 -0
- package/tests/fixtures/corpus/oss-repos/hono/README.md +91 -0
- package/tests/fixtures/corpus/oss-repos/hono/build.ts +80 -0
- package/tests/fixtures/corpus/oss-repos/hono/bun.lockb +0 -0
- package/tests/fixtures/corpus/oss-repos/hono/bunfig.toml +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/codecov.yml +13 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/CODE_OF_CONDUCT.md +128 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/CONTRIBUTING.md +62 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/MIGRATION.md +295 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-logo.png +0 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-logo.pxm +0 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-logo.svg +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-title.png +0 -0
- package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-title.pxm +0 -0
- package/tests/fixtures/corpus/oss-repos/hono/jsr.json +119 -0
- package/tests/fixtures/corpus/oss-repos/hono/package.cjs.json +3 -0
- package/tests/fixtures/corpus/oss-repos/hono/package.json +650 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/handler.ts +492 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/index.ts +13 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/types.ts +144 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/conninfo.ts +28 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/index.ts +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/serve-static.ts +35 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/server.ts +30 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/ssg.ts +27 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/websocket.ts +110 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-pages/handler.ts +120 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-pages/index.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/conninfo.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/index.ts +8 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/serve-static-module.ts +12 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/serve-static.ts +39 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/utils.ts +50 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/websocket.ts +50 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/conninfo.ts +17 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/deno.d.ts +28 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/index.ts +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/serve-static.ts +40 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/ssg.ts +27 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/websocket.ts +51 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/conninfo.ts +15 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/handler.ts +189 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/index.ts +14 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/handler.ts +10 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/mod.ts +1 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/handler.ts +34 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/index.ts +5 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/types.ts +14 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/conninfo.ts +8 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/handler.ts +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/index.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/client/client.ts +214 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/client/index.ts +14 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/client/types.ts +180 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/client/utils.ts +54 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/compose.ts +94 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/context.ts +914 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/accepts/accepts.ts +81 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/accepts/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/adapter/index.ts +85 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/conninfo/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/conninfo/types.ts +45 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/cookie/index.ts +130 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/css/common.ts +243 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/css/index.ts +220 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/dev/index.ts +79 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/factory/index.ts +246 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/html/index.ts +56 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/index.ts +13 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/middleware.ts +79 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/ssg.ts +388 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/utils.ts +71 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/index.ts +9 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/sse.ts +89 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/stream.ts +36 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/text.ts +15 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/testing/index.ts +26 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/websocket/index.ts +57 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/hono-base.ts +523 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/hono.ts +34 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/http-exception.ts +78 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/index.ts +51 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/base.ts +419 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/children.ts +20 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/components.ts +195 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/constants.ts +5 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/context.ts +50 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/client.ts +89 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/components.ts +39 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/context.ts +52 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/css.ts +246 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/hooks/index.ts +91 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/index.ts +159 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/intrinsic-element/components.ts +398 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/jsx-dev-runtime.ts +22 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/jsx-runtime.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/render.ts +772 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/server.ts +70 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/utils.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/hooks/index.ts +426 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/index.ts +114 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-element/common.ts +11 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-element/components.ts +196 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-elements.ts +924 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/jsx-dev-runtime.ts +26 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/jsx-runtime.ts +18 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/streaming.ts +184 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/types.ts +41 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/utils.ts +36 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/basic-auth/index.ts +128 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/bearer-auth/index.ts +159 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/body-limit/index.ts +115 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/cache/index.ts +127 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/combine/index.ts +153 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/compress/index.ts +79 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/context-storage/index.ts +55 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/cors/index.ts +141 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/csrf/index.ts +90 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/etag/index.ts +88 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/ip-restriction/index.ts +178 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jsx-renderer/index.ts +158 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jwt/index.ts +8 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jwt/jwt.ts +159 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/logger/index.ts +93 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/method-override/index.ts +146 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/powered-by/index.ts +13 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/pretty-json/index.ts +50 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/request-id/index.ts +8 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/request-id/request-id.ts +59 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/index.ts +8 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/permissions-policy.ts +86 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/secure-headers.ts +319 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/serve-static/index.ts +140 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timeout/index.ts +58 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timing/index.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timing/timing.ts +225 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/trailing-slash/index.ts +71 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/preset/quick.ts +24 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/preset/tiny.ts +20 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/request.ts +403 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/linear-router/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/linear-router/router.ts +132 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/pattern-router/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/pattern-router/router.ts +54 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/node.ts +159 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/router.ts +274 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/trie.ts +74 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/smart-router/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/smart-router/router.ts +69 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/index.ts +6 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/node.ts +205 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/router.ts +28 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/router.ts +103 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/types.ts +2009 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/basic-auth.ts +26 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/body.ts +225 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/buffer.ts +65 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/color.ts +26 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/concurrent.ts +55 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/cookie.ts +230 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/crypto.ts +65 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/encode.ts +34 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/filepath.ts +56 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/handler.ts +15 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/html.ts +182 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/http-status.ts +69 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/ipaddr.ts +113 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/index.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jwa.ts +23 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jws.ts +226 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jwt.ts +114 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/types.ts +83 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/utf8.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/mime.ts +142 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/stream.ts +96 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/types.ts +105 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/url.ts +310 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/validator/index.ts +7 -0
- package/tests/fixtures/corpus/oss-repos/hono/src/validator/validator.ts +151 -0
- package/tests/fixtures/corpus/oss-repos/hono/tsconfig.build.json +23 -0
- package/tests/fixtures/corpus/oss-repos/hono/tsconfig.json +28 -0
- package/tests/fixtures/corpus/oss-repos/hono/vitest.config.ts +34 -0
- package/tests/fixtures/corpus/oss-repos/hono/yarn.lock +6232 -0
- package/tests/fixtures/documentation/api-reference.md +412 -0
- package/tests/fixtures/documentation/architecture.md +214 -0
- package/tests/fixtures/documentation/deployment-guide.md +420 -0
- package/tests/fixtures/github-readmes/express.md +133 -0
- package/tests/fixtures/github-readmes/nextjs.md +106 -0
- package/tests/fixtures/github-readmes/react.md +74 -0
- package/tests/fixtures/github-readmes/typescript.md +93 -0
- package/tests/fixtures/github-readmes/vite.md +79 -0
- package/tests/fixtures/queries/core.json +125 -0
- package/tests/fixtures/queries/extended.json +427 -0
- package/tests/fixtures/queries/generated/.gitkeep +0 -0
- package/tests/fixtures/test-server.ts +267 -0
- package/tests/helpers/performance-metrics.ts +387 -0
- package/tests/helpers/search-relevance.ts +381 -0
- package/tests/integration/cli-consistency.test.ts +299 -0
- package/tests/integration/cli.test.ts +69 -0
- package/tests/integration/e2e-workflow.test.ts +612 -0
- package/tests/integration/python-bridge.test.ts +183 -0
- package/tests/integration/search-quality.test.ts +718 -0
- package/tests/integration/stress.test.ts +326 -0
- package/tests/mcp/server.test.ts +15 -0
- package/tests/scripts/schemas/evaluation.json +44 -0
- package/tests/scripts/schemas/query-generation.json +21 -0
- package/tests/services/code-unit.service.test.ts +47 -0
- package/tests/services/search.progressive-context.test.ts +35 -0
- package/tsconfig.json +34 -0
- package/tsup.config.ts +15 -0
- package/turndown-plugin-gfm.d.ts +29 -0
- package/vitest.config.ts +79 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
|
2
|
+
import { execSync } from 'node:child_process';
|
|
3
|
+
import { rm, mkdtemp, writeFile, mkdir } from 'node:fs/promises';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* CLI Integration Tests
|
|
9
|
+
*
|
|
10
|
+
* Tests the CLI commands work correctly when run as subprocesses.
|
|
11
|
+
* The CLI now properly cleans up resources via destroyServices() which
|
|
12
|
+
* stops the PythonBridge subprocess, allowing commands to exit cleanly.
|
|
13
|
+
*/
|
|
14
|
+
describe('CLI Integration', () => {
|
|
15
|
+
let tempDir: string;
|
|
16
|
+
let testFilesDir: string;
|
|
17
|
+
|
|
18
|
+
beforeAll(async () => {
|
|
19
|
+
tempDir = await mkdtemp(join(tmpdir(), 'cli-test-'));
|
|
20
|
+
testFilesDir = join(tempDir, 'files');
|
|
21
|
+
await mkdir(testFilesDir, { recursive: true });
|
|
22
|
+
await writeFile(
|
|
23
|
+
join(testFilesDir, 'test.md'),
|
|
24
|
+
'# Test Document\n\nThis is content about TypeScript and JavaScript programming.'
|
|
25
|
+
);
|
|
26
|
+
}, 30000);
|
|
27
|
+
|
|
28
|
+
afterAll(async () => {
|
|
29
|
+
await rm(tempDir, { recursive: true, force: true });
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
const cli = (args: string): string => {
|
|
33
|
+
return execSync(`node dist/index.js ${args} --data-dir "${tempDir}"`, {
|
|
34
|
+
encoding: 'utf-8',
|
|
35
|
+
timeout: 120000,
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
it('shows help', () => {
|
|
40
|
+
const output = cli('--help');
|
|
41
|
+
expect(output).toContain('CLI tool for managing knowledge stores');
|
|
42
|
+
expect(output).toContain('search');
|
|
43
|
+
expect(output).toContain('index');
|
|
44
|
+
}, 30000);
|
|
45
|
+
|
|
46
|
+
it('creates and lists stores', () => {
|
|
47
|
+
cli(`store create test-store --type file --source "${testFilesDir}"`);
|
|
48
|
+
const listOutput = cli('store list');
|
|
49
|
+
expect(listOutput).toContain('test-store');
|
|
50
|
+
}, 30000);
|
|
51
|
+
|
|
52
|
+
it('shows store info', () => {
|
|
53
|
+
const output = cli('store info test-store');
|
|
54
|
+
expect(output).toContain('test-store');
|
|
55
|
+
expect(output).toContain('file');
|
|
56
|
+
}, 30000);
|
|
57
|
+
|
|
58
|
+
it('indexes a store', () => {
|
|
59
|
+
const output = cli('index test-store');
|
|
60
|
+
expect(output).toContain('Indexed');
|
|
61
|
+
expect(output).toContain('documents');
|
|
62
|
+
}, 120000);
|
|
63
|
+
|
|
64
|
+
it('searches indexed content', () => {
|
|
65
|
+
const output = cli('search "TypeScript programming"');
|
|
66
|
+
expect(output).toContain('Search:');
|
|
67
|
+
expect(output).toContain('Results:');
|
|
68
|
+
}, 60000);
|
|
69
|
+
});
|
|
@@ -0,0 +1,612 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* E2E Workflow Integration Tests
|
|
3
|
+
*
|
|
4
|
+
* Tests full end-to-end workflows using minimal test data:
|
|
5
|
+
* - Create stores from fixtures
|
|
6
|
+
* - Index documents
|
|
7
|
+
* - Search and verify results
|
|
8
|
+
* - Export/import workflows
|
|
9
|
+
*
|
|
10
|
+
* REWRITTEN: Now uses service APIs directly instead of CLI to avoid hanging issues.
|
|
11
|
+
* Uses minimal inline fixtures instead of complex fixture loader to keep tests fast.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
|
15
|
+
import { rm, mkdtemp, mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
16
|
+
import { tmpdir } from 'node:os';
|
|
17
|
+
import { join } from 'node:path';
|
|
18
|
+
import { assertHasMatch, CommonKeywords } from '../helpers/search-relevance';
|
|
19
|
+
import { measure } from '../helpers/performance-metrics';
|
|
20
|
+
import { StoreService } from '../../src/services/store.service.js';
|
|
21
|
+
import { IndexService } from '../../src/services/index.service.js';
|
|
22
|
+
import { SearchService } from '../../src/services/search.service.js';
|
|
23
|
+
import { LanceStore } from '../../src/db/lance.js';
|
|
24
|
+
import { EmbeddingEngine } from '../../src/db/embeddings.js';
|
|
25
|
+
import type { SearchResult as APISearchResult } from '../../src/types/search.js';
|
|
26
|
+
import type { StoreId } from '../../src/types/brands.js';
|
|
27
|
+
import type { SearchResult as TestSearchResult } from '../helpers/search-relevance.js';
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Adapter to convert API SearchResult[] to test helper format.
|
|
31
|
+
*/
|
|
32
|
+
function adaptApiResults(apiResults: readonly APISearchResult[]): TestSearchResult[] {
|
|
33
|
+
return apiResults.map((result, index) => ({
|
|
34
|
+
rank: index + 1,
|
|
35
|
+
score: result.score,
|
|
36
|
+
source: result.metadata.path ?? result.metadata.url ?? 'unknown',
|
|
37
|
+
content: result.content,
|
|
38
|
+
}));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
describe('E2E Workflow Tests', () => {
|
|
42
|
+
let tempDir: string;
|
|
43
|
+
let fixturesWorkDir: string;
|
|
44
|
+
let storeService: StoreService;
|
|
45
|
+
let indexService: IndexService;
|
|
46
|
+
let searchService: SearchService;
|
|
47
|
+
let lanceStore: LanceStore;
|
|
48
|
+
let embeddingEngine: EmbeddingEngine;
|
|
49
|
+
|
|
50
|
+
// Store IDs shared across test suites
|
|
51
|
+
let readmeStoreId: StoreId;
|
|
52
|
+
let codeStoreId: StoreId;
|
|
53
|
+
let docsStoreId: StoreId;
|
|
54
|
+
|
|
55
|
+
beforeAll(async () => {
|
|
56
|
+
tempDir = await mkdtemp(join(tmpdir(), 'e2e-workflow-test-'));
|
|
57
|
+
fixturesWorkDir = join(tempDir, 'fixtures');
|
|
58
|
+
await mkdir(fixturesWorkDir, { recursive: true });
|
|
59
|
+
|
|
60
|
+
// Initialize services
|
|
61
|
+
lanceStore = new LanceStore(tempDir);
|
|
62
|
+
embeddingEngine = new EmbeddingEngine();
|
|
63
|
+
await embeddingEngine.initialize();
|
|
64
|
+
|
|
65
|
+
storeService = new StoreService(tempDir);
|
|
66
|
+
await storeService.initialize();
|
|
67
|
+
|
|
68
|
+
indexService = new IndexService(lanceStore, embeddingEngine);
|
|
69
|
+
searchService = new SearchService(lanceStore, embeddingEngine);
|
|
70
|
+
}, 30000);
|
|
71
|
+
|
|
72
|
+
afterAll(async () => {
|
|
73
|
+
await rm(tempDir, { recursive: true, force: true });
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
describe('README Fixtures Workflow', () => {
|
|
77
|
+
let readmesDir: string;
|
|
78
|
+
|
|
79
|
+
beforeAll(async () => {
|
|
80
|
+
// Create minimal README fixtures
|
|
81
|
+
readmesDir = join(fixturesWorkDir, 'readmes');
|
|
82
|
+
await mkdir(readmesDir, { recursive: true });
|
|
83
|
+
|
|
84
|
+
// TypeScript README
|
|
85
|
+
await writeFile(
|
|
86
|
+
join(readmesDir, 'typescript-readme.md'),
|
|
87
|
+
`# TypeScript
|
|
88
|
+
|
|
89
|
+
TypeScript is a strongly typed programming language that builds on JavaScript.
|
|
90
|
+
|
|
91
|
+
## Features
|
|
92
|
+
|
|
93
|
+
- **Type Checking**: The TypeScript compiler performs static type checking
|
|
94
|
+
- **Modern JavaScript**: Supports latest ECMAScript features
|
|
95
|
+
- **Tooling**: Excellent IDE support with IntelliSense
|
|
96
|
+
|
|
97
|
+
## Getting Started
|
|
98
|
+
|
|
99
|
+
\`\`\`typescript
|
|
100
|
+
interface User {
|
|
101
|
+
name: string;
|
|
102
|
+
id: number;
|
|
103
|
+
}
|
|
104
|
+
\`\`\`
|
|
105
|
+
`
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
// React README
|
|
109
|
+
await writeFile(
|
|
110
|
+
join(readmesDir, 'react-readme.md'),
|
|
111
|
+
`# React
|
|
112
|
+
|
|
113
|
+
A JavaScript library for building user interfaces with declarative components.
|
|
114
|
+
|
|
115
|
+
## Core Concepts
|
|
116
|
+
|
|
117
|
+
- **Components**: Build encapsulated UI components
|
|
118
|
+
- **JSX**: Write declarative markup in JavaScript
|
|
119
|
+
- **Virtual DOM**: Efficient rendering and updates
|
|
120
|
+
|
|
121
|
+
## Example Component
|
|
122
|
+
|
|
123
|
+
\`\`\`jsx
|
|
124
|
+
function App() {
|
|
125
|
+
return <div>Hello React</div>;
|
|
126
|
+
}
|
|
127
|
+
\`\`\`
|
|
128
|
+
`
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
// Express README
|
|
132
|
+
await writeFile(
|
|
133
|
+
join(readmesDir, 'express-readme.md'),
|
|
134
|
+
`# Express
|
|
135
|
+
|
|
136
|
+
Fast, unopinionated web framework for Node.js with middleware and routing.
|
|
137
|
+
|
|
138
|
+
## Features
|
|
139
|
+
|
|
140
|
+
- **Middleware**: Composable request handling
|
|
141
|
+
- **Routing**: HTTP method routing
|
|
142
|
+
- **Server**: Simple HTTP server setup
|
|
143
|
+
|
|
144
|
+
## Quick Start
|
|
145
|
+
|
|
146
|
+
\`\`\`javascript
|
|
147
|
+
const app = express();
|
|
148
|
+
app.use(middleware);
|
|
149
|
+
app.listen(3000);
|
|
150
|
+
\`\`\`
|
|
151
|
+
`
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
// Create and index store
|
|
155
|
+
const storeResult = await storeService.create({
|
|
156
|
+
name: 'readme-store',
|
|
157
|
+
type: 'file',
|
|
158
|
+
path: readmesDir,
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
if (!storeResult.success) {
|
|
162
|
+
throw storeResult.error;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
readmeStoreId = storeResult.data.id;
|
|
166
|
+
await lanceStore.initialize(readmeStoreId);
|
|
167
|
+
|
|
168
|
+
const indexResult = await indexService.indexStore(storeResult.data);
|
|
169
|
+
if (!indexResult.success) {
|
|
170
|
+
throw indexResult.error;
|
|
171
|
+
}
|
|
172
|
+
}, 30000);
|
|
173
|
+
|
|
174
|
+
it('creates store from README fixtures', () => {
|
|
175
|
+
// Store created in beforeAll, just verify it exists
|
|
176
|
+
expect(readmeStoreId).toBeDefined();
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
it('indexes README documents', () => {
|
|
180
|
+
// Already indexed in beforeAll, just verify store exists
|
|
181
|
+
expect(readmeStoreId).toBeDefined();
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
it('searches for TypeScript content', async () => {
|
|
185
|
+
const response = await searchService.search({
|
|
186
|
+
query: 'TypeScript compiler type checking',
|
|
187
|
+
stores: [readmeStoreId],
|
|
188
|
+
});
|
|
189
|
+
const results = adaptApiResults(response.results);
|
|
190
|
+
|
|
191
|
+
expect(results.length).toBeGreaterThan(0);
|
|
192
|
+
assertHasMatch(results, {
|
|
193
|
+
keywords: CommonKeywords.TYPESCRIPT,
|
|
194
|
+
sourceContains: 'typescript',
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
it('searches for React content', async () => {
|
|
199
|
+
const response = await searchService.search({
|
|
200
|
+
query: 'React component declarative UI',
|
|
201
|
+
stores: [readmeStoreId],
|
|
202
|
+
});
|
|
203
|
+
const results = adaptApiResults(response.results);
|
|
204
|
+
|
|
205
|
+
expect(results.length).toBeGreaterThan(0);
|
|
206
|
+
assertHasMatch(results, {
|
|
207
|
+
keywords: CommonKeywords.REACT,
|
|
208
|
+
sourceContains: 'react',
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
it('searches for Express middleware routing', async () => {
|
|
213
|
+
const response = await searchService.search({
|
|
214
|
+
query: 'Express middleware routing HTTP server',
|
|
215
|
+
stores: [readmeStoreId],
|
|
216
|
+
});
|
|
217
|
+
const results = adaptApiResults(response.results);
|
|
218
|
+
|
|
219
|
+
expect(results.length).toBeGreaterThan(0);
|
|
220
|
+
assertHasMatch(results, {
|
|
221
|
+
keywords: ['express', 'middleware', 'routing', 'http'],
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
describe('Code Snippets Workflow', () => {
|
|
227
|
+
let codeDir: string;
|
|
228
|
+
|
|
229
|
+
beforeAll(async () => {
|
|
230
|
+
// Create minimal code fixtures
|
|
231
|
+
codeDir = join(fixturesWorkDir, 'code');
|
|
232
|
+
await mkdir(codeDir, { recursive: true });
|
|
233
|
+
|
|
234
|
+
// JWT authentication middleware
|
|
235
|
+
await writeFile(
|
|
236
|
+
join(codeDir, 'jwt-middleware.ts'),
|
|
237
|
+
`export function jwtAuthMiddleware(req: Request, res: Response, next: Next) {
|
|
238
|
+
const token = req.headers.authorization?.replace('Bearer ', '');
|
|
239
|
+
if (!token) {
|
|
240
|
+
return res.status(401).json({ error: 'Authentication required' });
|
|
241
|
+
}
|
|
242
|
+
try {
|
|
243
|
+
const payload = verifyToken(token);
|
|
244
|
+
req.user = payload;
|
|
245
|
+
next();
|
|
246
|
+
} catch (error) {
|
|
247
|
+
return res.status(403).json({ error: 'Invalid token' });
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
`
|
|
251
|
+
);
|
|
252
|
+
|
|
253
|
+
// OAuth PKCE flow
|
|
254
|
+
await writeFile(
|
|
255
|
+
join(codeDir, 'oauth-pkce.ts'),
|
|
256
|
+
`export class OAuthPKCEFlow {
|
|
257
|
+
async authorize(codeVerifier: string): Promise<string> {
|
|
258
|
+
const codeChallenge = this.generateChallenge(codeVerifier);
|
|
259
|
+
return await this.requestAuthorization(codeChallenge);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
async exchangeToken(code: string, codeVerifier: string): Promise<OAuthToken> {
|
|
263
|
+
// PKCE flow: exchange authorization code with code verifier
|
|
264
|
+
return await this.tokenEndpoint({ code, codeVerifier });
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
`
|
|
268
|
+
);
|
|
269
|
+
|
|
270
|
+
// API error handling
|
|
271
|
+
await writeFile(
|
|
272
|
+
join(codeDir, 'api-errors.ts'),
|
|
273
|
+
`export class APIErrorMiddleware {
|
|
274
|
+
handleException(error: Error, req: Request, res: Response) {
|
|
275
|
+
// Error handling middleware for API exceptions
|
|
276
|
+
if (error instanceof ValidationError) {
|
|
277
|
+
return res.status(400).json({ error: error.message });
|
|
278
|
+
}
|
|
279
|
+
return res.status(500).json({ error: 'Internal server error' });
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
`
|
|
283
|
+
);
|
|
284
|
+
|
|
285
|
+
// Repository pattern
|
|
286
|
+
await writeFile(
|
|
287
|
+
join(codeDir, 'repository.ts'),
|
|
288
|
+
`export class Repository<T> {
|
|
289
|
+
async create(data: T): Promise<T> {
|
|
290
|
+
// CRUD: Create operation with data access layer
|
|
291
|
+
return await this.db.insert(data);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
async findById(id: string): Promise<T | null> {
|
|
295
|
+
// Repository pattern for data access
|
|
296
|
+
return await this.db.query('SELECT * FROM table WHERE id = ?', [id]);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
`
|
|
300
|
+
);
|
|
301
|
+
|
|
302
|
+
// Create and index store
|
|
303
|
+
const storeResult = await storeService.create({
|
|
304
|
+
name: 'code-store',
|
|
305
|
+
type: 'file',
|
|
306
|
+
path: codeDir,
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
if (!storeResult.success) {
|
|
310
|
+
throw storeResult.error;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
codeStoreId = storeResult.data.id;
|
|
314
|
+
await lanceStore.initialize(codeStoreId);
|
|
315
|
+
|
|
316
|
+
const indexResult = await indexService.indexStore(storeResult.data);
|
|
317
|
+
if (!indexResult.success) {
|
|
318
|
+
throw indexResult.error;
|
|
319
|
+
}
|
|
320
|
+
}, 30000);
|
|
321
|
+
|
|
322
|
+
it('creates store from code snippets', () => {
|
|
323
|
+
// Store created in beforeAll, just verify it exists
|
|
324
|
+
expect(codeStoreId).toBeDefined();
|
|
325
|
+
});
|
|
326
|
+
|
|
327
|
+
it('indexes code documents', () => {
|
|
328
|
+
// Already indexed in beforeAll
|
|
329
|
+
expect(codeStoreId).toBeDefined();
|
|
330
|
+
});
|
|
331
|
+
|
|
332
|
+
it('finds authentication patterns', async () => {
|
|
333
|
+
const response = await searchService.search({
|
|
334
|
+
query: 'JWT token authentication middleware',
|
|
335
|
+
stores: [codeStoreId],
|
|
336
|
+
});
|
|
337
|
+
const results = adaptApiResults(response.results);
|
|
338
|
+
|
|
339
|
+
expect(results.length).toBeGreaterThan(0);
|
|
340
|
+
assertHasMatch(results, {
|
|
341
|
+
keywords: CommonKeywords.AUTHENTICATION,
|
|
342
|
+
});
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
it('finds OAuth implementation', async () => {
|
|
346
|
+
const response = await searchService.search({
|
|
347
|
+
query: 'OAuth PKCE authorization flow',
|
|
348
|
+
stores: [codeStoreId],
|
|
349
|
+
});
|
|
350
|
+
const results = adaptApiResults(response.results);
|
|
351
|
+
|
|
352
|
+
expect(results.length).toBeGreaterThan(0);
|
|
353
|
+
assertHasMatch(results, {
|
|
354
|
+
keywords: ['oauth', 'pkce', 'authorization', 'token'],
|
|
355
|
+
});
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
it('finds error handling patterns', async () => {
|
|
359
|
+
const response = await searchService.search({
|
|
360
|
+
query: 'API error handling middleware exceptions',
|
|
361
|
+
stores: [codeStoreId],
|
|
362
|
+
});
|
|
363
|
+
const results = adaptApiResults(response.results);
|
|
364
|
+
|
|
365
|
+
expect(results.length).toBeGreaterThan(0);
|
|
366
|
+
assertHasMatch(results, {
|
|
367
|
+
keywords: CommonKeywords.ERROR_HANDLING,
|
|
368
|
+
});
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
it('finds repository pattern implementation', async () => {
|
|
372
|
+
const response = await searchService.search({
|
|
373
|
+
query: 'repository pattern data access CRUD',
|
|
374
|
+
stores: [codeStoreId],
|
|
375
|
+
});
|
|
376
|
+
const results = adaptApiResults(response.results);
|
|
377
|
+
|
|
378
|
+
expect(results.length).toBeGreaterThan(0);
|
|
379
|
+
assertHasMatch(results, {
|
|
380
|
+
keywords: CommonKeywords.DATABASE,
|
|
381
|
+
});
|
|
382
|
+
});
|
|
383
|
+
});
|
|
384
|
+
|
|
385
|
+
describe('Documentation Workflow', () => {
|
|
386
|
+
let docsDir: string;
|
|
387
|
+
|
|
388
|
+
beforeAll(async () => {
|
|
389
|
+
// Create minimal documentation fixtures
|
|
390
|
+
docsDir = join(fixturesWorkDir, 'docs');
|
|
391
|
+
await mkdir(docsDir, { recursive: true });
|
|
392
|
+
|
|
393
|
+
// Architecture documentation
|
|
394
|
+
await writeFile(
|
|
395
|
+
join(docsDir, 'architecture.md'),
|
|
396
|
+
`# System Architecture
|
|
397
|
+
|
|
398
|
+
## Overview
|
|
399
|
+
|
|
400
|
+
The system architecture consists of multiple components with well-defined data flow.
|
|
401
|
+
|
|
402
|
+
## Core Components
|
|
403
|
+
|
|
404
|
+
- **Frontend**: React-based UI components
|
|
405
|
+
- **Backend**: Node.js API server
|
|
406
|
+
- **Database**: PostgreSQL data layer
|
|
407
|
+
- **Cache**: Redis for session storage
|
|
408
|
+
|
|
409
|
+
## Data Flow
|
|
410
|
+
|
|
411
|
+
1. User request → Frontend component
|
|
412
|
+
2. API call → Backend endpoint
|
|
413
|
+
3. Data processing → Database query
|
|
414
|
+
4. Response → Cache → Frontend
|
|
415
|
+
`
|
|
416
|
+
);
|
|
417
|
+
|
|
418
|
+
// API reference
|
|
419
|
+
await writeFile(
|
|
420
|
+
join(docsDir, 'api-reference.md'),
|
|
421
|
+
`# REST API Reference
|
|
422
|
+
|
|
423
|
+
## Authentication
|
|
424
|
+
|
|
425
|
+
All API endpoints require authentication using a Bearer token.
|
|
426
|
+
|
|
427
|
+
### Headers
|
|
428
|
+
|
|
429
|
+
\`\`\`
|
|
430
|
+
Authorization: Bearer <token>
|
|
431
|
+
\`\`\`
|
|
432
|
+
|
|
433
|
+
## Endpoints
|
|
434
|
+
|
|
435
|
+
### GET /api/users
|
|
436
|
+
Returns list of users with authentication.
|
|
437
|
+
|
|
438
|
+
### POST /api/auth/login
|
|
439
|
+
Endpoint for user authentication. Returns bearer token.
|
|
440
|
+
`
|
|
441
|
+
);
|
|
442
|
+
|
|
443
|
+
// Deployment guide
|
|
444
|
+
await writeFile(
|
|
445
|
+
join(docsDir, 'deployment.md'),
|
|
446
|
+
`# Deployment Guide
|
|
447
|
+
|
|
448
|
+
## Docker Deployment
|
|
449
|
+
|
|
450
|
+
Build and deploy the application using Docker containers.
|
|
451
|
+
|
|
452
|
+
\`\`\`bash
|
|
453
|
+
docker build -t myapp .
|
|
454
|
+
docker run -p 3000:3000 myapp
|
|
455
|
+
\`\`\`
|
|
456
|
+
|
|
457
|
+
## Kubernetes Production Deployment
|
|
458
|
+
|
|
459
|
+
Deploy to production Kubernetes cluster:
|
|
460
|
+
|
|
461
|
+
\`\`\`yaml
|
|
462
|
+
apiVersion: apps/v1
|
|
463
|
+
kind: Deployment
|
|
464
|
+
metadata:
|
|
465
|
+
name: myapp-production
|
|
466
|
+
\`\`\`
|
|
467
|
+
`
|
|
468
|
+
);
|
|
469
|
+
|
|
470
|
+
// Create and index store
|
|
471
|
+
const storeResult = await storeService.create({
|
|
472
|
+
name: 'docs-store',
|
|
473
|
+
type: 'file',
|
|
474
|
+
path: docsDir,
|
|
475
|
+
});
|
|
476
|
+
|
|
477
|
+
if (!storeResult.success) {
|
|
478
|
+
throw storeResult.error;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
docsStoreId = storeResult.data.id;
|
|
482
|
+
await lanceStore.initialize(docsStoreId);
|
|
483
|
+
|
|
484
|
+
const indexResult = await indexService.indexStore(storeResult.data);
|
|
485
|
+
if (!indexResult.success) {
|
|
486
|
+
throw indexResult.error;
|
|
487
|
+
}
|
|
488
|
+
}, 30000);
|
|
489
|
+
|
|
490
|
+
it('creates store from documentation', () => {
|
|
491
|
+
// Store created in beforeAll, just verify it exists
|
|
492
|
+
expect(docsStoreId).toBeDefined();
|
|
493
|
+
});
|
|
494
|
+
|
|
495
|
+
it('indexes documentation', () => {
|
|
496
|
+
// Already indexed in beforeAll
|
|
497
|
+
expect(docsStoreId).toBeDefined();
|
|
498
|
+
});
|
|
499
|
+
|
|
500
|
+
it('searches architecture documentation', async () => {
|
|
501
|
+
const response = await searchService.search({
|
|
502
|
+
query: 'system architecture components data flow',
|
|
503
|
+
stores: [docsStoreId],
|
|
504
|
+
});
|
|
505
|
+
const results = adaptApiResults(response.results);
|
|
506
|
+
|
|
507
|
+
expect(results.length).toBeGreaterThan(0);
|
|
508
|
+
assertHasMatch(results, {
|
|
509
|
+
keywords: ['architecture', 'component', 'data', 'flow'],
|
|
510
|
+
});
|
|
511
|
+
});
|
|
512
|
+
|
|
513
|
+
it('searches API reference', async () => {
|
|
514
|
+
const response = await searchService.search({
|
|
515
|
+
query: 'REST API endpoints authentication bearer token',
|
|
516
|
+
stores: [docsStoreId],
|
|
517
|
+
});
|
|
518
|
+
const results = adaptApiResults(response.results);
|
|
519
|
+
|
|
520
|
+
expect(results.length).toBeGreaterThan(0);
|
|
521
|
+
assertHasMatch(results, {
|
|
522
|
+
keywords: ['api', 'endpoint', 'authentication', 'bearer'],
|
|
523
|
+
});
|
|
524
|
+
});
|
|
525
|
+
|
|
526
|
+
it('searches deployment guide', async () => {
|
|
527
|
+
const response = await searchService.search({
|
|
528
|
+
query: 'Docker Kubernetes deployment production',
|
|
529
|
+
stores: [docsStoreId],
|
|
530
|
+
});
|
|
531
|
+
const results = adaptApiResults(response.results);
|
|
532
|
+
|
|
533
|
+
expect(results.length).toBeGreaterThan(0);
|
|
534
|
+
assertHasMatch(results, {
|
|
535
|
+
keywords: ['docker', 'kubernetes', 'deployment', 'production'],
|
|
536
|
+
});
|
|
537
|
+
});
|
|
538
|
+
});
|
|
539
|
+
|
|
540
|
+
describe('Multi-Store Search', () => {
|
|
541
|
+
it('searches across all stores', async () => {
|
|
542
|
+
// Search across all stores (don't specify stores parameter)
|
|
543
|
+
const response = await searchService.search({
|
|
544
|
+
query: 'authentication token security',
|
|
545
|
+
stores: [readmeStoreId, codeStoreId, docsStoreId],
|
|
546
|
+
});
|
|
547
|
+
const results = adaptApiResults(response.results);
|
|
548
|
+
|
|
549
|
+
// Should find results from multiple stores
|
|
550
|
+
expect(results.length).toBeGreaterThan(0);
|
|
551
|
+
});
|
|
552
|
+
|
|
553
|
+
it('finds related content across different stores', async () => {
|
|
554
|
+
const response = await searchService.search({
|
|
555
|
+
query: 'middleware request handling',
|
|
556
|
+
stores: [readmeStoreId, codeStoreId],
|
|
557
|
+
});
|
|
558
|
+
const results = adaptApiResults(response.results);
|
|
559
|
+
|
|
560
|
+
// Should find content from both code and readme stores
|
|
561
|
+
expect(results.length).toBeGreaterThan(0);
|
|
562
|
+
assertHasMatch(results, {
|
|
563
|
+
keywords: ['middleware', 'request'],
|
|
564
|
+
});
|
|
565
|
+
});
|
|
566
|
+
});
|
|
567
|
+
|
|
568
|
+
describe('Workflow Performance', () => {
|
|
569
|
+
it('completes full workflow within acceptable time', async () => {
|
|
570
|
+
const workflowDir = join(fixturesWorkDir, 'perf-test');
|
|
571
|
+
await mkdir(workflowDir, { recursive: true });
|
|
572
|
+
|
|
573
|
+
// Create a small test file
|
|
574
|
+
await writeFile(
|
|
575
|
+
join(workflowDir, 'test.md'),
|
|
576
|
+
'# Performance Test\n\nThis document tests workflow performance.\n\n## Section 1\n\nContent for testing indexing and search speed.'
|
|
577
|
+
);
|
|
578
|
+
|
|
579
|
+
// Measure store creation
|
|
580
|
+
const createResult = await measure('create-store', async () => {
|
|
581
|
+
const result = await storeService.create({
|
|
582
|
+
name: 'perf-store',
|
|
583
|
+
type: 'file',
|
|
584
|
+
path: workflowDir,
|
|
585
|
+
});
|
|
586
|
+
if (!result.success) throw result.error;
|
|
587
|
+
return result.data;
|
|
588
|
+
});
|
|
589
|
+
expect(createResult.measurement.duration).toBeLessThan(5000);
|
|
590
|
+
|
|
591
|
+
const perfStoreId = createResult.result.id;
|
|
592
|
+
await lanceStore.initialize(perfStoreId);
|
|
593
|
+
|
|
594
|
+
// Measure indexing
|
|
595
|
+
const indexResult = await measure('index-store', async () => {
|
|
596
|
+
const result = await indexService.indexStore(createResult.result);
|
|
597
|
+
if (!result.success) throw result.error;
|
|
598
|
+
return result.data;
|
|
599
|
+
});
|
|
600
|
+
expect(indexResult.measurement.duration).toBeLessThan(30000);
|
|
601
|
+
|
|
602
|
+
// Measure search
|
|
603
|
+
const searchResult = await measure('search', async () => {
|
|
604
|
+
return await searchService.search({
|
|
605
|
+
query: 'performance testing',
|
|
606
|
+
stores: [perfStoreId],
|
|
607
|
+
});
|
|
608
|
+
});
|
|
609
|
+
expect(searchResult.measurement.duration).toBeLessThan(5000);
|
|
610
|
+
}, 60000);
|
|
611
|
+
});
|
|
612
|
+
});
|