From b5c337ed266a2669980a9b76d81d3648194deb63 Mon Sep 17 00:00:00 2001 From: Karol Janyst Date: Thu, 17 Aug 2017 14:15:57 +0900 Subject: [PATCH 1/4] Add definitions for event-emitter --- types/event-emitter/all-off.d.ts | 4 +++ types/event-emitter/event-emitter-tests.ts | 35 ++++++++++++++++++++++ types/event-emitter/has-listeners.d.ts | 2 ++ types/event-emitter/index.d.ts | 20 +++++++++++++ types/event-emitter/pipe.d.ts | 10 +++++++ types/event-emitter/tsconfig.json | 26 ++++++++++++++++ types/event-emitter/tslint.json | 1 + types/event-emitter/unify.d.ts | 4 +++ 8 files changed, 102 insertions(+) create mode 100644 types/event-emitter/all-off.d.ts create mode 100644 types/event-emitter/event-emitter-tests.ts create mode 100644 types/event-emitter/has-listeners.d.ts create mode 100644 types/event-emitter/index.d.ts create mode 100644 types/event-emitter/pipe.d.ts create mode 100644 types/event-emitter/tsconfig.json create mode 100644 types/event-emitter/tslint.json create mode 100644 types/event-emitter/unify.d.ts diff --git a/types/event-emitter/all-off.d.ts b/types/event-emitter/all-off.d.ts new file mode 100644 index 0000000000..e94f6e7747 --- /dev/null +++ b/types/event-emitter/all-off.d.ts @@ -0,0 +1,4 @@ +import { Emitter } from "event-emitter"; + +declare function allOff(emitter: Emitter): void; +export = allOff; diff --git a/types/event-emitter/event-emitter-tests.ts b/types/event-emitter/event-emitter-tests.ts new file mode 100644 index 0000000000..e5ed39a4f5 --- /dev/null +++ b/types/event-emitter/event-emitter-tests.ts @@ -0,0 +1,35 @@ +import { Emitter } from "event-emitter"; +import ee = require("event-emitter"); +import allOff = require("event-emitter/all-off"); +import hasListeners = require("event-emitter/has-listeners"); +import { EmitterPipe } from "event-emitter/pipe"; +import pipe = require("event-emitter/pipe"); +import unify = require("event-emitter/unify"); + +const obj = {}; + +const emitter1: Emitter = ee(obj); +const emitter2: Emitter = ee(obj); + +function listener(param: string) {} + +emitter1.on("test", listener); +emitter1.once("test", listener); +emitter1.off("test", listener); +emitter1.emit("test", "foo"); + +allOff(emitter1); +hasListeners(emitter1); +hasListeners(emitter1, "test"); + +const eePipe1: EmitterPipe = pipe(emitter1, emitter2); +const eePipe2: EmitterPipe = pipe(emitter1, emitter2, "foo"); + +eePipe1.close(); + +const unifiedEmitter: Emitter = unify(emitter1, emitter2); + +unifiedEmitter.on("test", listener); +unifiedEmitter.once("test", listener); +unifiedEmitter.off("test", listener); +unifiedEmitter.emit("test", "foo"); diff --git a/types/event-emitter/has-listeners.d.ts b/types/event-emitter/has-listeners.d.ts new file mode 100644 index 0000000000..4105703aa9 --- /dev/null +++ b/types/event-emitter/has-listeners.d.ts @@ -0,0 +1,2 @@ +declare function hasListeners(obj: any, name?: string): boolean; +export = hasListeners; diff --git a/types/event-emitter/index.d.ts b/types/event-emitter/index.d.ts new file mode 100644 index 0000000000..1b5fb29c62 --- /dev/null +++ b/types/event-emitter/index.d.ts @@ -0,0 +1,20 @@ +// Type definitions for event-emitter 0.3 +// Project: https://github.com/medikoo/event-emitter#readme +// Definitions by: Karol Janyst +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare namespace ee { + type EventListener = (...args: any[]) => void; + type EmitterMethod = (type: string, listener: EventListener) => void; + + interface Emitter { + emit(type: string, ...args: any[]): void; + off: EmitterMethod; + on: EmitterMethod; + once: EmitterMethod; + } +} + +declare function ee(obj: any): ee.Emitter; + +export = ee; diff --git a/types/event-emitter/pipe.d.ts b/types/event-emitter/pipe.d.ts new file mode 100644 index 0000000000..2a33b8361d --- /dev/null +++ b/types/event-emitter/pipe.d.ts @@ -0,0 +1,10 @@ +import { Emitter } from "event-emitter"; + +declare namespace pipe { + interface EmitterPipe { + close(): void; + } +} + +declare function pipe(source: Emitter, target: Emitter, emitMethodName?: string): pipe.EmitterPipe; +export = pipe; diff --git a/types/event-emitter/tsconfig.json b/types/event-emitter/tsconfig.json new file mode 100644 index 0000000000..7b8352ee4d --- /dev/null +++ b/types/event-emitter/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "all-off.d.ts", + "has-listeners.d.ts", + "index.d.ts", + "pipe.d.ts", + "unify.d.ts", + "event-emitter-tests.ts" + ] +} diff --git a/types/event-emitter/tslint.json b/types/event-emitter/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/event-emitter/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" } diff --git a/types/event-emitter/unify.d.ts b/types/event-emitter/unify.d.ts new file mode 100644 index 0000000000..af70f0f38c --- /dev/null +++ b/types/event-emitter/unify.d.ts @@ -0,0 +1,4 @@ +import { Emitter } from "event-emitter"; + +declare function unify(emitter1: Emitter, emitter2: Emitter): Emitter; +export = unify; From b9bdc181cb302062500db4c2f920acfed2973113 Mon Sep 17 00:00:00 2001 From: Karol Janyst Date: Thu, 17 Aug 2017 14:18:52 +0900 Subject: [PATCH 2/4] Add proper type to hasListeners --- types/event-emitter/has-listeners.d.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/types/event-emitter/has-listeners.d.ts b/types/event-emitter/has-listeners.d.ts index 4105703aa9..2a67ee6bc5 100644 --- a/types/event-emitter/has-listeners.d.ts +++ b/types/event-emitter/has-listeners.d.ts @@ -1,2 +1,4 @@ -declare function hasListeners(obj: any, name?: string): boolean; +import { Emitter } from "event-emitter"; + +declare function hasListeners(emitter: Emitter, name?: string): boolean; export = hasListeners; From 4d45463572ac87020391b986071f8ba5d228ca2e Mon Sep 17 00:00:00 2001 From: Karol Janyst Date: Thu, 17 Aug 2017 14:27:25 +0900 Subject: [PATCH 3/4] Add Symbol along with string method name --- types/event-emitter/pipe.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/event-emitter/pipe.d.ts b/types/event-emitter/pipe.d.ts index 2a33b8361d..269df5fe48 100644 --- a/types/event-emitter/pipe.d.ts +++ b/types/event-emitter/pipe.d.ts @@ -6,5 +6,5 @@ declare namespace pipe { } } -declare function pipe(source: Emitter, target: Emitter, emitMethodName?: string): pipe.EmitterPipe; +declare function pipe(source: Emitter, target: Emitter, emitMethodName?: string | Symbol): pipe.EmitterPipe; export = pipe; From 99502f4819a9bfb1e7bfe5c2978b53b3f0862b93 Mon Sep 17 00:00:00 2001 From: Karol Janyst Date: Thu, 17 Aug 2017 16:45:00 +0900 Subject: [PATCH 4/4] Change symbol type to lowercase --- types/event-emitter/pipe.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/types/event-emitter/pipe.d.ts b/types/event-emitter/pipe.d.ts index 269df5fe48..29b0512cb6 100644 --- a/types/event-emitter/pipe.d.ts +++ b/types/event-emitter/pipe.d.ts @@ -6,5 +6,5 @@ declare namespace pipe { } } -declare function pipe(source: Emitter, target: Emitter, emitMethodName?: string | Symbol): pipe.EmitterPipe; +declare function pipe(source: Emitter, target: Emitter, emitMethodName?: string | symbol): pipe.EmitterPipe; export = pipe;