JS SDK 0.10 (#47)

This commit is contained in:
folex 2021-09-02 17:43:32 +03:00 committed by GitHub
parent 1356e404e9
commit 04b00967f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 5509 additions and 5962 deletions

View File

@ -89,7 +89,7 @@ jobs:
mv aqua-dht builtin-package
- name: Build Changelog
id: github_release
id: changelog
uses: mikepenz/release-changelog-builder-action@v1
with:
configuration: ".github/workflows/changelog_config.json"
@ -105,7 +105,7 @@ jobs:
tag_name: ${{ env.RELEASE_VERSION }}
files: |
aqua-dht.tar.gz
body: ${{steps.github_release.outputs.changelog}}
body: ${{steps.changelog.outputs.changelog}}
draft: false
prerelease: false
env:
@ -129,7 +129,7 @@ jobs:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
working-directory: ./aqua/target/typescript
## Update Builtin Services repo
## Update node-distro repo
- name: Get tar.gz URL
id: package-url
uses: actions/github-script@v4
@ -159,11 +159,11 @@ jobs:
echo $(sha256sum aqua-dht.tar.gz)
echo "SHA256=$(sha256sum aqua-dht.tar.gz | awk '{ print $1 }')" >> $GITHUB_ENV
- name: Update version in builtins repo
- name: Update version in node-distro repo
uses: benc-uk/workflow-dispatch@v1
with:
workflow: update_service
repo: fluencelabs/builtin-services
repo: fluencelabs/node-distro
ref: 'main'
token: ${{ secrets.PERSONAL_TOKEN }}
inputs: '{
@ -179,4 +179,4 @@ jobs:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
console.dir(core);
core.info("aqua-dht was updated to ${{ env.RELEASE_VERSION }} in Builtin Services Repo");
core.info("aqua-dht was updated to ${{ env.RELEASE_VERSION }} in node-distro repo");

12
aqua/package-lock.json generated
View File

@ -5,15 +5,15 @@
"requires": true,
"dependencies": {
"@fluencelabs/aqua": {
"version": "0.1.14-207",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.1.14-207.tgz",
"integrity": "sha512-Qz5082Pf8nYIitNN5RIGxn6ALsAQSXums5xWpB4eRI+FRtuVP+wvElTwn6PnpYvR61SUCkOcpBYPsABcfDaTCA==",
"version": "0.2.0-208",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua/-/aqua-0.2.0-208.tgz",
"integrity": "sha512-jopKhD3oeMQ4tenzfGs/v+GOZw/2frxGHh4E1dYlXyQO8o/yu0UZlLuI14xSC1Vo3c7KXmRTXRtF0mzcqF2kew==",
"dev": true
},
"@fluencelabs/aqua-lib": {
"version": "0.1.10",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.1.10.tgz",
"integrity": "sha512-DB4fE4kqN6T3TcQLzgYuNnHZd2rT0MGQ6Yky/KXfy0HlH/xL2cYQHs0xctDwIRMytA7U3laYvyz7FWPc3wEiNg=="
"version": "0.1.14",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-lib/-/aqua-lib-0.1.14.tgz",
"integrity": "sha512-H2Q4gIvociUxc4J2mwmH0D+mrU2N2Z+enKCHgBCanMVEE2wZDsZ80GTbDKsQjEq+gpqbnJIk8lJBYW6lyvLJTg=="
}
}
}

View File

