"self-hosting"

This commit is contained in:
Seth Trowbridge 2023-04-05 20:05:21 -04:00
parent d9bc3901a0
commit 5d06bc99d1
5 changed files with 26 additions and 14 deletions

View File

@ -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"
}
}

View File

@ -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 <div class="p-4 font-sans">
<h1 class="my-2 font(bold serif) text(2xl)">Title!!</h1>

View File

@ -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'"
}
}

10
lib/iso.tsx Normal file
View File

@ -0,0 +1,10 @@
import React from "react";
type Metas = {
Title?:string,
Description?:string
};
export const Meta:Metas = {
Title:"hey"
};

View File

@ -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);`;
</html>`;
}
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<WebSocket> = 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();