#module-loader
#Functions
| Function | Description |
|---|---|
| formatManifestIssue | @sfmc-bds/sdk/module-loader — 模块装载器与契约校验核心导出 |
| validateManifest | 模块 manifest 校验对外统一总入口。 |
| validateManifestV2 | 针对 schemaVersion = 2 的版本锁定校验函数。 校验规则与 schemas/sapi-manifest.v2.schema.json 规范定义完全对齐。 |
| validateManifestV3 | 针对 schemaVersion = 3 的版本锁定校验函数。 |
| migrateV2toV3 | v2 → v3 迁移。保守策略: - 所有 v2 必需字段原样复制; - semantic 全部默认空(不强填臆造值),依赖用户在下一轮手动补全; - 输入缺失字段(requires/permissions 缺失)默认空数组——沙箱里跑测的临时模块常常 只写 id/name,运行时兼容;catalog 投影路径仍以 schemaVersion 校验为准。 - 允许 readonly 输入。 |
| mergeSemanticV3 | 合并两份 semantic:以 base 字段为底层,逐字段用 patch 覆盖。 数组字段:去重合并(base ∪ patch),保证顺序 base → patch。 对象字段(events / dbTables / publicApi 单元素):patch 非空时整体替换。 缺失值(undefined / 空数组 / 空对象)视为「不覆盖」。 |
| bindModuleAuthHooks | 由 installHostBootstrap 注入 db/config/service 身份钩子(DIP)。 |
| announceLoaded | 控制台打印当前已启动模块列表。 |
#Classes
| Class | Description |
|---|---|
| ConfigManager | BP 启动时一次性拉取并缓存的平台配置(无热重载)。 |
| ModuleRegistry | 模块注册表:冷启动生命周期与 shutdown cleanup。 |
#Interfaces
| Interface | Description |
|---|---|
| DataAdapter | db-server IO 抽象。ConfigManager 通过此接口拉取配置。 |
#Type Aliases
| Type Alias | Description |
|---|---|
| - | |
| ManifestV2 | 模块 manifest schema — v2 + v3 语义字段。 |
| ServiceEntry | services.provides / services.requires 单条。 |
| ServiceIO | service io 的最小骨架:JSON Schema 风格的轻描述。 |
| ManifestV3Events | 公共事件契约:emits / listens 的路径名。 |
| ManifestV3DbTable | 单条 DB 表声明。 |
| ManifestV3PublicApi | 模块对外 API 单条声明。 |
| ManifestV3Semantic | v3 语义字段——沙箱读模块「在做什么」的依据。 全部可选;缺失表示 v2 模块(自动从 v2 迁移默认填充)。 |
| ManifestV3 | v3 manifest = v2 + 可选 semantic。 关键兼容点: - schemaVersion 在 v3 时必须为 3; - 其余 v2 字段全部沿用 v2 校验; - semantic 全部可选:不写也能 boot。 |
| AnyManifest | 任意 v2 / v3 manifest。 |
| ValidationResult | 统一校验结果泛型联合体。 失败时同时提供人类可读 errors 与机器可读 issues。 |
| ModuleId | catalog/manifest 模块 id(如 feature-afk)。 |
| BdsSystem | BDS SAPI host 抽象(由 install.ts 在 BDS 进程里注入)。 模块 loader 只调用 stub 接口,不直接 import @minecraft/server—— 让模块 entry 在非 BDS 环境里也能 import module-loader。 |
| ModuleServices | 模块作用域运行时客户端(由 installHostBootstrap 在 apply 时装配)。 生命周期钩子应闭包捕获此处的 db/config/service,避免使用进程级单例串身份。 |
| ModuleAuthHooks | 模块身份注入钩子(db/config/service client)。 由 module-loader/install 绑定真实实现;测试环境可 noop 或不绑。 apply 可返回 ModuleServices,供 lifecycle 闭包捕获(方案 A)。 |
| ModuleLifecycle | 模块生命周期钩子(各阶段可选)。services 为作用域客户端。命令须在模块顶层声明。 |
| ModuleDescriptor | 模块注册描述符(由 ModuleRegistry.register 提交)。 |
#Variables
| Variable | Description |
|---|---|
| SFMC_MODULE_LOADER_VERSION | - |
| - |
#References
#ManifestIssue
Renames and re-exports ShapeIssue
#ManifestIssueKind
Renames and re-exports ShapeIssueKind