From 848b9f1f343df1d67ad63e0cae09d9ecc4b92814 Mon Sep 17 00:00:00 2001 From: Ruidy Date: Thu, 18 Feb 2021 18:31:25 +0100 Subject: [PATCH] examples --- .gitignore | 1 + .vscode/settings.json | 14 +++++++++++ README.md | 53 +++++++++++++++++++++++++++++++++++++++++ examples/echo_server.ts | 14 +++++++++++ examples/fetch.ts | 8 +++++++ examples/file.ts | 10 ++++++++ index.ts | 8 +++++++ 7 files changed, 108 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/settings.json create mode 100644 README.md create mode 100644 examples/echo_server.ts create mode 100644 examples/fetch.ts create mode 100644 examples/file.ts create mode 100644 index.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..62c8935 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea/ \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4693e97 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,14 @@ +{ + "deno.enable": true, + "deno.unstable": true, + "deno.lint": true, + "deno.import_intellisense_origins": { + "https://deno.land": true, + }, + "[typescript]": { + "editor.defaultFormatter": "denoland.vscode-deno", + }, + "[typescriptreact]": { + "editor.defaultFormatter": "denoland.vscode-deno", + } +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..cdea5be --- /dev/null +++ b/README.md @@ -0,0 +1,53 @@ +# Deno + +## ๐Ÿ“‘ Installation + +On macOS use HomeBrew to install `deno` then update to latest version. + +```shell +brew install deno +deno upgrade +``` + +## โš™๏ธ Configuration + +Create a basic configuration file using: + +```shell +code .vscode/settings.json +``` + +with the following content + +```json +{ + "deno.enable": true, + "deno.unstable": true, + "deno.lint": true, + "deno.import_intellisense_origins": { + "https://deno.land": true + }, + "[typescript]": { + "editor.defaultFormatter": "denoland.vscode-deno" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "denoland.vscode-deno" + } +} +``` + +## ๐Ÿงช Test run + +Create a `index.ts` file such as + +```ts +console.log("Hello, Deno"); +``` + +then run + +```shell +deno run --allow-net index.ts +``` + +Checkout files in [examples](examples/) folder. diff --git a/examples/echo_server.ts b/examples/echo_server.ts new file mode 100644 index 0000000..8457134 --- /dev/null +++ b/examples/echo_server.ts @@ -0,0 +1,14 @@ +// Run this example using +// deno run --allow-net examples/echo_server.ts +// nc localhost 8080 +// echo + +const hostname = "0.0.0.0"; +const port = 8080; + +const listener = Deno.listen({ hostname, port }); + +console.log(`Listen on ${hostname}:${port}`); +for await (const conn of listener) { + Deno.copy(conn, conn); +} diff --git a/examples/fetch.ts b/examples/fetch.ts new file mode 100644 index 0000000..001cab8 --- /dev/null +++ b/examples/fetch.ts @@ -0,0 +1,8 @@ +// Run this example using +// deno run --allow-net=example.com examples/fetch.ts + +const url = Deno.args[0]; // catch the first argument passed to the script +const res = await fetch(url); //fetch over the net + +const body = new Uint8Array(await res.arrayBuffer()); //convert buffer to bytes +await Deno.stdout.write(body); //write to terminal diff --git a/examples/file.ts b/examples/file.ts new file mode 100644 index 0000000..1f43742 --- /dev/null +++ b/examples/file.ts @@ -0,0 +1,10 @@ +// Run this example using +// deno run --allow-read examples/file.ts + +const filenames = Deno.args; + +for (const filename of filenames) { + const file = await Deno.open(filename); + await Deno.copy(file, Deno.stdout); + file.close(); +} diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..87fdbba --- /dev/null +++ b/index.ts @@ -0,0 +1,8 @@ +import { serve } from "https://deno.land/std@0.87.0/http/server.ts"; + +const s = serve({ port: 8000 }); + +console.log("http://localhost:8000/"); +for await (const req of s) { + req.respond({ body: "Hello, World\n" }); +}