mirror of
https://github.com/fluencelabs/fluence-js.git
synced 2024-12-04 18:00:18 +00:00
Merge remote-tracking branch 'origin/master' into tests-fixes
This commit is contained in:
commit
9e212118fc
6
.github/release-please/manifest.json
vendored
6
.github/release-please/manifest.json
vendored
@ -1,8 +1,8 @@
|
||||
{
|
||||
"packages/client/api": "0.11.3",
|
||||
"packages/client/js-client.node": "0.6.4",
|
||||
"packages/client/js-client.web.standalone": "0.13.3",
|
||||
"packages/client/js-client.node": "0.6.5",
|
||||
"packages/client/js-client.web.standalone": "0.13.4",
|
||||
"packages/client/tools": "0.2.1",
|
||||
"packages/core/interfaces": "0.7.3",
|
||||
"packages/core/js-peer": "0.8.3"
|
||||
"packages/core/js-peer": "0.8.4"
|
||||
}
|
||||
|
50
README.md
50
README.md
@ -3,12 +3,13 @@
|
||||
[![npm](https://img.shields.io/npm/v/@fluencelabs/js-client.api?label=@fluencelabs/js-client.api)](https://www.npmjs.com/package/@fluencelabs/js-client.api)
|
||||
[![npm](https://img.shields.io/npm/v/@fluencelabs/js-client.web.standalone?label=@fluencelabs/js-client.web.standalone)](https://www.npmjs.com/package/@fluencelabs/js-client.web.standalone)
|
||||
|
||||
This is the Javascript client for the [Fluence](https://fluence.network) network.
|
||||
This is the Javascript client for the [Fluence](https://fluence.network) network. The main role of the JS client is to connect to the Fluence Network and allow you to integrate Aqua code into your application.
|
||||
|
||||
## Installation
|
||||
|
||||
## Get Started
|
||||
Adding the Fluence JS client for your web application is very easy.
|
||||
|
||||
Adding the Fluence JS client for your web application is very easy:
|
||||
### Browser-based Apps
|
||||
|
||||
1. Add a script tag with the JS Client bundle to your `index.html`. The easiest way to do this is using a CDN (like [JSDELIVR](https://www.jsdelivr.com/) or [UNPKG](https://unpkg.com/)). The script is large, thus we highly recommend to use the `async` attribute.
|
||||
|
||||
@ -16,13 +17,15 @@ Adding the Fluence JS client for your web application is very easy:
|
||||
|
||||
```html
|
||||
<head>
|
||||
<title>Cool App</title>
|
||||
<script src='https://cdn.jsdelivr.net/npm/@fluencelabs/js-client.web.standalone@0.10.0/dist/js-client.min.js'
|
||||
async></script>
|
||||
<title>Cool App</title>
|
||||
<script
|
||||
src="https://cdn.jsdelivr.net/npm/@fluencelabs/js-client.web.standalone@0.13.3/dist/js-client.min.js"
|
||||
async
|
||||
></script>
|
||||
</head>
|
||||
```
|
||||
|
||||
If you cannot or don't want to use a CDN, feel free to get the script directly from the `npm` package and host in yourself: `https://www.npmjs.com/package/@fluencelabs/js-client.web.standalone`. You can find the script in the `/dist` directory of the package. (Note: this option means that developers understand what they are doing and know how to serve this file from their own web server.)
|
||||
If you cannot or don't want to use a CDN, feel free to get the script directly from the [npm package](https://www.npmjs.com/package/@fluencelabs/js-client.web.standalone) and host it yourself. You can find the script in the `/dist` directory of the package. (Note: this option means that developers understand what they are doing and know how to serve this file from their own web server.)
|
||||
|
||||
2. Install the following packages:
|
||||
|
||||
@ -34,14 +37,30 @@ Adding the Fluence JS client for your web application is very easy:
|
||||
|
||||
```
|
||||
import { Fluence } from "@fluencelabs/js-client.api";
|
||||
import { krasnodar } from "@fluencelabs/fluence-network-environment";
|
||||
import { randomKras } from '@fluencelabs/fluence-network-environment';
|
||||
|
||||
Fluence.start({
|
||||
relay: krasnodar[3],
|
||||
});
|
||||
Fluence.connect(randomKras());
|
||||
```
|
||||
|
||||
## Use Aqua in a Web Application
|
||||
### Node.js Apps
|
||||
|
||||
1. Install the following packages:
|
||||
|
||||
```
|
||||
npm i @fluencelabs/js-client.api"@fluencelabs/js-client.node @fluencelabs/fluence-network-environment
|
||||
```
|
||||
|
||||
2. Add the following lines at the beginning of your code:
|
||||
|
||||
```
|
||||
import '@fluencelabs/js-client.node';
|
||||
import { Fluence } from "@fluencelabs/js-client.api";
|
||||
import { randomKras } from '@fluencelabs/fluence-network-environment';
|
||||
|
||||
Fluence.connect(randomKras());
|
||||
```
|
||||
|
||||
## Usage in an Application
|
||||
|
||||
Once you've added the client, you can compile [Aqua](https://github.com/fluencelabs/aqua) and run it in your application. To compile Aqua, use [Fluence CLI](https://github.com/fluencelabs/fluence-cli).
|
||||
|
||||
@ -100,23 +119,18 @@ Once you've added the client, you can compile [Aqua](https://github.com/fluencel
|
||||
}
|
||||
```
|
||||
|
||||
**Warning**: Fluence JS client for Node.js is currently broken. We will fix this shortly.
|
||||
|
||||
|
||||
## Development
|
||||
|
||||
To hack on the Fluence JS Client itself, please refer to the [development page](./DEVELOPING.md).
|
||||
|
||||
|
||||
## Documentation
|
||||
|
||||
The starting point for all documentation related to Fluence is
|
||||
[fluence.dev](https://fluence.dev/). We also have an active [YouTube channel](https://www.youtube.com/@fluencelabs).
|
||||
|
||||
|
||||
## Support
|
||||
|
||||
Please, file an [issue](https://github.com/fluencelabs/fluence-js/issues) if you find a bug. You can also contact us at [Discord](https://discord.com/invite/5qSnPZKh7u) or [Telegram](https://t.me/fluence_project). We will do our best to resolve the issue ASAP.
|
||||
Please, file an [issue](https://github.com/fluencelabs/js-client/issues) if you find a bug. You can also contact us at [Discord](https://discord.com/invite/5qSnPZKh7u) or [Telegram](https://t.me/fluence_project). We will do our best to resolve the issue ASAP.
|
||||
|
||||
## Contributing
|
||||
|
||||
|
@ -6,6 +6,12 @@
|
||||
* dependencies
|
||||
* @fluencelabs/js-peer bumped from 0.8.1 to 0.8.2
|
||||
|
||||
### Dependencies
|
||||
|
||||
* The following workspace dependencies were updated
|
||||
* dependencies
|
||||
* @fluencelabs/js-peer bumped from 0.8.3 to 0.8.4
|
||||
|
||||
## [0.6.4](https://github.com/fluencelabs/js-client/compare/js-client.node-v0.6.3...js-client.node-v0.6.4) (2023-02-16)
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@fluencelabs/js-client.node",
|
||||
"version": "0.6.4",
|
||||
"version": "0.6.5",
|
||||
"description": "TypeScript implementation of Fluence Peer",
|
||||
"main": "./dist/index.js",
|
||||
"typings": "./dist/index.d.ts",
|
||||
@ -22,7 +22,7 @@
|
||||
"author": "Fluence Labs",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@fluencelabs/js-peer": "0.8.3",
|
||||
"@fluencelabs/js-peer": "0.8.4",
|
||||
"@fluencelabs/avm": "0.35.4",
|
||||
"@fluencelabs/marine-js": "0.3.45",
|
||||
"platform": "1.3.6"
|
||||
|
@ -6,6 +6,20 @@
|
||||
* dependencies
|
||||
* @fluencelabs/js-peer bumped from 0.8.1 to 0.8.2
|
||||
|
||||
## [0.13.4](https://github.com/fluencelabs/js-client/compare/js-client.web.standalone-v0.13.3...js-client.web.standalone-v0.13.4) (2023-02-22)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* `nodenext` moduleResolution for js peer ([#271](https://github.com/fluencelabs/js-client/issues/271)) ([78d98f1](https://github.com/fluencelabs/js-client/commit/78d98f15c12431dee9fdd7b9869d57760503f8c7))
|
||||
|
||||
|
||||
### Dependencies
|
||||
|
||||
* The following workspace dependencies were updated
|
||||
* dependencies
|
||||
* @fluencelabs/js-peer bumped from 0.8.3 to 0.8.4
|
||||
|
||||
## [0.13.3](https://github.com/fluencelabs/js-client/compare/js-client.web.standalone-v0.13.2...js-client.web.standalone-v0.13.3) (2023-02-16)
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@fluencelabs/js-client.web.standalone",
|
||||
"version": "0.13.3",
|
||||
"version": "0.13.4",
|
||||
"description": "TypeScript implementation of Fluence Peer",
|
||||
"main": "./dist/index.js",
|
||||
"typings": "./dist/index.d.ts",
|
||||
@ -16,7 +16,7 @@
|
||||
"author": "Fluence Labs",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"@fluencelabs/js-peer": "0.8.3",
|
||||
"@fluencelabs/js-peer": "0.8.4",
|
||||
"buffer": "6.0.3",
|
||||
"process": "0.11.10"
|
||||
},
|
||||
@ -27,7 +27,7 @@
|
||||
"@types/jest": "28.1.0",
|
||||
"jest": "28.1.0",
|
||||
"ts-jest": "28.0.2",
|
||||
"js-base64": "3.7.2",
|
||||
"js-base64": "3.7.5",
|
||||
"@rollup/plugin-inject": "5.0.3",
|
||||
"vite-plugin-replace": "0.1.1",
|
||||
"vite": "4.0.4",
|
||||
|
@ -1,5 +1,12 @@
|
||||
# Changelog
|
||||
|
||||
## [0.8.4](https://github.com/fluencelabs/js-client/compare/js-peer-v0.8.3...js-peer-v0.8.4) (2023-02-22)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* `nodenext` moduleResolution for js peer ([#271](https://github.com/fluencelabs/js-client/issues/271)) ([78d98f1](https://github.com/fluencelabs/js-client/commit/78d98f15c12431dee9fdd7b9869d57760503f8c7))
|
||||
|
||||
## [0.8.3](https://github.com/fluencelabs/js-client/compare/js-peer-v0.8.2...js-peer-v0.8.3) (2023-02-16)
|
||||
|
||||
|
||||
|
@ -1,16 +1,17 @@
|
||||
/** @type {import('ts-jest').JestConfigWithTsJest} */
|
||||
module.exports = {
|
||||
extensionsToTreatAsEsm: ['.ts'],
|
||||
moduleNameMapper: {
|
||||
'^(\\.{1,2}/.*)\\.js$': '$1',
|
||||
"preset": "ts-jest/presets/default-esm",
|
||||
"moduleNameMapper": {
|
||||
"^(\\.{1,2}/.*)\\.js$": "$1"
|
||||
},
|
||||
testPathIgnorePatterns: ['dist'],
|
||||
transform: {
|
||||
'^.+\\.tsx?$': [
|
||||
'ts-jest',
|
||||
"transform": {
|
||||
"^.+\\.tsx?$": [
|
||||
"ts-jest",
|
||||
{
|
||||
useESM: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
"useESM": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
};
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@fluencelabs/js-peer",
|
||||
"version": "0.8.3",
|
||||
"version": "0.8.4",
|
||||
"description": "TypeScript implementation of Fluence Peer",
|
||||
"main": "./dist/index.js",
|
||||
"typings": "./dist/index.d.ts",
|
||||
@ -38,7 +38,7 @@
|
||||
"@libp2p/peer-id-factory": "2.0.1",
|
||||
"@libp2p/interface-peer-id": "2.0.1",
|
||||
"@libp2p/interface-keys": "1.0.7",
|
||||
"js-base64": "3.7.2",
|
||||
"js-base64": "3.7.5",
|
||||
"it-length-prefixed": "8.0.4",
|
||||
"it-pipe": "2.0.5",
|
||||
"it-map": "2.0.0",
|
||||
@ -60,6 +60,6 @@
|
||||
"@types/uuid": "8.3.2",
|
||||
"@types/jest": "29.4.0",
|
||||
"jest": "29.4.1",
|
||||
"ts-jest": "29.0.5"
|
||||
"ts-jest": "next"
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,7 @@
|
||||
import type { PeerIdB58 } from '@fluencelabs/interfaces';
|
||||
import type { JSONArray, JSONObject, LogLevel } from '@fluencelabs/marine-js/dist/types';
|
||||
import type { RunParameters, CallResultsArray, InterpreterResult } from '@fluencelabs/avm';
|
||||
// @ts-ignore
|
||||
import type { WorkerImplementation } from 'threads/dist/types/master';
|
||||
|
||||
export type ParticleHandler = (particle: string) => void;
|
||||
|
@ -1,10 +1,10 @@
|
||||
import { CallParams } from '@fluencelabs/interfaces';
|
||||
import { toUint8Array } from 'js-base64';
|
||||
import { CallServiceData } from '../../../interfaces/commonTypes.js';
|
||||
import { builtInServices } from '../../builtins/common.js';
|
||||
import { KeyPair } from '../../../keypair/index.js';
|
||||
import { Sig, defaultSigGuard } from '../../builtins/Sig.js';
|
||||
import { allowServiceFn } from '../../builtins/securityGuard.js';
|
||||
import { builtInServices } from '../../builtins/common.js';
|
||||
|
||||
const a10b20 = `{
|
||||
"a": 10,
|
||||
|
@ -3,9 +3,9 @@ import { FluenceConnection, ParticleHandler } from '../interfaces/index.js';
|
||||
import { fromBase64Sk } from '../keypair/index.js';
|
||||
import { FluencePeer } from './FluencePeer.js';
|
||||
import { MarineBackgroundRunner } from '../marine/worker/index.js';
|
||||
import { avmModuleLoader, controlModuleLoader } from './utilsForNode';
|
||||
import { marineLogFunction } from './utils';
|
||||
import { MarineBasedAvmRunner } from './avm';
|
||||
import { avmModuleLoader, controlModuleLoader } from './utilsForNode.js';
|
||||
import { marineLogFunction } from './utils.js';
|
||||
import { MarineBasedAvmRunner } from './avm.js';
|
||||
|
||||
import log from 'loglevel';
|
||||
import { WorkerLoaderFromFs } from '../marine/deps-loader/node.js';
|
||||
|
@ -1,5 +1,7 @@
|
||||
// @ts-ignore
|
||||
import { BlobWorker } from 'threads';
|
||||
import { fromBase64, toUint8Array } from 'js-base64';
|
||||
// @ts-ignore
|
||||
import type { WorkerImplementation } from 'threads/dist/types/master';
|
||||
import { LazyLoader } from '../../interfaces/index.js';
|
||||
import { Buffer } from 'buffer';
|
||||
|
@ -1,7 +1,9 @@
|
||||
import { createRequire } from 'module';
|
||||
import { LazyLoader } from '../../interfaces/index.js';
|
||||
|
||||
// @ts-ignore
|
||||
import type { WorkerImplementation } from 'threads/dist/types/master';
|
||||
// @ts-ignore
|
||||
import { Worker } from 'threads';
|
||||
import { Buffer } from 'buffer';
|
||||
import * as fs from 'fs';
|
||||
|
@ -17,7 +17,9 @@
|
||||
import { MarineService } from '@fluencelabs/marine-js/dist/MarineService';
|
||||
import type { Env, MarineServiceConfig } from '@fluencelabs/marine-js/dist/config';
|
||||
import type { JSONArray, JSONObject, LogMessage } from '@fluencelabs/marine-js/dist/types';
|
||||
// @ts-ignore
|
||||
import { Observable, Subject } from 'threads/observable';
|
||||
// @ts-ignore
|
||||
import { expose } from 'threads/worker';
|
||||
|
||||
let marineServices = new Map<string, MarineService>();
|
||||
|
@ -1,6 +1,8 @@
|
||||
import { LazyLoader } from '../../interfaces/index.js';
|
||||
|
||||
// @ts-ignore
|
||||
import type { WorkerImplementation } from 'threads/dist/types/master';
|
||||
// @ts-ignore
|
||||
import { Worker } from 'threads';
|
||||
|
||||
export class WorkerLoader extends LazyLoader<WorkerImplementation> {
|
||||
|
@ -18,7 +18,9 @@ import type { JSONArray, JSONObject, LogLevel } from '@fluencelabs/marine-js/dis
|
||||
import { LogFunction, logLevelToEnv } from '@fluencelabs/marine-js/dist/types';
|
||||
import type { IMarine, IWorkerLoader, IWasmLoader } from '../../interfaces/index.js';
|
||||
import type { MarineBackgroundInterface } from '../worker-script/index.js';
|
||||
// @ts-ignore
|
||||
import { spawn, Thread } from 'threads';
|
||||
// @ts-ignore
|
||||
import type { ModuleThread } from 'threads';
|
||||
|
||||
export class MarineBackgroundRunner implements IMarine {
|
||||
|
@ -2,8 +2,9 @@
|
||||
"extends": "../../../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "./dist",
|
||||
"moduleResolution": "node"
|
||||
"moduleResolution": "nodenext"
|
||||
},
|
||||
"include": ["src/**/*"],
|
||||
"exclude": ["node_modules", "dist"]
|
||||
"exclude": ["node_modules", "dist"],
|
||||
"esModuleInterop": true
|
||||
}
|
||||
|
24
pnpm-lock.yaml
generated
24
pnpm-lock.yaml
generated
@ -101,7 +101,7 @@ importers:
|
||||
packages/client/js-client.node:
|
||||
specifiers:
|
||||
'@fluencelabs/avm': 0.35.4
|
||||
'@fluencelabs/js-peer': 0.8.3
|
||||
'@fluencelabs/js-peer': 0.8.4
|
||||
'@fluencelabs/marine-js': 0.3.45
|
||||
'@types/platform': 1.3.4
|
||||
platform: 1.3.6
|
||||
@ -116,14 +116,14 @@ importers:
|
||||
packages/client/js-client.web.standalone:
|
||||
specifiers:
|
||||
'@fluencelabs/avm': 0.35.4
|
||||
'@fluencelabs/js-peer': 0.8.3
|
||||
'@fluencelabs/js-peer': 0.8.4
|
||||
'@fluencelabs/marine-js': 0.3.45
|
||||
'@rollup/plugin-inject': 5.0.3
|
||||
'@types/jest': 28.1.0
|
||||
'@types/node': 16.11.59
|
||||
buffer: 6.0.3
|
||||
jest: 28.1.0
|
||||
js-base64: 3.7.2
|
||||
js-base64: 3.7.5
|
||||
process: 0.11.10
|
||||
ts-jest: 28.0.2
|
||||
vite: 4.0.4
|
||||
@ -140,7 +140,7 @@ importers:
|
||||
'@types/jest': 28.1.0
|
||||
'@types/node': 16.11.59
|
||||
jest: 28.1.0_@types+node@16.11.59
|
||||
js-base64: 3.7.2
|
||||
js-base64: 3.7.5
|
||||
ts-jest: 28.0.2_byf75w6xilfwy3ncjzlldwxox4
|
||||
vite: 4.0.4_@types+node@16.11.59
|
||||
vite-plugin-replace: 0.1.1_vite@4.0.4
|
||||
@ -192,13 +192,13 @@ importers:
|
||||
it-map: 2.0.0
|
||||
it-pipe: 2.0.5
|
||||
jest: 29.4.1
|
||||
js-base64: 3.7.2
|
||||
js-base64: 3.7.5
|
||||
libp2p: 0.42.2
|
||||
loglevel: 1.8.1
|
||||
multiformats: 11.0.1
|
||||
rxjs: 7.5.5
|
||||
threads: 1.7.0
|
||||
ts-jest: 29.0.5
|
||||
ts-jest: next
|
||||
ts-pattern: 3.3.3
|
||||
uint8arrays: 4.0.3
|
||||
uuid: 8.3.2
|
||||
@ -223,7 +223,7 @@ importers:
|
||||
it-length-prefixed: 8.0.4
|
||||
it-map: 2.0.0
|
||||
it-pipe: 2.0.5
|
||||
js-base64: 3.7.2
|
||||
js-base64: 3.7.5
|
||||
libp2p: 0.42.2
|
||||
loglevel: 1.8.1
|
||||
multiformats: 11.0.1
|
||||
@ -241,7 +241,7 @@ importers:
|
||||
'@types/jest': 29.4.0
|
||||
'@types/uuid': 8.3.2
|
||||
jest: 29.4.1
|
||||
ts-jest: 29.0.5_knhdxpg4pvwuf6vrybjt5d2q5i
|
||||
ts-jest: 29.0.0-next.1_knhdxpg4pvwuf6vrybjt5d2q5i
|
||||
|
||||
packages:
|
||||
|
||||
@ -10331,12 +10331,8 @@ packages:
|
||||
- ts-node
|
||||
dev: true
|
||||
|
||||
/js-base64/3.7.2:
|
||||
resolution: {integrity: sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==}
|
||||
|
||||
/js-base64/3.7.5:
|
||||
resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==}
|
||||
dev: true
|
||||
|
||||
/js-sdsl/4.3.0:
|
||||
resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==}
|
||||
@ -14497,8 +14493,8 @@ packages:
|
||||
yargs-parser: 20.2.9
|
||||
dev: true
|
||||
|
||||
/ts-jest/29.0.5_knhdxpg4pvwuf6vrybjt5d2q5i:
|
||||
resolution: {integrity: sha512-PL3UciSgIpQ7f6XjVOmbi96vmDHUqAyqDr8YxzopDqX3kfgYtX1cuNeBjP+L9sFXi6nzsGGA6R3fP3DDDJyrxA==}
|
||||
/ts-jest/29.0.0-next.1_knhdxpg4pvwuf6vrybjt5d2q5i:
|
||||
resolution: {integrity: sha512-bVo2GDuJiV+cWEYB72tdz2Ips4JDKa04bcKikPULxxUHT4fsoY1zB2zvsrJym18qrFpXyVrIdgJFLfEx2YTkbg==}
|
||||
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
|
@ -8,6 +8,7 @@
|
||||
"strict": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"allowJs": true,
|
||||
"esModuleInterop": true,
|
||||
"declaration": true,
|
||||
"moduleResolution": "nodenext"
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user