* SPlit eventemitter, often encountered in browser code

This commit is contained in:
michael 2020-08-27 12:09:51 +00:00
parent 143a836c5f
commit b91651683c
2 changed files with 49 additions and 29 deletions

View File

@ -0,0 +1,44 @@
unit node.events;
{$mode objfpc}
{$ModeSwitch externalclass}
interface
uses
JS;
Type
TNJSEventEmitterHandler = reference to procedure(arg : JSValue);
TNJSEventEmitterHandlerArray = array of TNJSEventEmitterHandler;
TNJSEventEmitter = class external name 'EventEmitter' (TJSObject)
class var captureRejections : Boolean;
class var defaultMaxListeners : Integer;
class var errorMonitor : TNJSEventEmitter;
function addListener(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function on_(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter; external name 'on';
function once(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function off(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function emit(const EventName : String) : Boolean; varargs;
function eventnames : TJSStringDynArray;
function getMaxListeners : Integer;
function listenerCount(const EventName : String) : Integer;
function listeners(const EventName : String) : TNJSEventEmitterHandlerArray;
function prependListener(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function prependOnceListener(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function removeListener(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function setMaxListeners(aMax : Integer): TNJSEventEmitter;
function rawListeners(const EventName : String) : TNJSEventEmitterHandlerArray;
end;
TNJSEvents = class external name 'events' (TJSObject)
function once(emitter : TNJSEventEmitter; aName : string) : TJSPromise;
function on_(emitter : TNJSEventEmitter; aName : string) : TJSAsyncIterator;
end;
implementation
end.

View File

@ -18,7 +18,7 @@ unit NodeJS;
interface
uses
JS, Types;
JS, Types, node.events;
type
@ -250,34 +250,10 @@ type
procedure warn(const Obj1 : JSValue); varargs;
end;
TNJSEventEmitterHandler = reference to procedure(arg : JSValue);
TNJSEventEmitterHandlerArray = array of TNJSEventEmitterHandler;
TNJSEventEmitter = class external name 'EventEmitter' (TJSObject)
class var captureRejections : Boolean;
class var defaultMaxListeners : Integer;
class var errorMonitor : TNJSEventEmitter;
function addListener(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function on_(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function once(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function off(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function emit(const EventName : String) : Boolean; varargs;
function eventnames : TJSStringDynArray;
function getMaxListeners : Integer;
function listenerCount(const EventName : String) : Integer;
function listeners(const EventName : String) : TNJSEventEmitterHandlerArray;
function prependListener(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function prependOnceListener(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function removeListener(const EventName : String; Listener : TNJSEventEmitterHandler) : TNJSEventEmitter;
function setMaxListeners(aMax : Integer): TNJSEventEmitter;
function rawListeners(const EventName : String) : TNJSEventEmitterHandlerArray;
end;
TNJSEvents = class external name 'events' (TJSObject)
function once(emitter : TNJSEventEmitter; aName : string) : TJSPromise;
function on_(emitter : TNJSEventEmitter; aName : string) : TJSAsyncIterator;
end;
TNJSEventEmitterHandler = node.events.TNJSEventEmitterHandler;
TNJSEventEmitterHandlerArray = node.events.TNJSEventEmitterHandlerArray;
TNJSEventEmitter = node.events.TNJSEventEmitter;
TNJSEvents = node.events.TNJSEventEmitter;
TNJSTimerCallBack = reference to procedure;