diff --git a/js/packages/core/__tests__/metro-event-type.test.ts b/js/packages/core/__tests__/metro-event-type.test.ts new file mode 100644 index 00000000..2e5d2a13 --- /dev/null +++ b/js/packages/core/__tests__/metro-event-type.test.ts @@ -0,0 +1,18 @@ +/** + * Type-level test for metro event type. + * + * This test verifies that 'metro' is recognized as a valid event name + * in EventTypes, so that core.on('metro', callback) compiles without + * TypeScript errors. + * + * See: https://github.com/elemaudio/elementary/issues/73 + */ +import EventEmitter from '../src/Events'; + +// This should compile without errors: metro is a valid event type +const emitter = new EventEmitter(); + +emitter.on('metro', (data) => { + // The metro event payload should have an optional source field + const source: string | undefined = data.source; +}); diff --git a/js/packages/core/src/Events.ts b/js/packages/core/src/Events.ts index 8a06949b..31046aca 100644 --- a/js/packages/core/src/Events.ts +++ b/js/packages/core/src/Events.ts @@ -7,6 +7,7 @@ type EventTypes = { fft: (data: { source?: string, data: { real: Float32Array, imag: Float32Array } }) => void; load: () => void; meter: (data: { source?: string, min: number; max: number, }) => void; + metro: (data: { source?: string }) => void; scope: (data: { source?: string, data: Float32Array[] }) => void; snapshot: (data: { source?: string, data: number }) => void; };