@cosmicdrift/kumiko-框架
Kumiko-发动机、管道、API、DB、事件存储和 每一分钱都能让久美子走.
Bun + Hono + 的多租户、基于命令、事件源应用程序框架 后发相. 定义特性、注册实体、写入命令——框架 电线发送、持久性、预测、同步用户和实时 交货.
见 单列波根 README 为了更大的投出 文件/计划 建筑目录,以及 样本/ 用于每个特性的可运行示例.
安装
bun add @cosmicdrift/kumiko-framework
# peers you probably already have:
bun add hono ioredis zod
Bun是预定的运行时间和测试跑者.
闪亮
import { createEntity, createTextField, defineFeature } from "@cosmicdrift/kumiko-framework/engine";
export const taskEntity = createEntity({
table: "read_tasks",
fields: {
title: createTextField({ required: true, searchable: true }),
done: createTextField(),
},
softDelete: true,
});
export const taskFeature = defineFeature("tasks", (r) => {
// r.crud wires create/update/delete/restore + list/detail queries in one
// call — events + projection in the same TX, optimistic locking, access
// control, all explicit via the options below.
r.crud("task", taskEntity, {
write: { access: { roles: ["User"] } },
read: {
access: {
openToAll: {
reason: "any signed-in user may list and view tasks; only writes are role-gated",
},
},
},
});
// Read-model fed from task events, rebuildable via the CLI
r.projection({
name: "tasks-per-day",
source: "task",
table: tasksPerDayTable,
apply: {
"task.created": async (event, tx) => {
/* count++ */
},
},
});
// Async consumer — runs after commit via the event-dispatcher,
// cursor-based, at-least-once, per-consumer dead-letter semantics.
// Omit `table` for pure side-effect handlers (mail, webhooks, ...).
r.multiStreamProjection({
name: "notify-new-task",
apply: {
"task.created": async (event) => {
// e.g. push to an external notification service
},
},
});
});
软件包出口
| 条目 | 里面有什么东西 |
|---|---|
@cosmicdrift/kumiko-framework/engine | defineFeature, (中文(简体) ), createEntity、实地帮助者、访问规则、登记 |
@cosmicdrift/kumiko-framework/db | deriveEntityTableMeta, (中文(简体) ), createEventStoreExecutor移徙、租户-db |
@cosmicdrift/kumiko-framework/event-store | events 表格中, append, (中文(简体) ), loadAggregate, (中文(简体) ), loadAggregateAsOf |
@cosmicdrift/kumiko-framework/pipeline | 调度员,事件发送员(AsyncDaemon),投影重建,SSE+搜索消费者 |
@cosmicdrift/kumiko-framework/api | buildServer、 认证中间软件、 SSE 路由、 错误合同 |
@cosmicdrift/kumiko-framework/auth | JWT 助手, 密码散列, 会话用户 |
@cosmicdrift/kumiko-framework/search | SearchAdapter 接口、 内记忆适配器、 Meili 包 |
@cosmicdrift/kumiko-framework/jobs | 由 BullMQ 支持的工作选手, cron 排程 |
@cosmicdrift/kumiko-framework/files | 已签名的 URL 上传/下载、租户范围存储 |
@cosmicdrift/kumiko-framework/i18n | i18next设置,每个地段的翻译注册 |
@cosmicdrift/kumiko-framework/ui | 反应钩子(Zustand商店,SSE订阅,乐观变种) |
@cosmicdrift/kumiko-testing/stack | setupTestStack, (中文(简体) ), createTestDb,请求帮助 |
@cosmicdrift/kumiko-framework/utils | 安全 JSON, 合格名助手 |
@cosmicdrift/kumiko-framework/errors | 错误分类, writeFailure,理由合同 |
核心概念
- 作为部署单位的特点.
defineFeature登记实体, 写作/处理器、预测、活动后用户、生命周期钩、, 和翻译. - 指挥入,出州. 写作是通过HTTP发送的命令; 发送器验证,强制访问,运行生命周期钩,持续 并触发一个TX的预测.
- 事件来源默认. 每一个字都经过
createEventStoreExecutor,并将一个域事件附加到聚合流中。 自动生成 CRUD 活动(<entity>.created/updated/deleted/restored记录下来, 明确ctx.events.append用于有意的域事件。 预测反馈 关闭流中用于同-TX读后写入一致性. - Async 通过光标的副作用. SSE广播、搜索索引和
特性注册
r.multiStreamProjection消费者单打独斗 基于光标的调度器( AsyncDeamon 模式) 。 消费者检查站, n重试之后的死信. - 多租户范围界定. 每个事件、实体、投影和搜索
索引带
tenantId。 。 。 .TenantDb是拒绝的 TX 扫描包 在租户外写作. - 乐观的货币.
UNIQUE(aggregate_id, version)活动说明 给原子附件+冲突检测;VersionConflictError表面 种族作为一等值. - 同上,p.c.c.c.c.c.c.c.c.c.c.c.c.c.c.d.c.c.c.c.c.c.d.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c. . . . . . . . . ......................................................................................... 关于事件的请求- id 备份独有索引
表格将重试变为重放.
IdempotencyGuard缓存写入 每一房客的结果.
状态
这个框架是1.0前的,进取快. 每个特性都有可运行的
样本 samples/;路线图生活在 文件/计划/基准。 。 。 .
许可证
麻省理工学院,看 自由主义。 。 。 .