From 7469cf48fc7bad86f8093a186454e1b30e4fa647 Mon Sep 17 00:00:00 2001 From: davidliu Date: Fri, 27 Mar 2026 01:22:44 +0900 Subject: [PATCH] feat: remove event-target-shim dependency --- package.json | 1 - src/audio/MediaRecorder.ts | 67 +++++++++++++++++++++++++++++--------- src/index.tsx | 1 + yarn.lock | 8 ----- 4 files changed, 53 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index ee80222..48c2ea8 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,6 @@ "@livekit/mutex": "^1.1.1", "array.prototype.at": "^1.1.1", "base64-js": "1.5.1", - "event-target-shim": "6.0.2", "events": "^3.3.0", "loglevel": "^1.8.0", "promise.allsettled": "^1.0.5", diff --git a/src/audio/MediaRecorder.ts b/src/audio/MediaRecorder.ts index b3c8ce6..a5ee80d 100644 --- a/src/audio/MediaRecorder.ts +++ b/src/audio/MediaRecorder.ts @@ -1,10 +1,11 @@ import type { MediaStream } from '@livekit/react-native-webrtc'; -import { addListener } from '../events/EventEmitter'; import { EventTarget, Event, - defineEventAttribute, -} from 'event-target-shim/index'; + getEventAttributeValue, + setEventAttributeValue, +} from '@livekit/react-native-webrtc'; +import { addListener } from '../events/EventEmitter'; import { toByteArray } from 'base64-js'; import LiveKitModule from '../LKNativeModule'; import { log } from '../logger'; @@ -123,6 +124,54 @@ export class MediaRecorder extends EventTarget { new BlobEvent('dataavailable', { data: { byteArray: data } }) ); } + + get ondataavailable() { + return getEventAttributeValue(this, 'dataavailable'); + } + + set ondataavailable(value) { + setEventAttributeValue(this, 'dataavailable', value); + } + + get onerror() { + return getEventAttributeValue(this, 'error'); + } + + set onerror(value) { + setEventAttributeValue(this, 'error', value); + } + + get onpause() { + return getEventAttributeValue(this, 'pause'); + } + + set onpause(value) { + setEventAttributeValue(this, 'pause', value); + } + + get onresume() { + return getEventAttributeValue(this, 'resume'); + } + + set onresume(value) { + setEventAttributeValue(this, 'resume', value); + } + + get onstart() { + return getEventAttributeValue(this, 'start'); + } + + set onstart(value) { + setEventAttributeValue(this, 'start', value); + } + + get onstop() { + return getEventAttributeValue(this, 'stop'); + } + + set onstop(value) { + setEventAttributeValue(this, 'stop', value); + } } /** @@ -144,15 +193,3 @@ class BlobEvent extends Event { this.data = eventInitDict.data; } } - -/** - * Define the `onxxx` event handlers. - */ -const proto = MediaRecorder.prototype; - -defineEventAttribute(proto, 'dataavailable'); -defineEventAttribute(proto, 'error'); -defineEventAttribute(proto, 'pause'); -defineEventAttribute(proto, 'resume'); -defineEventAttribute(proto, 'start'); -defineEventAttribute(proto, 'stop'); diff --git a/src/index.tsx b/src/index.tsx index 7a13b43..fc9e660 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -161,6 +161,7 @@ export * from './useParticipant'; // deprecated export * from './useRoom'; // deprecated export * from './logger'; export * from './audio/AudioManager'; +export * from './audio/MediaRecorder'; export { AudioSession, diff --git a/yarn.lock b/yarn.lock index f12a429..f9f5797 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3342,7 +3342,6 @@ __metadata: eslint: ^9.35.0 eslint-config-prettier: ^10.1.8 eslint-plugin-prettier: ^5.5.4 - event-target-shim: 6.0.2 events: ^3.3.0 jest: ^29.7.0 livekit-client: ^2.15.8 @@ -7286,13 +7285,6 @@ __metadata: languageName: node linkType: hard -"event-target-shim@npm:6.0.2": - version: 6.0.2 - resolution: "event-target-shim@npm:6.0.2" - checksum: 9be93437e5b84056a7dc70af8b8962f4ef7f6fd41a988efcd39dfa2853e33242a4058e0dac9cc589cb16ed7409010590ac8cbcc2e3f823100cd337e13be953a0 - languageName: node - linkType: hard - "event-target-shim@npm:^5.0.0": version: 5.0.1 resolution: "event-target-shim@npm:5.0.1"