新增 IPasswordHasher 抽象 + bcryptHasher(默认,lazy import)+ plainHasher
(测试用)。Password 字段 reqFilter 和 UserModule.verifyPassword 都走
`Shrimp.passwordHasher`,消费方在启动期换实现就能彻底跳过 bcrypt。
import { Shrimp, plainHasher } from "shrimp-server"
Shrimp.passwordHasher = plainHasher
测试覆盖默认值、plain 端到端登录、自定义 hasher 被调用。
83 lines
1.9 KiB
TypeScript
83 lines
1.9 KiB
TypeScript
/**
|
|
* Shrimp 核心入口 — 0 重依赖
|
|
*
|
|
* 只暴露 Shrimp 框架本体 + 内存数据源 + 类型定义,不引入
|
|
* express / mongoose / jsonwebtoken。bcrypt 是 lazy import,
|
|
* 不走 Password 字段就不会触发。
|
|
*
|
|
* 适用场景:
|
|
* - 只想用 Shrimp 的 RPC dispatch + 模块/字段声明 + 内存 CRUD
|
|
* - 自己接 HTTP / 自己写存储层
|
|
* - 跑测试 / 跑无 DB 的 demo
|
|
*
|
|
* 需要完整后台(Express + Mongoose + JWT)请从 'shrimp-server/server' 导入。
|
|
*/
|
|
|
|
// ===== 类型 / 接口 / 枚举 =====
|
|
export {
|
|
ShrimpCode,
|
|
ShrimpError,
|
|
ShrimpFieldTypes,
|
|
ShrimpConfig,
|
|
isShrimpCondition,
|
|
} from "./IShrimpType"
|
|
|
|
export type {
|
|
ILabel,
|
|
IShrimpResponse,
|
|
IModuleInfo,
|
|
ILoginResult,
|
|
IMeResult,
|
|
IMenuItem,
|
|
ITableProto,
|
|
ITableCrudProto,
|
|
IUser,
|
|
IRole,
|
|
IOperationLog,
|
|
WithId,
|
|
IShrimpOperator,
|
|
IShrimpPowerData,
|
|
ShrimpRequestFn,
|
|
IShrimpClient,
|
|
ShrimpFieldType,
|
|
FieldEditable,
|
|
IFieldTypeHandler,
|
|
IFieldConfig,
|
|
IFieldRule,
|
|
IPageQuery,
|
|
IPageResult,
|
|
IShrimpCondition,
|
|
IShrimpPopulate,
|
|
IShrimpQuery,
|
|
IPowerItem,
|
|
IUserProto,
|
|
IRoleProto,
|
|
} from "./IShrimpType"
|
|
|
|
// ===== 框架核心 =====
|
|
export {
|
|
Shrimp,
|
|
ShrimpModule,
|
|
ShrimpTableModule,
|
|
ShrimpPower,
|
|
RootShrimpPower,
|
|
UserModule,
|
|
RoleModule,
|
|
defaultTypeHandlers,
|
|
} from "./Shrimp"
|
|
|
|
export type {
|
|
IShrimpModuleOptions,
|
|
ShrimpCrud,
|
|
} from "./Shrimp"
|
|
|
|
// ===== 密码哈希(可注入,默认 bcrypt lazy import) =====
|
|
export { bcryptHasher, plainHasher } from "./PasswordHasher"
|
|
export type { IPasswordHasher } from "./PasswordHasher"
|
|
|
|
// ===== 数据源(纯内存,无外部依赖) =====
|
|
export { MemoryShrimpCrud } from "./MemoryShrimpCrud"
|
|
|
|
// ===== 可选模块(纯框架代码,无外部依赖) =====
|
|
export { OperationLogModule } from "./OperationLogModule"
|