Move globals interfaces into browser project to share. API needs design

This commit is contained in:
mmcwilliams 2024-07-13 09:23:58 -04:00
parent 02f9c21a18
commit 59afb15a10
13 changed files with 88 additions and 56 deletions

16
browser/globals.d.ts vendored Normal file
View File

@ -0,0 +1,16 @@
interface SequenceState {
hash : string,
name : string,
progress : number
}
interface State {
width? : number,
height? : number,
sequence? : SequenceState
}
interface Message {
cmd? : string;
state? : State;
}

View File

@ -1,15 +1,3 @@
interface SequenceState {
name : string,
hash : string,
progress : number
}
interface State {
width? : number,
height? : number,
sequence? : SequenceState
}
class Client { class Client {
private client : WebSocket; private client : WebSocket;
private connected : boolean = false; private connected : boolean = false;
@ -24,9 +12,11 @@ class Client {
} }
private onMessage (event : any) { private onMessage (event : any) {
const state : State = JSON.parse(event.data) as State; const msg : Message = JSON.parse(event.data) as Message;
if (typeof state.sequence !== 'undefined' && state.sequence !== null) { if (typeof msg.state !== 'undefined' && msg.state.sequence !== null) {
this.setSequence(state.sequence); this.setSequence(msg.state.sequence);
} else if (typeof msg.cmd !== 'undefined' && msg.cmd !== null) {
this.cmd(msg.cmd);
} }
} }
@ -41,10 +31,25 @@ class Client {
this.progress.innerText = `${Math.floor(percent)}%`; this.progress.innerText = `${Math.floor(percent)}%`;
} }
public cameraOpen () { private cmd (id : string) {
console.log('camera open'); switch (id) {
case 'open' :
this.receiveCameraOpen();
break;
default:
console.warn(`No command ${id}`);
break;
}
}
public sendCameraOpen () {
console.log('send camera open');
this.client.send(JSON.stringify({ cmd : 'open' })); this.client.send(JSON.stringify({ cmd : 'open' }));
} }
private receiveCameraOpen () {
console.log('got camera open');
}
} }
const client : Client = new Client(); const client : Client = new Client();

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -1,8 +1,3 @@
interface SequenceState {
hash: string;
name: string;
progress: number;
}
export declare class Sequence { export declare class Sequence {
private current; private current;
private running; private running;
@ -14,4 +9,3 @@ export declare class Sequence {
isRunning(): boolean; isRunning(): boolean;
getState(): SequenceState; getState(): SequenceState;
} }
export type { SequenceState };

View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequence/index.ts"],"names":[],"mappings":";;;AAQA,MAAa,QAAQ;IAMpB;QALQ,YAAO,GAAoB,IAAI,CAAC;IAKxB,CAAC;IAEV,KAAK;QACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,CAAC;IAEM,IAAI;QACV,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAEM,SAAS;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAEM,QAAQ;QACd,OAAO;YACN,IAAI,EAAG,IAAI,CAAC,OAAO,CAAC,IAAI;YACxB,IAAI,EAAG,IAAI,CAAC,OAAO,CAAC,IAAI;YACxB,QAAQ,EAAG,IAAI,CAAC,QAAQ;SACxB,CAAA;IACF,CAAC;CACD;AA3BD,4BA2BC"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequence/index.ts"],"names":[],"mappings":";;;AAEA,MAAa,QAAQ;IAMpB;QALQ,YAAO,GAAoB,IAAI,CAAC;IAKxB,CAAC;IAEV,KAAK;QACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,CAAC;IAEM,IAAI;QACV,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACtB,CAAC;IAEM,SAAS;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAEM,QAAQ;QACd,OAAO;YACN,IAAI,EAAG,IAAI,CAAC,OAAO,CAAC,IAAI;YACxB,IAAI,EAAG,IAAI,CAAC,OAAO,CAAC,IAAI;YACxB,QAAQ,EAAG,IAAI,CAAC,QAAQ;SACxB,CAAA;IACF,CAAC;CACD;AA3BD,4BA2BC"}

View File

@ -5,7 +5,7 @@
"main": "dist/index.js", "main": "dist/index.js",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"compile": "npm run compile_node && npm run compile_browser", "compile": "bash ./scripts/compile.sh",
"compile_node": "./node_modules/.bin/tsc -p tsconfig.json", "compile_node": "./node_modules/.bin/tsc -p tsconfig.json",
"compile_browser": "./node_modules/.bin/tsc -p tsconfig-browser.json" "compile_browser": "./node_modules/.bin/tsc -p tsconfig-browser.json"
}, },

5
scripts/compile.sh Normal file
View File

@ -0,0 +1,5 @@
#!/bin/bash
cp src/globals.d.ts browser/globals.d.ts
npm run compile_node
npm run compile_browser

16
src/globals.d.ts vendored
View File

