| 1444 | /** Mark every token the AS has issued so far as no longer honoured upstream — |
| 1445 | * the state a revocation or an idle-timeout policy leaves behind. */ |
| 1446 | const revokeIssuedSoFar = ( |
| 1447 | server: { readonly issuedAccessTokens: Effect.Effect<readonly string[]> }, |
| 1448 | state: { revoked: Set<string> }, |
| 1449 | ) => |
| 1450 | Effect.gen(function* () { |
| 1451 | for (const token of yield* server.issuedAccessTokens) state.revoked.add(token); |
| 1452 | }); |
| 1453 | |
| 1454 | const refreshGrants = (requests: readonly { readonly path: string; readonly body: string }[]) => |
| 1455 | requests.filter((r) => r.path === "/token" && r.body.includes("grant_type=refresh_token")); |