Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Document public vs admin Mercure updates (api-components-bundle #497)

已关闭 适合新手
#258 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
75/100
Issue 类型
文档
描述清晰度
描述清楚
活跃度
活跃
技术栈
symfony, typescript
领域
documentation

调研方向

阅读 content/4.api/ 下的 Mercure / 实时部分,并将其与 issue 中链接的 api-components-bundle PR #497 进行比较。记录公开更新、私有管理更新和草稿的行为、grants、Messenger 路由、信息泄漏,以及每个已创建或已更新的 resource 所对应的一次内部子请求。文档涵盖所有列出的行为和注意事项后,即为完成。

由索引模型根据 Issue 内容生成。

描述

api-components-bundle PR https://github.com/components-web-app/api-components-bundle/pull/497 (issue #494) changes what Mercure publishes. To document in content/4.api/ (Mercure / real-time section):

  • Public update: the public update for a created or updated resource is what an anonymous GET of that resource returns. When anonymous callers can't read the resource (401/403/404), the public update is a delete {"@id": "<iri>"}. That covers a page no live route reaches, a route before its liveAt, and a published component moved to a future date.
  • Admin update: the writer's view is published privately on <iri>?draft=1 after the public update. It is only published when it differs from the public payload.
  • Grants: every Mercure resource class grants admins <pattern>\\?draft=1. Here an admin is anyone holding the publishable.permission (or a class's own #[Publishable(isGranted:)]).
  • Drafts: a draft is still published only privately on ?draft=1.
  • Messenger routing: an application that routes Symfony\\Component\\Mercure\\Update to an async transport must also route Silverback\\ApiComponentsBundle\\Message\\PublishMercureUpdatesMessage. That message carries a resource's public and private updates in order.
  • Information disclosure: a public delete for a resource that was never public reveals that its IRI exists. A route IRI contains its path.
  • Cost: each created or updated resource costs one internal sub-request.
主要语言
TypeScript
星标
0
派生
0
平均合并
1 小时 20 分钟
30 天内合并 PR
1

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

components-web-app/docs 的其他 Issue

查看 components-web-app/docs 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。