@ daiso- tech/ core
写商业逻辑一次。 随时更换基础设施.
TypeScript的适配器-首个后端工具包——17个正式维护组件,拥有4,640+集成和行为测试.
探索文档 • 妇女 API 文件 • 妇女 GitHub 图像 • 妇女 国家预防机制
QQ 快速安装
npm install @daiso-tech/core
为什么?
- 不重写业务逻辑而切换基础设施:适配器模式使您的代码与供应商脱钩. 今天使用 Redis, 明天使用 Postgres —— 不需要重构 .
- 测试所有没有Docker的东西:每个有内置适配器和内置维特辅助器的组件船. 写出快速,孤立的测试,没有外部服务.
- 带上自己的框架: 不需要DI容器。 直接插入快递,NestJS,AdonisJS,Next.js,Nuxt,或TanStack Start——它只是工作.
- 从第一天起型号安全: Full TypeScript支持有精确的通称,丰富的intellisense,以及自动进口的友好API——在编译时间被捕获出错误,而不是运行时间.
- 构建于: 头等舱一体化 标准Schema启用 佐德语Name, Valibot, 或 ArkType 执行编译时间和运行时间数据安全 .
- 无害环境管理本地化。 无普通JS行李.:由现代JavaScript原始人所建. 与Node.js, Bun, Deno以及现代捆绑生态系统完全相容.
统一结构
一个单一的序列化引擎,一个单一的执行上下文,以及可堆放的中间软件——每个组件都共享相同的架构.
(笑声) 塞尔德——按顺序排列任何东西。 复还一切相.
塞尔德组件提供统一的序列化和去串行化引擎,并配有完全的型式安全计划. 它支持任意类型的自定义序列器,并包括一个内置的SuperJSON适配器,处理出框中的日期,映射,设定和 BigInt. Serde在内部跨越了LockFactory,Cache,EventBus等组件.
- 整个Daiso使用的共享序列化引擎
- Powers LockFactory,缓存,事件Bus等
- 内建的 SuperJSON 适配器 — 日期、 地图、 设置和 BigInt 从框出
- 自行类型的自定义序列器
QQ 执行 Context —— 跨亚星边界的推进上下文.
执行Context组件将任何类型的同步上下文传播到执行边界。 大多数组件都用它来成为隐含的执行-文本-意识,允许它们自动分享相同的交易和其他上下文状态.
- 类型安全上下文符号
- Async 上下文传播
- 没有手动通过参数
🔗-中相-AOP型中相相. 作曲行为. 保持逻辑清洁.
Middleware组件提供可堆肥的AOP型中件管,并配有前/后接接钩,出错处理和上下文传播等. 它支持用 use(),用 enhance(),并将可重复使用的中间软件包装成插件 withPlugin(). 所建中件包括复试,超时,倒置等.
- 在任何函数上勾起前/后勾起的 AOP
- 内置的重试、超时、倒置的中间器件等
- 函数以
use(),类增强enhance(),插件系统withPlugin() - 用于大多数组件和更多组件的内置前缀插件
Httprouter——定义路线。 保持框架-不可知论.
HttpRouter组件提供了一个框架不可知的HTTP路由层,带有类型安全终点定义,标准-schema验证,以及中间软件支持. 它与任何冬季TC兼容运行时间或适配器相配合,并可以被跨快通,快通,Hono,Next.js,Nuxt,SvelteKit等使用.
- 具有标准-schema验证的类型安全路由定义
- 用 Next.js App 路由器、 Nuxt 、 SvelteKit 和任何冬季 tc 兼容运行时间或适配器工作
- 建在 Hono.js 路由器适配器上
- 中间软件链和路由组
QQ Envaccessor — 类型安全环境变量. 任何来源.
Envaccessor组件提供了方便的类型安全访问环境变量. 它支持多个同步和Async源(process.env,秘密管理器),schema验证,以及方便的访问模式.
- 装满自动读取的字型安全
- 多个来源——process.env和Aync秘密提供者
- 可选 Zod 计划验证
get()返回缺失字段时无效;getOr()回到默认状态
QQ 配置——安全阅读配置. 保持类型安全.
CfigAccessor组件提供标准化的类型安全访问域配置变量. 它支持可选的 schema 校验——对每租户设置等动态配置有用.
- 装满自动读取的字型安全
- 深至2级的嵌入式物体和阵列
- 可选 Zod 计划验证
get()返回缺失路径时无效;getOr()回到默认状态
📊一一相
| 页:1 | 100% | 4,640+ (单位:千美元) | 0 个 |
|---|---|---|---|
| 官方维护的部件 | 类型脚本 | 整合和行为测试 | 测试需要多克 |
-这是给谁的?
@daiso-tech/core是为后端和全装的TypeScript开发者所建,他们重视灵活性和可测试性.
完美为
- 后端应用程序 : 构建REST API,背景工人,CLI,以及使用可再用,可堆放组件的后端其他服务.
- 框架不可知性项目: 与Express,Fastify,Hono,Next.js,Nuxt,SvelteKit,Cloudflare Workers,Bun,Deno,Node.js合作,以及任何运行时间支持标准冬季tc取取api.
- 适应者第一架构: 在 Redis, PostgreSQL, SQLite, MongoDB, S3, 本地存储, 内存执行之间切换, 或者在不改变业务逻辑的情况下, 在自己的适配器之间切换.
- 分布式系统: 使用分布式锁,semaphores,共享锁,断路器,限速器,缓存,以及跨多流程和机器工作的事件总线.
- 模块单体 : 通过单一的可部署应用程序共享相同的抽象,中间软件,以及适配器. 一些组件或工人可以被用在微服务上,但库主要是为模块化的单体建筑而设计的.
- 图书馆和框架作者: 在稳定的接口上建立可重复使用的后端库,而不是与特定的供应商或基础设施相接.
- 测试和地方发展: 使用内膜和NoOp适配器进行快速的,决定性的测试,然后交换到只配置的生产基础设施.
- 便携式后端代码 : 写基础设施独立代码,可以在云提供者,数据库,存储提供者之间移动,运行时间变化最小.
- 通过单个组成部分: 使用特定组件而不被迫采用整个库或一个DI容器——每个组件独立工作.
- 逐步通过: 从一个单一的组件开始,随着项目的发展逐渐采用更多的组件.
- 不适合这样
- 微服务: 库为模块化的单体所设计,组件共享相同的过程和运行时间. 虽然一些组件(如分布式锁,断路器,和事件巴士等)在跨过程工作,但更广泛的适配器模型和共享抽象并没有被优化用于微服务架构.
- 只有前端应用程序 : @daiso-tech/core是为后端和服务器侧开发而设计的,而不是浏览器应用程序.
- 项目与一个供应商紧密结合: 如果您的应用有意依赖于提供者的特有特征而不是抽象,适配器模型可能不会提供多少好处.
- 极小的脚本 : 如果您只需要单一的 Redis 呼叫,文件上传,或缓存操作,抽象层可能是不必要的间接费用.
- 需要特定提供者能力的应用程序: 特定数据库独有的特性,缓存,或云服务,可能需要直接使用该提供者的原生SDK,而不需要通用抽象.
- 纯 JavaScript 工程优先排序为简单 : 虽然从JavaScript中可以使用,但库是围绕TypeScript的类型系统,通用软件,以及推论设计,以获得最好的开发者经验.
正式维护组件
越来越多的官方维护的部件被收藏. 每艘有多个内置适配器的组件船——互换基础设施而无需改变一行业务逻辑.
基金会
- 中间软件和 AOP —— 说
Near-stable——可编译的中件管件有钩前/钩后,出错处理——每个组件插件系统的基础. - 收藏 —— 说
Near-stable——有强大的查询,变相,并有活页式原始物的"类型安全"收集工具. - 赛德 —— 说
Experimental——用内置的"超级JSON"适配器(Date, Map, Set, BigInt)和自定义的序列器来序列化和去序列化数据——是整个生态系统所有数据交换的骨干. - 代码c —— 说
Experimental——有统一,类型安全接口的编码和解码数据——包括一个内置的 Base64 代码并允许您为任何协议构建自定义代码. - 执行背景 —— 说
Near-stable– 类型安全,可相容的上下文传播请求ID,用户信息,以及跨越ASync边界追踪元数据——没有线程本地黑客. - 输入配置访问 —— 说
Near-stable——标准化类型安全访问域配置变量——可选的Schema验证和完整的TypeScript推断. - 输入信封访问 —— 说
Near-stable– 具有解析,默认和验证功能的多同步/同步源的类型安全环境可变访问——从未读取process.env又生还了.
存储
- 缓存 —— 说
Near-stable——用可插件商店(内存,Redis等),TTL政策,并盖章保护. - 文件存储 —— 说
Near-stable——抽象文件存储为本地磁盘的适配器,S3相容,以及其他后端——上传,流出,并服务于一个API.
复原力
- 断路器 —— 说
Near-stable——用可配置的阈值,半开放回收,自定义后退策略来防止连锁故障. - 限制费率 —— 说
Near-stable—— Throttle 请求率带有可配置限制,可滑动窗口,可插接后端——保护您的服务不超载. - 复原力 —— 说
Near-stable——暂停,倒计时,倒计时,重试,有可配置政策和后退.
货币
- 锁定 —— 说
Near-stable——分出有租赁管理,屏蔽和无屏蔽收购,自动放行等功能的锁原始. - 共享锁定 —— 说
Near-stable——阅读-写出分布式锁,以配合共享和专用模式同时访问. - 司马发 —— 说
Near-stable——以动态许可分配的方式限制共享资源同时使用费率.
通讯
- 活动总线 —— 说
Near-stable——Pub/sub事件总线,用于发送和收听带有可插接运输后端的事件——独立于基础技术.
网页
- HTTP 路由器 —— 说
Near-stable——在Hono路由器引擎上所建的框架-不可知HTTP路由器——执行Winter TC取取取标准并有中间软件链和打入路径参数.
* 即将到来的组成部分
目前在设计或开发中的组件——任何版本中都没有.
- DI 集装箱 ——用于无紧接接接线的接线应用组件的轻量级,型号安全的依赖性注射容器.
- 交易背景 ——按照承诺后模式协调各组成部分的数据库交易. 可靠消息的基础——给Outbox、收件箱、调度器和通知机以权力.
- CLI 命令 ——用于定义和执行CLI指令并配有运输适配架构的统一API. 通过子进程在本地运行命令,远程在SSH或HTTP上运行,在多克容器内运行,或者通过自定义的运输——都来自相同的命令定义.
- 结构货币 ——在结构化范围中运行同儿童任务与父母一生挂钩的同源任务——自动取消,错误传播,资源清理.
- 承诺队列 ——可塑承诺排队控制同时履行承诺的数量并避免资源耗尽.
- 日志可观察性( O) 支持可观察性——伐木、计量和追踪——采用可插接适配系统。 预建适配器 打开几何 和本地适配器,可以将日志、痕迹和度量衡保存到磁盘.
- 回顾 ——通过预建的 CLI 命令检查任何组件的实际运行时间状态——查看已注册的处理器,活动任务,队列深度,锁定持有者,以及更多不挖掘日志或度量符.
- 任务调度器 ——全程灵活安排工作——即时调度,延后执行,再起重复工作. 使用交易背景进行可靠的执行.
@daiso-tech/core如何比较
NestJS——内置DI的完整框架与适合您需要的库.
| 代替雀巢JS | 与 @ daiso- tech/ core |
|---|---|
| 有自己的设计、装饰和模块的意见框架. | 一个库,而不是一个框架——DI可选,没有装饰,平庸的阶级. |
| 公约批发:DI Central,大多数原始人只在雀巢JS内部工作. | 任何框架中相同的缓存/锁/事件总线——没有锁定. |
| 只有节点JS运行时间. | Winter TC在任何地方运行——节点,邦克,德诺,边缘. |
| 无法嵌入到一个完整的存储框架或主机中作为一个服务器. | 通过适配器模式可边接可适应. |
| 不适应边缘运行时间 . | 嵌入到任何全存储框架中——主机为一服务器. |
| 只有请求范围——没有自定义的瞄准镜. | 范围-不可知——要求,习惯,或没有范围. |
| 包接已存在的 lib —— BullMQ,缓存管理器,类验证器,类转换器等. | 拥有可插接适配器的原始相——用于测试的内膜适配器. |
| 向微服务 和单层. | 为模块化单体所建——互换基础设施而无需重写逻辑. |
| 没有执行上下文贯穿所有组件 . | 执行上下文流经所有组件 . |
| 没有共享序列化引擎跨组件. | 共享序列化引擎(Serde)跨组件. |
| 无内置交易上下文 . | 将会有一个交易的背景. |
AdonisJS — A电池包含的全存储框架与可堆肥原始.
| 而不是阿多尼斯JS | 与 @ daiso- tech/ core |
|---|---|
| Bundles 路由,ORM (Lucid), 认证,会话, 验证. | 没有应用框架,ORM,或认证——只是适配器后面的基础设施. |
| 限定的文件夹结构和公约. | 结合任何应用层——你带来结构. |
| 只有节点JS运行时间. | Winter TC在任何地方运行——节点,邦克,德诺,边缘. |
| 无法嵌入到一个完整的存储框架或主机中作为一个服务器. | 嵌入到任何全存储框架中——主机为一服务器. |
| 不适应边缘运行时间 . | 通过适配器模式可边接可适应. |
| 没有执行上下文贯穿所有组件 . | 执行上下文流经所有组件 . |
| 没有共享序列化引擎跨组件. | 共享序列化引擎(Serde)跨组件. |
| 无内置交易上下文 . | 将会有一个交易的背景. |
TRPC / ORPC – 端到端键入API对后方的服务器侧基础设施.
| 代替TRPC/ORPC | 与 @ daiso- tech/ core |
|---|---|
| 客户端和服务器之间的端到端类型安全. | 不属于RPC框架,也不属于tRPC或ORPC替代. |
| 定义程序一次——从客户端打来全推论,没有代码. | 可插接适配器背后的后端基础设施——缓冲,锁定,速率限制,排程,事件总线. |
| 在客户端和服务器的边界上 对安全型全层API来说非常棒. | 补充性——tRPC程序可以调用由@daiso-tech/core支持的服务. |
| 没有内置电池包括后端基础设施 | 选择 tRPC 用于打入的传输; 添加 @ daiso- tech/ core 用于以下可再使用的服务器侧 . |
Next.js, Nuxt等——网络的Meta-frameworks vs 框架-不可知后端.
| 取而代之的是Next.js,Nuxt等. | 与 @ daiso- tech/ core |
|---|---|
| Excel在客户端渲染,SSR,路由,和丰富的前端生态系统. | 不是网络或前端框架——也不是Next.js或Nuxt的替换. |
| 运送自己的服务器侧API和路由处理器. | 补充它们——路由处理器和服务器动作可以使用缓存,锁,队列,以及调度器. |
| 通常是一个快速传送网络应用程序的最佳起点. | 相同的后端逻辑在元框架和独立的API服务或工人之间移动. |
| 后端逻辑锁入元框. | 添加 @ daiso- tech/ core 用于以下可移植、可测试服务器侧. |
| 没有内置电池包括后端基础设施 |
编成自有的堆栈——手取的库与相接相接相接,相接相接相接.
| 而不是编织自己的堆栈 | 与 @ daiso- tech/ core |
|---|---|
| 最大控制和最小的依赖性——准确选择您想要的库. | 一致地,综合地层——共享模式和通用适配器接口. |
| 更简单,更轻的小型,有重点的使用案例. | 比单一的生化库更重,但舰只的入室适配器在没有多克的情况下进行测试. |
| 当您需要一两个原始的或依赖提供者特有的特性时,更好. | 取舍:抽象地层——原始库为单一的Redis调用或小脚本取胜. |
| 没有共同的公约——你们自己给图书馆打电话. | 没有胶体代码——组件通过共享 serde 和执行上下文进行交互操作. |
| 被锁入你选择的东西中——增加更多意味着更多的胶体代码. | 逐步采用——从一个部分开始,随着项目的发展而增加更多的内容. |
觉得这个库有用吗? 给它一个""
如果你在@daiso-tech/core中看到潜力,在GitHub上主演的回波可以帮助他人发现并激励继续发展. 它需要一击,意义很大.
准备好造出伟大的东西了吗?
起来,在几分钟内运行 一个安装.
npm install @daiso-tech/core
开始吧 • 妇女 在 GitHub 上查看