manifest.json

manifest.json

manifest.json

功能

manifest.json 是扩展包的身份和运行声明。它告诉 BT:这个包是不是 .bts 扩展、扩展叫什么、用什么后端运行、入口文件在哪里、最低 BT 版本是多少、需要哪些权限,以及单次调用允许传输多大的参数和返回值。

语法

纯 BT 扩展示例:

WASM 扩展只需要把后端相关字段改为:

参数

字段类型说明
formatString固定为 bts
format_versionNumber包格式版本,使用 1
nameString扩展包名称,只能使用小写字母、数字和下划线,并以小写字母开头。
versionString扩展自身版本,使用三段式 SemVer,例如 1.0.0
descriptionString可选说明文本。
authorString可选作者文本。
kindString后端类型,只能是 btwasm
abiString后端 ABI,必须和 kind 匹配。
bt_min_versionString扩展要求的最低 BT 版本。
api_versionNumberbindings 语义版本,使用 1
entryString后端入口文件的包内相对路径。
bindingsStringbindings 描述文件的包内相对路径。
permissionsObject扩展声明的能力权限。
limitsObject单次调用的参数和返回值编码大小上限。

kind 与 abi

kindabi含义
btbts-bt-1入口文件是 BT 源码,函数和对象方法由纯 BT Runner 执行。
wasmbts-wasi-1入口文件是 WASM 模块,调用通过 WASI P1 和 BtValueBinary 完成。

如果 kindabi 不匹配,扩展会在加载阶段报错。

权限说明

权限说明
fs_read允许声明读取文件路径参数。
fs_write允许声明写入文件路径参数。
net预留给网络通信能力声明。
http预留给 HTTP 客户端能力声明。
process预留给进程能力声明。
env预留给环境变量能力声明。

权限必须和运行进程的权限配置同时允许。扩展声明了某项权限,但运行进程禁止该能力时,扩展会加载失败。

返回值

manifest.json 不是脚本函数,没有运行时返回值。校验成功时,BT 会继续读取 bindings 和入口文件;校验失败时,加载过程返回中文错误并停止加载该扩展。

代码示例

纯 BT 扩展入口和 manifest 的对应关系:

manifest.entry 指向包含这段源码的 src/lib.btmanifest.kindbtmanifest.abibts-bt-1

注意事项

  • entrybindings 必须是包内安全相对路径,不能使用绝对路径、反斜杠、空路径、... 或带盘符的路径。
  • entry 不能和 bindings 指向同一个文件。
  • limits.max_args_byteslimits.max_result_bytes 不能为 0,也不能超过宿主硬上限。
  • 扩展名、入口名、参数名和方法名都应遵守 BT 的 snake_case 命名风格。