Skip to content

Commit

Permalink
init: 🦕
Browse files Browse the repository at this point in the history
  • Loading branch information
aashutoshrathi committed Jul 1, 2022
0 parents commit a3a74ba
Show file tree
Hide file tree
Showing 13 changed files with 198 additions and 0 deletions.
35 changes: 35 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
*.orig
*.pyc
*.swp

/.cargo_home/
/.idea/
/.vscode/
gclient_config.py_entries
/gh-pages/
/target/
/std/hash/_wasm/target
/tools/wpt/manifest.json

# Files that help ensure VSCode can work but we don't want checked into the
# repo
/node_modules
/tsconfig.json

# compiled wasm files
std/wasi/testdata/snapshot_preview1/

# generated v8 coverage files
cli/tests/.test_coverage/

# MacOS generated files
.DS_Store
.DS_Store?

# Flamegraphs
/flamebench*.svg
/flamegraph*.svg

# WPT generated cert files
/tools/wpt/certs/index.txt*
/tools/wpt/certs/serial*
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# web
6 changes: 6 additions & 0 deletions deno.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"tasks": {
"start": "deno run -A --watch=static/,routes/ dev.ts"
},
"importMap": "./import_map.json"
}
5 changes: 5 additions & 0 deletions dev.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/usr/bin/env -S deno run -A --watch=static/,routes/

import dev from "$fresh/dev.ts";

await dev(import.meta.url, "./main.ts");
22 changes: 22 additions & 0 deletions fresh.gen.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// DO NOT EDIT. This file is generated by fresh.
// This file SHOULD be checked into source version control.
// This file is automatically updated during development when running `dev.ts`.

import * as $0 from "./routes/[name].tsx";
import * as $1 from "./routes/api/joke.ts";
import * as $2 from "./routes/index.tsx";
import * as $$0 from "./islands/Counter.tsx";

const manifest = {
routes: {
"./routes/[name].tsx": $0,
"./routes/api/joke.ts": $1,
"./routes/index.tsx": $2,
},
islands: {
"./islands/Counter.tsx": $$0,
},
baseUrl: import.meta.url,
};

export default manifest;
11 changes: 11 additions & 0 deletions import_map.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"imports": {
"$fresh/": "https://deno.land/x/[email protected]/",
"preact": "https://esm.sh/[email protected]",
"preact/": "https://esm.sh/[email protected]/",
"preact-render-to-string": "https://esm.sh/[email protected][email protected]",
"@twind": "./utils/twind.ts",
"twind": "https://esm.sh/[email protected]",
"twind/": "https://esm.sh/[email protected]/"
}
}
33 changes: 33 additions & 0 deletions islands/Counter.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/** @jsx h */
import { h } from "preact";
import { useState } from "preact/hooks";
import { IS_BROWSER } from "$fresh/runtime.ts";
import { tw } from "@twind";

interface CounterProps {
start: number;
}

export default function Counter(props: CounterProps) {
const [count, setCount] = useState(props.start);
const btn = tw`px-2 py-1 border(gray-100 1) hover:bg-gray-200`;
return (
<div class={tw`flex gap-2 w-full`}>
<p class={tw`flex-grow-1 font-bold text-xl`}>{count}</p>
<button
class={btn}
onClick={() => setCount(count - 1)}
disabled={!IS_BROWSER}
>
-1
</button>
<button
class={btn}
onClick={() => setCount(count + 1)}
disabled={!IS_BROWSER}
>
+1
</button>
</div>
);
}
26 changes: 26 additions & 0 deletions main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/// <reference no-default-lib="true" />
/// <reference lib="dom" />
/// <reference lib="dom.asynciterable" />
/// <reference lib="deno.ns" />
/// <reference lib="deno.unstable" />

import { InnerRenderFunction, RenderContext, start } from "$fresh/server.ts";
import manifest from "./fresh.gen.ts";

import { config, setup } from "@twind";
import { virtualSheet } from "twind/sheets";

const sheet = virtualSheet();
sheet.reset();
setup({ ...config, sheet });

function render(ctx: RenderContext, render: InnerRenderFunction) {
const snapshot = ctx.state.get("twind") as unknown[] | null;
sheet.reset(snapshot || undefined);
render();
ctx.styles.splice(0, ctx.styles.length, ...(sheet).target);
const newSnapshot = sheet.reset();
ctx.state.set("twind", newSnapshot);
}

await start(manifest, { render });
7 changes: 7 additions & 0 deletions routes/[name].tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/** @jsx h */
import { h } from "preact";
import { PageProps } from "$fresh/server.ts";

export default function Greet(props: PageProps) {
return <div>Hello {props.params.name}</div>;
}
21 changes: 21 additions & 0 deletions routes/api/joke.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { HandlerContext } from "$fresh/server.ts";

// Jokes courtesy of https://punsandoneliners.com/randomness/programmer-jokes/
const JOKES = [
"Why do Java developers often wear glasses? They can't C#.",
"A SQL query walks into a bar, goes up to two tables and says “can I join you?”",
"Wasn't hard to crack Forrest Gump's password. 1forrest1.",
"I love pressing the F5 key. It's refreshing.",
"Called IT support and a chap from Australia came to fix my network connection. I asked “Do you come from a LAN down under?”",
"There are 10 types of people in the world. Those who understand binary and those who don't.",
"Why are assembly programmers often wet? They work below C level.",
"My favourite computer based band is the Black IPs.",
"What programme do you use to predict the music tastes of former US presidential candidates? An Al Gore Rhythm.",
"An SEO expert walked into a bar, pub, inn, tavern, hostelry, public house.",
];

export const handler = (_req: Request, _ctx: HandlerContext): Response => {
const randomIndex = Math.floor(Math.random() * 10);
const body = JOKES[randomIndex];
return new Response(body);
};
23 changes: 23 additions & 0 deletions routes/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/** @jsx h */
import { h } from "preact";
import { tw } from "@twind";

export default function Home() {
return (
<div class={tw`p-4 mx-auto max-w-screen-md`}>
<img
src="/favicon.png"
height="100px"
width="100px"
alt="2AM Devs"
/>
<p class={tw`my-6`}>
<pre>
Hey! Thanks for coming.
<br/>
This site is `WIP` 🚧
</pre>
</p>
</div>
);
}
Binary file added static/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions utils/twind.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { IS_BROWSER } from "$fresh/runtime.ts";
import { Configuration, setup } from "twind";
export * from "twind";
export const config: Configuration = {
darkMode: "class",
mode: "silent",
};
if (IS_BROWSER) setup(config);

0 comments on commit a3a74ba

Please sign in to comment.