| 1554 | /** Mark every token the AS has issued so far as no longer honoured upstream — |
| 1555 | * the state a revocation or an idle-timeout policy leaves behind. */ |
| 1556 | const revokeIssuedSoFar = ( |
| 1557 | server: { readonly issuedAccessTokens: Effect.Effect<readonly string[]> }, |
| 1558 | state: { revoked: Set<string> }, |
| 1559 | ) => |
| 1560 | Effect.gen(function* () { |
| 1561 | for (const token of yield* server.issuedAccessTokens) state.revoked.add(token); |
| 1562 | }); |
| 1563 | |
| 1564 | const refreshGrants = (requests: readonly { readonly path: string; readonly body: string }[]) => |
| 1565 | requests.filter((r) => r.path === "/token" && r.body.includes("grant_type=refresh_token")); |