Skip to content

Instantly share code, notes, and snippets.

/// <reference path="../../tools/typings/firebase/firebase.d.ts"/>
module Chat {
class ChatMessage {
constructor(public name:string, public text:string) {
}
}
export class ChatEngine {
private static baseUrl = "<Your Firebase URL>";
private firebase;
interface FirebaseQuery {
/**
* Listens for data changes at a particular location.
*/
on(eventType: string, callback: (dataSnapshot: FirebaseDataSnapshot, prevChildName?: string) => void, cancelCallback?: (error: any) => void, context?: Object): (dataSnapshot: FirebaseDataSnapshot, prevChildName?: string) => void;
}
interface Firebase extends FirebaseQuery {
/**
* Generates a new child location using a unique name and returns a Firebase reference to it.
@ghsyeung
ghsyeung / Dependency Injection Distilled
Last active January 4, 2017 04:43
Dependency Injection Distilled
.
@ghsyeung
ghsyeung / Adding Yarn to alpine-node
Last active February 10, 2017 00:50
Installing Yarn in Alpine
Both approaches from https://github.com/yarnpkg/yarn/issues/1326
@ghsyeung
ghsyeung / Scraper Motivation.js
Created November 20, 2018 20:21
Dependency Injection
import fetch from "fetch";
class WebScraper {
public download(link) {
const page = fetch(link);
if (page.status === "OK") {
this.cache.add(link, page);
} else {
this.scheduler.schedule(link);
}