@heybox/hb-sdk API Reference - v0.9.5
    正在准备搜索索引...

    函数 parseMiniappBindAppIds

    • 校验并规范化小程序关联的游戏 App ID。

      参数

      • value: unknown

        不可信声明。undefined 和 [] 均返回空绑定;其他值必须是最多 20 项的 字符串数组,不接受 null、单个字符串、number 数组或类数组对象。

      • options: ParseMiniappBindAppIdsOptions = {}

        可选诊断来源;sourceLabel 默认 package.json#heybox.bindAppIds,并原样 作为所有错误消息的前缀。

      返回 readonly string[]

      新建、按 appid 数值升序排列且经 Object.freeze 冻结的 readonly string[]。 输入数组及其顺序不会被修改;空输入也返回新的冻结空数组。

      Error ${sourceLabel} 必须是字符串数组:value 不是数组。

      Error ${sourceLabel} 最多包含 20 个游戏 appid:输入数组超过 20 项;数量检查 先于逐项格式检查。

      Error ${sourceLabel} 包含非法游戏 appid:<value>:任一项不是 string,或不匹配 /^[1-9]\d*$/。因此空串、首尾空白、0、前导零、正负号、小数、指数和非十进制字符 都不会被自动修正。

      Error ${sourceLabel} 包含超出正 int32 范围的游戏 appid:<value>:十进制值 大于 2147483647 或不能成为安全整数。

      Error ${sourceLabel} 包含重复游戏 appid:<value>:规范字符串在同一数组重复。

      合法范围是闭区间 1..2147483647,每项在输出中仍保持十进制 string。排序按数值而不是 字典序执行,所以 ['3513350', '730', '10'] 输出为 ['10', '730', '3513350']。 函数先复制后排序并冻结结果,不排序或冻结调用方传入的数组。

      这是同步、纯离线的格式规范化函数,不访问网络,也不确认 appid 是否真实存在、可绑定或 属于当前开发者。miniappManifest() 用它校验 package.json#heybox.bindAppIds 并把非空结果 写入 Manifest;远端 deploy 预检和提审才校验游戏可用性。缺失和空数组在普通构建中都表示 无绑定,函数本身不处理 remote deploy --from-version 的历史快照继承语义。

      bindAppIds 是版本发布元数据,不是 Runtime 权限,也不会因调用 navigation.openAppPage 而变化。后者的 appId 是一次 页面导航参数,允许 string 或 number、只要求字符串化后非空,不适用本函数的数组、int32、 前导零、去重、20 项或排序规则。

      import { parseMiniappBindAppIds } from '@heybox/hb-sdk/miniapp-publish'

      const declared = ['3513350', '730', '10']
      const appIds = parseMiniappBindAppIds(declared)

      console.log(appIds) // ['10', '730', '3513350']
      console.log(declared) // ['3513350', '730', '10'],输入顺序不变
      console.log(Object.isFrozen(appIds)) // true

      0.8.1