tappedout
Version:
A simple "back to basics" JavaScript test runner for producing TAP-formatted results. Built using ES Modules.
54 lines (44 loc) • 1.31 kB
JavaScript
const id = Symbol.for('tappedout_test_runner')
globalThis[id] = globalThis[id] || new Map()
const ref = globalThis[id]
const initialized = ref.get('initialized') || false
class EventEmitter {
on (event) {
event = event.trim()
this.
this.
}
once (event) {
event = event.trim()
this.
this.
}
emit (event) {
event = event.trim()
this.handle(event, this.
this.handle(event, this.
}
handle (event, handlers) {
for (const [name, handlerFns] of Object.entries(handlers)) {
if (match(name.trim(), event)) {
for (const handler of handlerFns) {
handler(...Array.from(arguments).slice(1))
}
}
}
}
}
function match (pattern, event) {
if (pattern.indexOf('*') >= 0) {
pattern = new RegExp(pattern.replace(/\./g, '\.').replace(/\*/g, '(.*)'), 'g')
return pattern.test(event)
}
return pattern === event
}
ref.set('emitter', new EventEmitter())
export {
ref,
initialized
}