Add to the talk JS.

This commit is contained in:
Dave Smith-Hayes 2024-10-27 21:45:09 -04:00
parent d0ec03843a
commit d891feb90d
4 changed files with 54 additions and 44 deletions

Binary file not shown.

View File

@ -79,6 +79,11 @@ var require_hasOwn = __commonJS((exports, module) => {
// node_modules/mithril/render/hyperscript.js // node_modules/mithril/render/hyperscript.js
var require_hyperscript = __commonJS((exports, module) => { var require_hyperscript = __commonJS((exports, module) => {
var Vnode = require_vnode();
var hyperscriptVnode = require_hyperscriptVnode();
var hasOwn = require_hasOwn();
var selectorParser = /(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g;
var selectorCache = {};
function isEmpty(object) { function isEmpty(object) {
for (var key in object) for (var key in object)
if (hasOwn.call(object, key)) if (hasOwn.call(object, key))
@ -147,11 +152,6 @@ var require_hyperscript = __commonJS((exports, module) => {
vnode.tag = selector; vnode.tag = selector;
return vnode; return vnode;
} }
var Vnode = require_vnode();
var hyperscriptVnode = require_hyperscriptVnode();
var hasOwn = require_hasOwn();
var selectorParser = /(?:(^|#|\.)([^#\.\[\]]+))|(\[(.+?)(?:\s*=\s*("|'|)((?:\\["'\]]|.)*?)\5)?\])/g;
var selectorCache = {};
module.exports = hyperscript; module.exports = hyperscript;
}); });
@ -187,6 +187,7 @@ var require_hyperscript2 = __commonJS((exports, module) => {
// node_modules/mithril/render/domFor.js // node_modules/mithril/render/domFor.js
var require_domFor = __commonJS((exports, module) => { var require_domFor = __commonJS((exports, module) => {
var delayedRemoval = new WeakMap;
function* domFor({ dom, domSize }, { generation } = {}) { function* domFor({ dom, domSize }, { generation } = {}) {
if (dom != null) if (dom != null)
do { do {
@ -198,7 +199,6 @@ var require_domFor = __commonJS((exports, module) => {
dom = nextSibling; dom = nextSibling;
} while (domSize); } while (domSize);
} }
var delayedRemoval = new WeakMap;
module.exports = { module.exports = {
delayedRemoval, delayedRemoval,
domFor domFor
@ -1480,13 +1480,6 @@ var require_censor = __commonJS((exports, module) => {
// node_modules/mithril/api/router.js // node_modules/mithril/api/router.js
var require_router = __commonJS((exports, module) => { var require_router = __commonJS((exports, module) => {
function decodeURIComponentSave(component) {
try {
return decodeURIComponent(component);
} catch (e) {
return component;
}
}
var Vnode = require_vnode(); var Vnode = require_vnode();
var m = require_hyperscript(); var m = require_hyperscript();
var buildPathname = require_build2(); var buildPathname = require_build2();
@ -1495,6 +1488,13 @@ var require_router = __commonJS((exports, module) => {
var assign = require_assign(); var assign = require_assign();
var censor = require_censor(); var censor = require_censor();
var sentinel = {}; var sentinel = {};
function decodeURIComponentSave(component) {
try {
return decodeURIComponent(component);
} catch (e) {
return component;
}
}
module.exports = function($window, mountRedraw) { module.exports = function($window, mountRedraw) {
var callAsync = $window == null ? null : typeof $window.setImmediate === "function" ? $window.setImmediate : $window.setTimeout; var callAsync = $window == null ? null : typeof $window.setImmediate === "function" ? $window.setImmediate : $window.setTimeout;
var p = Promise.resolve(); var p = Promise.resolve();
@ -1721,18 +1721,34 @@ var import_mithril = __toESM(require_mithril(), 1);
// frontend/websocket.js // frontend/websocket.js
function createWebSocket() { function createWebSocket() {
let appUrl = "localhost:3000"; let appUrl = "undefined";
appUrl = `//${appUrl}/chat-service`; appUrl = `//${appUrl}/chat-service`;
return new WebSocket(appUrl); return new WebSocket(appUrl);
} }
// frontend/index.js // frontend/index.js
var messages = [];
var socket = createWebSocket();
socket.onmessage = function(event) {
if (event.type === "message") {
const message = JSON.parse(event.data);
messages.push(message);
import_mithril.default.redraw();
}
};
function newMessageText(name, message) { function newMessageText(name, message) {
return [ return [
import_mithril.default("span.chatter", name + ": "), import_mithril.default("span.chatter", name + ": "),
import_mithril.default("span.chatter-message", message) import_mithril.default("span.chatter-message", message)
]; ];
} }
var MessageBox = {
view: function() {
return import_mithril.default(".messages", { id: "message-box" }, messages.reverse().map(function(message) {
return import_mithril.default(".message", newMessageText(message.chatter, message.message));
}), import_mithril.default("#anchor"));
}
};
function clearMessageInputBox() { function clearMessageInputBox() {
const messageBox = document.getElementById("message"); const messageBox = document.getElementById("message");
messageBox.value = ""; messageBox.value = "";
@ -1747,22 +1763,6 @@ function sendMessage(e) {
socket.send(JSON.stringify(message)); socket.send(JSON.stringify(message));
clearMessageInputBox(); clearMessageInputBox();
} }
var messages = [];
var socket = createWebSocket();
socket.onmessage = function(event) {
if (event.type === "message") {
const message = JSON.parse(event.data);
messages.push(message);
import_mithril.default.redraw();
}
};
var MessageBox = {
view: function() {
return import_mithril.default(".messages", { id: "message-box" }, messages.reverse().map(function(message) {
return import_mithril.default(".message", newMessageText(message.chatter, message.message));
}), import_mithril.default("#anchor"));
}
};
var MessageInput = { var MessageInput = {
view: function() { view: function() {
return import_mithril.default("div.chat-input", [ return import_mithril.default("div.chat-input", [

BIN
slides/bun.lockb Executable file

Binary file not shown.

View File

@ -76,18 +76,19 @@
<section> <section>
<h2>Doing it Yourself</h2> <h2>Doing it Yourself</h2>
<ul> <ul>
<li>Do not use AWS, its too expensive</li> <li class="fragment">A domain</li>
<li>Your small project is not worth the cost</li> <li class="fragment">A server with a public IP address</li>
<li>Use a small VPS from DigitalOcean or Linode</li> <li class="fragment">A webserver</li>
<li>Get a public IP address and root access</li> <li class="fragment">Patience</li>
</ul> </ul>
</section> </section>
<section>
<h3>Blue/Green Deployment</h3>
</section>
<!-- Dokku --> <!-- Dokku -->
<section>
<h2>Dokku</h2>
<p>Self-hosted platform as a service</p>
<p>Your very own Heroku</p>
</section>
<section> <section>
<h2>What Dokku Does</h2> <h2>What Dokku Does</h2>
@ -103,12 +104,21 @@
</section> </section>
<section> <section>
<h3>Create an application.</h3> <h3>Anatomy of the Server</h3>
<pre> <ul>
$ dokku apps:create chat.freedoom.party <li>Linode VPS</li>
-----> Creating chat.freedoom.party... <li>Debian</li>
-----> Creating new app virtual host file... </ul>
</pre> </section>
<section>
<h3>Anatomy of the Application</h3>
<ul>
<li>Hono Web Server Application</li>
<li>Mithril.js Frontend Application</li>
<li>Dockerized</li>
</ul>
</section>
<!-- Deployment Example --> <!-- Deployment Example -->