// // APIClientTokenPolicyProbe.swift — F3:APIClient 侧令牌策略的取值窗口 // // 为什么要单独一个文件:`APIClient` 既是**模块名**又是模块里的**结构体名**, // 于是 `APIClient.AuthCookie` 恒被解析成"结构体 APIClient 的嵌套类型"(不存在), // 无法在同时 import 了 SessionCore 的文件里限定到模块级符号;而不限定的 // `AuthCookie` 又会和 `SessionCore.AuthCookie` 撞名。 // // 解法:本文件**只** import APIClient,此处的裸 `AuthCookie` / `AccessTokenRule` // 唯一地解析到 APIClient 的那两个 internal 类型,再以带前缀的名字转出去。 // TokenPolicyDriftTests 用这个窗口,SessionCore 侧则直接 `SessionCore.AuthCookie`。 @testable import APIClient enum APIClientTokenPolicy { static var cookieName: String { AuthCookie.name } static func headerValue(for token: String) -> String { AuthCookie.headerValue(for: token) } static func isWellFormed(_ candidate: String) -> Bool { AccessTokenRule.isWellFormed(candidate) } }