mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) move home server into core
Summary: This moves enough server material into core to run a home server. The data engine is not yet incorporated (though in manual testing it works when ported). Test Plan: existing tests pass Reviewers: dsagal Reviewed By: dsagal Differential Revision: https://phab.getgrist.com/D2552
This commit is contained in:
28
app/common/DisposableWithEvents.ts
Normal file
28
app/common/DisposableWithEvents.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* A base class which combines grainjs Disposable with mixed-in backbone Events. It includes the
|
||||
* backbone Events methods, and when disposed, stops backbone listeners started with listenTo().
|
||||
*/
|
||||
import {Events as BackboneEvents, EventsHash} from 'backbone';
|
||||
import {Disposable} from 'grainjs';
|
||||
|
||||
// In Typescript, mixins are awkward. This follows the recommendation here
|
||||
// https://www.typescriptlang.org/docs/handbook/mixins.html
|
||||
export class DisposableWithEvents extends Disposable implements BackboneEvents {
|
||||
public on: (eventName: string|EventsHash, callback?: (...args: any[]) => void, context?: any) => any;
|
||||
public off: (eventName?: string, callback?: (...args: any[]) => void, context?: any) => any;
|
||||
public trigger: (eventName: string, ...args: any[]) => any;
|
||||
public bind: (eventName: string, callback: (...args: any[]) => void, context?: any) => any;
|
||||
public unbind: (eventName?: string, callback?: (...args: any[]) => void, context?: any) => any;
|
||||
|
||||
public once: (events: string, callback: (...args: any[]) => void, context?: any) => any;
|
||||
public listenTo: (object: any, events: string, callback: (...args: any[]) => void) => any;
|
||||
public listenToOnce: (object: any, events: string, callback: (...args: any[]) => void) => any;
|
||||
public stopListening: (object?: any, events?: string, callback?: (...args: any[]) => void) => any;
|
||||
|
||||
// DisposableWithEvents knows also how to stop any backbone listeners started with listenTo().
|
||||
constructor() {
|
||||
super();
|
||||
this.onDispose(this.stopListening, this);
|
||||
}
|
||||
}
|
||||
Object.assign(DisposableWithEvents.prototype, BackboneEvents);
|
||||
Reference in New Issue
Block a user