(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:
Paul Fitzpatrick
2020-07-21 09:20:51 -04:00
parent c756f663ee
commit 5ef889addd
218 changed files with 33640 additions and 38 deletions

View 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);