@ -0,0 +1,16 @@
interface SequenceState {
hash : string,
name : string,
progress : number
}
interface State {
width? : number,
height? : number,
sequence? : SequenceState
}
interface Message {
cmd? : string;
state? : State;
}

View File

@ -51,10 +51,6 @@ interface WebSocketExtended extends WebSocket {
session? : string session? : string
} }
interface Message {
cmd? : string;
}
async function createTemplate (filePath : string) : Promise<HandlebarsTemplateDelegate<any>> { async function createTemplate (filePath : string) : Promise<HandlebarsTemplateDelegate<any>> {
let tmpl : string; let tmpl : string;
try { try {

View File

@ -1,11 +1,5 @@
import type { SequenceObject } from '../files'; import type { SequenceObject } from '../files';
interface SequenceState {
hash : string,
name : string,
progress : number
}
export class Sequence { export class Sequence {
private current : SequenceObject = null; private current : SequenceObject = null;
private running : boolean; private running : boolean;
@ -33,6 +27,4 @@ export class Sequence {
progress : this.progress progress : this.progress
} }
} }
} }
export type { SequenceState };

14
static/js/index.d.ts vendored
View File

@ -1,13 +1,3 @@
interface SequenceState {
name: string;
hash: string;
progress: number;
}
interface State {
width?: number;
height?: number;
sequence?: SequenceState;
}
declare class Client { declare class Client {
private client; private client;
private connected; private connected;
@ -16,6 +6,8 @@ declare class Client {
private onMessage; private onMessage;
private onOpen; private onOpen;
private setSequence; private setSequence;
cameraOpen(): void; private cmd;
sendCameraOpen(): void;
private receiveCameraOpen;
} }
declare const client: Client; declare const client: Client;

View File

@ -8,9 +8,12 @@ class Client {
this.client.onmessage = this.onMessage.bind(this); this.client.onmessage = this.onMessage.bind(this);
} }
onMessage(event) { onMessage(event) {
const state = JSON.parse(event.data); const msg = JSON.parse(event.data);
if (typeof state.sequence !== 'undefined' && state.sequence !== null) { if (typeof msg.state !== 'undefined' && msg.state.sequence !== null) {
this.setSequence(state.sequence); this.setSequence(msg.state.sequence);
}
else if (typeof msg.cmd !== 'undefined' && msg.cmd !== null) {
this.cmd(msg.cmd);
} }
} }
onOpen(event) { onOpen(event) {
@ -22,10 +25,23 @@ class Client {
this.progress.value = percent; this.progress.value = percent;
this.progress.innerText = `${Math.floor(percent)}%`; this.progress.innerText = `${Math.floor(percent)}%`;
} }
cameraOpen() { cmd(id) {
console.log('camera open'); switch (id) {
case 'open':
this.receiveCameraOpen();
break;
default:
console.warn(`No command ${id}`);
break;
}
}
sendCameraOpen() {
console.log('send camera open');
this.client.send(JSON.stringify({ cmd: 'open' })); this.client.send(JSON.stringify({ cmd: 'open' }));
} }
receiveCameraOpen() {
console.log('got camera open');
}
} }
const client = new Client(); const client = new Client();
//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map

View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../browser/index.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM;IAKV;QAHQ,cAAS,GAAa,KAAK,CAAC;QAIlC,IAAI,GAAG,GAAY,qBAAqB,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAwB,CAAC;QAC3E,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAEO,SAAS,CAAE,KAAW;QAC5B,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAU,CAAC;QACtD,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,WAAW,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACrE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAEO,MAAM,CAAE,KAAW;QACzB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEO,WAAW,CAAC,QAAwB;QAC1C,MAAM,OAAO,GAAY,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IACtD,CAAC;IAEM,UAAU;QACf,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;CACF;AAED,MAAM,MAAM,GAAY,IAAI,MAAM,EAAE,CAAC"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../../browser/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM;IAKV;QAHQ,cAAS,GAAa,KAAK,CAAC;QAIlC,IAAI,GAAG,GAAY,qBAAqB,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAwB,CAAC;QAC3E,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAEO,SAAS,CAAE,KAAW;QAC5B,MAAM,GAAG,GAAa,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QACxD,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,WAAW,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YACpE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,WAAW,IAAI,GAAG,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YAC9D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAEO,MAAM,CAAE,KAAW;QACzB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEO,WAAW,CAAC,QAAwB;QAC1C,MAAM,OAAO,GAAY,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IACtD,CAAC;IAEO,GAAG,CAAE,EAAW;QACtB,QAAQ,EAAE,EAAE,CAAC;YACX,KAAK,MAAM;gBACT,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,MAAM;YACR;gBACE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBACjC,MAAM;QACV,CAAC;IACH,CAAC;IAEM,cAAc;QACnB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAEO,iBAAiB;QACvB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC;CACF;AAED,MAAM,MAAM,GAAY,IAAI,MAAM,EAAE,CAAC"}