diff --git a/types/atom-keymap/atom-keymap-tests.ts b/types/atom-keymap/atom-keymap-tests.ts
index ad886ae22a..ac013b07eb 100644
--- a/types/atom-keymap/atom-keymap-tests.ts
+++ b/types/atom-keymap/atom-keymap-tests.ts
@@ -1,8 +1,9 @@
+import { Disposable } from "event-kit";
import KeymapManager = require("atom-keymap");
import * as ImportTest from "atom-keymap";
declare const element: HTMLElement;
-declare let sub: EventKit.Disposable;
+declare let sub: Disposable;
declare const event: KeyboardEvent;
// NPM Examples ===============================================================
diff --git a/types/atom-keymap/index.d.ts b/types/atom-keymap/index.d.ts
index 69dcf8de4e..1d67a20ba2 100644
--- a/types/atom-keymap/index.d.ts
+++ b/types/atom-keymap/index.d.ts
@@ -4,7 +4,7 @@
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2
-///
+import { Disposable } from "event-kit";
declare global {
namespace AtomKeymap {
@@ -156,27 +156,25 @@ declare global {
* key binding.
*/
onDidMatchBinding(callback: (event: Events.FullKeybindingMatch) => void):
- EventKit.Disposable;
+ Disposable;
/** Invoke the given callback when one or more keystrokes partially match a binding. */
onDidPartiallyMatchBindings(callback: (event: Events.PartialKeybindingMatch) =>
- void): EventKit.Disposable;
+ void): Disposable;
/** Invoke the given callback when one or more keystrokes fail to match any bindings. */
onDidFailToMatchBinding(callback: (event: Events.FailedKeybindingMatch) =>
- void): EventKit.Disposable;
+ void): Disposable;
/** Invoke the given callback when a keymap file is reloaded. */
- onDidReloadKeymap(callback: (event: Events.KeymapLoaded) => void):
- EventKit.Disposable;
+ onDidReloadKeymap(callback: (event: Events.KeymapLoaded) => void): Disposable;
/** Invoke the given callback when a keymap file is unloaded. */
- onDidUnloadKeymap(callback: (event: Events.KeymapLoaded) => void):
- EventKit.Disposable;
+ onDidUnloadKeymap(callback: (event: Events.KeymapLoaded) => void): Disposable;
/** Invoke the given callback when a keymap file not able to be loaded. */
onDidFailToReadFile(callback: (error: Events.FailedKeymapFileRead) => void):
- EventKit.Disposable;
+ Disposable;
// Adding and Removing Bindings
/** Construct KeyBindings from an object grouping them by CSS selector. */
@@ -185,7 +183,7 @@ declare global {
/** Add sets of key bindings grouped by CSS selector. */
add(source: string, bindings: { [key: string]: { [key: string]: string }},
- priority?: number): EventKit.Disposable;
+ priority?: number): Disposable;
// Accessing Bindings
/** Get all current key bindings. */
@@ -221,7 +219,7 @@ declare global {
/** Customize translation of raw keyboard events to keystroke strings. */
addKeystrokeResolver(resolver: (event: Events.AddedKeystrokeResolver) => string):
- EventKit.Disposable;
+ Disposable;
/**
* Get the number of milliseconds allowed before pending states caused by
diff --git a/types/event-kit/event-kit-tests.ts b/types/event-kit/event-kit-tests.ts
index 9507290244..bad636aee2 100644
--- a/types/event-kit/event-kit-tests.ts
+++ b/types/event-kit/event-kit-tests.ts
@@ -1,13 +1,13 @@
import { Disposable, CompositeDisposable, Emitter } from "event-kit";
declare let bool: boolean;
-declare let subscription: EventKit.Disposable;
-declare let subscriptions: EventKit.CompositeDisposable;
-declare let emitter: EventKit.Emitter;
+declare let subscription: Disposable;
+declare let subscriptions: CompositeDisposable;
+declare let emitter: Emitter;
// NPM Usage Tests ============================================================
class User {
- private readonly emitter: EventKit.Emitter;
+ private readonly emitter: Emitter;
name: string;
constructor() {
diff --git a/types/event-kit/index.d.ts b/types/event-kit/index.d.ts
index 2a40b0468f..e08c980977 100644
--- a/types/event-kit/index.d.ts
+++ b/types/event-kit/index.d.ts
@@ -4,131 +4,104 @@
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2
-declare global {
- namespace EventKit {
- interface DisposableLike {
- dispose(): void;
- }
-
- /** A handle to a resource that can be disposed. */
- interface Disposable extends DisposableLike {
- disposed: boolean;
-
- /** A callback which will be called within dispose(). */
- disposalAction?(): void;
-
- /**
- * Perform the disposal action, indicating that the resource associated
- * with this disposable is no longer needed.
- */
- dispose(): void;
- }
-
- interface DisposableStatic {
- /** Ensure that Object correctly implements the Disposable contract. */
- isDisposable(object: object): boolean;
-
- /** Construct a Disposable. */
- new (disposableAction?: () => void): Disposable;
- }
-
- /**
- * An object that aggregates multiple Disposable instances together into a
- * single disposable, so they can all be disposed as a group.
- */
- interface CompositeDisposable extends DisposableLike {
- disposed: boolean;
-
- /**
- * Dispose all disposables added to this composite disposable.
- * If this object has already been disposed, this method has no effect.
- */
- dispose(): void;
-
- // Managing Disposables
- /**
- * Add disposables to be disposed when the composite is disposed.
- * If this object has already been disposed, this method has no effect.
- */
- add(...disposables: DisposableLike[]): void;
-
- /** Remove a previously added disposable. */
- remove(disposable: DisposableLike): void;
-
- /** Alias to CompositeDisposable::remove. */
- delete(disposable: DisposableLike): void;
-
- /**
- * Clear all disposables. They will not be disposed by the next call to
- * dispose.
- */
- clear(): void;
- }
-
- /** The static side to the CompositeDisposable class. */
- interface CompositeDisposableStatic {
- /** Construct an instance, optionally with one or more disposables. */
- new (...disposables: DisposableLike[]): CompositeDisposable;
- }
-
- /**
- * Utility class to be used when implementing event-based APIs that allows
- * for handlers registered via ::on to be invoked with calls to ::emit.
- */
- interface Emitter extends DisposableLike {
- disposed: boolean;
-
- /** Clear out any existing subscribers. */
- clear(): void;
-
- /** Unsubscribe all handlers. */
- dispose(): boolean;
-
- // Event Subscription
- /** Registers a handler to be invoked whenever the given event is emitted. */
- // tslint:disable-next-line:no-any
- on(eventName: string, handler: (value: any) => void): Disposable;
-
- /**
- * Register the given handler function to be invoked the next time an event
- * with the given name is emitted via ::emit.
- */
- // tslint:disable-next-line:no-any
- once(eventName: string, handler: (value: any) => void): Disposable;
-
- /**
- * Register the given handler function to be invoked before all other
- * handlers existing at the time of subscription whenever events by the
- * given name are emitted via ::emit.
- */
- // tslint:disable-next-line:no-any
- preempt(eventName: string, handler: (value: any) => void): Disposable;
-
- // Event Emission
- /** Invoke handlers registered via ::on for the given event name. */
- // tslint:disable-next-line:no-any
- emit(eventName: string, value?: any): void;
- }
-
- /** The static side to the Emitter class. */
- interface EmitterStatic {
- /** Construct an emitter. */
- new (): Emitter;
- }
- }
+export interface DisposableLike {
+ dispose(): void;
}
/** A handle to a resource that can be disposed. */
-export const Disposable: EventKit.DisposableStatic;
+export class Disposable implements DisposableLike {
+ disposed: boolean;
+
+ /** Ensure that Object correctly implements the Disposable contract. */
+ static isDisposable(object: object): boolean;
+
+ /** Construct a Disposable. */
+ constructor(disposableAction?: () => void);
+
+ /** A callback which will be called within dispose(). */
+ disposalAction?: () => void;
+
+ /**
+ * Perform the disposal action, indicating that the resource associated
+ * with this disposable is no longer needed.
+ */
+ dispose(): void;
+}
/**
* An object that aggregates multiple Disposable instances together into a
* single disposable, so they can all be disposed as a group.
*/
-export const CompositeDisposable: EventKit.CompositeDisposableStatic;
+export class CompositeDisposable implements DisposableLike {
+ disposed: boolean;
+
+ /** Construct an instance, optionally with one or more disposables. */
+ constructor(...disposables: DisposableLike[]);
+
+ /**
+ * Dispose all disposables added to this composite disposable.
+ * If this object has already been disposed, this method has no effect.
+ */
+ dispose(): void;
+
+ // Managing Disposables
+ /**
+ * Add disposables to be disposed when the composite is disposed.
+ * If this object has already been disposed, this method has no effect.
+ */
+ add(...disposables: DisposableLike[]): void;
+
+ /** Remove a previously added disposable. */
+ remove(disposable: DisposableLike): void;
+
+ /** Alias to CompositeDisposable::remove. */
+ delete(disposable: DisposableLike): void;
+
+ /**
+ * Clear all disposables. They will not be disposed by the next call to
+ * dispose.
+ */
+ clear(): void;
+}
/**
* Utility class to be used when implementing event-based APIs that allows
* for handlers registered via ::on to be invoked with calls to ::emit.
*/
-export const Emitter: EventKit.EmitterStatic;
+export class Emitter implements DisposableLike {
+ disposed: boolean;
+
+ /** Clear out any existing subscribers. */
+ clear(): void;
+
+ /** Unsubscribe all handlers. */
+ dispose(): boolean;
+
+ /** Construct an emitter. */
+ constructor();
+
+ // Event Subscription
+ /** Registers a handler to be invoked whenever the given event is emitted. */
+ // tslint:disable-next-line:no-any
+ on(eventName: string, handler: (value: any) => void): Disposable;
+
+ /**
+ * Register the given handler function to be invoked the next time an event
+ * with the given name is emitted via ::emit.
+ */
+ // tslint:disable-next-line:no-any
+ once(eventName: string, handler: (value: any) => void): Disposable;
+
+ /**
+ * Register the given handler function to be invoked before all other
+ * handlers existing at the time of subscription whenever events by the
+ * given name are emitted via ::emit.
+ */
+ // tslint:disable-next-line:no-any
+ preempt(eventName: string, handler: (value: any) => void): Disposable;
+
+ // Event Emission
+ /** Invoke the handlers registered via ::on for the given event name. */
+ // tslint:disable-next-line:no-any
+ emit(eventName: string, value?: any): void;
+}
diff --git a/types/first-mate/first-mate-tests.ts b/types/first-mate/first-mate-tests.ts
index b348cd1758..3d3be512a1 100644
--- a/types/first-mate/first-mate-tests.ts
+++ b/types/first-mate/first-mate-tests.ts
@@ -1,8 +1,9 @@
+import { Disposable } from "event-kit";
import { GrammarRegistry, Grammar, ScopeSelector } from "first-mate";
-declare let subscription: EventKit.Disposable;
-declare let grammar: FirstMate.Grammar;
-declare let grammars: FirstMate.Grammar[];
+declare let subscription: Disposable;
+declare let grammar: Grammar;
+declare let grammars: Grammar[];
// NPM Examples ===============================================================
const selector = new ScopeSelector("a | b");
diff --git a/types/first-mate/index.d.ts b/types/first-mate/index.d.ts
index ca96e5814e..c7df2365c3 100644
--- a/types/first-mate/index.d.ts
+++ b/types/first-mate/index.d.ts
@@ -4,275 +4,249 @@
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2
-///
-
-declare global {
- /** TextMate helpers. */
- namespace FirstMate {
- /**
- * The option objects that the user is expected to fill out and provide to
- * specific API calls.
- */
- namespace Options {
- interface Grammar {
- name?: string;
- fileTypes?: ReadonlyArray;
- scopeName?: string;
- foldingStopMarker?: string;
- maxTokensPerLine?: number;
- maxLineLength?: number;
-
- injections?: object;
- injectionSelector?: ScopeSelector;
- patterns?: ReadonlyArray