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

    函数 isMiniProgramPathRootRef

    • 判断未知值是否可作为 derived file/directory ref 的逻辑路径 root。

      参数

      • value: unknown

        来自文件引用、目录引用或其他不可信 wire 边界的候选 root。

      返回 value is MiniProgramPathRootRef

      值满足 sandbox root 或 direct directory root 任一结构时返回 true,并将 TypeScript 类型 收窄为 MiniProgramPathRootRef 判别联合;否则返回 false。

      支持两个以 kind 区分的分支:

      • Sandbox root:{ kind: 'sandbox' }。对通常的对象字面量,除 kind 外不能携带任何字段。
      • Directory root:{ kind: 'directory', handleId }。handleId 必须是非空字符串;空白字符串仍满足 本 guard 的最低结构,格式、长度和归属由 Runtime 继续校验。

      direct file ref、derived directory ref、普通路径字符串以及其他 kind 都不能作为 PathRoot。特别是 { kind: 'directory', root, relativePath } 会因额外 canonical 外字段而失败:derived ref 只能引用 sandbox 或 direct directory root,不能递归嵌套另一层 derived root。

      两个分支都会拒绝 canonical 集合之外的可枚举自有字符串键,包括值为 undefined 的额外键。检查基于 Object.keys(),因此非枚举属性、symbol 键和继承属性不会被列入;必需属性本身也不要求是自有或可枚举 属性。该函数不会复制、冻结或规范化输入。

      返回 true 只建立结构类型收窄,不证明 directory handleId 由当前 Runtime 签发、属于当前 session/origin、 仍然有效且确为目录,也不证明 filesystem 权限、目录访问 mode、provenance 或 Host capability。sandbox 标记同样不自行建立隔离边界;Runtime 必须把它解析到当前 Mini-program 的私有 root 并执行实际权限策略。

      isMiniProgramFileRef 与 isMiniProgramDirectoryRef 都用该 guard 校验 derived ref 的 root; 它只校验 root 身份,不校验各自的 relativePath。

      import { isMiniProgramPathRootRef } from '@heybox/hb-sdk/protocol';

      const candidates: unknown[] = [
      { kind: 'sandbox' },
      { kind: 'directory', handleId: 'directory_1' },
      ];

      for (const candidate of candidates) {
      if (!isMiniProgramPathRootRef(candidate)) continue;
      if (candidate.kind === 'sandbox') {
      console.log('private sandbox root');
      } else {
      console.log('authorized directory root', candidate.handleId);
      }
      }

      isMiniProgramPathRootRef({ kind: 'file', handleId: 'file_1' }); // false
      isMiniProgramPathRootRef({ kind: 'directory', root: { kind: 'sandbox' }, relativePath: 'nested' }); // false

      0.8.0