@empyria /分子
分子辅助物 Empyria一个主要构建在Bun上的纳米服务框架: 一个基本服务混合和一个上下文验证保护中间件免受不必要的影响 (未经身份验证或跨联邦)访问。
要求
- 包子
>=1.4.0或node . js>=26 - 简单的ESM,没有构建步骤,没有TypeScript
这两个要求都来自 @empyria /分类
和 @empyria /常见这个包裹
取决于和哪个使用本机 Temporal 全局用于所有日期/时间处理。
安装
bun add @empyria/moleculer
使用
import { ServiceBroker } from 'moleculer'
import { BaseMixin, MetaGuard } from '@empyria/moleculer'
const broker = new ServiceBroker({
middlewares: [MetaGuard({ resolveUser: true, whitelistedActions: ['v1.Internal.action'] })],
})
broker.createService({
name: 'my-service',
mixins: [BaseMixin],
actions: {
hello(ctx) {
return `Hello, ${ctx.meta.user.actor}`
},
},
})
所有的东西都是从包根目录通过 Mixins.js. 代理 连接助手和底层实用程序是单独的子路径导出,可直接导入:
import { connect } from '@empyria/moleculer/Connector.js'
import { hashPassword, verifyPassword } from '@empyria/moleculer/util/Crypto.js'
模块
| 模块 | 目的 |
|---|---|
| Mixins.js | 包入口点;再出口 BaseMixin 和 MetaGuard. |
| MetaGuard.middleware.js | MetaGuard -一个分子中间件,保护动作/事件免受不必要的访问,可选的调用者解析。 |
| mixin / Base.mixin.js | BaseMixin -在服务启动时标记一个Empyria元(参与者/联邦/流/进程id),并公开包的版本。 |
| mixin / Connector.mixin.js | ConnectorMixin -增加可选的Redis/Mongo设置。 尚未从 Mixins.js -见下文。 |
| Connector.js | connect -启动一个分子代理并等待所需的服务。 |
| util / Context.js | 上下文帮助: getParams, getUser, validateContext, actionStamped, timeStamped, checkDefined. |
| util / Crypto.js | 哈希、Ed25519签名/验证和密码哈希(hashPassword/verifyPassword)。 |
众所周知的局限: ConnectorMixin
mixins/Connector.mixin.js 导入 @empyria/redis 和 @empyria/mongo,这些都不是
作为独立包发布。它被故意省略了 Mixins.js
桶,以便包的其余部分保持可导入——在这两个部分发布之前,只使用它
通过直接子路径导入(@empyria/moleculer/mixins/Connector.mixin.js),它会在哪里
无法解决。
每个导出的函数都直接用JSDoc记录在其源文件中——悬停
VSCode或Zed中的函数显示其参数和返回类型,不需要任何额外的内容
工具,因为两个编辑器都从plain读取JSDoc .js 自动文件。
测试在 测试/,每个模块一个文件,与源文件分开。几个
锻炼身体 moleculer ServiceBroker 而不是嘲笑。
脚本
bun run format # check formatting (oxfmt)
bun run format:fix # apply formatting
bun run lint # lint (oxlint)
bun run lint:fix # lint and fix
bun run test # run tests with coverage
许可证
MIT©Imre Fazekas