From 5d06bc99d12bf76b0f14398f25e41e3d5bfc865e Mon Sep 17 00:00:00 2001 From: Seth Trowbridge Date: Wed, 5 Apr 2023 20:05:21 -0400 Subject: [PATCH] "self-hosting" --- deno.json | 8 ++++---- example/app.tsx | 2 ++ example/deno.json | 5 +++-- lib/iso.tsx | 10 ++++++++++ server.tsx | 15 +++++++-------- 5 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 lib/iso.tsx diff --git a/deno.json b/deno.json index 137c482..3a96ad8 100644 --- a/deno.json +++ b/deno.json @@ -6,13 +6,13 @@ "react": "https://esm.sh/preact@10.13.2/compat", "react-original": "https://esm.sh/preact@10.13.2/compat", - "@eno/app": "./example/app.tsx" + "@eno/app": "./example/app.tsx", + "@eno/iso": "./lib/iso.tsx" }, "tasks": { "install": "deno install -f -A --unstable --no-lock -n eno server.tsx", - "run": "deno run -A --unstable --no-lock server.tsx", - "complete": "deno run -A --unstable https://deno.land/std@0.181.0/http/file_server.ts & cd example && pwd && deno task dev", - "host": "deno run -A --unstable https://deno.land/std@0.181.0/http/file_server.ts" + "run": "deno run -A --unstable --no-lock server.tsx 4507", + "complete": "deno task run & cd example && pwd && deno task dev" } } \ No newline at end of file diff --git a/example/app.tsx b/example/app.tsx index 4de6dc2..f72befd 100644 --- a/example/app.tsx +++ b/example/app.tsx @@ -2,9 +2,11 @@ import TWPreTail from "https://esm.sh/@twind/preset-tailwind@1.1.4"; import TWPreAuto from "https://esm.sh/@twind/preset-autoprefix@1.0.7"; import React from "react"; import Component from "./deep/component.tsx"; +import * as Iso from "@eno/iso"; export default ()=> { + console.log(Iso.Meta); const [countGet, countSet] = React.useState(1); return

Title!!

diff --git a/example/deno.json b/example/deno.json index 97ba37d..7f3779e 100644 --- a/example/deno.json +++ b/example/deno.json @@ -3,9 +3,10 @@ { "react": "https://esm.sh/preact@10.13.2/compat", "@deep/": "./deep/", - "@eno/app": "./app.tsx" + "@eno/app": "./app.tsx", + "@eno/iso": "http://localhost:4507/lib/iso.tsx" }, "tasks": { - "dev": "deno run -A --unstable --reload=http://localhost:4507/ --no-lock --config=deno.json http://localhost:4507/server.tsx" + "dev": "deno run -A --unstable --reload=http://localhost:4507/ --no-lock --config=deno.json 'http://localhost:4507/server.tsx?reload=1'" } } \ No newline at end of file diff --git a/lib/iso.tsx b/lib/iso.tsx new file mode 100644 index 0000000..9573adf --- /dev/null +++ b/lib/iso.tsx @@ -0,0 +1,10 @@ +import React from "react"; + +type Metas = { + Title?:string, + Description?:string +}; + +export const Meta:Metas = { + Title:"hey" +}; \ No newline at end of file diff --git a/server.tsx b/server.tsx index ad62492..d5a1496 100644 --- a/server.tsx +++ b/server.tsx @@ -2,7 +2,8 @@ import * as ESBuild from 'https://deno.land/x/esbuild@v0.14.45/mod.js'; import * as MIME from "https://deno.land/std@0.180.0/media_types/mod.ts"; import { debounce } from "https://deno.land/std@0.151.0/async/debounce.ts"; import SSR from "https://esm.sh/v113/preact-render-to-string@6.0.2"; -import React, {createElement as h} from "react"; +import * as Twind from "https://esm.sh/@twind/core@1.1.3"; +import React, {JSX, createElement as h} from "react"; const Transpiled = new Map(); const Transpileable =(inFilePath:string):boolean=> @@ -127,12 +128,8 @@ catch(e) console.log(`deno.json not found`); } -import {default as App, CSS} from "@eno/app"; -import * as Twind from "https://esm.sh/@twind/core@1.1.3"; -const TwindInst = Twind.install(CSS); - -Deno.serve({ port: 3000 }, async(_req:Request) => +Deno.serve({ port: Deno.args[0]||3000 }, async(_req:Request) => { const url:URL = new URL(_req.url); const fsPath = Deno.cwd()+url.pathname; @@ -247,7 +244,7 @@ FileListen("${url.pathname}", reloadHandler);`; `; } - return new Response(body, {headers:{"content-type":type as string}}); + return new Response(body, {headers:{"content-type":type as string, "Access-Control-Allow-Origin":"*"}}); } catch(error) { @@ -256,6 +253,8 @@ FileListen("${url.pathname}", reloadHandler);`; } }); +import App, {CSS} from "@eno/app"; +const TwindInst = Twind.install(CSS); const Sockets:Set = new Set(); const SocketsBroadcast =(inData:string)=>{ for (const socket of Sockets){ socket.send(inData); } } @@ -277,7 +276,7 @@ const ProcessFiles =debounce(async()=> } else { - Transpiled.delete(key) + Transpiled.delete(key); } } FilesChanged.clear();