node example

This commit is contained in:
Pavel Murygin 2022-02-15 23:37:04 +03:00
parent 679d2e7c7c
commit b4f1f1c052
7 changed files with 15061 additions and 8527 deletions

View File

@ -0,0 +1,8 @@
module.exports = {
semi: true,
trailingComma: 'all',
singleQuote: true,
printWidth: 120,
tabWidth: 4,
useTabs: false,
};

View File

@ -0,0 +1,5 @@
module.exports = {
preset: 'ts-jest',
testEnvironment: 'node',
testPathIgnorePatterns: ['dist'],
};

File diff suppressed because it is too large Load Diff

View File

@ -6,6 +6,7 @@
"scripts": {
"prestart": "npm run compile-aqua",
"start": "node -r ts-node/register src/index.ts",
"test": "jest",
"compile-aqua": "aqua --import . -i ./aqua/ -o ./src/_aqua",
"watch-aqua": "chokidar \"**/*.aqua\" -c \"npm run compile-aqua\""
},
@ -15,7 +16,10 @@
"@fluencelabs/aqua": "^0.6.0-272",
"chokidar-cli": "^3.0.0",
"ts-node": "^10.2.1",
"typescript": "^4.4.2"
"typescript": "^4.4.2",
"@types/jest": "^27.0.3",
"jest": "^27.4.0",
"ts-jest": "^27.0.7"
},
"dependencies": {
"@fluencelabs/fluence": "^0.19.1",

View File

@ -0,0 +1,12 @@
import { runServer } from '../main';
import { demoCalculation } from '../_aqua/demo-calculation';
describe('smoke test', () => {
it('should work', async () => {
await runServer();
const res = await demoCalculation();
expect(res).toBe(7);
});
});

View File

@ -1,64 +1,3 @@
import { Fluence, KeyPair } from "@fluencelabs/fluence";
import { krasnodar } from "@fluencelabs/fluence-network-environment";
import { registerCalc, CalcDef } from "./_aqua/calc";
import { runServer, waitForKeypressAndStop } from './main';
class Calc implements CalcDef {
private _state: number = 0;
add(n: number) {
this._state += n;
}
subtract(n: number) {
this._state -= n;
}
multiply(n: number) {
this._state *= n;
}
divide(n: number) {
this._state /= n;
}
reset() {
this._state = 0;
}
getResult() {
return this._state;
}
}
const keypress = async () => {
process.stdin.setRawMode(true);
return new Promise<void>((resolve) =>
process.stdin.once("data", () => {
process.stdin.setRawMode(false);
resolve();
})
);
};
const relay = krasnodar[0];
// generated with `npx aqua create_keypair`
const skBytes = "tOpsT08fvYMnRypj3VtSoqWMN5W/AptKsP39yanlkg4=";
async function main() {
await Fluence.start({
connectTo: relay,
KeyPair: await KeyPair.fromEd25519SK(Buffer.from(skBytes, "base64")),
});
registerCalc(new Calc());
console.log("application started");
console.log("peer id is: ", Fluence.getStatus().peerId);
console.log("relay is: ", Fluence.getStatus().relayPeerId);
console.log("press any key to continue");
await keypress();
await Fluence.stop();
}
main();
runServer().then(waitForKeypressAndStop);

View File

@ -0,0 +1,58 @@
import { Fluence, KeyPair } from '@fluencelabs/fluence';
import { krasnodar } from '@fluencelabs/fluence-network-environment';
import { registerCalc, CalcDef } from './_aqua/calc';
class Calc implements CalcDef {
private _state: number = 0;
add(n: number) {
this._state += n;
}
subtract(n: number) {
this._state -= n;
}
multiply(n: number) {
this._state *= n;
}
divide(n: number) {
this._state /= n;
}
reset() {
this._state = 0;
}
getResult() {
return this._state;
}
}
const relay = krasnodar[0];
// generated with `npx aqua create_keypair`
const skBytes = 'tOpsT08fvYMnRypj3VtSoqWMN5W/AptKsP39yanlkg4=';
export async function runServer() {
await Fluence.start({
connectTo: relay,
KeyPair: await KeyPair.fromEd25519SK(Buffer.from(skBytes, 'base64')),
});
registerCalc(new Calc());
console.log('application started');
console.log('peer id is: ', Fluence.getStatus().peerId);
console.log('relay is: ', Fluence.getStatus().relayPeerId);
console.log('press any key to quit...');
}
export async function waitForKeypressAndStop() {
process.stdin.setRawMode(true);
process.stdin.resume();
process.stdin.on('data', async () => {
await Fluence.stop();
process.exit(0);
});
}