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,24 @@
|
|
|
1
|
+
(The MIT License)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2009-2014 TJ Holowaychuk <tj@vision-media.ca>
|
|
4
|
+
Copyright (c) 2013-2014 Roman Shtylman <shtylman+expressjs@gmail.com>
|
|
5
|
+
Copyright (c) 2014-2015 Douglas Christopher Wilson <doug@somethingdoug.com>
|
|
6
|
+
|
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
8
|
+
a copy of this software and associated documentation files (the
|
|
9
|
+
'Software'), to deal in the Software without restriction, including
|
|
10
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
11
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
12
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
13
|
+
the following conditions:
|
|
14
|
+
|
|
15
|
+
The above copyright notice and this permission notice shall be
|
|
16
|
+
included in all copies or substantial portions of the Software.
|
|
17
|
+
|
|
18
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
19
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
20
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
21
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
22
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
23
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
24
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
[](https://expressjs.com/)
|
|
2
|
+
|
|
3
|
+
**Fast, unopinionated, minimalist web framework for [Node.js](https://nodejs.org).**
|
|
4
|
+
|
|
5
|
+
**This project has a [Code of Conduct].**
|
|
6
|
+
|
|
7
|
+
## Table of contents
|
|
8
|
+
|
|
9
|
+
- [Table of contents](#table-of-contents)
|
|
10
|
+
- [Installation](#installation)
|
|
11
|
+
- [Features](#features)
|
|
12
|
+
- [Docs \& Community](#docs--community)
|
|
13
|
+
- [Quick Start](#quick-start)
|
|
14
|
+
- [Philosophy](#philosophy)
|
|
15
|
+
- [Examples](#examples)
|
|
16
|
+
- [Contributing](#contributing)
|
|
17
|
+
- [Security Issues](#security-issues)
|
|
18
|
+
- [Running Tests](#running-tests)
|
|
19
|
+
- [Current project team members](#current-project-team-members)
|
|
20
|
+
- [TC (Technical Committee)](#tc-technical-committee)
|
|
21
|
+
- [TC emeriti members](#tc-emeriti-members)
|
|
22
|
+
- [Triagers](#triagers)
|
|
23
|
+
- [Emeritus Triagers](#emeritus-triagers)
|
|
24
|
+
- [License](#license)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
[![NPM Version][npm-version-image]][npm-url]
|
|
28
|
+
[![NPM Downloads][npm-downloads-image]][npm-downloads-url]
|
|
29
|
+
[![Linux Build][github-actions-ci-image]][github-actions-ci-url]
|
|
30
|
+
[![Test Coverage][coveralls-image]][coveralls-url]
|
|
31
|
+
[![OpenSSF Scorecard Badge][ossf-scorecard-badge]][ossf-scorecard-visualizer]
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
```js
|
|
35
|
+
import express from 'express'
|
|
36
|
+
|
|
37
|
+
const app = express()
|
|
38
|
+
|
|
39
|
+
app.get('/', (req, res) => {
|
|
40
|
+
res.send('Hello World')
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
app.listen(3000, () => {
|
|
44
|
+
console.log('Server is running on http://localhost:3000')
|
|
45
|
+
})
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Installation
|
|
49
|
+
|
|
50
|
+
This is a [Node.js](https://nodejs.org/en/) module available through the
|
|
51
|
+
[npm registry](https://www.npmjs.com/).
|
|
52
|
+
|
|
53
|
+
Before installing, [download and install Node.js](https://nodejs.org/en/download/).
|
|
54
|
+
Node.js 18 or higher is required.
|
|
55
|
+
|
|
56
|
+
If this is a brand new project, make sure to create a `package.json` first with
|
|
57
|
+
the [`npm init` command](https://docs.npmjs.com/creating-a-package-json-file).
|
|
58
|
+
|
|
59
|
+
Installation is done using the
|
|
60
|
+
[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
npm install express
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Follow [our installing guide](https://expressjs.com/en/starter/installing.html)
|
|
67
|
+
for more information.
|
|
68
|
+
|
|
69
|
+
## Features
|
|
70
|
+
|
|
71
|
+
* Robust routing
|
|
72
|
+
* Focus on high performance
|
|
73
|
+
* Super-high test coverage
|
|
74
|
+
* HTTP helpers (redirection, caching, etc)
|
|
75
|
+
* View system supporting 14+ template engines
|
|
76
|
+
* Content negotiation
|
|
77
|
+
* Executable for generating applications quickly
|
|
78
|
+
|
|
79
|
+
## Docs & Community
|
|
80
|
+
|
|
81
|
+
* [Website and Documentation](https://expressjs.com/) - [[website repo](https://github.com/expressjs/expressjs.com)]
|
|
82
|
+
* [GitHub Organization](https://github.com/expressjs) for Official Middleware & Modules
|
|
83
|
+
* [Github Discussions](https://github.com/expressjs/discussions) for discussion on the development and usage of Express
|
|
84
|
+
|
|
85
|
+
**PROTIP** Be sure to read the [migration guide to v5](https://expressjs.com/en/guide/migrating-5)
|
|
86
|
+
|
|
87
|
+
## Quick Start
|
|
88
|
+
|
|
89
|
+
The quickest way to get started with express is to utilize the executable [`express(1)`](https://github.com/expressjs/generator) to generate an application as shown below:
|
|
90
|
+
|
|
91
|
+
Install the executable. The executable's major version will match Express's:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
npm install -g express-generator@4
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Create the app:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
express /tmp/foo && cd /tmp/foo
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Install dependencies:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
npm install
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Start the server:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
npm start
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
View the website at: http://localhost:3000
|
|
116
|
+
|
|
117
|
+
## Philosophy
|
|
118
|
+
|
|
119
|
+
The Express philosophy is to provide small, robust tooling for HTTP servers, making
|
|
120
|
+
it a great solution for single page applications, websites, hybrids, or public
|
|
121
|
+
HTTP APIs.
|
|
122
|
+
|
|
123
|
+
Express does not force you to use any specific ORM or template engine. With support for over
|
|
124
|
+
14 template engines via [@ladjs/consolidate](https://github.com/ladjs/consolidate),
|
|
125
|
+
you can quickly craft your perfect framework.
|
|
126
|
+
|
|
127
|
+
## Examples
|
|
128
|
+
|
|
129
|
+
To view the examples, clone the Express repository:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
git clone https://github.com/expressjs/express.git --depth 1 && cd express
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Then install the dependencies:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
npm install
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Then run whichever example you want:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
node examples/content-negotiation
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Contributing
|
|
148
|
+
|
|
149
|
+
The Express.js project welcomes all constructive contributions. Contributions take many forms,
|
|
150
|
+
from code for bug fixes and enhancements, to additions and fixes to documentation, additional
|
|
151
|
+
tests, triaging incoming pull requests and issues, and more!
|
|
152
|
+
|
|
153
|
+
See the [Contributing Guide] for more technical details on contributing.
|
|
154
|
+
|
|
155
|
+
### Security Issues
|
|
156
|
+
|
|
157
|
+
If you discover a security vulnerability in Express, please see [Security Policies and Procedures](SECURITY.md).
|
|
158
|
+
|
|
159
|
+
### Running Tests
|
|
160
|
+
|
|
161
|
+
To run the test suite, first install the dependencies:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
npm install
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Then run `npm test`:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
npm test
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Current project team members
|
|
174
|
+
|
|
175
|
+
For information about the governance of the express.js project, see [GOVERNANCE.md](https://github.com/expressjs/discussions/blob/HEAD/docs/GOVERNANCE.md).
|
|
176
|
+
|
|
177
|
+
The original author of Express is [TJ Holowaychuk](https://github.com/tj)
|
|
178
|
+
|
|
179
|
+
[List of all contributors](https://github.com/expressjs/express/graphs/contributors)
|
|
180
|
+
|
|
181
|
+
### TC (Technical Committee)
|
|
182
|
+
|
|
183
|
+
* [UlisesGascon](https://github.com/UlisesGascon) - **Ulises Gascón** (he/him)
|
|
184
|
+
* [jonchurch](https://github.com/jonchurch) - **Jon Church**
|
|
185
|
+
* [wesleytodd](https://github.com/wesleytodd) - **Wes Todd**
|
|
186
|
+
* [LinusU](https://github.com/LinusU) - **Linus Unnebäck**
|
|
187
|
+
* [blakeembrey](https://github.com/blakeembrey) - **Blake Embrey**
|
|
188
|
+
* [sheplu](https://github.com/sheplu) - **Jean Burellier**
|
|
189
|
+
* [crandmck](https://github.com/crandmck) - **Rand McKinney**
|
|
190
|
+
* [ctcpip](https://github.com/ctcpip) - **Chris de Almeida**
|
|
191
|
+
|
|
192
|
+
<details>
|
|
193
|
+
<summary>TC emeriti members</summary>
|
|
194
|
+
|
|
195
|
+
#### TC emeriti members
|
|
196
|
+
|
|
197
|
+
* [dougwilson](https://github.com/dougwilson) - **Douglas Wilson**
|
|
198
|
+
* [hacksparrow](https://github.com/hacksparrow) - **Hage Yaapa**
|
|
199
|
+
* [jonathanong](https://github.com/jonathanong) - **jongleberry**
|
|
200
|
+
* [niftylettuce](https://github.com/niftylettuce) - **niftylettuce**
|
|
201
|
+
* [troygoode](https://github.com/troygoode) - **Troy Goode**
|
|
202
|
+
</details>
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
### Triagers
|
|
206
|
+
|
|
207
|
+
* [aravindvnair99](https://github.com/aravindvnair99) - **Aravind Nair**
|
|
208
|
+
* [bjohansebas](https://github.com/bjohansebas) - **Sebastian Beltran**
|
|
209
|
+
* [carpasse](https://github.com/carpasse) - **Carlos Serrano**
|
|
210
|
+
* [CBID2](https://github.com/CBID2) - **Christine Belzie**
|
|
211
|
+
* [UlisesGascon](https://github.com/UlisesGascon) - **Ulises Gascón** (he/him)
|
|
212
|
+
* [IamLizu](https://github.com/IamLizu) - **S M Mahmudul Hasan** (he/him)
|
|
213
|
+
* [Phillip9587](https://github.com/Phillip9587) - **Phillip Barta**
|
|
214
|
+
* [efekrskl](https://github.com/efekrskl) - **Efe Karasakal**
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
<details>
|
|
218
|
+
<summary>Triagers emeriti members</summary>
|
|
219
|
+
|
|
220
|
+
#### Emeritus Triagers
|
|
221
|
+
|
|
222
|
+
* [AuggieH](https://github.com/AuggieH) - **Auggie Hudak**
|
|
223
|
+
* [G-Rath](https://github.com/G-Rath) - **Gareth Jones**
|
|
224
|
+
* [MohammadXroid](https://github.com/MohammadXroid) - **Mohammad Ayashi**
|
|
225
|
+
* [NawafSwe](https://github.com/NawafSwe) - **Nawaf Alsharqi**
|
|
226
|
+
* [NotMoni](https://github.com/NotMoni) - **Moni**
|
|
227
|
+
* [VigneshMurugan](https://github.com/VigneshMurugan) - **Vignesh Murugan**
|
|
228
|
+
* [davidmashe](https://github.com/davidmashe) - **David Ashe**
|
|
229
|
+
* [digitaIfabric](https://github.com/digitaIfabric) - **David**
|
|
230
|
+
* [e-l-i-s-e](https://github.com/e-l-i-s-e) - **Elise Bonner**
|
|
231
|
+
* [fed135](https://github.com/fed135) - **Frederic Charette**
|
|
232
|
+
* [firmanJS](https://github.com/firmanJS) - **Firman Abdul Hakim**
|
|
233
|
+
* [getspooky](https://github.com/getspooky) - **Yasser Ameur**
|
|
234
|
+
* [ghinks](https://github.com/ghinks) - **Glenn**
|
|
235
|
+
* [ghousemohamed](https://github.com/ghousemohamed) - **Ghouse Mohamed**
|
|
236
|
+
* [gireeshpunathil](https://github.com/gireeshpunathil) - **Gireesh Punathil**
|
|
237
|
+
* [jake32321](https://github.com/jake32321) - **Jake Reed**
|
|
238
|
+
* [jonchurch](https://github.com/jonchurch) - **Jon Church**
|
|
239
|
+
* [lekanikotun](https://github.com/lekanikotun) - **Troy Goode**
|
|
240
|
+
* [marsonya](https://github.com/marsonya) - **Lekan Ikotun**
|
|
241
|
+
* [mastermatt](https://github.com/mastermatt) - **Matt R. Wilson**
|
|
242
|
+
* [maxakuru](https://github.com/maxakuru) - **Max Edell**
|
|
243
|
+
* [mlrawlings](https://github.com/mlrawlings) - **Michael Rawlings**
|
|
244
|
+
* [rodion-arr](https://github.com/rodion-arr) - **Rodion Abdurakhimov**
|
|
245
|
+
* [sheplu](https://github.com/sheplu) - **Jean Burellier**
|
|
246
|
+
* [tarunyadav1](https://github.com/tarunyadav1) - **Tarun yadav**
|
|
247
|
+
* [tunniclm](https://github.com/tunniclm) - **Mike Tunnicliffe**
|
|
248
|
+
* [enyoghasim](https://github.com/enyoghasim) - **David Enyoghasim**
|
|
249
|
+
* [0ss](https://github.com/0ss) - **Salah**
|
|
250
|
+
* [import-brain](https://github.com/import-brain) - **Eric Cheng** (he/him)
|
|
251
|
+
* [dakshkhetan](https://github.com/dakshkhetan) - **Daksh Khetan** (he/him)
|
|
252
|
+
* [lucasraziel](https://github.com/lucasraziel) - **Lucas Soares Do Rego**
|
|
253
|
+
* [mertcanaltin](https://github.com/mertcanaltin) - **Mert Can Altin**
|
|
254
|
+
* [dpopp07](https://github.com/dpopp07) - **Dustin Popp**
|
|
255
|
+
* [Sushmeet](https://github.com/Sushmeet) - **Sushmeet Sunger**
|
|
256
|
+
* [3imed-jaberi](https://github.com/3imed-jaberi) - **Imed Jaberi**
|
|
257
|
+
|
|
258
|
+
</details>
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
## License
|
|
262
|
+
|
|
263
|
+
[MIT](LICENSE)
|
|
264
|
+
|
|
265
|
+
[coveralls-image]: https://img.shields.io/coverallsCoverage/github/expressjs/express?branch=master
|
|
266
|
+
[coveralls-url]: https://coveralls.io/r/expressjs/express?branch=master
|
|
267
|
+
[github-actions-ci-image]: https://img.shields.io/github/actions/workflow/status/expressjs/express/ci.yml?branch=master&label=ci
|
|
268
|
+
[github-actions-ci-url]: https://github.com/expressjs/express/actions/workflows/ci.yml
|
|
269
|
+
[npm-downloads-image]: https://img.shields.io/npm/dm/express
|
|
270
|
+
[npm-downloads-url]: https://npmcharts.com/compare/express?minimal=true
|
|
271
|
+
[npm-url]: https://npmjs.org/package/express
|
|
272
|
+
[npm-version-image]: https://img.shields.io/npm/v/express
|
|
273
|
+
[ossf-scorecard-badge]: https://api.scorecard.dev/projects/github.com/expressjs/express/badge
|
|
274
|
+
[ossf-scorecard-visualizer]: https://ossf.github.io/scorecard-visualizer/#/projects/github.com/expressjs/express
|
|
275
|
+
[Code of Conduct]: https://github.com/expressjs/.github/blob/HEAD/CODE_OF_CONDUCT.md
|
|
276
|
+
[Contributing Guide]: https://github.com/expressjs/.github/blob/HEAD/CONTRIBUTING.md
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Security Policies and Procedures
|
|
2
|
+
|
|
3
|
+
This document outlines security procedures and general policies for the Express
|
|
4
|
+
project.
|
|
5
|
+
|
|
6
|
+
* [Reporting a Bug](#reporting-a-bug)
|
|
7
|
+
* [Disclosure Policy](#disclosure-policy)
|
|
8
|
+
* [Comments on this Policy](#comments-on-this-policy)
|
|
9
|
+
|
|
10
|
+
## Reporting a Bug
|
|
11
|
+
|
|
12
|
+
The Express team and community take all security bugs in Express seriously.
|
|
13
|
+
Thank you for improving the security of Express. We appreciate your efforts and
|
|
14
|
+
responsible disclosure and will make every effort to acknowledge your
|
|
15
|
+
contributions.
|
|
16
|
+
|
|
17
|
+
Report security bugs by emailing `express-security@lists.openjsf.org`.
|
|
18
|
+
|
|
19
|
+
To ensure the timely response to your report, please ensure that the entirety
|
|
20
|
+
of the report is contained within the email body and not solely behind a web
|
|
21
|
+
link or an attachment.
|
|
22
|
+
|
|
23
|
+
The lead maintainer will acknowledge your email within 48 hours, and will send a
|
|
24
|
+
more detailed response within 48 hours indicating the next steps in handling
|
|
25
|
+
your report. After the initial reply to your report, the security team will
|
|
26
|
+
endeavor to keep you informed of the progress towards a fix and full
|
|
27
|
+
announcement, and may ask for additional information or guidance.
|
|
28
|
+
|
|
29
|
+
Report security bugs in third-party modules to the person or team maintaining
|
|
30
|
+
the module.
|
|
31
|
+
|
|
32
|
+
## Pre-release Versions
|
|
33
|
+
|
|
34
|
+
Alpha and Beta releases are unstable and **not suitable for production use**.
|
|
35
|
+
Vulnerabilities found in pre-releases should be reported according to the [Reporting a Bug](#reporting-a-bug) section.
|
|
36
|
+
Due to the unstable nature of the branch it is not guaranteed that any fixes will be released in the next pre-release.
|
|
37
|
+
|
|
38
|
+
## Disclosure Policy
|
|
39
|
+
|
|
40
|
+
When the security team receives a security bug report, they will assign it to a
|
|
41
|
+
primary handler. This person will coordinate the fix and release process,
|
|
42
|
+
involving the following steps:
|
|
43
|
+
|
|
44
|
+
* Confirm the problem and determine the affected versions.
|
|
45
|
+
* Audit code to find any potential similar problems.
|
|
46
|
+
* Prepare fixes for all releases still under maintenance. These fixes will be
|
|
47
|
+
released as fast as possible to npm.
|
|
48
|
+
|
|
49
|
+
## The Express Threat Model
|
|
50
|
+
|
|
51
|
+
We are currently working on a new version of the security model, the most updated version can be found [here](https://github.com/expressjs/security-wg/blob/main/docs/ThreatModel.md)
|
|
52
|
+
|
|
53
|
+
## Comments on this Policy
|
|
54
|
+
|
|
55
|
+
If you have suggestions on how this process could be improved please submit a
|
|
56
|
+
pull request.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
all:
|
|
3
|
+
@./run 1 middleware 50
|
|
4
|
+
@./run 5 middleware 50
|
|
5
|
+
@./run 10 middleware 50
|
|
6
|
+
@./run 15 middleware 50
|
|
7
|
+
@./run 20 middleware 50
|
|
8
|
+
@./run 30 middleware 50
|
|
9
|
+
@./run 50 middleware 50
|
|
10
|
+
@./run 100 middleware 50
|
|
11
|
+
@./run 10 middleware 100
|
|
12
|
+
@./run 10 middleware 250
|
|
13
|
+
@./run 10 middleware 500
|
|
14
|
+
@./run 10 middleware 1000
|
|
15
|
+
@echo
|
|
16
|
+
|
|
17
|
+
.PHONY: all
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Express Benchmarks
|
|
2
|
+
|
|
3
|
+
## Installation
|
|
4
|
+
|
|
5
|
+
You will need to install [wrk](https://github.com/wg/wrk/blob/master/INSTALL) in order to run the benchmarks.
|
|
6
|
+
|
|
7
|
+
## Running
|
|
8
|
+
|
|
9
|
+
To run the benchmarks, first install the dependencies `npm i`, then run `make`
|
|
10
|
+
|
|
11
|
+
The output will look something like this:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
50 connections
|
|
15
|
+
1 middleware
|
|
16
|
+
7.15ms
|
|
17
|
+
6784.01
|
|
18
|
+
|
|
19
|
+
[...redacted...]
|
|
20
|
+
|
|
21
|
+
1000 connections
|
|
22
|
+
10 middleware
|
|
23
|
+
139.21ms
|
|
24
|
+
6155.19
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Tip: Include Node.js version in output
|
|
29
|
+
|
|
30
|
+
You can use `make && node -v` to include the node.js version in the output.
|
|
31
|
+
|
|
32
|
+
### Tip: Save the results to a file
|
|
33
|
+
|
|
34
|
+
You can use `make > results.log` to save the results to a file `results.log`.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
var express = require('..');
|
|
3
|
+
var app = express();
|
|
4
|
+
|
|
5
|
+
// number of middleware
|
|
6
|
+
|
|
7
|
+
var n = parseInt(process.env.MW || '1', 10);
|
|
8
|
+
console.log(' %s middleware', n);
|
|
9
|
+
|
|
10
|
+
while (n--) {
|
|
11
|
+
app.use(function(req, res, next){
|
|
12
|
+
next();
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
app.use(function(req, res){
|
|
17
|
+
res.send('Hello World')
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
app.listen(3333);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
echo
|
|
4
|
+
MW=$1 node $2 &
|
|
5
|
+
pid=$!
|
|
6
|
+
|
|
7
|
+
echo " $3 connections"
|
|
8
|
+
|
|
9
|
+
sleep 2
|
|
10
|
+
|
|
11
|
+
wrk 'http://localhost:3333/?foo[bar]=baz' \
|
|
12
|
+
-d 3 \
|
|
13
|
+
-c $3 \
|
|
14
|
+
-t 8 \
|
|
15
|
+
| grep 'Requests/sec\|Latency' \
|
|
16
|
+
| awk '{ print " " $2 }'
|
|
17
|
+
|
|
18
|
+
kill $pid
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Express examples
|
|
2
|
+
|
|
3
|
+
This page contains list of examples using Express.
|
|
4
|
+
|
|
5
|
+
- [auth](./auth) - Authentication with login and password
|
|
6
|
+
- [content-negotiation](./content-negotiation) - HTTP content negotiation
|
|
7
|
+
- [cookie-sessions](./cookie-sessions) - Working with cookie-based sessions
|
|
8
|
+
- [cookies](./cookies) - Working with cookies
|
|
9
|
+
- [downloads](./downloads) - Transferring files to client
|
|
10
|
+
- [ejs](./ejs) - Working with Embedded JavaScript templating (ejs)
|
|
11
|
+
- [error-pages](./error-pages) - Creating error pages
|
|
12
|
+
- [error](./error) - Working with error middleware
|
|
13
|
+
- [hello-world](./hello-world) - Simple request handler
|
|
14
|
+
- [markdown](./markdown) - Markdown as template engine
|
|
15
|
+
- [multi-router](./multi-router) - Working with multiple Express routers
|
|
16
|
+
- [mvc](./mvc) - MVC-style controllers
|
|
17
|
+
- [online](./online) - Tracking online user activity with `online` and `redis` packages
|
|
18
|
+
- [params](./params) - Working with route parameters
|
|
19
|
+
- [resource](./resource) - Multiple HTTP operations on the same resource
|
|
20
|
+
- [route-map](./route-map) - Organizing routes using a map
|
|
21
|
+
- [route-middleware](./route-middleware) - Working with route middleware
|
|
22
|
+
- [route-separation](./route-separation) - Organizing routes per each resource
|
|
23
|
+
- [search](./search) - Search API
|
|
24
|
+
- [session](./session) - User sessions
|
|
25
|
+
- [static-files](./static-files) - Serving static files
|
|
26
|
+
- [vhost](./vhost) - Working with virtual hosts
|
|
27
|
+
- [view-constructor](./view-constructor) - Rendering views dynamically
|
|
28
|
+
- [view-locals](./view-locals) - Saving data in request object between middleware calls
|
|
29
|
+
- [web-service](./web-service) - Simple API service
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Module dependencies.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
var express = require('../..');
|
|
8
|
+
var hash = require('pbkdf2-password')()
|
|
9
|
+
var path = require('node:path');
|
|
10
|
+
var session = require('express-session');
|
|
11
|
+
|
|
12
|
+
var app = module.exports = express();
|
|
13
|
+
|
|
14
|
+
// config
|
|
15
|
+
|
|
16
|
+
app.set('view engine', 'ejs');
|
|
17
|
+
app.set('views', path.join(__dirname, 'views'));
|
|
18
|
+
|
|
19
|
+
// middleware
|
|
20
|
+
|
|
21
|
+
app.use(express.urlencoded())
|
|
22
|
+
app.use(session({
|
|
23
|
+
resave: false, // don't save session if unmodified
|
|
24
|
+
saveUninitialized: false, // don't create session until something stored
|
|
25
|
+
secret: 'shhhh, very secret'
|
|
26
|
+
}));
|
|
27
|
+
|
|
28
|
+
// Session-persisted message middleware
|
|
29
|
+
|
|
30
|
+
app.use(function(req, res, next){
|
|
31
|
+
var err = req.session.error;
|
|
32
|
+
var msg = req.session.success;
|
|
33
|
+
delete req.session.error;
|
|
34
|
+
delete req.session.success;
|
|
35
|
+
res.locals.message = '';
|
|
36
|
+
if (err) res.locals.message = '<p class="msg error">' + err + '</p>';
|
|
37
|
+
if (msg) res.locals.message = '<p class="msg success">' + msg + '</p>';
|
|
38
|
+
next();
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// dummy database
|
|
42
|
+
|
|
43
|
+
var users = {
|
|
44
|
+
tj: { name: 'tj' }
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// when you create a user, generate a salt
|
|
48
|
+
// and hash the password ('foobar' is the pass here)
|
|
49
|
+
|
|
50
|
+
hash({ password: 'foobar' }, function (err, pass, salt, hash) {
|
|
51
|
+
if (err) throw err;
|
|
52
|
+
// store the salt & hash in the "db"
|
|
53
|
+
users.tj.salt = salt;
|
|
54
|
+
users.tj.hash = hash;
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
// Authenticate using our plain-object database of doom!
|
|
59
|
+
|
|
60
|
+
function authenticate(name, pass, fn) {
|
|
61
|
+
if (!module.parent) console.log('authenticating %s:%s', name, pass);
|
|
62
|
+
var user = users[name];
|
|
63
|
+
// query the db for the given username
|
|
64
|
+
if (!user) return fn(null, null)
|
|
65
|
+
// apply the same algorithm to the POSTed password, applying
|
|
66
|
+
// the hash against the pass / salt, if there is a match we
|
|
67
|
+
// found the user
|
|
68
|
+
hash({ password: pass, salt: user.salt }, function (err, pass, salt, hash) {
|
|
69
|
+
if (err) return fn(err);
|
|
70
|
+
if (hash === user.hash) return fn(null, user)
|
|
71
|
+
fn(null, null)
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function restrict(req, res, next) {
|
|
76
|
+
if (req.session.user) {
|
|
77
|
+
next();
|
|
78
|
+
} else {
|
|
79
|
+
req.session.error = 'Access denied!';
|
|
80
|
+
res.redirect('/login');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
app.get('/', function(req, res){
|
|
85
|
+
res.redirect('/login');
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
app.get('/restricted', restrict, function(req, res){
|
|
89
|
+
res.send('Wahoo! restricted area, click to <a href="/logout">logout</a>');
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
app.get('/logout', function(req, res){
|
|
93
|
+
// destroy the user's session to log them out
|
|
94
|
+
// will be re-created next request
|
|
95
|
+
req.session.destroy(function(){
|
|
96
|
+
res.redirect('/');
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
app.get('/login', function(req, res){
|
|
101
|
+
res.render('login');
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
app.post('/login', function (req, res, next) {
|
|
105
|
+
if (!req.body) return res.sendStatus(400)
|
|
106
|
+
authenticate(req.body.username, req.body.password, function(err, user){
|
|
107
|
+
if (err) return next(err)
|
|
108
|
+
if (user) {
|
|
109
|
+
// Regenerate session when signing in
|
|
110
|
+
// to prevent fixation
|
|
111
|
+
req.session.regenerate(function(){
|
|
112
|
+
// Store the user's primary key
|
|
113
|
+
// in the session store to be retrieved,
|
|
114
|
+
// or in this case the entire user object
|
|
115
|
+
req.session.user = user;
|
|
116
|
+
req.session.success = 'Authenticated as ' + user.name
|
|
117
|
+
+ ' click to <a href="/logout">logout</a>. '
|
|
118
|
+
+ ' You may now access <a href="/restricted">/restricted</a>.';
|
|
119
|
+
res.redirect(req.get('Referrer') || '/');
|
|
120
|
+
});
|
|
121
|
+
} else {
|
|
122
|
+
req.session.error = 'Authentication failed, please check your '
|
|
123
|
+
+ ' username and password.'
|
|
124
|
+
+ ' (use "tj" and "foobar")';
|
|
125
|
+
res.redirect('/login');
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
/* istanbul ignore next */
|
|
131
|
+
if (!module.parent) {
|
|
132
|
+
app.listen(3000);
|
|
133
|
+
console.log('Express started on port 3000');
|
|
134
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
6
|
+
<title><%= title %></title>
|
|
7
|
+
<style>
|
|
8
|
+
body {
|
|
9
|
+
padding: 50px;
|
|
10
|
+
font: 13px Helvetica, Arial, sans-serif;
|
|
11
|
+
}
|
|
12
|
+
.error {
|
|
13
|
+
color: red;
|
|
14
|
+
}
|
|
15
|
+
.success {
|
|
16
|
+
color: green;
|
|
17
|
+
}
|
|
18
|
+
</style>
|
|
19
|
+
</head>
|
|
20
|
+
<body>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
|
|
2
|
+
<%- include('head', { title: 'Authentication Example' }) -%>
|
|
3
|
+
|
|
4
|
+
<h1>Login</h1>
|
|
5
|
+
<%- message %>
|
|
6
|
+
Try accessing <a href="/restricted">/restricted</a>, then authenticate with "tj" and "foobar".
|
|
7
|
+
<form method="post" action="/login">
|
|
8
|
+
<p>
|
|
9
|
+
<label for="username">Username:</label>
|
|
10
|
+
<input type="text" name="username" id="username">
|
|
11
|
+
</p>
|
|
12
|
+
<p>
|
|
13
|
+
<label for="password">Password:</label>
|
|
14
|
+
<input type="text" name="password" id="password">
|
|
15
|
+
</p>
|
|
16
|
+
<p>
|
|
17
|
+
<input type="submit" value="Login">
|
|
18
|
+
</p>
|
|
19
|
+
</form>
|
|
20
|
+
|
|
21
|
+
<%- include('foot') -%>
|