refactor(core): CORE-02 type emitter maps and fix nested once dispatch

This commit is contained in:
Harvey Zhao committed 2026-09-11 00:03:53 +08:00
1 parent d3c695024a
commit 362c616998
21 files changed
+943 -72

No files matched your search

+28
View File
@@ -0,0 +1,28 @@
import { expect, test } from './fixtures.js'
for (const core of ['published', 'candidate']) {
test(`${core}: emitter event names and once across nested dispatch`, async ({ page }) => {
await page.goto(`/test/player.html?core=${core}&chapter=published`)
const result = await page.evaluate(() => {
const emitter = new window.Artplayer.Emitter()
const freshKeys = Object.keys(emitter)
let reservedCalls = 0
let errorName
try {
emitter.on('__proto__', () => reservedCalls++).emit('__proto__').off('__proto__')
}
catch (error) { errorName = error.name }
let nested = false
let onceCalls = 0
emitter.on('value', () => {
if (!nested) {
nested = true
emitter.emit('value')
}
}).once('value', () => onceCalls++)
emitter.emit('value')
return { freshKeys, reservedCalls, errorName, onceCalls }
})
expect(result).toEqual({ freshKeys: [], reservedCalls: core === 'published' ? 0 : 1, errorName: core === 'published' ? 'TypeError' : undefined, onceCalls: core === 'published' ? 2 : 1 })
})
}