diff --git a/Dockerfile b/Dockerfile index 33f8cd4..7054366 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,14 @@ -FROM node:22 +FROM oven/bun:1.2.10-alpine WORKDIR /app COPY package.json package.json COPY package-lock.json package-lock.json -RUN npm install --force +RUN bun install COPY . . EXPOSE 8080 -CMD [ "npm", "start", "--force" ] \ No newline at end of file +CMD [ "bun", "run", "start" ] \ No newline at end of file diff --git a/app/client.js b/app/client.js old mode 100755 new mode 100644 index 388c0e8..0e69d05 --- a/app/client.js +++ b/app/client.js @@ -1,71 +1,33 @@ -"use strict"; +import { Hono } from "hono"; + +import head from "./components/head.js"; +import wrapper from "./components/wrapper.js"; + +import home from "./views/home.js"; +import api from "./views/api.js"; +import spec from "./views/spec.js"; +import redirect from "./views/redirect.js"; + +const app = new Hono(); + +app.get("/", page(home)); + +app.get("/api/:wildcard", page(api)); +app.get("/spec", page(spec)); +app.get("*", page(redirect)); + +function page(view) { + return async (c, emit) => { + return c.html(` + + + ${head(c)} + ${await wrapper(view)(c)} + + `); + }; + } + - -// I M P O R T S - -import async from "choo-async"; -import asyncHtml from "choo-async/html"; -import choo from "choo"; -import ssr from "choo-ssr"; - -// U T I L S - -import head from "./components/head"; -import wrapper from "./components/wrapper"; - - - -// P R O G R A M - -function main() { - const app = async(choo()); - - const page = view => ( - shell( - ssr.head( - head, - ssr.state() - ), - ssr.body(wrapper(view)) - ) - ); - - app.use(ssr()); - - app.route("/", page(require("./views/home"))); - app.route("/api/*", page(require("./views/api"))); - app.route("/spec", page(require("./views/spec"))); - app.route("/*", page(require("./views/redirect"))); - - app.mount("html"); - - return app; -} - -if (typeof window !== "undefined") main(); - - - -// E X P O R T - -module.exports = exports = main; - - - -// H E L P E R - -function shell(head, body) { - return (state, emit) => { - const bodyPromise = Promise.resolve(body(state, emit)); - const headPromise = bodyPromise.then(() => head(state, emit)); // resolve `head` once `body` is resolved - - return asyncHtml` - - - ${headPromise} - ${bodyPromise} - - `; - }; -} +export default app; \ No newline at end of file diff --git a/app/components/api/header-blockchain.js b/app/components/api/header-blockchain.js index e7b1f27..a8be7da 100644 --- a/app/components/api/header-blockchain.js +++ b/app/components/api/header-blockchain.js @@ -4,7 +4,8 @@ // I M P O R T -import html from "choo/html"; +import { html } from 'hono/html' + diff --git a/app/components/api/header-sdk.js b/app/components/api/header-sdk.js index c4008ed..72a44bc 100644 --- a/app/components/api/header-sdk.js +++ b/app/components/api/header-sdk.js @@ -4,7 +4,8 @@ // I M P O R T -import html from "choo/html"; +import { html } from 'hono/html' + diff --git a/app/components/ecosystem/index.js b/app/components/ecosystem/index.js index 4b0be3c..cfc2049 100644 --- a/app/components/ecosystem/index.js +++ b/app/components/ecosystem/index.js @@ -4,13 +4,13 @@ // U T I L S -import applications from "./module-applications"; -import chainquery from "./submodule-chainquery"; -import lbry from "./module-lbry"; -import lbrycrd from "./module-lbrycrd"; -import lighthouse from "./submodule-lighthouse"; -import reflector from "./submodule-reflector"; -import wallet from "./submodule-wallet"; +import applications from "./module-applications.js"; +import chainquery from "./submodule-chainquery.js"; +import lbry from "./module-lbry.js"; +import lbrycrd from "./module-lbrycrd.js"; +import lighthouse from "./submodule-lighthouse.js"; +import reflector from "./submodule-reflector.js"; +import wallet from "./submodule-wallet.js"; diff --git a/app/components/ecosystem/module-applications.js b/app/components/ecosystem/module-applications.js index 2eff060..d3d8788 100644 --- a/app/components/ecosystem/module-applications.js +++ b/app/components/ecosystem/module-applications.js @@ -4,13 +4,13 @@ // U T I L -import markdown from "../../components/markdown"; +import markdown from "../../components/markdown.js"; // E X P O R T -export default () => ` +export default async () => `
× @@ -28,7 +28,7 @@ export default () => `
- ${markdown("./documents/partials/overview/applications.md")} + ${await markdown("./documents/partials/overview/applications.md")}
`; diff --git a/app/components/ecosystem/module-lbry.js b/app/components/ecosystem/module-lbry.js index c74ce99..13913e6 100644 --- a/app/components/ecosystem/module-lbry.js +++ b/app/components/ecosystem/module-lbry.js @@ -4,13 +4,13 @@ // U T I L -import markdown from "../../components/markdown"; +import markdown from "../../components/markdown.js"; // E X P O R T -export default () => ` +export default async () => `
× @@ -27,7 +27,7 @@ export default () => `
- ${markdown("./documents/partials/overview/lbrysdk.md")} + ${await markdown("./documents/partials/overview/lbrysdk.md")}
`; diff --git a/app/components/ecosystem/module-lbrycrd.js b/app/components/ecosystem/module-lbrycrd.js index ab8f76a..8b79ae8 100644 --- a/app/components/ecosystem/module-lbrycrd.js +++ b/app/components/ecosystem/module-lbrycrd.js @@ -4,13 +4,13 @@ // U T I L -import markdown from "../../components/markdown"; +import markdown from "../../components/markdown.js"; // E X P O R T -export default () => ` +export default async () => `
× @@ -27,7 +27,7 @@ export default () => `
- ${markdown("./documents/partials/overview/lbrycrd.md")} + ${await markdown("./documents/partials/overview/lbrycrd.md")}
`; diff --git a/app/components/ecosystem/submodule-chainquery.js b/app/components/ecosystem/submodule-chainquery.js index f5ebb8e..79e2958 100644 --- a/app/components/ecosystem/submodule-chainquery.js +++ b/app/components/ecosystem/submodule-chainquery.js @@ -4,19 +4,19 @@ // U T I L -import markdown from "../../components/markdown"; +import markdown from "../../components/markdown.js"; // E X P O R T -export default () => ` +export default async () => `

chainquery

- ${markdown("./documents/partials/overview/chainquery.md")} + ${await markdown("./documents/partials/overview/chainquery.md")}