/** * 应用可见范围(谁能看到 / 使用这个飞书应用)的读取与 fail-closed 解析。 * * 为什么单独成模块:**每一次 `app_version/create` 都会整体覆写可见范围**—— * payload 里的 `visibleSuggest` 就是新版本的可见范围,漏掉的集合不是"保持不变" * 而是"被清空"。因此任何要发版的链路都必须先把线上可见范围原样读回来再镜像 * 过去,且读不准时宁可不发版。 * * 这段解析原本只长在 `services/open-platform-rename.ts`(改名/改头像链路)里, * 而 `setup/open-platform-automation.ts` 的自动发版走的是另一套(读 `contact_range` * 只取 members,departments/groups/isAll 写死空值),把「全员可见 / 按部门授权 / * 按用户组授权」在每次自动发版时静默清成「仅少数个人可见」。抽到这里共用, * 保证所有发版链路只有一个可见范围来源。 * * 正确的数据来源是 `/developers/v1/visible/online/{clientId}`(线上版本的可见 * 范围),**不是** `/developers/v1/contact_range/{clientId}`——后者是「通讯录权限 * 范围」(应用能读谁的通讯录),和「应用可见范围」是两个概念。 */ /** 可见范围形态未识别 —— 绝不能发布可能改变可见性的版本,fail closed。 */ export declare class VisibilityParseError extends Error { readonly collection: string; constructor(collection: string); } export type VisibilitySuggest = { departments: string[]; members: string[]; groups: string[]; isAll: number; }; export declare const EMPTY_VISIBILITY: VisibilitySuggest; /** * 解析 visible/online 响应为 白/黑名单 suggest 对。两种已知形态: * • 现行:data.whiteList + data.blackList 成对出现(成对是契约的一部分—— * 只认白名单会把 blackList 静默丢成空、把被拉黑的人放出来,fail closed) * • 旧形态兜底:可见范围直接铺在 data 顶层(无 whiteList 容器);此形态 * 没有黑名单容器,blackList 缺失按空处理,出现则严格解析 */ export declare function parseOnlineVisibility(payload: unknown): { visibleSuggest: VisibilitySuggest; blackVisibleSuggest: VisibilitySuggest; }; //# sourceMappingURL=open-platform-visibility.d.ts.map