Browse Source

* SPlit eventemitter, often encountered in browser code

michael 4 years ago
parent
commit
b91651683c
2 changed files with 49 additions and 29 deletions
  1. 44 0
      packages/rtl/node.events.pas
  2. 5 29
      packages/rtl/nodejs.pas

+ 44 - 0
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.
+

+ 5 - 29
packages/rtl/nodejs.pas

@@ -18,7 +18,7 @@ unit NodeJS;
 interface
 interface
 
 
 uses
 uses
-  JS, Types;
+  JS, Types, node.events;
 
 
 type
 type
 
 
@@ -250,34 +250,10 @@ type
     procedure warn(const Obj1 : JSValue); varargs;
     procedure warn(const Obj1 : JSValue); varargs;
   end;
   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;
   TNJSTimerCallBack = reference to procedure;