GraphQL Code Generator 中支持 Apollo Client 数据掩码特性的实现
在 GraphQL 生态系统中,GraphQL Code Generator 是一个强大的工具,它能够根据 GraphQL 模式自动生成类型定义和操作代码。最近,该项目在 typescript-operations 插件中增加了一项重要功能,以支持 Apollo Client 的数据掩码(Data Masking)特性。
数据掩码是 Apollo Client 引入的一项新功能,旨在提高应用安全性。它的核心思想是限制客户端只能访问明确请求的字段,防止意外访问未请求的数据。这项功能特别有助于防止敏感数据泄露,并强制实施更严格的查询规范。
在实现数据掩码时,Apollo Client 团队引入了一个关键概念:片段掩码(Fragment Masking)。当启用数据掩码时,Apollo Client 会"掩码"掉结果中的片段,使得这些片段数据只能通过特定的工具函数访问。为了支持这一特性,GraphQL Code Generator 提供了 inlineFragmentTypes: "mask" 配置选项。
然而,实际应用场景中有时需要绕过这种掩码机制。为此,Apollo Client 引入了 @unmask 指令作为解决方案。这个指令有两个主要用途:
- 为现有 Apollo Client 用户提供迁移路径
- 在确实需要访问完整结果时提供"逃生舱口"
在 typescript-operations@4.4.0 版本中,GraphQL Code Generator 增加了对 @unmask 指令的支持。当片段被标记为 @unmask 时,生成的类型定义会将这些片段保留在父类型中,而不是像普通片段那样被剥离。这与运行时行为保持一致,确保 TypeScript 类型系统能够准确反映实际的数据结构。
这项改进使得开发者可以更灵活地控制数据访问权限。例如,在一个用户信息查询中,开发者可以将敏感字段(如密码哈希)放在普通片段中,而将基本信息放在 @unmask 片段中。这样既保证了安全性,又为常用数据提供了便捷访问方式。
从技术实现角度看,这个功能增强了 GraphQL Code Generator 与 Apollo Client 生态系统的集成度,使得类型安全与运行时行为更加一致。对于使用 Apollo Client 的团队来说,这意味着更顺畅的开发体验和更高的类型安全性。
这项改进也体现了 GraphQL 工具链的持续演进,通过各工具间的紧密协作,为开发者提供更完善的功能和更好的开发体验。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0192- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
awesome-zig一个关于 Zig 优秀库及资源的协作列表。Makefile00