or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

configuration.mderrors.mdevents.mdindex.mdoidc-client.mdstorage.mduser-management.mduser-tokens.mdutilities.md

events.mddocs/

0

# Event System

1

2

Comprehensive event system for user state changes, token expiration, and error handling with callback registration and management.

3

4

## Capabilities

5

6

### UserManagerEvents

7

8

Event system for UserManager with user lifecycle and token events.

9

10

```typescript { .api }

11

/**

12

* Event management for UserManager user state changes

13

*/

14

class UserManagerEvents {

15

// Event registration

16

addUserLoaded(callback: UserLoadedCallback): void;

17

addUserUnloaded(callback: UserUnloadedCallback): void;

18

addUserSignedIn(callback: UserSignedInCallback): void;

19

addUserSignedOut(callback: UserSignedOutCallback): void;

20

addUserSessionChanged(callback: UserSessionChangedCallback): void;

21

addSilentRenewError(callback: SilentRenewErrorCallback): void;

22

23

// Event removal

24

removeUserLoaded(callback: UserLoadedCallback): void;

25

removeUserUnloaded(callback: UserUnloadedCallback): void;

26

removeUserSignedIn(callback: UserSignedInCallback): void;

27

removeUserSignedOut(callback: UserSignedOutCallback): void;

28

removeUserSessionChanged(callback: UserSessionChangedCallback): void;

29

removeSilentRenewError(callback: SilentRenewErrorCallback): void;

30

}

31

32

// Event callback types

33

type UserLoadedCallback = (user: User) => Promise<void> | void;

34

type UserUnloadedCallback = () => Promise<void> | void;

35

type UserSignedInCallback = () => Promise<void> | void;

36

type UserSignedOutCallback = () => Promise<void> | void;

37

type UserSessionChangedCallback = () => Promise<void> | void;

38

type SilentRenewErrorCallback = (error: Error) => Promise<void> | void;

39

```

40

41

### AccessTokenEvents

42

43

Event system for access token lifecycle management.

44

45

```typescript { .api }

46

/**

47

* Event handling for access token expiration and renewal

48

*/

49

class AccessTokenEvents {

50

addAccessTokenExpiring(callback: AccessTokenCallback): void;

51

addAccessTokenExpired(callback: AccessTokenCallback): void;

52

removeAccessTokenExpiring(callback: AccessTokenCallback): void;

53

removeAccessTokenExpired(callback: AccessTokenCallback): void;

54

}

55

56

type AccessTokenCallback = (...ev: unknown[]) => Promise<void> | void;

57

```

58

59

## Usage Examples

60

61

```typescript

62

import { UserManager, User } from "oidc-client-ts";

63

64

const userManager = new UserManager({

65

// ... configuration

66

automaticSilentRenew: true,

67

accessTokenExpiringNotificationTimeInSeconds: 60,

68

});

69

70

// User lifecycle events

71

userManager.events.addUserLoaded((user: User) => {

72

console.log("User loaded:", user.profile?.name);

73

updateUIForAuthenticatedUser(user);

74

});

75

76

userManager.events.addUserSignedIn((user: User) => {

77

console.log("User signed in:", user.profile?.name);

78

redirectToApplication();

79

});

80

81

userManager.events.addUserSignedOut(() => {

82

console.log("User signed out");

83

redirectToLogin();

84

});

85

86

userManager.events.addSilentRenewError((error: Error) => {

87

console.error("Silent renewal failed:", error);

88

handleSilentRenewFailure();

89

});

90

91

// Token events

92

const accessTokenEvents = new AccessTokenEvents();

93

accessTokenEvents.addAccessTokenExpiring((user: User) => {

94

console.log(`Token expiring in ${user.expires_in} seconds`);

95

showExpirationWarning();

96

});

97

```