Skip to content

Commit

Permalink
Rename EventEmitter to EventLogger in the Events API (#4568)
Browse files Browse the repository at this point in the history
* renamed EventEmitter to EventLogger

* updated changelog

* renamed remaining references to emitter

* lint
  • Loading branch information
martinkuba committed Mar 25, 2024
1 parent 97af8e6 commit f6a075b
Show file tree
Hide file tree
Showing 14 changed files with 124 additions and 127 deletions.
1 change: 1 addition & 0 deletions experimental/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ All notable changes to experimental packages in this project will be documented
* `compression`
* was used internally to keep track of the compression to use but was unintentionally exposed to the users. It allowed to read and write the value, writing, however, would have no effect.
* feat(api-events)!: removed domain from the Events API [#4569](https://github.com/open-telemetry/opentelemetry-js/pull/4569)
* fix(events-api)!: renamed EventEmitter to EventLogger in the Events API [#4569](https://github.com/open-telemetry/opentelemetry-js/pull/4568)

### :rocket: (Enhancement)

Expand Down
18 changes: 9 additions & 9 deletions experimental/packages/api-events/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,18 +28,18 @@ If you are writing an instrumentation library, or prefer to call the API methods
```javascript
const api = require("@opentelemetry/api-events");

/* A specific implementation of EventEmitterProvider comes from an SDK */
const eventEmitterProvider = createEventEmitterProvider();
/* A specific implementation of EventLoggerProvider comes from an SDK */
const eventLoggerProvider = createEventLoggerProvider();

/* Initialize EventEmitterProvider */
api.events.setGlobalEventEmitterProvider(eventEmitterProvider);
/* returns eventEmitterProvider (no-op if a working provider has not been initialized) */
api.events.getEventEmitterProvider();
/* returns an event emitter from the registered global event emitter provider (no-op if a working provider has not been initialized) */
const eventEmitter = api.events.getEventEmitter(name, version);
/* Initialize EventLoggerProvider */
api.events.setGlobalEventLoggerProvider(eventLoggerProvider);
/* returns eventLoggerProvider (no-op if a working provider has not been initialized) */
api.events.getEventLoggerProvider();
/* returns an event logger from the registered global event logger provider (no-op if a working provider has not been initialized) */
const eventLogger = api.events.getEventLogger(name, version);

// logging an event in an instrumentation library
eventEmitter.emit({ name: 'event-name' });
eventLogger.emit({ name: 'event-name' });
```

## Useful links
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
* limitations under the License.
*/

import { EventEmitter } from './types/EventEmitter';
import { EventLogger } from './types/EventLogger';
import { Event } from './types/Event';

export class NoopEventEmitter implements EventEmitter {
export class NoopEventLogger implements EventLogger {
emit(_event: Event): void {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,19 @@
* limitations under the License.
*/

import { EventEmitterProvider } from './types/EventEmitterProvider';
import { EventEmitter } from './types/EventEmitter';
import { EventEmitterOptions } from './types/EventEmitterOptions';
import { NoopEventEmitter } from './NoopEventEmitter';
import { EventLoggerProvider } from './types/EventLoggerProvider';
import { EventLogger } from './types/EventLogger';
import { EventLoggerOptions } from './types/EventLoggerOptions';
import { NoopEventLogger } from './NoopEventLogger';

export class NoopEventEmitterProvider implements EventEmitterProvider {
getEventEmitter(
export class NoopEventLoggerProvider implements EventLoggerProvider {
getEventLogger(
_name: string,
_version?: string | undefined,
_options?: EventEmitterOptions | undefined
): EventEmitter {
return new NoopEventEmitter();
_options?: EventLoggerOptions | undefined
): EventLogger {
return new NoopEventLogger();
}
}

export const NOOP_EVENT_EMITTER_PROVIDER = new NoopEventEmitterProvider();
export const NOOP_EVENT_LOGGER_PROVIDER = new NoopEventLoggerProvider();
46 changes: 21 additions & 25 deletions experimental/packages/api-events/src/api/events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ import {
_global,
makeGetter,
} from '../internal/global-utils';
import { EventEmitterProvider } from '../types/EventEmitterProvider';
import { NOOP_EVENT_EMITTER_PROVIDER } from '../NoopEventEmitterProvider';
import { EventEmitter } from '../types/EventEmitter';
import { EventEmitterOptions } from '../types/EventEmitterOptions';
import { EventLoggerProvider } from '../types/EventLoggerProvider';
import { NOOP_EVENT_LOGGER_PROVIDER } from '../NoopEventLoggerProvider';
import { EventLogger } from '../types/EventLogger';
import { EventLoggerOptions } from '../types/EventLoggerOptions';

export class EventsAPI {
private static _instance?: EventsAPI;
Expand All @@ -38,52 +38,48 @@ export class EventsAPI {
return this._instance;
}

public setGlobalEventEmitterProvider(
provider: EventEmitterProvider
): EventEmitterProvider {
public setGlobalEventLoggerProvider(
provider: EventLoggerProvider
): EventLoggerProvider {
if (_global[GLOBAL_EVENTS_API_KEY]) {
return this.getEventEmitterProvider();
return this.getEventLoggerProvider();
}

_global[GLOBAL_EVENTS_API_KEY] = makeGetter<EventEmitterProvider>(
_global[GLOBAL_EVENTS_API_KEY] = makeGetter<EventLoggerProvider>(
API_BACKWARDS_COMPATIBILITY_VERSION,
provider,
NOOP_EVENT_EMITTER_PROVIDER
NOOP_EVENT_LOGGER_PROVIDER
);

return provider;
}

/**
* Returns the global event emitter provider.
* Returns the global event logger provider.
*
* @returns EventEmitterProvider
* @returns EventLoggerProvider
*/
public getEventEmitterProvider(): EventEmitterProvider {
public getEventLoggerProvider(): EventLoggerProvider {
return (
_global[GLOBAL_EVENTS_API_KEY]?.(API_BACKWARDS_COMPATIBILITY_VERSION) ??
NOOP_EVENT_EMITTER_PROVIDER
NOOP_EVENT_LOGGER_PROVIDER
);
}

/**
* Returns a event emitter from the global event emitter provider.
* Returns a event logger from the global event logger provider.
*
* @returns EventEmitter
* @returns EventLogger
*/
public getEventEmitter(
public getEventLogger(
name: string,
version?: string,
options?: EventEmitterOptions
): EventEmitter {
return this.getEventEmitterProvider().getEventEmitter(
name,
version,
options
);
options?: EventLoggerOptions
): EventLogger {
return this.getEventLoggerProvider().getEventLogger(name, version, options);
}

/** Remove the global event emitter provider */
/** Remove the global event logger provider */
public disable(): void {
delete _global[GLOBAL_EVENTS_API_KEY];
}
Expand Down
6 changes: 3 additions & 3 deletions experimental/packages/api-events/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
* limitations under the License.
*/

export * from './types/EventEmitter';
export * from './types/EventEmitterProvider';
export * from './types/EventLogger';
export * from './types/EventLoggerProvider';
export * from './types/Event';
export * from './types/EventEmitterOptions';
export * from './types/EventLoggerOptions';

import { EventsAPI } from './api/events';
export const events = EventsAPI.getInstance();
4 changes: 2 additions & 2 deletions experimental/packages/api-events/src/internal/global-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

import { EventEmitterProvider } from '../types/EventEmitterProvider';
import { EventLoggerProvider } from '../types/EventLoggerProvider';
import { _globalThis } from '../platform';

export const GLOBAL_EVENTS_API_KEY = Symbol.for(
Expand All @@ -23,7 +23,7 @@ export const GLOBAL_EVENTS_API_KEY = Symbol.for(

type Get<T> = (version: number) => T;
type OtelGlobal = Partial<{
[GLOBAL_EVENTS_API_KEY]: Get<EventEmitterProvider>;
[GLOBAL_EVENTS_API_KEY]: Get<EventLoggerProvider>;
}>;

export const _global = _globalThis as OtelGlobal;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import { Event } from './Event';

export interface EventEmitter {
export interface EventLogger {
/**
* Emit an event. This method should only be used by instrumentations emitting events.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import { Attributes } from '@opentelemetry/api';

export interface EventEmitterOptions {
export interface EventLoggerOptions {
/**
* The schemaUrl of the tracer or instrumentation library
* @default ''
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,25 +14,25 @@
* limitations under the License.
*/

import { EventEmitter } from './EventEmitter';
import { EventEmitterOptions } from './EventEmitterOptions';
import { EventLogger } from './EventLogger';
import { EventLoggerOptions } from './EventLoggerOptions';

/**
* A registry for creating named {@link EventEmitter}s.
* A registry for creating named {@link EventLogger}s.
*/
export interface EventEmitterProvider {
export interface EventLoggerProvider {
/**
* Returns an EventEmitter, creating one if one with the given name, version, and
* Returns an EventLogger, creating one if one with the given name, version, and
* schemaUrl pair is not already created.
*
* @param name The name of the event emitter or instrumentation library.
* @param version The version of the event emitter or instrumentation library.
* @param options The options of the event emitter or instrumentation library.
* @returns EventEmitter An event emitter with the given name and version.
* @param name The name of the event logger or instrumentation library.
* @param version The version of the event logger or instrumentation library.
* @param options The options of the event logger or instrumentation library.
* @returns EventLogger An event logger with the given name and version.
*/
getEventEmitter(
getEventLogger(
name: string,
version?: string,
options?: EventEmitterOptions
): EventEmitter;
options?: EventLoggerOptions
): EventLogger;
}
54 changes: 27 additions & 27 deletions experimental/packages/api-events/test/api/api.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,57 +15,57 @@
*/

import * as assert from 'assert';
import { EventEmitter, events } from '../../src';
import { NoopEventEmitter } from '../../src/NoopEventEmitter';
import { NoopEventEmitterProvider } from '../../src/NoopEventEmitterProvider';
import { EventLogger, events } from '../../src';
import { NoopEventLogger } from '../../src/NoopEventLogger';
import { NoopEventLoggerProvider } from '../../src/NoopEventLoggerProvider';

describe('API', () => {
const dummyEventEmitter = new NoopEventEmitter();
const dummyEventLogger = new NoopEventLogger();

it('should expose a event emitter provider via getEventEmitterProvider', () => {
const provider = events.getEventEmitterProvider();
it('should expose a event logger provider via getEventLoggerProvider', () => {
const provider = events.getEventLoggerProvider();
assert.ok(provider);
assert.strictEqual(typeof provider, 'object');
});

describe('GlobalEventEmitterProvider', () => {
describe('GlobalEventLoggerProvider', () => {
beforeEach(() => {
events.disable();
});

it('should use the global event emitter provider', () => {
events.setGlobalEventEmitterProvider(new TestEventEmitterProvider());
const eventEmitter = events
.getEventEmitterProvider()
.getEventEmitter('name');
assert.deepStrictEqual(eventEmitter, dummyEventEmitter);
it('should use the global event logger provider', () => {
events.setGlobalEventLoggerProvider(new TestEventLoggerProvider());
const eventLogger = events
.getEventLoggerProvider()
.getEventLogger('name');
assert.deepStrictEqual(eventLogger, dummyEventLogger);
});

it('should not allow overriding global provider if already set', () => {
const provider1 = new TestEventEmitterProvider();
const provider2 = new TestEventEmitterProvider();
events.setGlobalEventEmitterProvider(provider1);
assert.equal(events.getEventEmitterProvider(), provider1);
events.setGlobalEventEmitterProvider(provider2);
assert.equal(events.getEventEmitterProvider(), provider1);
const provider1 = new TestEventLoggerProvider();
const provider2 = new TestEventLoggerProvider();
events.setGlobalEventLoggerProvider(provider1);
assert.equal(events.getEventLoggerProvider(), provider1);
events.setGlobalEventLoggerProvider(provider2);
assert.equal(events.getEventLoggerProvider(), provider1);
});
});

describe('getEventEmitter', () => {
describe('getEventLogger', () => {
beforeEach(() => {
events.disable();
});

it('should return a event emitter instance from global provider', () => {
events.setGlobalEventEmitterProvider(new TestEventEmitterProvider());
const eventEmitter = events.getEventEmitter('myEventEmitter');
assert.deepStrictEqual(eventEmitter, dummyEventEmitter);
it('should return a event logger instance from global provider', () => {
events.setGlobalEventLoggerProvider(new TestEventLoggerProvider());
const eventLogger = events.getEventLogger('myEventLogger');
assert.deepStrictEqual(eventLogger, dummyEventLogger);
});
});

class TestEventEmitterProvider extends NoopEventEmitterProvider {
override getEventEmitter(): EventEmitter {
return dummyEventEmitter;
class TestEventLoggerProvider extends NoopEventLoggerProvider {
override getEventLogger(): EventLogger {
return dummyEventLogger;
}
}
});
Loading

0 comments on commit f6a075b

Please sign in to comment.