-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun.js
47 lines (39 loc) · 1.12 KB
/
run.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const { randomBytes } = require("crypto");
const { Elm } = require("./elm-main");
const { log } = require("./log");
const App = Elm.Main.init({});
const output = App.ports.output;
const start = App.ports.start;
const run = async (functionId, input) =>
new Promise((resolve) => {
start.send({
functionId,
input,
resolve,
});
});
output.subscribe(({ status, msg, output, input: { resolve } }) => {
if (status === "ok") {
resolve({ ok: output });
} else if (status === "error") {
resolve({ error: msg });
} else {
resolve({ error: "invalid response status" });
}
});
(async () => {
try {
const okF1 = await run("f1", [1, 1, 1, 1]);
console.log("--> okF1", okF1);
const okF2 = await run("f2", "emosewa si mle");
console.log("--> okF2", okF2);
const errorF2 = await run("f2", "");
console.log("--> errorF2", errorF2);
const errorF1 = await run("f1", []);
console.log("--> errorF1", errorF1);
const invalidInput = await run("f2", 123456);
console.log("--> invalid input", invalidInput);
} catch (e) {
console.error("--> throw", e);
}
})();