(
scope: 'all' | 'client' | 'tokens' | 'verifier' | 'discovery',
)
| 1958 | } |
| 1959 | |
| 1960 | async invalidateCredentials( |
| 1961 | scope: 'all' | 'client' | 'tokens' | 'verifier' | 'discovery', |
| 1962 | ): Promise<void> { |
| 1963 | const storage = getSecureStorage() |
| 1964 | const existingData = storage.read() |
| 1965 | if (!existingData?.mcpOAuth) return |
| 1966 | |
| 1967 | const serverKey = getServerKey(this.serverName, this.serverConfig) |
| 1968 | const tokenData = existingData.mcpOAuth[serverKey] |
| 1969 | if (!tokenData) return |
| 1970 | |
| 1971 | switch (scope) { |
| 1972 | case 'all': |
| 1973 | delete existingData.mcpOAuth[serverKey] |
| 1974 | break |
| 1975 | case 'client': |
| 1976 | tokenData.clientId = undefined |
| 1977 | tokenData.clientSecret = undefined |
| 1978 | break |
| 1979 | case 'tokens': |
| 1980 | tokenData.accessToken = '' |
| 1981 | tokenData.refreshToken = undefined |
| 1982 | tokenData.expiresAt = 0 |
| 1983 | break |
| 1984 | case 'verifier': |
| 1985 | this._codeVerifier = undefined |
| 1986 | return |
| 1987 | case 'discovery': |
| 1988 | tokenData.discoveryState = undefined |
| 1989 | tokenData.stepUpScope = undefined |
| 1990 | break |
| 1991 | } |
| 1992 | |
| 1993 | storage.update(existingData) |
| 1994 | logMCPDebug(this.serverName, `Invalidated credentials (scope: ${scope})`) |
| 1995 | } |
| 1996 | |
| 1997 | async saveDiscoveryState(state: OAuthDiscoveryState): Promise<void> { |
| 1998 | const storage = getSecureStorage() |
no test coverage detected