Commit Graph
11 Commits
Author SHA1 Message Date
wc24 4b51d31e9f feat(tab): 拆开展示与序列化 — field.format(展示) vs stringify/parse(可逆往返)
v0.6.3 用同一个 stringify 同时扛表格展示和 export 序列化,二者诉求冲突:
展示要好看可有损,export 要可逆完整。现拆为:
- field.format → _label 展示文本(给人看,可有损),默认 JSON.stringify
- field.stringify/parse → export/import 可逆对(机器往返),默认 JSON
export 改用 stringify(可逆)而非 _label,import 的 parse 能还原。
2026-06-29 16:42:11 +08:00
wc24 c5c06bee13 feat(tab): 结构化字段端到端传对象,给人看的边界走 _label/stringify
tab 字段原把对象 JSON.stringify 成字符串下发(复用 json 的 resFilter),
导致前端 FieldTab 收到字符串:表格 display 显示 '-'、编辑回退默认值。

改为:
- 库/响应/编辑全程对象(去掉 tab 的 resFilter stringify)
- 新增 resLabel 钩子 → 写入 ${key}_label,承载给人看的字符串文本
- export 边界用 _label 文本替换对象列(可读且可被 import 的 parse 还原)
- 字段级可配 stringify/parse,默认 JSON
2026-06-29 15:45:58 +08:00
wc24 9fff8c472d v0.6.2: powers 字段改自定义类型,绕过前置验证的标量类型校验 2026-06-08 19:22:56 +08:00
wc24 187c6f6030 v0.6.1: 改为编译 ship,通过 npm prepare hook 自动构建
- 加 tsconfig.build.json,排除 test,rootDir 设为 src
- package.json: main/types/exports 指向 dist/main/index.{js,d.ts}
- prepare hook: 消费侧 git 安装后自动 tsc,产物不进 git
- 解决消费侧 "tsc + 裸 node" 链路 (theseus-server 等) 找不到 .js 的问题
2026-06-01 19:32:48 +08:00
wc24 c99ea0e18c v0.6.0: 收单入口
- 类型契约/Express 装配/MongoShrimp 全部合并进 src/main/index.ts
- 删 src/main/expmon.ts、src/main/types.ts
- package.json exports 收成只剩 "."(和 ./package.json)
- IShrimpType.ts 头加 @contractVersion 1.0.0(供 shrimp-admin 副本对照)

未上生产,直接断掉 shrimp-server/expmon、shrimp-server/types 两个子入口。
2026-05-23 22:27:36 +08:00
wc24 ca283c6733 v0.5.0: 重新组织目录结构,按职责拆分
- Shrimp.ts (875 行) 按类拆分到 Shrimp/(7 文件: Shrimp, ShrimpModule, ShrimpTableModule, ShrimpPower, ShrimpCrud, UserRoleModule, OperationLogModule)
- forMongo/: MongoShrimpCrud + MongoShrimp(原 ShrimpServer 的 mongo 装配部分,无 express)
- forExpress/: buildShrimpRouter + jwtAuth + types
- main/: index(0 依赖核心) + expmon(express+mongo 整合,导出 ShrimpServer) + types(纯协议)
- 入口子路径 server → expmon(express+mongo 整合方案命名更准确)
- 删除冗余的 index.ts / core.ts(合并为 main/index.ts)
2026-05-23 19:44:02 +08:00
wc24 e8fc126fa6 feat: 新增 ./types 子入口,只 ship IShrimpType.ts
前端 / shrimp-admin / 任何"只要协议、不要框架运行时"的消费方装上
shrimp-server 后,import from 'shrimp-server/types' 就能拿到 types
+ ShrimpCode + ShrimpError,不会触发 Shrimp 主类 / Mongoose / express。

IShrimpType.ts 无外部 import,exports 字段把它单独切出来,vite/webpack
打包到前端时不会顺手拉走 Mongo 链。

v0.4.0
2026-05-23 19:03:04 +08:00
wc24 416eb84db7 refactor(server): 拆分 ShrimpServer → buildShrimpRouter + tokenAuth + accessor
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
2026-05-23 17:10:03 +08:00
wc24 36326ac26b chore: 删除 examples/ — git+http install 会把它一起拖给消费方
包内自带的 Vue demo 不是 shrimp 框架的一部分,git+http 安装时
`files: [...]` 不生效,examples/(尤其 web/ Vue 子项目)会进消费方
node_modules,污染 install 体积并触发 tsc 噪音。

完整接入示例去 hand-server-2 主项目看;basic-admin 那种零依赖
demo 可以以后单独 pin 在 docs/ 或独立仓库。
2026-05-23 16:54:58 +08:00
wc24 8e4d5620b7 feat!: 拆分 core / server 入口,peer deps 全部 optional
让只用 Shrimp 核心(RPC + 模块声明 + 内存 CRUD)的项目不必装
express / mongoose / bcrypt / jsonwebtoken,显著降低 install 时间。

- src/core.ts:0 重依赖入口(Shrimp / MemoryShrimpCrud / 类型)
- src/server.ts:在 core 之上再导出 ShrimpServer + MongoShrimpCrud
- package.json:加 exports 字段 + peerDependenciesMeta.optional
- Shrimp.ts:bcrypt 改 lazy import,只有走 Password 字段才触发
- MemoryShrimpCrud.populateItems:接 crudRegistry 参数(对齐 Mongo)
- ShrimpTableModule 构造时自动登记 crudRegistry,业务无需手动 wire
- 新增 test/crudRegistry.test.ts 验证自动登记 + relation 自动 populate

BREAKING: import { ShrimpServer } from 'shrimp-server' 不再可用,
请改为 'shrimp-server/server'。
2026-05-23 16:47:18 +08:00
wc24 8548a1760a init: 从 cs-hand/hand-server-2/lib/shrimp 抽出独立仓
- 6 个框架源文件搬到 src/, 加 src/index.ts barrel 作为公共 API 入口
- package.json 标 private, main/types 指 src/index.ts (ts-node 消费方编译)
- 加 vitest + 22 条单元测试 (ILabel / MemoryShrimpCrud) 全通过
- examples/basic-admin/ 用 MemoryShrimpCrud 跑零 Mongo 依赖 demo

待办: ShrimpServer 强耦合 Mongo+JWT+Express, crudRegistry 用
.model 判断数据源, 这两个问题在 demo 中已暴露, 计划后续重构补到 90 分。
2026-05-23 15:07:55 +08:00