From 77eabb9fe2ac287719452607f2bd4ac3573ee54b Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 21 Mar 2022 22:30:08 +0100 Subject: move master.js to typescript --- webAO/master.js | 151 ----------------------------------------------------- webAO/master.ts | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+), 151 deletions(-) delete mode 100644 webAO/master.js create mode 100644 webAO/master.ts (limited to 'webAO') diff --git a/webAO/master.js b/webAO/master.js deleted file mode 100644 index b4ead94..0000000 --- a/webAO/master.js +++ /dev/null @@ -1,151 +0,0 @@ -import FingerprintJS from '@fingerprintjs/fingerprintjs'; - -import { unescapeChat, safeTags } from './encoding.js'; - -const myStorage = window.localStorage; - -const version = process.env.npm_package_version; - -const MASTERSERVER_IP = 'master.aceattorneyonline.com:27014'; - -let masterserver; - -let hdid; - -let selectedServer = -1; - -const servers = []; -servers[-2] = { - name: 'Singleplayer', description: 'Build cases, try out new things', ip: '127.0.0.1', port: 50001, assets: '', online: '', -}; -servers[-1] = { - name: 'Localhost', description: 'This is your computer on port 50001', ip: '127.0.0.1', port: 50001, assets: '', online: 'Online: ?/?', -}; - -const fpPromise = FingerprintJS.load(); -fpPromise - .then((fp) => fp.get()) - .then((result) => { - hdid = result.visitorId; - - check_https(); - - fetch('https://servers.aceattorneyonline.com/servers') - .then(cachedServerlist) - .then((response) => loadServerlist(response)) - .catch(cachedServerlist); - - fetch('https://servers.aceattorneyonline.com/version') - .then((response) => response.text()) - .then((response) => processVersion(response)); - - // i don't need the ms to play alone - setTimeout(() => checkOnline(-1, '127.0.0.1:50001'), 0); - }); - -export function check_https() { - if (document.location.protocol === 'https:') { - document.getElementById('https_error').style.display = ''; - } -} - -export function setServ(ID) { - selectedServer = ID; - - if (document.getElementById(`server${ID}`).className === '') { checkOnline(ID, `${servers[ID].ip}:${servers[ID].ws_port}`); } - - if (servers[ID].description !== undefined) { - document.getElementById('serverdescription_content').innerHTML = `${servers[ID].online}
${safeTags(servers[ID].description)}`; - } else { - document.getElementById('serverdescription_content').innerHTML = ''; - } -} -window.setServ = setServ; - -function checkOnline(serverID, coIP) { - let oserv; - if (serverID !== -2) { - try { - oserv = new WebSocket(`ws://${coIP}`); - } catch (SecurityError) { - document.getElementById(`server${serverID}`).className = 'unavailable'; - return; - } - } - - // define what the callbacks do - function onCOOpen(_e) { - document.getElementById(`server${serverID}`).className = 'available'; - oserv.send(`HI#${hdid}#%`); - oserv.send('ID#webAO#webAO#%'); - } - - function onCOMessage(e) { - const comsg = e.data; - const coheader = comsg.split('#', 2)[0]; - const coarguments = comsg.split('#').slice(1); - if (coheader === 'PN') { - servers[serverID].online = `Online: ${Number(coarguments[0])}/${Number(coarguments[1])}`; - oserv.close(); - return; - } if (coheader === 'BD') { - servers[serverID].online = 'Banned'; - servers[serverID].description = coarguments[0]; - oserv.close(); - return; - } - if (serverID === selectedServer) { - document.getElementById('serverdescription_content').innerHTML = `${servers[serverID].online}
${safeTags(servers[serverID].description)}`; - } - } - - // assign the callbacks - oserv.onopen = function (evt) { - onCOOpen(evt); - }; - - oserv.onmessage = function (evt) { - onCOMessage(evt); - }; - - oserv.onerror = function (_evt) { - document.getElementById(`server${serverID}`).className = 'unavailable'; - }; -} - -function loadServerlist(thelist) { - localStorage.setItem('masterlist', JSON.stringify(thelist)); - processServerlist(thelist); -} - -function cachedServerlist(response) { - if (!response.ok) { - document.getElementById('ms_error').style.display = 'block'; - processServerlist(JSON.parse(localStorage.getItem('masterlist'))); - return; - } - return response.json(); -} - -function processServerlist(thelist) { - for (let i = 0; i < thelist.length - 1; i++) { - const serverEntry = thelist[i]; - - servers[i] = serverEntry; - - const ipport = `${serverEntry.ip}:${serverEntry.ws_port}`; - - if (serverEntry.ws_port) { - document.getElementById('masterlist').innerHTML - += `
  • ${safeTags(serverEntry.name)}

    ` - + `Watch` - + `Join
  • `; - } - } -} - -function processVersion(data) { - console.debug(data); - document.getElementById('clientinfo').innerHTML = `Client version: ${version}`; - document.getElementById('serverinfo').innerHTML = `Master server version: ${data}`; -} diff --git a/webAO/master.ts b/webAO/master.ts new file mode 100644 index 0000000..1a52559 --- /dev/null +++ b/webAO/master.ts @@ -0,0 +1,157 @@ +import FingerprintJS from '@fingerprintjs/fingerprintjs'; + +import { unescapeChat, safeTags } from './encoding.js'; + +declare global { + interface Window { + setServ: (ID: any) => void; + } +} + +const myStorage = window.localStorage; + +const version = process.env.npm_package_version; + +const MASTERSERVER_IP = 'master.aceattorneyonline.com:27014'; + +let masterserver; + +let hdid; + +let selectedServer = -1; + +const servers = []; +servers[-2] = { + name: 'Singleplayer', description: 'Build cases, try out new things', ip: '127.0.0.1', port: 50001, assets: '', online: '', +}; +servers[-1] = { + name: 'Localhost', description: 'This is your computer on port 50001', ip: '127.0.0.1', port: 50001, assets: '', online: 'Online: ?/?', +}; + +const fpPromise = FingerprintJS.load(); +fpPromise + .then((fp) => fp.get()) + .then((result) => { + hdid = result.visitorId; + + check_https(); + + fetch('https://servers.aceattorneyonline.com/servers') + .then(cachedServerlist) + .then((response) => loadServerlist(response)) + .catch(cachedServerlist); + + fetch('https://servers.aceattorneyonline.com/version') + .then((response) => response.text()) + .then((response) => processVersion(response)); + + // i don't need the ms to play alone + setTimeout(() => checkOnline(-1, '127.0.0.1:50001'), 0); + }); + +export function check_https() { + if (document.location.protocol === 'https:') { + document.getElementById('https_error').style.display = ''; + } +} + +export function setServ(ID) { + selectedServer = ID; + + if (document.getElementById(`server${ID}`).className === '') { checkOnline(ID, `${servers[ID].ip}:${servers[ID].ws_port}`); } + + if (servers[ID].description !== undefined) { + document.getElementById('serverdescription_content').innerHTML = `${servers[ID].online}
    ${safeTags(servers[ID].description)}`; + } else { + document.getElementById('serverdescription_content').innerHTML = ''; + } +} +window.setServ = setServ; + +function checkOnline(serverID, coIP) { + let oserv; + if (serverID !== -2) { + try { + oserv = new WebSocket(`ws://${coIP}`); + } catch (SecurityError) { + document.getElementById(`server${serverID}`).className = 'unavailable'; + return; + } + } + + // define what the callbacks do + function onCOOpen(_e) { + document.getElementById(`server${serverID}`).className = 'available'; + oserv.send(`HI#${hdid}#%`); + oserv.send('ID#webAO#webAO#%'); + } + + function onCOMessage(e) { + const comsg = e.data; + const coheader = comsg.split('#', 2)[0]; + const coarguments = comsg.split('#').slice(1); + if (coheader === 'PN') { + servers[serverID].online = `Online: ${Number(coarguments[0])}/${Number(coarguments[1])}`; + oserv.close(); + return; + } if (coheader === 'BD') { + servers[serverID].online = 'Banned'; + servers[serverID].description = coarguments[0]; + oserv.close(); + return; + } + if (serverID === selectedServer) { + document.getElementById('serverdescription_content').innerHTML = `${servers[serverID].online}
    ${safeTags(servers[serverID].description)}`; + } + } + + // assign the callbacks + oserv.onopen = function (evt) { + onCOOpen(evt); + }; + + oserv.onmessage = function (evt) { + onCOMessage(evt); + }; + + oserv.onerror = function (_evt) { + document.getElementById(`server${serverID}`).className = 'unavailable'; + }; +} + +function loadServerlist(thelist) { + localStorage.setItem('masterlist', JSON.stringify(thelist)); + processServerlist(thelist); +} + +function cachedServerlist(response) { + if (!response.ok) { + document.getElementById('ms_error').style.display = 'block'; + processServerlist(JSON.parse(localStorage.getItem('masterlist'))); + return; + } + return response.json(); +} + +function processServerlist(thelist) { + for (let i = 0; i < thelist.length - 1; i++) { + const serverEntry = thelist[i]; + + servers[i] = serverEntry; + + const ipport = `${serverEntry.ip}:${serverEntry.ws_port}`; + + if (serverEntry.ws_port) { + document.getElementById('masterlist').innerHTML + += `
  • ${safeTags(serverEntry.name)}

    ` + + `Watch` + + `Join
  • `; + } + } +} + +function processVersion(data) { + console.debug(data); + document.getElementById('clientinfo').innerHTML = `Client version: ${version}`; + document.getElementById('serverinfo').innerHTML = `Master server version: ${data}`; +} -- cgit From 4e6fb6ba43caa1eda676c409201588ef500d4a0c Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 21 Mar 2022 22:56:17 +0100 Subject: add a bunch of types --- webAO/master.ts | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'webAO') diff --git a/webAO/master.ts b/webAO/master.ts index 1a52559..1b7d5ba 100644 --- a/webAO/master.ts +++ b/webAO/master.ts @@ -14,18 +14,16 @@ const version = process.env.npm_package_version; const MASTERSERVER_IP = 'master.aceattorneyonline.com:27014'; -let masterserver; +let hdid: string; -let hdid; +let selectedServer: number = -1; -let selectedServer = -1; - -const servers = []; +let servers: { name: string, description: string, ip: string, port: number, ws_port: number, assets: string, online: string }[] = []; servers[-2] = { - name: 'Singleplayer', description: 'Build cases, try out new things', ip: '127.0.0.1', port: 50001, assets: '', online: '', + name: 'Singleplayer', description: 'Build cases, try out new things', ip: '127.0.0.1', port: 50001, ws_port: 50001, assets: '', online: '', }; servers[-1] = { - name: 'Localhost', description: 'This is your computer on port 50001', ip: '127.0.0.1', port: 50001, assets: '', online: 'Online: ?/?', + name: 'Localhost', description: 'This is your computer on port 50001', ip: '127.0.0.1', port: 50001, ws_port: 50001, assets: '', online: 'Online: ?/?', }; const fpPromise = FingerprintJS.load(); @@ -55,7 +53,7 @@ export function check_https() { } } -export function setServ(ID) { +export function setServ(ID: number) { selectedServer = ID; if (document.getElementById(`server${ID}`).className === '') { checkOnline(ID, `${servers[ID].ip}:${servers[ID].ws_port}`); } @@ -68,7 +66,7 @@ export function setServ(ID) { } window.setServ = setServ; -function checkOnline(serverID, coIP) { +function checkOnline(serverID: number, coIP: string) { let oserv; if (serverID !== -2) { try { @@ -119,12 +117,12 @@ function checkOnline(serverID, coIP) { }; } -function loadServerlist(thelist) { +function loadServerlist(thelist: string) { localStorage.setItem('masterlist', JSON.stringify(thelist)); processServerlist(thelist); } -function cachedServerlist(response) { +function cachedServerlist(response: Response) { if (!response.ok) { document.getElementById('ms_error').style.display = 'block'; processServerlist(JSON.parse(localStorage.getItem('masterlist'))); @@ -133,7 +131,7 @@ function cachedServerlist(response) { return response.json(); } -function processServerlist(thelist) { +function processServerlist(thelist: Array) { for (let i = 0; i < thelist.length - 1; i++) { const serverEntry = thelist[i]; @@ -150,7 +148,7 @@ function processServerlist(thelist) { } } -function processVersion(data) { +function processVersion(data: string) { console.debug(data); document.getElementById('clientinfo').innerHTML = `Client version: ${version}`; document.getElementById('serverinfo').innerHTML = `Master server version: ${data}`; -- cgit From f73e7e4a16c45c514d3fc154066521fb3cd363ea Mon Sep 17 00:00:00 2001 From: stonedDiscord Date: Mon, 21 Mar 2022 23:04:27 +0100 Subject: the server type is a mess --- webAO/master.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'webAO') diff --git a/webAO/master.ts b/webAO/master.ts index 1b7d5ba..8fd8779 100644 --- a/webAO/master.ts +++ b/webAO/master.ts @@ -117,7 +117,7 @@ function checkOnline(serverID: number, coIP: string) { }; } -function loadServerlist(thelist: string) { +function loadServerlist(thelist: { name: string, description: string, ip: string, port: number, ws_port: number, assets: string, online: string }[]) { localStorage.setItem('masterlist', JSON.stringify(thelist)); processServerlist(thelist); } @@ -131,9 +131,9 @@ function cachedServerlist(response: Response) { return response.json(); } -function processServerlist(thelist: Array) { +function processServerlist(thelist: { name: string, description: string, ip: string, port: number, ws_port: number, assets: string, online: string }[]) { for (let i = 0; i < thelist.length - 1; i++) { - const serverEntry = thelist[i]; + const serverEntry: { name: string, description: string, ip: string, port: number, ws_port: number, assets: string, online: string } = thelist[i]; servers[i] = serverEntry; -- cgit