diff --git a/deno/deno b/deno/deno new file mode 100755 index 0000000..594c7eb Binary files /dev/null and b/deno/deno differ diff --git a/deno/deno.lock b/deno/deno.lock new file mode 100644 index 0000000..988ed55 --- /dev/null +++ b/deno/deno.lock @@ -0,0 +1,65 @@ +{ + "version": "3", + "packages": { + "specifiers": { + "jsr:@std/cli@^1.0.12": "jsr:@std/cli@1.0.13", + "jsr:@std/dotenv": "jsr:@std/dotenv@0.225.3", + "jsr:@std/encoding@^1.0.7": "jsr:@std/encoding@1.0.7", + "jsr:@std/fmt@^1.0.5": "jsr:@std/fmt@1.0.5", + "jsr:@std/html@^1.0.3": "jsr:@std/html@1.0.3", + "jsr:@std/http": "jsr:@std/http@1.0.13", + "jsr:@std/media-types@^1.1.0": "jsr:@std/media-types@1.1.0", + "jsr:@std/net@^1.0.4": "jsr:@std/net@1.0.4", + "jsr:@std/path@^1.0.8": "jsr:@std/path@1.0.8", + "jsr:@std/streams@^1.0.9": "jsr:@std/streams@1.0.9" + }, + "jsr": { + "@std/cli@1.0.13": { + "integrity": "5db2d95ab2dca3bca9fb6ad3c19908c314e93d6391c8b026725e4892d4615a69" + }, + "@std/dotenv@0.225.3": { + "integrity": "a95e5b812c27b0854c52acbae215856d9cce9d4bbf774d938c51d212711e8d4a" + }, + "@std/encoding@1.0.7": { + "integrity": "f631247c1698fef289f2de9e2a33d571e46133b38d042905e3eac3715030a82d" + }, + "@std/fmt@1.0.5": { + "integrity": "0cfab43364bc36650d83c425cd6d99910fc20c4576631149f0f987eddede1a4d" + }, + "@std/html@1.0.3": { + "integrity": "7a0ac35e050431fb49d44e61c8b8aac1ebd55937e0dc9ec6409aa4bab39a7988" + }, + "@std/http@1.0.13": { + "integrity": "d29618b982f7ae44380111f7e5b43da59b15db64101198bb5f77100d44eb1e1e", + "dependencies": [ + "jsr:@std/cli@^1.0.12", + "jsr:@std/encoding@^1.0.7", + "jsr:@std/fmt@^1.0.5", + "jsr:@std/html@^1.0.3", + "jsr:@std/media-types@^1.1.0", + "jsr:@std/net@^1.0.4", + "jsr:@std/path@^1.0.8", + "jsr:@std/streams@^1.0.9" + ] + }, + "@std/media-types@1.1.0": { + "integrity": "c9d093f0c05c3512932b330e3cc1fe1d627b301db33a4c2c2185c02471d6eaa4" + }, + "@std/net@1.0.4": { + "integrity": "2f403b455ebbccf83d8a027d29c5a9e3a2452fea39bb2da7f2c04af09c8bc852" + }, + "@std/path@1.0.8": { + "integrity": "548fa456bb6a04d3c1a1e7477986b6cffbce95102d0bb447c67c4ee70e0364be" + }, + "@std/streams@1.0.9": { + "integrity": "a9d26b1988cdd7aa7b1f4b51e1c36c1557f3f252880fa6cc5b9f37078b1a5035" + } + } + }, + "remote": {}, + "workspace": { + "dependencies": [ + "jsr:@std/assert@1" + ] + } +} diff --git a/deno/index.ts b/deno/index.ts index 53a5c69..3045687 100644 --- a/deno/index.ts +++ b/deno/index.ts @@ -1,10 +1,24 @@ -export function add(a: number, b: number): number { - return a + b; -} +import "jsr:@std/dotenv/load"; +import { serveFile } from "jsr:@std/http/file-server"; -// Learn more at https://docs.deno.com/runtime/manual/examples/module_metadata#concepts -if (import.meta.main) { - console.log("Add 2 + 3 =", add(2, 3)); -} +const PORT = Deno.env.get("PORT") || 8000; -Deno.serve({ hostname: "0.0.0.0", port: 8000 }, () => new Response("Hello, world!")); \ No newline at end of file +const handler = async (req: Request): Promise => { + const url = new URL(req.url); + + if (url.pathname === "/") { + return await serveFile(req, "./public/index.html"); + } else if (url.pathname === "/greet") { + const greeting = Deno.env.get("GREETING") || "Hello from Deno 2!"; + return new Response(greeting); + } else { + return new Response("Not Found", { status: 404 }); + } +}; + +// Error handling +try { + Deno.serve({ port: Number(PORT) }, handler); +} catch (err) { + console.error("Error starting the server:", err); +} \ No newline at end of file diff --git a/deno/public/index.html b/deno/public/index.html new file mode 100644 index 0000000..0a96582 --- /dev/null +++ b/deno/public/index.html @@ -0,0 +1,40 @@ + + + + + + + Deno 2 Web Server + + + +
+

Welcome to Deno 2

+

Your Deno 2 web server is up and running!

+

+ Visit the /greet endpoint to see a greeting + message. +

+
+ + \ No newline at end of file