Node updated. Some todos.
This commit is contained in:
70
Scripts/node_modules/bare-events/index.js
generated
vendored
70
Scripts/node_modules/bare-events/index.js
generated
vendored
@ -3,14 +3,17 @@ const errors = require('./lib/errors')
|
||||
class EventListener {
|
||||
constructor () {
|
||||
this.list = []
|
||||
this.count = 0
|
||||
}
|
||||
|
||||
append (ctx, name, fn, once) {
|
||||
this.count++
|
||||
ctx.emit('newListener', name, fn) // Emit BEFORE adding
|
||||
this.list.push([fn, once])
|
||||
}
|
||||
|
||||
prepend (ctx, name, fn, once) {
|
||||
this.count++
|
||||
ctx.emit('newListener', name, fn) // Emit BEFORE adding
|
||||
this.list.unshift([fn, once])
|
||||
}
|
||||
@ -22,9 +25,11 @@ class EventListener {
|
||||
if (l[0] === fn) {
|
||||
this.list.splice(i, 1)
|
||||
|
||||
if (this.list.length === 0) delete ctx._events[name]
|
||||
if (this.count === 1) delete ctx._events[name]
|
||||
|
||||
ctx.emit('removeListener', name, fn) // Emit AFTER removing
|
||||
|
||||
this.count--
|
||||
return
|
||||
}
|
||||
}
|
||||
@ -34,11 +39,13 @@ class EventListener {
|
||||
const list = [...this.list]
|
||||
this.list = []
|
||||
|
||||
if (this.count === list.length) delete ctx._events[name]
|
||||
|
||||
for (let i = list.length - 1; i >= 0; i--) {
|
||||
ctx.emit('removeListener', name, list[i][0]) // Emit AFTER removing
|
||||
}
|
||||
|
||||
if (this.list.length === 0) delete ctx._events[name]
|
||||
this.count -= list.length
|
||||
}
|
||||
|
||||
emit (ctx, name, ...args) {
|
||||
@ -74,6 +81,20 @@ function removeListener (ctx, name, fn) {
|
||||
return ctx
|
||||
}
|
||||
|
||||
function throwUnhandledError (...args) {
|
||||
let err
|
||||
|
||||
if (args.length > 0) err = args[0]
|
||||
|
||||
if (err instanceof Error === false) err = errors.UNHANDLED_ERROR(err)
|
||||
|
||||
if (Error.captureStackTrace) {
|
||||
Error.captureStackTrace(err, exports.prototype.emit)
|
||||
}
|
||||
|
||||
queueMicrotask(() => { throw err })
|
||||
}
|
||||
|
||||
module.exports = exports = class EventEmitter {
|
||||
constructor () {
|
||||
this._events = Object.create(null)
|
||||
@ -112,6 +133,7 @@ module.exports = exports = class EventEmitter {
|
||||
}
|
||||
|
||||
emit (name, ...args) {
|
||||
if (name === 'error' && this._events.error === undefined) throwUnhandledError(...args)
|
||||
const e = this._events[name]
|
||||
return e === undefined ? false : e.emit(this, name, ...args)
|
||||
}
|
||||
@ -149,6 +171,8 @@ module.exports = exports = class EventEmitter {
|
||||
|
||||
exports.EventEmitter = exports
|
||||
|
||||
exports.errors = errors
|
||||
|
||||
exports.defaultMaxListeners = 10
|
||||
|
||||
exports.on = function on (emitter, name, opts = {}) {
|
||||
@ -253,16 +277,56 @@ exports.once = function once (emitter, name, opts = {}) {
|
||||
}
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
if (name !== 'error') emitter.on('error', onerror)
|
||||
|
||||
if (signal) signal.addEventListener('abort', onabort)
|
||||
|
||||
emitter.once(name, (...args) => {
|
||||
if (name !== 'error') emitter.off('error', onerror)
|
||||
|
||||
if (signal) signal.removeEventListener('abort', onabort)
|
||||
|
||||
resolve(args)
|
||||
})
|
||||
|
||||
function onerror (err) {
|
||||
emitter.off('error', onerror)
|
||||
|
||||
reject(err)
|
||||
}
|
||||
|
||||
function onabort () {
|
||||
reject(errors.OPERATION_ABORTED(signal.reason))
|
||||
signal.removeEventListener('abort', onabort)
|
||||
|
||||
onerror(errors.OPERATION_ABORTED(signal.reason))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
exports.forward = function forward (from, to, names, opts = {}) {
|
||||
if (typeof names === 'string') names = [names]
|
||||
|
||||
const {
|
||||
emit = to.emit.bind(to)
|
||||
} = opts
|
||||
|
||||
const listeners = names.map((name) => function onevent (...args) {
|
||||
emit(name, ...args)
|
||||
})
|
||||
|
||||
to
|
||||
.on('newListener', (name) => {
|
||||
const i = names.indexOf(name)
|
||||
|
||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||
from.on(name, listeners[i])
|
||||
}
|
||||
})
|
||||
.on('removeListener', (name) => {
|
||||
const i = names.indexOf(name)
|
||||
|
||||
if (i !== -1 && to.listenerCount(name) === 0) {
|
||||
from.off(name, listeners[i])
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
4
Scripts/node_modules/bare-events/lib/errors.js
generated
vendored
4
Scripts/node_modules/bare-events/lib/errors.js
generated
vendored
@ -15,4 +15,8 @@ module.exports = class EventEmitterError extends Error {
|
||||
static OPERATION_ABORTED (cause, msg = 'Operation aborted') {
|
||||
return new EventEmitterError(msg, 'OPERATION_ABORTED', EventEmitterError.OPERATION_ABORTED, { cause })
|
||||
}
|
||||
|
||||
static UNHANDLED_ERROR (cause, msg = 'Unhandled error') {
|
||||
return new EventEmitterError(msg, 'UNHANDLED_ERROR', EventEmitterError.UNHANDLED_ERROR, { cause })
|
||||
}
|
||||
}
|
||||
|
||||
13
Scripts/node_modules/bare-events/package.json
generated
vendored
13
Scripts/node_modules/bare-events/package.json
generated
vendored
@ -1,14 +1,21 @@
|
||||
{
|
||||
"name": "bare-events",
|
||||
"version": "2.2.0",
|
||||
"version": "2.4.2",
|
||||
"description": "Event emitters for JavaScript",
|
||||
"main": "index.js",
|
||||
"exports": {
|
||||
".": "./index.js",
|
||||
"./package": "./package.json",
|
||||
"./errors": "./lib/errors.js"
|
||||
},
|
||||
"files": [
|
||||
"index.js",
|
||||
"lib"
|
||||
],
|
||||
"scripts": {
|
||||
"test": "standard && bare test.js"
|
||||
"test": "npm run lint && npm run test:bare && npm run test:node",
|
||||
"test:bare": "bare test.js",
|
||||
"test:node": "node test.js",
|
||||
"lint": "standard"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
Reference in New Issue
Block a user