Repository: eggjs/egg Branch: next Commit: 1980cf16dc06 Files: 6135 Total size: 11.6 MB Directory structure: gitextract_0ajxm_o6/ ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report-cn.yml │ │ ├── bug-report.yml │ │ ├── feature-request-cn.yml │ │ ├── feature-request.yml │ │ ├── rfc-cn.yml │ │ └── rfc.yml │ ├── actions/ │ │ └── clone/ │ │ └── action.yml │ ├── copilot-instructions.md │ └── workflows/ │ ├── ci.yml │ ├── cleanup-cache.yml │ ├── e2e-test.yml │ └── release.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .node-version ├── .oxfmtrc.json ├── .oxlintrc.json ├── .vscode/ │ └── settings.json ├── AGENTS.md ├── CHANGELOG.md ├── CLAUDE.md ├── CONTRIBUTING.md ├── CONTRIBUTING.zh-CN.md ├── LICENSE ├── README.md ├── README.zh-CN.md ├── SECURITY.md ├── ecosystem-ci/ │ ├── clone.ts │ ├── patch-project.ts │ └── repo.json ├── examples/ │ ├── helloworld-commonjs/ │ │ ├── app/ │ │ │ ├── controller/ │ │ │ │ └── home.js │ │ │ └── router.js │ │ ├── config/ │ │ │ ├── config.default.js │ │ │ └── plugin.js │ │ ├── index.js │ │ └── package.json │ ├── helloworld-tegg/ │ │ ├── app/ │ │ │ ├── biz/ │ │ │ │ ├── Foo.ts │ │ │ │ ├── HelloService.ts │ │ │ │ ├── WorldService.ts │ │ │ │ └── package.json │ │ │ └── port/ │ │ │ ├── controller/ │ │ │ │ ├── ArgsController.ts │ │ │ │ ├── HomeController.ts │ │ │ │ └── SimpleController.ts │ │ │ ├── package.json │ │ │ └── schedule/ │ │ │ ├── CronDemo.ts │ │ │ └── Demo.ts │ │ ├── app.ts │ │ ├── config/ │ │ │ ├── config.default.ts │ │ │ └── plugin.ts │ │ ├── package.json │ │ ├── test/ │ │ │ ├── ArgsController.test.ts │ │ │ ├── SimpleController.test.ts │ │ │ └── setup.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ └── helloworld-typescript/ │ ├── app/ │ │ ├── controller/ │ │ │ └── home.ts │ │ ├── middleware/ │ │ │ └── hello.ts │ │ └── router.ts │ ├── app.ts │ ├── config/ │ │ └── config.default.ts │ ├── package.json │ ├── test/ │ │ ├── hello.test.ts │ │ └── setup.ts │ ├── tsconfig.json │ ├── tsdown.config.ts │ └── vitest.config.ts ├── package.json ├── packages/ │ ├── cluster/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent_worker.ts │ │ │ ├── app_worker.ts │ │ │ ├── error/ │ │ │ │ ├── ClusterAgentWorkerError.ts │ │ │ │ ├── ClusterWorkerExceptionError.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── master.ts │ │ │ └── utils/ │ │ │ ├── messenger.ts │ │ │ ├── mode/ │ │ │ │ ├── base/ │ │ │ │ │ ├── agent.ts │ │ │ │ │ └── app.ts │ │ │ │ └── impl/ │ │ │ │ ├── process/ │ │ │ │ │ ├── agent.ts │ │ │ │ │ └── app.ts │ │ │ │ └── worker_threads/ │ │ │ │ ├── agent.ts │ │ │ │ └── app.ts │ │ │ ├── options.ts │ │ │ ├── terminate.ts │ │ │ └── worker_manager.ts │ │ ├── test/ │ │ │ ├── agent_worker.test.ts │ │ │ ├── app_worker.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── apps/ │ │ │ │ │ ├── agent-debug-port/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── inject1.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── agent-die/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── start.js │ │ │ │ │ ├── agent-die-on-forkapp/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── agent-die-onboot/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── start.js │ │ │ │ │ ├── agent-exit/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── agent-start-error/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── agent-start-framework-error/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── agent-start-framework-ready-error/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── agent-worker-threads/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── agent-worker-threads-error/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-die/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-error-listeners/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-exit/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-kill/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-listen-hostname/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-listen-path/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-listen-port/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-listen-reusePort/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-listen-without-port/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-monitor/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-server/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-start-error/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-start-framework-error/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-start-framework-ready-error/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-start-timeout/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── before-close/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── check-status/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── cluster_mod_app/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── cluster_mod_sticky/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── custom-logger/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── debug-port/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── egg-ready/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── framework/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ │ ├── framework.js │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ └── custom/ │ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── framework-egg-default/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── framework-egg-default-noexist/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── framework-pkg-egg/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── framework-pkg-egg-noexist/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── frameworkapp/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── frameworkbiz/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── https-server/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── https-server-config/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── master-worker-started/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── messenger/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── mock-production-app/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── map.json │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── options/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── options-require/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ ├── inject.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── other-port/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── pid/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── reload-worker/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── script-start/ │ │ │ │ │ │ └── start-server.js │ │ │ │ │ ├── send-to-multiapp/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── sub-process/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── worker1.js │ │ │ │ │ │ └── worker2.js │ │ │ │ │ ├── sub-process-sigkill/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── worker1.js │ │ │ │ │ │ └── worker2.js │ │ │ │ │ ├── worker-close-timeout/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── worker-die/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── egg/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── server.ca │ │ │ │ ├── server.cert │ │ │ │ └── server.key │ │ │ ├── https.test.ts │ │ │ ├── master/ │ │ │ │ ├── after-start.test.ts │ │ │ │ ├── check-pid-file.test.ts │ │ │ │ ├── close-master.test.ts │ │ │ │ ├── messenger.test.ts │ │ │ │ ├── others.test.ts │ │ │ │ └── start-master.test.ts │ │ │ ├── options.test.ts │ │ │ ├── utils.ts │ │ │ └── worker_threads.test.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── cookies/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── README.zh-CN.md │ │ ├── benchmark/ │ │ │ └── index.cjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cookie.ts │ │ │ ├── cookies.ts │ │ │ ├── error.ts │ │ │ ├── index.ts │ │ │ └── keygrip.ts │ │ ├── test/ │ │ │ ├── cookie.test.ts │ │ │ ├── cookies.test.ts │ │ │ ├── cookies.ts │ │ │ └── keygrip.test.ts │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── core/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── benchmark/ │ │ │ └── middleware/ │ │ │ ├── README.md │ │ │ ├── app/ │ │ │ │ ├── controller/ │ │ │ │ │ └── home.js │ │ │ │ ├── middleware/ │ │ │ │ │ └── async.js │ │ │ │ └── router.js │ │ │ ├── package.json │ │ │ ├── run.sh │ │ │ └── start.js │ │ ├── example/ │ │ │ └── middleware/ │ │ │ └── hello.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── base_context_class.ts │ │ │ ├── egg.ts │ │ │ ├── index.ts │ │ │ ├── lifecycle.ts │ │ │ ├── loader/ │ │ │ │ ├── context_loader.ts │ │ │ │ ├── egg_loader.ts │ │ │ │ └── file_loader.ts │ │ │ ├── singleton.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── index.ts │ │ │ ├── sequencify.ts │ │ │ └── timing.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── index.test.ts.snap │ │ │ ├── asyncLocalStorage.test.ts │ │ │ ├── egg-ts.test.ts │ │ │ ├── egg.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── agent/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ └── context.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ │ │ └── agent.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── b/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ │ └── agent.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── app-before-close/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── app-core-middleware/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── app-getter/ │ │ │ │ │ └── package.json │ │ │ │ ├── app-noname/ │ │ │ │ │ └── package.json │ │ │ │ ├── app-outdir-pkg/ │ │ │ │ │ └── package.json │ │ │ │ ├── app-outdir-precedence/ │ │ │ │ │ ├── build/ │ │ │ │ │ │ └── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── app-outdir-tsconfig/ │ │ │ │ │ ├── build/ │ │ │ │ │ │ └── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── app-ts/ │ │ │ │ │ ├── app-error.ts │ │ │ │ │ ├── app.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── appinfo/ │ │ │ │ │ └── package.json │ │ │ │ ├── application/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ ├── application.js │ │ │ │ │ │ └── context.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ │ │ └── application.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── b/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ │ └── application.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── appname/ │ │ │ │ │ └── package.json │ │ │ │ ├── beforestart/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── beforestart-error/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── beforestart-params-error/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── beforestart-timeout/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── beforestart-with-timeout-env/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── boot/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── plugin/ │ │ │ │ │ │ ├── boot-plugin/ │ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── boot-plugin-dep/ │ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── boot-plugin-empty/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── boot-before-close/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── plugin/ │ │ │ │ │ │ ├── boot-plugin/ │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── boot-plugin-dep/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── boot-configDidLoad-error/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── boot-didLoad-error/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── boot-didReady-error/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── boot-serverDidLoad-error/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── boot-timeout/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── boot-willReady-error/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── close/ │ │ │ │ │ └── package.json │ │ │ │ ├── config/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ │ └── util/ │ │ │ │ │ │ │ └── a.js │ │ │ │ │ │ └── services/ │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ └── util/ │ │ │ │ │ │ └── bar.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── config-array/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugin/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── b/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── config-env/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── config-env-app-config/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── configmeta/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── context-loader/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── depth/ │ │ │ │ │ │ │ ├── four/ │ │ │ │ │ │ │ │ └── four/ │ │ │ │ │ │ │ │ └── four/ │ │ │ │ │ │ │ │ └── four.js │ │ │ │ │ │ │ ├── one.js │ │ │ │ │ │ │ ├── three/ │ │ │ │ │ │ │ │ └── three/ │ │ │ │ │ │ │ │ └── three.js │ │ │ │ │ │ │ └── two/ │ │ │ │ │ │ │ └── two.js │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ └── context.js │ │ │ │ │ │ ├── pathname/ │ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ └── c.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ ├── service/ │ │ │ │ │ │ │ ├── post.js │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── service1/ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── service2/ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ └── type/ │ │ │ │ │ │ ├── class.js │ │ │ │ │ │ ├── function-class.js │ │ │ │ │ │ ├── generator.js │ │ │ │ │ │ ├── null │ │ │ │ │ │ ├── number.js │ │ │ │ │ │ └── object.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── controller-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── admin/ │ │ │ │ │ │ │ │ └── config.js │ │ │ │ │ │ │ ├── async_function.js │ │ │ │ │ │ │ ├── class.js │ │ │ │ │ │ │ ├── class_inherited.js │ │ │ │ │ │ │ ├── class_wrap_function.js │ │ │ │ │ │ │ ├── function_attr.js │ │ │ │ │ │ │ ├── generator_function.js │ │ │ │ │ │ │ ├── generator_function_ctx.js │ │ │ │ │ │ │ ├── number.js │ │ │ │ │ │ │ ├── object.js │ │ │ │ │ │ │ ├── resource_class.js │ │ │ │ │ │ │ └── resource_object.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── home.js │ │ │ │ │ └── package.json │ │ │ │ ├── controller-next-argument/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ └── home.js │ │ │ │ │ └── package.json │ │ │ │ ├── controller-params/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── class.js │ │ │ │ │ │ │ ├── generator_function.js │ │ │ │ │ │ │ └── object.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── custom-loader/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── adapter/ │ │ │ │ │ │ │ └── docker.js │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── plugin/ │ │ │ │ │ │ │ └── a.js │ │ │ │ │ │ ├── repository/ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── util/ │ │ │ │ │ │ ├── sub/ │ │ │ │ │ │ │ └── fn.js │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── plugin/ │ │ │ │ │ │ │ │ └── b.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── custom_session_invaild/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ └── session.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── deprecate/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ └── application.js │ │ │ │ │ └── package.json │ │ │ │ ├── dont-load-plugin/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── egg/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ └── application.js │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ └── status.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ ├── config.unittest.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugins/ │ │ │ │ │ ├── configclient/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── diamond/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── eagleeye/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── hsfclient/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── zzz/ │ │ │ │ │ └── package.json │ │ │ │ ├── egg-esm/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ └── application.js │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ └── status.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ ├── config.unittest.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── opt/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── package/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── session/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugins/ │ │ │ │ │ ├── configclient/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── diamond/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── eagleeye/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── hsfclient/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── zzz/ │ │ │ │ │ └── package.json │ │ │ │ ├── egg-ts/ │ │ │ │ │ ├── agent.ts │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.ts │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ ├── agent.ts │ │ │ │ │ │ │ ├── application.ts │ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ │ ├── helper.ts │ │ │ │ │ │ │ ├── request.ts │ │ │ │ │ │ │ └── response.ts │ │ │ │ │ │ ├── middleware/ │ │ │ │ │ │ │ └── mid.ts │ │ │ │ │ │ ├── router.ts │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── Test.ts │ │ │ │ │ ├── app.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugins/ │ │ │ │ │ └── a/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ └── package.json │ │ │ │ ├── egg-ts-js/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── god.d.ts │ │ │ │ │ │ │ └── test.ts │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ └── application.ts │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── lord.js │ │ │ │ │ │ └── test.ts │ │ │ │ │ └── package.json │ │ │ │ ├── egg-ts-js-tsconfig-paths/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── god.d.ts │ │ │ │ │ │ │ └── test.ts │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ └── application.ts │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── lord.js │ │ │ │ │ │ └── test.ts │ │ │ │ │ ├── package.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── eggpath/ │ │ │ │ │ └── package.json │ │ │ │ ├── env-disable/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ └── @ali/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── b/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── extend/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ └── merge.js │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ ├── application.js │ │ │ │ │ │ │ ├── call.js │ │ │ │ │ │ │ ├── context.js │ │ │ │ │ │ │ ├── request.js │ │ │ │ │ │ │ └── response.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ │ │ ├── application.js │ │ │ │ │ │ │ │ ├── context.js │ │ │ │ │ │ │ │ ├── request.js │ │ │ │ │ │ │ │ └── response.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── b/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ │ ├── application.js │ │ │ │ │ │ │ ├── context/ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── request.js │ │ │ │ │ │ │ └── response.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── extend-controller-service/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── api.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── api.js │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── extend-env/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ ├── application.custom.js │ │ │ │ │ │ └── application.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugins/ │ │ │ │ │ └── a/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ └── application.custom.js │ │ │ │ │ └── package.json │ │ │ │ ├── extend-symbol/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ └── application.js │ │ │ │ │ └── package.json │ │ │ │ ├── extend-with-class/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ ├── application.js │ │ │ │ │ │ │ ├── context.js │ │ │ │ │ │ │ ├── request.js │ │ │ │ │ │ │ └── response.js │ │ │ │ │ │ └── router.js │ │ │ │ │ └── package.json │ │ │ │ ├── extends-app-service/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── user.js │ │ │ │ │ └── package.json │ │ │ │ ├── framework-dulp/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── framework-nosymbol/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── framework-symbol/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── framework-wrong-eggpath/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── helloworld-ts/ │ │ │ │ │ ├── .eslintrc │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── foo.ts │ │ │ │ │ │ └── router.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── helper/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ ├── application.js │ │ │ │ │ │ │ ├── context.js │ │ │ │ │ │ │ └── helper.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ │ │ └── helper.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── b/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ │ └── helper.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── load-plugin-by-env/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── plugin.custom.js │ │ │ │ │ │ ├── plugin.js │ │ │ │ │ │ └── plugin.unittest.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugins/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── c/ │ │ │ │ │ └── package.json │ │ │ │ ├── load-plugin-config-override/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugins/ │ │ │ │ │ └── zzz/ │ │ │ │ │ └── package.json │ │ │ │ ├── load-plugin-default/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── plugin.default.js │ │ │ │ │ │ ├── plugin.js │ │ │ │ │ │ └── plugin.unittest.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugins/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── c/ │ │ │ │ │ └── package.json │ │ │ │ ├── load-plugin-unittest/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ ├── application.local.js │ │ │ │ │ │ └── application.unittest.js │ │ │ │ │ └── package.json │ │ │ │ ├── load_context_error/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ └── context.js │ │ │ │ │ ├── load_context/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── load_context_syntax_error/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ └── context.js │ │ │ │ │ └── package.json │ │ │ │ ├── load_dirs/ │ │ │ │ │ ├── babel/ │ │ │ │ │ │ └── UserProxy.js │ │ │ │ │ ├── camelize/ │ │ │ │ │ │ ├── FooBar3.js │ │ │ │ │ │ ├── foo-bar4.js │ │ │ │ │ │ ├── fooBar2.js │ │ │ │ │ │ └── foo_bar1.js │ │ │ │ │ ├── class/ │ │ │ │ │ │ └── UserProxy.js │ │ │ │ │ ├── dao/ │ │ │ │ │ │ ├── TestClass.js │ │ │ │ │ │ ├── testFunction.js │ │ │ │ │ │ └── testReturnFunction.js │ │ │ │ │ ├── error/ │ │ │ │ │ │ ├── dotdir/ │ │ │ │ │ │ │ └── dot.dir/ │ │ │ │ │ │ │ └── a.js │ │ │ │ │ │ ├── underscore-dir/ │ │ │ │ │ │ │ └── _underscore/ │ │ │ │ │ │ │ └── a.js │ │ │ │ │ │ ├── underscore-file/ │ │ │ │ │ │ │ └── _private.js │ │ │ │ │ │ └── underscore-file-in-dir/ │ │ │ │ │ │ └── dir/ │ │ │ │ │ │ └── _a.js │ │ │ │ │ ├── es6_module/ │ │ │ │ │ │ └── mod.js │ │ │ │ │ ├── filter/ │ │ │ │ │ │ ├── arr.js │ │ │ │ │ │ ├── class.js │ │ │ │ │ │ └── object.js │ │ │ │ │ ├── ignore/ │ │ │ │ │ │ ├── a.js │ │ │ │ │ │ └── util/ │ │ │ │ │ │ ├── a.js │ │ │ │ │ │ └── b/ │ │ │ │ │ │ └── b.js │ │ │ │ │ ├── inject/ │ │ │ │ │ │ ├── a.js │ │ │ │ │ │ └── b.js │ │ │ │ │ ├── lowercase/ │ │ │ │ │ │ ├── SomeClass.js │ │ │ │ │ │ └── SomeDir/ │ │ │ │ │ │ └── SomeSubClass.js │ │ │ │ │ ├── middlewares/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── m1.js │ │ │ │ │ │ │ ├── m2.js │ │ │ │ │ │ │ └── other/ │ │ │ │ │ │ │ ├── bar.js │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── ok.js │ │ │ │ │ │ └── default/ │ │ │ │ │ │ ├── dm1.js │ │ │ │ │ │ ├── dm2.js │ │ │ │ │ │ └── session.js │ │ │ │ │ ├── overwrite_services/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── services/ │ │ │ │ │ │ ├── bar.js/ │ │ │ │ │ │ │ └── aaa │ │ │ │ │ │ ├── dir/ │ │ │ │ │ │ │ ├── abc.js │ │ │ │ │ │ │ └── service.js │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ ├── foo_bar_hello.js │ │ │ │ │ │ ├── foo_service.js │ │ │ │ │ │ ├── hyphen-dir/ │ │ │ │ │ │ │ └── a.js │ │ │ │ │ │ ├── null.js │ │ │ │ │ │ ├── tmp │ │ │ │ │ │ ├── underscore_dir/ │ │ │ │ │ │ │ └── a.js │ │ │ │ │ │ └── userProfile.js │ │ │ │ │ ├── syntax_error/ │ │ │ │ │ │ └── error.js │ │ │ │ │ ├── ts_module/ │ │ │ │ │ │ ├── mod.ts │ │ │ │ │ │ ├── mod2.ts │ │ │ │ │ │ └── mod3.ts │ │ │ │ │ └── yml/ │ │ │ │ │ └── config.yml │ │ │ │ ├── load_file/ │ │ │ │ │ ├── async.js │ │ │ │ │ ├── es-module-default-async.js │ │ │ │ │ ├── es-module-default-null.js │ │ │ │ │ ├── es-module-default-promise.js │ │ │ │ │ ├── es-module-default.js │ │ │ │ │ ├── function.js │ │ │ │ │ ├── no-js.yml │ │ │ │ │ ├── obj.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── promise_function.js │ │ │ │ ├── load_to_app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── user.js │ │ │ │ │ └── package.json │ │ │ │ ├── loadfile/ │ │ │ │ │ ├── es-module-default-async.js │ │ │ │ │ ├── es-module-default-null.js │ │ │ │ │ ├── es-module-default-promise.js │ │ │ │ │ ├── es-module-default.js │ │ │ │ │ ├── es-module.js │ │ │ │ │ ├── no-js.yml │ │ │ │ │ ├── null.js │ │ │ │ │ ├── object.js │ │ │ │ │ ├── object2.mjs │ │ │ │ │ ├── package.json │ │ │ │ │ └── zero.js │ │ │ │ ├── loadfile-esm/ │ │ │ │ │ ├── es-module-default-async.js │ │ │ │ │ ├── es-module-default-null.js │ │ │ │ │ ├── es-module-default-promise.js │ │ │ │ │ ├── es-module-default.js │ │ │ │ │ ├── es-module.js │ │ │ │ │ ├── no-js.yml │ │ │ │ │ ├── null.js │ │ │ │ │ ├── object.js │ │ │ │ │ ├── object2.cjs │ │ │ │ │ ├── package.json │ │ │ │ │ └── zero.js │ │ │ │ ├── middleware-aa/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── middleware/ │ │ │ │ │ │ │ ├── common.js │ │ │ │ │ │ │ ├── custom.js │ │ │ │ │ │ │ ├── match.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── static.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── middleware-app-disable/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ ├── custom.js │ │ │ │ │ │ └── static.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── middleware-disable/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ ├── custom.js │ │ │ │ │ │ └── static.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── middleware-ignore/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ ├── custom.js │ │ │ │ │ │ └── static.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── middleware-match/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ ├── custom.js │ │ │ │ │ │ └── static.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── middleware-override/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ ├── custom.js │ │ │ │ │ │ └── static.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ │ │ ├── a.js │ │ │ │ │ │ │ │ └── custom.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── b/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ │ ├── b.js │ │ │ │ │ │ │ ├── custom.js │ │ │ │ │ │ │ └── status.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── middleware-redefined/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ ├── custom.js │ │ │ │ │ │ └── static.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── no-core-middleware/ │ │ │ │ │ └── package.json │ │ │ │ ├── no-dep-plugin/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugins/ │ │ │ │ │ └── a/ │ │ │ │ │ └── package.json │ │ │ │ ├── no-helper/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ └── helper.js │ │ │ │ │ └── package.json │ │ │ │ ├── no-middleware/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── no-redefine-plugin/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── noplugin/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── nothing/ │ │ │ │ │ └── package.json │ │ │ │ ├── notready/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── other-directory/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── other-controller/ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── other-middleware/ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ └── other-service/ │ │ │ │ │ │ └── user.js │ │ │ │ │ └── package.json │ │ │ │ ├── plugin/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── proxy/ │ │ │ │ │ │ │ ├── OnlyClassQuery.js │ │ │ │ │ │ │ ├── UserInfoQuery.js │ │ │ │ │ │ │ └── couponQuery.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── Foo4.js │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ ├── foo2.js │ │ │ │ │ │ ├── foo3/ │ │ │ │ │ │ │ └── foo3.js │ │ │ │ │ │ └── fooDir/ │ │ │ │ │ │ └── Foo5.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ ├── proxy/ │ │ │ │ │ │ │ │ │ └── a.js │ │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ │ └── bar1.js │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ └── config.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── a1/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ │ └── bar2.js │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── c/ │ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ └── config.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── d/ │ │ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ └── config.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── rds/ │ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── plugin-middleware/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── plugin-proxy/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── plugins/ │ │ │ │ │ ├── e/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── g/ │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-complex-dependencies/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugin/ │ │ │ │ │ ├── ddcs/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── ldc/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── rpc/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── vip/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── zoneclient/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── zookeeper/ │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-complex-deps/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugin/ │ │ │ │ │ ├── gw/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── rpc-server/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── tracelog/ │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-dep/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-dep-disable/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── framework/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── c/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── d/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── e/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-dep-missing/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-dep-recursive/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-duplicate/ │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── @scope/ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── a/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── release/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-egg-plugin/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-framework/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-from/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── framework/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-implicit-enable-dependencies/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugin/ │ │ │ │ │ ├── gateway/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── ldc/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── rpc_server/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── tracelog/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── zoneclient/ │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-noexist/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-optional-dependencies/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── c/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── d/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── e/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── f/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-path-package/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ └── hsfclient/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── package.json │ │ │ │ │ └── session/ │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-pkg-exports/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ ├── foo_dist/ │ │ │ │ │ │ │ ├── commonjs/ │ │ │ │ │ │ │ │ └── config/ │ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ │ └── esm/ │ │ │ │ │ │ │ └── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-pnpm/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-pnpm-scope/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-strict/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugins/ │ │ │ │ │ └── g/ │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-ts-src/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugins/ │ │ │ │ │ └── g/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── src/ │ │ │ │ │ └── index.ts │ │ │ │ ├── preload-app-config/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── proxy-override/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── proxy/ │ │ │ │ │ │ └── queryProxy.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── ready/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── realpath/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── redefine-plugin/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── router-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── async.js │ │ │ │ │ │ │ ├── comments.js │ │ │ │ │ │ │ ├── locals.js │ │ │ │ │ │ │ ├── members.js │ │ │ │ │ │ │ ├── middleware.js │ │ │ │ │ │ │ ├── package.js │ │ │ │ │ │ │ └── posts.js │ │ │ │ │ │ ├── middleware/ │ │ │ │ │ │ │ ├── async.js │ │ │ │ │ │ │ ├── common.js │ │ │ │ │ │ │ ├── generator.js │ │ │ │ │ │ │ └── generator_both.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── views/ │ │ │ │ │ │ └── locals/ │ │ │ │ │ │ └── router.html │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── router-in-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── middleware/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── run-with-debug/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── scope/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── plugin.en.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── scope-env/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ ├── config.en.js │ │ │ │ │ │ ├── config.en_prod.js │ │ │ │ │ │ ├── config.prod.js │ │ │ │ │ │ ├── plugin.en.js │ │ │ │ │ │ ├── plugin.en_prod.js │ │ │ │ │ │ ├── plugin.js │ │ │ │ │ │ └── plugin.prod.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── c/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── d/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── serverenv/ │ │ │ │ │ └── package.json │ │ │ │ ├── serverenv-file/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── env │ │ │ │ │ └── package.json │ │ │ │ ├── service-override/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── service-unique/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── same.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── ctx.js │ │ │ │ │ └── package.json │ │ │ │ ├── services_loader_verify/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ └── package.json │ │ │ │ ├── session-cache-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ └── package.json │ │ │ │ ├── subdir-proxy/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── proxy/ │ │ │ │ │ │ │ ├── certify-personal/ │ │ │ │ │ │ │ │ └── mobile-hi/ │ │ │ │ │ │ │ │ └── do_certify.js │ │ │ │ │ │ │ ├── cif/ │ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ │ ├── foo/ │ │ │ │ │ │ │ │ ├── bar.js │ │ │ │ │ │ │ │ ├── subdir/ │ │ │ │ │ │ │ │ │ └── bar.js │ │ │ │ │ │ │ │ ├── subdir1/ │ │ │ │ │ │ │ │ │ └── subdir11/ │ │ │ │ │ │ │ │ │ └── bar.js │ │ │ │ │ │ │ │ └── subdir2/ │ │ │ │ │ │ │ │ └── sub2.js │ │ │ │ │ │ │ ├── null.js │ │ │ │ │ │ │ ├── ok.js │ │ │ │ │ │ │ ├── old_style.js │ │ │ │ │ │ │ ├── undefined.js │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ └── router.js │ │ │ │ │ └── package.json │ │ │ │ ├── subdir-services/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── certify-personal/ │ │ │ │ │ │ │ └── mobile-hi/ │ │ │ │ │ │ │ └── do_certify.js │ │ │ │ │ │ ├── cif/ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── foo/ │ │ │ │ │ │ │ ├── bar.js │ │ │ │ │ │ │ ├── subdir/ │ │ │ │ │ │ │ │ └── bar.js │ │ │ │ │ │ │ ├── subdir1/ │ │ │ │ │ │ │ │ └── subdir11/ │ │ │ │ │ │ │ │ └── bar.js │ │ │ │ │ │ │ └── subdir2/ │ │ │ │ │ │ │ └── sub2.js │ │ │ │ │ │ ├── null.js │ │ │ │ │ │ ├── ok.js │ │ │ │ │ │ ├── old_style.js │ │ │ │ │ │ ├── undefined.js │ │ │ │ │ │ └── user.js │ │ │ │ │ └── package.json │ │ │ │ ├── syntaxerror/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ └── timing/ │ │ │ │ ├── agent.js │ │ │ │ ├── app/ │ │ │ │ │ ├── controler/ │ │ │ │ │ │ └── home.js │ │ │ │ │ ├── extend/ │ │ │ │ │ │ └── application.js │ │ │ │ │ ├── middleware/ │ │ │ │ │ │ └── auth.js │ │ │ │ │ ├── proxy/ │ │ │ │ │ │ └── a.js │ │ │ │ │ ├── router.js │ │ │ │ │ └── service/ │ │ │ │ │ └── home.js │ │ │ │ ├── app.js │ │ │ │ ├── block.js │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── plugin.js │ │ │ │ ├── index.js │ │ │ │ ├── package.json │ │ │ │ └── preload.js │ │ │ ├── helper.ts │ │ │ ├── index.test.ts │ │ │ ├── lifecycle.test.ts │ │ │ ├── loader/ │ │ │ │ ├── context_loader.test.ts │ │ │ │ ├── egg_loader.test.ts │ │ │ │ ├── file_loader.test.ts │ │ │ │ ├── get_app_info.test.ts │ │ │ │ ├── get_appname.test.ts │ │ │ │ ├── get_framework_paths.test.ts │ │ │ │ ├── get_load_units.test.ts │ │ │ │ ├── get_server_env.test.ts │ │ │ │ ├── load_file.test.ts │ │ │ │ └── mixin/ │ │ │ │ ├── load_agent_extend.test.ts │ │ │ │ ├── load_application_extend.test.ts │ │ │ │ ├── load_config.test.ts │ │ │ │ ├── load_controller.test.ts │ │ │ │ ├── load_custom_agent.test.ts │ │ │ │ ├── load_custom_app.test.ts │ │ │ │ ├── load_custom_loader.test.ts │ │ │ │ ├── load_extend.test.ts │ │ │ │ ├── load_extend_class.test.ts │ │ │ │ ├── load_helper_extend.test.ts │ │ │ │ ├── load_middleware.test.ts │ │ │ │ ├── load_plugin.test.ts │ │ │ │ └── load_service.test.ts │ │ │ ├── singleton.test.ts │ │ │ ├── support-typescript.test.ts │ │ │ └── utils/ │ │ │ ├── index.test.ts │ │ │ ├── router.test.ts │ │ │ └── timing.test.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── egg/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── ajv.ts │ │ │ ├── aop.ts │ │ │ ├── app/ │ │ │ │ ├── extend/ │ │ │ │ │ ├── context.ts │ │ │ │ │ ├── helper.ts │ │ │ │ │ ├── request.ts │ │ │ │ │ └── response.ts │ │ │ │ └── middleware/ │ │ │ │ ├── body_parser.ts │ │ │ │ ├── meta.ts │ │ │ │ ├── notfound.ts │ │ │ │ ├── override_method.ts │ │ │ │ └── site_file.ts │ │ │ ├── config/ │ │ │ │ ├── config.default.ts │ │ │ │ ├── config.local.ts │ │ │ │ ├── config.unittest.ts │ │ │ │ └── plugin.ts │ │ │ ├── dal.ts │ │ │ ├── errors.ts │ │ │ ├── helper.ts │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ ├── agent.ts │ │ │ │ ├── application.ts │ │ │ │ ├── core/ │ │ │ │ │ ├── base_context_class.ts │ │ │ │ │ ├── base_context_logger.ts │ │ │ │ │ ├── base_hook_class.ts │ │ │ │ │ ├── context_httpclient.ts │ │ │ │ │ ├── httpclient.ts │ │ │ │ │ ├── logger.ts │ │ │ │ │ ├── messenger/ │ │ │ │ │ │ ├── IMessenger.ts │ │ │ │ │ │ ├── base.ts │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── ipc.ts │ │ │ │ │ │ └── local.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── define.ts │ │ │ │ ├── egg.ts │ │ │ │ ├── error/ │ │ │ │ │ ├── CookieLimitExceedError.ts │ │ │ │ │ ├── MessageUnhandledRejectionError.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── loader/ │ │ │ │ │ ├── AgentWorkerLoader.ts │ │ │ │ │ ├── AppWorkerLoader.ts │ │ │ │ │ ├── EggApplicationLoader.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── start.ts │ │ │ │ ├── types.plugin.ts │ │ │ │ └── types.ts │ │ │ ├── orm.ts │ │ │ ├── schedule.ts │ │ │ ├── transaction.ts │ │ │ └── urllib.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── index.test.ts.snap │ │ │ │ └── urllib.test.ts.snap │ │ │ ├── agent.test.ts │ │ │ ├── app/ │ │ │ │ ├── extend/ │ │ │ │ │ ├── agent.test.ts │ │ │ │ │ ├── application.test.ts │ │ │ │ │ ├── context.jsonp.test.ts │ │ │ │ │ ├── context.test.ts │ │ │ │ │ ├── helper.test.ts │ │ │ │ │ ├── request.test.ts │ │ │ │ │ └── response.test.ts │ │ │ │ └── middleware/ │ │ │ │ ├── body_parser.test.ts │ │ │ │ ├── meta.test.ts │ │ │ │ ├── notfound.test.ts │ │ │ │ ├── override_method.test.ts │ │ │ │ └── site_file.test.ts │ │ │ ├── application.test.ts │ │ │ ├── asyncSupport.test.ts │ │ │ ├── bench/ │ │ │ │ ├── hello/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ └── server.js │ │ │ ├── cluster1/ │ │ │ │ ├── app_worker.test.ts │ │ │ │ ├── cluster-client-error.test.ts │ │ │ │ ├── cluster-client.test.ts │ │ │ │ └── master.test.ts │ │ │ ├── cluster2/ │ │ │ │ └── master.test.ts │ │ │ ├── egg.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── apps/ │ │ │ │ │ ├── agent-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ └── mock-client/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── mock_client.js │ │ │ │ │ ├── agent-app-sync/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── agent-client-app/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── agent-die/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── start.js │ │ │ │ │ ├── agent-logger-config/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── agent-restart/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── client.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── agent-throw/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── aliyun-egg/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ │ ├── aliyun-egg.js │ │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ │ └── custom/ │ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ │ └── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── aliyun-egg-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── aliyun-egg-biz/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-config-cookies/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-die/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-die-ignore-code/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-enableFastContextLogger/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-enablePerformanceTimer-true/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-locals-getter/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-router/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-runInAnonymousContextScope/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-runInAnonymousContextScope-withRequest/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-server/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-server-customized-client-error/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-server-timeout/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-server-with-hostname/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-start-timeout/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-throw/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-ts/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── foo.ts │ │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ │ ├── context.ts │ │ │ │ │ │ │ │ ├── helper.ts │ │ │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ │ │ ├── middleware/ │ │ │ │ │ │ │ │ ├── default_ctx.ts │ │ │ │ │ │ │ │ ├── generic_ctx.ts │ │ │ │ │ │ │ │ ├── index.d.ts │ │ │ │ │ │ │ │ └── test.ts │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ └── test.ts │ │ │ │ │ │ │ ├── proxy/ │ │ │ │ │ │ │ │ └── foo.d.ts │ │ │ │ │ │ │ ├── router.ts │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ └── foo.ts │ │ │ │ │ │ ├── app.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.ts │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ ├── export-class.ts │ │ │ │ │ │ │ └── logger.ts │ │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ │ └── egg/ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── app-ts-esm/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── foo.ts │ │ │ │ │ │ │ └── router.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.ts │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── app-ts-type-check/ │ │ │ │ │ │ ├── error.ts │ │ │ │ │ │ ├── framework.ts │ │ │ │ │ │ ├── normal.ts │ │ │ │ │ │ ├── tsconfig-error.json │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ ├── xiandan.d.ts │ │ │ │ │ │ └── yadan.d.ts │ │ │ │ │ ├── async-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── api.js │ │ │ │ │ │ │ ├── middleware/ │ │ │ │ │ │ │ │ ├── async.js │ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ ├── schedule/ │ │ │ │ │ │ │ │ └── async.js │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ └── api.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── base-context-class/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── body_parser_testapp/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── body_parser_testapp_disable/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── body_parser_testapp_ignore/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── body_parser_testapp_match/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── boot-app/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── boot-app-esm/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── close-watcher-logrotator/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── cluster-client-error/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── cluster_mod_app/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ ├── api_client.js │ │ │ │ │ │ │ ├── api_client_2.js │ │ │ │ │ │ │ └── registry_client.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config-env/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── confused-configuration/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── context-config-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ │ └── context.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ └── config.local.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── context_httpclient/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── context_httpclient_timeout/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── csrf-disable/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── api.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── csrf-enable/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── api.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── csrf-ignore/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── api.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── ctx-background/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ │ ├── custom.js │ │ │ │ │ │ │ │ ├── error.js │ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ │ └── sync.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── custom-context-getlogger/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ │ └── context.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── custom-env-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── custom-framework-demo/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ │ │ ├── hello.js │ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ │ ├── ip.js │ │ │ │ │ │ │ │ ├── logger.js │ │ │ │ │ │ │ │ ├── obj.js │ │ │ │ │ │ │ │ └── obj2.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── custom-loader/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── adapter/ │ │ │ │ │ │ │ │ └── docker.js │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ │ ├── repository/ │ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── custom-logger/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── demo/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ │ │ ├── hello.js │ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ │ ├── ip.js │ │ │ │ │ │ │ │ ├── logger.js │ │ │ │ │ │ │ │ ├── obj.js │ │ │ │ │ │ │ │ └── obj2.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── development/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── dnscache_httpclient/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── docapp/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ │ └── koastatic.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── dump-ignore-error/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── dumpconfig/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── dumpconfig-circular/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── dumptiming-slowBootActionMinDuration/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── dumptiming-timeout/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── empty/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── encrypt-cookies/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── favicon/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── favicon-buffer/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── favicon-function/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── get-logger/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── helper/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── httpclient-agent-timeout-3000/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── httpclient-next-overwrite/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── httpclient-next-with-tracer/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── httpclient-overwrite/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── httpclient-request-timeout-100/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── httpclient-retry/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── httpclient-tracer/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── i18n/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ │ └── message.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── view/ │ │ │ │ │ │ │ └── home.html │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ ├── locales/ │ │ │ │ │ │ │ │ ├── de.json │ │ │ │ │ │ │ │ ├── xx.txt │ │ │ │ │ │ │ │ └── zh-CN.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── keys-exists/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── keys-missing/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── koa-session/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── clear.js │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── loader-plugin/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ ├── Foo4.js │ │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ │ ├── foo2.js │ │ │ │ │ │ │ ├── foo3/ │ │ │ │ │ │ │ │ └── foo3.js │ │ │ │ │ │ │ └── fooDir/ │ │ │ │ │ │ │ └── Foo5.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ ├── map.json │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ │ ├── proxy/ │ │ │ │ │ │ │ │ │ │ └── a.js │ │ │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ │ │ └── bar1.js │ │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ │ └── config.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── a1/ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ │ │ └── bar2.js │ │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ │ ├── antx.default.properties │ │ │ │ │ │ │ │ │ ├── antx.dev.properties │ │ │ │ │ │ │ │ │ ├── antx.prod.properties │ │ │ │ │ │ │ │ │ ├── antx.test.properties │ │ │ │ │ │ │ │ │ └── antx.unittest.properties │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── c/ │ │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ │ └── config.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── d/ │ │ │ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ │ └── config.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ └── rds/ │ │ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ ├── e/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── f/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── g/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── loader-plugin-dep/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── c/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── d/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── e/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── f/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── loader-plugin-dep-missing/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── c/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── loader-plugin-dep-recursive/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── plugins/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── c/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── loader-plugin-noexist/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── locals/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── helper.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── logger/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ ├── config.local.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── logger-level-debug/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── logger-output-json/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── map.json │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── logger-reload/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── logrotator-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── master-worker-started/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ ├── dispatch.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── master-worker-started-worker_threads/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ ├── dispatch.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── messenger/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── messenger-app-agent/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── messenger-broadcast/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── messenger-random/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── meta-logging-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── middlewares/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── error.js │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ ├── crossdomain.xml │ │ │ │ │ │ │ ├── robots.txt │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── server.conf │ │ │ │ │ ├── middlewares-meta-enablePerformanceTimer/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── middlewares-site-file/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── error.js │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ ├── crossdomain.xml │ │ │ │ │ │ │ ├── robots.txt │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── server.conf │ │ │ │ │ ├── mock-dev-app1/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── mock-dev-app2/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── mock-dev-app3/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── mock-dev-app4/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── mock-production-app/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ ├── config.unittest.js │ │ │ │ │ │ │ └── map.json │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── mock-production-app-do-not-force/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ ├── config.unittest.js │ │ │ │ │ │ │ └── map.json │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── multipart/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ │ └── upload.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── view/ │ │ │ │ │ │ │ └── home.html │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── multiple-view-engine/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── view.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ ├── view/ │ │ │ │ │ │ │ │ ├── ext/ │ │ │ │ │ │ │ │ │ ├── a.ejs │ │ │ │ │ │ │ │ │ └── a.nj │ │ │ │ │ │ │ │ └── loader/ │ │ │ │ │ │ │ │ ├── a.ejs │ │ │ │ │ │ │ │ ├── a.html │ │ │ │ │ │ │ │ ├── a.nj.ejs │ │ │ │ │ │ │ │ └── a.noext │ │ │ │ │ │ │ └── view2/ │ │ │ │ │ │ │ └── loader/ │ │ │ │ │ │ │ ├── a.nj │ │ │ │ │ │ │ └── from-view2.ejs │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ ├── ejs.js │ │ │ │ │ │ ├── nunjucks.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── nobuffer-logger/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── notfound/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── notfound-custom-404/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── notready/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── onerror/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── override_method/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── querystring-extended/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── reload-worker/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ │ └── home1.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── response/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── router-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── locals.js │ │ │ │ │ │ │ │ ├── members.js │ │ │ │ │ │ │ │ └── posts.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── view/ │ │ │ │ │ │ │ └── locals/ │ │ │ │ │ │ │ └── router.html │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── schedule/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ │ ├── hello.js │ │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ │ └── cron.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── secure-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ ├── config.unittest.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── service-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── services_loader_verify/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── singleton-demo/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ ├── create.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── siteFile-custom-cacheControl/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── static-server/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── public/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── subdir-services/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ ├── certify-personal/ │ │ │ │ │ │ │ │ └── mobile-hi/ │ │ │ │ │ │ │ │ └── do_certify.js │ │ │ │ │ │ │ ├── cif/ │ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ │ ├── foo/ │ │ │ │ │ │ │ │ ├── bar.js │ │ │ │ │ │ │ │ ├── subdir/ │ │ │ │ │ │ │ │ │ └── bar.js │ │ │ │ │ │ │ │ ├── subdir1/ │ │ │ │ │ │ │ │ │ └── subdir11/ │ │ │ │ │ │ │ │ │ └── bar.js │ │ │ │ │ │ │ │ └── subdir2/ │ │ │ │ │ │ │ │ └── sub2.js │ │ │ │ │ │ │ ├── ok.js │ │ │ │ │ │ │ ├── old_style.js │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── tracer-demo/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tracer.js │ │ │ │ │ ├── view-render/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── a.js │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── async.js │ │ │ │ │ │ │ │ ├── context.js │ │ │ │ │ │ │ │ ├── csrf.js │ │ │ │ │ │ │ │ ├── empty.js │ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ │ ├── inject.js │ │ │ │ │ │ │ │ ├── locals.js │ │ │ │ │ │ │ │ ├── nonce.js │ │ │ │ │ │ │ │ ├── shtml.js │ │ │ │ │ │ │ │ ├── sjs.js │ │ │ │ │ │ │ │ ├── string.js │ │ │ │ │ │ │ │ └── xss.js │ │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ │ └── helper.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── view/ │ │ │ │ │ │ │ ├── a.html │ │ │ │ │ │ │ ├── form_csrf.html │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ ├── inject.html │ │ │ │ │ │ │ ├── locals.html │ │ │ │ │ │ │ ├── nonce.html │ │ │ │ │ │ │ ├── shtml.html │ │ │ │ │ │ │ ├── sjs.html │ │ │ │ │ │ │ └── xss.html │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── watcher-development-app/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── tmp/ │ │ │ │ │ │ │ └── tmp.txt │ │ │ │ │ │ ├── tmp-agent/ │ │ │ │ │ │ │ └── tmp.txt │ │ │ │ │ │ ├── tmp-agent.txt │ │ │ │ │ │ └── tmp.txt │ │ │ │ │ ├── watcher-type-default/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── worker-die/ │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ └── custom-egg/ │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── index.test.ts │ │ │ ├── lib/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── define_config.test.ts.snap │ │ │ │ ├── core/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.cookies.test.ts │ │ │ │ │ │ └── config.test.ts │ │ │ │ │ ├── context_httpclient.test.ts │ │ │ │ │ ├── context_performance_starttime.test.ts │ │ │ │ │ ├── cookies.test.ts │ │ │ │ │ ├── custom_loader.test.ts │ │ │ │ │ ├── dnscache_httpclient.test.ts │ │ │ │ │ ├── httpclient.test.ts │ │ │ │ │ ├── httpclient_tracer_demo.test.ts │ │ │ │ │ ├── loader/ │ │ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ │ │ ├── config_loader.test.ts.snap │ │ │ │ │ │ │ └── load_plugin.test.ts.snap │ │ │ │ │ │ ├── config_loader.test.ts │ │ │ │ │ │ ├── load_app.test.ts │ │ │ │ │ │ ├── load_boot.test.ts │ │ │ │ │ │ ├── load_plugin.test.ts │ │ │ │ │ │ ├── load_router.test.ts │ │ │ │ │ │ └── load_service.test.ts │ │ │ │ │ ├── logger.test.ts │ │ │ │ │ ├── messenger/ │ │ │ │ │ │ ├── ipc.test.ts │ │ │ │ │ │ └── local.test.ts │ │ │ │ │ ├── router.test.ts │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ └── view.test.ts │ │ │ │ ├── define_config.test.ts │ │ │ │ └── plugins/ │ │ │ │ ├── depd.test.ts │ │ │ │ ├── development.test.ts │ │ │ │ ├── i18n.test.ts │ │ │ │ ├── multipart.test.ts │ │ │ │ ├── onerror.test.ts │ │ │ │ ├── security.test.ts │ │ │ │ ├── session.test.ts │ │ │ │ ├── static.test.ts │ │ │ │ └── watcher.test.ts │ │ │ ├── start.test.ts │ │ │ ├── typescript.test.ts │ │ │ ├── urllib.test.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── errors/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── base.ts │ │ │ ├── base_error.ts │ │ │ ├── base_exception.ts │ │ │ ├── error.ts │ │ │ ├── error_options.ts │ │ │ ├── error_type.ts │ │ │ ├── exception.ts │ │ │ ├── framework/ │ │ │ │ ├── formatter.ts │ │ │ │ └── framework_base_error.ts │ │ │ ├── http/ │ │ │ │ ├── 400.ts │ │ │ │ ├── 401.ts │ │ │ │ ├── 402.ts │ │ │ │ ├── 403.ts │ │ │ │ ├── 404.ts │ │ │ │ ├── 405.ts │ │ │ │ ├── 406.ts │ │ │ │ ├── 407.ts │ │ │ │ ├── 408.ts │ │ │ │ ├── 409.ts │ │ │ │ ├── 410.ts │ │ │ │ ├── 411.ts │ │ │ │ ├── 412.ts │ │ │ │ ├── 413.ts │ │ │ │ ├── 414.ts │ │ │ │ ├── 415.ts │ │ │ │ ├── 416.ts │ │ │ │ ├── 417.ts │ │ │ │ ├── 418.ts │ │ │ │ ├── 421.ts │ │ │ │ ├── 422.ts │ │ │ │ ├── 423.ts │ │ │ │ ├── 424.ts │ │ │ │ ├── 425.ts │ │ │ │ ├── 426.ts │ │ │ │ ├── 428.ts │ │ │ │ ├── 429.ts │ │ │ │ ├── 431.ts │ │ │ │ ├── 451.ts │ │ │ │ ├── 500.ts │ │ │ │ ├── 501.ts │ │ │ │ ├── 502.ts │ │ │ │ ├── 503.ts │ │ │ │ ├── 504.ts │ │ │ │ ├── 505.ts │ │ │ │ ├── 506.ts │ │ │ │ ├── 507.ts │ │ │ │ ├── 508.ts │ │ │ │ ├── 509.ts │ │ │ │ ├── 510.ts │ │ │ │ ├── 511.ts │ │ │ │ ├── http_error.ts │ │ │ │ ├── http_error_options.ts │ │ │ │ └── http_header.ts │ │ │ └── index.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── index.test.ts.snap │ │ │ ├── error.test.ts │ │ │ ├── framework/ │ │ │ │ ├── formatter.test.ts │ │ │ │ └── framework_base_error.test.ts │ │ │ ├── http/ │ │ │ │ ├── 400.test.ts │ │ │ │ ├── 401.test.ts │ │ │ │ ├── 402.test.ts │ │ │ │ ├── 403.test.ts │ │ │ │ ├── 404.test.ts │ │ │ │ ├── 405.test.ts │ │ │ │ ├── 406.test.ts │ │ │ │ ├── 407.test.ts │ │ │ │ ├── 408.test.ts │ │ │ │ ├── 409.test.ts │ │ │ │ ├── 410.test.ts │ │ │ │ ├── 411.test.ts │ │ │ │ ├── 412.test.ts │ │ │ │ ├── 413.test.ts │ │ │ │ ├── 414.test.ts │ │ │ │ ├── 415.test.ts │ │ │ │ ├── 416.test.ts │ │ │ │ ├── 417.test.ts │ │ │ │ ├── 418.test.ts │ │ │ │ ├── 421.test.ts │ │ │ │ ├── 422.test.ts │ │ │ │ ├── 423.test.ts │ │ │ │ ├── 424.test.ts │ │ │ │ ├── 425.test.ts │ │ │ │ ├── 426.test.ts │ │ │ │ ├── 428.test.ts │ │ │ │ ├── 429.test.ts │ │ │ │ ├── 431.test.ts │ │ │ │ ├── 451.test.ts │ │ │ │ ├── 500.test.ts │ │ │ │ ├── 501.test.ts │ │ │ │ ├── 502.test.ts │ │ │ │ ├── 503.test.ts │ │ │ │ ├── 504.test.ts │ │ │ │ ├── 505.test.ts │ │ │ │ ├── 506.test.ts │ │ │ │ ├── 507.test.ts │ │ │ │ ├── 508.test.ts │ │ │ │ ├── 509.test.ts │ │ │ │ ├── 510.test.ts │ │ │ │ └── 511.test.ts │ │ │ └── index.test.ts │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── extend2/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── test/ │ │ │ └── index.test.ts │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── koa/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── CODE_OF_CONDUCT.md │ │ ├── LICENSE │ │ ├── Readme.md │ │ ├── docs/ │ │ │ ├── api/ │ │ │ │ ├── context.md │ │ │ │ ├── index.md │ │ │ │ ├── request.md │ │ │ │ └── response.md │ │ │ ├── error-handling.md │ │ │ ├── faq.md │ │ │ ├── guide.md │ │ │ ├── koa-vs-express.md │ │ │ ├── migration.md │ │ │ └── troubleshooting.md │ │ ├── example/ │ │ │ ├── cjs/ │ │ │ │ ├── helloworld.js │ │ │ │ └── package.json │ │ │ ├── esm/ │ │ │ │ ├── helloworld.js │ │ │ │ └── package.json │ │ │ ├── extend/ │ │ │ │ ├── Context.ts │ │ │ │ ├── Request.ts │ │ │ │ └── middleware.ts │ │ │ └── helloworld.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── application.ts │ │ │ ├── context.ts │ │ │ ├── index.ts │ │ │ ├── request.ts │ │ │ ├── response.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── index.test.ts.snap │ │ │ ├── application/ │ │ │ │ ├── context.test.ts │ │ │ │ ├── currentContext.test.ts │ │ │ │ ├── index.test.ts │ │ │ │ ├── inspect.test.ts │ │ │ │ ├── onerror.test.ts │ │ │ │ ├── request.test.ts │ │ │ │ ├── respond.test.ts │ │ │ │ ├── response.test.ts │ │ │ │ ├── toJSON.test.ts │ │ │ │ └── use.test.ts │ │ │ ├── context/ │ │ │ │ ├── assert.test.ts │ │ │ │ ├── cookies.test.ts │ │ │ │ ├── inspect.test.ts │ │ │ │ ├── onerror.test.ts │ │ │ │ ├── state.test.ts │ │ │ │ ├── throw.test.ts │ │ │ │ └── toJSON.test.ts │ │ │ ├── index.test.ts │ │ │ ├── index.test.ts.snapshot │ │ │ ├── request/ │ │ │ │ ├── accept.test.ts │ │ │ │ ├── accepts.test.ts │ │ │ │ ├── acceptsCharsets.test.ts │ │ │ │ ├── acceptsEncodings.test.ts │ │ │ │ ├── acceptsLanguages.test.ts │ │ │ │ ├── charset.test.ts │ │ │ │ ├── fresh.test.ts │ │ │ │ ├── get.test.ts │ │ │ │ ├── header.test.ts │ │ │ │ ├── headers.test.ts │ │ │ │ ├── host.test.ts │ │ │ │ ├── hostname.test.ts │ │ │ │ ├── href.test.ts │ │ │ │ ├── idempotent.test.ts │ │ │ │ ├── inspect.test.ts │ │ │ │ ├── ip.test.ts │ │ │ │ ├── ips.test.ts │ │ │ │ ├── is.test.ts │ │ │ │ ├── length.test.ts │ │ │ │ ├── origin.test.ts │ │ │ │ ├── path.test.ts │ │ │ │ ├── protocol.test.ts │ │ │ │ ├── query.test.ts │ │ │ │ ├── querystring.test.ts │ │ │ │ ├── search.test.ts │ │ │ │ ├── secure.test.ts │ │ │ │ ├── stale.test.ts │ │ │ │ ├── subdomains.test.ts │ │ │ │ ├── type.test.ts │ │ │ │ └── whatwg-url.test.ts │ │ │ ├── response/ │ │ │ │ ├── append.test.ts │ │ │ │ ├── attachment.test.ts │ │ │ │ ├── body.test.ts │ │ │ │ ├── etag.test.ts │ │ │ │ ├── flushHeaders.test.ts │ │ │ │ ├── has.test.ts │ │ │ │ ├── header.test.ts │ │ │ │ ├── headers.test.ts │ │ │ │ ├── inspect.test.ts │ │ │ │ ├── is.test.ts │ │ │ │ ├── last-modified.test.ts │ │ │ │ ├── length.test.ts │ │ │ │ ├── message.test.ts │ │ │ │ ├── redirect.test.ts │ │ │ │ ├── remove.test.ts │ │ │ │ ├── set.test.ts │ │ │ │ ├── socket.test.ts │ │ │ │ ├── status.test.ts │ │ │ │ ├── type.test.ts │ │ │ │ ├── vary.test.ts │ │ │ │ └── writable.test.ts │ │ │ └── test-helpers/ │ │ │ └── context.ts │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── koa-static-cache/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── test/ │ │ │ └── index.test.ts │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── logger/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── egg/ │ │ │ │ ├── console_logger.ts │ │ │ │ ├── custom_logger.ts │ │ │ │ ├── error_logger.ts │ │ │ │ ├── logger.ts │ │ │ │ └── loggers.ts │ │ │ ├── index.ts │ │ │ ├── level.ts │ │ │ ├── logger.ts │ │ │ ├── transports/ │ │ │ │ ├── console.ts │ │ │ │ ├── file.ts │ │ │ │ ├── file_buffer.ts │ │ │ │ └── transport.ts │ │ │ ├── utils.ts │ │ │ └── vendor.d.ts │ │ ├── test/ │ │ │ ├── fixtures/ │ │ │ │ ├── console_transport.ts │ │ │ │ ├── egg_console_logger.ts │ │ │ │ ├── egg_custom_logger.ts │ │ │ │ ├── egg_error_logger.ts │ │ │ │ ├── egg_logger.ts │ │ │ │ ├── egg_logger_dynamically.ts │ │ │ │ ├── egg_loggers.ts │ │ │ │ └── egg_loggers_console_duplicate.ts │ │ │ ├── lib/ │ │ │ │ ├── egg/ │ │ │ │ │ ├── console_logger.test.ts │ │ │ │ │ ├── custom_logger.test.ts │ │ │ │ │ ├── error_logger.test.ts │ │ │ │ │ ├── logger.test.ts │ │ │ │ │ └── loggers.test.ts │ │ │ │ ├── formatter.test.ts │ │ │ │ ├── logger.test.ts │ │ │ │ ├── transports/ │ │ │ │ │ ├── console.test.ts │ │ │ │ │ ├── file.test.ts │ │ │ │ │ ├── file_buffer.test.ts │ │ │ │ │ └── transport.test.ts │ │ │ │ └── utils.test.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── path-matching/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── test/ │ │ │ └── index.test.ts │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── router/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bench/ │ │ │ ├── Makefile │ │ │ └── server.cjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── EggRouter.ts │ │ │ ├── Layer.ts │ │ │ ├── Router.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── EggRouter.test.ts │ │ │ ├── Layer.test.ts │ │ │ ├── Router.test.ts │ │ │ └── index.test.ts │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── skills/ │ │ ├── CLAUDE.md │ │ ├── PLAN.md │ │ ├── README.md │ │ ├── egg/ │ │ │ └── SKILL.md │ │ ├── egg-controller/ │ │ │ ├── SKILL.md │ │ │ └── references/ │ │ │ ├── ajv-validate.md │ │ │ ├── http-controller.md │ │ │ ├── mcp-controller.md │ │ │ └── schedule.md │ │ ├── egg-core/ │ │ │ ├── SKILL.md │ │ │ └── references/ │ │ │ ├── aop.md │ │ │ ├── background-task.md │ │ │ ├── dynamic-inject.md │ │ │ ├── eventbus.md │ │ │ ├── inject.md │ │ │ ├── module.md │ │ │ └── proto.md │ │ ├── eval/ │ │ │ ├── .gitignore │ │ │ ├── evals-egg-controller.json │ │ │ ├── evals-egg-core.json │ │ │ └── evals-routing.json │ │ └── package.json │ ├── supertest/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── error/ │ │ │ │ └── AssertError.ts │ │ │ ├── index.ts │ │ │ ├── request.ts │ │ │ ├── test.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── fixtures/ │ │ │ │ ├── test_cert.pem │ │ │ │ └── test_key.pem │ │ │ ├── supertest.test.ts │ │ │ └── throwError.ts │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── tsconfig/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── test/ │ │ │ ├── fixtures/ │ │ │ │ └── apps/ │ │ │ │ └── ts-proj/ │ │ │ │ ├── Foo.ts │ │ │ │ ├── FooDecorator.ts │ │ │ │ └── tsconfig.json │ │ │ └── index.test.ts │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ └── utils/ │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── package.json │ ├── src/ │ │ ├── deprecated.ts │ │ ├── error/ │ │ │ ├── ImportResolveError.ts │ │ │ └── index.ts │ │ ├── framework.ts │ │ ├── import.ts │ │ ├── index.ts │ │ ├── plugin.ts │ │ └── utils.ts │ ├── test/ │ │ ├── __snapshots__/ │ │ │ └── index.test.ts.snap │ │ ├── fixtures/ │ │ │ ├── cjs/ │ │ │ │ ├── es-module-default.js │ │ │ │ ├── exports.cjs │ │ │ │ ├── exports.js │ │ │ │ ├── extend/ │ │ │ │ │ └── index.js │ │ │ │ ├── index.js │ │ │ │ ├── module-exports-null.js │ │ │ │ ├── package.json │ │ │ │ └── run.js │ │ │ ├── cjs-index/ │ │ │ │ ├── index.cjs │ │ │ │ └── package.json │ │ │ ├── egg-app/ │ │ │ │ ├── config/ │ │ │ │ │ └── plugin.test.js │ │ │ │ ├── get_config.js │ │ │ │ ├── get_loadunit.js │ │ │ │ ├── get_plugin.js │ │ │ │ ├── package.json │ │ │ │ └── plugin/ │ │ │ │ └── p/ │ │ │ │ └── package.json │ │ │ ├── esm/ │ │ │ │ ├── config/ │ │ │ │ │ └── plugin.js │ │ │ │ ├── export-default-null.js │ │ │ │ ├── exports.js │ │ │ │ ├── exports.mjs │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── esm-index/ │ │ │ │ ├── index.mjs │ │ │ │ └── package.json │ │ │ ├── framework-egg-default/ │ │ │ │ ├── app/ │ │ │ │ │ └── router.js │ │ │ │ ├── app.js │ │ │ │ └── package.json │ │ │ ├── framework-egg-default-noexist/ │ │ │ │ └── package.json │ │ │ ├── framework-pkg-egg/ │ │ │ │ └── package.json │ │ │ ├── framework-pkg-egg-noexist/ │ │ │ │ └── package.json │ │ │ ├── monorepo-app/ │ │ │ │ └── packages/ │ │ │ │ └── a/ │ │ │ │ └── package.json │ │ │ ├── no-package-json/ │ │ │ │ └── index.js │ │ │ ├── test-app/ │ │ │ │ ├── package.json │ │ │ │ └── test/ │ │ │ │ └── fixtures/ │ │ │ │ └── app/ │ │ │ │ └── package.json │ │ │ ├── ts-module/ │ │ │ │ ├── exports.ts │ │ │ │ ├── extend/ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mod.ts │ │ │ │ └── package.json │ │ │ ├── tshy/ │ │ │ │ ├── package.json │ │ │ │ └── src/ │ │ │ │ └── index.ts │ │ │ ├── tshy-dist/ │ │ │ │ ├── dist2/ │ │ │ │ │ ├── commonjs/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── esm/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── package.json │ │ │ │ └── src/ │ │ │ │ └── index.ts │ │ │ └── yadan-app/ │ │ │ └── package.json │ │ ├── framework.test.ts │ │ ├── getFrameworkOrEggPath.test.ts │ │ ├── helper.ts │ │ ├── import.test.ts │ │ ├── index.test.ts │ │ └── plugin.test.ts │ ├── tsconfig.json │ ├── tsdown.config.ts │ └── vitest.config.ts ├── plugins/ │ ├── development/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── app/ │ │ │ │ └── middleware/ │ │ │ │ ├── egg_loader_trace.ts │ │ │ │ └── loader_trace.html │ │ │ ├── app.ts │ │ │ ├── config/ │ │ │ │ └── config.default.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── test/ │ │ │ ├── absolute.test.ts │ │ │ ├── custom.test.ts │ │ │ ├── development-ts.test.ts │ │ │ ├── development.test.ts │ │ │ ├── fast_ready_false.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── absolute/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── custom/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── delay-ready/ │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── development/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── development-process_mode_single/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── development-ts/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ ├── router.ts │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── package.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── fast-ready/ │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── not-reload/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ │ └── a.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── override/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── no-trigger/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── override-ignore/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ └── web/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ └── timing/ │ │ │ │ ├── app/ │ │ │ │ │ └── router.js │ │ │ │ ├── app.js │ │ │ │ ├── config/ │ │ │ │ │ ├── config.js │ │ │ │ │ └── plugin.js │ │ │ │ └── package.json │ │ │ ├── not-reload.test.ts │ │ │ ├── override.test.ts │ │ │ ├── process_mode_single.test.ts │ │ │ ├── timing.test.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── i18n/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ └── extend/ │ │ │ │ ├── application.ts │ │ │ │ └── context.ts │ │ │ ├── app.ts │ │ │ ├── config/ │ │ │ │ └── config.default.ts │ │ │ ├── index.ts │ │ │ ├── locales.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── test/ │ │ │ ├── fixtures/ │ │ │ │ ├── apps/ │ │ │ │ │ ├── i18n/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── message.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── locales/ │ │ │ │ │ │ │ ├── de.json │ │ │ │ │ │ │ ├── xx.txt │ │ │ │ │ │ │ └── zh-CN.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── i18n-domain/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── message.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── locales/ │ │ │ │ │ │ │ ├── de.json │ │ │ │ │ │ │ ├── xx.txt │ │ │ │ │ │ │ └── zh-CN.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── loader/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── locales/ │ │ │ │ │ │ │ ├── zh-CN.ts │ │ │ │ │ │ │ ├── zh-CN.yaml │ │ │ │ │ │ │ └── zh_CN.properties │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── b/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── locales/ │ │ │ │ │ │ │ └── zh-CN.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── c/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── locale/ │ │ │ │ │ │ │ │ └── zh-CN.js │ │ │ │ │ │ │ └── locales/ │ │ │ │ │ │ │ └── zh-CN.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ ├── locales/ │ │ │ │ │ │ │ ├── de.json │ │ │ │ │ │ │ └── zh-CN.js │ │ │ │ │ │ ├── locales2/ │ │ │ │ │ │ │ └── zh-CN.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ └── custom_egg/ │ │ │ │ ├── config/ │ │ │ │ │ └── locales/ │ │ │ │ │ └── zh-CN.js │ │ │ │ ├── index.js │ │ │ │ └── package.json │ │ │ ├── i18n.test.ts │ │ │ └── utils.test.ts │ │ └── tsconfig.json │ ├── jsonp/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ └── extend/ │ │ │ │ ├── application.ts │ │ │ │ └── context.ts │ │ │ ├── config/ │ │ │ │ └── config.default.ts │ │ │ ├── error/ │ │ │ │ └── JSONPForbiddenReferrerError.ts │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ └── private_key.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── fixtures/ │ │ │ │ └── jsonp-test/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── jsonp.js │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ └── jsonp.test.ts │ │ └── tsconfig.json │ ├── logrotator/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── README.zh-CN.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── app/ │ │ │ │ ├── extend/ │ │ │ │ │ ├── agent.ts │ │ │ │ │ └── application.ts │ │ │ │ └── schedule/ │ │ │ │ ├── clean_log.ts │ │ │ │ ├── rotate_by_file.ts │ │ │ │ ├── rotate_by_hour.ts │ │ │ │ └── rotate_by_size.ts │ │ │ ├── app.ts │ │ │ ├── boot.ts │ │ │ ├── config/ │ │ │ │ └── config.default.ts │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ ├── day_rotator.ts │ │ │ │ ├── hour_rotator.ts │ │ │ │ ├── rotator.ts │ │ │ │ ├── size_rotator.ts │ │ │ │ └── utils.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── clean_log.test.ts.snap │ │ │ ├── clean_log.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── clean-log/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── logger-reload/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── logrotator-agent/ │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── logrotator-app/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── logrotator-app-day-gzip/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── logrotator-app-hour/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── logrotator-app-hour-custom_hourdelimiter/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── logrotator-app-hour-gzip/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── logrotator-app-size/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── logrotator-app-size-gzip/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── logrotator-default/ │ │ │ │ │ └── package.json │ │ │ │ ├── logrotator-json-format/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ └── noexist-rotator-dir/ │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── index.test.ts │ │ │ ├── logrotator.test.ts │ │ │ ├── rotate_by_day.test.ts │ │ │ ├── rotate_by_size.test.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── mock/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── README.zh_CN.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── extend/ │ │ │ │ │ ├── agent.ts │ │ │ │ │ └── application.ts │ │ │ │ └── middleware/ │ │ │ │ └── cluster_app_mock.ts │ │ │ ├── app.ts │ │ │ ├── bootstrap.ts │ │ │ ├── index.ts │ │ │ ├── inject_mocha.ts │ │ │ ├── lib/ │ │ │ │ ├── agent_handler.ts │ │ │ │ ├── app.ts │ │ │ │ ├── app_handler.ts │ │ │ │ ├── cluster.ts │ │ │ │ ├── context.ts │ │ │ │ ├── format_options.ts │ │ │ │ ├── inject_context.ts │ │ │ │ ├── mock_agent.ts │ │ │ │ ├── mock_custom_loader.ts │ │ │ │ ├── mock_http_server.ts │ │ │ │ ├── mock_httpclient.ts │ │ │ │ ├── parallel/ │ │ │ │ │ ├── agent.ts │ │ │ │ │ ├── app.ts │ │ │ │ │ └── util.ts │ │ │ │ ├── prerequire.ts │ │ │ │ ├── request_call_function.ts │ │ │ │ ├── restore.ts │ │ │ │ ├── start-cluster.ts │ │ │ │ ├── supertest.ts │ │ │ │ ├── tmp/ │ │ │ │ │ ├── .gitkeep │ │ │ │ │ └── empty.ts │ │ │ │ ├── types.ts │ │ │ │ └── utils.ts │ │ │ ├── register.ts │ │ │ ├── setup_vitest.ts │ │ │ └── typings/ │ │ │ └── index.d.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── app_proxy.test.ts.snap │ │ │ ├── agent.test.ts │ │ │ ├── app/ │ │ │ │ └── middleware/ │ │ │ │ └── cluster_app_mock.test.ts │ │ │ ├── app.test.ts │ │ │ ├── app_event.test.ts │ │ │ ├── app_proxy.test.ts │ │ │ ├── bootstrap-plugin.test.ts │ │ │ ├── bootstrap.test.ts │ │ │ ├── cluster-worker_threads.test.ts │ │ │ ├── cluster.test.ts │ │ │ ├── ctx.test.ts │ │ │ ├── demo-cluster.ts │ │ │ ├── fixtures/ │ │ │ │ ├── agent/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── client.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── agent-boot-error/ │ │ │ │ │ ├── agent.js │ │ │ │ │ └── package.json │ │ │ │ ├── agent-boot-ready-error/ │ │ │ │ │ ├── agent.js │ │ │ │ │ └── package.json │ │ │ │ ├── app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── app-boot-error/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── app-boot-ready-error/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── app-event/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── app-fail/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── app-proxy/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ └── application.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── app-proxy-ready/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── app-ready-failed/ │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── index.test.js │ │ │ │ ├── apps/ │ │ │ │ │ ├── app-not-clean/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-throw/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── barapp/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── env-app/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ ├── config.local.js │ │ │ │ │ │ │ ├── config.prod.js │ │ │ │ │ │ │ ├── config.test.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── foo/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── helloworld/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── test/ │ │ │ │ │ │ └── helloworld.test.js │ │ │ │ │ ├── mock_cookies/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── mockhome/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── no-framework/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── plugin/ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ │ └── application.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── parallel-test/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ ├── a.test.js │ │ │ │ │ ├── b.test.js │ │ │ │ │ └── c.test.js │ │ │ │ ├── bar/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── cache/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── chair/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── create-context-failed/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── index.test.js │ │ │ │ ├── custom-loader/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── adapter/ │ │ │ │ │ │ │ └── docker.js │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── repository/ │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── custom_egg/ │ │ │ │ │ └── package.json │ │ │ │ ├── demo/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── context.js │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── file.js │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ ├── session.js │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ └── application.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ ├── old.js │ │ │ │ │ │ └── third/ │ │ │ │ │ │ └── bar/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── mocks_data/ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── get/ │ │ │ │ │ │ │ └── foobar.js │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ └── get/ │ │ │ │ │ │ └── foobar.js │ │ │ │ │ └── package.json │ │ │ │ ├── demo-async/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ └── third/ │ │ │ │ │ │ └── bar/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ ├── mocks_data/ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── get/ │ │ │ │ │ │ │ └── foobar.js │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ └── get/ │ │ │ │ │ │ └── foobar.js │ │ │ │ │ └── package.json │ │ │ │ ├── demo_mock_service_cluster/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── context.js │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── file.js │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ ├── session.js │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ └── application.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ ├── old.js │ │ │ │ │ │ └── third/ │ │ │ │ │ │ └── bar/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── mocks_data/ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── get/ │ │ │ │ │ │ │ └── foobar.js │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ └── get/ │ │ │ │ │ │ └── foobar.js │ │ │ │ │ └── package.json │ │ │ │ ├── demo_next/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── context.js │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── file.js │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ ├── session.js │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ └── application.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ ├── old.js │ │ │ │ │ │ └── third/ │ │ │ │ │ │ └── bar/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ ├── mocks_data/ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── get/ │ │ │ │ │ │ │ └── foobar.js │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ └── get/ │ │ │ │ │ │ └── foobar.js │ │ │ │ │ └── package.json │ │ │ │ ├── demo_next_h2/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── context.js │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── file.js │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ ├── session.js │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ └── application.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ ├── old.js │ │ │ │ │ │ └── third/ │ │ │ │ │ │ └── bar/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ ├── mocks_data/ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── get/ │ │ │ │ │ │ │ └── foobar.js │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ └── get/ │ │ │ │ │ │ └── foobar.js │ │ │ │ │ └── package.json │ │ │ │ ├── disable-security/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── context.js │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ └── session.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ ├── foo.js │ │ │ │ │ │ ├── old.js │ │ │ │ │ │ └── third/ │ │ │ │ │ │ └── bar/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── mocks_data/ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── get/ │ │ │ │ │ │ │ └── foobar.js │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ └── get/ │ │ │ │ │ │ └── foobar.js │ │ │ │ │ └── package.json │ │ │ │ ├── error-framework/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── failed-app/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── index.test.js │ │ │ │ ├── fooPlugin/ │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── get-app-failed/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── index.test.js │ │ │ │ ├── messenger-binding/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── plugin/ │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-bootstrap/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test.js │ │ │ │ ├── plugin_throw/ │ │ │ │ │ └── package.json │ │ │ │ ├── request/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── server/ │ │ │ │ │ ├── app.js │ │ │ │ │ └── package.json │ │ │ │ ├── setup-app/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ ├── .setup.js │ │ │ │ │ └── index.test.js │ │ │ │ ├── simple/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── tegg-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── modules/ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ ├── LogService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ ├── hooks.test.ts │ │ │ │ │ │ ├── multi_mock_context.test.ts │ │ │ │ │ │ ├── tegg.test.ts │ │ │ │ │ │ └── tegg_context.test.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── typing.ts │ │ │ │ ├── tegg-app-esm/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── modules/ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ ├── LogService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ ├── hooks.test.ts │ │ │ │ │ │ ├── multi_mock_context.test.ts │ │ │ │ │ │ ├── tegg.test.ts │ │ │ │ │ │ └── tegg_context.test.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── typing.ts │ │ │ │ ├── test-case-create-context-failed/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── index.test.js │ │ │ │ ├── test-case-get-app-failed/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── index.test.js │ │ │ │ ├── yadan_app/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ └── yadan_app_fail/ │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── format_options.test.ts │ │ │ ├── helper.ts │ │ │ ├── index.test-skip.ts │ │ │ ├── inject_ctx.test.ts │ │ │ ├── mm.test.ts │ │ │ ├── mock_agent_httpclient.test.ts │ │ │ ├── mock_cluster_extend.test.ts │ │ │ ├── mock_cluster_restore.test.ts │ │ │ ├── mock_cluster_without_security_plugin.test.ts │ │ │ ├── mock_context.test.ts │ │ │ ├── mock_cookies.test.ts │ │ │ ├── mock_csrf.test.ts │ │ │ ├── mock_custom_loader.test.ts │ │ │ ├── mock_env.test.ts │ │ │ ├── mock_headers.test.ts │ │ │ ├── mock_httpclient_next.test.ts │ │ │ ├── mock_httpclient_next_h2.test.ts │ │ │ ├── mock_request.test.ts │ │ │ ├── mock_service.test.ts │ │ │ ├── mock_service_async.test.ts │ │ │ ├── mock_service_cluster.test.ts │ │ │ ├── mock_session.test.ts │ │ │ ├── parallel.test.ts │ │ │ ├── parallel_hook.test.ts │ │ │ └── setup_vitest.test.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── multipart/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── extend/ │ │ │ │ │ └── context.ts │ │ │ │ ├── middleware/ │ │ │ │ │ └── multipart.ts │ │ │ │ └── schedule/ │ │ │ │ └── clean_tmpdir.ts │ │ │ ├── app.ts │ │ │ ├── config/ │ │ │ │ └── config.default.ts │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ ├── LimitError.ts │ │ │ │ ├── MultipartFileTooLargeError.ts │ │ │ │ └── utils.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── dynamic-option.test.ts │ │ │ ├── enable-pathToRegexpModule.test.ts │ │ │ ├── file-mode-limit-filesize-per-request.test.ts │ │ │ ├── file-mode.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── apps/ │ │ │ │ │ ├── dynamic-option/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── upload.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── views/ │ │ │ │ │ │ │ └── home.html │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── file-mode/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── upload.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── views/ │ │ │ │ │ │ │ └── home.html │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── fileModeMatch/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── save.js │ │ │ │ │ │ │ │ └── upload.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── views/ │ │ │ │ │ │ │ └── home.html │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── fileModeMatch-glob/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── save.js │ │ │ │ │ │ │ │ └── upload.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── views/ │ │ │ │ │ │ │ └── home.html │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── fileModeMatch-glob-with-pathToRegexpModule/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── save.js │ │ │ │ │ │ │ │ └── upload.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── views/ │ │ │ │ │ │ │ └── home.html │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── limit-filesize-per-request/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── multipart/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── upload.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── views/ │ │ │ │ │ │ │ └── home.html │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── multipart-for-await/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── upload.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── views/ │ │ │ │ │ │ │ └── home.html │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── multipart-with-whitelist/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── upload.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── ts/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.ts │ │ │ │ │ │ │ └── router.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── upload-limit/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── upload-one-file/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── async.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── whitelist-function/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── upload.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── config.unittest.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── wrong-fileModeMatch/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── wrong-fileModeMatch-value/ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── wrong-mode/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── bigfile.txt │ │ │ │ ├── testfile.txt │ │ │ │ └── 中文名.js │ │ │ ├── multipart-for-await.test.ts │ │ │ ├── multipart.test.ts │ │ │ ├── setup.ts │ │ │ ├── stream-mode-with-filematch-glob.test.ts │ │ │ ├── stream-mode-with-filematch.test.ts │ │ │ ├── ts.test.ts │ │ │ ├── utils.ts │ │ │ └── wrong-mode.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── onerror/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── app.ts │ │ │ ├── config/ │ │ │ │ └── config.default.ts │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ ├── error_view.ts │ │ │ │ ├── onerror_page.mustache.html │ │ │ │ └── utils.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── fixtures/ │ │ │ │ ├── agent-error/ │ │ │ │ │ ├── agent.js │ │ │ │ │ └── package.json │ │ │ │ ├── custom-listener-onerror/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── mock-test-error/ │ │ │ │ │ └── package.json │ │ │ │ ├── onerror/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── onerror-4xx/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── onerror-ctx-error/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ └── context.js │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ └── trigger.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── onerror-custom-500/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── onerror-custom-template/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── template.mustache │ │ │ │ ├── onerror-customize/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ │ └── user.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ └── onerror-no-errorpage/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ ├── home.js │ │ │ │ │ │ └── user.js │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ └── onerror.test.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── redis/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── docker-compose.yml │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── app.ts │ │ │ ├── config/ │ │ │ │ └── config.default.ts │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ └── redis.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── redis.test.ts.snap │ │ │ ├── fixtures/ │ │ │ │ ├── apps/ │ │ │ │ │ ├── redisapp/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── redisapp-customize/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── redisapp-default/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── redisapp-disable-offline-queue/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── redisapp-mock/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── redisapp-supportTimeCommand-false/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── redisapp-weakdependent/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── redisclusterapp/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── redispathapp/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── redissentinelapp/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── ts/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ └── redisapp-ts/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.ts │ │ │ │ │ │ │ └── router.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.ts │ │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ └── ts-multi/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── redisapp-ts/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── home.ts │ │ │ │ │ │ │ └── router.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.ts │ │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── tsconfig.json │ │ │ │ └── redis/ │ │ │ │ ├── redispath-26381.conf │ │ │ │ ├── sentinel-26379.conf │ │ │ │ └── sentinel-26380.conf │ │ │ └── redis.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── schedule/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── app/ │ │ │ │ └── extend/ │ │ │ │ ├── agent.ts │ │ │ │ ├── application.ts │ │ │ │ └── application.unittest.ts │ │ │ ├── app.ts │ │ │ ├── config/ │ │ │ │ └── config.default.ts │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ ├── load_schedule.ts │ │ │ │ ├── schedule.ts │ │ │ │ ├── schedule_worker.ts │ │ │ │ ├── strategy/ │ │ │ │ │ ├── all.ts │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── timer.ts │ │ │ │ │ └── worker.ts │ │ │ │ └── types.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── all.test.ts │ │ │ ├── cronError.test.ts │ │ │ ├── customDirectory.test.ts │ │ │ ├── customType.test.ts │ │ │ ├── customTypeError.test.ts │ │ │ ├── customTypeParams.test.ts │ │ │ ├── customTypePlugin.test.ts │ │ │ ├── customTypeWithoutStart.test.ts │ │ │ ├── detect-error.test.ts │ │ │ ├── dynamic.test.ts │ │ │ ├── env.test.ts │ │ │ ├── executeError-task-generator.test.ts │ │ │ ├── executeError.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── all/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── interval.js │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ └── cron.js │ │ │ │ │ └── package.json │ │ │ │ ├── async/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── schedule/ │ │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ │ └── cron.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── user.js │ │ │ │ │ └── package.json │ │ │ │ ├── context/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── schedule/ │ │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ │ └── cron.js │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── user.js │ │ │ │ │ └── package.json │ │ │ │ ├── cronError/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── interval.js │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ └── cron.js │ │ │ │ │ └── package.json │ │ │ │ ├── cronOptions/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ └── cron-options.js │ │ │ │ │ └── package.json │ │ │ │ ├── customDirectory/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── other-schedule/ │ │ │ │ │ │ │ └── custom.js │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ └── interval.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── customType/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ └── cluster.js │ │ │ │ │ └── package.json │ │ │ │ ├── customTypeError/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ └── cluster.js │ │ │ │ │ └── package.json │ │ │ │ ├── customTypeParams/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── cluster-all-clz.js │ │ │ │ │ │ ├── cluster-all.js │ │ │ │ │ │ ├── cluster-clz.js │ │ │ │ │ │ └── cluster.js │ │ │ │ │ └── package.json │ │ │ │ ├── customTypePlugin/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ └── cluster.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── plugin/ │ │ │ │ │ │ ├── agent.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── customTypeWithoutStart/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ └── cluster.js │ │ │ │ │ └── package.json │ │ │ │ ├── demo/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ └── package.json │ │ │ │ ├── detect-error/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── error.js │ │ │ │ │ │ ├── fail.js │ │ │ │ │ │ └── suc.js │ │ │ │ │ └── package.json │ │ │ │ ├── dynamic-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── interval.js │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ └── cron.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── dynamic-cluster/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── interval.js │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ └── cron.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── env/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── local.js │ │ │ │ │ │ ├── undefined.js │ │ │ │ │ │ └── unittest.js │ │ │ │ │ └── package.json │ │ │ │ ├── executeError/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ └── interval.js │ │ │ │ │ └── package.json │ │ │ │ ├── executeError-task-generator/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ └── interval.js │ │ │ │ │ └── package.json │ │ │ │ ├── immediate/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── immediate-cron.js │ │ │ │ │ │ └── immediate-interval.js │ │ │ │ │ └── package.json │ │ │ │ ├── immediate-onlyonce/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ └── immediate-onlyonce.js │ │ │ │ │ └── package.json │ │ │ │ ├── plugin/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── plugin/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── interval.js │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ └── cron.js │ │ │ │ │ └── package.json │ │ │ │ ├── safe-timers/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── interval.js │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ └── cron.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── scheduleError/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── interval.js │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ └── cron.js │ │ │ │ │ └── package.json │ │ │ │ ├── stop/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ └── interval.js │ │ │ │ │ └── package.json │ │ │ │ ├── subscription/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── interval.js │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ └── cron.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── subscription-enableFastContextLogger/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── interval.js │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ └── cron.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── subscription-generator/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── interval.js │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ └── cron.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── symlink/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── realFile.js │ │ │ │ │ ├── runDir/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ └── package.json │ │ │ │ │ └── tsRealFile.ts │ │ │ │ ├── typeUndefined/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── sub/ │ │ │ │ │ │ │ └── cron.js │ │ │ │ │ │ └── undefined.js │ │ │ │ │ └── package.json │ │ │ │ ├── unknown/ │ │ │ │ │ ├── agent.js │ │ │ │ │ └── package.json │ │ │ │ ├── worker/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ ├── interval.js │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ └── cron.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ └── worker-ctxStorage/ │ │ │ │ ├── app/ │ │ │ │ │ └── schedule/ │ │ │ │ │ ├── interval.js │ │ │ │ │ └── sub/ │ │ │ │ │ └── foobar.js │ │ │ │ ├── config/ │ │ │ │ │ └── plugin.js │ │ │ │ └── package.json │ │ │ ├── immediate.test.ts │ │ │ ├── safe-timers.test.ts │ │ │ ├── schedule-plugin.test.ts │ │ │ ├── schedule-type-worker1.test.ts │ │ │ ├── schedule-type-worker2.test.ts │ │ │ ├── schedule.test.ts │ │ │ ├── scheduleError.test.ts │ │ │ ├── stop.test.ts │ │ │ ├── subscription.test.ts │ │ │ ├── typeUndefined.test.ts │ │ │ ├── unknown.test.ts │ │ │ └── utils.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── security/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── README.zh-CN.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── app/ │ │ │ │ ├── extend/ │ │ │ │ │ ├── agent.ts │ │ │ │ │ ├── application.ts │ │ │ │ │ ├── context.ts │ │ │ │ │ ├── helper.ts │ │ │ │ │ └── response.ts │ │ │ │ └── middleware/ │ │ │ │ └── securities.ts │ │ │ ├── app.ts │ │ │ ├── config/ │ │ │ │ ├── config.default.ts │ │ │ │ └── config.local.ts │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ ├── extend/ │ │ │ │ │ └── safe_curl.ts │ │ │ │ ├── helper/ │ │ │ │ │ ├── cliFilter.ts │ │ │ │ │ ├── escape.ts │ │ │ │ │ ├── escapeShellArg.ts │ │ │ │ │ ├── escapeShellCmd.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shtml.ts │ │ │ │ │ ├── sjs.ts │ │ │ │ │ ├── sjson.ts │ │ │ │ │ ├── spath.ts │ │ │ │ │ └── surl.ts │ │ │ │ ├── middlewares/ │ │ │ │ │ ├── csp.ts │ │ │ │ │ ├── csrf.ts │ │ │ │ │ ├── dta.ts │ │ │ │ │ ├── hsts.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── methodnoallow.ts │ │ │ │ │ ├── noopen.ts │ │ │ │ │ ├── nosniff.ts │ │ │ │ │ ├── referrerPolicy.ts │ │ │ │ │ ├── xframe.ts │ │ │ │ │ └── xssProtection.ts │ │ │ │ └── utils.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ ├── context.test.ts.snap │ │ │ │ ├── csp.test.ts.snap │ │ │ │ ├── csrf.test.ts.snap │ │ │ │ ├── dta.test.ts.snap │ │ │ │ └── xss.test.ts.snap │ │ │ ├── app/ │ │ │ │ └── extends/ │ │ │ │ ├── cliFilter.test.ts │ │ │ │ ├── escapeShellArg.test.ts │ │ │ │ ├── escapeShellCmd.test.ts │ │ │ │ ├── helper.test.ts │ │ │ │ ├── sjs.test.ts │ │ │ │ ├── sjson.test.ts │ │ │ │ └── spath.test.ts │ │ │ ├── benchmark/ │ │ │ │ ├── cidr_subnet.js │ │ │ │ └── set_header.js │ │ │ ├── benchmark.js │ │ │ ├── config/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── config.default.test.ts.snap │ │ │ │ └── config.default.test.ts │ │ │ ├── context.test.ts │ │ │ ├── csp.test.ts │ │ │ ├── csrf.test.ts │ │ │ ├── csrf_cookieDomain.test.ts │ │ │ ├── dta.test.ts │ │ │ ├── fixtures/ │ │ │ │ └── apps/ │ │ │ │ ├── csp/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── csp-ignore/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── csp-reportonly/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── csp-supportie/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf-cookieOptions/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf-cookieOptions-signed/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf-empty-referer/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf-enable-false/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf-error-type/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf-ignorejson/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf-multiple/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf-session-disable/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf-string-cookiedomain/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf-supported-override-default/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf-supported-requests/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── csrf-supported-requests-default-config/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── ctoken/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── dta/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── helper-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── helper-app-surlextend/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── helper-cliFilter-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── helper-config-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ ├── helper-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── router.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── helper-escapeShellArg-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── helper-escapeShellCmd-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── helper-link-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── helper-sjs-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── helper-sjson-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── helper-spath-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── hsts/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── hsts-default/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── hsts-nosub/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── iframe/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── iframe-allowfrom/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── iframe-black-urls/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── iframe-novalue/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── inject/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── view/ │ │ │ │ │ │ └── index.nj │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── isSafeDomain/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── isSafeDomain-custom/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── method/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── noopen/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── nosniff/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── referrer/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── referrer-config/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── referrer-config-compatibility/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── safe_redirect/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── safe_redirect_noconfig/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── security/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── security-override-controller/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── security-override-middleware/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── middleware/ │ │ │ │ │ │ │ └── override.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── security-unset/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── ssrf-check-address/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── ssrf-check-address-useHttpClientNext/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── ssrf-hostname-exception-list/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── ssrf-ip-black-list/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── ssrf-ip-exception-list/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── utils-check-if-pass/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── utils-check-if-pass2/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── utils-check-if-pass3/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── utils-check-if-pass4/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── utils-check-if-pass5/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── utils-check-if-pass6/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── xss/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ ├── xss-close/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.js │ │ │ │ │ └── package.json │ │ │ │ └── xss-close-zero/ │ │ │ │ ├── app/ │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.js │ │ │ │ └── package.json │ │ │ ├── hsts.test.ts │ │ │ ├── inject.test.ts │ │ │ ├── lib/ │ │ │ │ └── helper/ │ │ │ │ └── surl.test.ts │ │ │ ├── method_not_allow.test.ts │ │ │ ├── noopen.test.ts │ │ │ ├── nosniff.test.ts │ │ │ ├── referrer.test.ts │ │ │ ├── safe_redirect.test.ts │ │ │ ├── security.test.ts │ │ │ ├── ssrf.test.ts │ │ │ ├── utils.test.ts │ │ │ ├── utils.ts │ │ │ ├── xframe.test.ts │ │ │ └── xss.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── session/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── extend/ │ │ │ │ │ └── application.ts │ │ │ │ └── middleware/ │ │ │ │ └── session.ts │ │ │ ├── app.ts │ │ │ ├── config/ │ │ │ │ └── config.default.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── app/ │ │ │ │ └── middleware/ │ │ │ │ └── session.test.ts │ │ │ └── fixtures/ │ │ │ ├── chips/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.js │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── cookie-session/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.js │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── httponly-false-session/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.js │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── logValue-false-session/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.js │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── memory-session/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.js │ │ │ │ │ └── router.js │ │ │ │ ├── app.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── memory-session-generator/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.js │ │ │ │ │ └── router.js │ │ │ │ ├── app.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── redis-session/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.js │ │ │ │ │ └── router.js │ │ │ │ ├── app.js │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── plugin.js │ │ │ │ └── package.json │ │ │ ├── samesite-none-session/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.js │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ └── session-maxage-session/ │ │ │ ├── app/ │ │ │ │ ├── controller/ │ │ │ │ │ └── home.js │ │ │ │ └── router.js │ │ │ ├── config/ │ │ │ │ └── config.default.js │ │ │ └── package.json │ │ └── tsconfig.json │ ├── static/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ └── middleware/ │ │ │ │ └── static.ts │ │ │ ├── app.ts │ │ │ ├── config/ │ │ │ │ ├── config.default.ts │ │ │ │ └── config.prod.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── fixtures/ │ │ │ │ ├── static-server/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ └── foo.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── static-server-custom/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── assets/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── static-server-dist/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── assets/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── static-server-with-dir/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── public/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ └── static-server-with-dirs/ │ │ │ │ ├── app/ │ │ │ │ │ └── public/ │ │ │ │ │ └── foo.js │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── plugin.js │ │ │ │ └── package.json │ │ │ └── static.test.ts │ │ └── tsconfig.json │ ├── tracer/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── agent.ts │ │ │ ├── app/ │ │ │ │ └── extend/ │ │ │ │ ├── agent.ts │ │ │ │ ├── application.ts │ │ │ │ └── context.ts │ │ │ ├── app.ts │ │ │ ├── boot.ts │ │ │ ├── config/ │ │ │ │ └── config.default.ts │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ └── tracer.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── error.tracer.test.ts │ │ │ ├── fixtures/ │ │ │ │ └── apps/ │ │ │ │ ├── error-tracer-test/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ └── plugin-test/ │ │ │ │ ├── agent.js │ │ │ │ ├── app/ │ │ │ │ │ └── router.js │ │ │ │ ├── app.js │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── plugin.js │ │ │ │ └── package.json │ │ │ ├── index.test.ts │ │ │ ├── plugin.test.ts │ │ │ ├── tracer.test.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── typebox-validate/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ └── extend/ │ │ │ │ └── context.ts │ │ │ ├── app.ts │ │ │ ├── config/ │ │ │ │ └── config.default.ts │ │ │ ├── decorator.ts │ │ │ ├── index.ts │ │ │ ├── typebox.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── fixtures/ │ │ │ │ └── apps/ │ │ │ │ └── typebox-validate-test/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.ts │ │ │ │ │ ├── router.ts │ │ │ │ │ └── service/ │ │ │ │ │ └── home.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ └── plugin.ts │ │ │ │ ├── package.json │ │ │ │ └── tsconfig.json │ │ │ └── index.test.ts │ │ └── tsconfig.json │ ├── view/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ └── extend/ │ │ │ │ ├── application.ts │ │ │ │ └── context.ts │ │ │ ├── config/ │ │ │ │ ├── config.default.ts │ │ │ │ └── config.local.ts │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ ├── context_view.ts │ │ │ │ ├── index.ts │ │ │ │ └── view_manager.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── fixtures/ │ │ │ │ └── apps/ │ │ │ │ ├── cache/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ ├── view1/ │ │ │ │ │ │ │ └── home.nj │ │ │ │ │ │ └── view2/ │ │ │ │ │ │ └── home.nj │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── check-root/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── default-view-engine/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── view.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── view/ │ │ │ │ │ │ └── a.html │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── multiple-view-engine/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── view.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ ├── view/ │ │ │ │ │ │ │ ├── ext/ │ │ │ │ │ │ │ │ ├── a.async │ │ │ │ │ │ │ │ ├── a.ejs │ │ │ │ │ │ │ │ └── a.nj │ │ │ │ │ │ │ └── loader/ │ │ │ │ │ │ │ ├── a.ejs │ │ │ │ │ │ │ ├── a.html │ │ │ │ │ │ │ ├── a.nj.ejs │ │ │ │ │ │ │ └── a.noext │ │ │ │ │ │ └── view2/ │ │ │ │ │ │ └── loader/ │ │ │ │ │ │ ├── a.nj │ │ │ │ │ │ └── from-view2.ejs │ │ │ │ │ ├── app.js │ │ │ │ │ ├── async.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── ejs.js │ │ │ │ │ ├── nunjucks.js │ │ │ │ │ └── package.json │ │ │ │ ├── options-root/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── view/ │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ └── a.html │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── out-of-path/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── a.html │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── view.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ └── ts/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.ts │ │ │ │ │ └── router.ts │ │ │ │ ├── app.ts │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.ts │ │ │ │ ├── package.json │ │ │ │ ├── tsconfig.json │ │ │ │ └── typings/ │ │ │ │ └── index.d.ts │ │ │ └── view.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── view-nunjucks/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ └── extend/ │ │ │ │ └── application.ts │ │ │ ├── app.ts │ │ │ ├── config/ │ │ │ │ ├── config.default.ts │ │ │ │ └── config.local.ts │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ ├── engine.ts │ │ │ │ ├── environment.ts │ │ │ │ ├── file_loader.ts │ │ │ │ ├── helper.ts │ │ │ │ └── view.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── index.test.ts.snap │ │ │ ├── fixtures/ │ │ │ │ ├── cache/ │ │ │ │ │ ├── local/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ └── view/ │ │ │ │ │ │ │ └── home.tpl │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── prod/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── view/ │ │ │ │ │ │ ├── home.tpl │ │ │ │ │ │ └── sub.tpl │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── custom-tag/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── view/ │ │ │ │ │ │ └── markdown.tpl │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── config.config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── example/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ ├── filter.js │ │ │ │ │ │ │ └── helper.js │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── view/ │ │ │ │ │ │ ├── home.tpl │ │ │ │ │ │ ├── include-sub.tpl │ │ │ │ │ │ ├── include-test.tpl │ │ │ │ │ │ ├── inject.tpl │ │ │ │ │ │ ├── layout/ │ │ │ │ │ │ │ └── index.tpl │ │ │ │ │ │ └── layout.tpl │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── framework/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ ├── application.js │ │ │ │ │ │ └── context.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── multi-dir/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── ext-view/ │ │ │ │ │ │ │ └── ext.tpl │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── view/ │ │ │ │ │ │ ├── form.tpl │ │ │ │ │ │ ├── home.tpl │ │ │ │ │ │ ├── import.tpl │ │ │ │ │ │ ├── include.tpl │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ ├── relative-a.tpl │ │ │ │ │ │ └── relative-b.tpl │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ ├── security/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ └── view/ │ │ │ │ │ │ ├── escape.tpl │ │ │ │ │ │ ├── form_csrf.tpl │ │ │ │ │ │ └── nonce.tpl │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ └── view-helper/ │ │ │ │ ├── app/ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ └── helper.js │ │ │ │ │ ├── router.js │ │ │ │ │ └── view/ │ │ │ │ │ ├── escape.tpl │ │ │ │ │ └── helper.tpl │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── plugin.js │ │ │ │ └── package.json │ │ │ ├── index.test.ts │ │ │ ├── utils.ts │ │ │ └── view/ │ │ │ ├── cache.test.ts │ │ │ ├── custom.test.ts │ │ │ ├── helper.test.ts │ │ │ ├── security.test.ts │ │ │ └── view.test.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ └── watcher/ │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── package.json │ ├── src/ │ │ ├── agent.ts │ │ ├── app.ts │ │ ├── config/ │ │ │ ├── config.default.ts │ │ │ ├── config.local.ts │ │ │ └── config.unittest.ts │ │ ├── index.ts │ │ ├── lib/ │ │ │ ├── boot.ts │ │ │ ├── event-sources/ │ │ │ │ ├── base.ts │ │ │ │ ├── default.ts │ │ │ │ ├── development.ts │ │ │ │ └── index.ts │ │ │ ├── utils.ts │ │ │ └── watcher.ts │ │ └── types.ts │ ├── test/ │ │ ├── __snapshots__/ │ │ │ └── index.test.ts.snap │ │ ├── development.test.ts │ │ ├── development_cluster.test.ts │ │ ├── fixtures/ │ │ │ └── apps/ │ │ │ ├── watcher-custom-event-source/ │ │ │ │ ├── config/ │ │ │ │ │ ├── config.unittest.js │ │ │ │ │ └── plugin.js │ │ │ │ ├── package.json │ │ │ │ └── plugins/ │ │ │ │ └── egg-watcher-custom/ │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ ├── custom.js │ │ │ │ └── package.json │ │ │ ├── watcher-custom-event-source-fuzzy/ │ │ │ │ ├── config/ │ │ │ │ │ ├── config.unittest.js │ │ │ │ │ └── plugin.js │ │ │ │ ├── package.json │ │ │ │ └── plugins/ │ │ │ │ └── egg-watcher-custom/ │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ ├── custom.js │ │ │ │ └── package.json │ │ │ ├── watcher-development-app/ │ │ │ │ ├── agent.js │ │ │ │ ├── app/ │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.unittest.js │ │ │ │ ├── package.json │ │ │ │ ├── tmp/ │ │ │ │ │ ├── t1/ │ │ │ │ │ │ └── t2/ │ │ │ │ │ │ └── t3/ │ │ │ │ │ │ └── t4/ │ │ │ │ │ │ └── tmp.txt │ │ │ │ │ └── tmp.txt │ │ │ │ ├── tmp-agent/ │ │ │ │ │ └── tmp.txt │ │ │ │ ├── tmp-agent.txt │ │ │ │ └── tmp.txt │ │ │ └── watcher-type-default/ │ │ │ ├── app.js │ │ │ ├── config/ │ │ │ │ └── config.unittest.js │ │ │ └── package.json │ │ ├── index.test.ts │ │ ├── utils.ts │ │ └── watcher.test.ts │ ├── tsconfig.json │ └── vitest.config.ts ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── renovate.json ├── scripts/ │ ├── publish.js │ ├── sync-cnpm.js │ ├── utils.js │ └── version.js ├── site/ │ ├── .gitignore │ ├── .vitepress/ │ │ ├── config.mts │ │ └── theme/ │ │ └── index.ts │ ├── docs/ │ │ ├── advanced/ │ │ │ ├── cluster-client.md │ │ │ ├── framework.md │ │ │ ├── index.md │ │ │ ├── loader-update.md │ │ │ ├── loader.md │ │ │ ├── plugin.md │ │ │ └── view-plugin.md │ │ ├── basics/ │ │ │ ├── app-start.md │ │ │ ├── config.md │ │ │ ├── controller.md │ │ │ ├── di.md │ │ │ ├── env.md │ │ │ ├── extend.md │ │ │ ├── httpcontroller.md │ │ │ ├── index.md │ │ │ ├── mcpcontroller.md │ │ │ ├── middleware.md │ │ │ ├── objects.md │ │ │ ├── plugin.md │ │ │ ├── router.md │ │ │ ├── schedule.md │ │ │ ├── service.md │ │ │ ├── structure.md │ │ │ └── unittest.md │ │ ├── community/ │ │ │ ├── CONTRIBUTING.md │ │ │ ├── faq.md │ │ │ ├── index.md │ │ │ └── style-guide.md │ │ ├── core/ │ │ │ ├── cluster-and-ipc.md │ │ │ ├── cookie-and-session.md │ │ │ ├── deployment.md │ │ │ ├── development.md │ │ │ ├── error-handling.md │ │ │ ├── httpclient.md │ │ │ ├── i18n.md │ │ │ ├── index.md │ │ │ ├── logger.md │ │ │ ├── mock.md │ │ │ ├── security.md │ │ │ ├── unittest.md │ │ │ └── view.md │ │ ├── faq/ │ │ │ ├── TEGG_EGG_PROTO_NOT_FOUND.md │ │ │ ├── TEGG_ROUTER_CONFLICT.md │ │ │ └── index.md │ │ ├── index.md │ │ ├── intro/ │ │ │ ├── egg-and-koa.md │ │ │ ├── migration.md │ │ │ ├── overview.md │ │ │ ├── progressive.md │ │ │ └── quickstart.md │ │ ├── public/ │ │ │ └── assets/ │ │ │ ├── lifecycle_cn.puml │ │ │ └── lifecycle_en.puml │ │ ├── tutorials/ │ │ │ ├── assets.md │ │ │ ├── index.md │ │ │ ├── mysql.md │ │ │ ├── passport.md │ │ │ ├── proxy.md │ │ │ ├── redis.md │ │ │ ├── restful.md │ │ │ ├── sequelize.md │ │ │ ├── socketio.md │ │ │ └── typescript.md │ │ └── zh-CN/ │ │ ├── advanced/ │ │ │ ├── cluster-client.md │ │ │ ├── framework.md │ │ │ ├── index.md │ │ │ ├── lifecycle.md │ │ │ ├── loader-update.md │ │ │ ├── loader.md │ │ │ ├── plugin.md │ │ │ └── view-plugin.md │ │ ├── basics/ │ │ │ ├── ajv.md │ │ │ ├── aop-middleware.md │ │ │ ├── aop.md │ │ │ ├── app-start.md │ │ │ ├── backgroundTask.md │ │ │ ├── config.md │ │ │ ├── controller.md │ │ │ ├── di.md │ │ │ ├── env.md │ │ │ ├── eventbus.md │ │ │ ├── extend.md │ │ │ ├── httpcontroller.md │ │ │ ├── index.md │ │ │ ├── mcpcontroller.md │ │ │ ├── middleware.md │ │ │ ├── objects.md │ │ │ ├── plugin.md │ │ │ ├── router.md │ │ │ ├── schedule.md │ │ │ ├── service.md │ │ │ ├── structure.md │ │ │ └── unittest.md │ │ ├── community/ │ │ │ ├── faq.md │ │ │ ├── index.md │ │ │ └── style-guide.md │ │ ├── core/ │ │ │ ├── cluster-and-ipc.md │ │ │ ├── cookie-and-session.md │ │ │ ├── deployment.md │ │ │ ├── development.md │ │ │ ├── error-handling.md │ │ │ ├── httpclient.md │ │ │ ├── i18n.md │ │ │ ├── index.md │ │ │ ├── logger.md │ │ │ ├── mock.md │ │ │ ├── security.md │ │ │ ├── unittest.md │ │ │ └── view.md │ │ ├── faq/ │ │ │ ├── TEGG_EGG_PROTO_NOT_FOUND.md │ │ │ ├── TEGG_ROUTER_CONFLICT.md │ │ │ └── index.md │ │ ├── index.md │ │ ├── intro/ │ │ │ ├── egg-and-koa.md │ │ │ ├── migration.md │ │ │ ├── overview.md │ │ │ ├── progressive.md │ │ │ └── quickstart.md │ │ └── tutorials/ │ │ ├── assets.md │ │ ├── index.md │ │ ├── mysql.md │ │ ├── passport.md │ │ ├── proxy.md │ │ ├── redis.md │ │ ├── restful.md │ │ ├── sequelize.md │ │ ├── socketio.md │ │ └── typescript.md │ ├── package.json │ ├── public/ │ │ └── assets/ │ │ ├── lifecycle_cn.puml │ │ └── lifecycle_en.puml │ └── tsconfig.json ├── tegg/ │ ├── CHANGELOG.md │ ├── CLAUDE.md │ ├── README.md │ ├── benchmark/ │ │ └── http/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── controller/ │ │ │ │ ├── FooTeggController.ts │ │ │ │ └── template/ │ │ │ │ └── egg_controller_1.ts │ │ │ └── router.ts │ │ ├── config/ │ │ │ └── config.default.ts │ │ ├── package.json │ │ ├── run.sh │ │ └── tsconfig.json │ ├── core/ │ │ ├── agent-runtime/ │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── AgentRuntime.ts │ │ │ │ ├── AgentStoreUtils.ts │ │ │ │ ├── HttpSSEWriter.ts │ │ │ │ ├── MessageConverter.ts │ │ │ │ ├── OSSAgentStore.ts │ │ │ │ ├── OSSObjectStorageClient.ts │ │ │ │ ├── RunBuilder.ts │ │ │ │ ├── SSEWriter.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── AgentRuntime.test.ts │ │ │ │ ├── HttpSSEWriter.test.ts │ │ │ │ ├── MessageConverter.test.ts │ │ │ │ ├── OSSAgentStore.test.ts │ │ │ │ ├── OSSObjectStorageClient.test.ts │ │ │ │ ├── RunBuilder.test.ts │ │ │ │ └── helpers.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── ajv-decorator/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── enum/ │ │ │ │ │ ├── TransformEnum.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── error/ │ │ │ │ │ ├── AjvInvalidParamError.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ └── type/ │ │ │ │ ├── Ajv.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── TransformEnum.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── aop-decorator/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── AspectMetaBuilder.ts │ │ │ │ ├── CrosscutAdviceFactory.ts │ │ │ │ ├── decorator/ │ │ │ │ │ ├── Advice.ts │ │ │ │ │ ├── Crosscut.ts │ │ │ │ │ ├── Pointcut.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── Aspect.ts │ │ │ │ │ ├── PointcutInfo.ts │ │ │ │ │ └── index.ts │ │ │ │ └── util/ │ │ │ │ ├── AdviceInfoUtil.ts │ │ │ │ ├── AspectInfoUtil.ts │ │ │ │ ├── CrosscutInfoUtil.ts │ │ │ │ ├── PointcutAdviceInfoUtil.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── AspectMetaBuilder.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── CrosscutExample.ts │ │ │ │ │ ├── InheritExample.ts │ │ │ │ │ └── PointcutExample.ts │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── aop-runtime/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── AspectExecutor.ts │ │ │ │ ├── CrossCutGraphHook.ts │ │ │ │ ├── EggObjectAopHook.ts │ │ │ │ ├── EggPrototypeCrossCutHook.ts │ │ │ │ ├── LoadUnitAopHook.ts │ │ │ │ ├── PointCutGraphHook.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── aop-runtime.test.ts │ │ │ │ ├── fixtures/ │ │ │ │ │ └── modules/ │ │ │ │ │ ├── constructor_inject_aop/ │ │ │ │ │ │ ├── Hello.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── hello_cross_cut/ │ │ │ │ │ │ ├── CallTrace.ts │ │ │ │ │ │ ├── HelloCrossCut.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── hello_point_cut/ │ │ │ │ │ │ ├── HelloPointCut.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── hello_succeed/ │ │ │ │ │ │ ├── Hello.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── should_throw/ │ │ │ │ │ │ ├── Hello.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── state_point_cut/ │ │ │ │ │ ├── StatePointCut.ts │ │ │ │ │ └── package.json │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── background-task/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── BackgroundTaskHelper.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── BackgroundTaskHelper.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── common-util/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── FSUtil.ts │ │ │ │ ├── Graph.ts │ │ │ │ ├── MapUtil.ts │ │ │ │ ├── ModuleConfig.ts │ │ │ │ ├── ModuleConfigs.ts │ │ │ │ ├── NameUtil.ts │ │ │ │ ├── ObjectUtils.ts │ │ │ │ ├── ProxyUtil.ts │ │ │ │ ├── StackUtil.ts │ │ │ │ ├── StreamUtil.ts │ │ │ │ ├── TimerUtil.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── MapUtil.test.ts │ │ │ │ ├── ModuleConfig.test.ts │ │ │ │ ├── NameUtil.test.ts │ │ │ │ ├── ObjectUtil.test.ts │ │ │ │ ├── ProtoGraph.test.ts │ │ │ │ ├── StackUtil.test.ts │ │ │ │ ├── TimerUtil.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── apps/ │ │ │ │ │ │ ├── app-with-module-json/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ ├── module-a/ │ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ │ └── module-b/ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ └── module.json │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── app-with-module-pkg-json/ │ │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ │ └── module.json │ │ │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ │ │ └── module-a/ │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── app-with-modules/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── module-a/ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── app-with-no-module-json/ │ │ │ │ │ │ │ ├── .sff/ │ │ │ │ │ │ │ │ ├── .other/ │ │ │ │ │ │ │ │ │ └── module-d/ │ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ │ └── module-c/ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ ├── module-a/ │ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ │ └── module-b/ │ │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ │ └── test/ │ │ │ │ │ │ │ │ └── fixtures/ │ │ │ │ │ │ │ │ └── module-e/ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ │ │ ├── dep/ │ │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ │ └── module-c/ │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── app-with-no-module-json-duplicated/ │ │ │ │ │ │ │ ├── .sff/ │ │ │ │ │ │ │ │ ├── .other/ │ │ │ │ │ │ │ │ │ └── module-d/ │ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ │ └── module-c/ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ ├── module-a/ │ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ │ └── module-b/ │ │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ │ └── test/ │ │ │ │ │ │ │ │ └── fixtures/ │ │ │ │ │ │ │ │ └── module-e/ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ │ │ └── module-b/ │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── app-with-symlink/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── module-a/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── modules/ │ │ │ │ │ │ ├── dev-module-config/ │ │ │ │ │ │ │ ├── module.dev.yml │ │ │ │ │ │ │ └── module.yml │ │ │ │ │ │ └── foo-yaml/ │ │ │ │ │ │ └── module.yml │ │ │ │ │ └── monorepo/ │ │ │ │ │ ├── foo/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ └── packages/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ │ └── c/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── d/ │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── e/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── f/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── controller-decorator/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── builder/ │ │ │ │ │ ├── ControllerMetaBuilderFactory.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── decorator/ │ │ │ │ │ ├── Acl.ts │ │ │ │ │ ├── Context.ts │ │ │ │ │ ├── Middleware.ts │ │ │ │ │ ├── agent/ │ │ │ │ │ │ ├── AgentController.ts │ │ │ │ │ │ ├── AgentHandler.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── http/ │ │ │ │ │ │ ├── HTTPController.ts │ │ │ │ │ │ ├── HTTPMethod.ts │ │ │ │ │ │ ├── HTTPParam.ts │ │ │ │ │ │ ├── Host.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── mcp/ │ │ │ │ │ ├── Extra.ts │ │ │ │ │ ├── MCPController.ts │ │ │ │ │ ├── MCPPrompt.ts │ │ │ │ │ ├── MCPResource.ts │ │ │ │ │ ├── MCPTool.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── impl/ │ │ │ │ │ ├── http/ │ │ │ │ │ │ ├── HTTPControllerMetaBuilder.ts │ │ │ │ │ │ ├── HTTPControllerMethodMetaBuilder.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── mcp/ │ │ │ │ │ ├── MCPControllerMetaBuilder.ts │ │ │ │ │ ├── MCPControllerPromptMetaBuilder.ts │ │ │ │ │ ├── MCPControllerResourceMetaBuilder.ts │ │ │ │ │ ├── MCPControllerToolMetaBuilder.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── HTTPControllerMeta.ts │ │ │ │ │ ├── HTTPCookies.ts │ │ │ │ │ ├── HTTPMethodMeta.ts │ │ │ │ │ ├── HTTPResponse.ts │ │ │ │ │ ├── MCPControllerMeta.ts │ │ │ │ │ ├── MCPPromptMeta.ts │ │ │ │ │ ├── MCPResourceMeta.ts │ │ │ │ │ ├── MCPToolMeta.ts │ │ │ │ │ └── index.ts │ │ │ │ └── util/ │ │ │ │ ├── AgentInfoUtil.ts │ │ │ │ ├── ControllerInfoUtil.ts │ │ │ │ ├── ControllerMetadataUtil.ts │ │ │ │ ├── HTTPInfoUtil.ts │ │ │ │ ├── HTTPPriorityUtil.ts │ │ │ │ ├── MCPInfoUtil.ts │ │ │ │ ├── MethodInfoUtil.ts │ │ │ │ ├── index.ts │ │ │ │ └── validator/ │ │ │ │ ├── ControllerValidator.ts │ │ │ │ ├── MethodValidator.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── Acl.test.ts │ │ │ │ ├── AgentController.test.ts │ │ │ │ ├── Context.test.ts │ │ │ │ ├── Middleware.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── decorators.test.ts │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── AclController.ts │ │ │ │ │ ├── AgentFooController.ts │ │ │ │ │ ├── AopMiddlewareController.ts │ │ │ │ │ ├── ContextController.ts │ │ │ │ │ ├── HTTPFooController.ts │ │ │ │ │ ├── HTTPPriorityController.ts │ │ │ │ │ ├── HostController.ts │ │ │ │ │ └── MiddlewareController.ts │ │ │ │ ├── http/ │ │ │ │ │ ├── HTTPMeta.test.ts │ │ │ │ │ └── Host.test.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── util/ │ │ │ │ ├── ControllerMetadataUtil.test.ts │ │ │ │ └── HTTPPriority.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── core-decorator/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── decorator/ │ │ │ │ │ ├── ConfigSource.ts │ │ │ │ │ ├── ContextProto.ts │ │ │ │ │ ├── EggQualifier.ts │ │ │ │ │ ├── InitTypeQualifier.ts │ │ │ │ │ ├── Inject.ts │ │ │ │ │ ├── ModuleQualifier.ts │ │ │ │ │ ├── MultiInstanceInfo.ts │ │ │ │ │ ├── MultiInstanceProto.ts │ │ │ │ │ ├── Prototype.ts │ │ │ │ │ ├── SingletonProto.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ └── util/ │ │ │ │ ├── MetadataUtil.ts │ │ │ │ ├── PrototypeUtil.ts │ │ │ │ ├── QualifierUtil.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── decorators.test.ts │ │ │ │ ├── fixtures/ │ │ │ │ │ └── decators/ │ │ │ │ │ ├── CacheService.ts │ │ │ │ │ ├── ChildService.ts │ │ │ │ │ ├── ConstructorObject.ts │ │ │ │ │ ├── ContextCache.ts │ │ │ │ │ ├── FooLogger.ts │ │ │ │ │ ├── ICache.ts │ │ │ │ │ ├── OtherService.ts │ │ │ │ │ ├── QualifierCacheService.ts │ │ │ │ │ └── SingletonCache.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── util/ │ │ │ │ └── MetadataUtil.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── dal-decorator/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── decorator/ │ │ │ │ │ ├── Column.ts │ │ │ │ │ ├── Dao.ts │ │ │ │ │ ├── DataSourceQualifier.ts │ │ │ │ │ ├── Table.ts │ │ │ │ │ ├── TableIndex.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── ColumnModel.ts │ │ │ │ │ ├── IndexModel.ts │ │ │ │ │ ├── TableModel.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── type/ │ │ │ │ │ ├── MySql.ts │ │ │ │ │ ├── Spatial.ts │ │ │ │ │ └── index.ts │ │ │ │ └── util/ │ │ │ │ ├── ColumnInfoUtil.ts │ │ │ │ ├── DaoInfoUtil.ts │ │ │ │ ├── IndexInfoUtil.ts │ │ │ │ ├── TableInfoUtil.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── fixtures/ │ │ │ │ │ └── modules/ │ │ │ │ │ └── dal/ │ │ │ │ │ ├── Foo.ts │ │ │ │ │ └── package.json │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── dal-runtime/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── BaseSqlMap.ts │ │ │ │ ├── CodeGenerator.ts │ │ │ │ ├── DaoLoader.ts │ │ │ │ ├── DataSource.ts │ │ │ │ ├── DatabaseForker.ts │ │ │ │ ├── MySqlDataSource.ts │ │ │ │ ├── NunjucksConverter.ts │ │ │ │ ├── NunjucksUtil.ts │ │ │ │ ├── SqlGenerator.ts │ │ │ │ ├── SqlMapLoader.ts │ │ │ │ ├── SqlUtil.ts │ │ │ │ ├── TableModelInstanceBuilder.ts │ │ │ │ ├── TableSqlMap.ts │ │ │ │ ├── TemplateUtil.ts │ │ │ │ ├── index.ts │ │ │ │ └── templates/ │ │ │ │ ├── base_dao.njk │ │ │ │ ├── dao.njk │ │ │ │ └── extension.njk │ │ │ ├── test/ │ │ │ │ ├── CodeGenerator.test.ts │ │ │ │ ├── DAO.test.ts │ │ │ │ ├── DataSource.test.ts │ │ │ │ ├── SqlGenerator.test.ts │ │ │ │ ├── TableSqlMap.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── fixtures/ │ │ │ │ │ └── modules/ │ │ │ │ │ ├── dal/ │ │ │ │ │ │ ├── AutoUpdateTime.ts │ │ │ │ │ │ ├── Foo.ts │ │ │ │ │ │ ├── FooIndexName.ts │ │ │ │ │ │ ├── dal/ │ │ │ │ │ │ │ ├── dao/ │ │ │ │ │ │ │ │ ├── FooDAO.ts │ │ │ │ │ │ │ │ └── base/ │ │ │ │ │ │ │ │ └── BaseFooDAO.ts │ │ │ │ │ │ │ ├── extension/ │ │ │ │ │ │ │ │ └── FooExtension.ts │ │ │ │ │ │ │ └── structure/ │ │ │ │ │ │ │ ├── Foo.json │ │ │ │ │ │ │ └── Foo.sql │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── generate_codes/ │ │ │ │ │ │ ├── Foo.ts │ │ │ │ │ │ ├── MultiPrimaryKey.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── generate_codes_not_overwrite_dao/ │ │ │ │ │ │ ├── Foo.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── generate_codes_to_src/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── src/ │ │ │ │ │ └── Foo.ts │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── dynamic-inject/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── QualifierImplDecoratorUtil.ts │ │ │ │ ├── QualifierImplUtil.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── fixtures/ │ │ │ │ │ └── modules/ │ │ │ │ │ ├── base/ │ │ │ │ │ │ ├── AbstractContextHello.ts │ │ │ │ │ │ ├── ContextHello.ts │ │ │ │ │ │ └── FooType.ts │ │ │ │ │ ├── wrong-enum-module/ │ │ │ │ │ │ ├── WrongEnumCase.ts │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ └── wrong-extends-module/ │ │ │ │ │ ├── WrongExtendsCase.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── index.test.ts │ │ │ │ └── typing.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── dynamic-inject-runtime/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── EggObjectFactory.ts │ │ │ │ ├── EggObjectFactoryObject.ts │ │ │ │ ├── EggObjectFactoryPrototype.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── exports.test.ts.snap │ │ │ │ ├── exports.test.ts │ │ │ │ ├── fixtures/ │ │ │ │ │ └── modules/ │ │ │ │ │ └── dynamic-inject-module/ │ │ │ │ │ ├── AbstractContextHello.ts │ │ │ │ │ ├── AbstractSingletonHello.ts │ │ │ │ │ ├── FooType.ts │ │ │ │ │ ├── HelloService.ts │ │ │ │ │ ├── decorator/ │ │ │ │ │ │ ├── ContextHello.ts │ │ │ │ │ │ └── SingletonHello.ts │ │ │ │ │ ├── impl/ │ │ │ │ │ │ ├── BarContextHello.ts │ │ │ │ │ │ ├── BarSingletonHello.ts │ │ │ │ │ │ ├── FooContextHello.ts │ │ │ │ │ │ └── FooSingletonHello.ts │ │ │ │ │ └── package.json │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── eventbus-decorator/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── Event.ts │ │ │ │ ├── EventBus.ts │ │ │ │ ├── EventContext.ts │ │ │ │ ├── EventInfoUtil.ts │ │ │ │ ├── index.ts │ │ │ │ └── typed-emitter.ts │ │ │ ├── test/ │ │ │ │ ├── Event.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── empty-handle.ts │ │ │ │ │ ├── event-handle-with-context.ts │ │ │ │ │ ├── multiple-events-handle.ts │ │ │ │ │ ├── right-event-handle.ts │ │ │ │ │ └── wrong-event-handle.ts │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── eventbus-runtime/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── EventContextFactory.ts │ │ │ │ ├── EventHandlerFactory.ts │ │ │ │ ├── SingletonEventBus.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── EventBus.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── fixtures/ │ │ │ │ │ └── modules/ │ │ │ │ │ ├── event/ │ │ │ │ │ │ ├── HelloEvent.ts │ │ │ │ │ │ ├── MultiEvent.ts │ │ │ │ │ │ ├── MultiEventWithContext.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── mock-module/ │ │ │ │ │ ├── MockLogger.ts │ │ │ │ │ └── package.json │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── langchain-decorator/ │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── builder/ │ │ │ │ │ ├── BoundModelMetaBuilder.ts │ │ │ │ │ ├── GraphEdgeMetaBuilder.ts │ │ │ │ │ ├── GraphMetaBuilder.ts │ │ │ │ │ ├── GraphNodeMetaBuilder.ts │ │ │ │ │ └── GraphToolMetaBuilder.ts │ │ │ │ ├── decorator/ │ │ │ │ │ ├── BoundModel.ts │ │ │ │ │ ├── Graph.ts │ │ │ │ │ ├── GraphEdge.ts │ │ │ │ │ ├── GraphNode.ts │ │ │ │ │ └── GraphTool.ts │ │ │ │ ├── index.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── BoundModelMetadata.ts │ │ │ │ │ ├── GraphEdgeMetadata.ts │ │ │ │ │ ├── GraphMetadata.ts │ │ │ │ │ ├── GraphNodeMetadata.ts │ │ │ │ │ └── GraphToolMetadata.ts │ │ │ │ ├── qualifier/ │ │ │ │ │ ├── ChatCheckpointSaverQualifier.ts │ │ │ │ │ └── ChatModelQualifier.ts │ │ │ │ ├── type/ │ │ │ │ │ └── metadataKey.ts │ │ │ │ └── util/ │ │ │ │ ├── BoundModelInfoUtil.ts │ │ │ │ ├── GraphEdgeInfoUtil.ts │ │ │ │ ├── GraphInfoUtil.ts │ │ │ │ ├── GraphNodeInfoUtil.ts │ │ │ │ ├── GraphToolInfoUtil.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── fixtures/ │ │ │ │ │ └── modules/ │ │ │ │ │ ├── langchain/ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── langgraph/ │ │ │ │ │ ├── Graph.ts │ │ │ │ │ └── package.json │ │ │ │ ├── graph.test.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── package.json │ │ │ └── tsconfig.json │ │ ├── lifecycle/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── IdenticalObject.ts │ │ │ │ ├── LifycycleUtil.ts │ │ │ │ ├── decorator/ │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── IdenticalObject.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── loader/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── LoaderFactory.ts │ │ │ │ ├── LoaderUtil.ts │ │ │ │ ├── impl/ │ │ │ │ │ ├── ModuleLoader.ts │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── Loader.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── fixtures/ │ │ │ │ │ └── modules/ │ │ │ │ │ ├── loader-failed/ │ │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── module-for-loader/ │ │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ │ ├── SprintRepo.ts │ │ │ │ │ │ ├── UserRepo.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── module-with-extra/ │ │ │ │ │ │ ├── .dist/ │ │ │ │ │ │ │ └── ThrowError.ts │ │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ │ ├── extra/ │ │ │ │ │ │ │ └── UserRepo.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── module-with-test/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ ├── coverage/ │ │ │ │ │ │ └── fixtures/ │ │ │ │ │ │ └── UserRepo.ts │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── fixtures/ │ │ │ │ │ └── UserRepo.ts │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── mcp-client/ │ │ │ ├── index.ts │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── HeaderUtil.ts │ │ │ │ ├── HttpMCPClient.ts │ │ │ │ ├── MCPClientQualifier.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── HttpMCPClient.test.ts │ │ │ │ └── fixtures/ │ │ │ │ ├── sse-mcp-server/ │ │ │ │ │ └── http.ts │ │ │ │ └── streamable-mcp-server/ │ │ │ │ └── http.ts │ │ │ └── tsconfig.json │ │ ├── metadata/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── errors.ts │ │ │ │ ├── factory/ │ │ │ │ │ ├── EggPrototypeCreatorFactory.ts │ │ │ │ │ ├── EggPrototypeFactory.ts │ │ │ │ │ ├── LoadUnitFactory.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── impl/ │ │ │ │ │ ├── EggPrototypeBuilder.ts │ │ │ │ │ ├── EggPrototypeImpl.ts │ │ │ │ │ ├── LoadUnitMultiInstanceProtoHook.ts │ │ │ │ │ ├── ModuleLoadUnit.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── AppGraph.ts │ │ │ │ │ ├── EggPrototype.ts │ │ │ │ │ ├── LoadUnit.ts │ │ │ │ │ ├── ModuleDescriptor.ts │ │ │ │ │ ├── ProtoDescriptor/ │ │ │ │ │ │ ├── AbstractProtoDescriptor.ts │ │ │ │ │ │ ├── ClassProtoDescriptor.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── ProtoDescriptorHelper.ts │ │ │ │ │ ├── graph/ │ │ │ │ │ │ ├── GlobalGraph.ts │ │ │ │ │ │ ├── GlobalModuleNode.ts │ │ │ │ │ │ ├── GlobalModuleNodeBuilder.ts │ │ │ │ │ │ ├── ProtoNode.ts │ │ │ │ │ │ ├── ProtoSelector.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ └── index.ts │ │ │ │ └── util/ │ │ │ │ ├── ClassUtil.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── AppGraph.test.ts │ │ │ │ ├── GlobalGraph.test.ts │ │ │ │ ├── LoadUnit.test.ts │ │ │ │ ├── ModuleGraph.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── LoaderUtil.ts │ │ │ │ │ ├── TestLoader.ts │ │ │ │ │ └── modules/ │ │ │ │ │ ├── app-graph-modules/ │ │ │ │ │ │ ├── root/ │ │ │ │ │ │ │ ├── Root.ts │ │ │ │ │ │ │ ├── RootConstructor.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── unused/ │ │ │ │ │ │ │ ├── Unused.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── used/ │ │ │ │ │ │ ├── Used.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── app-multi-inject-multi/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── modules/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ ├── App.ts │ │ │ │ │ │ │ │ ├── module.yml │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── app2/ │ │ │ │ │ │ │ │ ├── App.ts │ │ │ │ │ │ │ │ ├── module.yml │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ │ ├── BizManager.ts │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ ├── Secret.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── extends-constructor-module/ │ │ │ │ │ │ ├── Base.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── extends-module/ │ │ │ │ │ │ ├── Base.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── incompatible-proto-inject/ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── test.ts │ │ │ │ │ ├── invalid-multimodule/ │ │ │ │ │ │ ├── invalidService.ts │ │ │ │ │ │ ├── invalidService2.ts │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── test.ts │ │ │ │ │ ├── invalidate-module/ │ │ │ │ │ │ ├── InvalidateService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── load-unit/ │ │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ │ ├── SprintRepo.ts │ │ │ │ │ │ ├── UserRepo.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── multi-callback-instance-module/ │ │ │ │ │ │ ├── MultiInstance.ts │ │ │ │ │ │ ├── module.yml │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── multi-instance-module/ │ │ │ │ │ │ ├── MultiInstance.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── optional-inject-module/ │ │ │ │ │ │ ├── OptionalInjectService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── recursive-load-unit/ │ │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ │ ├── SprintRepo.ts │ │ │ │ │ │ ├── UserRepo.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── same-name-object/ │ │ │ │ │ ├── AppCache.ts │ │ │ │ │ ├── ContextAppCache.ts │ │ │ │ │ ├── CountService.ts │ │ │ │ │ ├── SingletonAppCache.ts │ │ │ │ │ └── package.json │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── orm-decorator/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── builder/ │ │ │ │ │ ├── AttributeMetaBuilder.ts │ │ │ │ │ ├── IndexMetaBuilder.ts │ │ │ │ │ ├── ModelMetaBuilder.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── decorator/ │ │ │ │ │ ├── Attribute.ts │ │ │ │ │ ├── DataSource.ts │ │ │ │ │ ├── Model.ts │ │ │ │ │ ├── ModelIndex.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── AttributeMeta.ts │ │ │ │ │ ├── IndexMeta.ts │ │ │ │ │ ├── ModelMetadata.ts │ │ │ │ │ └── index.ts │ │ │ │ └── util/ │ │ │ │ ├── ModelInfoUtil.ts │ │ │ │ ├── ModelMetadataUtil.ts │ │ │ │ ├── NameUtil.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── builder/ │ │ │ │ │ ├── AttributeMetaBuilder.test.ts │ │ │ │ │ ├── IndexMetaBuilder.test.ts │ │ │ │ │ └── ModelMetaBuilder.test.ts │ │ │ │ ├── decorator.test.ts │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── AttributeModel.ts │ │ │ │ │ ├── DefaultAttributeModel.ts │ │ │ │ │ ├── DefaultIndexModel.ts │ │ │ │ │ ├── Foo.ts │ │ │ │ │ ├── IndexModel.ts │ │ │ │ │ └── InvalidateIndexModel.ts │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── runtime/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── factory/ │ │ │ │ │ ├── EggContainerFactory.ts │ │ │ │ │ ├── EggObjectFactory.ts │ │ │ │ │ ├── LoadUnitInstanceFactory.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── impl/ │ │ │ │ │ ├── ContextInitiator.ts │ │ │ │ │ ├── ContextObjectGraph.ts │ │ │ │ │ ├── EggAlwaysNewObjectContainer.ts │ │ │ │ │ ├── EggObjectImpl.ts │ │ │ │ │ ├── EggObjectUtil.ts │ │ │ │ │ ├── ModuleLoadUnitInstance.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ └── model/ │ │ │ │ ├── AbstractEggContext.ts │ │ │ │ ├── ContextHandler.ts │ │ │ │ ├── EggContext.ts │ │ │ │ ├── EggObject.ts │ │ │ │ ├── LoadUnitInstance.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── EggObject.test.ts │ │ │ │ ├── EggObjectUtil.test.ts │ │ │ │ ├── LoadUnitInstance.test.ts │ │ │ │ ├── QualifierLoadUnitInstance.test.ts │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── EggContextStorage.ts │ │ │ │ │ ├── EggTestContext.ts │ │ │ │ │ └── modules/ │ │ │ │ │ ├── extends-module/ │ │ │ │ │ │ ├── Base.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── init-type-qualifier-module/ │ │ │ │ │ │ ├── Cache.ts │ │ │ │ │ │ ├── CacheService.ts │ │ │ │ │ │ ├── ContextCache.ts │ │ │ │ │ │ ├── SingletonCache.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── inject-constructor-context-to-singleton/ │ │ │ │ │ │ ├── object.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── inject-context-to-singleton/ │ │ │ │ │ │ ├── object.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── lifecycle-hook/ │ │ │ │ │ │ ├── object.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── module-for-load-unit-instance/ │ │ │ │ │ │ ├── AppCache.ts │ │ │ │ │ │ ├── CountController.ts │ │ │ │ │ │ ├── CountService.ts │ │ │ │ │ │ ├── TempObj.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── multi-instance-module/ │ │ │ │ │ │ ├── MultiInstance.ts │ │ │ │ │ │ ├── MultiInstanceConstructor.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── multi-module/ │ │ │ │ │ ├── multi-module-common/ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ └── App.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── multi-module-repo/ │ │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ │ ├── PersistenceService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── multi-module-service/ │ │ │ │ │ ├── AppService.ts │ │ │ │ │ └── package.json │ │ │ │ ├── index.test.ts │ │ │ │ └── util.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── schedule-decorator/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── builder/ │ │ │ │ │ ├── ScheduleMetaBuilder.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── decorator/ │ │ │ │ │ ├── Schedule.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── model/ │ │ │ │ │ ├── ScheduleMetadata.ts │ │ │ │ │ └── index.ts │ │ │ │ └── util/ │ │ │ │ ├── ScheduleInfoUtil.ts │ │ │ │ ├── ScheduleMetadataUtil.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── standalone-decorator/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── decorator/ │ │ │ │ │ ├── Runner.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── typing.ts │ │ │ │ └── util/ │ │ │ │ ├── StandaloneUtil.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── tegg/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── agent.ts │ │ │ │ ├── ajv.ts │ │ │ │ ├── aop.ts │ │ │ │ ├── dal.ts │ │ │ │ ├── helper.ts │ │ │ │ ├── index.ts │ │ │ │ ├── orm.ts │ │ │ │ ├── schedule.ts │ │ │ │ ├── standalone.ts │ │ │ │ └── transaction.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ ├── ajv.test.ts.snap │ │ │ │ │ ├── aop.test.ts.snap │ │ │ │ │ ├── dal.test.ts.snap │ │ │ │ │ ├── exports.test.ts.snap │ │ │ │ │ ├── helper.test.ts.snap │ │ │ │ │ ├── orm.test.ts.snap │ │ │ │ │ ├── schedule.test.ts.snap │ │ │ │ │ ├── stanalone.test.ts.snap │ │ │ │ │ └── transaction.test.ts.snap │ │ │ │ ├── ajv.test.ts │ │ │ │ ├── aop.test.ts │ │ │ │ ├── dal.test.ts │ │ │ │ ├── exports.test.ts │ │ │ │ ├── helper.test.ts │ │ │ │ ├── index.test.ts │ │ │ │ ├── orm.test.ts │ │ │ │ ├── schedule.test.ts │ │ │ │ ├── stanalone.test.ts │ │ │ │ └── transaction.test.ts │ │ │ └── tsconfig.json │ │ ├── test-util/ │ │ │ ├── CHANGELOG.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── CoreTestHelper.ts │ │ │ │ ├── EggTestContext.ts │ │ │ │ ├── LoaderUtil.ts │ │ │ │ ├── TestLoader.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── transaction-decorator/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── builder/ │ │ │ │ │ ├── TransactionMetaBuilder.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── decorator/ │ │ │ │ │ ├── Transactional.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ └── util/ │ │ │ │ ├── TransactionMetadataUtil.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── builder/ │ │ │ │ │ └── TransactionMetaBuilder.test.ts │ │ │ │ ├── fixtures/ │ │ │ │ │ └── transaction.ts │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── types/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── agent-runtime/ │ │ │ │ │ ├── AgentMessage.ts │ │ │ │ │ ├── AgentRuntime.ts │ │ │ │ │ ├── AgentStore.ts │ │ │ │ │ ├── ObjectStorageClient.ts │ │ │ │ │ ├── errors.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── aop/ │ │ │ │ │ ├── Advice.ts │ │ │ │ │ ├── Aspect.ts │ │ │ │ │ ├── Crosscut.ts │ │ │ │ │ ├── Pointcut.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── common/ │ │ │ │ │ ├── Graph.ts │ │ │ │ │ ├── Logger.ts │ │ │ │ │ ├── ModuleConfig.ts │ │ │ │ │ ├── RuntimeConfig.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── controller-decorator/ │ │ │ │ │ ├── HTTPController.ts │ │ │ │ │ ├── HTTPMethod.ts │ │ │ │ │ ├── HTTPParam.ts │ │ │ │ │ ├── MCPController.ts │ │ │ │ │ ├── MCPPromptParams.ts │ │ │ │ │ ├── MCPResourceParams.ts │ │ │ │ │ ├── MCPToolParams.ts │ │ │ │ │ ├── MetadataKey.ts │ │ │ │ │ ├── builder.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model/ │ │ │ │ │ ├── ControllerMetadata.ts │ │ │ │ │ ├── MethodMeta.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── core-decorator/ │ │ │ │ │ ├── ContextProto.ts │ │ │ │ │ ├── Inject.ts │ │ │ │ │ ├── Metadata.ts │ │ │ │ │ ├── MultiInstanceProto.ts │ │ │ │ │ ├── Prototype.ts │ │ │ │ │ ├── SingletonProto.ts │ │ │ │ │ ├── enum/ │ │ │ │ │ │ ├── AccessLevel.ts │ │ │ │ │ │ ├── EggType.ts │ │ │ │ │ │ ├── InjectType.ts │ │ │ │ │ │ ├── MultiInstanceType.ts │ │ │ │ │ │ ├── ObjectInitType.ts │ │ │ │ │ │ ├── Qualifier.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model/ │ │ │ │ │ ├── EggMultiInstancePrototypeInfo.ts │ │ │ │ │ ├── EggPrototypeInfo.ts │ │ │ │ │ ├── InjectConstructorInfo.ts │ │ │ │ │ ├── InjectObjectInfo.ts │ │ │ │ │ ├── QualifierInfo.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── dal/ │ │ │ │ │ ├── Qualifier.ts │ │ │ │ │ ├── decorator/ │ │ │ │ │ │ ├── Column.ts │ │ │ │ │ │ ├── DataSourceQualifier.ts │ │ │ │ │ │ ├── Table.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── enum/ │ │ │ │ │ │ ├── ColumnFormat.ts │ │ │ │ │ │ ├── ColumnType.ts │ │ │ │ │ │ ├── CompressionType.ts │ │ │ │ │ │ ├── IndexStoreType.ts │ │ │ │ │ │ ├── IndexType.ts │ │ │ │ │ │ ├── InsertMethod.ts │ │ │ │ │ │ ├── RowFormat.ts │ │ │ │ │ │ ├── SqlType.ts │ │ │ │ │ │ ├── Templates.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── type/ │ │ │ │ │ ├── BaseDao.ts │ │ │ │ │ ├── CodeGenerator.ts │ │ │ │ │ ├── ColumnTsType.ts │ │ │ │ │ ├── DateSource.ts │ │ │ │ │ ├── Spatial.ts │ │ │ │ │ ├── SqlMap.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── dynamic-inject.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lifecycle/ │ │ │ │ │ ├── EggObjectLifecycle.ts │ │ │ │ │ ├── IdenticalObject.ts │ │ │ │ │ ├── LifecycleHook.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── metadata/ │ │ │ │ │ ├── enum/ │ │ │ │ │ │ ├── ProtoDescriptorType.ts │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── errors.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model/ │ │ │ │ │ ├── EggPrototype.ts │ │ │ │ │ ├── LoadUnit.ts │ │ │ │ │ ├── Loader.ts │ │ │ │ │ ├── ProtoDescriptor.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── orm.ts │ │ │ │ ├── runtime/ │ │ │ │ │ ├── Factory.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── model/ │ │ │ │ │ ├── EggContainer.ts │ │ │ │ │ ├── EggContext.ts │ │ │ │ │ ├── EggObject.ts │ │ │ │ │ ├── LoadUnitInstance.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── schedule.ts │ │ │ │ └── transaction.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ └── index.test.ts │ │ │ └── tsconfig.json │ │ └── vitest/ │ │ ├── index.ts │ │ ├── package.json │ │ ├── runner.ts │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── runner.ts │ │ │ └── shared.ts │ │ ├── test/ │ │ │ ├── fixture_app.test.ts │ │ │ ├── fixtures/ │ │ │ │ └── apps/ │ │ │ │ └── demo-app/ │ │ │ │ ├── config/ │ │ │ │ │ ├── module.json │ │ │ │ │ └── plugin.ts │ │ │ │ ├── modules/ │ │ │ │ │ └── demo-module/ │ │ │ │ │ ├── HelloService.ts │ │ │ │ │ └── package.json │ │ │ │ └── package.json │ │ │ ├── get_app_throw.test.ts │ │ │ ├── get_store_restore.test.ts │ │ │ ├── hooks.test.ts │ │ │ └── setup.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── plugin/ │ │ ├── ajv/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ ├── lib/ │ │ │ │ │ └── Ajv.ts │ │ │ │ └── types.ts │ │ │ ├── test/ │ │ │ │ ├── ajv.test.ts │ │ │ │ └── fixtures/ │ │ │ │ └── apps/ │ │ │ │ └── ajv-app/ │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ ├── module.json │ │ │ │ │ └── plugin.ts │ │ │ │ ├── modules/ │ │ │ │ │ └── demo/ │ │ │ │ │ ├── FooController.ts │ │ │ │ │ ├── module.yml │ │ │ │ │ └── package.json │ │ │ │ └── package.json │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── aop/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lib/ │ │ │ │ │ └── AopContextHook.ts │ │ │ │ └── types.ts │ │ │ ├── test/ │ │ │ │ ├── aop.test.ts │ │ │ │ └── fixtures/ │ │ │ │ └── apps/ │ │ │ │ └── aop-app/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── app.ts │ │ │ │ │ ├── router.ts │ │ │ │ │ └── typings/ │ │ │ │ │ └── index.d.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ ├── module.json │ │ │ │ │ └── plugin.ts │ │ │ │ ├── modules/ │ │ │ │ │ └── aop-module/ │ │ │ │ │ ├── Hello.ts │ │ │ │ │ └── package.json │ │ │ │ └── package.json │ │ │ └── tsconfig.json │ │ ├── common/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── config/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── agent.ts │ │ │ │ ├── app.ts │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lib/ │ │ │ │ │ └── ModuleScanner.ts │ │ │ │ └── types.ts │ │ │ ├── test/ │ │ │ │ ├── DuplicateOptionalModule.test.ts │ │ │ │ ├── ReadModule.test.ts │ │ │ │ ├── fixtures/ │ │ │ │ │ └── apps/ │ │ │ │ │ ├── app-with-modules/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── module-a/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── duplicate-optional-module/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── foo/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── unused/ │ │ │ │ │ │ │ ├── Unused.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── used/ │ │ │ │ │ │ ├── Used.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ └── utils.ts │ │ │ └── tsconfig.json │ │ ├── controller/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ └── middleware/ │ │ │ │ │ ├── mcp_body_middleware.ts │ │ │ │ │ └── tegg_root_proto.ts │ │ │ │ ├── app.ts │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lib/ │ │ │ │ │ ├── AgentControllerObject.ts │ │ │ │ │ ├── AgentControllerProto.ts │ │ │ │ │ ├── AppLoadUnitControllerHook.ts │ │ │ │ │ ├── ControllerLoadUnit.ts │ │ │ │ │ ├── ControllerLoadUnitHandler.ts │ │ │ │ │ ├── ControllerLoadUnitInstance.ts │ │ │ │ │ ├── ControllerMetadataManager.ts │ │ │ │ │ ├── ControllerRegister.ts │ │ │ │ │ ├── ControllerRegisterFactory.ts │ │ │ │ │ ├── EggControllerLoader.ts │ │ │ │ │ ├── EggControllerPrototypeHook.ts │ │ │ │ │ ├── MiddlewareGraphHook.ts │ │ │ │ │ ├── RootProtoManager.ts │ │ │ │ │ ├── errors.ts │ │ │ │ │ └── impl/ │ │ │ │ │ ├── http/ │ │ │ │ │ │ ├── Acl.ts │ │ │ │ │ │ ├── HTTPControllerRegister.ts │ │ │ │ │ │ ├── HTTPMethodRegister.ts │ │ │ │ │ │ └── Req.ts │ │ │ │ │ └── mcp/ │ │ │ │ │ ├── MCPConfig.ts │ │ │ │ │ ├── MCPControllerRegister.ts │ │ │ │ │ └── MCPServerHelper.ts │ │ │ │ └── types.ts │ │ │ ├── test/ │ │ │ │ ├── fixtures/ │ │ │ │ │ └── apps/ │ │ │ │ │ ├── acl-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── AclController.ts │ │ │ │ │ │ │ └── extend/ │ │ │ │ │ │ │ └── context.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── controller-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ ├── AopMiddlewareController.ts │ │ │ │ │ │ │ │ ├── AppController.ts │ │ │ │ │ │ │ │ ├── MiddlewareController.ts │ │ │ │ │ │ │ │ ├── ParamController.ts │ │ │ │ │ │ │ │ ├── PriorityController.ts │ │ │ │ │ │ │ │ ├── RedirectController.ts │ │ │ │ │ │ │ │ └── ViewController.ts │ │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ │ ├── call_module.ts │ │ │ │ │ │ │ ├── count_mw.ts │ │ │ │ │ │ │ └── log_mw.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ │ ├── modules/ │ │ │ │ │ │ │ ├── multi-module-common/ │ │ │ │ │ │ │ │ ├── advice/ │ │ │ │ │ │ │ │ │ ├── BarMethodAdvice.ts │ │ │ │ │ │ │ │ │ ├── CountAdvice.ts │ │ │ │ │ │ │ │ │ ├── FooControllerAdvice.ts │ │ │ │ │ │ │ │ │ └── FooMethodAdvice.ts │ │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ │ └── App.ts │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── multi-module-repo/ │ │ │ │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ │ │ │ ├── PersistenceService.ts │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ └── multi-module-service/ │ │ │ │ │ │ │ ├── AppService.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── duplicate-controller-name-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ │ ├── AppController.ts │ │ │ │ │ │ │ └── AppController2.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── duplicate-proto-name-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ │ ├── AppController.ts │ │ │ │ │ │ │ └── AppController2.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── host-controller-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ │ ├── AppController.ts │ │ │ │ │ │ │ ├── AppController2.ts │ │ │ │ │ │ │ ├── MultiHostController.ts │ │ │ │ │ │ │ └── MultiMethodHostController.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── http-conflict-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ │ ├── AppController.ts │ │ │ │ │ │ │ ├── HostController1.ts │ │ │ │ │ │ │ └── HostController2.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── http-inject-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── AppController.ts │ │ │ │ │ │ │ └── middleware/ │ │ │ │ │ │ │ ├── call_module.ts │ │ │ │ │ │ │ ├── count_mw.ts │ │ │ │ │ │ │ └── log_mw.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── module-app/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── AppController2.ts │ │ │ │ │ │ │ └── router.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ │ ├── modules/ │ │ │ │ │ │ │ ├── foo-module/ │ │ │ │ │ │ │ │ ├── AppService.ts │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ └── http-module/ │ │ │ │ │ │ │ ├── AppController.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── package.json │ │ │ │ │ └── proto-poisoning/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ └── HelloController.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ └── package.json │ │ │ │ ├── http/ │ │ │ │ │ ├── acl.test.ts │ │ │ │ │ ├── edgecase.test.ts │ │ │ │ │ ├── host.test.ts │ │ │ │ │ ├── middleware.test.ts │ │ │ │ │ ├── module.test.ts │ │ │ │ │ ├── params.test.ts │ │ │ │ │ ├── priority.test.ts │ │ │ │ │ ├── proto-poisoning.test.ts │ │ │ │ │ └── request.test.ts │ │ │ │ ├── lib/ │ │ │ │ │ ├── AgentControllerProto.test.ts │ │ │ │ │ ├── ControllerMetaManager.test.ts │ │ │ │ │ ├── EggControllerLoader.test.ts │ │ │ │ │ └── HTTPMethodRegister.test.ts │ │ │ │ └── utils.ts │ │ │ └── tsconfig.json │ │ ├── dal/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ └── extend/ │ │ │ │ │ └── application.ts │ │ │ │ ├── app.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lib/ │ │ │ │ │ ├── DalModuleLoadUnitHook.ts │ │ │ │ │ ├── DalTableEggPrototypeHook.ts │ │ │ │ │ ├── DataSource.ts │ │ │ │ │ ├── MysqlDataSourceManager.ts │ │ │ │ │ ├── SqlMapManager.ts │ │ │ │ │ ├── TableModelManager.ts │ │ │ │ │ ├── TransactionPrototypeHook.ts │ │ │ │ │ └── TransactionalAOP.ts │ │ │ │ └── types.ts │ │ │ ├── test/ │ │ │ │ ├── dal.test.ts │ │ │ │ ├── fixtures/ │ │ │ │ │ └── apps/ │ │ │ │ │ └── dal-app/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ └── dal/ │ │ │ │ │ │ ├── Foo.ts │ │ │ │ │ │ ├── FooService.ts │ │ │ │ │ │ ├── dal/ │ │ │ │ │ │ │ ├── dao/ │ │ │ │ │ │ │ │ ├── FooDAO.ts │ │ │ │ │ │ │ │ └── base/ │ │ │ │ │ │ │ │ └── BaseFooDAO.ts │ │ │ │ │ │ │ ├── extension/ │ │ │ │ │ │ │ │ └── FooExtension.ts │ │ │ │ │ │ │ └── structure/ │ │ │ │ │ │ │ ├── Foo.json │ │ │ │ │ │ │ └── Foo.sql │ │ │ │ │ │ ├── module.yml │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── transaction.test.ts │ │ │ │ └── utils.ts │ │ │ └── tsconfig.json │ │ ├── eventbus/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ └── extend/ │ │ │ │ │ ├── application.unittest.ts │ │ │ │ │ └── context.ts │ │ │ │ ├── app.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lib/ │ │ │ │ │ ├── EggContextEventBus.ts │ │ │ │ │ ├── EggEventContext.ts │ │ │ │ │ ├── EventHandlerProtoManager.ts │ │ │ │ │ ├── EventbusLoadUnitHook.ts │ │ │ │ │ └── EventbusProtoHook.ts │ │ │ │ └── types.ts │ │ │ ├── test/ │ │ │ │ ├── eventbus.test.ts │ │ │ │ ├── fixtures/ │ │ │ │ │ └── apps/ │ │ │ │ │ └── event-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── event-module/ │ │ │ │ │ │ ├── HelloLogger.ts │ │ │ │ │ │ ├── HelloService.ts │ │ │ │ │ │ ├── MultiEventHandler.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ └── package.json │ │ │ │ └── utils.ts │ │ │ └── tsconfig.json │ │ ├── langchain/ │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app.ts │ │ │ │ ├── index.ts │ │ │ │ └── lib/ │ │ │ │ ├── ChatModelHelper.ts │ │ │ │ ├── ChatOpenAI.ts │ │ │ │ ├── boundModel/ │ │ │ │ │ └── BoundModelObjectHook.ts │ │ │ │ ├── config/ │ │ │ │ │ └── QualifierUtil.ts │ │ │ │ ├── graph/ │ │ │ │ │ ├── CompiledStateGraphObject.ts │ │ │ │ │ ├── CompiledStateGraphProto.ts │ │ │ │ │ ├── GraphBuildHook.ts │ │ │ │ │ ├── GraphLoadUnitHook.ts │ │ │ │ │ ├── GraphObjectHook.ts │ │ │ │ │ └── GraphPrototypeHook.ts │ │ │ │ ├── tracing/ │ │ │ │ │ └── LangGraphTracer.ts │ │ │ │ └── util.ts │ │ │ ├── test/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── apps/ │ │ │ │ │ │ └── langchain/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── modules/ │ │ │ │ │ │ │ └── bar/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── AppController.ts │ │ │ │ │ │ │ ├── module.yml │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── service/ │ │ │ │ │ │ │ ├── BoundChatModel.ts │ │ │ │ │ │ │ └── Graph.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ └── sse-mcp-server/ │ │ │ │ │ └── http.ts │ │ │ │ └── llm.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── mcp-client/ │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ └── lib/ │ │ │ │ ├── EggHttpMCPClient.ts │ │ │ │ ├── EggHttpStaticMCPClient.ts │ │ │ │ ├── HttpMCPClientFactory.ts │ │ │ │ ├── QualifierUtil.ts │ │ │ │ └── constants.ts │ │ │ ├── test/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── apps/ │ │ │ │ │ │ └── mcpclient/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ └── modules/ │ │ │ │ │ │ │ └── bar/ │ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ │ └── AppController.ts │ │ │ │ │ │ │ ├── module.yml │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ │ └── plugin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── sse-mcp-server/ │ │ │ │ │ │ └── http.ts │ │ │ │ │ └── streamable-mcp-server/ │ │ │ │ │ └── http.ts │ │ │ │ └── mcpclient.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── mcp-proxy/ │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── agent.ts │ │ │ │ ├── app/ │ │ │ │ │ └── extend/ │ │ │ │ │ ├── agent.ts │ │ │ │ │ └── application.ts │ │ │ │ ├── app.ts │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.ts │ │ │ │ ├── index.ts │ │ │ │ └── lib/ │ │ │ │ └── MCPProxyDataClient.ts │ │ │ ├── test/ │ │ │ │ ├── fixtures/ │ │ │ │ │ └── apps/ │ │ │ │ │ └── mcp-proxy/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── app.ts │ │ │ │ │ │ └── router.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ └── package.json │ │ │ │ └── proxy.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsdown.config.ts │ │ ├── orm/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── app.ts │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lib/ │ │ │ │ │ ├── DataSourceManager.ts │ │ │ │ │ ├── LeoricRegister.ts │ │ │ │ │ ├── ModelProtoHook.ts │ │ │ │ │ ├── ModelProtoManager.ts │ │ │ │ │ ├── ORMLoadUnitHook.ts │ │ │ │ │ ├── SingletonModelObject.ts │ │ │ │ │ ├── SingletonModelProto.ts │ │ │ │ │ ├── SingletonORM.ts │ │ │ │ │ └── types.ts │ │ │ │ └── types.ts │ │ │ ├── test/ │ │ │ │ ├── __snapshots__/ │ │ │ │ │ └── exports.test.ts.snap │ │ │ │ ├── exports.test.ts │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── apps/ │ │ │ │ │ │ └── orm-app/ │ │ │ │ │ │ ├── app.ts │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ │ ├── modules/ │ │ │ │ │ │ │ └── orm-module/ │ │ │ │ │ │ │ ├── AppService.ts │ │ │ │ │ │ │ ├── CtxService.ts │ │ │ │ │ │ │ ├── PkgService.ts │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ ├── App.ts │ │ │ │ │ │ │ │ └── Pkg.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── package.json │ │ │ │ │ └── prepare.js │ │ │ │ └── index.test.ts │ │ │ ├── tsconfig.json │ │ │ └── tsconfig.typecheck.json │ │ ├── schedule/ │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── agent.ts │ │ │ │ ├── app.ts │ │ │ │ ├── index.ts │ │ │ │ ├── lib/ │ │ │ │ │ ├── EggScheduleAdapter.ts │ │ │ │ │ ├── EggScheduleMetadataConvertor.ts │ │ │ │ │ ├── ScheduleManager.ts │ │ │ │ │ ├── SchedulePrototypeHook.ts │ │ │ │ │ ├── ScheduleSubscriberRegister.ts │ │ │ │ │ ├── ScheduleWorkerLoadUnitHook.ts │ │ │ │ │ └── ScheduleWorkerRegister.ts │ │ │ │ └── types.ts │ │ │ ├── test/ │ │ │ │ ├── fixtures/ │ │ │ │ │ └── schedule-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── subscriber/ │ │ │ │ │ │ ├── Subscriber.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ └── package.json │ │ │ │ └── schedule.test.ts │ │ │ └── tsconfig.json │ │ └── tegg/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── extend/ │ │ │ │ │ ├── application.ts │ │ │ │ │ ├── application.unittest.ts │ │ │ │ │ └── context.ts │ │ │ │ └── middleware/ │ │ │ │ └── tegg_ctx_lifecycle_middleware.ts │ │ │ ├── app.ts │ │ │ ├── index.ts │ │ │ ├── lib/ │ │ │ │ ├── AppLoadUnit.ts │ │ │ │ ├── AppLoadUnitInstance.ts │ │ │ │ ├── CompatibleUtil.ts │ │ │ │ ├── ConfigSourceLoadUnitHook.ts │ │ │ │ ├── EggAppLoader.ts │ │ │ │ ├── EggCompatibleObject.ts │ │ │ │ ├── EggCompatibleProtoImpl.ts │ │ │ │ ├── EggContextCompatibleHook.ts │ │ │ │ ├── EggContextHandler.ts │ │ │ │ ├── EggContextImpl.ts │ │ │ │ ├── EggModuleLoader.ts │ │ │ │ ├── EggQualifierProtoHook.ts │ │ │ │ ├── ModuleConfigLoader.ts │ │ │ │ ├── ModuleHandler.ts │ │ │ │ ├── Utils.ts │ │ │ │ ├── ctx_lifecycle_middleware.ts │ │ │ │ └── run_in_background.ts │ │ │ └── types.ts │ │ ├── test/ │ │ │ ├── AccessLevelCheck.test.ts │ │ │ ├── BackgroundTask.test.ts │ │ │ ├── ConstructorModuleConfig.test.ts │ │ │ ├── DynamicInject.test.ts │ │ │ ├── EggCompatible.test.ts │ │ │ ├── Inject.test.ts │ │ │ ├── ModuleConfig.test.ts │ │ │ ├── MultiInstanceInjectMultiInstance.test.ts │ │ │ ├── NoModuleJson.test.ts │ │ │ ├── OptionalModule.test.ts │ │ │ ├── OptionalPluginModule.test.ts │ │ │ ├── SameProtoName.test.ts │ │ │ ├── Subscription.test.ts │ │ │ ├── app/ │ │ │ │ └── extend/ │ │ │ │ ├── application-one-module.test.ts │ │ │ │ ├── application.test.ts │ │ │ │ ├── application.unittest.test.ts │ │ │ │ └── context.test.ts │ │ │ ├── close.test.ts │ │ │ ├── fixtures/ │ │ │ │ └── apps/ │ │ │ │ ├── access-level-check/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── app.ts │ │ │ │ │ │ └── router.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ ├── module-a/ │ │ │ │ │ │ │ ├── BarService.ts │ │ │ │ │ │ │ ├── FooService.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── module-main/ │ │ │ │ │ │ │ ├── BarService.ts │ │ │ │ │ │ │ ├── FooService.ts │ │ │ │ │ │ │ ├── MainService.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── package.json │ │ │ │ │ └── typings/ │ │ │ │ │ └── index.d.ts │ │ │ │ ├── app-multi-inject-multi/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── modules/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── App.ts │ │ │ │ │ │ │ ├── module.yml │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── app2/ │ │ │ │ │ │ │ ├── App.ts │ │ │ │ │ │ │ ├── module.yml │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ ├── BizManager.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ ├── Secret.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ └── package.json │ │ │ │ ├── app-with-no-module-json/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── app.ts │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ ├── application.unittest.ts │ │ │ │ │ │ │ └── context.ts │ │ │ │ │ │ ├── router.ts │ │ │ │ │ │ └── typings/ │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ └── config-module/ │ │ │ │ │ │ ├── ConfigService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── background-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── app.ts │ │ │ │ │ │ ├── router.ts │ │ │ │ │ │ └── typings/ │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ └── multi-module-background/ │ │ │ │ │ │ ├── BackgroundService.ts │ │ │ │ │ │ ├── CountService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── close-test-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ └── foo.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ ├── multi-module-repo/ │ │ │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── multi-module-service/ │ │ │ │ │ │ ├── AppService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── constructor-module-config/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── app.ts │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ ├── application.unittest.ts │ │ │ │ │ │ │ └── context.ts │ │ │ │ │ │ └── router.ts │ │ │ │ │ ├── app.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ └── module-with-config/ │ │ │ │ │ │ ├── foo.ts │ │ │ │ │ │ ├── module.unittest.yml │ │ │ │ │ │ ├── module.yml │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── package.json │ │ │ │ │ └── typings/ │ │ │ │ │ └── index.d.ts │ │ │ │ ├── dynamic-inject-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── app.ts │ │ │ │ │ │ ├── router.ts │ │ │ │ │ │ └── typings/ │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ └── dynamic-inject-module/ │ │ │ │ │ │ ├── AbstractContextHello.ts │ │ │ │ │ │ ├── AbstractSingletonHello.ts │ │ │ │ │ │ ├── FooType.ts │ │ │ │ │ │ ├── HelloService.ts │ │ │ │ │ │ ├── SingletonHelloService.ts │ │ │ │ │ │ ├── decorator/ │ │ │ │ │ │ │ ├── ContextHello.ts │ │ │ │ │ │ │ └── SingletonHello.ts │ │ │ │ │ │ ├── impl/ │ │ │ │ │ │ │ ├── BarContextHello.ts │ │ │ │ │ │ │ ├── BarSingletonHello.ts │ │ │ │ │ │ │ ├── FooContextHello.ts │ │ │ │ │ │ │ └── FooSingletonHello.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── egg-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── app.ts │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ ├── application.ts │ │ │ │ │ │ │ ├── application.unittest.ts │ │ │ │ │ │ │ └── context.ts │ │ │ │ │ │ ├── router.ts │ │ │ │ │ │ └── typings/ │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ ├── multi-module-common/ │ │ │ │ │ │ │ ├── model/ │ │ │ │ │ │ │ │ └── App.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── multi-module-repo/ │ │ │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ │ │ ├── GlobalAppRepo.ts │ │ │ │ │ │ │ ├── PersistenceService.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── multi-module-service/ │ │ │ │ │ │ ├── AppService.ts │ │ │ │ │ │ ├── ConfigService.ts │ │ │ │ │ │ ├── CustomLoggerService.ts │ │ │ │ │ │ ├── EggTypeService.ts │ │ │ │ │ │ ├── SingletonFooService.ts │ │ │ │ │ │ ├── TraceService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── egg-app-simple/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ └── multi-module-repo/ │ │ │ │ │ │ ├── PersistenceService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── inject-module-config/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── app.ts │ │ │ │ │ │ ├── extend/ │ │ │ │ │ │ │ ├── application.unittest.ts │ │ │ │ │ │ │ └── context.ts │ │ │ │ │ │ ├── router.ts │ │ │ │ │ │ └── typings/ │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── app.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ ├── module-with-config/ │ │ │ │ │ │ │ ├── foo.ts │ │ │ │ │ │ │ ├── module.unittest.yml │ │ │ │ │ │ │ ├── module.yml │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── module-with-overwrite-config/ │ │ │ │ │ │ ├── bar.ts │ │ │ │ │ │ ├── module.unittest.yml │ │ │ │ │ │ ├── module.yml │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── invalid-inject/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── modules/ │ │ │ │ │ │ └── module-a/ │ │ │ │ │ │ ├── BarService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ └── package.json │ │ │ │ ├── optional-inject/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── modules/ │ │ │ │ │ │ └── module-a/ │ │ │ │ │ │ ├── BarService.ts │ │ │ │ │ │ ├── FooService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ └── package.json │ │ │ │ ├── optional-module/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── modules/ │ │ │ │ │ │ └── root/ │ │ │ │ │ │ ├── Root.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── foo/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── unused/ │ │ │ │ │ │ │ ├── Unused.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── used/ │ │ │ │ │ │ ├── Used.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── plugin-module/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── node_modules/ │ │ │ │ │ │ ├── foo/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── foo-plugin/ │ │ │ │ │ │ ├── Used.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── recursive-module-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── app.ts │ │ │ │ │ │ └── router.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── modules/ │ │ │ │ │ │ ├── multi-module-repo/ │ │ │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── multi-module-service/ │ │ │ │ │ │ ├── AppService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── same-name-protos/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── modules/ │ │ │ │ │ │ ├── module-a/ │ │ │ │ │ │ │ ├── BarService.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── module-bar/ │ │ │ │ │ │ │ ├── FooService.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── module-foo/ │ │ │ │ │ │ ├── FooService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ └── package.json │ │ │ │ ├── same-name-singleton-and-context-proto/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── modules/ │ │ │ │ │ │ ├── module-bar/ │ │ │ │ │ │ │ ├── BarConstructorService1.ts │ │ │ │ │ │ │ ├── BarConstructorService2.ts │ │ │ │ │ │ │ ├── BarService1.ts │ │ │ │ │ │ │ ├── BarService2.ts │ │ │ │ │ │ │ ├── FooService.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── module-foo/ │ │ │ │ │ │ ├── FooService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ └── package.json │ │ │ │ ├── schedule-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── schedule/ │ │ │ │ │ │ └── foo.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── module.json │ │ │ │ │ │ └── plugin.ts │ │ │ │ │ ├── modules/ │ │ │ │ │ │ ├── multi-module-repo/ │ │ │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── multi-module-service/ │ │ │ │ │ │ ├── AppService.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ └── wrong-order-app/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── app.ts │ │ │ │ │ └── router.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ ├── module.json │ │ │ │ │ └── plugin.js │ │ │ │ ├── modules/ │ │ │ │ │ ├── multi-module-repo/ │ │ │ │ │ │ ├── AppRepo.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── multi-module-service/ │ │ │ │ │ ├── AppService.ts │ │ │ │ │ └── package.json │ │ │ │ └── package.json │ │ │ ├── lib/ │ │ │ │ └── EggModuleLoader.test.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ └── standalone/ │ └── standalone/ │ ├── CHANGELOG.md │ ├── README.md │ ├── package.json │ ├── src/ │ │ ├── ConfigSourceLoadUnitHook.ts │ │ ├── EggModuleLoader.ts │ │ ├── ModuleConfig.ts │ │ ├── Runner.ts │ │ ├── StandaloneContext.ts │ │ ├── StandaloneContextHandler.ts │ │ ├── StandaloneContextImpl.ts │ │ ├── StandaloneInnerObject.ts │ │ ├── StandaloneInnerObjectProto.ts │ │ ├── StandaloneLoadUnit.ts │ │ ├── index.ts │ │ └── main.ts │ ├── test/ │ │ ├── fixtures/ │ │ │ ├── ajv-module/ │ │ │ │ ├── foo.ts │ │ │ │ └── package.json │ │ │ ├── ajv-module-pass/ │ │ │ │ ├── foo.ts │ │ │ │ └── package.json │ │ │ ├── aop-module/ │ │ │ │ ├── Hello.ts │ │ │ │ ├── main.ts │ │ │ │ └── package.json │ │ │ ├── custom-context/ │ │ │ │ ├── foo.ts │ │ │ │ └── package.json │ │ │ ├── dal-module/ │ │ │ │ ├── module.yml │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ ├── Foo.ts │ │ │ │ │ ├── dal/ │ │ │ │ │ │ ├── dao/ │ │ │ │ │ │ │ ├── FooDAO.ts │ │ │ │ │ │ │ └── base/ │ │ │ │ │ │ │ └── BaseFooDAO.ts │ │ │ │ │ │ ├── extension/ │ │ │ │ │ │ │ └── FooExtension.ts │ │ │ │ │ │ └── structure/ │ │ │ │ │ │ ├── Foo.json │ │ │ │ │ │ └── Foo.sql │ │ │ │ │ └── main.ts │ │ │ │ └── tsconfig.json │ │ │ ├── dal-transaction-module/ │ │ │ │ ├── module.yml │ │ │ │ ├── package.json │ │ │ │ ├── src/ │ │ │ │ │ ├── Foo.ts │ │ │ │ │ ├── FooService.ts │ │ │ │ │ ├── dal/ │ │ │ │ │ │ ├── dao/ │ │ │ │ │ │ │ ├── FooDAO.ts │ │ │ │ │ │ │ └── base/ │ │ │ │ │ │ │ └── BaseFooDAO.ts │ │ │ │ │ │ ├── extension/ │ │ │ │ │ │ │ └── FooExtension.ts │ │ │ │ │ │ └── structure/ │ │ │ │ │ │ ├── Foo.json │ │ │ │ │ │ └── Foo.sql │ │ │ │ │ └── main.ts │ │ │ │ └── tsconfig.json │ │ │ ├── dependency/ │ │ │ │ ├── foo.ts │ │ │ │ ├── node_modules/ │ │ │ │ │ └── dependency-1/ │ │ │ │ │ └── package.json │ │ │ │ └── package.json │ │ │ ├── dynamic-inject-module/ │ │ │ │ ├── AbstractContextHello.ts │ │ │ │ ├── AbstractSingletonHello.ts │ │ │ │ ├── FooType.ts │ │ │ │ ├── HelloService.ts │ │ │ │ ├── decorator/ │ │ │ │ │ ├── ContextHello.ts │ │ │ │ │ └── SingletonHello.ts │ │ │ │ ├── impl/ │ │ │ │ │ ├── BarContextHello.ts │ │ │ │ │ ├── BarSingletonHello.ts │ │ │ │ │ ├── FooContextHello.ts │ │ │ │ │ └── FooSingletonHello.ts │ │ │ │ ├── main.ts │ │ │ │ └── package.json │ │ │ ├── inner-object/ │ │ │ │ ├── foo.ts │ │ │ │ └── package.json │ │ │ ├── invalid-inject/ │ │ │ │ ├── foo.ts │ │ │ │ └── package.json │ │ │ ├── lifecycle/ │ │ │ │ ├── foo.ts │ │ │ │ └── package.json │ │ │ ├── module-with-config/ │ │ │ │ ├── foo.ts │ │ │ │ ├── module.yml │ │ │ │ └── package.json │ │ │ ├── module-with-empty-config/ │ │ │ │ ├── foo.ts │ │ │ │ ├── module.yml │ │ │ │ └── package.json │ │ │ ├── module-with-empty-default-config/ │ │ │ │ ├── foo.ts │ │ │ │ ├── module.dev.yml │ │ │ │ ├── module.yml │ │ │ │ └── package.json │ │ │ ├── module-with-env-config/ │ │ │ │ ├── foo.ts │ │ │ │ ├── module.dev.yml │ │ │ │ ├── module.yml │ │ │ │ └── package.json │ │ │ ├── multi-callback-instance-module/ │ │ │ │ ├── biz/ │ │ │ │ │ ├── biz.ts │ │ │ │ │ ├── module.yml │ │ │ │ │ └── package.json │ │ │ │ ├── logger/ │ │ │ │ │ ├── DynamicLogger.ts │ │ │ │ │ └── package.json │ │ │ │ └── main/ │ │ │ │ ├── foo.ts │ │ │ │ ├── module.yml │ │ │ │ └── package.json │ │ │ ├── multi-modules/ │ │ │ │ ├── bar/ │ │ │ │ │ ├── module.yml │ │ │ │ │ └── package.json │ │ │ │ └── foo/ │ │ │ │ ├── foo.ts │ │ │ │ ├── module.yml │ │ │ │ └── package.json │ │ │ ├── optional-inject/ │ │ │ │ ├── bar.ts │ │ │ │ ├── foo.ts │ │ │ │ └── package.json │ │ │ ├── runtime-config/ │ │ │ │ ├── foo.ts │ │ │ │ └── package.json │ │ │ └── simple/ │ │ │ ├── foo.ts │ │ │ └── package.json │ │ └── index.test.ts │ ├── tsconfig.json │ └── tsdown.config.ts ├── tools/ │ ├── create-egg/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cli.ts │ │ │ ├── index.ts │ │ │ └── templates/ │ │ │ ├── egg3-simple-js/ │ │ │ │ ├── .eslintignore │ │ │ │ ├── .eslintrc │ │ │ │ ├── .vscode/ │ │ │ │ │ └── launch.json │ │ │ │ ├── README.md │ │ │ │ ├── _.gitignore │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.js │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── plugin.js │ │ │ │ ├── package.json │ │ │ │ └── test/ │ │ │ │ └── app/ │ │ │ │ └── controller/ │ │ │ │ └── home.test.js │ │ │ ├── egg3-simple-ts/ │ │ │ │ ├── .eslintignore │ │ │ │ ├── .eslintrc │ │ │ │ ├── README.md │ │ │ │ ├── _.gitignore │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.ts │ │ │ │ │ ├── router.ts │ │ │ │ │ └── service/ │ │ │ │ │ └── Test.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ ├── config.local.ts │ │ │ │ │ ├── config.prod.ts │ │ │ │ │ └── plugin.ts │ │ │ │ ├── package.json │ │ │ │ ├── test/ │ │ │ │ │ └── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.test.ts │ │ │ │ │ └── service/ │ │ │ │ │ └── Test.test.ts │ │ │ │ ├── tsconfig.json │ │ │ │ └── typings/ │ │ │ │ └── index.d.ts │ │ │ ├── egg3-tegg/ │ │ │ │ ├── .vscode/ │ │ │ │ │ └── launch.json │ │ │ │ ├── README.md │ │ │ │ ├── _.gitignore │ │ │ │ ├── app/ │ │ │ │ │ └── module/ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ ├── home.ts │ │ │ │ │ │ │ └── user.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ └── foo/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── package.json │ │ │ │ │ └── service/ │ │ │ │ │ └── HelloService.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ ├── config.local.ts │ │ │ │ │ ├── config.prod.ts │ │ │ │ │ ├── config.unittest.ts │ │ │ │ │ └── plugin.ts │ │ │ │ ├── package.json │ │ │ │ ├── test/ │ │ │ │ │ └── app/ │ │ │ │ │ └── module/ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ ├── home.test.ts │ │ │ │ │ │ └── user.test.ts │ │ │ │ │ └── foo/ │ │ │ │ │ └── service/ │ │ │ │ │ └── HelloService.test.ts │ │ │ │ └── tsconfig.json │ │ │ ├── simple-ts/ │ │ │ │ ├── README.md │ │ │ │ ├── _.gitignore │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.ts │ │ │ │ │ ├── router.ts │ │ │ │ │ └── service/ │ │ │ │ │ └── Test.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.ts │ │ │ │ │ ├── config.local.ts │ │ │ │ │ ├── config.prod.ts │ │ │ │ │ └── plugin.ts │ │ │ │ ├── package.json │ │ │ │ ├── test/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.test.ts │ │ │ │ │ │ └── service/ │ │ │ │ │ │ └── Test.test.ts │ │ │ │ │ └── setup.ts │ │ │ │ ├── tsconfig.json │ │ │ │ ├── typings/ │ │ │ │ │ └── index.d.ts │ │ │ │ └── vitest.config.ts │ │ │ └── tegg/ │ │ │ ├── .vscode/ │ │ │ │ └── launch.json │ │ │ ├── README.md │ │ │ ├── _.gitignore │ │ │ ├── app/ │ │ │ │ └── module/ │ │ │ │ ├── bar/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ ├── home.ts │ │ │ │ │ │ └── user.ts │ │ │ │ │ └── package.json │ │ │ │ └── foo/ │ │ │ │ ├── index.ts │ │ │ │ ├── package.json │ │ │ │ └── service/ │ │ │ │ └── HelloService.ts │ │ │ ├── config/ │ │ │ │ ├── config.default.ts │ │ │ │ ├── config.local.ts │ │ │ │ ├── config.prod.ts │ │ │ │ ├── config.unittest.ts │ │ │ │ └── plugin.ts │ │ │ ├── package.json │ │ │ ├── test/ │ │ │ │ ├── app/ │ │ │ │ │ └── module/ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ ├── home.test.ts │ │ │ │ │ │ └── user.test.ts │ │ │ │ │ └── foo/ │ │ │ │ │ └── service/ │ │ │ │ │ └── HelloService.test.skip.ts │ │ │ │ └── setup.ts │ │ │ ├── tsconfig.json │ │ │ └── vitest.config.ts │ │ ├── test/ │ │ │ ├── __snapshots__/ │ │ │ │ └── cli.test.ts.snap │ │ │ └── cli.test.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ ├── egg-bin/ │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bin/ │ │ │ ├── dev.cmd │ │ │ ├── dev.js │ │ │ ├── run.cmd │ │ │ └── run.js │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── start-cluster.cjs │ │ │ └── start-cluster.mjs │ │ ├── src/ │ │ │ ├── baseCommand.ts │ │ │ ├── commands/ │ │ │ │ ├── cov.ts │ │ │ │ ├── dev.ts │ │ │ │ └── test.ts │ │ │ ├── index.ts │ │ │ ├── types.ts │ │ │ └── utils.ts │ │ ├── test/ │ │ │ ├── coffee.ts │ │ │ ├── commands/ │ │ │ │ ├── cov.test.ts │ │ │ │ ├── debug.test.ts │ │ │ │ ├── dev/ │ │ │ │ │ ├── commonjs-app.test.ts │ │ │ │ │ ├── detect-port.test.ts │ │ │ │ │ └── esm-app.test.ts │ │ │ │ ├── dev.test.ts │ │ │ │ └── test.test.ts │ │ │ ├── egg-bin.test.ts │ │ │ ├── fixtures/ │ │ │ │ ├── bin/ │ │ │ │ │ └── fake_mocha.js │ │ │ │ ├── custom-framework-app/ │ │ │ │ │ └── package.json │ │ │ │ ├── custom-framework-app-my-egg-bin/ │ │ │ │ │ └── package.json │ │ │ │ ├── demo-app/ │ │ │ │ │ └── package.json │ │ │ │ ├── demo-app-commonjs/ │ │ │ │ │ └── package.json │ │ │ │ ├── demo-app-debug/ │ │ │ │ │ └── package.json │ │ │ │ ├── demo-app-detect-port/ │ │ │ │ │ └── package.json │ │ │ │ ├── demo-app-esm/ │ │ │ │ │ ├── hook.js │ │ │ │ │ └── package.json │ │ │ │ ├── demo-app-esm-dev/ │ │ │ │ │ ├── hook.js │ │ │ │ │ └── package.json │ │ │ │ ├── egg-require/ │ │ │ │ │ └── package.json │ │ │ │ ├── egg-revert/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── index.test.js │ │ │ │ ├── egg-revert-cov/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── index.test.js │ │ │ │ ├── egg-revert-dev/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── index.test.js │ │ │ │ ├── example/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── example-declarations/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ └── plugin.js │ │ │ │ │ ├── jsconfig.json │ │ │ │ │ └── package.json │ │ │ │ ├── example-port/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── app.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ ├── example-ts/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.ts │ │ │ │ │ │ ├── module/ │ │ │ │ │ │ │ ├── foo.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── router.ts │ │ │ │ │ ├── app.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── typings/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── global.d.ts │ │ │ │ │ └── index.d.ts │ │ │ │ ├── example-ts-cluster/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.ts │ │ │ │ │ │ └── router.ts │ │ │ │ │ ├── app.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── typings/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── global.d.ts │ │ │ │ │ └── index.d.ts │ │ │ │ ├── example-ts-cluster-client/ │ │ │ │ │ ├── agent.ts │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.ts │ │ │ │ │ │ └── router.ts │ │ │ │ │ ├── app.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── registry_client.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── example-ts-cov/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.ts │ │ │ │ │ │ ├── module/ │ │ │ │ │ │ │ ├── foo.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── router.ts │ │ │ │ │ ├── app.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── typings/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── global.d.ts │ │ │ │ │ └── index.d.ts │ │ │ │ ├── example-ts-custom-compiler/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── index.test.ts │ │ │ │ ├── example-ts-custom-compiler-2/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ └── package.json │ │ │ │ ├── example-ts-error-stack/ │ │ │ │ │ ├── app.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── example-ts-error-stack-mixed/ │ │ │ │ │ ├── app.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── index.test.js │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── example-ts-pkg/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.ts │ │ │ │ │ ├── app.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── example-ts-simple/ │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ └── package.json │ │ │ │ ├── example-ts-test/ │ │ │ │ │ ├── agent.js │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ │ └── home.ts │ │ │ │ │ │ ├── module/ │ │ │ │ │ │ │ ├── foo.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── router.ts │ │ │ │ │ ├── app.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── index.test.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── typings/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── controller/ │ │ │ │ │ │ └── index.d.ts │ │ │ │ │ ├── global.d.ts │ │ │ │ │ └── index.d.ts │ │ │ │ ├── mocha-test/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ ├── bar.test.js │ │ │ │ │ └── foo.test.js │ │ │ │ ├── mocha-test-ts-esm/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ ├── bar.test.ts │ │ │ │ │ │ └── foo.test.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── mocha-test-ts-esm-cov/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ ├── bar.test.ts │ │ │ │ │ │ └── foo.test.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── my-egg-bin/ │ │ │ │ │ ├── bin/ │ │ │ │ │ │ ├── run.cmd │ │ │ │ │ │ └── run.js │ │ │ │ │ ├── cmd/ │ │ │ │ │ │ ├── cov.ts │ │ │ │ │ │ ├── dev.ts │ │ │ │ │ │ ├── nsp.ts │ │ │ │ │ │ └── test.ts │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── framework.ts │ │ │ │ │ └── package.json │ │ │ │ ├── no-exit/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── foo.test.js │ │ │ │ ├── prerequire/ │ │ │ │ │ └── test/ │ │ │ │ │ └── index.test.js │ │ │ │ ├── require-script.cjs │ │ │ │ ├── require-script.mjs │ │ │ │ ├── setup-js/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ ├── .setup.js │ │ │ │ │ └── a.test.js │ │ │ │ ├── setup-ts/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ ├── .setup.ts │ │ │ │ │ │ └── a.test.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── test path with space/ │ │ │ │ │ ├── example-app/ │ │ │ │ │ │ ├── app.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── example-declarations/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── example-egg-require/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── example-import-script/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── example-require-script/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── require script.cjs │ │ │ │ │ ├── require script.mjs │ │ │ │ │ └── test-files/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── t e s t.test.js │ │ │ │ ├── test-demo-app/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── a.test.js │ │ │ │ ├── test-demo-app-esm/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── test/ │ │ │ │ │ │ └── a.test.js │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── test-files/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── subdir/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ ├── bar.js │ │ │ │ │ │ │ └── subdir/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── view/ │ │ │ │ │ │ └── subdir/ │ │ │ │ │ │ └── home.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ ├── config.prod.js │ │ │ │ │ │ ├── plugin.js │ │ │ │ │ │ └── proxy.js │ │ │ │ │ ├── docs/ │ │ │ │ │ │ └── home.js │ │ │ │ │ ├── example/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── examples/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── ignore/ │ │ │ │ │ │ └── a.js │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── a.js │ │ │ │ │ ├── mocks/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── mocks_data/ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ ├── a.js │ │ │ │ │ ├── a.test.js │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── b.test.js │ │ │ │ │ ├── fail.js │ │ │ │ │ ├── ignore.test.js │ │ │ │ │ └── no-timeouts.test.js │ │ │ │ ├── test-files-cov/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── subdir/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ ├── bar.js │ │ │ │ │ │ │ └── subdir/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── view/ │ │ │ │ │ │ └── subdir/ │ │ │ │ │ │ └── home.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ ├── config.prod.js │ │ │ │ │ │ ├── plugin.js │ │ │ │ │ │ └── proxy.js │ │ │ │ │ ├── docs/ │ │ │ │ │ │ └── home.js │ │ │ │ │ ├── example/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── examples/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── ignore/ │ │ │ │ │ │ └── a.js │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── a.js │ │ │ │ │ ├── mocks/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── mocks_data/ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ ├── a.js │ │ │ │ │ ├── a.test.js │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── b.test.js │ │ │ │ │ ├── fail.js │ │ │ │ │ ├── ignore.test.js │ │ │ │ │ └── no-timeouts.test.js │ │ │ │ ├── test-files-egg-bin/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── subdir/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ ├── bar.js │ │ │ │ │ │ │ └── subdir/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── view/ │ │ │ │ │ │ └── subdir/ │ │ │ │ │ │ └── home.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ ├── config.prod.js │ │ │ │ │ │ ├── plugin.js │ │ │ │ │ │ └── proxy.js │ │ │ │ │ ├── docs/ │ │ │ │ │ │ └── home.js │ │ │ │ │ ├── example/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── examples/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── ignore/ │ │ │ │ │ │ └── a.js │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── a.js │ │ │ │ │ ├── mocks/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── mocks_data/ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ ├── a.js │ │ │ │ │ ├── a.test.js │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── b.test.js │ │ │ │ │ ├── fail.js │ │ │ │ │ ├── ignore.test.js │ │ │ │ │ └── no-timeouts.test.js │ │ │ │ ├── test-files-glob/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ ├── index.test.js │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── sub.test.js │ │ │ │ │ └── no-load.js │ │ │ │ ├── test-files-my-egg-bin/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── subdir/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ ├── bar.js │ │ │ │ │ │ │ └── subdir/ │ │ │ │ │ │ │ └── home.js │ │ │ │ │ │ └── view/ │ │ │ │ │ │ └── subdir/ │ │ │ │ │ │ └── home.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── config.default.js │ │ │ │ │ │ ├── config.prod.js │ │ │ │ │ │ ├── plugin.js │ │ │ │ │ │ └── proxy.js │ │ │ │ │ ├── docs/ │ │ │ │ │ │ └── home.js │ │ │ │ │ ├── example/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── examples/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── ignore/ │ │ │ │ │ │ └── a.js │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── a.js │ │ │ │ │ ├── mocks/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── mocks_data/ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ └── foo.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ ├── a.js │ │ │ │ │ ├── a.test.js │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── b.test.js │ │ │ │ │ ├── fail.js │ │ │ │ │ ├── ignore.test.js │ │ │ │ │ └── no-timeouts.test.js │ │ │ │ ├── test-unhandled-rejection/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── test/ │ │ │ │ │ └── a.test.js │ │ │ │ └── ts/ │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ ├── package.json │ │ │ │ ├── test/ │ │ │ │ │ ├── a.test.js │ │ │ │ │ ├── sub.ts │ │ │ │ │ └── typescript.test.ts │ │ │ │ └── tsconfig.json │ │ │ ├── helper.ts │ │ │ ├── my-egg-bin.test.ts │ │ │ └── ts.test.ts │ │ ├── tsconfig.json │ │ ├── tsdown.config.ts │ │ └── vitest.config.ts │ └── scripts/ │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── bin/ │ │ ├── dev.cmd │ │ ├── dev.js │ │ ├── run.cmd │ │ └── run.js │ ├── package.json │ ├── scripts/ │ │ ├── start-cluster.cjs │ │ └── start-cluster.mjs │ ├── src/ │ │ ├── baseCommand.ts │ │ ├── commands/ │ │ │ ├── start.ts │ │ │ └── stop.ts │ │ ├── helper.ts │ │ ├── index.ts │ │ └── types.ts │ ├── test/ │ │ ├── egg-scripts.test.ts │ │ ├── fixtures/ │ │ │ ├── cluster-config/ │ │ │ │ ├── app/ │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── config.prod.js │ │ │ │ └── package.json │ │ │ ├── custom-node-dir/ │ │ │ │ ├── .node/ │ │ │ │ │ └── bin/ │ │ │ │ │ └── foo │ │ │ │ ├── app/ │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── egg-app/ │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── egg-revert/ │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── egg-scripts-config/ │ │ │ │ ├── app.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── egg-scripts-node-options/ │ │ │ │ ├── app.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── example/ │ │ │ │ ├── app/ │ │ │ │ │ └── router.js │ │ │ │ ├── app.js │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── config.pre.js │ │ │ │ └── package.json │ │ │ ├── example-stop/ │ │ │ │ ├── app/ │ │ │ │ │ └── router.js │ │ │ │ ├── app.js │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── config.pre.js │ │ │ │ └── package.json │ │ │ ├── ipc-bin/ │ │ │ │ └── start.js │ │ │ ├── mock-egg/ │ │ │ │ ├── index.ts │ │ │ │ └── package.json │ │ │ ├── pkg-config/ │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── plugin.js │ │ │ │ ├── inject1.js │ │ │ │ ├── inject2.js │ │ │ │ └── package.json │ │ │ ├── pkg-config-esm/ │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── plugin.js │ │ │ │ ├── inject1.js │ │ │ │ ├── inject2.js │ │ │ │ └── package.json │ │ │ ├── pkg-config-sourcemap/ │ │ │ │ ├── config/ │ │ │ │ │ ├── config.default.js │ │ │ │ │ └── plugin.js │ │ │ │ └── package.json │ │ │ ├── status/ │ │ │ │ ├── app.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── stop-timeout/ │ │ │ │ ├── app/ │ │ │ │ │ └── router.js │ │ │ │ ├── app.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ └── package.json │ │ │ ├── subdir-as-basedir/ │ │ │ │ ├── base-dir/ │ │ │ │ │ ├── app/ │ │ │ │ │ │ └── router.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ └── config.default.js │ │ │ │ │ └── package.json │ │ │ │ └── package.json │ │ │ ├── trace-warnings/ │ │ │ │ ├── app.js │ │ │ │ └── package.json │ │ │ ├── ts/ │ │ │ │ ├── app/ │ │ │ │ │ ├── controller/ │ │ │ │ │ │ └── home.ts │ │ │ │ │ └── router.js │ │ │ │ ├── config/ │ │ │ │ │ └── config.default.js │ │ │ │ ├── package.json │ │ │ │ └── tsconfig.json │ │ │ └── ts-pkg/ │ │ │ ├── app/ │ │ │ │ ├── controller/ │ │ │ │ │ └── home.ts │ │ │ │ └── router.js │ │ │ ├── config/ │ │ │ │ └── config.default.js │ │ │ ├── package.json │ │ │ └── tsconfig.json │ │ ├── start-without-demon-1.test.ts │ │ ├── start-without-demon-2.test.ts │ │ ├── start-without-demon-3.test.ts │ │ ├── start-without-demon-4.test.ts │ │ ├── start-without-demon-5.test.ts │ │ ├── start.test.ts │ │ ├── stop.test.ts │ │ ├── ts.test.ts │ │ └── utils.ts │ ├── tsconfig.json │ └── vitest.config.ts ├── tsconfig.json ├── tsdown.config.ts ├── vercel.json └── vitest.config.ts ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms open_collective: eggjs # Replace with a single Open Collective username # github: [ fengmk2, popomore, atian25, dead_horse ] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] # patreon: # Replace with a single Patreon username # ko_fi: # Replace with a single Ko-fi username # tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel # community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry # liberapay: # Replace with a single Liberapay username # issuehunt: # Replace with a single IssueHunt username # otechie: # Replace with a single Otechie username # custom: # Replace with a single custom sponsorship URL ================================================ FILE: .github/ISSUE_TEMPLATE/bug-report-cn.yml ================================================ name: 🐛 Egg Bug 反馈 description: 如发现 Egg 框架中的 Bug,请及时在此汇报。 labels: [bug] body: - type: textarea attributes: label: | 在此输入你需要反馈的 Bug 具体信息(Bug in Detail): placeholder: | 1. 我做了什么。 2. 我的预期值。 3. 我实际得到的结果。 4. 可以的话,请提供一些截图、视频作为附件以复现症状。 validations: required: true - type: textarea attributes: label: 可复现问题的仓库地址(Reproduction Repo) description: | 1. 请使用 `npm init egg --type=simple bug` 创建最小可复现问题的代码。 2. 在 GitHub 中上传该代码项目,并在此处粘贴地址。你也可以直接将你的仓库压缩为 zip 文件直接以附件形式提交。 placeholder: | https://github.com/YOUR_REPOSITORY_URL validations: required: true - type: input attributes: label: Node 版本号: description: | 你的当前复现问题的 Node 版本号: placeholder: | 使用 “node -v” 命令,在控制台得到版本号(例如:v8.5.0)。 validations: required: true - type: input attributes: label: Eggjs 版本号: description: | 你的当前复现问题 Eggjs 版本号: placeholder: | 请直接在“package.json”中查阅(例如:3.1.0)。 validations: required: true - type: input attributes: label: '相关插件名称与版本号(PlugIn and Name):' description: | 插件名称以及版本号: placeholder: | 请直接在“package.json”中查阅(例如:egg-mysql,3.1.1)。 validations: required: true - type: input attributes: label: '操作平台与版本号(Platform and Version):' description: | 你的操作平台与版本号: placeholder: | Windows 10 专业版(21H2) validations: required: true ================================================ FILE: .github/ISSUE_TEMPLATE/bug-report.yml ================================================ name: 🐛 Bug Report For Eggjs description: Report an issue if something isn't working as expected 🤔. labels: [bug] body: - type: textarea attributes: label: | Your detail info about the Bug: placeholder: | 1. What I did. 2. What I expected to happen. 3. What I actually got. 4. If possible, images/videos as attachments are welcomed to show the bug. validations: required: true - type: textarea attributes: label: Reproduction Repo description: | 1. Please use `npm init egg --type=simple bug` to create your smallest repo. 2. Submit it in the GitHub and paste your URL here. You can also attach your zip file directly. placeholder: | https://github.com/YOUR_REPOSITORY_URL or your zip file validations: required: true - type: input attributes: label: Node Version description: | What's your Node's version? placeholder: | Use "node -v" in your console to get it (e.g: v8.5.0). validations: required: true - type: input attributes: label: Eggjs Version description: | What's your Eggjs version? placeholder: | See it directly in your "package.json" file (e.g: 3.1.0) validations: required: true - type: input attributes: label: Plugin Name and its version description: | What's your plugin's name and version? placeholder: | See them directly in your "package.json" file (e.g: egg-mysql, 3.1.1) validations: required: true - type: input attributes: label: Platform and its version description: | What's your platform and its version? placeholder: | Windows 10 Professional(21H2) validations: required: true ================================================ FILE: .github/ISSUE_TEMPLATE/feature-request-cn.yml ================================================ name: 💡 我有一个新点子 description: 我对 Eggjs 框架有一个新的想法(或许我想来实现他)…… labels: [feature request] body: - type: markdown attributes: value: | 对于 Egg.js 框架,你有一个新的想法? 不过在提交你的新点子之前,麻烦请检阅一下是否之前的帖子中有类似重复的内容。 - type: textarea attributes: label: 请详细告知你的新点子(Nice Ideas): placeholder: | 1. 您期望能够实现什么功能。 2. 您的理由(如:我一直被什么问题困扰……)。 如果方便的话,请提供截屏或者视频等详细信息。 3. 我能够做一些什么(最好是能提供一些伪代码帮助实现)。 validations: required: true ================================================ FILE: .github/ISSUE_TEMPLATE/feature-request.yml ================================================ name: 💡 Feature Request For Eggjs description: I have a suggestion (and may want to implement it)! labels: [feature request] body: - type: markdown attributes: value: | You have an idea how to improve the Eggjs? Before submitting, please have a look at the existing issues if there's already something related to your suggestion. - type: textarea attributes: label: 'Enter your suggestions in details:' placeholder: | 1. What I expected to happen? 2. Your reason (e.g: I'm always frustrated with...). If possible, images or videos are welcome. 3. What I plan to do (Optional but better in pseudo codes). validations: required: true ================================================ FILE: .github/ISSUE_TEMPLATE/rfc-cn.yml ================================================ name: 🚀 RFC 提案 description: 我对 Eggjs 框架技术架构功能层面上有重大新增、改进等。 labels: [RFC proposal] body: - type: markdown attributes: value: | 对于 Eggjs 框架功能你是否有重大的新增或改进之类的想法? 不过在提交你的新想法或方案之前,麻烦请检阅一下是否之前的帖子中有类似重复的内容。 - type: textarea attributes: label: 请详细告知你的新解决思路(Your new RFCs): placeholder: | 1. 描述你希望解决的问题的现状,附上相关的 issue 地址。 如果方便的话,请提供截屏或者视频等详细信息。 2. 我能够做一些什么(譬如具体相关的的 API,描述思路,最好是能提供一些伪代码帮助实现)。 validations: required: true - type: checkboxes attributes: label: '跟进类型(Follow-up Types):' description: 此议案跟进类型情况: options: - label: 这是某个任务 - label: 这是一个具体的 PR 的地址(URL) ================================================ FILE: .github/ISSUE_TEMPLATE/rfc.yml ================================================ name: 🚀 RFC Proposals description: I've got a major improvement (or idea) on the technical architecture of the Eggjs framework. labels: [RFC proposal] body: - type: markdown attributes: value: | Any better new/changable functions for the core technical architecture of the Egg.js framework? But please make sure there's no duplicated issues related to your idea before submitting. - type: textarea attributes: label: 'Please describe your idea in detail:' placeholder: | 1. Describe the current situation of the problem you want to solve, and attach the related issue address. If it is possible, please provide screenshots or videos in detail. 2. What can I do (related APIs, Your ideas, better to provide some pseudo code to help implementations). validations: required: true - type: checkboxes attributes: label: Follow-up type description: The type of the RFC proposals. options: - label: Some Task - label: PR URL(s) validations: required: true ================================================ FILE: .github/actions/clone/action.yml ================================================ name: 'Clone Repositories' description: 'Clone self and upstream repositories' inputs: ecosystem-ci-project: description: 'The ecosystem ci project to clone' required: false default: '' runs: using: 'composite' steps: - name: Output ecosystem ci project hash shell: bash id: ecosystem-ci-project-hash if: ${{ inputs.ecosystem-ci-project != '' }} run: | node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('./ecosystem-ci/repo.json', 'utf8')); const project = data['${{ inputs.ecosystem-ci-project }}']; console.log('ECOSYSTEM_CI_PROJECT_HASH=' + project.hash);" >> $GITHUB_OUTPUT node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('./ecosystem-ci/repo.json', 'utf8')); const project = data['${{ inputs.ecosystem-ci-project }}']; console.log('ECOSYSTEM_CI_PROJECT_REPOSITORY=' + project.repository.replace('https://github.com/', '').replace('.git', ''));" >> $GITHUB_OUTPUT - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 if: ${{ inputs.ecosystem-ci-project != '' }} with: repository: ${{ steps.ecosystem-ci-project-hash.outputs.ECOSYSTEM_CI_PROJECT_REPOSITORY }} path: ecosystem-ci/${{ inputs.ecosystem-ci-project }} ref: ${{ steps.ecosystem-ci-project-hash.outputs.ECOSYSTEM_CI_PROJECT_HASH }} ================================================ FILE: .github/copilot-instructions.md ================================================ # Eggjs Framework - GitHub Copilot Development Instructions **Always reference these instructions first and fallback to search or additional context gathering only when you encounter unexpected information that does not match the information provided here.** ## Overview Eggjs is a progressive Node.js framework for building enterprise-class server-side applications. Built on top of Koa.js, it provides a plugin system, conventions over configuration, and enterprise-grade features like clustering, logging, and security. This is a **pnpm monorepo** with multiple packages using pnpm workspaces and catalog mode for centralized dependency management. ## Prerequisites and Environment Setup - **Node.js >= 20.19.0 required** - This is a hard requirement - Enable pnpm first: `corepack enable pnpm` (installs pnpm v10.16.0) - **NEVER CANCEL** any build or test commands - they can take several minutes to complete ## Bootstrap and Build Process **Always run these commands in sequence after fresh clone:** ```bash # 1. Enable pnpm (required first) corepack enable pnpm # 2. Install all dependencies - takes ~63 seconds. NEVER CANCEL. Set timeout to 120+ seconds. pnpm install # 3. Build all packages - takes ~14 seconds. NEVER CANCEL. Set timeout to 60+ seconds. pnpm run build # 4. Run linting (optional but recommended) - takes ~2 seconds pnpm run lint ``` ## Monorepo Structure ### Key Packages (all in `packages/` directory) - **`packages/egg/`** - Main Eggjs framework (TypeScript, uses tsdown for builds) - **`packages/core/`** - Core plugin framework - **`packages/utils/`** - Utility functions - **`packages/mock/`** - Testing utilities - **`packages/cluster/`** - Cluster management - **`packages/koa/`** - Koa web framework - **`packages/supertest/`** - HTTP testing utilities - **`packages/extend2/`** - Object extension utility ### Supporting Directories - **`examples/`** - Two example apps: `helloworld-commonjs` and `helloworld-typescript` (currently have runtime issues) - **`site/`** - Documentation website built with Dumi ## Essential Commands and Timing ### Build Commands - `pnpm run build` - **Build all packages (~14 seconds). NEVER CANCEL. Set timeout to 60+ seconds.** - `pnpm run clean` - Clean all dist directories ### Testing Commands - `pnpm run test` - **Run all tests (~2 minutes). NEVER CANCEL. Set timeout to 180+ seconds.** - `pnpm run test:cov` - **Run tests with coverage (~2 minutes). NEVER CANCEL. Set timeout to 180+ seconds.** - `pnpm run ci` - **Run test coverage + build (~2.1 minutes). NEVER CANCEL. Set timeout to 180+ seconds.** ### Linting Commands - `pnpm run lint` - Run oxlint across all packages (~2 seconds) ### Documentation Commands - `pnpm run site:dev` - Start documentation dev server at http://localhost:8000 - `cd site && pnpm run build:skip` - **Build documentation site (~24 seconds). NEVER CANCEL. Set timeout to 60+ seconds.** ### Example Applications (Currently Not Working) - `pnpm run example:commonjs` - Start CommonJS example (has runtime issues) - `pnpm run example:typescript` - Start TypeScript example (has runtime issues) ## Package-Specific Commands Run commands for specific packages using `pnpm --filter=`: ```bash # Examples pnpm --filter=egg run test pnpm --filter=@eggjs/core run build pnpm --filter=site run dev ``` ## Development Workflow ### 1. Making Changes - Always build packages first: `pnpm run build` - Work primarily in `packages/egg/src/` for core framework features - Use TypeScript throughout - all packages are TypeScript-based - Follow the existing directory conventions in `packages/egg/src/`: - `lib/` - Core classes (Application, Agent, EggApplicationCore) - `app/extend/` - Framework extensions (context, helper, request, response) - `config/` - Default configurations and plugins - `lib/core/` - Core components (httpclient, logger, messenger) - `lib/loader/` - Application loaders ### 2. Validation Steps **Always perform these validation steps after making changes:** ```bash # 1. Build all packages (required) pnpm run build # 2. Run linting pnpm run lint # 3. Run tests (some failures are expected in fresh environment) pnpm run test # 4. Test documentation site pnpm run site:dev ``` ### 3. Testing Strategy - **All packages use Vitest for testing** - this is the standard test runner - Test files follow pattern: `test/**/*.test.ts` - Use `import { describe, it } from 'vitest'` for test functions - Use Node.js built-in `assert` module for assertions - Create test fixtures in `packages/egg/test/fixtures/apps/` for scenario testing ## Key Framework Concepts ### Architecture - **EggApplicationCore** - Base application class with core functionality - **Application** - Main app class for worker processes - **Agent** - Agent process class for background tasks - **Context** - Extended Koa context with Egg-specific features - **BaseContextClass** - Base for controllers, services, subscriptions ### Loading Convention (Automatic Discovery Order) 1. Plugin system 2. Configurations 3. Application/Request/Response/Context extensions 4. Custom loaders 5. Services 6. Middlewares 7. Controllers 8. Router ### Cluster vs Single Mode - **Cluster Mode** (default) - Multi-process with master, agent, and worker processes - **Single Mode** - Single process for development/testing ## Working with TypeScript - All packages use strict TypeScript mode - Uses tsdown for unbundled ESM builds (preserves file structure) - Each package has `tsdown.config.ts` for build configuration - **All sub-project tsconfig.json files MUST extend from root:** `"extends": "../../tsconfig.json"` - Root tsconfig.json includes all packages in `references` array ## pnpm Workspace & Catalog Dependencies - Dependencies defined in `pnpm-workspace.yaml` catalog section - Reference catalog entries: `"package-name": "catalog:"` - Internal workspace dependencies: `"package-name": "workspace:*"` - This ensures consistent versions across all packages ## Common Issues and Troubleshooting ### Test Failures - Some tests may fail in fresh environments - this is normal - Focus on fixing only failures related to your changes - Examples may have runtime issues - don't use them for validation ### Build Issues - Always run `pnpm run build` after making changes - TypeScript compilation errors will show clearly - Build warnings are generally acceptable ### ESM/CommonJS Issues - Framework supports both ESM and CommonJS - Main package exports both formats - If you see "ERR_UNKNOWN_FILE_EXTENSION" errors, ensure packages are built first ## File Locations Reference ### Key Configuration Files - `pnpm-workspace.yaml` - Workspace and catalog configuration - `package.json` - Root monorepo scripts and devDependencies - `packages/egg/package.json` - Main framework package configuration - `packages/egg/tsdown.config.ts` - Build configuration - `packages/egg/src/config/plugin.ts` - Built-in plugin configurations - `packages/egg/src/config/config.default.ts` - Default framework configuration ### Important Source Files - `packages/egg/src/lib/application.ts` - Main Application class - `packages/egg/src/lib/agent.ts` - Agent process manager - `packages/egg/src/lib/egg.ts` - Core EggApplicationCore - `packages/egg/src/lib/start.ts` - Application startup logic - `packages/egg/src/lib/loader/` - Convention-based loaders ### Build Outputs - `packages/*/dist/` - Built JavaScript and TypeScript definitions - `site/dist/` - Built documentation site ## Validation Scenarios After making changes, always verify: 1. **Build Success**: `pnpm run build` completes without errors 2. **Linting Passes**: `pnpm run lint` shows no new errors 3. **Documentation Loads**: `pnpm run site:dev` starts successfully and site loads at http://localhost:8000 4. **Tests Run**: `pnpm run test` executes (some failures expected, focus on your changes) **Remember**: This is a complex enterprise framework. Always build first, validate incrementally, and focus on the core packages (`egg`, `core`, `utils`) for most development work. ## Commit Message Format **CRITICAL: All commits MUST follow the [Angular Commit Message Format](https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines) as specified in CONTRIBUTING.md.** ### Required Format Structure ``` ():