aboutsummaryrefslogtreecommitdiff
path: root/src/server/Message.ts
diff options
context:
space:
mode:
authorAndrew Kim <andrewdkim@users.noreply.github.com>2019-03-05 18:51:20 -0500
committerAndrew Kim <andrewdkim@users.noreply.github.com>2019-03-05 18:51:20 -0500
commit7f93e6639e8fee3e3760d13c69d65b343875091a (patch)
treed29b45310f92a53935177d969ce3c1bee9920c32 /src/server/Message.ts
parent9b839a93b98b850aa77087218d4862b97fb24d15 (diff)
parent2cc5eb6ff512dc6128d25903bcb852f25bcadcca (diff)
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web into PDFNode
Diffstat (limited to 'src/server/Message.ts')
-rw-r--r--src/server/Message.ts125
1 files changed, 125 insertions, 0 deletions
diff --git a/src/server/Message.ts b/src/server/Message.ts
new file mode 100644
index 000000000..340e9b34a
--- /dev/null
+++ b/src/server/Message.ts
@@ -0,0 +1,125 @@
+import { Utils } from "../Utils";
+
+export class Message<T> {
+ private name: string;
+ private guid: string;
+
+ get Name(): string {
+ return this.name;
+ }
+
+ get Message(): string {
+ return this.guid
+ }
+
+ constructor(name: string) {
+ this.name = name;
+ this.guid = Utils.GenerateDeterministicGuid(name)
+ }
+
+ GetValue() {
+ return this.Name;
+ }
+}
+
+class TestMessageArgs {
+ hello: string = "";
+}
+
+export class SetFieldArgs {
+ field: string;
+ value: any;
+
+ constructor(f: string, v: any) {
+ this.field = f
+ this.value = v
+ }
+}
+
+export class GetFieldArgs {
+ field: string;
+
+ constructor(f: string) {
+ this.field = f
+ }
+}
+
+export enum Types {
+ Number, List, Key, Image, Web, Document, Text, RichText, DocumentReference, Html, PDF
+}
+
+export class DocumentTransfer implements Transferable {
+ readonly type = Types.Document
+ _id: string
+
+ constructor(readonly obj: { type: Types, data: [string, string][], _id: string }) {
+ this._id = obj._id
+ }
+}
+
+export class ImageTransfer implements Transferable {
+ readonly type = Types.Image
+
+ constructor(readonly _id: string) { }
+}
+
+export class KeyTransfer implements Transferable {
+ name: string
+ readonly _id: string
+ readonly type = Types.Key
+
+ constructor(i: string, n: string) {
+ this.name = n
+ this._id = i
+ }
+}
+
+export class ListTransfer implements Transferable {
+ type = Types.List;
+
+ constructor(readonly _id: string) { }
+}
+
+export class NumberTransfer implements Transferable {
+ readonly type = Types.Number
+
+ constructor(readonly value: number, readonly _id: string) { }
+}
+
+export class TextTransfer implements Transferable {
+ value: string
+ readonly _id: string
+ readonly type = Types.Text
+
+ constructor(t: string, i: string) {
+ this.value = t
+ this._id = i
+ }
+}
+
+export class RichTextTransfer implements Transferable {
+ value: string
+ readonly _id: string
+ readonly type = Types.Text
+
+ constructor(t: string, i: string) {
+ this.value = t
+ this._id = i
+ }
+}
+
+export interface Transferable {
+ readonly _id: string
+ readonly type: Types
+}
+
+export namespace MessageStore {
+ export const Foo = new Message<string>("Foo");
+ export const Bar = new Message<string>("Bar");
+ export const AddDocument = new Message<DocumentTransfer>("Add Document");
+ export const SetField = new Message<{ _id: string, data: any, type: Types }>("Set Field")
+ export const GetField = new Message<string>("Get Field")
+ export const GetFields = new Message<string[]>("Get Fields")
+ export const GetDocument = new Message<string>("Get Document");
+ export const DeleteAll = new Message<any>("Delete All");
+} \ No newline at end of file