Skip to content

Commit 28922fd

Browse files
committed
First release
1 parent 4075af8 commit 28922fd

35 files changed

+978
-464
lines changed

README.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ This is a very, very, very experimental project! I am trying to use [Deno](https
88

99
There are 3 different versions of the same project:
1010

11-
- [Webview only](https://github.com/el3um4s/DenoC3Webview2/releases/download/v0.0.2/webview.zip) (533KB)
12-
- [Webview and Deno_Dir](https://github.com/el3um4s/DenoC3Webview2/releases/download/v0.0.2/webview-and-deno_dir.zip)(1MB)
13-
- [Webview and Deno](https://github.com/el3um4s/DenoC3Webview2/releases/download/v0.0.2/webview-and-denojs.zip)(8.22MB)
14-
11+
- [Webview only](https://github.com/el3um4s/DenoC3Webview2/releases/download/v0.0.3/webview.zip) (662 KB)
12+
- [Webview and Deno_Dir](https://github.com/el3um4s/DenoC3Webview2/releases/download/v0.0.3/webview-and-deno_dir.zip)(1,11 MB)
13+
- [Webview and Deno](https://github.com/el3um4s/DenoC3Webview2/releases/download/v0.0.3/webview-and-denojs.zip)(8,34 MB)
1514

1615
**This is only for Windows 64-bit!**
1716

app/api.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
import { Router, Context } from "./deps.ts";
1+
import { Context, Router } from "./deps.ts";
22
import * as words from "./controllers/words.ts";
33
import * as calculator from "./controllers/calculator.ts";
44

55
export const controller: AbortController = new AbortController();
66
export const api: Router = new Router();
77

8-
api.get("/close", (ctx: Context) => { controller.abort(); });
8+
api.get("/close", (ctx: Context) => {
9+
controller.abort();
10+
});
911

1012
api.get("/", words.message);
1113
api.get("/random-operation", calculator.randomOperation);

app/controllers/calculator.ts

Lines changed: 114 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -1,133 +1,135 @@
1-
import { helpers, Context } from "../deps.ts";
2-
import { APIParams, APIcalculator, Results } from "../lib/interface.ts";
1+
import { Context, helpers } from "../deps.ts";
2+
import { APIcalculator, APIParams, Results } from "../lib/interface.ts";
33
import * as utils from "../lib/utils.ts";
44

5-
export function randomOperation (ctx: Context) {
6-
console.log("/random-operation");
7-
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
8-
const paramWithoutOperation: APIcalculator = sanitizeParams(params);
9-
const param = addOperation(chooseRandomOperation(), paramWithoutOperation);
10-
const results: Results = calculate(param);
11-
ctx.response.body = results;
5+
const operationList: Array<string> = [
6+
"addition",
7+
"subtraction",
8+
"multiplication",
9+
"division",
10+
"remainder",
11+
"exponent",
12+
];
13+
14+
export function randomOperation(ctx: Context) {
15+
console.log("/random-operation");
16+
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
17+
const paramWithoutOperation: APIcalculator = sanitizeParams(params);
18+
const param = addOperation(chooseRandomOperation(), paramWithoutOperation);
19+
const results: Results = calculateFromAPIcalculator(param);
20+
ctx.response.body = results;
1221
}
1322

14-
export function calc (ctx: Context) {
15-
console.log("/calc/:operation/");
16-
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
17-
const param: APIcalculator = sanitizeParams(params);
18-
const results: Results = calculate(param);
19-
ctx.response.body = results;
23+
export function calc(ctx: Context) {
24+
console.log("/calc/:operation/");
25+
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
26+
const param: APIcalculator = sanitizeParams(params);
27+
const results: Results = calculateFromAPIcalculator(param);
28+
ctx.response.body = results;
2029
}
2130

22-
export function addition (ctx: Context) {
23-
console.log("/addition/");
24-
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
25-
const paramWithoutOperation: APIcalculator = sanitizeParams(params);
26-
const param = addOperation("addition", paramWithoutOperation);
27-
const results: Results = calculate(param);
28-
ctx.response.body = results;
29-
}
30-
31-
export function subtraction (ctx: Context) {
32-
console.log("/subtraction/");
33-
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
34-
const paramWithoutOperation: APIcalculator = sanitizeParams(params);
35-
const param = addOperation("subtraction", paramWithoutOperation);
36-
const results: Results = calculate(param);
37-
ctx.response.body = results;
38-
}
31+
export function addition(ctx: Context) {
32+
const results: Results = calculateFromContextWithOperation(ctx, "addition");
33+
ctx.response.body = results;
34+
}
3935

40-
export function multiplication (ctx: Context) {
41-
console.log("/multiplication/");
42-
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
43-
const paramWithoutOperation: APIcalculator = sanitizeParams(params);
44-
const param = addOperation("multiplication", paramWithoutOperation);
45-
const results: Results = calculate(param);
46-
ctx.response.body = results;
47-
}
36+
export function subtraction(ctx: Context) {
37+
const results: Results = calculateFromContextWithOperation(
38+
ctx,
39+
"subtraction",
40+
);
41+
ctx.response.body = results;
42+
}
4843

49-
export function division (ctx: Context) {
50-
console.log("/division/");
51-
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
52-
const paramWithoutOperation: APIcalculator = sanitizeParams(params);
53-
const param = addOperation("division", paramWithoutOperation);
54-
const results: Results = calculate(param);
55-
ctx.response.body = results;
56-
}
44+
export function multiplication(ctx: Context) {
45+
const results: Results = calculateFromContextWithOperation(
46+
ctx,
47+
"multiplication",
48+
);
49+
ctx.response.body = results;
50+
}
5751

58-
export function remainder (ctx: Context) {
59-
console.log("/remainder/");
60-
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
61-
const paramWithoutOperation: APIcalculator = sanitizeParams(params);
62-
const param = addOperation("remainder", paramWithoutOperation);
63-
const results: Results = calculate(param);
64-
ctx.response.body = results;
65-
}
52+
export function division(ctx: Context) {
53+
const results: Results = calculateFromContextWithOperation(ctx, "division");
54+
ctx.response.body = results;
55+
}
6656

67-
export function exponent (ctx: Context) {
68-
console.log("/exponent/");
69-
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
70-
const paramWithoutOperation: APIcalculator = sanitizeParams(params);
71-
const param = addOperation("exponent", paramWithoutOperation);
72-
const results: Results = calculate(param);
73-
ctx.response.body = results;
74-
}
57+
export function remainder(ctx: Context) {
58+
const results: Results = calculateFromContextWithOperation(ctx, "remainder");
59+
ctx.response.body = results;
60+
}
7561

62+
export function exponent(ctx: Context) {
63+
const results: Results = calculateFromContextWithOperation(ctx, "exponent");
64+
ctx.response.body = results;
65+
}
7666

67+
function addOperation(operation: string, param: APIcalculator): APIcalculator {
68+
const result: APIcalculator = { ...param };
69+
result.operationPresent = checkOperationName(operation);
70+
result.operation = operation;
71+
return result;
72+
}
7773

74+
function chooseRandomOperation(): string {
75+
const operation: string = utils.choose(...operationList);
76+
return operation;
77+
}
7878

79-
function addOperation(operation:string, param: APIcalculator): APIcalculator {
80-
const result: APIcalculator = {...param};
81-
result.operationPresent = true;
82-
result.operation = operation;
83-
return result;
79+
export function calculateFromContextWithOperation(
80+
ctx: Context,
81+
operation: string,
82+
): Results {
83+
console.log(`/${operation}`);
84+
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
85+
const paramWithoutOperation: APIcalculator = sanitizeParams(params);
86+
const param = addOperation(operation, paramWithoutOperation);
87+
const results: Results = calculateFromAPIcalculator(param);
88+
return results;
8489
}
8590

86-
function chooseRandomOperation () : string {
87-
const operation:string = utils.choose(
88-
"addition",
89-
"subtraction",
90-
"multiplication",
91-
"division",
92-
"remainder",
93-
"exponent",
94-
);
95-
return operation;
91+
function calculateFromAPIcalculator(param: APIcalculator): Results {
92+
const results: Results = {
93+
results: "",
94+
ok: false,
95+
operation: param.operation,
96+
a: param.a,
97+
b: param.b,
98+
};
99+
100+
if (param.aPresent && param.bPresent && param.operationPresent) {
101+
const result: number = utils.calc({
102+
operation: param.operation,
103+
a: param.a,
104+
b: param.b,
105+
});
106+
results.results = `${result}`;
107+
results.ok = true;
96108
}
97109

98-
function calculate(param: APIcalculator): Results {
99-
const results: Results = {
100-
results: "",
101-
ok: false,
102-
operation: param.operation,
103-
a: param.a,
104-
b: param.b,
105-
};
106-
107-
if (param.aPresent && param.bPresent && param.operationPresent ) {
108-
const result: number = utils.calc({ operation: param.operation, a: param.a, b: param.b });
109-
results.results = `${result}`;
110-
results.ok = true;
111-
}
112-
113-
return results;
110+
return results;
111+
}
112+
113+
function sanitizeParams(param: APIParams): APIcalculator {
114+
let operationPresent = utils.paramIsString(param.operation);
115+
const operation = utils.sanitizeParam(param.operation);
116+
operationPresent = checkOperationName(operation);
117+
const aPresent = utils.paramIsString(param.a);
118+
const a = utils.sanitizeParam(param.a);
119+
const bPresent = utils.paramIsString(param.b);
120+
const b = utils.sanitizeParam(param.b);
121+
const result: APIcalculator = {
122+
operationPresent,
123+
operation,
124+
aPresent,
125+
a,
126+
bPresent,
127+
b,
128+
};
129+
return result;
114130
}
115131

116-
function sanitizeParams(param: APIParams): APIcalculator{
117-
// TODO: check operation name
118-
const operationPresent = utils.paramIsString(param.operation);
119-
const operation = utils.sanitizeParam(param.operation);
120-
const aPresent = utils.paramIsString(param.a);
121-
const a = utils.sanitizeParam(param.a);
122-
const bPresent = utils.paramIsString(param.b);
123-
const b = utils.sanitizeParam(param.b);
124-
const result: APIcalculator = {
125-
operationPresent,
126-
operation,
127-
aPresent,
128-
a,
129-
bPresent,
130-
b
131-
};
132-
return result;
132+
function checkOperationName(operation: string): boolean {
133+
const result: boolean = operationList.includes(operation);
134+
return result;
133135
}

app/controllers/words.ts

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,37 @@
1-
import { helpers, Context } from "../deps.ts";
1+
import { Context, helpers } from "../deps.ts";
22
import { APIParams, Results } from "../lib/interface.ts";
33
import { choose } from "../lib/utils.ts";
44

55
export function message(ctx: Context) {
6-
const results: Results = { results: "", ok: false, operation: "", a: "", b: "" };
7-
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
6+
const results: Results = {
7+
results: "",
8+
ok: false,
9+
operation: "",
10+
a: "",
11+
b: "",
12+
};
13+
const params: APIParams = helpers.getQuery(ctx, { mergeParams: true });
814

9-
if (params?.first && params?.second) {
10-
console.log(`/${params.first} ${params.second}`);
11-
results.results = `${params.first} ${params.second}`;
12-
results.ok = true;
13-
} else {
14-
const message: string = randomMessage();
15-
console.log(`/${message}`);
16-
results.results = `${message}`;
17-
results.ok = true;
18-
}
19-
ctx.response.body = results;
15+
if (params?.first && params?.second) {
16+
console.log(`/${params.first} ${params.second}`);
17+
results.results = `${params.first} ${params.second}`;
18+
results.ok = true;
19+
} else {
20+
const message: string = randomMessage();
21+
console.log(`/${message}`);
22+
results.results = `${message}`;
23+
results.ok = true;
24+
}
25+
ctx.response.body = results;
2026
}
2127

22-
function randomMessage() : string {
23-
const message: string = choose(
24-
"Hello world",
25-
"Hola món",
26-
"Hallo Welt",
27-
"Bonjour le monde",
28-
"Ciao Mondo"
29-
);
30-
return message;
31-
}
28+
function randomMessage(): string {
29+
const message: string = choose(
30+
"Hello world",
31+
"Hola món",
32+
"Hallo Welt",
33+
"Bonjour le monde",
34+
"Ciao Mondo",
35+
);
36+
return message;
37+
}

app/deps.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,6 @@
1-
export { Application, Context, helpers, Router } from "https://deno.land/x/oak/mod.ts";
1+
export {
2+
Application,
3+
Context,
4+
helpers,
5+
Router,
6+
} from "https://deno.land/x/oak/mod.ts";

app/lib/interface.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
export interface APIParams {
2-
operation?: string,
3-
a?: string,
4-
b?: string,
5-
first?: string,
6-
second?: string,
2+
operation?: string;
3+
a?: string;
4+
b?: string;
5+
first?: string;
6+
second?: string;
77
}
88

99
export interface APIcalculator {
10-
operationPresent: boolean,
11-
operation: string,
12-
aPresent: boolean,
13-
a: string,
14-
bPresent: boolean,
15-
b: string,
10+
operationPresent: boolean;
11+
operation: string;
12+
aPresent: boolean;
13+
a: string;
14+
bPresent: boolean;
15+
b: string;
1616
}
1717

1818
export interface Results {
19-
results: string,
20-
ok: boolean,
21-
operation: string,
22-
a: string,
23-
b: string
24-
}
19+
results: string;
20+
ok: boolean;
21+
operation: string;
22+
a: string;
23+
b: string;
24+
}

0 commit comments

Comments
 (0)