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

    函数 isMiniProgramRelativePath

    • 判断未知值是否为以 / 分隔的规范逻辑相对路径。

      参数

      • value: unknown

        来自 files API、derived ref、Host payload 或其他不可信边界的候选路径。

      返回 value is string

      值是满足协议语法的字符串时返回 true,并将 TypeScript 类型收窄为 string;否则返回 false。

      该 guard 直接检查输入字符串,规则如下:

      • 必须是非空字符串;空串和非字符串值失败。
      • 不能以 / 开头或结尾,因此 /absolute、nested/ 与 / 失败。
      • 不能包含反斜杠 \\、U+0000-U+001F 控制字符或 U+007F;Windows 风格分隔符不会被转换。
      • 按 / 分段后,每段必须非空且不能精确等于 . 或 ..,因此连续 /、nested/./file 与 nested/../file 失败。

      只拒绝完整的 dot segment:.env、..cache、file. 与包含普通点号的名称都可通过;单独的 '.' 本身失败。isMiniProgramDirectoryRef 在外层显式允许 relativePath: '.' 表示 root 目录自身, isMiniProgramFileRef 则始终要求本 guard 通过,因此文件引用不能指向 root 自身。

      该函数不 trim 空白、不 URL/percent decode、不 Unicode normalize、不折叠分隔符,也不应用平台保留名或 字符规则。空白段、%2e%2e、全角字符和 C:/file 等只要满足上述原始字符串规则就可能通过;路径长度、 段长度和段数量也没有在此限制。调用方不能把“通过”解释为操作系统级 canonical path。

      返回 true 只证明语法可作为协议逻辑相对路径,不证明目标存在、末段是文件还是目录、root/handle 属于 当前 session/origin、filesystem 权限已启用、访问 mode 允许当前操作或 Host 支持该 capability。 normalizeRelativePath() 这类 SDK/Runtime helper 只是复用本 predicate:合法时原样返回同一个字符串,非法时 转成对应 SDK/bridge 错误;它不会进一步规范化路径。

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

      const paths: unknown[] = [
      'data.json',
      'nested/data.json',
      '.env',
      '.',
      '../secret',
      'nested//file',
      'nested\\file',
      ];

      const validPaths = paths.filter(isMiniProgramRelativePath);
      // ['data.json', 'nested/data.json', '.env']
      console.log(validPaths);

      0.8.0