| "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 }); |