{"_id":"@sunshj/server","_rev":"52-4a27d36fa2e5b8db57baafcc3ee74395","name":"@sunshj/server","dist-tags":{"latest":"0.1.0-beta.46"},"versions":{"0.0.1":{"name":"@sunshj/server","version":"0.0.1","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.0.1","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"87f7d08c694cb5ececb56f6dcf9ab5321e97defe","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.0.1.tgz","fileCount":5,"integrity":"sha512-JB5zE3dSFAvcRu2t4Y3VFtDnnVEcKmjIuyTeLIPjDflLm54s+Vqwo75NwKbHwydZsX5zKosat+tDkXSOeK0Eyw==","signatures":[{"sig":"MEYCIQDDO2NaUvlW0zju2yZCAtUHH4mtGfLnYmjs8sw8c+vrzwIhAN3ccbGJQSFgG9ph2JaXv3NbIBvTQ1n8af1V9g2kQdu5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54057},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"0056bbbfcc14bf4f8df0b86066466804070856cd","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","prettier":"^3.3.3","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.0.1_1759069945496_0.3824821743813507","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@sunshj/server","version":"0.0.2","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.0.2","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"5a798b55d7f41993a6ff7bfabf060c8da0a031db","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.0.2.tgz","fileCount":5,"integrity":"sha512-rC30dKPxZtKh01BTVv3NWq7h09rAeNeZ76yhsOZiLL7MpxBmmHjl/CxJMcx+LtrBCC3lq5tpMUsXgc9wDGsEKA==","signatures":[{"sig":"MEQCIGNi9Xb6ckdyjCUYGQ9Vo0dyPhM7qnyQFFfh2/yN61iiAiBue+UvJSZ8YVf8fWDl3MO90UYuK30bqHnWfK9QbMWymA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48408},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"7f19c62de26ef6c6882e4a5f85b76c84a9132a38","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","prettier":"^3.3.3","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.0.2_1759074288145_0.4371854085033786","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@sunshj/server","version":"0.0.3","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.0.3","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"f8bf8f9d14d30bfe6b4b95609895299ca44e40de","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.0.3.tgz","fileCount":5,"integrity":"sha512-ezrO4mIWxYew648HfNQW+GuaRAvCYBSwH1B05hL7W7jHgFOCy8O7DheFSt/d3lL4XKC/pUFADeFyJF/FlQeOvg==","signatures":[{"sig":"MEUCIQDYHU7N+TM4rckgu6dUYhjXHiSgdTLSUo0KGwgVVZy8OwIgajPskoBtzi7eWoiUaPf6DzWVVyfnB2v310XZTlxV7ek=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49254},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"6959053f0bfb3c19abe94e3c4d8c268c7fa96a8c","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","prettier":"^3.3.3","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.0.3_1759075973492_0.350071621254471","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@sunshj/server","version":"0.0.4","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.0.4","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"165e2ef37aae3751eb3eba443c383c81742ebea7","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.0.4.tgz","fileCount":5,"integrity":"sha512-6sx9P5rGuThH8oF71/VRTvoeb4OXzEB+qQL3v7Tcbh4wXaQh5i4eNB3Odzhgb213K5Yn34STvKjjUeerFwgsZQ==","signatures":[{"sig":"MEYCIQCXVs2sihLr+Avjbpm3oGC87b54mGlQGOoZ9kCfU5fmNgIhALKvcHTPzYzvG06z4DqzG7yRvSTtoCKjDB8T+BcL5/nS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54224},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"89b478947edf5dd2fd6a5cd604808b7b7fa2ed17","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.0.4_1759246480981_0.17053728908603216","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@sunshj/server","version":"0.0.5","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.0.5","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"5e97d22a955e13f45488a772f77f383cae47e661","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.0.5.tgz","fileCount":5,"integrity":"sha512-0UFCrOYqa5z3jJsQ0/Wfyk4fKmZwmGf6vPhPFGTVMtq3F3S2D9AdYo78IUenGq1PXiAIuTFc4eDJ8uzk54stWw==","signatures":[{"sig":"MEYCIQD+hWRBuadQ7EorWutxrHSigQL8dKdc4qkV8s7etUiNewIhAMsoVeO7Ozz8/HgfoLga1ymphV/0GZF+454NMFtm/rIG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61210},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"12f9ee06a6ee28bcacb4fb2e41a18b9d843745ae","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.0.5_1759419118635_0.880410830372462","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@sunshj/server","version":"0.0.6","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.0.6","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"62ef6e10a92b7ad294fd550e249c5cf8633f4002","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.0.6.tgz","fileCount":5,"integrity":"sha512-vKTWVxbt9InbtSTFsyHfkCrI+4eIWKa3Md6kaCs/h/0qORFxJpZGFr7/qF9lE2p18da5lgw/Um55/HEhc4IQqA==","signatures":[{"sig":"MEUCIQDVyRb3VlSyryFdr7LFt/LwSPaA0Egs+P6YIp4FeV1xjwIgHIVl6R+ruoprFyvBP/c2gixRQmawtob8VI4ChgrEBpI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60976},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"570752c6a80d476e4c7d76f9e2579fbe54e0206f","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.0.6_1759422904852_0.9032312094730659","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.1":{"name":"@sunshj/server","version":"0.1.0-beta.1","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.1","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"c6bd931c45c6de97fb9cb35387ca08452e75454b","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.1.tgz","fileCount":5,"integrity":"sha512-HRie7S3QOGw1MbyWVYjlKXRpDvvtxz3JBa8w/cZitNoxeAwFb1RP7AqSeSKW+2Df4vL/eb5jlsuYQdYP4VjE6A==","signatures":[{"sig":"MEUCIDsQz80vwVGyZohfnbYz7aglCA3qZuAJ45c3ZMCjBpRHAiEA8qBBDhKYBMoLRi7a5BYN+idAhsMcsQphREtkPLa9yWE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":64164},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"caa785ccaaffa47a5c5d9125d64a958a47eaaf09","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.1_1761313946684_0.48975507868724844","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.2":{"name":"@sunshj/server","version":"0.1.0-beta.2","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.2","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"74201886283721185a9cf33756bc6a38f8875269","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.2.tgz","fileCount":5,"integrity":"sha512-QPWPuzUucUD1kHHnVWtRsUQ4kC/xsmhQkKsEe/KGKAEfB9CxHeGKFnXWWRZjp48IF94QBCC+XMPfUO+li0hjVw==","signatures":[{"sig":"MEUCIQDeYAQCWoJS9MIbka5wuIhzD98F3Qbn6iSffRcfTPW7WQIgV0BKlxJ1Z/Hi8BZmHLv/yf+xT7GX3aZoXpQQiIPBazI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63142},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"b1fb6d63ea426bb270b789bbf127336a04e3afed","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.2_1761315400962_0.003733590485043514","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.3":{"name":"@sunshj/server","version":"0.1.0-beta.3","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.3","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"c4eec3dcce4d6fe22cde17f6d700e115b9e14437","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.3.tgz","fileCount":9,"integrity":"sha512-3zWQmlWqOWfYKZVkwSz1N+gT8J4vy8Hv1l0OQQbW7oICNlDfJwu49j0F+KMGNy7aaHPXPdv/PDw1M42ulILGJQ==","signatures":[{"sig":"MEQCIGwA9O/zsAnEi49K51HM2r82rVYesue5J6JNwIS03diZAiBVnExE64HRJSvP6TS9jZk0Ys7FMXsfjZf8EbswAEV9ow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74012},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"}},"gitHead":"f784d264474c0772eba928de2da67054c2b2e9f4","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.3_1761413211141_0.2942070453037786","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.4":{"name":"@sunshj/server","version":"0.1.0-beta.4","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.4","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"2bcb72e09d0802b36c610549680a582f2c3370a4","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.4.tgz","fileCount":9,"integrity":"sha512-tjfy/XoTLJKgrJeDVtikA76oyJPYuacW6CQ9ZCDjrcpkpXFwodGOv/pV0SVfMrHW+xkJv8MROsn8U0ZOhenriQ==","signatures":[{"sig":"MEQCIGaEw+v/rYrq3/WHnxTi6QKnPIBc8Hn2xS06WRtfRU8OAiA69IQ24xqsNgxDPXzFJad5255ocXdpkFe6gpaU/Nu0pw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75082},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"}},"gitHead":"0a65a085a4b18c6723557a5dd87de521a3969353","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.4_1761575337993_0.33348933888961985","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.5":{"name":"@sunshj/server","version":"0.1.0-beta.5","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.5","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"3f9cd47fe574a2bacca92c4180c0da5f9854ef86","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.5.tgz","fileCount":9,"integrity":"sha512-44hPtWvE1embPXlAqwUssR8gu9YphZv/G7bqRJHMs2KOk+NY6i2Rq+W/Dp/XatPoVtqf23ivBL47vhG5uaK9gQ==","signatures":[{"sig":"MEYCIQC3dbl4mal2YgkmqiA7VkkTt0s6p0oXzbnXCfXfxsoRrQIhAOaZ+jAa96dnKbllqwI1dKfObzsaVsdVA2ToM6V1Yx31","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85145},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"}},"gitHead":"00bd21c118758d53636d27397e4165255232f6f5","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.5_1761976497624_0.7428637706285754","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.6":{"name":"@sunshj/server","version":"0.1.0-beta.6","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.6","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"6a05147f478697ba9facec55be42746382dbb858","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.6.tgz","fileCount":9,"integrity":"sha512-oriNoDgFu81o90MvtUvIb0fObMRrpLlM/uDBufHEvPsNMcg+TyuVUJjqnKNk59Ku0T75x4lyC0FRjxXFSGl9Og==","signatures":[{"sig":"MEUCIQD6DI+hgrgjRuOS1ABZR/FWe5yQiAEntMThSqnSBOSR+gIgZvSz9xDcqqWyybnfRISIG8wOo21RWSJWgqznQ4+MBvo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85335},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"}},"gitHead":"669071ff49e7cf6be3795d6f1dac1ce1e22c75c0","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.6_1762000246607_0.7717858862031133","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.7":{"name":"@sunshj/server","version":"0.1.0-beta.7","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.7","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"8332d464aa39b31961454be10aef0ef2de7bdaa5","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.7.tgz","fileCount":15,"integrity":"sha512-9z5LCwmqpYFYOQYRCTDeDZqzXKhEI1shkbrx3CMGRuZYlVm5icHOQTV9OfKp2igGHJIPg7RtJ2u2ERb7XPYnpw==","signatures":[{"sig":"MEQCIDrjKwT1ygy5pdrH38sAfOGCS9ERkxMldrWH+ImClP4CAiAt9QcePF2npHd1jzyLmH2zW/Iyr2Pt8wIUed7fhnsBAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128882},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"5cf771759a9f6843ca7d5c424594a16733e70806","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.7_1763266193978_0.8816071355602388","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.8":{"name":"@sunshj/server","version":"0.1.0-beta.8","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.8","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"abd58803041f2e1c258dbb90b5ada5be411d92b3","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.8.tgz","fileCount":15,"integrity":"sha512-OwsdqosX367+0Tk2MYZPTsTnAKKN4FQVpST06RLBlJ+XyWDkYSWKeVgwLsVnqHOtW0D5K/bVENHXQTb5EX8FLg==","signatures":[{"sig":"MEQCIAmiFCiEL+bRsiAN/j6JPaVeil7Bk7dckRHJCWJ3mszuAiB/tYJZcOp2kFQTNuFkBqMqn39+dlviROz4kQSo/OHUkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":129220},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"7141cd12a51d1a149c717db0e77d50cedfb84e3b","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Node.js Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.8_1763560982495_0.779628242556667","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.9":{"name":"@sunshj/server","version":"0.1.0-beta.9","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.9","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"3672ca6017f49fe4a59cd244269b4f63bf2b07a6","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.9.tgz","fileCount":16,"integrity":"sha512-jNP3VBPhCryYvTYQ2k4s2PMsoP+CUyG0trjIklwWJaONAAFtl80vcrqJHK/B01eKFxCJdI8muce5I+/MONa/ng==","signatures":[{"sig":"MEUCIFi/wSelbBWSGZYY+kM+MXn0KlGER8Vshx4p4SVOr8BvAiEAwdqS77/w1M2aCkPqGcGMdGhJ/ha03Py1IZUQ1KekRpQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134020},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"ad0f8917f2af174dde4c25b701f6df569447b54c","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.9_1763743602173_0.7181515909879881","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.10":{"name":"@sunshj/server","version":"0.1.0-beta.10","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.10","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"d2ab3dd2e56c238b21cc7c2aa7c60762ef43c82c","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.10.tgz","fileCount":16,"integrity":"sha512-NXO4LOnDE4cc7lAKqlN3OhFjrdwHoif9J8K2uJn1h9qGJMztr262wE+5P4xRxUGMfK6rO/ZLBP1gd+hWNOIeuQ==","signatures":[{"sig":"MEQCIDPqM5OzllMhRgtDcEupDzqvJClRyS8OsF9TznLQUIcsAiAR5hVUwk/C2gxM2Iru0DvOS1CFf1yN3L2ij6pmtZzYtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134123},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"473eed4bf8bb86764a3d1c8de58c50a0a1565093","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.10_1763746540266_0.7572393322728639","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.11":{"name":"@sunshj/server","version":"0.1.0-beta.11","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.11","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"accc9f64ef000d5749d0adbd70da12ad0a95f3c4","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.11.tgz","fileCount":15,"integrity":"sha512-hvNtlqeAvdl+7rbAvVwDqgEIyrHv3Gv01KrVsjRfINuFReHrj2O1h7yOqLN0ygGwko8vG/dw5zUtR7NXKU8l/g==","signatures":[{"sig":"MEUCIB3LaiMekiG4JvuuUJtGkGW1eiYO6LACI5XJtT8r3c0CAiEAnZveld81QPuhzV0XIbTvuOsjGokDcVQmSP89nCgcTBA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140023},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"8127a7f9e74db2ab9486e303509ef2fcb25ac54d","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.11_1763787433846_0.36963905259963514","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.12":{"name":"@sunshj/server","version":"0.1.0-beta.12","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.12","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"af9c19508ea61a030aaaf1a6162a708856093a6b","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.12.tgz","fileCount":15,"integrity":"sha512-HJ7043obtW7fKcdQJPGr7zH9oePb4AWOz6mebmm5N+xKTUHlMloJg312G+o2790HcynwLxMUeq2C5WfXB85erA==","signatures":[{"sig":"MEQCIBZCWUxTgPRM+yeYQTA9rlzU75zmjc0tG+vKedsXOZFiAiA13qn7Ipu3jbITtA7TFfP5dhyK2+lmF20B0xjINwhzoA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142215},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"5c93a96c5e5aa7ced03f76bd2d36b518cf89a05d","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.12_1763793439819_0.8807758616069699","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.13":{"name":"@sunshj/server","version":"0.1.0-beta.13","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.13","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"fca1bc2632ce76a3e4a952116a9c595cb64fd52f","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.13.tgz","fileCount":14,"integrity":"sha512-ww22KsE0BRRJAykskQUAgEIipGEP5DKfKFiKol9SSOpXFT47U3ULa8CeIWIgpapk5plIqKKo3qHP+krern0x0w==","signatures":[{"sig":"MEUCIEM+27HaMDluOqudirX4Bxf+eoosRy3aaXLHvl2HgcAjAiEA6H8zTFfcwTToy3psfM619wQMIZ+wRDr4vfwz4aBbqMM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":143006},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"2987201f10df0f70e9c386bda2baf4086176e9cb","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.13_1763819396269_0.7016038330271799","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.14":{"name":"@sunshj/server","version":"0.1.0-beta.14","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.14","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"50510c25592ab4240a394a1e198e728a43743a35","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.14.tgz","fileCount":15,"integrity":"sha512-SETzYAf76MT+JZ/1m1lmH6/nSc0KB2pwKSOostdQvvrm3PVDxsx0FIb/0G1HcKB5JsFOttjoazapOsjPpLb15w==","signatures":[{"sig":"MEYCIQDrDejUrviaq7tCiEGIn9yp37uoO8LZ5ZyiDRSEqtvmBgIhAPwzHesUKAdK2szJZSPh9rNWvrZsADq7vHOYhUS4KpVE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177124},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"cdbf66814a47ec640eb90aaeb35c12dd4bd644d3","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.14_1763876389663_0.22263622330520239","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.15":{"name":"@sunshj/server","version":"0.1.0-beta.15","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.15","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"5b9a24ed4b1027e56d85a86ab5be1dd50a5beb74","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.15.tgz","fileCount":15,"integrity":"sha512-EHNV3GGT9iVIzdJWASxOMWG/rfgvtbF19byhtWnjaPWvaUmvvmHyrsh3wUKnvAqNPefAxnsoyHa7eYEfHmV8ew==","signatures":[{"sig":"MEUCIQC+fPWosbbHYr+n0ZEeQcsw0xgu5N3FXKHE0e78oGcuQwIgXPGhbFL8UFGT2Me4ZJtyHds0JLFksB32RI9PQB738ms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177461},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"90fbed2f951be630a18c20fd3bdbe7fd49ff2380","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.15_1764395176066_0.010146540305522533","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.16":{"name":"@sunshj/server","version":"0.1.0-beta.16","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.16","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"ab7603634c784e5838958952825939cdbd9c6869","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.16.tgz","fileCount":15,"integrity":"sha512-RXZzTcgGCic0BOGw6Eh491k5scvZFUCOzJivFZwbUgvgfCjKWKSQox4Y36Rr2psYaaTeSzkntmyJ/NhzALINhg==","signatures":[{"sig":"MEQCIEOWssXLj6lScZmM4RWe26W7WRQfpJLb9LZ65/wgrunzAiAI1PDwFBXIedMRdks6ppE8i6S8OBdxrbjL69+LU6K+Sw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176459},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"f4459797ca27eabb8480639bb76be23d3b434888","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.16_1764487489831_0.11456011612549544","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.17":{"name":"@sunshj/server","version":"0.1.0-beta.17","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.17","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"9b5e8b2d6829ec9b9ccfcb6d1af4ff3d59ddc767","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.17.tgz","fileCount":15,"integrity":"sha512-4Bq7xYRgTre/g9xSo4f4BT3nNGa0D3622u0WP7+wQQNH26tBiiSXff2atWnEhEf3dz4CPDHWHYD76WfIDYdT2Q==","signatures":[{"sig":"MEUCIQDhs8IdzQsuqmCkcGD93Th10RT8wAw4cAI7FZ8RARvgpAIgKdO8dg8atw3bX7mGkMbMfaRCk9PHox+xBRAzmYmpRC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195420},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"5370bd2d49133f0cc5b6f28122d2329f0fb32b3a","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"20.18.3","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.17_1766296102289_0.7639589676074487","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.18":{"name":"@sunshj/server","version":"0.1.0-beta.18","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.18","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"b7528b6a49710ebb7d8a886006ccbde3d9ef5a86","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.18.tgz","fileCount":20,"integrity":"sha512-mclKngA9JopxGIDo3wYON3nVtaCXhTw8HLYSscPIqm3YCXrJSQF46LfZsdLtPO1W3ggGIdhMf0fTdsek5gz63w==","signatures":[{"sig":"MEUCIGmfVH2PxZXZiIP2WFQsC9xsCeFCeB3bc1PmxAP2zW2vAiEAgIwJvm57uqS9TShojBoVeLZCUM7y38/m/Me/cWiyYJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":193487},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"ba8e2133f8603042a0602c01616864f39bd2d2f9","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.18_1766326341132_0.18704380994508552","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.19":{"name":"@sunshj/server","version":"0.1.0-beta.19","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.19","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"3483d79a5b0819b8bbb0a397d51f3b67f5d2bddf","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.19.tgz","fileCount":20,"integrity":"sha512-7g7tn3wmnb3fNY+LBJJciJpubdrHK0coeVeNRDimhwvj69frLZmGuoYigBTFuWAJRa7RNEzMm8kkBjmLc58Byg==","signatures":[{"sig":"MEYCIQDuLUzgkR0jthAFuNQ3dsJNAdvlfDMdkAf7t/OkX9ln0wIhAMd4OrD/ng6i/tulpA65A8+ui3qsncd5Z2NjZ231PdeD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204993},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"ac899fbe8d9c55a256c00b9bff1b251c8e8595a6","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.19_1766466638407_0.44176613975511714","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.20":{"name":"@sunshj/server","version":"0.1.0-beta.20","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.20","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"c086299c11e31e7c545c0e94e9ff298f8e86dcad","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.20.tgz","fileCount":20,"integrity":"sha512-C4s2muZwMhOjrbIUfdGkHPFmXupxp5QPGlplF451QiPE1XIcsXevOf87eIiMxJpYdSd7eXzbaT49Z3EiEK1MHA==","signatures":[{"sig":"MEYCIQDsm4t/sQvnJB9TKHqPBX2E2NCXHmxpeAzReqxXUUqB2AIhAMyeyprZQUBYvp52+vECcc1lzG9Z/JyGLwX1Cj9W88c0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204977},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"6c8d8336a782d6b0ab09b15e1eb5f2ab8f2d2623","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.20_1766491381145_0.677451378279502","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.21":{"name":"@sunshj/server","version":"0.1.0-beta.21","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.21","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"4d1d9f811757e9a2b8811ac4c5e9ab0e59d5b395","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.21.tgz","fileCount":20,"integrity":"sha512-LQausszBjEp8SxlW3gQ9AcSGttlNlbBBV8avxMzN5Ne/hiZ8zqTOM+8Gyd7OSONYhoVCW7ECHAkwzWbZeG/q9Q==","signatures":[{"sig":"MEUCIGC8pauqDI8DoeOvcncU+6kHbRgL/mfOAhVYXHarc3QYAiEA2T/ulsGsMmsg8nTXvjFLnf4vq4oXXxsvSpIdvIYNq3k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206349},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"2f7098ac8f7bff2f7b949243cb754888b74a5335","scripts":{"dev":"tsup --watch","lint":"eslint . --cache","test":"vitest","build":"tsup","format":"prettier . --write","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"eslint . --fix --cache","benchmark":"node benchmark/test.js","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"prettier":"@sunshj/prettier-config","_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*.{js,ts,md,json,yaml}":["eslint --fix","prettier --write"]},"sideEffects":false,"_nodeVersion":"22.18.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"tsup":"^8.2.4","bumpp":"^9.4.1","eslint":"^9.10.0","vitest":"4.0.6","express":"5.1.0","prettier":"^3.3.3","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@sunshj/eslint-config":"^2.2.0","@sunshj/prettier-config":"^1.0.2"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.21_1771503439124_0.6878005398737743","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.22":{"name":"@sunshj/server","version":"0.1.0-beta.22","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.22","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"3c54f1bd7af08b9cb0b5ad1ffb605dedf5688e94","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.22.tgz","fileCount":21,"integrity":"sha512-z7phFDquWNvLIXZypquHCU7T/dn6/KGQlTrGaaBUTFHhShYRapus9YGXhmZkgkpg7/xA+QsvVL4dcQgbuZB8sw==","signatures":[{"sig":"MEQCICngnZ+0ERmOOl4PvfJ+LiVPFg08tEu5fm8CWbBuRxkpAiAoPt9bTl9+g/MkJ5vWytMHQ8QuWWoaxD+H4TbwCVVX8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":173271},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"ae38c53306a7490cedabb452c59ecefb087485af","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.22_1777863011822_0.009465916273845743","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.23":{"name":"@sunshj/server","version":"0.1.0-beta.23","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.23","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"d3868312b0cab4bbb152b16d4301c679042d0a16","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.23.tgz","fileCount":21,"integrity":"sha512-IZillxsiccmI4hlQU4zhfee3lneWTKGt/yY0cTpkG68iba4c/FenN2LsE14mcDaz2kbz9hOAsbBQacP5bDQ1kA==","signatures":[{"sig":"MEUCIQDnw+aLra7uEKPPD7zlnm0QlE4/3eklNydrpg28J59xGgIgalBF7D41DEWenGmE9A68AfDG5RfTRvL2RMEX97Iym9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":172696},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"728fb613bc93834a591b896b5316efbc6857a933","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.23_1777956128181_0.5734947102707173","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.24":{"name":"@sunshj/server","version":"0.1.0-beta.24","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.24","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"4dff8907a67fcb202307cb07e9c3ca7ed3805800","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.24.tgz","fileCount":21,"integrity":"sha512-muYrX2xhLQOaKrY/ua7fYrI6CDbwMuerXZ2mw+14FuyJjOr2K3Tna+JynOmyc80gVqWWqPbvDGts1qBNUkG0pQ==","signatures":[{"sig":"MEYCIQCfRccmj99zFhjzJ15i23T1lc27CX7OQP4L7lJYxLc6bAIhAOE/ivn90xpdmqK38RTXu8ZHWSbIeJLb3Zmunq7zl1sF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":176961},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"fba6e2b6590dafa9ef8eea42a7e00fe99d6f78c1","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.24_1777957809270_0.2854761437937159","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.25":{"name":"@sunshj/server","version":"0.1.0-beta.25","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.25","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"21aafb21d4fbad0e407ef61213885d267e90b6c4","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.25.tgz","fileCount":21,"integrity":"sha512-/L1EAaQTscW4ls0utfiYRChm3bjp08c4QN4wUzs5Ao4OwQnO/utsxCFxQlKTOMqdOE6EqaEF595NJeQwUMZeJQ==","signatures":[{"sig":"MEYCIQDBOCZVqdL4FtEuqDfu4bbLCRCi0sd0GYuYwlg6ayQc/AIhANZs5cPXtPC0EbTZBXzAWkeQ/30qR31LzdLjA9Lbng4m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182558},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"f3fadf0232c04c1c1d47f44037419b3e06b84eb7","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.25_1778332903033_0.7611192813749108","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.26":{"name":"@sunshj/server","version":"0.1.0-beta.26","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.26","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"7d1ec9d8e918c5fa037103edad17ff7d38b7d16a","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.26.tgz","fileCount":21,"integrity":"sha512-HYLdZLN3PopbKzxjZAcUN8Pi50HJZqAIgKsCI+IFatPfPqbs2hQqW4/CeiIKoXl/wPe+GvcCcp7pTSgAwqCLew==","signatures":[{"sig":"MEYCIQDjXCzOyb41bqDPaCdiVUAH6eNA/De/5wP/C08jNz4EVgIhAOnvEzvVRcq3wQmx2cvZaGcVBXQhuOb2f/KACHqdIyJk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183257},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"7ba950bd578c67cfff85f87c501514e7bdc935c1","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.26_1778335248452_0.5815049954036682","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.27":{"name":"@sunshj/server","version":"0.1.0-beta.27","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.27","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"b9c1bba06b42f18cf5a886d4b8bf89831b482810","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.27.tgz","fileCount":21,"integrity":"sha512-cLsEwhO8Bp/7vRjYcYAfscnFLSG9n/X4+pqNwmoHZ5fRAsoMe8uAh5+YBJFFJVxMn5ZU4cF/56KOwClRevf4Aw==","signatures":[{"sig":"MEQCIGI7Q3l0CmDXeVx+JfK35pu6B0GexT2Xwor8wSmzNoXOAiAdj8TKyjxXIE6tTYXcfOMPI9RzyUdNOOjnE99u3c4zbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":182973},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"}},"gitHead":"848d20cf23c25e8ffe56e0b1353ae02172ce999f","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.27_1778998930545_0.5765875536130411","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.28":{"name":"@sunshj/server","version":"0.1.0-beta.28","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.28","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"3ba6902b1b43e531cbd8232659dd6d697a134b05","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.28.tgz","fileCount":24,"integrity":"sha512-1cWZ4viXRA2JVzdWNCohFhY0ggrMq52j3K3gK2LadyCF5Evmj89baUwy2EWjL9ker0HkwW7+w/c8FBC1X0+C0g==","signatures":[{"sig":"MEUCIQCdUhQapbTurnZyJO2w7/EVC74RnkbzXne4fmWEwCj28wIgO0EIlg0C75eop8H6nLHnzkKC5P4Qmh8HQfb6ZPM60Ck=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195129},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"9efe13539d81315b5bf31ea2fe171687039a351f","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.28_1779539224045_0.43090134252088363","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.29":{"name":"@sunshj/server","version":"0.1.0-beta.29","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.29","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"3c7dd5f6b9e7e40e108914ed07ab95a457b9df85","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.29.tgz","fileCount":24,"integrity":"sha512-92QVwyduOqtapWKWnQ5JaM7Wx7yseBFg+mEEfmada3/F80WOyGOtFD05KYknqbzfaDcF/hAlQJO9tklPX02lRw==","signatures":[{"sig":"MEUCIA+U8YsmFZMfe/ksfg2PIXUqVQeHg+VilaFNrQYGXp7yAiEAgvgPPlP7UgYTrd4OXY1cBw7xIfn6PcJbme+24/c73b4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":195976},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"2b9f5602d7593569679bfd46018b56bf67eac2a2","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.29_1779601358992_0.4438757569630378","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.30":{"name":"@sunshj/server","version":"0.1.0-beta.30","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.30","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"0c0b59618de0144176ee9fc042999838e5a3d6c2","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.30.tgz","fileCount":24,"integrity":"sha512-qibGLg2icH2hBneie2priutQuUi4nd3ZdMSgX7YlHg+GyqRw2HFK3ciUYbthvtSiPrr1vDdM7WahwlpYhm0r9A==","signatures":[{"sig":"MEUCIDEPXy9xGv6NDxSJHNJClotOb4pFeGw9CalXgRyb+XyoAiEA0dl/7IPeUy1iq/tTJhz/dlbirP1R6c4t4pRJsUZozfo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200207},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"c4fb0962814fe4bf420f73f680d703bc93a100ee","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.30_1780200249380_0.2918267893982991","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.31":{"name":"@sunshj/server","version":"0.1.0-beta.31","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.31","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"defd3502f54a2d9d5317b790c6dcbde4ca2d562e","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.31.tgz","fileCount":24,"integrity":"sha512-xIpgAYnl0rRjgyXlqFCA/YqEWyU/PbefzHI4bxCDVZU4Ltd0cC9Bp4atia31OeuxWIrWsx337WOdXNt//krBbg==","signatures":[{"sig":"MEUCIQCWQwFP+cIw3RCP2KybZFq0DLi0g3IzQQQI7UK+jK0OxgIgXqsS3bqY16ZDt6918kbg+dxcyB8dXI6KP2j8JOi0mMk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200377},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"13324abfbbb57a278a1a4df1064a6856a9fe6510","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.31_1780203351157_0.8417290667791755","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.32":{"name":"@sunshj/server","version":"0.1.0-beta.32","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.32","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"c2346db2f1dc09fa744a7eab53ea7ecee9ba27ab","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.32.tgz","fileCount":24,"integrity":"sha512-q7IEExn1tcU1fsf863IQIl3/rBxev09L4pr2Pm18g0YVmlSb34c5EKcb+SHaVzem5Q0tmvks6Vz/npg/TU1bbg==","signatures":[{"sig":"MEUCIC75XWLZgaz2hEZDUzPgs94+OXSVb1UhtREyPxyzjDZvAiEAhCjpXW4+2/TcqX1R3CezF/k+VnkofzskEtDgfi5PN6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":200928},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"7ee8c51d0bc094b63951a0b89854b0cfa9f2d657","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.32_1780207232461_0.5511116565882417","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.33":{"name":"@sunshj/server","version":"0.1.0-beta.33","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.33","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"0c3309ea56d61ae77a0c02754c383895b67d056d","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.33.tgz","fileCount":24,"integrity":"sha512-oLQtFnuN1cYfxhv5UzoZeWIBBaKMqubNQv+UhuWyQhWKObAemCsImR5jytfNj6WCVmj3B6kFdlq7pyTjjaYD+g==","signatures":[{"sig":"MEYCIQCYAUJVk8ZlUGOs7eqxza9BiHK4lg/jj8htKXCsziRCzwIhALQuGAigL31Islf9UdyRwgXmOjovMBtEZ2CEdZLhIcwB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":201001},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"98656ee38b68806744b88515079bc541a0949830","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.33_1780666048069_0.17942606858133003","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.34":{"name":"@sunshj/server","version":"0.1.0-beta.34","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.34","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"9a947b990ef4ac720be60a329c7effc336d9ebe2","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.34.tgz","fileCount":24,"integrity":"sha512-wdnOQ9Fhw4VpPloKrIEnhCxp5HwW7J3/6I7jujW6EFEt8eKHJxVJEGsXf7WWCJWYF+5GAHwg5/aqN8JUo4zlFQ==","signatures":[{"sig":"MEUCIDf3rFlIDzTi9AeYBpsntAJP3c8dYDaCbEEHZaGXMXSZAiEAhAw8humkfmk0D0zW8nH5trkJwZcs0NI3I2EalCnzz50=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":204465},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"2dc92ff1a7e64761cd7cdd70972f18d3bc147902","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.34_1780810134366_0.8220394257686607","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.35":{"name":"@sunshj/server","version":"0.1.0-beta.35","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.35","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"80b2583381de433983395c395079e0c5b4adb77c","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.35.tgz","fileCount":29,"integrity":"sha512-KkUIIcG5ZQCLdb4ok3E9+dhgM30uHqFq+lYrKvuLvtURfTHG5NV2tF6PgxFtod8rytJOsXr0YrGHncj2anCCUA==","signatures":[{"sig":"MEQCIDkVqHJ6CwHs0Ks6d7lxcmG+x3E9G6Fz9A+s//c2IFnLAiBDloWp5HFYAWD0j23P01EvsDIWG1vaBGHlWvhMwOjIyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219598},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./socket-io":{"types":"./dist/socket-io.d.ts","import":"./dist/socket-io.js","require":"./dist/socket-io.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"8d3bf0b408dacd2b4e4751478a8841fd7a590f08","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","socket.io":"^4.8.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"peerDependencies":{"socket.io":">=4.0.0"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"peerDependenciesMeta":{"socket.io":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.35_1780980978231_0.7710689518646723","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.36":{"name":"@sunshj/server","version":"0.1.0-beta.36","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.36","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"3e1988edaea48072bfb837671ac4829169f1a1c8","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.36.tgz","fileCount":24,"integrity":"sha512-TJ71eYImwZ7dhnmB8vguy3y3oxEk3FfWenreS+GYyix8GLZIPn581oxhKScdqI4BCHhoeCMjhf7dwb55ltMpBA==","signatures":[{"sig":"MEQCIEHLW74Sd6FaTO+WgozdzufCH6TdAutjMiGbrEUjCV1qAiBYcoY2RL85tHv9XA0Xime+4rBp4703vpJjL32vY2QM8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":206929},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"5784734b6bf10547c73d885d54728a3af8c42ded","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","socket.io":"^4.8.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.36_1781005889780_0.9350326375878646","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.37":{"name":"@sunshj/server","version":"0.1.0-beta.37","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.37","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"00a4964206fa40caa2e957a444faa11994cdcae9","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.37.tgz","fileCount":24,"integrity":"sha512-1PSVwpFx42dNr/b4vSO2nbrETIVzkIJWkALqm7sLZm0B6dhA9Dns2Y1yt8NcGzxadPc4QkZ54BFAlWHz1ECHeQ==","signatures":[{"sig":"MEUCIQCcF9wWf7PWR5ROddEnnZ+9We60Sg/rjt0BAoMdqjVNPQIgQtY27QeZF/3NM6VfZ1s8OkkS4bmkiW/D7IpKpS3ZFbA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":208260},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"6de724410cc175c0ced27a5249ebdc8c2558047c","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","socket.io":"^4.8.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.37_1781930527125_0.18892369636939943","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.38":{"name":"@sunshj/server","version":"0.1.0-beta.38","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.38","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"331636e29c0554a83739ee95dd366d6cb287a5b8","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.38.tgz","fileCount":24,"integrity":"sha512-CQbcJ1Es8FwCALaAFwnTqs7JNk+7qZzKbjcldB1L0fADazyZGI+c8YmEfdEaogbMBecqAT8KzshY+sJB2858rA==","signatures":[{"sig":"MEUCIQDTfcSSMa8mpDifd99yLYLaDcwI0D8b4GHOJBlLMaRL/QIgbp/dZS2xnhYoWnyHIMaz43lQ04no0d1BeyR6pb3V/m0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209340},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"9f1a5139b0030009046a6f3efb2d1af042e594fb","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","socket.io":"^4.8.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.38_1781933909232_0.8161062583636236","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.39":{"name":"@sunshj/server","version":"0.1.0-beta.39","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.39","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"11161f0795d8793a3bb0d18a8348ae0145e7ea37","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.39.tgz","fileCount":24,"integrity":"sha512-ezUGC9CX126thX/JPfOlV0BXztvLoonXN4PkrYpSLTUEJEp6qMk2H4hR6nLh+BDTstXAY8wcNGU20v6VtcQYUQ==","signatures":[{"sig":"MEUCIQCND72ZorMF+S0yICpK06jyNCZYUYHxoFiXcHxP2aUdIwIgNrPBwtj5s8VtKsoTO5LULj2pvOr3Xqs+dRKaQ/u33YA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":239934},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"ab4decb0b5f29e7f8c583b8b60c9672aba5d2a42","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","socket.io":"^4.8.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.39_1782030479487_0.3885760165451948","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.40":{"name":"@sunshj/server","version":"0.1.0-beta.40","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.40","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"dca9997de3c137fa0da2026ef730cb3350237566","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.40.tgz","fileCount":24,"integrity":"sha512-bwK8FYIFxD+whFzPAsqMw4cNJoa1aOhCb3IdWjTrcI1HfUsJHkmxEqUkyb2KIZyOhv/Goi+nWLanmXGISkBrKg==","signatures":[{"sig":"MEUCIQDRDG4usa+B770ygO+iP3/8Qw0sKpU3EG8ecM7Upd0+8wIgUcpvuFipsdtrcfjy5WRSfDq+Nn0EnINBtEfDwu4jRS8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":241856},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"f77f2d9bf05b4361630392ed2c19f12a463888e3","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","socket.io":"^4.8.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.40_1782475131947_0.7685449682231154","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.41":{"name":"@sunshj/server","version":"0.1.0-beta.41","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.41","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"ddca789ff8315ebc75e210c6adf26f411c08b5e6","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.41.tgz","fileCount":24,"integrity":"sha512-A36K5HrpUsdKR7F0uisGsD9u34Bc1GsAhG9Z8VFWs+nhALkg6vUMqUaTZOk+WjXJVFWZurGv/aarxp7+KAudFQ==","signatures":[{"sig":"MEYCIQCDkg4aHlAltBspzo7JD4hhJrzJRZzbrNBoZ9UvE6ESQQIhALOkdSJj/CTUQQ+nX1r20/vydaxnXNDXutDHIx2Z+qcE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":242641},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./rpc":{"types":"./dist/rpc.d.ts","import":"./dist/rpc.js","require":"./dist/rpc.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./body-parser":{"types":"./dist/body-parser.d.ts","import":"./dist/body-parser.js","require":"./dist/body-parser.cjs"},"./serve-static":{"types":"./dist/serve-static.d.ts","import":"./dist/serve-static.js","require":"./dist/serve-static.cjs"}},"gitHead":"dcef3314820501646286115e655820d2eb29758f","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","socket.io":"^4.8.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.41_1782967451807_0.09268545339370826","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.42":{"name":"@sunshj/server","version":"0.1.0-beta.42","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.42","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"c3130175cb566362f461e8b6e57af54df7af6d0c","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.42.tgz","fileCount":31,"integrity":"sha512-NOsjmEI5Q3+Axg9sszqKXiUgr1MbBKHu9dEF7BajS9eKSqqyHoCH93KVJFCYpBG7gSHOo7IaYQZO+rBcM+PRFw==","signatures":[{"sig":"MEUCIQDwaDtN4hWOyKFCJoZEvayo0IKCNDkkgUWyZktcrhGPzAIgS0f0PZgGqRPVcIJutswZkct5ZBZeJLcBaVHbTY6sN30=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":257743},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./ioc":{"types":"./dist/features/ioc/index.d.ts","import":"./dist/features/ioc/index.js","require":"./dist/features/ioc/index.cjs"},"./rpc":{"types":"./dist/features/rpc/index.d.ts","import":"./dist/features/rpc/index.js","require":"./dist/features/rpc/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./inspect":{"types":"./dist/inspect.d.ts","import":"./dist/inspect.js","require":"./dist/inspect.cjs"},"./body-parser":{"types":"./dist/features/body-parser/index.d.ts","import":"./dist/features/body-parser/index.js","require":"./dist/features/body-parser/index.cjs"},"./serve-static":{"types":"./dist/features/serve-static/index.d.ts","import":"./dist/features/serve-static/index.js","require":"./dist/features/serve-static/index.cjs"}},"gitHead":"3c73e4634257c63704e1cd03f273ca30300e19a6","imports":{"#core/*":"./src/*","#features/*":"./src/features/*"},"scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"],"ioc":["./dist/features/ioc/index.d.ts"],"rpc":["./dist/features/rpc/index.d.ts"],"inspect":["./dist/inspect.d.ts"],"body-parser":["./dist/features/body-parser/index.d.ts"],"serve-static":["./dist/features/serve-static/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","socket.io":"^4.8.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.42_1786180922675_0.0714791742806864","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.43":{"name":"@sunshj/server","version":"0.1.0-beta.43","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.43","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"5dec84d4a593308d8360da3d22588505b259820a","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.43.tgz","fileCount":30,"integrity":"sha512-kmVT1T84hCXW1kiNqZUM7gnM65YfQRnuF2qbMfKOgTbo5VWmcuyVCeAOslBqHsL/PCoXqLIDiGNBtLncb8a5XQ==","signatures":[{"sig":"MEUCIQDNe51AIDvKiPyPnV2TbTIStHyT2zQf5gjNRlXuLizXVgIgRdqrlX/R2va5XZToz/gj5qKffYqX0I+85kj7xoCb59U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":255591},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./ioc":{"types":"./dist/features/ioc/index.d.ts","import":"./dist/features/ioc/index.js","require":"./dist/features/ioc/index.cjs"},"./rpc":{"types":"./dist/features/rpc/index.d.ts","import":"./dist/features/rpc/index.js","require":"./dist/features/rpc/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./inspect":{"types":"./dist/inspect.d.ts","import":"./dist/inspect.js","require":"./dist/inspect.cjs"},"./body-parser":{"types":"./dist/features/body-parser/index.d.ts","import":"./dist/features/body-parser/index.js","require":"./dist/features/body-parser/index.cjs"},"./serve-static":{"types":"./dist/features/serve-static/index.d.ts","import":"./dist/features/serve-static/index.js","require":"./dist/features/serve-static/index.cjs"}},"gitHead":"ea2b5decc1b6392a577750c35863d7be9aba4eee","imports":{"#core/*":"./src/*","#features/*":"./src/features/*"},"scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"],"ioc":["./dist/features/ioc/index.d.ts"],"rpc":["./dist/features/rpc/index.d.ts"],"inspect":["./dist/inspect.d.ts"],"body-parser":["./dist/features/body-parser/index.d.ts"],"serve-static":["./dist/features/serve-static/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","socket.io":"^4.8.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.43_1787379466068_0.6932467737045382","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.44":{"name":"@sunshj/server","version":"0.1.0-beta.44","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.44","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"88bd7c139cb8df8f112d0f28f2988b9e8e08111e","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.44.tgz","fileCount":30,"integrity":"sha512-v0UI/siWO3YRDz031guoShfVQK8tS/NLIiEz79GzXUSHzf7wL8uJUVwhefvxXlwyHML+b1g2jOJnsB4y+9S0fg==","signatures":[{"sig":"MEUCIAhuQHjyVGmG7wctNFRXiVYSZB86sHieKbD0pVR6TCEcAiEAoyCZhLTVZLwUgvWoEC7peb9FyzU/7Gugjb1v1k+RcwM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":257350},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./ioc":{"types":"./dist/features/ioc/index.d.ts","import":"./dist/features/ioc/index.js","require":"./dist/features/ioc/index.cjs"},"./rpc":{"types":"./dist/features/rpc/index.d.ts","import":"./dist/features/rpc/index.js","require":"./dist/features/rpc/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./inspect":{"types":"./dist/inspect.d.ts","import":"./dist/inspect.js","require":"./dist/inspect.cjs"},"./body-parser":{"types":"./dist/features/body-parser/index.d.ts","import":"./dist/features/body-parser/index.js","require":"./dist/features/body-parser/index.cjs"},"./serve-static":{"types":"./dist/features/serve-static/index.d.ts","import":"./dist/features/serve-static/index.js","require":"./dist/features/serve-static/index.cjs"}},"gitHead":"455937ec27c5f8866d6f940fd2a520e0eb66c61d","imports":{"#core/*":"./src/*","#features/*":"./src/features/*"},"scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"],"ioc":["./dist/features/ioc/index.d.ts"],"rpc":["./dist/features/rpc/index.d.ts"],"inspect":["./dist/inspect.d.ts"],"body-parser":["./dist/features/body-parser/index.d.ts"],"serve-static":["./dist/features/serve-static/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","socket.io":"^4.8.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.44_1788348932100_0.6555645676625503","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.45":{"name":"@sunshj/server","version":"0.1.0-beta.45","author":{"name":"sunshj"},"license":"MIT","_id":"@sunshj/server@0.1.0-beta.45","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"dist":{"shasum":"b0fdf777ebeb57add483e07e15f31b8d042629bc","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.45.tgz","fileCount":30,"integrity":"sha512-+cdV+NfEtlRZVdNyiZMMOK2zQSwIKRI+hDY+/4muj+JsyyUMd94ENT9+2PVaLwMt5vWWx9Rna3VOeiGa/nxD8Q==","signatures":[{"sig":"MEUCIQCkB8fStv8CQmBYdt5bL+9POGZLrYyYCs2yH/ClASmdHwIgKODQiCAzD5+erZt2T4fg+Cq6ezSHXiYLPrv31VjRYJs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":260888},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./ioc":{"types":"./dist/features/ioc/index.d.ts","import":"./dist/features/ioc/index.js","require":"./dist/features/ioc/index.cjs"},"./rpc":{"types":"./dist/features/rpc/index.d.ts","import":"./dist/features/rpc/index.js","require":"./dist/features/rpc/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./inspect":{"types":"./dist/inspect.d.ts","import":"./dist/inspect.js","require":"./dist/inspect.cjs"},"./body-parser":{"types":"./dist/features/body-parser/index.d.ts","import":"./dist/features/body-parser/index.js","require":"./dist/features/body-parser/index.cjs"},"./serve-static":{"types":"./dist/features/serve-static/index.d.ts","import":"./dist/features/serve-static/index.js","require":"./dist/features/serve-static/index.cjs"}},"gitHead":"40425915cd08d3187f46a769f2c78cb38d4c910d","imports":{"#core/*":"./src/*","#features/*":"./src/features/*"},"scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"],"ioc":["./dist/features/ioc/index.d.ts"],"rpc":["./dist/features/rpc/index.d.ts"],"inspect":["./dist/inspect.d.ts"],"body-parser":["./dist/features/body-parser/index.d.ts"],"serve-static":["./dist/features/serve-static/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","socket.io":"^4.8.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0-beta.45_1788351383379_0.2550497833106373","host":"s3://npm-registry-packages-npm-production"}},"0.1.0-beta.46":{"_id":"@sunshj/server@0.1.0-beta.46","dist":{"shasum":"764f2b1c7c88f0f13241c961b33450a391e28bc5","tarball":"https://registry.npmjs.org/@sunshj/server/-/server-0.1.0-beta.46.tgz","fileCount":33,"integrity":"sha512-zOkWtxvyXhlhyRzKjukysK1/n7OR7m6p53yRaRxnZ9+ey+xzyMLfwXPM/axNFrE8jjQciocmkM6NDeTIBPkjYQ==","signatures":[{"sig":"MEUCIQD4ecSkVJ24eCF4AdVu0ZDgdQtK5yZ+Tk2nGHMTMaZMSgIgJrHXCg5cGt8lB4EwpdlBcZOO+dkCnWo+SRTuXClVCxc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCE9UsqeAy7xbm1r1BGuiKUyNrk4Obwz1weG6wWS26COwIhAOzT+NiYuDiOuVw4baMWsUzeP2QM8PeVqeZvC0uhs8mT"}],"unpackedSize":261349},"main":"./dist/index.cjs","name":"@sunshj/server","type":"module","types":"./dist/index.d.ts","author":{"name":"sunshj"},"module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./ioc":{"types":"./dist/features/ioc/index.d.ts","import":"./dist/features/ioc/index.js","require":"./dist/features/ioc/index.cjs"},"./rpc":{"types":"./dist/features/rpc/index.d.ts","import":"./dist/features/rpc/index.js","require":"./dist/features/rpc/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.js","require":"./dist/utils.cjs"},"./inspect":{"types":"./dist/inspect.d.ts","import":"./dist/inspect.js","require":"./dist/inspect.cjs"},"./body-parser":{"types":"./dist/features/body-parser/index.d.ts","import":"./dist/features/body-parser/index.js","require":"./dist/features/body-parser/index.cjs"},"./serve-static":{"types":"./dist/features/serve-static/index.d.ts","import":"./dist/features/serve-static/index.js","require":"./dist/features/serve-static/index.cjs"},"./platform-node":{"types":"./dist/platform/node.d.ts","import":"./dist/platform/node.js","require":"./dist/platform/node.cjs"}},"gitHead":"d0c1eef81c9ad806cf476e9dfcc3be20c3f7afc4","imports":{"#core/*":"./src/*","#features/*":"./src/features/*","#platform/*":"./src/platform/*"},"license":"MIT","scripts":{"dev":"tsdown --watch","fmt":"oxfmt","lint":"oxlint","test":"vitest","build":"tsdown","release":"vitest --run --silent && bumpp && npm publish","lint:fix":"oxlint --fix","benchmark":"node benchmark/test.js","typecheck":"tsgo --noEmit","prepublishOnly":"pnpm build"},"version":"0.1.0-beta.46","_npmUser":{"name":"sunshj","email":"sunshj317@gmail.com"},"_npmVersion":"10.3.0","description":"一个轻量级、高性能的 Web 服务器框架","directories":{},"lint-staged":{"*":"oxfmt --no-error-on-unmatched-pattern","*.{js,jsx,ts,tsx,mjs,cjs}":"pnpm run lint"},"maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"sideEffects":false,"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"typesVersions":{"*":{"*":["./dist/*","./dist/index.d.ts"],"ioc":["./dist/features/ioc/index.d.ts"],"rpc":["./dist/features/rpc/index.d.ts"],"inspect":["./dist/inspect.d.ts"],"body-parser":["./dist/features/body-parser/index.d.ts"],"serve-static":["./dist/features/serve-static/index.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.5.0","devDependencies":{"h3":"^1.15.4","hono":"^4.8.5","bumpp":"^9.4.1","oxfmt":"0.47.0","oxlint":"1.62.0","tsdown":"0.21.10","vitest":"4.0.6","express":"5.1.0","socket.io":"^4.8.0","autocannon":"8.0.0","typescript":"5.5.3","@types/node":"^18","lint-staged":"^15.2.10","@types/express":"5.0.3","simple-git-hooks":"^2.11.1","@hono/node-server":"^1.14.4","eslint-plugin-regexp":"3.1.0","@typescript/native-preview":"7.0.0-dev.20260503.1"},"simple-git-hooks":{"pre-commit":"npx lint-staged"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/server_0.1.0-beta.46_1790843166967_0.9218036054583658"}}},"time":{"created":"2025-09-28T14:32:25.426Z","modified":"2026-10-01T08:26:07.684Z","0.0.1":"2025-09-28T14:32:25.712Z","0.0.2":"2025-09-28T15:44:48.340Z","0.0.3":"2025-09-28T16:12:53.683Z","0.0.4":"2025-09-30T15:34:41.167Z","0.0.5":"2025-10-02T15:31:58.821Z","0.0.6":"2025-10-02T16:35:05.047Z","0.1.0-beta.1":"2025-10-24T13:52:26.873Z","0.1.0-beta.2":"2025-10-24T14:16:41.163Z","0.1.0-beta.3":"2025-10-25T17:26:51.321Z","0.1.0-beta.4":"2025-10-27T14:28:58.299Z","0.1.0-beta.5":"2025-11-01T05:54:57.838Z","0.1.0-beta.6":"2025-11-01T12:30:46.814Z","0.1.0-beta.7":"2025-11-16T04:09:54.185Z","0.1.0-beta.8":"2025-11-19T14:03:02.686Z","0.1.0-beta.9":"2025-11-21T16:46:42.380Z","0.1.0-beta.10":"2025-11-21T17:35:40.469Z","0.1.0-beta.11":"2025-11-22T04:57:14.047Z","0.1.0-beta.12":"2025-11-22T06:37:20.039Z","0.1.0-beta.13":"2025-11-22T13:49:56.472Z","0.1.0-beta.14":"2025-11-23T05:39:49.870Z","0.1.0-beta.15":"2025-11-29T05:46:16.283Z","0.1.0-beta.16":"2025-11-30T07:24:50.028Z","0.1.0-beta.17":"2025-12-21T05:48:22.434Z","0.1.0-beta.18":"2025-12-21T14:12:21.288Z","0.1.0-beta.19":"2025-12-23T05:10:38.548Z","0.1.0-beta.20":"2025-12-23T12:03:01.278Z","0.1.0-beta.21":"2026-02-19T12:17:19.262Z","0.1.0-beta.22":"2026-05-04T02:50:11.977Z","0.1.0-beta.23":"2026-05-05T04:42:08.329Z","0.1.0-beta.24":"2026-05-05T05:10:09.406Z","0.1.0-beta.25":"2026-05-09T13:21:43.217Z","0.1.0-beta.26":"2026-05-09T14:00:48.611Z","0.1.0-beta.27":"2026-05-17T06:22:10.698Z","0.1.0-beta.28":"2026-05-23T12:27:04.197Z","0.1.0-beta.29":"2026-05-24T05:42:39.123Z","0.1.0-beta.30":"2026-05-31T04:04:09.549Z","0.1.0-beta.31":"2026-05-31T04:55:51.336Z","0.1.0-beta.32":"2026-05-31T06:00:32.598Z","0.1.0-beta.33":"2026-06-05T13:27:28.235Z","0.1.0-beta.34":"2026-06-07T05:28:54.523Z","0.1.0-beta.35":"2026-06-09T04:56:18.365Z","0.1.0-beta.36":"2026-06-09T11:51:29.953Z","0.1.0-beta.37":"2026-06-20T04:42:07.260Z","0.1.0-beta.38":"2026-06-20T05:38:29.373Z","0.1.0-beta.39":"2026-06-21T08:27:59.630Z","0.1.0-beta.40":"2026-06-26T11:58:52.129Z","0.1.0-beta.41":"2026-07-02T04:44:11.970Z","0.1.0-beta.42":"2026-08-08T09:22:02.833Z","0.1.0-beta.43":"2026-08-22T06:17:46.221Z","0.1.0-beta.44":"2026-09-02T11:35:32.247Z","0.1.0-beta.45":"2026-09-02T12:16:23.512Z","0.1.0-beta.46":"2026-10-01T08:26:07.075Z"},"author":{"name":"sunshj"},"license":"MIT","description":"一个轻量级、高性能的 Web 服务器框架","maintainers":[{"name":"sunshj","email":"sunshj317@gmail.com"}],"readme":"# @sunshj/server\n\n一个轻量级、高性能的 Web 服务器框架，结合了 Express.js、Hono.js 和 h3 的优秀特性。\n\n[![NPM Version](https://img.shields.io/npm/v/@sunshj/server)](https://www.npmjs.com/package/@sunshj/server)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0+-blue)](https://www.typescriptlang.org/)\n[![Node.js](https://img.shields.io/badge/Node.js-18+-green)](https://nodejs.org/)\n[![License](https://img.shields.io/npm/l/@sunshj/server)](https://github.com/sunshj/server/blob/main/LICENSE)\n\n## ✨ 特性\n\n- 🚀 **极致性能**: 基于 Node.js 原生 HTTP 模块，零外部依赖\n- 🔷 **TypeScript 优先**: 完整的类型定义和智能提示，路径参数自动类型推断\n- 🔗 **线性链式中间件**: 简洁高效的中间件系统，支持早期返回和错误处理\n- 🎯 **现代 API**: 简洁直观，开发体验优秀\n- 📦 **轻量级**: 核心包仅 ~18KB (CJS), 比 Express 小 10 倍\n- 🔧 **灵活路由**: 动态参数、通配符、嵌套路由、类型化路由组\n- ⚡ **智能响应**: 自动推断响应类型，按需解析\n- 📤 **文件上传**: 原生支持 FormData 和文件上传解析\n- 🌊 **流式响应**: 原生支持 ReadableStream，可轻松实现 SSE\n- 🪝 **钩子系统**: 灵活的生命周期钩子(beforeRequest、beforeResponse、afterResponse、notFound)\n- 🌐 **Web Standards**: 基于 Web 标准 API，兼容多种运行时(Node.js、Deno、Bun、Cloudflare Workers)\n\n## 🚀 快速开始\n\n### 安装\n\n```bash\nnpm install @sunshj/server\n# 或者\npnpm add @sunshj/server\n# 或者\nyarn add @sunshj/server\n```\n\n### 基础使用\n\n```typescript\nimport { bodyParser, createApp } from '@sunshj/server'\n\nconst app = createApp()\n\n// 注入 body parser 中间件（必须在访问请求体之前注册）\napp.use(bodyParser())\n\n// 基础路由\napp.get('/', ctx => {\n  return { message: 'Hello World!' }\n})\n\n// 动态路由参数\napp.get('/users/:id', ctx => {\n  const { id } = ctx.params\n  return { user: { id, name: `User ${id}` } }\n})\n\n// 启动服务器\napp.listen(3000, server => {\n  console.log('🚀 Server running on http://localhost:3000')\n  console.log('Server address:', server.address())\n})\n```\n\n## 📚 核心概念\n\n### Context 上下文\n\n每个请求处理函数都会接收一个 `Context` 对象，包含请求信息和响应方法：\n\n```typescript\napp.get('/api/users/:id', ctx => {\n  // 路径参数\n  const { id } = ctx.params\n\n  // 查询参数\n  const { page = '1', limit = '10' } = ctx.query\n\n  // 请求头 (Web Standard Headers)\n  const userAgent = ctx.headers.get('user-agent')\n\n  // 智能响应\n  return ctx.status(200).json({\n    user: { id },\n    pagination: { page: Number(page), limit: Number(limit) },\n    userAgent\n  })\n})\n```\n\n### 路由定义\n\n支持所有标准 HTTP 方法：\n\n```typescript\napp.get('/users', getAllUsers)\napp.post('/users', createUser)\napp.put('/users/:id', updateUser)\napp.delete('/users/:id', deleteUser)\napp.patch('/users/:id', patchUser)\n\n// 链式路由\napp.route('/users/:id').get(getUser).put(updateUser).delete(deleteUser)\n\n// 支持多种 HTTP 方法\napp.get('/users', getAllUsers)\napp.post('/users', createUser)\napp.put('/users/:id', updateUser)\napp.delete('/users/:id', deleteUser)\napp.patch('/users/:id', patchUser)\napp.head('/users/:id', checkUser)\napp.options('/users', getUserOptions)\n\n// 通配符路由\napp.get('/static/*', serveStaticFiles)\n\n// 匹配所有方法\napp.all('/api/*', authMiddleware)\n\n// 类型化路由参数 - 运行时自动转换类型\napp.get('/users/:id!number', ctx => {\n  const { id } = ctx.params // id: number (自动转换)\n  return { user: { id } }\n})\n\napp.get('/flag/:active!boolean', ctx => {\n  const { active } = ctx.params // active: boolean ('true'/'1' → true)\n  return { active }\n})\n\n// 可选类型化参数\napp.get('/posts/:page?number', ctx => {\n  const { page } = ctx.params // page: number | undefined\n  return { page: page ?? 1 }\n})\n```\n\n### 中间件系统\n\n框架采用**线性链式中间件模型**（类似 Express），简洁高效且易于理解。\n\n#### 中间件基础概念\n\n中间件是一个可以访问请求上下文 (`Context`) 的函数，可以：\n\n- 在请求到达路由处理器之前执行预处理逻辑\n- 通过调用 `await ctx.next()` 将控制权传递给下一个处理器\n- 通过返回 `Response` 提前终止请求处理链\n\n**重要特性**：\n\n- 中间件和路由处理器使用相同的 `RouteHandler` 类型\n- 中间件按注册顺序依次执行（线性模型）\n- **`await ctx.next()` 现在是可选的**：中间件如果不调用 `ctx.next()` 且没有返回值,会自动继续执行下一个处理器\n- `await ctx.next()` 之后的代码**不会执行**（这是设计特性，非 bug）\n- 如需响应后逻辑（如日志、清理），请使用 `afterResponse` hook\n\n#### 全局中间件\n\n应用于所有请求的中间件：\n\n```typescript\n// 日志中间件 - ctx.next() 现在是可选的\napp.use(ctx => {\n  console.log(`→ ${ctx.method} ${ctx.url.pathname}`)\n  // ✅ 不调用 ctx.next() 也会自动继续到下一个处理器\n})\n\n// 也可以显式调用 ctx.next()\napp.use(async ctx => {\n  console.log(`→ ${ctx.method} ${ctx.url.pathname}`)\n  await ctx.next() // 显式继续到下一个处理器\n  // ⚠️ 注意：这之后的代码不会执行（线性链式模型的设计）\n  // 如需响应后逻辑，请使用 afterResponse hook\n})\n\n// 计时中间件\napp.use(ctx => {\n  const start = Date.now()\n  // 可以省略 ctx.next()，会自动继续\n  // ⚠️ 注意：这里无法计算响应时间，应该使用 afterResponse hook\n})\n\n// 正确的计时方式：使用 afterResponse hook\napp.on(LifeCycleEvents.afterResponse, (ctx, duration) => {\n  console.log(`${ctx.method} ${ctx.url.pathname} - ${duration}ms`)\n})\n```\n\n#### 路径中间件\n\n只对特定路径生效的中间件：\n\n```typescript\n// API 认证中间件\napp.use('/api/*', async ctx => {\n  const token = ctx.headers.get('authorization')\n  if (!token) {\n    return ctx.error(401, 'Missing authorization header')\n  }\n\n  // 验证 token\n  try {\n    const user = await verifyToken(token)\n    ctx.user = user // 扩展 context\n    // ctx.next() 是可选的，这里会自动继续\n  } catch {\n    return ctx.error(401, 'Invalid token')\n  }\n})\n\n// 管理员权限验证\napp.use('/admin/*', ctx => {\n  if (!ctx.user?.isAdmin) {\n    return ctx.error(403, 'Admin access required')\n  }\n  // 不需要 ctx.next()，会自动继续\n})\n```\n\n#### 中间件早期返回\n\n中间件可以通过返回 `Response` 来终止请求处理链：\n\n```typescript\n// 认证中间件示例\nfunction authMiddleware(ctx) {\n  if (!ctx.headers.get('authorization')) {\n    return ctx.error(401, 'Unauthorized') // 🚀 直接返回，停止执行链\n  }\n  // 不需要 ctx.next()，会自动继续到下一个处理器\n}\n\n// 使用多个中间件\napp.post(\n  '/protected',\n  authMiddleware, // 第一个中间件：认证\n  async ctx => {\n    // 第二个中间件：验证请求体\n    const data = await ctx.readBody()\n    if (!data.name) {\n      return ctx.error(400, 'Name is required')\n    }\n    // ctx.next() 是可选的\n  },\n  async ctx => {\n    // 最终的路由处理器\n    const data = await ctx.readBody()\n    return { message: 'Success', data }\n  }\n)\n```\n\n#### 路由级中间件\n\n多个中间件可以作为参数传入路由方法：\n\n```typescript\n// 定义中间件函数 - ctx.next() 是可选的\nfunction logMiddleware(ctx) {\n  console.log(`Processing: ${ctx.url.pathname}`)\n  // 不需要 ctx.next()，会自动继续\n}\n\nfunction validateMiddleware(ctx) {\n  const contentType = ctx.headers.get('content-type')\n  if (!contentType?.includes('application/json')) {\n    return ctx.error(400, 'Content-Type must be application/json')\n  }\n  // ctx.next() 是可选的\n}\n\n// 应用多个中间件到特定路由\napp.get('/protected', authMiddleware, logMiddleware, ctx => {\n  return { message: 'Protected route accessed', user: ctx.user }\n})\n\napp.post('/data', validateMiddleware, logMiddleware, async ctx => {\n  const data = await ctx.readBody()\n  return { received: data }\n})\n```\n\n#### 中间件执行流程\n\n```typescript\n// 执行顺序示例 - ctx.next() 现在是可选的\napp.use(ctx => {\n  console.log('1. 全局中间件')\n  // 不需要 ctx.next()，会自动继续\n})\n\napp.use('/api/*', ctx => {\n  console.log('2. 路径中间件')\n  // ctx.next() 是可选的\n})\n\napp.get(\n  '/api/users',\n  ctx => {\n    console.log('3. 第一个路由中间件')\n    // 可以省略 ctx.next()\n  },\n  ctx => {\n    console.log('4. 第二个路由中间件')\n    // 自动继续到下一个处理器\n  },\n  ctx => {\n    console.log('5. 最终路由处理器')\n    return { message: 'Done' }\n  }\n)\n\n// 请求 GET /api/users 时的执行顺序：\n// 1. 全局中间件\n// 2. 路径中间件\n// 3. 第一个路由中间件\n// 4. 第二个路由中间件\n// 5. 最终路由处理器\n```\n\n#### 中间件作用域\n\n框架通过 `router.id` 实现中间件作用域隔离。由于 `App extends Router`，App 和 Router 实例都有唯一的 `id`：\n\n```typescript\n// 1. App 级全局中间件 (id === app.id, 无 path)\n// 应用到所有路由，包括挂载的 Router 路由\napp.use(ctx => {\n  console.log('App middleware')\n  // ctx.next() 是可选的\n})\n\n// 2. App 级路径中间件 (id === app.id, 有 path)\n// 应用到匹配路径的所有路由\napp.use('/api/*', ctx => {\n  console.log('API middleware')\n  // 不需要 ctx.next()\n})\n\n// 3. Router 级全局中间件 (id === apiRouter.id, 无 path)\n// 只应用到该 Router 的路由\nconst apiRouter = createRouter()\napiRouter.use(ctx => {\n  console.log('Router middleware - 只对 apiRouter 的路由生效')\n  // 自动继续\n})\napiRouter.get('/users', ctx => ({ users: [] }))\n\n// 4. Router 级路径中间件 (id === apiRouter.id, 有 path)\n// 只应用到该 Router 中匹配路径的路由\napiRouter.use('/admin/*', ctx => {\n  console.log('Router path middleware - 只对 apiRouter 的 /admin/* 路由生效')\n  // ctx.next() 可选\n})\napiRouter.get('/admin/users', ctx => ({ adminUsers: [] }))\n\n// 挂载路由器\napp.use('/api', apiRouter)\n\n// 请求 GET /api/users 的中间件执行顺序：\n// 1. App 全局中间件 (id === app.id)\n// 2. App 路径中间件 /api/* (id === app.id)\n// 3. Router 全局中间件 (id === apiRouter.id)\n// 4. 路由处理器 /users\n\n// 请求 GET /api/admin/users 的中间件执行顺序：\n// 1. App 全局中间件 (id === app.id)\n// 2. App 路径中间件 /api/* (id === app.id)\n// 3. Router 全局中间件 (id === apiRouter.id)\n// 4. Router 路径中间件 /admin/* (id === apiRouter.id)\n// 5. 路由处理器 /admin/users\n```\n\n#### 条件中间件\n\n根据条件动态执行逻辑：\n\n```typescript\n// 认证检查 - ctx.next() 是可选的\nfunction requireAuth(ctx) {\n  if (!ctx.headers.get('authorization')) {\n    return ctx.error(401, 'Authentication required')\n  }\n  // 不需要 ctx.next()，会自动继续\n}\n\n// 角色检查\nfunction requireRole(role: string) {\n  return ctx => {\n    if (ctx.user?.role !== role) {\n      return ctx.error(403, `Role ${role} required`)\n    }\n    // ctx.next() 可选\n  }\n}\n\n// 使用条件中间件\napp.get('/user/profile', requireAuth, ctx => {\n  return { user: ctx.user }\n})\n\napp.get('/admin/settings', requireAuth, requireRole('admin'), ctx => {\n  return { settings: {} }\n})\n```\n\n#### 中间件最佳实践\n\n```typescript\n// ✅ 推荐：使用 afterResponse hook 处理响应后逻辑\napp.on(LifeCycleEvents.afterResponse, (ctx, duration) => {\n  // 记录日志\n  logger.info({\n    method: ctx.method,\n    path: ctx.url.pathname,\n    status: ctx.response!.status,\n    duration\n  })\n})\n\n// ❌ 不推荐：在中间件的 ctx.next() 之后写代码（不会执行）\napp.use(async ctx => {\n  await ctx.next()\n  console.log('这段代码不会执行') // ❌\n})\n\n// ✅ 推荐：中间件只做请求预处理，ctx.next() 是可选的\napp.use(ctx => {\n  ctx.startTime = Date.now()\n  // 不需要 ctx.next()，会自动继续\n})\n\n// ✅ 推荐：明确的早期返回\napp.use(ctx => {\n  if (condition) {\n    return ctx.error(400, 'Bad request') // 明确终止\n  }\n  // ctx.next() 是可选的，会自动继续执行\n})\n```\n\n### 路由分组\n\n使用路由器创建模块化的路由：\n\n```typescript\nimport { createRouter } from '@sunshj/server'\n\n// API 路由\nconst apiRouter = createRouter()\napiRouter.get('/users', getAllUsers)\napiRouter.post('/users', createUser)\napiRouter.get('/users/:id', getUser)\n\n// 管理员路由\nconst adminRouter = createRouter()\nadminRouter.use(adminAuthMiddleware) // 路由级中间件\nadminRouter.get('/stats', getStats)\nadminRouter.get('/logs', getLogs)\n\n// 挂载路由器\napp.use('/api/v1', apiRouter)\napp.use('/admin', adminRouter)\n```\n\n#### RouteGroup 挂载\n\n`RouteGroup` 可以通过 `use()` 挂载到其他 Router 或 App：\n\n```typescript\n// 创建 RouteGroup\nconst userGroup = app.route('/users')\nuserGroup.get(() => ({ action: 'list' }))\nuserGroup.get('/:id', ctx => ({ action: 'get', id: ctx.params.id }))\nuserGroup.post(() => ({ action: 'create' }))\n\n// 挂载到另一个 router\nconst apiRouter = createRouter()\napiRouter.use(userGroup) // 挂载到 /users\napiRouter.use('/v2', userGroup) // 挂载到 /v2/users\n\n// 最终挂载\napp.use('/api', apiRouter) // 路由变为 /api/users 和 /api/v2/users\n```\n\n### 智能响应\n\n框架会自动推断响应类型，让开发更简单：\n\n```typescript\n// 自动 JSON 响应\napp.get('/api/user', ctx => {\n  return { id: 1, name: 'John' } // → Content-Type: application/json\n})\n\n// 自动文本响应\napp.get('/health', ctx => {\n  return 'OK' // → Content-Type: text/plain\n})\n\n// 自动 HTML 响应\napp.get('/home', ctx => {\n  return '<h1>Welcome!</h1>' // → Content-Type: text/html\n})\n\n// HTML 模板字符串语法\napp.get('/profile', ctx => {\n  const name = 'John'\n  return ctx.html`<div><h1>Hello, ${name}!</h1></div>`\n})\n\n// 显式响应方法\napp.get('/explicit', ctx => {\n  return ctx.json({ success: true })\n  // 或 ctx.text('Hello')\n  // 或 ctx.html('<h1>Hello</h1>')\n  // 或 ctx.redirect('/login')\n})\n\n// 直接返回 Response 对象（用于高级场景）\napp.get('/custom', ctx => {\n  return new Response('Custom response', {\n    status: 200,\n    headers: {\n      'Content-Type': 'text/plain',\n      'X-Custom-Header': 'value'\n    }\n  })\n})\n\n// 链式调用设置状态码\napp.post('/create', ctx => {\n  return ctx.status(201).json({ created: true, id: 123 })\n})\n\n// 错误响应\napp.get('/error', ctx => {\n  return ctx.error(404, 'Resource not found')\n})\n```\n\n### 请求体处理\n\n现代化的请求体处理，智能且高效：\n\n```typescript\nimport { bodyParser, createApp } from '@sunshj/server'\n\nconst app = createApp()\n\n// 1. 注入 body parser 中间件（必须）\napp.use(\n  bodyParser({\n    maxSize: 10 * 1024 * 1024, // 全局最大 10MB\n    limits: {\n      json: 1 * 1024 * 1024, // JSON 限制 1MB\n      urlencoded: 1 * 1024 * 1024, // URL-encoded 限制 1MB\n      multipart: 50 * 1024 * 1024, // Multipart 限制 50MB\n      text: 1 * 1024 * 1024 // Text 限制 1MB\n    },\n    strict: false, // JSON 解析失败时降级为文本（默认 false）\n    allowEmpty: true // 允许空请求体（默认 true）\n  })\n)\n\n// 2. 使用 ctx.readBody() 读取请求体（推荐）\napp.post('/api/users', async ctx => {\n  const userData = await ctx.readBody() // ✅ 推荐：更好的类型推断\n\n  // 数据验证\n  if (!userData.name || !userData.email) {\n    return ctx.error(400, 'Name and email are required')\n  }\n\n  const user = await createUser(userData)\n  return ctx.status(201).json(user)\n})\n\n// 获取类型化查询参数\napp.get('/search', ctx => {\n  const query = ctx.getQuery<{ q: string; page?: string }>()\n  return { query: query.q, page: Number(query.page || 1) }\n})\n\n// 文件上传示例\napp.post('/upload', async ctx => {\n  // 使用便捷方法获取单个文件\n  const file = await ctx.file('avatar') // 获取名为 'avatar' 的文件\n\n  if (!file) {\n    return ctx.error(400, 'No file uploaded')\n  }\n\n  // 使用 Web Standards File API\n  const filename = `${Date.now()}-${file.name}`\n  const arrayBuffer = await file.arrayBuffer()\n\n  // 保存文件\n  await writeFile(filename, Buffer.from(arrayBuffer))\n\n  return {\n    message: 'File uploaded successfully',\n    filename,\n    size: file.size,\n    type: file.type\n  }\n})\n\n// 多文件上传\napp.post('/upload/multiple', async ctx => {\n  // 使用便捷方法获取多个文件\n  const files = await ctx.files('photos') // 获取名为 'photos' 的所有文件\n\n  if (!files || files.length === 0) {\n    return ctx.error(400, 'No files uploaded')\n  }\n\n  const uploadedFiles = await Promise.all(\n    files.map(async file => {\n      const filename = `${Date.now()}-${file.name}`\n      const arrayBuffer = await file.arrayBuffer()\n      await writeFile(filename, Buffer.from(arrayBuffer))\n      return { filename, size: file.size }\n    })\n  )\n\n  return {\n    message: `${files.length} files uploaded successfully`,\n    files: uploadedFiles\n  }\n})\n\n// 获取表单字段\napp.post('/form', async ctx => {\n  const name = await ctx.field('name') // 获取单个字段\n  const tags = await ctx.fields('tags') // 获取字段数组\n  const files = await ctx.files('documents') // 获取文件数组\n\n  return { name, tags, fileCount: files.length }\n})\n\n// 直接访问完整的 FormDataBody\napp.post('/upload/advanced', async ctx => {\n  const body = await ctx.readBody<FormDataBody>()\n\n  // FormDataBody 提供辅助方法\n  const singleFile = body.file('avatar') // 获取单个文件\n  const multipleFiles = body.fileArray('docs') // 获取文件数组\n  const fieldValue = body.field('name') // 获取单个字段值\n  const fieldArray = body.fieldArray('tags') // 获取字段数组\n\n  return {\n    file: singleFile?.name,\n    docs: multipleFiles.map(f => f.name),\n    name: fieldValue,\n    tags: fieldArray\n  }\n})\n```\n\n**Body Parser 特性：**\n\n- ✅ **必须注入**: 使用 `bodyParser()` 中间件注入解析器\n- ✅ **惰性解析**: 只在访问 `ctx.readBody()` 时解析\n- ✅ **智能检测**: 根据 Content-Type 自动选择解析方式\n- ✅ **大小限制**: 可针对不同类型设置不同的大小限制\n- ✅ **类型安全**: 完整的 TypeScript 类型支持\n- ✅ **Web Standards**: 使用原生 `request.json()`, `request.formData()` 等 API\n- ✅ **便捷方法**: `ctx.file()`, `ctx.files()`, `ctx.field()`, `ctx.fields()` 简化文件和字段访问\n\n## 🔥 高级用法\n\n### Server-Sent Events (SSE)\n\n框架原生支持返回 `ReadableStream`，可轻松实现 SSE 流式推送：\n\n```typescript\napp.get('/events', () => {\n  const stream = new ReadableStream({\n    start(controller) {\n      let count = 0\n      const interval = setInterval(() => {\n        if (count < 10) {\n          // 发送 SSE 格式的数据\n          controller.enqueue(`data: ${JSON.stringify({ count, time: Date.now() })}\\n\\n`)\n          count++\n        } else {\n          clearInterval(interval)\n          controller.close()\n        }\n      }, 1000)\n    },\n    cancel() {\n      console.log('SSE stream cancelled')\n    }\n  })\n\n  return new Response(stream, {\n    headers: {\n      'Content-Type': 'text/event-stream',\n      'Cache-Control': 'no-cache',\n      Connection: 'keep-alive'\n    }\n  })\n})\n```\n\n客户端连接：\n\n```javascript\nconst eventSource = new EventSource('/events')\neventSource.addEventListener('message', event => {\n  const data = JSON.parse(event.data)\n  console.log('Received:', data)\n})\n```\n\n### 错误处理\n\n```typescript\n// 自定义错误类\nclass ValidationError extends Error {}\n\n// 按错误类型注册处理器\napp.catch(ValidationError, (error, ctx) => {\n  return ctx.error(400, error.message)\n})\n\n// 路由器也可以按挂载路径和路径作用域处理错误\nconst admin = createRouter()\nadmin.catch('/settings/*', ValidationError, (error, ctx) => {\n  return ctx.error(422, error.message)\n})\napp.use('/admin', admin)\n\napp.post('/validate', async ctx => {\n  const data = await ctx.readBody()\n\n  if (!data.email) {\n    throw new ValidationError('Email is required')\n  }\n\n  return { valid: true }\n})\n```\n\n### Web Standards 兼容性\n\n框架基于 Web 标准 API 构建，提供 `fetch` 方法兼容多种运行时：\n\n```typescript\nimport { createApp } from '@sunshj/server'\n\nconst app = createApp()\n\napp.get('/hello', ctx => {\n  return { message: 'Hello, World!' }\n})\n\n// 使用 Web Standard Request/Response\nconst request = new Request('http://localhost:3000/hello')\nconst response = await app.fetch(request)\nconst data = await response.json()\nconsole.log(data) // { message: 'Hello, World!' }\n\n// 兼容 Cloudflare Workers、Deno、Bun 等运行时\nexport default {\n  fetch: app.fetch\n}\n```\n\n**Web Standards 特性：**\n\n- ✅ 使用标准 `Request` 和 `Response` 对象\n- ✅ 支持 `fetch(request)` 方法调用\n- ✅ 兼容 Node.js、Deno、Bun、Cloudflare Workers\n- ✅ 完全符合 Web API 规范\n\n### Hooks 生命周期\n\n框架提供完整的请求生命周期钩子，用于日志、监控和自定义处理：\n\n```typescript\nimport { LifeCycleEvents } from '@sunshj/server'\n\n// beforeRequest - 请求到达时（无法中断请求）\napp.on(LifeCycleEvents.beforeRequest, ctx => {\n  console.log(`→ ${ctx.method} ${ctx.url.pathname}`)\n})\n\n// beforeResponse - 响应发送前（可修改响应）\napp.on(LifeCycleEvents.beforeResponse, ctx => {\n  const headers = new Headers(ctx.response!.headers)\n  headers.set('X-Powered-By', '@sunshj/server')\n  return new Response(ctx.response!.body, {\n    status: ctx.response!.status,\n    headers\n  })\n})\n\n// afterResponse - 响应发送后（日志、性能统计、清理）\n// 这是实现\"响应后逻辑\"的推荐方式（而不是在中间件的 ctx.next() 之后写代码）\napp.on(LifeCycleEvents.afterResponse, (ctx, duration) => {\n  // 记录完整的请求/响应日志\n  console.log({\n    method: ctx.method,\n    path: ctx.url.pathname,\n    status: ctx.response!.status,\n    duration: `${duration}ms`,\n    userAgent: ctx.request.headers.get('user-agent')\n  })\n\n  // 发送性能指标到监控系统\n  // metrics.record('http.request.duration', duration, {\n  //   method: ctx.method,\n  //   status: ctx.response!.status\n  // })\n})\n\n// notFound - 自定义 404 处理\napp.on(LifeCycleEvents.notFound, ctx => {\n  return ctx.status(404).json({\n    error: 'Not Found',\n    path: ctx.url.pathname,\n    message: '请求的资源不存在'\n  })\n})\n```\n\n**Hooks 执行顺序：**\n\n```\n1. beforeRequest  → 请求到达\n2. 中间件链执行\n3. 路由处理器执行\n4. notFound       → (如果没有匹配的路由)\n5. beforeResponse → 修改响应\n6. 发送响应到客户端\n7. afterResponse  → 后台日志/清理（不阻塞响应）\n```\n\n**特别说明：**\n\n- `afterResponse` 在响应发送后执行，不会阻塞响应\n- `afterResponse` 中的所有注册的处理器都会执行（不会早期返回）\n- `afterResponse` 适合用于日志、监控、资源清理等场景\n- **这是实现\"响应后逻辑\"的推荐方式**，而不是在中间件的 `await ctx.next()` 之后写代码（那些代码不会执行）\n- 其他 hooks 会在第一个返回值时停止执行\n\n### 性能监控\n\n使用 `afterResponse` hook 实现性能监控（推荐方式）：\n\n```typescript\nimport { LifeCycleEvents } from '@sunshj/server'\n\n// 使用 afterResponse hook 记录请求时长\napp.on(LifeCycleEvents.afterResponse, (ctx, duration) => {\n  console.log(`${ctx.method} ${ctx.url.pathname} - ${duration.toFixed(2)}ms`)\n})\n\n// 请求计数器和日志\nlet requestCount = 0\napp.on(LifeCycleEvents.beforeRequest, ctx => {\n  requestCount++\n  console.log(`[${requestCount}] ${ctx.method} ${ctx.url.pathname}`)\n})\n```\n\n### 内容协商\n\n```typescript\napp.get('/api/data', ctx => {\n  const accept = ctx.headers.get('accept')\n  const data = { message: 'Hello', timestamp: Date.now() }\n\n  if (accept?.includes('application/xml')) {\n    return new Response(`<data><message>${data.message}</message></data>`, {\n      headers: { 'Content-Type': 'application/xml' }\n    })\n  }\n\n  return ctx.json(data) // 默认 JSON\n})\n```\n\n## 📖 TypeScript 支持\n\n框架提供完整的 TypeScript 支持和类型推断：\n\n### 导出的类和函数\n\n```typescript\n// 导入所有可用的类、函数和类型\nimport {\n  App, // 应用程序类\n  BodyParser, // 请求体解析器类\n  bodyParser, // 创建 body parser 中间件\n  Context, // 请求上下文类\n  ContextResponse, // 响应方法类\n  ContextScope, // 上下文作用域枚举\n  ErrorManager, // 错误处理管理器\n  EventManager, // 事件管理器\n  Layer, // Layer 架构基类\n  MiddlewareManager, // 中间件管理器\n  ProviderManager, // Provider 管理器\n  createApp, // 创建应用实例\n  createLogger, // 创建日志器实例\n  createRouter, // 创建路由器实例\n  createRpcClient, // 创建 RPC 客户端\n  defineRouteHandler, // 定义类型化路由处理器\n  LifeCycleEvents, // 生命周期钩子事件枚举\n  Logger, // 日志器类\n  logger, // 默认日志器实例\n  RouteGroup, // 路由组类\n  RouteHandlerError, // 路由处理器错误\n  Router, // 路由器类\n  RpcError, // RPC 调用错误\n  withRPC, // 为 App 添加 RPC 功能\n  type ErrorConstructor, // 错误构造器类型\n  type ErrorHandler, // 错误处理器类型\n  type Hooks, // 生命周期钩子类型\n  type HTTPMethod, // HTTP 方法类型\n  type LayerOwner, // Layer 所有者接口\n  type LogLevel, // 日志级别类型\n  type LoggerTransport, // 日志传输类型\n  type MaybeResponse, // 可能的响应类型\n  type FormDataBody, // 解析后的表单数据类型（包含辅助方法）\n  type FormDataBodyResult, // 解析后的表单数据类型（无方法）\n  type RouteHandler // 路由处理器类型\n} from '@sunshj/server'\n\n// 从 inspect 模块导入调试工具\nimport { printLayerStructure } from '@sunshj/server/inspect'\n\n// 从 body-parser 模块导入错误类（用于错误处理）\nimport { BodyParseError, BodySizeError } from '@sunshj/server/body-parser'\n\n// 从 utils 模块导入工具类型\nimport type { AnyString, Awaitable, PathParams, Prettify, RouteMethod } from '@sunshj/server/utils'\n\n// 扩展 Context 类型\ndeclare module '@sunshj/server' {\n  interface Context {\n    user?: { id: string; name: string }\n  }\n}\n\n// 类型化的处理函数\nconst getUser: RouteHandler<any, { id: string }> = async ctx => {\n  const { id } = ctx.params // id 自动推断为 string\n  const user = await findUserById(id)\n\n  if (!user) {\n    return ctx.error(404, 'User not found')\n  }\n\n  return { user }\n}\n\n// 🔷 路由组完整类型支持\n// 路径参数类型自动推断\napp.route('/users/:id').get(ctx => {\n  const { id } = ctx.params // ✅ id 类型为 string\n  return { user: { id } }\n})\n\napp.route('/posts/:postId').get('/comments/:commentId?', ctx => {\n  const { postId, commentId } = ctx.params // ✅ 完整类型推断: { postId: string, commentId?: string }\n  return { postId, commentId }\n})\n\n// 类型化路由参数自动推断\napp.get('/users/:id!number', ctx => {\n  const { id } = ctx.params // ✅ id 类型为 number\n  return { user: { id } }\n})\n\n// 类型化的中间件（使用 RouteHandler 类型）\n// 注意：中间件和路由处理器使用相同的 RouteHandler 类型\nconst logMiddleware: RouteHandler = ctx => {\n  console.log(`${ctx.method} ${ctx.url.pathname}`)\n  // ctx.next() 是可选的，不调用也会自动继续到下一个处理器\n}\n\n// 泛型支持\ninterface CreateUserBody {\n  name: string\n  email: string\n}\n\napp.post('/users', async (ctx: Context<CreateUserBody>) => {\n  const userData = await ctx.readBody() // 类型为 CreateUserBody\n  return { user: userData }\n})\n```\n\n**类型说明**：\n\n- `RouteHandler<Body, Params, Query>` - 统一的处理器类型，用于中间件和路由处理器\n- 中间件可以调用 `await ctx.next()` 显式继续执行链，也可以省略（自动继续）\n- 路由处理器必须返回值作为响应\n- 返回值会自动转换为 Response 对象（通过智能响应检测）\n\n## ⚡ 与 Express.js 对比\n\n| 特性       | @sunshj/server        | Express.js      |\n| ---------- | --------------------- | --------------- |\n| 包大小     | **~18KB (CJS)**       | 197KB           |\n| 依赖数量   | **0**                 | 20+             |\n| TypeScript | **原生支持**          | 需要 @types 包  |\n| 响应 API   | **现代化，自动推断**  | 传统 res.json() |\n| 性能       | **高性能，原生 HTTP** | 较重的抽象层    |\n| 中间件模型 | 线性执行              | 线性执行        |\n\n### 🔄 迁移示例\n\n**Express.js:**\n\n```javascript\nconst express = require('express')\n\nconst app = express()\napp.use(express.json())\n\napp.get('/users/:id', (req, res) => {\n  res.json({\n    user: { id: req.params.id }\n  })\n})\n\napp.post('/user', (req, res) => {\n  const data = req.body\n  res.json({\n    user: { data }\n  })\n})\n\napp.listen(3000)\n```\n\n**@sunshj/server:**\n\n```typescript\nimport { bodyParser, createApp } from '@sunshj/server'\n\nconst app = createApp()\napp.use(bodyParser())\n\napp.get('/users/:id', ctx => {\n  return {\n    user: { id: ctx.params.id }\n  }\n})\n\napp.post('/user', async ctx => {\n  const data = await ctx.readBody()\n  return {\n    user: { data }\n  }\n})\n\napp.listen(3000)\n```\n\n**迁移优势:**\n\n- ✅ 代码量减少 30%\n- ✅ 原生 TypeScript 支持\n- ✅ 更现代的 API 设计\n\n## 📋 API 参考\n\n### 核心函数\n\n#### createApp(options?)\n\n创建应用实例。\n\n```typescript\nimport { createApp } from '@sunshj/server'\n\n// 基础用法\nconst app = createApp()\n\n// 带配置选项\nconst app = createApp({\n  server: {\n    timeout: 120000, // 请求超时时间（毫秒）\n    keepAliveTimeout: 5000, // Keep-Alive 超时时间（毫秒）\n    maxHeaderSize: 16384 // 最大请求头大小（字节）\n  }\n})\n```\n\n#### createRouter()\n\n创建路由器实例。\n\n```typescript\nimport { createRouter } from '@sunshj/server'\nconst router = createRouter()\n```\n\n#### defineRouteHandler()\n\n定义类型化的路由处理函数,提供完整的类型推断支持。\n\n```typescript\nimport { defineRouteHandler } from '@sunshj/server'\n\n// 定义类型化的处理函数\nconst getUserHandler = defineRouteHandler<\n  any, // Body type\n  { id: string }, // Params type\n  { include?: string } // Query type\n>(async ctx => {\n  const { id } = ctx.params // 自动推断为 string\n  const { include } = ctx.query // 自动推断为 string | undefined\n\n  const user = await findUserById(id)\n  if (!user) {\n    return ctx.error(404, 'User not found')\n  }\n\n  return { user }\n})\n\napp.get('/users/:id', getUserHandler)\n\n// 用于创建可复用的中间件\nfunction zodValidator(schemas: Schema) {\n  return defineRouteHandler(async ctx => {\n    // 验证逻辑\n    await ctx.next()\n  })\n}\n```\n\n#### bodyParser(options?)\n\n创建 body parser 中间件,用于解析请求体。\n\n```typescript\nimport { bodyParser } from '@sunshj/server'\n\n// 基础用法\napp.use(bodyParser())\n\n// 自定义配置\napp.use(\n  bodyParser({\n    maxSize: 5 * 1024 * 1024, // 全局最大 5MB\n    limits: {\n      json: 1 * 1024 * 1024, // JSON 限制 1MB\n      urlencoded: 1 * 1024 * 1024, // URL-encoded 限制 1MB\n      multipart: 10 * 1024 * 1024, // Multipart 限制 10MB\n      text: 1 * 1024 * 1024 // Text 限制 1MB\n    },\n    strict: true, // 严格模式：JSON 解析失败时抛出错误\n    allowEmpty: true // 允许空请求体\n  })\n)\n```\n\n### App 属性和方法\n\n创建的应用实例提供以下方法：\n\n| 方法                                     | 类型                     | 描述                             |\n| ---------------------------------------- | ------------------------ | -------------------------------- |\n| `app.listen(port, hostname?, callback?)` | `void` / `Promise<void>` | 启动 HTTP 服务器，可指定主机名   |\n| `app.close()`                            | `Promise<void>`          | 关闭 HTTP 服务器，清理全局状态   |\n| `app.fetch(request)`                     | `Promise<Response>`      | Web Standards 兼容的请求处理方法 |\n| `app.on(event, handler)`                 | `this`                   | 注册生命周期钩子                 |\n| `app.off(event, handler?)`               | `this`                   | 移除生命周期钩子                 |\n| `app.emit(event, ...args)`               | `Promise<any>`           | 触发生命周期钩子                 |\n\n**访问底层 HTTP 服务器示例：**\n\n```typescript\nconst app = createApp()\n\napp.get('/', ctx => ({ message: 'Hello' }))\n\napp.listen(3000, server => {\n  // 回调函数接收 server 实例作为参数\n  console.log('Server:', server.address())\n})\n```\n\n### Router 和 Middleware\n\n`Router` 内部组合 `MiddlewareManager`，提供路由注册和中间件管理功能：\n\n```typescript\n// Router 提供的 HTTP 方法\nrouter.get(path, ...handlers)\nrouter.post(path, ...handlers)\nrouter.put(path, ...handlers)\nrouter.delete(path, ...handlers)\nrouter.patch(path, ...handlers)\nrouter.head(path, ...handlers)\nrouter.options(path, ...handlers)\nrouter.all(path, ...handlers) // 匹配所有 HTTP 方法\n\n// 中间件注册\nrouter.use(middleware) // 全局中间件\nrouter.use(path, middleware) // 路径中间件\nrouter.use(router) // 挂载子路由器\nrouter.use(path, router) // 挂载子路由器到指定路径\nrouter.use(routeGroup) // 挂载路由组\nrouter.use(path, routeGroup) // 挂载路由组到指定路径\n\n// 错误处理\nrouter.catch(handler) // 捕获当前作用域内所有错误\nrouter.catch(ErrorType, handler) // 捕获指定错误类型\nrouter.catch(path, handler) // 捕获指定路径作用域内所有错误\nrouter.catch(path, ErrorType, handler) // 捕获指定路径作用域内的指定错误类型\n\n// 调试 layer 结构\nconsole.log(printLayerStructure(router, { includeHandlers: true }))\n\n// 路由组\nrouter.route(basePath) // 返回 RouteGroup 实例\n```\n\n### Layer 调试工具\n\n使用 `printLayerStructure` 查看 Router/App 的内部 Layer 结构，便于调试：\n\n```typescript\nimport { createApp, createRouter } from '@sunshj/server'\nimport { printLayerStructure } from '@sunshj/server/inspect'\n\nconst app = createApp()\nconst router = createRouter()\n\nrouter.get('/users', handler)\nrouter.use(middleware)\nrouter.catch(ErrorHandler)\n\n// 打印 layer 结构（默认显示 handler 名称和优先级评分）\nconsole.log(printLayerStructure(router))\n// Router <id> scope=APP\n// routes:\n//   [0] GET /users scope=APP contextId=<id> handlers=[handler]\n// middlewares:\n//   [0] scope=APP contextId=<id> handler=middleware\n// errors:\n//   [0] <any> scope=APP contextId=<id> score=0 handler=ErrorHandler\n// events:\n//   <empty>\n// providers:\n//   <empty>\n```\n\n### 自定义事件系统\n\n框架支持自定义事件，可通过 `ctx.on()`/`ctx.emit()` 在请求处理过程中进行组件间通信：\n\n```typescript\n// 在中间件中注册事件监听\napp.use(ctx => {\n  ctx.on('user:loaded', user => {\n    console.log('User loaded:', user.name)\n  })\n})\n\n// 在路由处理器中触发事件\napp.get('/users/:id', async ctx => {\n  const user = await loadUser(ctx.params.id)\n\n  // 触发自定义事件，监听器可以返回值\n  await ctx.emit('user:loaded', user)\n\n  return { user }\n})\n```\n\n### 作用域依赖注入\n\n使用 `ctx.provide()`/`ctx.inject()` 进行作用域感知的依赖注入：\n\n```typescript\n// 在 App 级别提供共享资源\napp.provide('db', createDatabaseConnection())\n\n// 在 Router 级别覆盖（仅对该 Router 路由生效）\napiRouter.provide('db', createReadonlyDatabase())\n\n// 在路由处理器中注入\napp.get('/users', ctx => {\n  const db = ctx.inject<Database>('db')\n  return db.query('SELECT * FROM users')\n})\n\n// 带默认值\napp.get('/cache', ctx => {\n  const cache = ctx.inject<Cache>('cache', new Map())\n  return cache.get('key')\n})\n\n// 强制覆盖已存在的 provider（默认会警告且不覆盖）\napp.provide('config', newConfig, true)\n```\n\n**Provider 解析优先级：**\n\n1. Router 路径级（最高优先级）\n2. Router 全局级\n3. App 路径级\n4. App 全局级\n\n### Context 属性\n\n| 属性           | 类型                                 | 描述                                 |\n| -------------- | ------------------------------------ | ------------------------------------ |\n| `ctx.params`   | `Record<string, string>`             | 路径参数（支持类型注解，见路由定义） |\n| `ctx.query`    | `Record<string, string \\| string[]>` | 查询参数（重复键自动合并为数组）     |\n| `ctx.headers`  | `Headers`                            | Web Standard Headers 对象            |\n| `ctx.method`   | `HTTPMethod`                         | HTTP 方法                            |\n| `ctx.url`      | `URL`                                | URL 对象                             |\n| `ctx.request`  | `Request`                            | Web Standard Request 对象            |\n| `ctx.response` | `Response \\| null`                   | 当前响应对象（在 hooks 中访问）      |\n| `ctx.next`     | `() => Promise<void>`                | 调用下一个中间件/处理器              |\n\n### Context 方法\n\n#### 实例方法\n\n| 方法                                  | 描述                                                 | 示例                               |\n| ------------------------------------- | ---------------------------------------------------- | ---------------------------------- |\n| `ctx.json(data)`                      | JSON 响应                                            | `ctx.json({ success: true })`      |\n| `ctx.text(text)`                      | 文本响应                                             | `ctx.text('Hello World')`          |\n| `ctx.html(html)`                      | HTML 响应                                            | `ctx.html('<h1>Hello</h1>')`       |\n| ``ctx.html`template` ``               | HTML 模板字符串响应                                  | ``ctx.html`<h1>${name}</h1>` ``    |\n| `ctx.status(code)`                    | 设置状态码                                           | `ctx.status(201)`                  |\n| `ctx.redirect(url, status?)`          | 重定向                                               | `ctx.redirect('/login', 302)`      |\n| `ctx.error(status, message)`          | 错误响应                                             | `ctx.error(404, 'Not Found')`      |\n| `ctx.setHeader(name, value)`          | 设置响应头（在最终响应中合并）                       | `ctx.setHeader('X-Custom', 'val')` |\n| `ctx.readBody<T>()`                   | 读取类型化请求体（推荐）                             | `await ctx.readBody<UserData>()`   |\n| `ctx.getQuery<T>()`                   | 获取类型化查询参数                                   | `ctx.getQuery<{ page: string }>()` |\n| `ctx.file(fieldName)`                 | 获取单个上传文件                                     | `await ctx.file('avatar')`         |\n| `ctx.files(fieldName)`                | 获取多个上传文件                                     | `await ctx.files('photos')`        |\n| `ctx.field(fieldName)`                | 获取单个表单字段                                     | `await ctx.field('name')`          |\n| `ctx.fields(fieldName)`               | 获取多个表单字段                                     | `await ctx.fields('tags')`         |\n| `ctx.provide(key, value, overwrite?)` | 提供作用域共享状态（默认不覆盖，传 `true` 强制覆盖） | `ctx.provide('db', dbInstance)`    |\n| `ctx.inject<T>(key)`                  | 注入作用域共享状态                                   | `ctx.inject<Database>('db')`       |\n| `ctx.on(event, handler)`              | 注册自定义事件监听                                   | `ctx.on('loaded', handler)`        |\n| `ctx.off(event, handler?)`            | 移除事件监听                                         | `ctx.off('loaded', handler)`       |\n| `ctx.emit(event, ...args)`            | 触发自定义事件                                       | `await ctx.emit('loaded', data)`   |\n\n#### 静态方法\n\n| 方法                              | 描述           | 示例                               |\n| --------------------------------- | -------------- | ---------------------------------- |\n| `Context.json(data, statusCode?)` | 创建 JSON 响应 | `Context.json({ ok: true }, 200)`  |\n| `Context.text(text, statusCode?)` | 创建文本响应   | `Context.text('Hello', 200)`       |\n| `Context.html(html, statusCode?)` | 创建 HTML 响应 | `Context.html('<h1>Hi</h1>', 200)` |\n| `Context.error(status, message?)` | 创建错误响应   | `Context.error(404, 'Not Found')`  |\n\n### 错误处理类\n\n框架提供了三个专门的错误类，用于处理不同类型的错误场景：\n\n#### BodyParseError\n\n请求体解析错误，当解析失败或验证失败时抛出。\n\n```typescript\nimport { BodyParseError, BodySizeError } from '@sunshj/server/body-parser'\n\ntry {\n  const data = await ctx.readBody()\n} catch (error) {\n  if (error instanceof BodyParseError) {\n    console.error('Parse error:', error.message)\n    console.error('Raw body:', error.rawBody)\n    return ctx.error(400, 'Invalid request body')\n  }\n}\n```\n\n**属性：**\n\n- `message: string` - 错误信息\n- `rawBody: string` - 原始请求体内容\n\n#### BodySizeError\n\n请求体大小超限错误，当请求体或文件超过配置的大小限制时抛出。\n\n```typescript\ntry {\n  const data = await ctx.readBody()\n} catch (error) {\n  if (error instanceof BodySizeError) {\n    console.error('Size limit exceeded:', error.actualSize, '>', error.limitSize)\n    return ctx.error(413, `Request too large: ${error.actualSize} bytes`)\n  }\n}\n```\n\n**属性：**\n\n- `message: string` - 错误信息\n- `actualSize: number` - 实际大小（字节）\n- `limitSize: number` - 限制大小（字节）\n\n#### RouteHandlerError\n\n路由处理器错误，当路由处理器没有返回值时抛出。\n\n```typescript\nimport { RouteHandlerError } from '@sunshj/server'\n\n// 框架内部使用，用户一般不需要手动抛出\n// 当最后一个路由处理器没有返回响应时会自动抛出\n```\n\n**属性：**\n\n- `message: string` - 错误信息\n\n### 日志系统\n\n框架提供内置的日志工具，支持日志级别和格式化输出：\n\n```typescript\nimport { createLogger, logger, type LogLevel } from '@sunshj/server'\n\n// 使用默认日志器\nlogger.info('Server started')\nlogger.error('Something went wrong')\n\n// 创建自定义日志器\nconst appLogger = createLogger({\n  level: 'debug', // 'debug' | 'info' | 'warn' | 'error' | 'silent'\n  prefix: 'MyApp',\n  timestamp: true\n})\n\nappLogger.debug('Debug message') // 只有 level >= debug 才会输出\nappLogger.info('Info message')\nappLogger.warn('Warning message')\nappLogger.error('Error message')\n\n// 设置日志级别\nappLogger.setLevel('warn') // 只输出 warn 和 error\nappLogger.setPrefix('NewPrefix')\n\n// 创建子日志器\nconst childLogger = appLogger.child({ prefix: 'SubModule' })\nchildLogger.info('Child logger message') // [MyApp:SubModule] ...\n```\n\n**Logger 方法：**\n\n| 方法                 | 描述                       |\n| -------------------- | -------------------------- |\n| `logger.debug(...)`  | 输出 debug 级别日志        |\n| `logger.info(...)`   | 输出 info 级别日志         |\n| `logger.warn(...)`   | 输出 warn 级别日志         |\n| `logger.error(...)`  | 输出 error 级别日志        |\n| `logger.log(...)`    | info 的别名                |\n| `logger.setLevel()`  | 设置日志级别               |\n| `logger.setPrefix()` | 设置日志前缀               |\n| `logger.child(opts)` | 创建子日志器，继承父级配置 |\n\n### RPC 系统\n\n框架提供类型安全的 RPC（远程过程调用）系统，支持服务端和客户端：\n\n```typescript\n// 服务端\nimport { bodyParser, createApp, withRPC } from '@sunshj/server'\n\nconst app = withRPC(createApp())\n\napp.use(bodyParser())\n\n// 定义 RPC 函数\nconst rpcFunctions = {\n  add(a: number, b: number) {\n    return a + b\n  },\n  getUser(id: string) {\n    return { id, name: `User ${id}` }\n  }\n}\n\n// 注册 RPC 处理器（默认路径: /__rpc）\napp.registerRpcFunctions(rpcFunctions)\n\napp.listen(3000)\n```\n\n```typescript\n// 客户端\nimport { createRpcClient, RpcError } from '@sunshj/server/rpc'\n\n// 创建类型安全的 RPC 客户端\nconst client = createRpcClient<typeof rpcFunctions>('http://localhost:3000', {\n  timeout: 30000, // 请求超时（毫秒）\n  headers: { Authorization: 'Bearer token' } // 自定义请求头\n})\n\n// 调用远程函数（完整类型推断）\nconst sum = await client.add(1, 2) // 类型: number\nconst user = await client.getUser('123') // 类型: { id: string, name: string }\n\n// 错误处理\ntry {\n  await client.unknownMethod()\n} catch (error) {\n  if (error instanceof RpcError) {\n    console.error(error.code, error.message)\n  }\n}\n```\n\n**RPC 导出：**\n\n| 导出              | 描述                      |\n| ----------------- | ------------------------- |\n| `withRPC(app)`    | 为 App 添加 RPC 功能      |\n| `createRpcClient` | 创建类型安全的 RPC 客户端 |\n| `RpcError`        | RPC 调用错误类            |\n\n### 静态文件服务\n\n框架提供内置的静态文件服务中间件，支持 SSG 和 SPA 两种模式：\n\n```typescript\nimport { createApp } from '@sunshj/server'\nimport { serveStatic } from '@sunshj/server/serve-static'\n\nconst app = createApp()\n\n// SSG 模式（默认）- 纯静态文件服务，文件不存在继续下一个中间件\napp.use(serveStatic('./public'))\n\n// SPA 模式 - 文件不存在回退到 index.html\napp.use(serveStatic('./dist', { mode: 'spa' }))\n\n// 自定义配置\napp.use(\n  serveStatic('./assets', {\n    // 目录默认文件\n    index: ['index.html', 'index.htm'],\n    // 自定义 MIME 类型\n    mimeTypes: {\n      woff2: 'font/woff2',\n      mp4: 'video/mp4'\n    },\n    // 自定义响应处理（如添加缓存头）\n    onFile: (ctx, filePath, stats, response) => {\n      const headers = new Headers(response.headers)\n      headers.set('Cache-Control', 'public, max-age=86400')\n      return new Response(response.body, { headers })\n    },\n    // 文件未找到时的自定义处理\n    onNotFound: ctx => {\n      return ctx.json({ error: 'File not found' }, { status: 404 })\n    }\n  })\n)\n\napp.listen(3000)\n```\n\n**serveStatic 选项：**\n\n| 选项          | 类型                                           | 默认值         | 描述                       |\n| ------------- | ---------------------------------------------- | -------------- | -------------------------- |\n| `mode`        | `'ssg' \\| 'spa'`                               | `'ssg'`        | 服务模式                   |\n| `fallback`    | `string`                                       | `'index.html'` | SPA 模式的 fallback 文件名 |\n| `index`       | `string \\| string[]`                           | `'index.html'` | 目录访问时的默认文件       |\n| `mimeTypes`   | `Record<string, string>`                       | -              | 自定义 MIME 类型映射       |\n| `resolveFile` | `(dir, pathname) => Promise<string \\| null>`   | -              | 自定义文件查找函数         |\n| `onFile`      | `(ctx, filePath, stats, response) => Response` | -              | 自定义响应处理             |\n| `onNotFound`  | `(ctx) => Response \\| undefined`               | -              | 文件未找到时的自定义处理   |\n\n**导出函数：**\n\n| 导出                 | 描述                                  |\n| -------------------- | ------------------------------------- |\n| `serveStatic`        | 创建静态文件服务中间件                |\n| `createFileResponse` | 创建文件响应（返回 response + stats） |\n| `FileStats`          | 文件统计信息类型                      |\n| `ServeStaticOptions` | 配置选项类型                          |\n\n## 🌐 生态系统\n\n虽然框架本身轻量，但可通过中间件无限扩展：\n\n```typescript\n// CORS 中间件\nfunction cors(options = {}) {\n  return ctx => {\n    if (ctx.method === 'OPTIONS') {\n      return new Response(null, {\n        status: 204,\n        headers: {\n          'Access-Control-Allow-Origin': options.origin || '*',\n          'Access-Control-Allow-Methods': 'GET,POST,PUT,DELETE,OPTIONS',\n          'Access-Control-Allow-Headers': 'Content-Type,Authorization'\n        }\n      })\n    }\n    // ctx.next() 是可选的，会自动继续\n  }\n}\n\n// JWT 认证中间件\nfunction jwt(secret: string) {\n  return ctx => {\n    const token = ctx.headers.get('authorization')?.replace('Bearer ', '')\n\n    if (!token) {\n      return ctx.error(401, 'Token required')\n    }\n\n    try {\n      ctx.user = verifyJWT(token, secret)\n      // 不需要 ctx.next()，会自动继续\n    } catch {\n      return ctx.error(401, 'Invalid token')\n    }\n  }\n}\n\n// 使用中间件\napp.use(cors({ origin: 'https://example.com' }))\napp.use('/api/*', jwt('your-secret'))\n```\n\n## 📄 许可证\n\n[MIT](LICENSE) © [sunshj](https://github.com/sunshj)\n","readmeFilename":"README.md"}