@ -6,7 +6,7 @@
"*.aqua"
],
"dependencies": {
"@fluencelabs/aqua-lib": "^0.1.10"
"@fluencelabs/aqua-lib": "^0.1.14"
},
"scripts": {
"compile-aqua": "aqua -i ./ -o ./target/typescript/src",
@ -29,6 +29,6 @@
},
"homepage": "https://github.com/fluencelabs/aqua-dht",
"devDependencies": {
"@fluencelabs/aqua": "0.1.14-207"
"@fluencelabs/aqua": "^0.2.0-208"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@
"dist/*"
],
"dependencies": {
"@fluencelabs/fluence": "0.9.53"
"@fluencelabs/fluence": "^0.10.0"
},
"scripts": {
"build": "tsc"

View File

@ -4,6 +4,8 @@
import "@fluencelabs/aqua-dht/pubsub.aqua"
import "@fluencelabs/aqua-dht/dht.aqua"
alias PeerId: string
-- Application event
data Event:
value: string
@ -17,7 +19,7 @@ func call_subscriber(sub: Record, event: Event):
-- topological move to subscriber via relay
on sub.peer_id via sub.relay_id:
-- resolve service on a subscriber
SubscriberAPI sub.service_id
SubscriberAPI sub.service_id!
-- call function
SubscriberAPI.receive_event(event)

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
import { initTopicAndSubscribe, findSubscribers } from "./export.js";
import { createClient } from "@fluencelabs/fluence";
import { krasnodar } from "@fluencelabs/fluence-network-environment";
async function main() {
// connect to the Fluence network
const client = await createClient(krasnodar[1]);
let topic = "myTopic";
let value = "myValue";
// create topic (if not exists) and subscribe on it
await initTopicAndSubscribe(client, client.relayPeerId, topic, value, client.relayPeerId, null);
// find other peers subscribed to that topic
let subscribers = await findSubscribers(client, client.relayPeerId, topic);
console.log("found subscribers:", subscribers);
}
main()
.then(() => process.exit(0))
.catch(error => {
console.error(error);
process.exit(1);
});

View File

@ -0,0 +1,5 @@
import initTopicAndSubscribe, findSubscribers from "@fluencelabs/aqua-dht/pubsub.aqua"
export initTopicAndSubscribe, findSubscribers
alias A: string

View File

@ -0,0 +1,221 @@
/**
*
* This file is auto-generated. Do not edit manually: changes may be erased.
* Generated by Aqua compiler: https://github.com/fluencelabs/aqua/.
* If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues
* Aqua version: Unknown (JS)
*
*/
import { RequestFlowBuilder } from '@fluencelabs/fluence/dist/api.unstable.js';
export async function initTopicAndSubscribe(client, node_id, topic, value, relay_id, service_id, config) {
let request;
config = config || {};
const promise = new Promise((resolve, reject) => {
var r = new RequestFlowBuilder()
.disableInjections()
.withRawScript(
`
(xor
(seq
(seq
(seq
(seq
(seq
(seq
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(call %init_peer_id% ("getDataSrv" "node_id") [] node_id)
)
(call %init_peer_id% ("getDataSrv" "topic") [] topic)
)
(call %init_peer_id% ("getDataSrv" "value") [] value)
)
(call %init_peer_id% ("getDataSrv" "relay_id") [] relay_id)
)
(call %init_peer_id% ("getDataSrv" "service_id") [] service_id)
)
(call -relay- ("op" "noop") [])
)
(xor
(seq
(call node_id ("op" "string_to_b58") [topic] k)
(call node_id ("kad" "neighborhood") [k [] []] nodes)
)
(seq
(call -relay- ("op" "noop") [])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
)
)
)
(call -relay- ("op" "noop") [])
)
(fold nodes n
(par
(xor
(seq
(seq
(call n ("peer" "timestamp_sec") [] t)
(call n ("aqua-dht" "register_key") [topic t false 0])
)
(call n ("aqua-dht" "put_value") [topic value t relay_id service_id 0])
)
(null)
)
(seq
(call -relay- ("op" "noop") [])
(next n)
)
)
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
`,
)
.configHandler((h) => {
h.on('getDataSrv', '-relay-', () => {
return client.relayPeerId;
});
h.on('getDataSrv', 'node_id', () => {return node_id;});
h.on('getDataSrv', 'topic', () => {return topic;});
h.on('getDataSrv', 'value', () => {return value;});
h.on('getDataSrv', 'relay_id', () => {return relay_id === null ? [] : [relay_id];});
h.on('getDataSrv', 'service_id', () => {return service_id === null ? [] : [service_id];});
h.onEvent('errorHandlingSrv', 'error', (args) => {
// assuming error is the single argument
const [err] = args;
reject(err);
});
})
.handleScriptError(reject)
.handleTimeout(() => {
reject('Request timed out for initTopicAndSubscribe');
})
if(config.ttl) {
r.withTTL(config.ttl)
}
request = r.build();
});
await client.initiateFlow(request);
return Promise.race([promise, Promise.resolve()]);
}
export async function findSubscribers(client, node_id, topic, config) {
let request;
config = config || {};
const promise = new Promise((resolve, reject) => {
var r = new RequestFlowBuilder()
.disableInjections()
.withRawScript(
`
(xor
(seq
(seq
(seq
(seq
(seq
(seq
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(call %init_peer_id% ("getDataSrv" "node_id") [] node_id)
)
(call %init_peer_id% ("getDataSrv" "topic") [] topic)
)
(call -relay- ("op" "noop") [])
)
(xor
(seq
(call node_id ("op" "string_to_b58") [topic] k)
(call node_id ("kad" "neighborhood") [k [] []] nodes)
)
(seq
(seq
(call -relay- ("op" "noop") [])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
)
(call -relay- ("op" "noop") [])
)
)
)
(call -relay- ("op" "noop") [])
)
(fold nodes n
(par
(seq
(xor
(seq
(call n ("peer" "timestamp_sec") [] t)
(call n ("aqua-dht" "get_values") [topic t] $res)
)
(null)
)
(call node_id ("op" "noop") [])
)
(seq
(call -relay- ("op" "noop") [])
(next n)
)
)
)
)
(xor
(call node_id ("aqua-dht" "merge_two") [$res.$.[0].result! $res.$.[1].result!] v)
(seq
(call -relay- ("op" "noop") [])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
)
)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "response") [v.$.result!])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
)
`,
)
.configHandler((h) => {
h.on('getDataSrv', '-relay-', () => {
return client.relayPeerId;
});
h.on('getDataSrv', 'node_id', () => {return node_id;});
h.on('getDataSrv', 'topic', () => {return topic;});
h.onEvent('callbackSrv', 'response', (args) => {
const [res] = args;
resolve(res);
});
h.onEvent('errorHandlingSrv', 'error', (args) => {
// assuming error is the single argument
const [err] = args;
reject(err);
});
})
.handleScriptError(reject)
.handleTimeout(() => {
reject('Request timed out for findSubscribers');
})
if(config.ttl) {
r.withTTL(config.ttl)
}
request = r.build();
});
await client.initiateFlow(request);
return promise;
}

2122
examples/javascript/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
{
"name": "example",
"version": "1.0.0",
"description": "An example of how to use AquaDHT in TypeScript",
"main": "example.js",
"type": "module",
"scripts": {
"compile-aqua": "aqua-js --js -i . -o .",
"start": "node example.js"
},
"keywords": [
"aqua",
"dht",
"p2p"
],
"author": "Fluence Labs",
"license": "MIT",
"dependencies": {
"@fluencelabs/fluence": "^0.10.0",
"@fluencelabs/fluence-network-environment": "^1.0.10"
},
"devDependencies": {
"@fluencelabs/aqua-dht": "0.1.37",
"@fluencelabs/aqua": "0.2.1-219"
}
}

File diff suppressed because it is too large Load Diff

View File

@ -17,7 +17,7 @@
"license": "MIT",
"dependencies": {
"@fluencelabs/aqua-dht-ts": "../../aqua/target/typescript",
"@fluencelabs/fluence": "0.9.53",
"@fluencelabs/fluence-network-environment": "1.0.10"
"@fluencelabs/fluence": "^0.10.0",
"@fluencelabs/fluence-network-environment": "^1.0.10"
}
}