bluera-knowledge 0.14.0 → 0.14.2
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-plugin/plugin.json +1 -1
- package/CHANGELOG.md +14 -0
- package/dist/{chunk-AIS5S77C.js → chunk-X7E4RYJE.js} +51 -9
- package/dist/{chunk-AIS5S77C.js.map → chunk-X7E4RYJE.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/workers/background-worker-cli.js +1 -1
- package/package.json +12 -1
- package/.claude/commands/code-review.md +0 -15
- package/.claude/commands/commit.md +0 -34
- package/.claude/council-cache/1a43ed5977b8f29afc79a9bf5c4082ee5ad8338c42ab991a4241a48f80c1e46d.json +0 -7
- package/.claude/hooks/post-edit-check.sh +0 -40
- package/.claude/rules/code-quality.md +0 -12
- package/.claude/rules/git.md +0 -5
- package/.claude/rules/versioning.md +0 -7
- package/.claude/settings.local.json.example +0 -45
- package/.claude/skills/atomic-commits/SKILL.md +0 -61
- package/.claude/skills/code-review-repo/skill.md +0 -62
- package/.editorconfig +0 -15
- package/.env.example +0 -21
- package/.github/workflows/auto-release.yml +0 -64
- package/.github/workflows/ci.yml +0 -168
- package/.github/workflows/release.yml +0 -74
- package/.github/workflows/update-marketplace.yml +0 -96
- package/.husky/pre-commit +0 -48
- package/.husky/pre-push +0 -39
- package/.mcp.json +0 -11
- package/.prettierrc +0 -9
- package/.versionrc.json +0 -24
- package/CLAUDE.md +0 -110
- package/CONTRIBUTING.md +0 -307
- package/NOTICE +0 -47
- package/SECURITY.md +0 -65
- package/bun.lock +0 -2036
- package/docs/claude-code-best-practices.md +0 -458
- package/docs/cli.md +0 -170
- package/docs/commands.md +0 -392
- package/docs/crawler-architecture.md +0 -89
- package/docs/mcp-integration.md +0 -130
- package/docs/token-efficiency.md +0 -91
- package/eslint-rules/require-skip-comment.js +0 -81
- package/eslint.config.js +0 -103
- package/knip.json +0 -43
- package/scripts/test-mcp-dev.js +0 -260
- package/scripts/validate-npm-release.sh +0 -314
- package/src/analysis/adapter-registry.test.ts +0 -211
- package/src/analysis/adapter-registry.ts +0 -155
- package/src/analysis/ast-parser.test.ts +0 -470
- package/src/analysis/ast-parser.ts +0 -198
- package/src/analysis/code-graph.test.ts +0 -718
- package/src/analysis/code-graph.ts +0 -249
- package/src/analysis/dependency-usage-analyzer.test.ts +0 -619
- package/src/analysis/dependency-usage-analyzer.ts +0 -433
- package/src/analysis/go-ast-parser.test.ts +0 -531
- package/src/analysis/go-ast-parser.ts +0 -471
- package/src/analysis/language-adapter.ts +0 -127
- package/src/analysis/parser-factory.test.ts +0 -210
- package/src/analysis/parser-factory.ts +0 -52
- package/src/analysis/python-ast-parser.test.ts +0 -210
- package/src/analysis/python-ast-parser.ts +0 -34
- package/src/analysis/repo-url-resolver.test.ts +0 -533
- package/src/analysis/repo-url-resolver.ts +0 -233
- package/src/analysis/rust-ast-parser.test.ts +0 -568
- package/src/analysis/rust-ast-parser.ts +0 -467
- package/src/analysis/tree-sitter-parser.test.ts +0 -297
- package/src/analysis/tree-sitter-parser.ts +0 -217
- package/src/analysis/zil/index.ts +0 -34
- package/src/analysis/zil/zil-adapter.test.ts +0 -187
- package/src/analysis/zil/zil-adapter.ts +0 -121
- package/src/analysis/zil/zil-lexer.test.ts +0 -222
- package/src/analysis/zil/zil-lexer.ts +0 -239
- package/src/analysis/zil/zil-parser.test.ts +0 -210
- package/src/analysis/zil/zil-parser.ts +0 -360
- package/src/analysis/zil/zil-special-forms.ts +0 -193
- package/src/cli/commands/crawl.test.ts +0 -1086
- package/src/cli/commands/crawl.ts +0 -220
- package/src/cli/commands/index-cmd.test.ts +0 -733
- package/src/cli/commands/index-cmd.ts +0 -128
- package/src/cli/commands/mcp.test.ts +0 -218
- package/src/cli/commands/mcp.ts +0 -18
- package/src/cli/commands/plugin-api.test.ts +0 -373
- package/src/cli/commands/plugin-api.ts +0 -82
- package/src/cli/commands/search.test.ts +0 -1047
- package/src/cli/commands/search.ts +0 -197
- package/src/cli/commands/serve.test.ts +0 -371
- package/src/cli/commands/serve.ts +0 -43
- package/src/cli/commands/setup.test.ts +0 -895
- package/src/cli/commands/setup.ts +0 -176
- package/src/cli/commands/store.test.ts +0 -1370
- package/src/cli/commands/store.ts +0 -229
- package/src/cli/commands/sync.test.ts +0 -54
- package/src/cli/commands/sync.ts +0 -313
- package/src/cli/index.ts +0 -8
- package/src/cli/program.ts +0 -59
- package/src/crawl/article-converter.test.ts +0 -576
- package/src/crawl/article-converter.ts +0 -142
- package/src/crawl/bridge.test.ts +0 -796
- package/src/crawl/bridge.ts +0 -349
- package/src/crawl/claude-client.test.ts +0 -902
- package/src/crawl/claude-client.ts +0 -261
- package/src/crawl/intelligent-crawler.test.ts +0 -1028
- package/src/crawl/intelligent-crawler.ts +0 -478
- package/src/crawl/markdown-utils.test.ts +0 -703
- package/src/crawl/markdown-utils.ts +0 -225
- package/src/crawl/schemas.ts +0 -114
- package/src/db/embeddings.test.ts +0 -79
- package/src/db/embeddings.ts +0 -78
- package/src/db/index.ts +0 -2
- package/src/db/lance.test.ts +0 -479
- package/src/db/lance.ts +0 -190
- package/src/defaults/repos.ts +0 -67
- package/src/index.ts +0 -124
- package/src/logging/index.ts +0 -25
- package/src/logging/logger.test.ts +0 -75
- package/src/logging/logger.ts +0 -145
- package/src/logging/payload.test.ts +0 -152
- package/src/logging/payload.ts +0 -119
- package/src/mcp/cache.test.ts +0 -202
- package/src/mcp/cache.ts +0 -103
- package/src/mcp/commands/index.ts +0 -24
- package/src/mcp/commands/job.commands.ts +0 -48
- package/src/mcp/commands/meta.commands.ts +0 -54
- package/src/mcp/commands/registry.ts +0 -180
- package/src/mcp/commands/store.commands.ts +0 -75
- package/src/mcp/commands/sync.commands.test.ts +0 -371
- package/src/mcp/commands/sync.commands.ts +0 -263
- package/src/mcp/commands/uninstall.commands.test.ts +0 -37
- package/src/mcp/commands/uninstall.commands.ts +0 -29
- package/src/mcp/handlers/execute.handler.test.ts +0 -179
- package/src/mcp/handlers/execute.handler.ts +0 -23
- package/src/mcp/handlers/index.ts +0 -39
- package/src/mcp/handlers/job.handler.test.ts +0 -189
- package/src/mcp/handlers/job.handler.ts +0 -118
- package/src/mcp/handlers/search.handler.test.ts +0 -324
- package/src/mcp/handlers/search.handler.ts +0 -287
- package/src/mcp/handlers/store.handler.test.ts +0 -408
- package/src/mcp/handlers/store.handler.ts +0 -318
- package/src/mcp/handlers/uninstall.handler.test.ts +0 -194
- package/src/mcp/handlers/uninstall.handler.ts +0 -142
- package/src/mcp/plugin-mcp-config.test.ts +0 -71
- package/src/mcp/schemas/index.test.ts +0 -356
- package/src/mcp/schemas/index.ts +0 -155
- package/src/mcp/server.test.ts +0 -91
- package/src/mcp/server.ts +0 -235
- package/src/mcp/types.ts +0 -41
- package/src/plugin/commands.test.ts +0 -925
- package/src/plugin/commands.ts +0 -311
- package/src/plugin/dependency-analyzer.test.ts +0 -380
- package/src/plugin/dependency-analyzer.ts +0 -210
- package/src/plugin/git-clone.test.ts +0 -387
- package/src/plugin/git-clone.ts +0 -57
- package/src/scripts/validate-npm-release.test.ts +0 -70
- package/src/server/app.test.ts +0 -752
- package/src/server/app.ts +0 -128
- package/src/server/index.test.ts +0 -475
- package/src/server/index.ts +0 -1
- package/src/services/chunking.service.test.ts +0 -363
- package/src/services/chunking.service.ts +0 -380
- package/src/services/code-graph.service.test.ts +0 -298
- package/src/services/code-graph.service.ts +0 -326
- package/src/services/code-unit.service.test.ts +0 -693
- package/src/services/code-unit.service.ts +0 -234
- package/src/services/config.service.test.ts +0 -146
- package/src/services/config.service.ts +0 -92
- package/src/services/gitignore.service.test.ts +0 -157
- package/src/services/gitignore.service.ts +0 -132
- package/src/services/index.service.test.ts +0 -2301
- package/src/services/index.service.ts +0 -442
- package/src/services/index.ts +0 -119
- package/src/services/job.service.test.ts +0 -531
- package/src/services/job.service.ts +0 -298
- package/src/services/project-root.service.test.ts +0 -504
- package/src/services/project-root.service.ts +0 -112
- package/src/services/search.service.test.ts +0 -2263
- package/src/services/search.service.ts +0 -1341
- package/src/services/services.test.ts +0 -108
- package/src/services/snippet.service.test.ts +0 -213
- package/src/services/snippet.service.ts +0 -193
- package/src/services/store-definition.service.test.ts +0 -440
- package/src/services/store-definition.service.ts +0 -198
- package/src/services/store.service.test.ts +0 -843
- package/src/services/store.service.ts +0 -363
- package/src/services/token.service.test.ts +0 -45
- package/src/services/token.service.ts +0 -33
- package/src/services/watch.service.test.ts +0 -600
- package/src/services/watch.service.ts +0 -84
- package/src/types/brands.test.ts +0 -47
- package/src/types/brands.ts +0 -32
- package/src/types/config.ts +0 -79
- package/src/types/document.ts +0 -54
- package/src/types/index.ts +0 -73
- package/src/types/job.ts +0 -61
- package/src/types/progress.ts +0 -9
- package/src/types/result.test.ts +0 -54
- package/src/types/result.ts +0 -41
- package/src/types/search.ts +0 -105
- package/src/types/store-definition.test.ts +0 -492
- package/src/types/store-definition.ts +0 -129
- package/src/types/store.test.ts +0 -69
- package/src/types/store.ts +0 -47
- package/src/utils/type-guards.test.ts +0 -351
- package/src/utils/type-guards.ts +0 -61
- package/src/workers/background-worker-cli.test.ts +0 -35
- package/src/workers/background-worker-cli.ts +0 -149
- package/src/workers/background-worker.test.ts +0 -222
- package/src/workers/background-worker.ts +0 -322
- package/src/workers/pid-file.test.ts +0 -167
- package/src/workers/pid-file.ts +0 -82
- package/src/workers/spawn-worker.test.ts +0 -194
- package/src/workers/spawn-worker.ts +0 -70
- package/tests/analysis/ast-parser.test.ts +0 -98
- package/tests/analysis/code-graph.test.ts +0 -60
- package/tests/fixtures/README.md +0 -114
- package/tests/fixtures/code-snippets/api/error-handling.ts +0 -256
- package/tests/fixtures/code-snippets/api/rest-controller.ts +0 -297
- package/tests/fixtures/code-snippets/auth/jwt-auth.ts +0 -197
- package/tests/fixtures/code-snippets/auth/oauth-flow.ts +0 -245
- package/tests/fixtures/code-snippets/database/repository-pattern.ts +0 -280
- package/tests/fixtures/corpus/VERSION.md +0 -25
- package/tests/fixtures/corpus/articles/jwt-authentication.md +0 -97
- package/tests/fixtures/corpus/articles/react-hooks-patterns.md +0 -127
- package/tests/fixtures/corpus/articles/typescript-generics.md +0 -111
- package/tests/fixtures/corpus/documentation/express-middleware.md +0 -71
- package/tests/fixtures/corpus/documentation/express-routing.md +0 -83
- package/tests/fixtures/corpus/documentation/node-streams.md +0 -78
- package/tests/fixtures/corpus/oss-repos/express/History.md +0 -3871
- package/tests/fixtures/corpus/oss-repos/express/LICENSE +0 -24
- package/tests/fixtures/corpus/oss-repos/express/README.md +0 -276
- package/tests/fixtures/corpus/oss-repos/express/SECURITY.md +0 -56
- package/tests/fixtures/corpus/oss-repos/express/benchmarks/Makefile +0 -17
- package/tests/fixtures/corpus/oss-repos/express/benchmarks/README.md +0 -34
- package/tests/fixtures/corpus/oss-repos/express/benchmarks/middleware.js +0 -20
- package/tests/fixtures/corpus/oss-repos/express/benchmarks/run +0 -18
- package/tests/fixtures/corpus/oss-repos/express/examples/README.md +0 -29
- package/tests/fixtures/corpus/oss-repos/express/examples/auth/index.js +0 -134
- package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/foot.ejs +0 -2
- package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/head.ejs +0 -20
- package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/login.ejs +0 -21
- package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/db.js +0 -9
- package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/index.js +0 -46
- package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/users.js +0 -19
- package/tests/fixtures/corpus/oss-repos/express/examples/cookie-sessions/index.js +0 -25
- package/tests/fixtures/corpus/oss-repos/express/examples/cookies/index.js +0 -53
- 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 +0 -2
- package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/amazing.txt +0 -1
- package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/notes/groceries.txt +0 -3
- package/tests/fixtures/corpus/oss-repos/express/examples/downloads/index.js +0 -40
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/index.js +0 -57
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/public/stylesheets/style.css +0 -4
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/footer.html +0 -2
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/header.html +0 -9
- package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/users.html +0 -10
- package/tests/fixtures/corpus/oss-repos/express/examples/error/index.js +0 -53
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/index.js +0 -103
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/404.ejs +0 -3
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/500.ejs +0 -8
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/error_header.ejs +0 -10
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/footer.ejs +0 -2
- package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/index.ejs +0 -20
- package/tests/fixtures/corpus/oss-repos/express/examples/hello-world/index.js +0 -15
- package/tests/fixtures/corpus/oss-repos/express/examples/markdown/index.js +0 -44
- package/tests/fixtures/corpus/oss-repos/express/examples/markdown/views/index.md +0 -4
- package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/controllers/api_v1.js +0 -15
- package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/controllers/api_v2.js +0 -15
- package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/index.js +0 -18
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/main/index.js +0 -5
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/index.js +0 -31
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/views/edit.ejs +0 -17
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/views/show.ejs +0 -15
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/index.js +0 -41
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/edit.hbs +0 -27
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/list.hbs +0 -18
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/show.hbs +0 -31
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user-pet/index.js +0 -22
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/db.js +0 -16
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/index.js +0 -95
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/lib/boot.js +0 -83
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/public/style.css +0 -14
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/views/404.ejs +0 -13
- package/tests/fixtures/corpus/oss-repos/express/examples/mvc/views/5xx.ejs +0 -13
- package/tests/fixtures/corpus/oss-repos/express/examples/online/index.js +0 -61
- package/tests/fixtures/corpus/oss-repos/express/examples/params/index.js +0 -74
- package/tests/fixtures/corpus/oss-repos/express/examples/resource/index.js +0 -95
- package/tests/fixtures/corpus/oss-repos/express/examples/route-map/index.js +0 -75
- package/tests/fixtures/corpus/oss-repos/express/examples/route-middleware/index.js +0 -90
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/index.js +0 -55
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/post.js +0 -13
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/public/style.css +0 -24
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/site.js +0 -5
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/user.js +0 -47
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/footer.ejs +0 -2
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/header.ejs +0 -9
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/index.ejs +0 -10
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/posts/index.ejs +0 -12
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/edit.ejs +0 -23
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/index.ejs +0 -14
- package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/view.ejs +0 -9
- package/tests/fixtures/corpus/oss-repos/express/examples/search/index.js +0 -61
- package/tests/fixtures/corpus/oss-repos/express/examples/search/public/client.js +0 -15
- package/tests/fixtures/corpus/oss-repos/express/examples/search/public/index.html +0 -21
- package/tests/fixtures/corpus/oss-repos/express/examples/session/index.js +0 -37
- package/tests/fixtures/corpus/oss-repos/express/examples/session/redis.js +0 -39
- package/tests/fixtures/corpus/oss-repos/express/examples/static-files/index.js +0 -43
- package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/css/style.css +0 -3
- package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/hello.txt +0 -1
- package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/js/app.js +0 -1
- package/tests/fixtures/corpus/oss-repos/express/examples/vhost/index.js +0 -53
- package/tests/fixtures/corpus/oss-repos/express/examples/view-constructor/github-view.js +0 -53
- package/tests/fixtures/corpus/oss-repos/express/examples/view-constructor/index.js +0 -48
- package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/index.js +0 -155
- package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/user.js +0 -36
- package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/views/index.ejs +0 -20
- package/tests/fixtures/corpus/oss-repos/express/examples/web-service/index.js +0 -117
- package/tests/fixtures/corpus/oss-repos/express/index.js +0 -11
- package/tests/fixtures/corpus/oss-repos/express/lib/application.js +0 -631
- package/tests/fixtures/corpus/oss-repos/express/lib/express.js +0 -81
- package/tests/fixtures/corpus/oss-repos/express/lib/request.js +0 -514
- package/tests/fixtures/corpus/oss-repos/express/lib/response.js +0 -1053
- package/tests/fixtures/corpus/oss-repos/express/lib/utils.js +0 -271
- package/tests/fixtures/corpus/oss-repos/express/lib/view.js +0 -205
- package/tests/fixtures/corpus/oss-repos/express/package.json +0 -99
- package/tests/fixtures/corpus/oss-repos/express/test/Route.js +0 -274
- package/tests/fixtures/corpus/oss-repos/express/test/Router.js +0 -636
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/auth.js +0 -117
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/content-negotiation.js +0 -49
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/cookie-sessions.js +0 -38
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/cookies.js +0 -71
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/downloads.js +0 -47
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/ejs.js +0 -17
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/error-pages.js +0 -99
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/error.js +0 -29
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/hello-world.js +0 -21
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/markdown.js +0 -21
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/multi-router.js +0 -44
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/mvc.js +0 -132
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/params.js +0 -44
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/resource.js +0 -68
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/route-map.js +0 -45
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/route-separation.js +0 -97
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/vhost.js +0 -46
- package/tests/fixtures/corpus/oss-repos/express/test/acceptance/web-service.js +0 -105
- package/tests/fixtures/corpus/oss-repos/express/test/app.all.js +0 -38
- package/tests/fixtures/corpus/oss-repos/express/test/app.engine.js +0 -83
- package/tests/fixtures/corpus/oss-repos/express/test/app.head.js +0 -66
- package/tests/fixtures/corpus/oss-repos/express/test/app.js +0 -120
- package/tests/fixtures/corpus/oss-repos/express/test/app.listen.js +0 -55
- package/tests/fixtures/corpus/oss-repos/express/test/app.locals.js +0 -26
- package/tests/fixtures/corpus/oss-repos/express/test/app.options.js +0 -116
- package/tests/fixtures/corpus/oss-repos/express/test/app.param.js +0 -323
- package/tests/fixtures/corpus/oss-repos/express/test/app.render.js +0 -374
- package/tests/fixtures/corpus/oss-repos/express/test/app.request.js +0 -143
- package/tests/fixtures/corpus/oss-repos/express/test/app.response.js +0 -143
- package/tests/fixtures/corpus/oss-repos/express/test/app.route.js +0 -197
- package/tests/fixtures/corpus/oss-repos/express/test/app.router.js +0 -1217
- package/tests/fixtures/corpus/oss-repos/express/test/app.routes.error.js +0 -62
- package/tests/fixtures/corpus/oss-repos/express/test/app.use.js +0 -542
- package/tests/fixtures/corpus/oss-repos/express/test/config.js +0 -207
- package/tests/fixtures/corpus/oss-repos/express/test/exports.js +0 -82
- package/tests/fixtures/corpus/oss-repos/express/test/express.json.js +0 -755
- package/tests/fixtures/corpus/oss-repos/express/test/express.raw.js +0 -513
- package/tests/fixtures/corpus/oss-repos/express/test/express.static.js +0 -815
- package/tests/fixtures/corpus/oss-repos/express/test/express.text.js +0 -566
- package/tests/fixtures/corpus/oss-repos/express/test/express.urlencoded.js +0 -828
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/% of dogs.txt +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/.name +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/blog/index.html +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/blog/post/index.tmpl +0 -1
- 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 +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/default_layout/user.tmpl +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/email.tmpl +0 -1
- 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 +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/name.tmpl +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/name.txt +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/nums.txt +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/pets/names.txt +0 -1
- 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 +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/todo.txt +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/user.html +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/user.tmpl +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/users/index.html +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/fixtures/users/tobi.txt +0 -1
- package/tests/fixtures/corpus/oss-repos/express/test/middleware.basic.js +0 -42
- package/tests/fixtures/corpus/oss-repos/express/test/regression.js +0 -20
- package/tests/fixtures/corpus/oss-repos/express/test/req.accepts.js +0 -125
- package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsCharsets.js +0 -50
- package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsEncodings.js +0 -39
- package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsLanguages.js +0 -57
- package/tests/fixtures/corpus/oss-repos/express/test/req.baseUrl.js +0 -88
- package/tests/fixtures/corpus/oss-repos/express/test/req.fresh.js +0 -70
- package/tests/fixtures/corpus/oss-repos/express/test/req.get.js +0 -60
- package/tests/fixtures/corpus/oss-repos/express/test/req.host.js +0 -156
- package/tests/fixtures/corpus/oss-repos/express/test/req.hostname.js +0 -188
- package/tests/fixtures/corpus/oss-repos/express/test/req.ip.js +0 -113
- package/tests/fixtures/corpus/oss-repos/express/test/req.ips.js +0 -71
- package/tests/fixtures/corpus/oss-repos/express/test/req.is.js +0 -169
- package/tests/fixtures/corpus/oss-repos/express/test/req.path.js +0 -20
- package/tests/fixtures/corpus/oss-repos/express/test/req.protocol.js +0 -113
- package/tests/fixtures/corpus/oss-repos/express/test/req.query.js +0 -106
- package/tests/fixtures/corpus/oss-repos/express/test/req.range.js +0 -104
- package/tests/fixtures/corpus/oss-repos/express/test/req.route.js +0 -28
- package/tests/fixtures/corpus/oss-repos/express/test/req.secure.js +0 -101
- package/tests/fixtures/corpus/oss-repos/express/test/req.signedCookies.js +0 -37
- package/tests/fixtures/corpus/oss-repos/express/test/req.stale.js +0 -50
- package/tests/fixtures/corpus/oss-repos/express/test/req.subdomains.js +0 -173
- package/tests/fixtures/corpus/oss-repos/express/test/req.xhr.js +0 -42
- package/tests/fixtures/corpus/oss-repos/express/test/res.append.js +0 -116
- package/tests/fixtures/corpus/oss-repos/express/test/res.attachment.js +0 -79
- package/tests/fixtures/corpus/oss-repos/express/test/res.clearCookie.js +0 -62
- package/tests/fixtures/corpus/oss-repos/express/test/res.cookie.js +0 -295
- package/tests/fixtures/corpus/oss-repos/express/test/res.download.js +0 -487
- package/tests/fixtures/corpus/oss-repos/express/test/res.format.js +0 -248
- package/tests/fixtures/corpus/oss-repos/express/test/res.get.js +0 -21
- package/tests/fixtures/corpus/oss-repos/express/test/res.json.js +0 -186
- package/tests/fixtures/corpus/oss-repos/express/test/res.jsonp.js +0 -344
- package/tests/fixtures/corpus/oss-repos/express/test/res.links.js +0 -65
- package/tests/fixtures/corpus/oss-repos/express/test/res.locals.js +0 -40
- package/tests/fixtures/corpus/oss-repos/express/test/res.location.js +0 -316
- package/tests/fixtures/corpus/oss-repos/express/test/res.redirect.js +0 -214
- package/tests/fixtures/corpus/oss-repos/express/test/res.render.js +0 -367
- package/tests/fixtures/corpus/oss-repos/express/test/res.send.js +0 -569
- package/tests/fixtures/corpus/oss-repos/express/test/res.sendFile.js +0 -913
- package/tests/fixtures/corpus/oss-repos/express/test/res.sendStatus.js +0 -44
- package/tests/fixtures/corpus/oss-repos/express/test/res.set.js +0 -124
- package/tests/fixtures/corpus/oss-repos/express/test/res.status.js +0 -206
- package/tests/fixtures/corpus/oss-repos/express/test/res.type.js +0 -46
- package/tests/fixtures/corpus/oss-repos/express/test/res.vary.js +0 -90
- package/tests/fixtures/corpus/oss-repos/express/test/support/env.js +0 -3
- package/tests/fixtures/corpus/oss-repos/express/test/support/tmpl.js +0 -36
- package/tests/fixtures/corpus/oss-repos/express/test/support/utils.js +0 -86
- package/tests/fixtures/corpus/oss-repos/express/test/utils.js +0 -83
- package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/Dockerfile +0 -11
- package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/devcontainer.json +0 -21
- package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/docker-compose.yml +0 -18
- package/tests/fixtures/corpus/oss-repos/hono/.eslintignore +0 -1
- package/tests/fixtures/corpus/oss-repos/hono/.eslintrc.cjs +0 -9
- package/tests/fixtures/corpus/oss-repos/hono/.gitpod.yml +0 -9
- package/tests/fixtures/corpus/oss-repos/hono/.prettierrc +0 -9
- package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/jsx-runtime-default.ts +0 -15
- package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/jsx-runtime-dom.ts +0 -15
- package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/setup-vitest.ts +0 -47
- package/tests/fixtures/corpus/oss-repos/hono/LICENSE +0 -21
- package/tests/fixtures/corpus/oss-repos/hono/README.md +0 -91
- package/tests/fixtures/corpus/oss-repos/hono/build.ts +0 -80
- package/tests/fixtures/corpus/oss-repos/hono/bun.lockb +0 -0
- package/tests/fixtures/corpus/oss-repos/hono/bunfig.toml +0 -7
- package/tests/fixtures/corpus/oss-repos/hono/codecov.yml +0 -13
- package/tests/fixtures/corpus/oss-repos/hono/docs/CODE_OF_CONDUCT.md +0 -128
- package/tests/fixtures/corpus/oss-repos/hono/docs/CONTRIBUTING.md +0 -62
- package/tests/fixtures/corpus/oss-repos/hono/docs/MIGRATION.md +0 -295
- 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 +0 -6
- 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 +0 -119
- package/tests/fixtures/corpus/oss-repos/hono/package.cjs.json +0 -3
- package/tests/fixtures/corpus/oss-repos/hono/package.json +0 -650
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/handler.ts +0 -492
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/index.ts +0 -13
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/types.ts +0 -144
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/conninfo.ts +0 -28
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/index.ts +0 -9
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/serve-static.ts +0 -35
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/server.ts +0 -30
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/ssg.ts +0 -27
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/websocket.ts +0 -110
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-pages/handler.ts +0 -120
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-pages/index.ts +0 -7
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/conninfo.ts +0 -7
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/index.ts +0 -8
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/serve-static-module.ts +0 -12
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/serve-static.ts +0 -39
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/utils.ts +0 -50
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/websocket.ts +0 -50
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/conninfo.ts +0 -17
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/deno.d.ts +0 -28
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/index.ts +0 -9
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/serve-static.ts +0 -40
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/ssg.ts +0 -27
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/websocket.ts +0 -51
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/conninfo.ts +0 -15
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/handler.ts +0 -189
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/index.ts +0 -14
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/handler.ts +0 -10
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/index.ts +0 -6
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/mod.ts +0 -1
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/handler.ts +0 -34
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/index.ts +0 -5
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/types.ts +0 -14
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/conninfo.ts +0 -8
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/handler.ts +0 -9
- package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/index.ts +0 -7
- package/tests/fixtures/corpus/oss-repos/hono/src/client/client.ts +0 -214
- package/tests/fixtures/corpus/oss-repos/hono/src/client/index.ts +0 -14
- package/tests/fixtures/corpus/oss-repos/hono/src/client/types.ts +0 -182
- package/tests/fixtures/corpus/oss-repos/hono/src/client/utils.ts +0 -54
- package/tests/fixtures/corpus/oss-repos/hono/src/compose.ts +0 -94
- package/tests/fixtures/corpus/oss-repos/hono/src/context.ts +0 -917
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/accepts/accepts.ts +0 -84
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/accepts/index.ts +0 -6
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/adapter/index.ts +0 -85
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/conninfo/index.ts +0 -6
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/conninfo/types.ts +0 -45
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/cookie/index.ts +0 -130
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/css/common.ts +0 -243
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/css/index.ts +0 -220
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/dev/index.ts +0 -79
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/factory/index.ts +0 -246
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/html/index.ts +0 -56
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/index.ts +0 -13
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/middleware.ts +0 -79
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/ssg.ts +0 -388
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/utils.ts +0 -71
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/index.ts +0 -9
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/sse.ts +0 -89
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/stream.ts +0 -36
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/text.ts +0 -15
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/testing/index.ts +0 -26
- package/tests/fixtures/corpus/oss-repos/hono/src/helper/websocket/index.ts +0 -57
- package/tests/fixtures/corpus/oss-repos/hono/src/hono-base.ts +0 -523
- package/tests/fixtures/corpus/oss-repos/hono/src/hono.ts +0 -34
- package/tests/fixtures/corpus/oss-repos/hono/src/http-exception.ts +0 -78
- package/tests/fixtures/corpus/oss-repos/hono/src/index.ts +0 -51
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/base.ts +0 -419
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/children.ts +0 -20
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/components.ts +0 -195
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/constants.ts +0 -5
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/context.ts +0 -50
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/client.ts +0 -89
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/components.ts +0 -39
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/context.ts +0 -52
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/css.ts +0 -246
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/hooks/index.ts +0 -91
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/index.ts +0 -159
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/intrinsic-element/components.ts +0 -398
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/jsx-dev-runtime.ts +0 -22
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/jsx-runtime.ts +0 -7
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/render.ts +0 -772
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/server.ts +0 -70
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/utils.ts +0 -7
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/hooks/index.ts +0 -426
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/index.ts +0 -114
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-element/common.ts +0 -11
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-element/components.ts +0 -196
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-elements.ts +0 -924
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/jsx-dev-runtime.ts +0 -26
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/jsx-runtime.ts +0 -18
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/streaming.ts +0 -184
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/types.ts +0 -41
- package/tests/fixtures/corpus/oss-repos/hono/src/jsx/utils.ts +0 -36
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/basic-auth/index.ts +0 -128
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/bearer-auth/index.ts +0 -159
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/body-limit/index.ts +0 -115
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/cache/index.ts +0 -127
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/combine/index.ts +0 -153
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/compress/index.ts +0 -79
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/context-storage/index.ts +0 -55
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/cors/index.ts +0 -141
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/csrf/index.ts +0 -90
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/etag/index.ts +0 -88
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/ip-restriction/index.ts +0 -178
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jsx-renderer/index.ts +0 -158
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jwt/index.ts +0 -8
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jwt/jwt.ts +0 -159
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/logger/index.ts +0 -93
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/method-override/index.ts +0 -146
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/powered-by/index.ts +0 -13
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/pretty-json/index.ts +0 -50
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/request-id/index.ts +0 -8
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/request-id/request-id.ts +0 -59
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/index.ts +0 -8
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/permissions-policy.ts +0 -86
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/secure-headers.ts +0 -319
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/serve-static/index.ts +0 -140
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timeout/index.ts +0 -58
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timing/index.ts +0 -7
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timing/timing.ts +0 -225
- package/tests/fixtures/corpus/oss-repos/hono/src/middleware/trailing-slash/index.ts +0 -71
- package/tests/fixtures/corpus/oss-repos/hono/src/preset/quick.ts +0 -24
- package/tests/fixtures/corpus/oss-repos/hono/src/preset/tiny.ts +0 -20
- package/tests/fixtures/corpus/oss-repos/hono/src/request.ts +0 -403
- package/tests/fixtures/corpus/oss-repos/hono/src/router/linear-router/index.ts +0 -6
- package/tests/fixtures/corpus/oss-repos/hono/src/router/linear-router/router.ts +0 -132
- package/tests/fixtures/corpus/oss-repos/hono/src/router/pattern-router/index.ts +0 -6
- package/tests/fixtures/corpus/oss-repos/hono/src/router/pattern-router/router.ts +0 -54
- package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/index.ts +0 -6
- package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/node.ts +0 -159
- package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/router.ts +0 -274
- package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/trie.ts +0 -74
- package/tests/fixtures/corpus/oss-repos/hono/src/router/smart-router/index.ts +0 -6
- package/tests/fixtures/corpus/oss-repos/hono/src/router/smart-router/router.ts +0 -69
- package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/index.ts +0 -6
- package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/node.ts +0 -205
- package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/router.ts +0 -28
- package/tests/fixtures/corpus/oss-repos/hono/src/router.ts +0 -103
- package/tests/fixtures/corpus/oss-repos/hono/src/types.ts +0 -2006
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/basic-auth.ts +0 -26
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/body.ts +0 -225
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/buffer.ts +0 -65
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/color.ts +0 -26
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/concurrent.ts +0 -55
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/cookie.ts +0 -230
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/crypto.ts +0 -65
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/encode.ts +0 -34
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/filepath.ts +0 -56
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/handler.ts +0 -15
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/html.ts +0 -182
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/http-status.ts +0 -69
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/ipaddr.ts +0 -113
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/index.ts +0 -7
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jwa.ts +0 -23
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jws.ts +0 -226
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jwt.ts +0 -114
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/types.ts +0 -83
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/utf8.ts +0 -7
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/mime.ts +0 -142
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/stream.ts +0 -96
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/types.ts +0 -102
- package/tests/fixtures/corpus/oss-repos/hono/src/utils/url.ts +0 -310
- package/tests/fixtures/corpus/oss-repos/hono/src/validator/index.ts +0 -7
- package/tests/fixtures/corpus/oss-repos/hono/src/validator/validator.ts +0 -151
- package/tests/fixtures/corpus/oss-repos/hono/tsconfig.build.json +0 -23
- package/tests/fixtures/corpus/oss-repos/hono/tsconfig.json +0 -28
- package/tests/fixtures/corpus/oss-repos/hono/vitest.config.ts +0 -34
- package/tests/fixtures/corpus/oss-repos/hono/yarn.lock +0 -6232
- package/tests/fixtures/documentation/api-reference.md +0 -412
- package/tests/fixtures/documentation/architecture.md +0 -214
- package/tests/fixtures/documentation/deployment-guide.md +0 -420
- package/tests/fixtures/github-readmes/express.md +0 -133
- package/tests/fixtures/github-readmes/nextjs.md +0 -106
- package/tests/fixtures/github-readmes/react.md +0 -74
- package/tests/fixtures/github-readmes/typescript.md +0 -93
- package/tests/fixtures/github-readmes/vite.md +0 -79
- package/tests/fixtures/queries/core.json +0 -125
- package/tests/fixtures/queries/extended.json +0 -427
- package/tests/fixtures/queries/generated/.gitkeep +0 -0
- package/tests/fixtures/test-server.ts +0 -268
- package/tests/helpers/performance-metrics.ts +0 -370
- package/tests/helpers/search-relevance.ts +0 -326
- package/tests/integration/cli-consistency.test.ts +0 -298
- package/tests/integration/cli.test.ts +0 -69
- package/tests/integration/e2e-workflow.test.ts +0 -614
- package/tests/integration/mcp.test.ts +0 -250
- package/tests/integration/python-bridge.test.ts +0 -193
- package/tests/integration/search-quality.test.ts +0 -720
- package/tests/integration/serve.test.ts +0 -260
- package/tests/integration/stress.test.ts +0 -326
- package/tests/mcp/server.test.ts +0 -15
- package/tests/scripts/schemas/evaluation.json +0 -44
- package/tests/scripts/schemas/query-generation.json +0 -21
- package/tests/services/code-unit.service.test.ts +0 -95
- package/tests/services/job.service.test.ts +0 -124
- package/tests/services/search.progressive-context.test.ts +0 -35
- package/tsconfig.json +0 -34
- package/tsup.config.ts +0 -15
- package/turndown-plugin-gfm.d.ts +0 -29
- package/vitest.config.ts +0 -90
|
@@ -1,843 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
-
import { StoreService } from './store.service.js';
|
|
3
|
-
import { StoreDefinitionService } from './store-definition.service.js';
|
|
4
|
-
import { rm, mkdtemp, writeFile, readFile, access } from 'node:fs/promises';
|
|
5
|
-
import { tmpdir } from 'node:os';
|
|
6
|
-
import { join } from 'node:path';
|
|
7
|
-
|
|
8
|
-
describe('StoreService', () => {
|
|
9
|
-
let storeService: StoreService;
|
|
10
|
-
let tempDir: string;
|
|
11
|
-
|
|
12
|
-
beforeEach(async () => {
|
|
13
|
-
tempDir = await mkdtemp(join(tmpdir(), 'store-test-'));
|
|
14
|
-
storeService = new StoreService(tempDir);
|
|
15
|
-
await storeService.initialize();
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
afterEach(async () => {
|
|
19
|
-
await rm(tempDir, { recursive: true, force: true });
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it('creates a file store', async () => {
|
|
23
|
-
const result = await storeService.create({
|
|
24
|
-
name: 'My Files',
|
|
25
|
-
type: 'file',
|
|
26
|
-
path: tempDir,
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
expect(result.success).toBe(true);
|
|
30
|
-
if (result.success) {
|
|
31
|
-
expect(result.data.name).toBe('My Files');
|
|
32
|
-
expect(result.data.type).toBe('file');
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
it('lists all stores', async () => {
|
|
37
|
-
const dir1 = await mkdtemp(join(tmpdir(), 'store1-'));
|
|
38
|
-
const dir2 = await mkdtemp(join(tmpdir(), 'store2-'));
|
|
39
|
-
await storeService.create({ name: 'Store 1', type: 'file', path: dir1 });
|
|
40
|
-
await storeService.create({ name: 'Store 2', type: 'file', path: dir2 });
|
|
41
|
-
|
|
42
|
-
const stores = await storeService.list();
|
|
43
|
-
expect(stores).toHaveLength(2);
|
|
44
|
-
|
|
45
|
-
await rm(dir1, { recursive: true, force: true });
|
|
46
|
-
await rm(dir2, { recursive: true, force: true });
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
it('gets store by ID', async () => {
|
|
50
|
-
const createResult = await storeService.create({
|
|
51
|
-
name: 'Test Store',
|
|
52
|
-
type: 'file',
|
|
53
|
-
path: tempDir,
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
if (!createResult.success) throw new Error('Create failed');
|
|
57
|
-
|
|
58
|
-
const store = await storeService.get(createResult.data.id);
|
|
59
|
-
expect(store?.name).toBe('Test Store');
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it('gets store by name', async () => {
|
|
63
|
-
await storeService.create({
|
|
64
|
-
name: 'Named Store',
|
|
65
|
-
type: 'file',
|
|
66
|
-
path: tempDir,
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
const store = await storeService.getByName('Named Store');
|
|
70
|
-
expect(store?.name).toBe('Named Store');
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it('deletes a store', async () => {
|
|
74
|
-
const createResult = await storeService.create({
|
|
75
|
-
name: 'To Delete',
|
|
76
|
-
type: 'file',
|
|
77
|
-
path: tempDir,
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
if (!createResult.success) throw new Error('Create failed');
|
|
81
|
-
|
|
82
|
-
const deleteResult = await storeService.delete(createResult.data.id);
|
|
83
|
-
expect(deleteResult.success).toBe(true);
|
|
84
|
-
|
|
85
|
-
const stores = await storeService.list();
|
|
86
|
-
expect(stores).toHaveLength(0);
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
describe('create file store', () => {
|
|
90
|
-
it('creates file store with description', async () => {
|
|
91
|
-
const result = await storeService.create({
|
|
92
|
-
name: 'Described Files',
|
|
93
|
-
type: 'file',
|
|
94
|
-
path: tempDir,
|
|
95
|
-
description: 'My file collection',
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
expect(result.success).toBe(true);
|
|
99
|
-
if (result.success) {
|
|
100
|
-
expect(result.data.description).toBe('My file collection');
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it('creates file store with tags', async () => {
|
|
105
|
-
const result = await storeService.create({
|
|
106
|
-
name: 'Tagged Files',
|
|
107
|
-
type: 'file',
|
|
108
|
-
path: tempDir,
|
|
109
|
-
tags: ['important', 'work'],
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
expect(result.success).toBe(true);
|
|
113
|
-
if (result.success) {
|
|
114
|
-
expect(result.data.tags).toEqual(['important', 'work']);
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
it('returns error when path not provided for file store', async () => {
|
|
119
|
-
const result = await storeService.create({
|
|
120
|
-
name: 'No Path',
|
|
121
|
-
type: 'file',
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
expect(result.success).toBe(false);
|
|
125
|
-
if (!result.success) {
|
|
126
|
-
expect(result.error.message).toContain('Path is required');
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
it('returns error when path does not exist', async () => {
|
|
131
|
-
const result = await storeService.create({
|
|
132
|
-
name: 'Bad Path',
|
|
133
|
-
type: 'file',
|
|
134
|
-
path: '/nonexistent/path',
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
expect(result.success).toBe(false);
|
|
138
|
-
if (!result.success) {
|
|
139
|
-
expect(result.error.message).toContain('Directory does not exist');
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
describe('create repo store', () => {
|
|
145
|
-
it('creates repo store with path', async () => {
|
|
146
|
-
const result = await storeService.create({
|
|
147
|
-
name: 'My Repo',
|
|
148
|
-
type: 'repo',
|
|
149
|
-
path: tempDir,
|
|
150
|
-
});
|
|
151
|
-
|
|
152
|
-
expect(result.success).toBe(true);
|
|
153
|
-
if (result.success) {
|
|
154
|
-
expect(result.data.type).toBe('repo');
|
|
155
|
-
expect(result.data.path).toBe(tempDir);
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
it('creates repo store with branch', async () => {
|
|
160
|
-
const result = await storeService.create({
|
|
161
|
-
name: 'Branched Repo',
|
|
162
|
-
type: 'repo',
|
|
163
|
-
path: tempDir,
|
|
164
|
-
branch: 'develop',
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
expect(result.success).toBe(true);
|
|
168
|
-
if (result.success) {
|
|
169
|
-
expect(result.data.branch).toBe('develop');
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
it('returns error when neither path nor URL provided for repo', async () => {
|
|
174
|
-
const result = await storeService.create({
|
|
175
|
-
name: 'No Path No URL',
|
|
176
|
-
type: 'repo',
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
expect(result.success).toBe(false);
|
|
180
|
-
if (!result.success) {
|
|
181
|
-
expect(result.error.message).toContain('Path or URL required');
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
describe('create web store', () => {
|
|
187
|
-
it('creates web store with URL', async () => {
|
|
188
|
-
const result = await storeService.create({
|
|
189
|
-
name: 'My Website',
|
|
190
|
-
type: 'web',
|
|
191
|
-
url: 'https://example.com',
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
expect(result.success).toBe(true);
|
|
195
|
-
if (result.success) {
|
|
196
|
-
expect(result.data.type).toBe('web');
|
|
197
|
-
expect(result.data.url).toBe('https://example.com');
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
it('creates web store with depth', async () => {
|
|
202
|
-
const result = await storeService.create({
|
|
203
|
-
name: 'Deep Site',
|
|
204
|
-
type: 'web',
|
|
205
|
-
url: 'https://example.com',
|
|
206
|
-
depth: 3,
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
expect(result.success).toBe(true);
|
|
210
|
-
if (result.success) {
|
|
211
|
-
expect(result.data.depth).toBe(3);
|
|
212
|
-
}
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
it('uses default depth of 1 when not specified', async () => {
|
|
216
|
-
const result = await storeService.create({
|
|
217
|
-
name: 'Default Depth',
|
|
218
|
-
type: 'web',
|
|
219
|
-
url: 'https://example.com',
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
expect(result.success).toBe(true);
|
|
223
|
-
if (result.success) {
|
|
224
|
-
expect(result.data.depth).toBe(1);
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
|
|
228
|
-
it('returns error when URL not provided for web store', async () => {
|
|
229
|
-
const result = await storeService.create({
|
|
230
|
-
name: 'No URL',
|
|
231
|
-
type: 'web',
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
expect(result.success).toBe(false);
|
|
235
|
-
if (!result.success) {
|
|
236
|
-
expect(result.error.message).toContain('URL is required');
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
describe('name validation', () => {
|
|
242
|
-
it('returns error when name is empty string', async () => {
|
|
243
|
-
const result = await storeService.create({
|
|
244
|
-
name: '',
|
|
245
|
-
type: 'file',
|
|
246
|
-
path: tempDir,
|
|
247
|
-
});
|
|
248
|
-
|
|
249
|
-
expect(result.success).toBe(false);
|
|
250
|
-
if (!result.success) {
|
|
251
|
-
expect(result.error.message).toContain('Store name cannot be empty');
|
|
252
|
-
}
|
|
253
|
-
});
|
|
254
|
-
|
|
255
|
-
it('returns error when name is whitespace only', async () => {
|
|
256
|
-
const result = await storeService.create({
|
|
257
|
-
name: ' ',
|
|
258
|
-
type: 'file',
|
|
259
|
-
path: tempDir,
|
|
260
|
-
});
|
|
261
|
-
|
|
262
|
-
expect(result.success).toBe(false);
|
|
263
|
-
if (!result.success) {
|
|
264
|
-
expect(result.error.message).toContain('Store name cannot be empty');
|
|
265
|
-
}
|
|
266
|
-
});
|
|
267
|
-
});
|
|
268
|
-
|
|
269
|
-
describe('duplicate name handling', () => {
|
|
270
|
-
it('returns error when creating store with duplicate name', async () => {
|
|
271
|
-
const dir1 = await mkdtemp(join(tmpdir(), 'dup1-'));
|
|
272
|
-
const dir2 = await mkdtemp(join(tmpdir(), 'dup2-'));
|
|
273
|
-
|
|
274
|
-
await storeService.create({
|
|
275
|
-
name: 'Duplicate',
|
|
276
|
-
type: 'file',
|
|
277
|
-
path: dir1,
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
const result = await storeService.create({
|
|
281
|
-
name: 'Duplicate',
|
|
282
|
-
type: 'file',
|
|
283
|
-
path: dir2,
|
|
284
|
-
});
|
|
285
|
-
|
|
286
|
-
expect(result.success).toBe(false);
|
|
287
|
-
if (!result.success) {
|
|
288
|
-
expect(result.error.message).toContain('already exists');
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
await rm(dir1, { recursive: true, force: true });
|
|
292
|
-
await rm(dir2, { recursive: true, force: true });
|
|
293
|
-
});
|
|
294
|
-
});
|
|
295
|
-
|
|
296
|
-
describe('list with filter', () => {
|
|
297
|
-
it('lists only file stores when type filter is file', async () => {
|
|
298
|
-
const fileDir = await mkdtemp(join(tmpdir(), 'file1-'));
|
|
299
|
-
const repoDir = await mkdtemp(join(tmpdir(), 'repo1-'));
|
|
300
|
-
await storeService.create({ name: 'File 1', type: 'file', path: fileDir });
|
|
301
|
-
await storeService.create({ name: 'Repo 1', type: 'repo', path: repoDir });
|
|
302
|
-
await storeService.create({ name: 'Web 1', type: 'web', url: 'https://example.com' });
|
|
303
|
-
|
|
304
|
-
const stores = await storeService.list('file');
|
|
305
|
-
expect(stores).toHaveLength(1);
|
|
306
|
-
expect(stores[0].type).toBe('file');
|
|
307
|
-
|
|
308
|
-
await rm(fileDir, { recursive: true, force: true });
|
|
309
|
-
await rm(repoDir, { recursive: true, force: true });
|
|
310
|
-
});
|
|
311
|
-
|
|
312
|
-
it('lists only repo stores when type filter is repo', async () => {
|
|
313
|
-
const fileDir = await mkdtemp(join(tmpdir(), 'file1-'));
|
|
314
|
-
const repoDir = await mkdtemp(join(tmpdir(), 'repo1-'));
|
|
315
|
-
await storeService.create({ name: 'File 1', type: 'file', path: fileDir });
|
|
316
|
-
await storeService.create({ name: 'Repo 1', type: 'repo', path: repoDir });
|
|
317
|
-
await storeService.create({ name: 'Web 1', type: 'web', url: 'https://example.com' });
|
|
318
|
-
|
|
319
|
-
const stores = await storeService.list('repo');
|
|
320
|
-
expect(stores).toHaveLength(1);
|
|
321
|
-
expect(stores[0].type).toBe('repo');
|
|
322
|
-
|
|
323
|
-
await rm(fileDir, { recursive: true, force: true });
|
|
324
|
-
await rm(repoDir, { recursive: true, force: true });
|
|
325
|
-
});
|
|
326
|
-
|
|
327
|
-
it('lists only web stores when type filter is web', async () => {
|
|
328
|
-
const fileDir = await mkdtemp(join(tmpdir(), 'file1-'));
|
|
329
|
-
const repoDir = await mkdtemp(join(tmpdir(), 'repo1-'));
|
|
330
|
-
await storeService.create({ name: 'File 1', type: 'file', path: fileDir });
|
|
331
|
-
await storeService.create({ name: 'Repo 1', type: 'repo', path: repoDir });
|
|
332
|
-
await storeService.create({ name: 'Web 1', type: 'web', url: 'https://example.com' });
|
|
333
|
-
|
|
334
|
-
const stores = await storeService.list('web');
|
|
335
|
-
expect(stores).toHaveLength(1);
|
|
336
|
-
expect(stores[0].type).toBe('web');
|
|
337
|
-
|
|
338
|
-
await rm(fileDir, { recursive: true, force: true });
|
|
339
|
-
await rm(repoDir, { recursive: true, force: true });
|
|
340
|
-
});
|
|
341
|
-
});
|
|
342
|
-
|
|
343
|
-
describe('getByIdOrName', () => {
|
|
344
|
-
it('finds store by ID', async () => {
|
|
345
|
-
const createResult = await storeService.create({
|
|
346
|
-
name: 'Test Store',
|
|
347
|
-
type: 'file',
|
|
348
|
-
path: tempDir,
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
if (!createResult.success) throw new Error('Create failed');
|
|
352
|
-
|
|
353
|
-
const store = await storeService.getByIdOrName(createResult.data.id);
|
|
354
|
-
expect(store?.name).toBe('Test Store');
|
|
355
|
-
});
|
|
356
|
-
|
|
357
|
-
it('finds store by name', async () => {
|
|
358
|
-
await storeService.create({
|
|
359
|
-
name: 'Test Store',
|
|
360
|
-
type: 'file',
|
|
361
|
-
path: tempDir,
|
|
362
|
-
});
|
|
363
|
-
|
|
364
|
-
const store = await storeService.getByIdOrName('Test Store');
|
|
365
|
-
expect(store?.name).toBe('Test Store');
|
|
366
|
-
});
|
|
367
|
-
|
|
368
|
-
it('returns undefined when store not found', async () => {
|
|
369
|
-
const store = await storeService.getByIdOrName('nonexistent');
|
|
370
|
-
expect(store).toBeUndefined();
|
|
371
|
-
});
|
|
372
|
-
});
|
|
373
|
-
|
|
374
|
-
describe('update store', () => {
|
|
375
|
-
it('updates store name', async () => {
|
|
376
|
-
const createResult = await storeService.create({
|
|
377
|
-
name: 'Original Name',
|
|
378
|
-
type: 'file',
|
|
379
|
-
path: tempDir,
|
|
380
|
-
});
|
|
381
|
-
|
|
382
|
-
if (!createResult.success) throw new Error('Create failed');
|
|
383
|
-
|
|
384
|
-
const updateResult = await storeService.update(createResult.data.id, {
|
|
385
|
-
name: 'Updated Name',
|
|
386
|
-
});
|
|
387
|
-
|
|
388
|
-
expect(updateResult.success).toBe(true);
|
|
389
|
-
if (updateResult.success) {
|
|
390
|
-
expect(updateResult.data.name).toBe('Updated Name');
|
|
391
|
-
}
|
|
392
|
-
});
|
|
393
|
-
|
|
394
|
-
it('updates store description', async () => {
|
|
395
|
-
const createResult = await storeService.create({
|
|
396
|
-
name: 'Test Store',
|
|
397
|
-
type: 'file',
|
|
398
|
-
path: tempDir,
|
|
399
|
-
});
|
|
400
|
-
|
|
401
|
-
if (!createResult.success) throw new Error('Create failed');
|
|
402
|
-
|
|
403
|
-
const updateResult = await storeService.update(createResult.data.id, {
|
|
404
|
-
description: 'New description',
|
|
405
|
-
});
|
|
406
|
-
|
|
407
|
-
expect(updateResult.success).toBe(true);
|
|
408
|
-
if (updateResult.success) {
|
|
409
|
-
expect(updateResult.data.description).toBe('New description');
|
|
410
|
-
}
|
|
411
|
-
});
|
|
412
|
-
|
|
413
|
-
it('updates store tags', async () => {
|
|
414
|
-
const createResult = await storeService.create({
|
|
415
|
-
name: 'Test Store',
|
|
416
|
-
type: 'file',
|
|
417
|
-
path: tempDir,
|
|
418
|
-
});
|
|
419
|
-
|
|
420
|
-
if (!createResult.success) throw new Error('Create failed');
|
|
421
|
-
|
|
422
|
-
const updateResult = await storeService.update(createResult.data.id, {
|
|
423
|
-
tags: ['new', 'tags'],
|
|
424
|
-
});
|
|
425
|
-
|
|
426
|
-
expect(updateResult.success).toBe(true);
|
|
427
|
-
if (updateResult.success) {
|
|
428
|
-
expect(updateResult.data.tags).toEqual(['new', 'tags']);
|
|
429
|
-
}
|
|
430
|
-
});
|
|
431
|
-
|
|
432
|
-
it('updates updatedAt timestamp', async () => {
|
|
433
|
-
const createResult = await storeService.create({
|
|
434
|
-
name: 'Test Store',
|
|
435
|
-
type: 'file',
|
|
436
|
-
path: tempDir,
|
|
437
|
-
});
|
|
438
|
-
|
|
439
|
-
if (!createResult.success) throw new Error('Create failed');
|
|
440
|
-
const originalUpdatedAt = createResult.data.updatedAt;
|
|
441
|
-
|
|
442
|
-
// Wait a bit to ensure timestamp is different
|
|
443
|
-
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
444
|
-
|
|
445
|
-
const updateResult = await storeService.update(createResult.data.id, {
|
|
446
|
-
name: 'Updated',
|
|
447
|
-
});
|
|
448
|
-
|
|
449
|
-
expect(updateResult.success).toBe(true);
|
|
450
|
-
if (updateResult.success) {
|
|
451
|
-
expect(updateResult.data.updatedAt.getTime()).toBeGreaterThan(originalUpdatedAt.getTime());
|
|
452
|
-
}
|
|
453
|
-
});
|
|
454
|
-
|
|
455
|
-
it('returns error when updating nonexistent store', async () => {
|
|
456
|
-
const result = await storeService.update('nonexistent-id' as any, {
|
|
457
|
-
name: 'Updated',
|
|
458
|
-
});
|
|
459
|
-
|
|
460
|
-
expect(result.success).toBe(false);
|
|
461
|
-
if (!result.success) {
|
|
462
|
-
expect(result.error.message).toContain('Store not found');
|
|
463
|
-
}
|
|
464
|
-
});
|
|
465
|
-
});
|
|
466
|
-
|
|
467
|
-
describe('delete store', () => {
|
|
468
|
-
it('returns error when deleting nonexistent store', async () => {
|
|
469
|
-
const result = await storeService.delete('nonexistent-id' as any);
|
|
470
|
-
|
|
471
|
-
expect(result.success).toBe(false);
|
|
472
|
-
if (!result.success) {
|
|
473
|
-
expect(result.error.message).toContain('Store not found');
|
|
474
|
-
}
|
|
475
|
-
});
|
|
476
|
-
});
|
|
477
|
-
|
|
478
|
-
describe('persistence', () => {
|
|
479
|
-
it('persists stores across service instances', async () => {
|
|
480
|
-
const storeDir = await mkdtemp(join(tmpdir(), 'persist-'));
|
|
481
|
-
await storeService.create({
|
|
482
|
-
name: 'Persistent Store',
|
|
483
|
-
type: 'file',
|
|
484
|
-
path: storeDir,
|
|
485
|
-
});
|
|
486
|
-
|
|
487
|
-
// Create new service instance with same data dir
|
|
488
|
-
const newService = new StoreService(tempDir);
|
|
489
|
-
await newService.initialize();
|
|
490
|
-
|
|
491
|
-
const stores = await newService.list();
|
|
492
|
-
expect(stores).toHaveLength(1);
|
|
493
|
-
expect(stores[0].name).toBe('Persistent Store');
|
|
494
|
-
|
|
495
|
-
await rm(storeDir, { recursive: true, force: true });
|
|
496
|
-
});
|
|
497
|
-
|
|
498
|
-
it('initializes with empty stores when no registry file exists', async () => {
|
|
499
|
-
const stores = await storeService.list();
|
|
500
|
-
expect(stores).toHaveLength(0);
|
|
501
|
-
});
|
|
502
|
-
});
|
|
503
|
-
|
|
504
|
-
describe('first-run vs corruption handling (CLAUDE.md compliance)', () => {
|
|
505
|
-
it('creates stores.json file on first run', async () => {
|
|
506
|
-
const freshDir = await mkdtemp(join(tmpdir(), 'fresh-'));
|
|
507
|
-
const freshService = new StoreService(freshDir);
|
|
508
|
-
await freshService.initialize();
|
|
509
|
-
|
|
510
|
-
// File should now exist
|
|
511
|
-
const registryPath = join(freshDir, 'stores.json');
|
|
512
|
-
await expect(access(registryPath)).resolves.toBeUndefined();
|
|
513
|
-
|
|
514
|
-
await rm(freshDir, { recursive: true, force: true });
|
|
515
|
-
});
|
|
516
|
-
|
|
517
|
-
it('throws on corrupted stores.json', async () => {
|
|
518
|
-
const corruptDir = await mkdtemp(join(tmpdir(), 'corrupt-'));
|
|
519
|
-
const registryPath = join(corruptDir, 'stores.json');
|
|
520
|
-
await writeFile(registryPath, '{invalid json syntax');
|
|
521
|
-
|
|
522
|
-
const freshService = new StoreService(corruptDir);
|
|
523
|
-
|
|
524
|
-
// Should throw per CLAUDE.md "fail early and fast"
|
|
525
|
-
await expect(freshService.initialize()).rejects.toThrow();
|
|
526
|
-
|
|
527
|
-
await rm(corruptDir, { recursive: true, force: true });
|
|
528
|
-
});
|
|
529
|
-
|
|
530
|
-
it('throws with descriptive message on JSON parse error', async () => {
|
|
531
|
-
const corruptDir = await mkdtemp(join(tmpdir(), 'corrupt-'));
|
|
532
|
-
const registryPath = join(corruptDir, 'stores.json');
|
|
533
|
-
await writeFile(registryPath, '{"stores": [');
|
|
534
|
-
|
|
535
|
-
const freshService = new StoreService(corruptDir);
|
|
536
|
-
|
|
537
|
-
await expect(freshService.initialize()).rejects.toThrow(/JSON|parse|registry/i);
|
|
538
|
-
|
|
539
|
-
await rm(corruptDir, { recursive: true, force: true });
|
|
540
|
-
});
|
|
541
|
-
|
|
542
|
-
it('filters out null entries from stores array on load', async () => {
|
|
543
|
-
const nullDir = await mkdtemp(join(tmpdir(), 'null-entry-'));
|
|
544
|
-
const registryPath = join(nullDir, 'stores.json');
|
|
545
|
-
const validStore = {
|
|
546
|
-
id: 'test-id',
|
|
547
|
-
type: 'file',
|
|
548
|
-
name: 'valid-store',
|
|
549
|
-
path: '/some/path',
|
|
550
|
-
status: 'ready',
|
|
551
|
-
createdAt: new Date().toISOString(),
|
|
552
|
-
updatedAt: new Date().toISOString(),
|
|
553
|
-
};
|
|
554
|
-
await writeFile(registryPath, JSON.stringify({ stores: [null, validStore, null] }));
|
|
555
|
-
|
|
556
|
-
const freshService = new StoreService(nullDir);
|
|
557
|
-
await freshService.initialize();
|
|
558
|
-
|
|
559
|
-
const stores = await freshService.list();
|
|
560
|
-
expect(stores).toHaveLength(1);
|
|
561
|
-
expect(stores[0]?.name).toBe('valid-store');
|
|
562
|
-
|
|
563
|
-
await rm(nullDir, { recursive: true, force: true });
|
|
564
|
-
});
|
|
565
|
-
});
|
|
566
|
-
|
|
567
|
-
describe('store definition auto-update', () => {
|
|
568
|
-
let projectRoot: string;
|
|
569
|
-
let dataDir: string;
|
|
570
|
-
let serviceWithDefs: StoreService;
|
|
571
|
-
let defService: StoreDefinitionService;
|
|
572
|
-
|
|
573
|
-
beforeEach(async () => {
|
|
574
|
-
projectRoot = await mkdtemp(join(tmpdir(), 'store-def-auto-'));
|
|
575
|
-
dataDir = join(projectRoot, '.bluera/bluera-knowledge/data');
|
|
576
|
-
defService = new StoreDefinitionService(projectRoot);
|
|
577
|
-
serviceWithDefs = new StoreService(dataDir, { definitionService: defService });
|
|
578
|
-
await serviceWithDefs.initialize();
|
|
579
|
-
});
|
|
580
|
-
|
|
581
|
-
afterEach(async () => {
|
|
582
|
-
await rm(projectRoot, { recursive: true, force: true });
|
|
583
|
-
});
|
|
584
|
-
|
|
585
|
-
describe('create adds definition', () => {
|
|
586
|
-
it('adds file store definition when creating file store', async () => {
|
|
587
|
-
const storeDir = await mkdtemp(join(tmpdir(), 'file-store-'));
|
|
588
|
-
const result = await serviceWithDefs.create({
|
|
589
|
-
name: 'my-docs',
|
|
590
|
-
type: 'file',
|
|
591
|
-
path: storeDir,
|
|
592
|
-
description: 'My documentation',
|
|
593
|
-
tags: ['docs'],
|
|
594
|
-
});
|
|
595
|
-
|
|
596
|
-
expect(result.success).toBe(true);
|
|
597
|
-
|
|
598
|
-
const def = await defService.getByName('my-docs');
|
|
599
|
-
expect(def).toBeDefined();
|
|
600
|
-
expect(def?.type).toBe('file');
|
|
601
|
-
expect(def?.name).toBe('my-docs');
|
|
602
|
-
if (def?.type === 'file') {
|
|
603
|
-
expect(def.path).toBe(storeDir);
|
|
604
|
-
}
|
|
605
|
-
expect(def?.description).toBe('My documentation');
|
|
606
|
-
expect(def?.tags).toEqual(['docs']);
|
|
607
|
-
|
|
608
|
-
await rm(storeDir, { recursive: true, force: true });
|
|
609
|
-
});
|
|
610
|
-
|
|
611
|
-
it('adds repo store definition when creating repo store with path', async () => {
|
|
612
|
-
const repoDir = await mkdtemp(join(tmpdir(), 'repo-store-'));
|
|
613
|
-
const result = await serviceWithDefs.create({
|
|
614
|
-
name: 'my-repo',
|
|
615
|
-
type: 'repo',
|
|
616
|
-
path: repoDir,
|
|
617
|
-
branch: 'main',
|
|
618
|
-
description: 'Example repo',
|
|
619
|
-
});
|
|
620
|
-
|
|
621
|
-
expect(result.success).toBe(true);
|
|
622
|
-
|
|
623
|
-
const def = await defService.getByName('my-repo');
|
|
624
|
-
expect(def).toBeDefined();
|
|
625
|
-
expect(def?.type).toBe('repo');
|
|
626
|
-
if (def?.type === 'repo') {
|
|
627
|
-
expect(def.branch).toBe('main');
|
|
628
|
-
}
|
|
629
|
-
|
|
630
|
-
await rm(repoDir, { recursive: true, force: true });
|
|
631
|
-
});
|
|
632
|
-
|
|
633
|
-
it('adds web store definition when creating web store', async () => {
|
|
634
|
-
const result = await serviceWithDefs.create({
|
|
635
|
-
name: 'my-site',
|
|
636
|
-
type: 'web',
|
|
637
|
-
url: 'https://example.com/docs',
|
|
638
|
-
depth: 2,
|
|
639
|
-
description: 'Example site',
|
|
640
|
-
});
|
|
641
|
-
|
|
642
|
-
expect(result.success).toBe(true);
|
|
643
|
-
|
|
644
|
-
const def = await defService.getByName('my-site');
|
|
645
|
-
expect(def).toBeDefined();
|
|
646
|
-
expect(def?.type).toBe('web');
|
|
647
|
-
if (def?.type === 'web') {
|
|
648
|
-
expect(def.url).toBe('https://example.com/docs');
|
|
649
|
-
expect(def.depth).toBe(2);
|
|
650
|
-
}
|
|
651
|
-
});
|
|
652
|
-
|
|
653
|
-
it('does not add definition when store creation fails', async () => {
|
|
654
|
-
const result = await serviceWithDefs.create({
|
|
655
|
-
name: 'bad-store',
|
|
656
|
-
type: 'file',
|
|
657
|
-
path: '/nonexistent/path',
|
|
658
|
-
});
|
|
659
|
-
|
|
660
|
-
expect(result.success).toBe(false);
|
|
661
|
-
|
|
662
|
-
const def = await defService.getByName('bad-store');
|
|
663
|
-
expect(def).toBeUndefined();
|
|
664
|
-
});
|
|
665
|
-
|
|
666
|
-
it('does not add definition when skipDefinitionSync is true', async () => {
|
|
667
|
-
const storeDir = await mkdtemp(join(tmpdir(), 'skip-def-'));
|
|
668
|
-
const result = await serviceWithDefs.create(
|
|
669
|
-
{
|
|
670
|
-
name: 'skip-store',
|
|
671
|
-
type: 'file',
|
|
672
|
-
path: storeDir,
|
|
673
|
-
},
|
|
674
|
-
{ skipDefinitionSync: true }
|
|
675
|
-
);
|
|
676
|
-
|
|
677
|
-
expect(result.success).toBe(true);
|
|
678
|
-
|
|
679
|
-
const def = await defService.getByName('skip-store');
|
|
680
|
-
expect(def).toBeUndefined();
|
|
681
|
-
|
|
682
|
-
await rm(storeDir, { recursive: true, force: true });
|
|
683
|
-
});
|
|
684
|
-
});
|
|
685
|
-
|
|
686
|
-
describe('delete removes definition', () => {
|
|
687
|
-
it('removes definition when store is deleted', async () => {
|
|
688
|
-
const storeDir = await mkdtemp(join(tmpdir(), 'del-store-'));
|
|
689
|
-
const createResult = await serviceWithDefs.create({
|
|
690
|
-
name: 'to-delete',
|
|
691
|
-
type: 'file',
|
|
692
|
-
path: storeDir,
|
|
693
|
-
});
|
|
694
|
-
|
|
695
|
-
if (!createResult.success) throw new Error('Create failed');
|
|
696
|
-
|
|
697
|
-
// Verify definition exists
|
|
698
|
-
let def = await defService.getByName('to-delete');
|
|
699
|
-
expect(def).toBeDefined();
|
|
700
|
-
|
|
701
|
-
// Delete the store
|
|
702
|
-
const deleteResult = await serviceWithDefs.delete(createResult.data.id);
|
|
703
|
-
expect(deleteResult.success).toBe(true);
|
|
704
|
-
|
|
705
|
-
// Definition should be removed
|
|
706
|
-
def = await defService.getByName('to-delete');
|
|
707
|
-
expect(def).toBeUndefined();
|
|
708
|
-
|
|
709
|
-
await rm(storeDir, { recursive: true, force: true });
|
|
710
|
-
});
|
|
711
|
-
|
|
712
|
-
it('does not remove definition when skipDefinitionSync is true', async () => {
|
|
713
|
-
const storeDir = await mkdtemp(join(tmpdir(), 'del-skip-'));
|
|
714
|
-
const createResult = await serviceWithDefs.create({
|
|
715
|
-
name: 'keep-def',
|
|
716
|
-
type: 'file',
|
|
717
|
-
path: storeDir,
|
|
718
|
-
});
|
|
719
|
-
|
|
720
|
-
if (!createResult.success) throw new Error('Create failed');
|
|
721
|
-
|
|
722
|
-
// Delete with skipDefinitionSync
|
|
723
|
-
const deleteResult = await serviceWithDefs.delete(createResult.data.id, {
|
|
724
|
-
skipDefinitionSync: true,
|
|
725
|
-
});
|
|
726
|
-
expect(deleteResult.success).toBe(true);
|
|
727
|
-
|
|
728
|
-
// Definition should still exist
|
|
729
|
-
const def = await defService.getByName('keep-def');
|
|
730
|
-
expect(def).toBeDefined();
|
|
731
|
-
|
|
732
|
-
await rm(storeDir, { recursive: true, force: true });
|
|
733
|
-
});
|
|
734
|
-
});
|
|
735
|
-
|
|
736
|
-
describe('update syncs definition', () => {
|
|
737
|
-
it('updates definition when store description is updated', async () => {
|
|
738
|
-
const storeDir = await mkdtemp(join(tmpdir(), 'upd-store-'));
|
|
739
|
-
const createResult = await serviceWithDefs.create({
|
|
740
|
-
name: 'to-update',
|
|
741
|
-
type: 'file',
|
|
742
|
-
path: storeDir,
|
|
743
|
-
description: 'Original description',
|
|
744
|
-
});
|
|
745
|
-
|
|
746
|
-
if (!createResult.success) throw new Error('Create failed');
|
|
747
|
-
|
|
748
|
-
const updateResult = await serviceWithDefs.update(createResult.data.id, {
|
|
749
|
-
description: 'Updated description',
|
|
750
|
-
});
|
|
751
|
-
expect(updateResult.success).toBe(true);
|
|
752
|
-
|
|
753
|
-
const def = await defService.getByName('to-update');
|
|
754
|
-
expect(def?.description).toBe('Updated description');
|
|
755
|
-
|
|
756
|
-
await rm(storeDir, { recursive: true, force: true });
|
|
757
|
-
});
|
|
758
|
-
|
|
759
|
-
it('updates definition when store tags are updated', async () => {
|
|
760
|
-
const storeDir = await mkdtemp(join(tmpdir(), 'upd-tags-'));
|
|
761
|
-
const createResult = await serviceWithDefs.create({
|
|
762
|
-
name: 'tag-store',
|
|
763
|
-
type: 'file',
|
|
764
|
-
path: storeDir,
|
|
765
|
-
tags: ['old'],
|
|
766
|
-
});
|
|
767
|
-
|
|
768
|
-
if (!createResult.success) throw new Error('Create failed');
|
|
769
|
-
|
|
770
|
-
const updateResult = await serviceWithDefs.update(createResult.data.id, {
|
|
771
|
-
tags: ['new', 'tags'],
|
|
772
|
-
});
|
|
773
|
-
expect(updateResult.success).toBe(true);
|
|
774
|
-
|
|
775
|
-
const def = await defService.getByName('tag-store');
|
|
776
|
-
expect(def?.tags).toEqual(['new', 'tags']);
|
|
777
|
-
|
|
778
|
-
await rm(storeDir, { recursive: true, force: true });
|
|
779
|
-
});
|
|
780
|
-
|
|
781
|
-
it('does not update definition when skipDefinitionSync is true', async () => {
|
|
782
|
-
const storeDir = await mkdtemp(join(tmpdir(), 'upd-skip-'));
|
|
783
|
-
const createResult = await serviceWithDefs.create({
|
|
784
|
-
name: 'skip-update',
|
|
785
|
-
type: 'file',
|
|
786
|
-
path: storeDir,
|
|
787
|
-
description: 'Original',
|
|
788
|
-
});
|
|
789
|
-
|
|
790
|
-
if (!createResult.success) throw new Error('Create failed');
|
|
791
|
-
|
|
792
|
-
const updateResult = await serviceWithDefs.update(
|
|
793
|
-
createResult.data.id,
|
|
794
|
-
{ description: 'Updated' },
|
|
795
|
-
{ skipDefinitionSync: true }
|
|
796
|
-
);
|
|
797
|
-
expect(updateResult.success).toBe(true);
|
|
798
|
-
|
|
799
|
-
const def = await defService.getByName('skip-update');
|
|
800
|
-
expect(def?.description).toBe('Original');
|
|
801
|
-
|
|
802
|
-
await rm(storeDir, { recursive: true, force: true });
|
|
803
|
-
});
|
|
804
|
-
});
|
|
805
|
-
|
|
806
|
-
describe('persistence', () => {
|
|
807
|
-
it('persists definition to config file', async () => {
|
|
808
|
-
const storeDir = await mkdtemp(join(tmpdir(), 'persist-def-'));
|
|
809
|
-
await serviceWithDefs.create({
|
|
810
|
-
name: 'persistent-store',
|
|
811
|
-
type: 'file',
|
|
812
|
-
path: storeDir,
|
|
813
|
-
});
|
|
814
|
-
|
|
815
|
-
// Read config file directly
|
|
816
|
-
const configPath = join(projectRoot, '.bluera/bluera-knowledge/stores.config.json');
|
|
817
|
-
const content = await readFile(configPath, 'utf-8');
|
|
818
|
-
const config = JSON.parse(content);
|
|
819
|
-
|
|
820
|
-
expect(config.stores).toHaveLength(1);
|
|
821
|
-
expect(config.stores[0].name).toBe('persistent-store');
|
|
822
|
-
|
|
823
|
-
await rm(storeDir, { recursive: true, force: true });
|
|
824
|
-
});
|
|
825
|
-
});
|
|
826
|
-
|
|
827
|
-
describe('without definition service', () => {
|
|
828
|
-
it('works normally without definition service injected', async () => {
|
|
829
|
-
// Use the storeService from outer scope (no definition service)
|
|
830
|
-
const storeDir = await mkdtemp(join(tmpdir(), 'no-def-'));
|
|
831
|
-
const result = await storeService.create({
|
|
832
|
-
name: 'no-def-store',
|
|
833
|
-
type: 'file',
|
|
834
|
-
path: storeDir,
|
|
835
|
-
});
|
|
836
|
-
|
|
837
|
-
expect(result.success).toBe(true);
|
|
838
|
-
|
|
839
|
-
await rm(storeDir, { recursive: true, force: true });
|
|
840
|
-
});
|
|
841
|
-
});
|
|
842
|
-
});
|
|
843
|
-
});
|