[PERS SDK - v2.3.26](/sdk-reference/readme) / [Exports](/sdk-reference/modules) / PersEventEmitter

# Class: PersEventEmitter

## Table of contents

### Accessors

- [instanceId](/sdk-reference/classes/perseventemitter#instanceid)
- [subscriberCount](/sdk-reference/classes/perseventemitter#subscribercount)


### Constructors

- [constructor](/sdk-reference/classes/perseventemitter#constructor)


### Methods

- [subscribe](/sdk-reference/classes/perseventemitter#subscribe)
- [once](/sdk-reference/classes/perseventemitter#once)
- [emitSuccess](/sdk-reference/classes/perseventemitter#emitsuccess)
- [emitError](/sdk-reference/classes/perseventemitter#emiterror)
- [clear](/sdk-reference/classes/perseventemitter#clear)


## Accessors

### instanceId

• `get` **instanceId**(): `number`

#### Returns

`number`

#### Defined in

[core/events/event-emitter.ts:88](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/events/event-emitter.ts#L88)

### subscriberCount

• `get` **subscriberCount**(): `number`

Get count of active subscriptions

#### Returns

`number`

#### Defined in

[core/events/event-emitter.ts:298](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/events/event-emitter.ts#L298)

## Constructors

### constructor

• **new PersEventEmitter**(): [`PersEventEmitter`](/sdk-reference/classes/perseventemitter)

#### Returns

[`PersEventEmitter`](/sdk-reference/classes/perseventemitter)

#### Defined in

[core/events/event-emitter.ts:84](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/events/event-emitter.ts#L84)

## Methods

### subscribe

▸ **subscribe**(`handler`, `filter?`): [`Unsubscribe`](/sdk-reference/modules#unsubscribe)

Subscribe to events

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `handler` | [`EventHandler`](/sdk-reference/modules#eventhandler) | Callback for matching events |
| `filter?` | [`EventFilter`](/sdk-reference/interfaces/eventfilter) | Optional filter by domain and/or level. Set `replay: true` to receive last auth event if missed. |


#### Returns

[`Unsubscribe`](/sdk-reference/modules#unsubscribe)

Unsubscribe function

**`Example`**

```typescript
const unsub = sdk.events.subscribe((event) => {
  console.log(`[${event.domain}] ${event.type}: ${event.userMessage}`);
});
```

**`Example`**

```typescript
sdk.events.subscribe((event) => {
  logToSentry(event);
}, { levels: ['error'] });
```

**`Example`**

```typescript
sdk.events.subscribe((event) => {
  playSuccessSound();
  confetti();
}, { domains: ['transaction'], levels: ['success'] });
```

**`Example`**

```typescript
sdk.events.subscribe((event) => {
  if (event.type === 'session_restored') {
    const { user } = event.details;
    setUser(user);
  }
}, { domains: ['authentication'], replay: true });
```

#### Defined in

[core/events/event-emitter.ts:132](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/events/event-emitter.ts#L132)

### once

▸ **once**(`handler`, `filter?`): [`Unsubscribe`](/sdk-reference/modules#unsubscribe)

Subscribe and auto-unsubscribe after first matching event

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `handler` | [`EventHandler`](/sdk-reference/modules#eventhandler) | Callback for the first matching event |
| `filter?` | [`EventFilter`](/sdk-reference/interfaces/eventfilter) | Optional filter by domain and/or level |


#### Returns

[`Unsubscribe`](/sdk-reference/modules#unsubscribe)

Unsubscribe function

#### Defined in

[core/events/event-emitter.ts:161](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/events/event-emitter.ts#L161)

### emitSuccess

▸ **emitSuccess**(`event`): [`SuccessEvent`](/sdk-reference/interfaces/successevent)

Emit a success event

Domain is restricted to business domains only (Domain type).
Auth events (login_success, session_restored) are cached for replay to late subscribers.

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `event` | [`SuccessEventInput`](/sdk-reference/modules#successeventinput) | Success event data (id and timestamp auto-generated) |


#### Returns

[`SuccessEvent`](/sdk-reference/interfaces/successevent)

The complete event object

**`Example`**

```typescript
sdk.events.emitSuccess({
  domain: 'transaction',  // Only business domains allowed
  type: 'transaction_confirmed',
  userMessage: 'Transaction confirmed!'
});
```

#### Defined in

[core/events/event-emitter.ts:191](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/events/event-emitter.ts#L191)

### emitError

▸ **emitError**(`event`): [`ErrorEvent`](/sdk-reference/interfaces/errorevent)

Emit an error event

Domain can be any domain including technical (ErrorDomain type).

#### Parameters

| Name | Type | Description |
|  --- | --- | --- |
| `event` | [`ErrorEventInput`](/sdk-reference/modules#erroreventinput) | Error event data (id and timestamp auto-generated) |


#### Returns

[`ErrorEvent`](/sdk-reference/interfaces/errorevent)

The complete event object

**`Example`**

```typescript
sdk.events.emitError({
  domain: 'validation',  // Technical domains allowed
  type: 'validation_failed',
  userMessage: 'Please check your input'
});
```

#### Defined in

[core/events/event-emitter.ts:231](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/events/event-emitter.ts#L231)

### clear

▸ **clear**(): `void`

Remove all handlers

#### Returns

`void`

#### Defined in

[core/events/event-emitter.ts:291](https://github.com/eXplorins/PERS-sdks/blob/main/packages/pers-sdk/packages/pers-sdk/src/core/events/event-emitter.ts#L291)