diff --git a/packages/rtl/node.events.pas b/packages/rtl/node.events.pas new file mode 100644 index 0000000..917ed4a --- /dev/null +++ b/packages/rtl/node.events.pas @@ -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. + diff --git a/packages/rtl/nodejs.pas b/packages/rtl/nodejs.pas index 4ac907b..876dd32 100644 --- a/packages/rtl/nodejs.pas +++ b/packages/rtl/nodejs.pas @@ -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;