| 1627 | /** Mark every token the AS has issued so far as no longer honoured upstream — |
| 1628 | * the state a revocation or an idle-timeout policy leaves behind. */ |
| 1629 | const revokeIssuedSoFar = ( |
| 1630 | server: { readonly issuedAccessTokens: Effect.Effect<readonly string[]> }, |
| 1631 | state: { revoked: Set<string> }, |
| 1632 | ) => |
| 1633 | Effect.gen(function* () { |
| 1634 | for (const token of yield* server.issuedAccessTokens) state.revoked.add(token); |
| 1635 | }); |
| 1636 | |
| 1637 | const refreshGrants = (requests: readonly { readonly path: string; readonly body: string }[]) => |
| 1638 | requests.filter((r) => r.path === "/token" && r.body.includes("grant_type=refresh_token")); |