@dokebi/ 配置
版本0.4.2(未发表). 它被自动安装为@dokebi/core所需的依赖. 你从不打电话 app.register 用于它;它加载和检查YAML并准备每个应用程序的只读配置. 它不创建 DB, Redis 或 NATS 连接.
配置文件
运行时间配置为单多克比. 说吧 schemaVersion: 1 还有一个 options 对象。 应用程序和插件的设置 options 通过核心读取 app.config。例如 options.redis.connections.cache 财务报告和审定财务报表 options.redis.connections.coordination 将两个独立连接的设置分开。 每个插件的图案和运行时间合同检查实际连接名称,引用和需要的值.
将真实文件保存出Git,只共享一个dokebi.example. 没有秘密。 没有环境可变的替代,也没有文件合并,而示例文件从不取代真实配置. 在应用程序运行时再次读取文件是核心的配置重装(D-0154),其读取时使用 readConfigFile 作为 loadConfig 已经.
明确装入
import { Application, loadConfig } from "@dokebi/core";
const document = await loadConfig("dokebi.yaml");
const app = new Application({ config: document.options });
await app.start();
try {
app.logger.log("info", "Application started");
} finally {
await app.stop();
}
loadConfig(path, guard?) 返回时 Promise<ConfigDocument<T>>,以及 parseConfig(text, guard?) 返回没有文件 I/O 的同一文档。 可选类型守护检查真实形状 options 然后让 TypeScript 推断类型。 您不能只给出类型参数来跳过检查 。 构造 Application 从不搜索当前文件夹或读取文件。 构型在构建后和停止后都是可以读取的,它从后来对输入对象的修改和其他应用程序中被隔离出.
工厂的 app 编辑 context.app 设置/启动相同 ApplicationView。每个应用程序创建一次、被冻结和提供 state, (中文(简体) ), config, (中文(简体) ), logger 财务报告和审定财务报表 runtime它没有开始,停止,注册或得到。 插件从 app.config[<plugin name>]。 。 。 .
检查和限制
YAML仅限于一个1.2文档,1 MiB,深度64和10,000个节点. 复制密钥、锚、别名、明确标记、合并密钥和 __proto__ 拒绝; 普通 constructor 财务报告和审定财务报表 prototype 允许按键。 允许有限定数字,但整数必须是JavaScript安全整数(-900719254740991至9007199254740991). 将较大的标识符写入引用字符串 .
程序输入的大小是将UTF-8的字符串和密钥长度相加,每个节点成本相加的预算;它与文件的原始字节限制不同. 通过文件限制并不意味着一个插件的设置对于其目的是有效的.
ConfigValidator是因为 check(schema, options) 返回错误数组,并 validate(schema, options) 掷出 ConfigError 数据不匹配。 它使用JSON Schema 2020-12对象,有128个KiB限制,严格模式,没有外部引用或Async schemas. 它从不强制类型,注射默认或去除额外字段. parseSchema(text) 财务报告和审定财务报表 loadSchema(path) 读取计划。 无效的计划失败 check 我也一样. ConfigValidator({ allErrors?: boolean }) 默认为虚假.
ConfigError 已经 code, (中文(简体) ), line, (中文(简体) ), column, (中文(简体) ), issues, (中文(简体) ), plugin (单位:千美元)'dokebi-config'和 fix. 代码是 CONFIG READ FAILED, CONFIG Limit EXED, INVALID YAML, INVALID CONFIG, INVALID OPTIONS SCHEMA和INVALID CONFIG OPTIONS. 诊断从不包含原始值;原始原因只保留在它没有配置值的地方(CONFIG_READ_FAILED: 文件系统错误; INVALID_OPTIONS_SCHEMA计划问题; INVALID_YAML 从YAML 库中取出:仅其名称和代码). 错误不是YAML的错,而是按原样扔出. issues 仅持有 instancePath 财务报告和审定财务报表 keyword附加时 missingProperty (一个来自 schema 的字段名, 绝不是一个用户值) for required 错误。 永远不要将整个配置对象打印到日志中:它可以暴露出秘密.
它使用haml 2.9.1(ISC)和Ajv 8.2.0. 这个包是麻省理工学院许可的,并不依赖于核心. 见 大赦国际指南 编辑 配置设计注释 在仓库.