"open": "^6.4.0", | "open": "^6.4.0", | ||||
"webframe": "^0.9.0", | "webframe": "^0.9.0", | ||||
"ws": "^7.1.0" | "ws": "^7.1.0" | ||||
}, | |||||
"dependencies": { | |||||
"async-limiter": { | |||||
"version": "1.0.0", | |||||
"bundled": true, | |||||
"dev": true | |||||
}, | |||||
"colors": { | |||||
"version": "1.3.3", | |||||
"bundled": true, | |||||
"dev": true | |||||
}, | |||||
"is-wsl": { | |||||
"version": "1.1.0", | |||||
"bundled": true, | |||||
"dev": true | |||||
}, | |||||
"minimist": { | |||||
"version": "1.2.0", | |||||
"bundled": true, | |||||
"dev": true | |||||
}, | |||||
"node-watch": { | |||||
"version": "0.6.2", | |||||
"bundled": true, | |||||
"dev": true | |||||
}, | |||||
"open": { | |||||
"version": "6.4.0", | |||||
"bundled": true, | |||||
"dev": true, | |||||
"requires": { | |||||
"is-wsl": "^1.1.0" | |||||
} | |||||
}, | |||||
"webframe": { | |||||
"version": "0.9.0", | |||||
"bundled": true, | |||||
"dev": true | |||||
}, | |||||
"ws": { | |||||
"version": "7.1.0", | |||||
"bundled": true, | |||||
"dev": true, | |||||
"requires": { | |||||
"async-limiter": "^1.0.0" | |||||
} | |||||
} | |||||
} | } | ||||
}, | }, | ||||
"error-ex": { | "error-ex": { |
function updateWords() { | function updateWords() { | ||||
wordList = []; | wordList = []; | ||||
let q = inputEl.value.toLowerCase(); | |||||
for (let content in words) { | for (let content in words) { | ||||
if (content.includes(inputEl.value)) | |||||
if (content.includes(q)) | |||||
wordList.push({ content, score: words[content] }); | wordList.push({ content, score: words[content] }); | ||||
} | } | ||||
wordList.sort((a, b) => b.score - a.score); | wordList.sort((a, b) => b.score - a.score); | ||||
<form on:submit|preventDefault={onSubmit} class="add"> | <form on:submit|preventDefault={onSubmit} class="add"> | ||||
<input | <input | ||||
class="content" name="content" autocomplete="off" | class="content" name="content" autocomplete="off" | ||||
on:focus={onFocus} on:blur={onBlur} on:keydown={() => window.setTimeout(updateWords, 10)} bind:this={inputEl}> | |||||
on:focus={onFocus} on:blur={onBlur} on:keydown={() => window.setTimeout(updateWords, 50)} bind:this={inputEl}> | |||||
<button class="submit" type="submit">+</button> | <button class="submit" type="submit">+</button> | ||||
{#if !hidden} | {#if !hidden} | ||||
<div transition:fade={{duration: 50}} class="suggestions"> | <div transition:fade={{duration: 50}} class="suggestions"> |
let app = new App({ target: document.body, props: { wsock }}); | let app = new App({ target: document.body, props: { wsock }}); | ||||
let key = localStorage.getItem("key"); | |||||
if (!key) | |||||
key = prompt("Key?"); | |||||
let key = null; | |||||
function auth(k) { | |||||
wsock.send({ type: "init", key: k }) | |||||
function auth(key) { | |||||
if (!key) | |||||
key = prompt("Key?"); | |||||
wsock.send({ type: "init", key }) | |||||
.then(res => { | .then(res => { | ||||
localStorage.setItem("key", key); | localStorage.setItem("key", key); | ||||
key = k; | |||||
app.onInitialData(res.data); | app.onInitialData(res.data); | ||||
}) | }) | ||||
.catch(err => { | .catch(err => { | ||||
}); | }); | ||||
}; | }; | ||||
wsock.onconnect = () => auth(key); | |||||
wsock.onconnect = () => auth(localStorage.getItem("key")); | |||||
wsock.ondisconnect = app.onDisconnect.bind(app); | wsock.ondisconnect = app.onDisconnect.bind(app); | ||||
wsock.onmessage = msg => { | wsock.onmessage = msg => { |
"open": "^6.4.0", | "open": "^6.4.0", | ||||
"webframe": "^0.9.0", | "webframe": "^0.9.0", | ||||
"ws": "^7.1.0" | "ws": "^7.1.0" | ||||
}, | |||||
"dependencies": { | |||||
"async-limiter": { | |||||
"version": "1.0.0", | |||||
"bundled": true, | |||||
"dev": true | |||||
}, | |||||
"colors": { | |||||
"version": "1.3.3", | |||||
"bundled": true, | |||||
"dev": true | |||||
}, | |||||
"is-wsl": { | |||||
"version": "1.1.0", | |||||
"bundled": true, | |||||
"dev": true | |||||
}, | |||||
"minimist": { | |||||
"version": "1.2.0", | |||||
"bundled": true, | |||||
"dev": true | |||||
}, | |||||
"node-watch": { | |||||
"version": "0.6.2", | |||||
"bundled": true, | |||||
"dev": true | |||||
}, | |||||
"open": { | |||||
"version": "6.4.0", | |||||
"bundled": true, | |||||
"dev": true, | |||||
"requires": { | |||||
"is-wsl": "^1.1.0" | |||||
} | |||||
}, | |||||
"webframe": { | |||||
"version": "0.9.0", | |||||
"bundled": true, | |||||
"dev": true | |||||
}, | |||||
"ws": { | |||||
"version": "7.1.0", | |||||
"bundled": true, | |||||
"dev": true, | |||||
"requires": { | |||||
"async-limiter": "^1.0.0" | |||||
} | |||||
} | |||||
} | } | ||||
}, | }, | ||||
"ws": { | "ws": { |
console.log("Environmnt variable 'KEY' not set."); | console.log("Environmnt variable 'KEY' not set."); | ||||
process.exit(1); | process.exit(1); | ||||
} | } | ||||
console.log("Using key:", key); | |||||
let server = createFileServer("../client/public"); | let server = createFileServer("../client/public"); | ||||
let wss = new WebSocket.Server({ server }); | let wss = new WebSocket.Server({ server }); |