├── .gitignore
├── deno.ts
├── data.json
├── dependencies.ts
├── read.ts
├── rest
├── interfaces.ts
├── rest.ts
├── router.ts
├── controller.ts
└── readme.md
├── testing
├── calc.ts
└── calc.test.ts
├── http.ts
├── file.ts
├── datetime.js
├── fetch.ts
└── qrcode.html
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode
2 | .idea
3 |
--------------------------------------------------------------------------------
/deno.ts:
--------------------------------------------------------------------------------
1 | const text: string = "Hello Deno";
2 | console.log(text);
3 |
--------------------------------------------------------------------------------
/data.json:
--------------------------------------------------------------------------------
1 | {"userId":1,"id":3,"title":"fugiat veniam minus","completed":false}
--------------------------------------------------------------------------------
/dependencies.ts:
--------------------------------------------------------------------------------
1 | export {assertEquals} from 'https://deno.land/std@0.53.0/testing/asserts.ts'
--------------------------------------------------------------------------------
/read.ts:
--------------------------------------------------------------------------------
1 | const file = await Deno.open('data.json')
2 | await Deno.copy(file, Deno.stdout)
3 | file.close()
--------------------------------------------------------------------------------
/rest/interfaces.ts:
--------------------------------------------------------------------------------
1 | export interface User {
2 | id: string
3 | name: string
4 | }
5 |
6 | export interface OakContext {
7 | response: any
8 | params?: {id: string}
9 | }
--------------------------------------------------------------------------------
/testing/calc.ts:
--------------------------------------------------------------------------------
1 | export function sum(a: number, b: number): number {
2 | return a + b
3 | }
4 |
5 | export function sub(a: number, b: number): number {
6 | return a - b
7 | }
--------------------------------------------------------------------------------
/http.ts:
--------------------------------------------------------------------------------
1 | import { serve } from "https://deno.land/std/http/server.ts"
2 |
3 | const s = serve({ port: 5000 })
4 |
5 | console.log('Server has been started on port 5000...')
6 |
7 | for await (const req of s) {
8 | req.respond({ body: 'Hello Deno' })
9 | }
--------------------------------------------------------------------------------
/file.ts:
--------------------------------------------------------------------------------
1 | import {qrcode} from 'https://deno.land/x/qrcode/mod.ts'
2 |
3 | const img = await qrcode('https://www.vladilen.dev')
4 |
5 | const encoder = new TextEncoder()
6 |
7 | const data = encoder.encode(`
`)
8 |
9 | await Deno.writeFile('qrcode.html', data)
--------------------------------------------------------------------------------
/datetime.js:
--------------------------------------------------------------------------------
1 | import {
2 | parseDate,
3 | dayOfYear,
4 | currentDayOfYear,
5 | } from "https://deno.land/std/datetime/mod.ts";
6 |
7 | console.log(parseDate("20-01-2019", "dd-mm-yyyy"));
8 |
9 | console.log(dayOfYear(new Date("2019-03-11T03:24:00")));
10 | console.log(currentDayOfYear());
11 |
--------------------------------------------------------------------------------
/rest/rest.ts:
--------------------------------------------------------------------------------
1 | import { Application, Router } from "https://deno.land/x/oak/mod.ts";
2 | import {router} from './router.ts'
3 |
4 | const port = 5000
5 |
6 | const app = new Application()
7 |
8 | app.use(router.routes())
9 |
10 | console.log(`App has been started on port ${port}...`)
11 | await app.listen({ port })
12 |
--------------------------------------------------------------------------------
/rest/router.ts:
--------------------------------------------------------------------------------
1 | import { Router } from "https://deno.land/x/oak/mod.ts";
2 | import {getUsers, getUser, createUser, updateUser, removeUser} from './controller.ts'
3 |
4 | const router = new Router()
5 |
6 | router
7 | .get('/api/users', getUsers)
8 | .get('/api/users/:id', getUser)
9 | .post('/api/users', createUser)
10 | .put('/api/users/:id', updateUser)
11 | .delete('/api/users/:id', removeUser)
12 |
13 | export {router}
--------------------------------------------------------------------------------
/fetch.ts:
--------------------------------------------------------------------------------
1 | window.addEventListener('load', () => {
2 | console.log('load')
3 | })
4 |
5 | window.addEventListener('unload', () => {
6 | console.log('unload')
7 | })
8 |
9 | const url = Deno.args[0]
10 | console.log('Making request to url:', url)
11 | const response = await fetch(url)
12 | const data = await response.json()
13 |
14 | await Deno.writeFile('data.json', new TextEncoder().encode(JSON.stringify(data)))
15 |
16 |
17 | // https://jsonplaceholder.typicode.com/todos/1
--------------------------------------------------------------------------------
/testing/calc.test.ts:
--------------------------------------------------------------------------------
1 | import {sub, sum} from './calc.ts'
2 | // import {assertEquals} from 'https://deno.land/std/testing/asserts.ts'
3 | // import {assertEquals} from 'https://deno.land/std@0.53.0/testing/asserts.ts'
4 | import {assertEquals} from '../dependencies.ts'
5 |
6 | Deno.test('Sum function', () => {
7 | const result = sum(41, 1)
8 |
9 | assertEquals(result, 42)
10 | })
11 |
12 | Deno.test('Sub function', () => {
13 | const result = sub(43, 1)
14 |
15 | assertEquals(result, 42)
16 | })
--------------------------------------------------------------------------------
/rest/controller.ts:
--------------------------------------------------------------------------------
1 | import { User } from "./interfaces.ts";
2 | import { v4 } from "https://deno.land/std/uuid/mod.ts"
3 |
4 | let users: User[] = [
5 | {id: '1', name: 'Vladilen'},
6 | {id: '2', name: 'Elena'}
7 | ]
8 |
9 | export const getUsers = ({ response }: {response: any}) => {
10 | response.status = 200
11 | response.body = {
12 | users
13 | }
14 | }
15 |
16 | export const getUser = ({ response, params }: {response: any, params: {id: string}}) => {
17 | const user: User | undefined = users.find(u => u.id === params.id)
18 |
19 | if (user) {
20 | response.status = 200
21 | response.body = {user}
22 | } else {
23 | response.status = 404
24 | response.body = {message: 'User Not Found'}
25 | }
26 | }
27 |
28 | export const createUser = async ({ response, request }: {response: any, request: any}) => {
29 | const body = await request.body()
30 |
31 | if (!request.hasBody) {
32 | response.status = 400
33 | response.body = {message: 'Invalid data'}
34 | } else {
35 | const user: User = body.value
36 | user.id = v4.generate()
37 | users.push(user)
38 | response.status = 201
39 | response.body = { user }
40 | }
41 | }
42 |
43 | export const updateUser = async ({ params, response, request }: {response: any, request: any, params: {id: string}}) => {
44 | const user: User | undefined = users.find(u => u.id === params.id)
45 |
46 | if (user) {
47 | const body = await request.body()
48 |
49 | users = users.map(u => u.id === user.id ? {...u, ...body.value} : u)
50 |
51 | response.status = 200
52 | response.body = {users}
53 |
54 | } else {
55 | response.status = 404
56 | response.body = {message: 'User not found'}
57 | }
58 | }
59 |
60 | export const removeUser = ({params, response}: {params: {id: string}, response: any}) => {
61 | users = users.filter(u => u.id !== params.id)
62 |
63 | response.status = 200
64 | response.body = {users}
65 |
66 | }
--------------------------------------------------------------------------------
/qrcode.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/rest/readme.md:
--------------------------------------------------------------------------------
1 | 
--------------------------------------------------------------------------------