ShrimpServer 之前一锅端 Express routes / JWT / Mongoose / 用户字段访问。
现在拆成独立部件,消费方可以单独换掉任何一块:
- src/server/types.ts: ITokenAuth, IUserAccessor, IShrimpRouterDeps
- src/server/jwtAuth.ts: createJwtTokenAuth(secret | options) 默认 JWT 适配器
- src/server/buildShrimpRouter.ts: 纯函数,不直接 import jsonwebtoken/mongoose
- src/server/ShrimpServer.ts: 装配体,protected create* factory 保留,
子类化扩展不破坏(hand-server-2 的 AdminApi extends ShrimpServer 仍能用)
- src/server/index.ts: 'shrimp-server/server' entry,额外暴露低阶 API
test/buildShrimpRouter.test.ts: 用 MemoryShrimpCrud + 假 ITokenAuth 拼出
独立 Router,跑通 /config /login /me 全流程 — 保证 buildShrimpRouter 不
偷偷耦合回 ShrimpServer。
v0.3.0
54 lines
1.5 KiB
JSON
54 lines
1.5 KiB
JSON
{
|
|
"name": "shrimp-server",
|
|
"version": "0.3.0",
|
|
"private": true,
|
|
"description": "Shrimp 框架后端 — 声明式字段驱动的 Node.js 管理后台框架(Express + Mongoose + JWT)",
|
|
"main": "src/index.ts",
|
|
"types": "src/index.ts",
|
|
"exports": {
|
|
".": {
|
|
"types": "./src/core.ts",
|
|
"default": "./src/core.ts"
|
|
},
|
|
"./server": {
|
|
"types": "./src/server/index.ts",
|
|
"default": "./src/server/index.ts"
|
|
},
|
|
"./package.json": "./package.json"
|
|
},
|
|
"files": [
|
|
"src",
|
|
"README.md"
|
|
],
|
|
"scripts": {
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"typecheck": "tsc --noEmit"
|
|
},
|
|
"peerDependencies": {
|
|
"express": "^4 || ^5",
|
|
"mongoose": "^6 || ^7 || ^8",
|
|
"jsonwebtoken": "^8 || ^9",
|
|
"bcrypt": "^5 || ^6"
|
|
},
|
|
"peerDependenciesMeta": {
|
|
"express": { "optional": true },
|
|
"mongoose": { "optional": true },
|
|
"jsonwebtoken": { "optional": true },
|
|
"bcrypt": { "optional": true }
|
|
},
|
|
"devDependencies": {
|
|
"@types/express": "^4.17.21",
|
|
"@types/jsonwebtoken": "^9.0.0",
|
|
"@types/bcrypt": "^5.0.0",
|
|
"@types/node": "^20.0.0",
|
|
"bcrypt": "^5.1.1",
|
|
"express": "^4.19.0",
|
|
"jsonwebtoken": "^9.0.2",
|
|
"mongoose": "^8.0.0",
|
|
"tsx": "^4.7.0",
|
|
"typescript": "^5.3.0",
|
|
"vitest": "^1.4.0"
|
|
}
|
|
}
|