@aglyn/tenant-runtime (英语)
为已出版的Aglyn网站服务的服务器端运行时间:主机活动 切换插件的收听, 和屏幕组合管道 将屏幕存储到一个页面生成的节点树上。 运行时安装 Aglyn 的租户服务器, 或者写需要发送主机的插件服务器代码 事件或编成屏幕.
从Aglyn monorepo出版到npm. 随后的版本 语义版本。 。 。 .
安装
npm install @aglyn/tenant-runtime
同伴依赖性 :
firebase-admin
此软件包仅限服务器使用 。 它读出Firestore通过 firebase-admin 财务报告和审定财务报表
不得从客户端代码导入.
里面有什么东西
从包根起,主机-活动运行时间. 举办活动时,没有 单个插件拥有, 并且不运行事件触发的内容 :
emitHostEvent是一个释放点。 它把一个事件交给每个注册的 主机- 事件收听器并返回任何站点提示, 所以请求/ 响应 发射器(表单提交、预订)可以露出它们.registerHostEventListener插件如何听到主机事件。 一个插件 从它的服务器声明条目注册, 应用程序运行在启动时, 所以 一个从未加载插件的核心路由仍然到达它。 自动化 引擎是一个这样的收听器,并生活在自己的插件中.dispatchHostAutomation以 id 为站点活动运行一个自动化 已出版的网页通过发送的听众自我评价.listHostEventListeners财务报告和审定财务报表runHostEventListeners诊断和诊断 直接使用.
联系人抓取和所有者指派为客户关系管理
(单位:千美元)@aglyn/plugins-crm/server/capture-host-contact, (中文(简体) ),
@aglyn/plugins-crm/server/assign-contact-owner: 另一个插件报告 a
通过平台的捕获合同(plugin-contact-capture) (中文(简体) ).
以 id 或名称查找数据集是数据插件的
(单位:千美元)@aglyn/plugins-data/server/resolve-dataset) (中文(简体) ).
通过子路径,屏幕组合管道。 这是读取路径 由租户应用程序的服务器渲染和任何需要插件共享 在服务器上创建屏幕 :
@aglyn/tenant-runtime/get-screen(单位:千美元)getScreen和@aglyn/tenant-runtime/get-screen-version(单位:千美元)getScreenVersion(中文(简体) )@aglyn/tenant-runtime/compose-screen-nodes(单位:千美元)composeScreenNodes, (中文(简体) ),composeNodesWithChrome(中文(简体) )- 他们身后有装载者
get-layout-version, (中文(简体) ),get-components, (中文(简体) ),get-variables, (中文(简体) ),get-forms, (中文(简体) ),get-plugin-installs重复的一行来了 从保持它们的插件,通过@aglyn/aglyn/plugin-manager/repeat-rows - 用于收藏、作者和搜索页面的页面作曲:
compose-collection-page, (中文(简体) ),compose-author-page, (中文(简体) ),compose-search-page apply-publish-schedule(单位:千美元)applyDuePublishSchedule(中文(简体) )
每个子路径映射到下面的文件 src/lib。 。 。 .
使用量
正在从插件服务器代码听到主机事件 :
import { registerHostEventListener } from '@aglyn/tenant-runtime'
registerHostEventListener('my-plugin', {
async onEvent(hostId, event, payload, context) {
// react to the event; optionally return site alerts.
// `context.actor` is who caused it, when the emitting door knew:
// { kind: 'member' | 'visitor' | 'apiKey' | 'platform', uid?, email?, apiKeyName? }
},
})
抚养一个,是谁造成的:
await emitHostEvent(hostId, 'contactStageChanged', payload, {
actor: { kind: 'member', uid, email },
})
在服务器上装入屏幕 :
import { getScreen } from '@aglyn/tenant-runtime/get-screen'
const screen = await getScreen({ hostId, screenId })
变形道从不等待无约束 I/ 欧
页面渲染,和它等待的一切——布局,页面数据加载器, 此管道, 插件页面浓缩器, 解析器, 重定向解析器, 重复 读取器和计算变量, 和它们面前的中间器件—— 从不 等待出入境的I/O网络,没有自己的最后期限(AGL-3565).
- 将等待包起来
boundedAwait(work, ms, fallback, label)从@aglyn/shared-util-http/bounded-await: 以fallback何时ms不管做什么,都通过 传过来signal改为fetch所以请求也取消了 把尸体放进去 工作时 一个AbortSignal它本身不是最后期限:在Vercel,下一位 补丁fetch{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}我答应你AbortSignal.timeout(2500)上面还有月台上的每一页 等待60秒函数限制 . - 选择一个可折回的页面,并说出它的含义: 链接到的字体样式表, 判断“ 无法获取 ” , 重定向规则 .
- 一个进程缓存, 它比请求有效 仅持有已结算的值
(单位:千美元)
createSettledValueCache拒绝承诺。 一个缓存的飞行 在以后的每一个判决中,都等待承诺,每个判决都有新的期限 一无所有. - 工作不需要答案 解开
void从来没有等待.
apps/tenant/specs/render-path-bounded-io.spec.ts 扫描每个符号 a
能够达到 fetch页:1 fetch 作为一种价值 一种象征
交换或 http(s).request拒绝一个没有落后的人
boundedAwait 或者说 void。其许可列表每行都包含一个理由,可能只包含
收缩。 消防员读取 firebase-admin 在外边,他们携带着
客户自己的最后期限.
怎样才合适
这是 tenant 软件包地图的范围。 这只取决于
@aglyn/aglyn, (中文(简体) ), @aglyn/tenant-data-admin (其服务器数据层)和
firebase-admin,因此它可以从租户应用的API线路中导入,并且
从插件的服务器处理器中不将应用程序代码拖入库中。 A 类
插件可能导入它; 它从不导入插件 。 插件到达它
登记一个听众, 运行时间只知道通过这个
登记和装货机清单.
许可证
阿帕奇2.0 (英语). 资料来源: https://github.com/aglyn/aglyn/tree/main/libs/tenant/runtime 互联网档案馆的存檔,存档日期2014-12-22