diff --git a/.github/release-please/config.json b/.github/release-please/config.json index 4091172e..93787a8a 100644 --- a/.github/release-please/config.json +++ b/.github/release-please/config.json @@ -13,6 +13,7 @@ "packages/core/marine-worker": {}, "packages/core/aqua-to-js": {}, "packages/core/interfaces": {}, - "packages/core/npm-aqua-compiler": {} + "packages/core/npm-aqua-compiler": {}, + "packages/core/fluence-network-environment": {} } } diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index 9d20d83e..d42b427e 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -4,5 +4,6 @@ "packages/core/aqua-to-js": "0.3.13", "packages/core/js-client-isomorphic": "0.6.0", "packages/core/interfaces": "0.12.0", - "packages/core/npm-aqua-compiler": "0.0.3" + "packages/core/npm-aqua-compiler": "0.0.3", + "packages/core/fluence-network-environment": "1.1.2" } diff --git a/packages/core/fluence-network-environment/.gitignore b/packages/core/fluence-network-environment/.gitignore new file mode 100644 index 00000000..99246bb7 --- /dev/null +++ b/packages/core/fluence-network-environment/.gitignore @@ -0,0 +1,16 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release +bundle/ +dist/ + +# Dependency directories +node_modules/ +jspm_packages/ \ No newline at end of file diff --git a/packages/core/fluence-network-environment/CHANGELOG.md b/packages/core/fluence-network-environment/CHANGELOG.md new file mode 100644 index 00000000..7377325e --- /dev/null +++ b/packages/core/fluence-network-environment/CHANGELOG.md @@ -0,0 +1,28 @@ +# Changelog + +## [1.1.2](https://github.com/fluencelabs/fluence-network-environment/compare/fluence-network-environment-v1.1.1...fluence-network-environment-v1.1.2) (2023-07-05) + + +### Bug Fixes + +* Update DNS records after kras migration to Nomad ([#11](https://github.com/fluencelabs/fluence-network-environment/issues/11)) ([446df4f](https://github.com/fluencelabs/fluence-network-environment/commit/446df4f5eaa64d8d5b803e23f73b8cf8e4331d2e)) + +## [1.1.1](https://github.com/fluencelabs/fluence-network-environment/compare/fluence-network-environment-v1.1.0...fluence-network-environment-v1.1.1) (2023-07-03) + + +### Bug Fixes + +* Actually build package ([#9](https://github.com/fluencelabs/fluence-network-environment/issues/9)) ([25ef57e](https://github.com/fluencelabs/fluence-network-environment/commit/25ef57e061d75abaa08d58a4fef89e71d9cfb4da)) + +## [1.1.0](https://github.com/fluencelabs/fluence-network-environment/compare/fluence-network-environment-v1.0.14...fluence-network-environment-v1.1.0) (2023-06-19) + + +### Features + +* Rename krasnodar to kras. Add functions to pick random nodes ([#4](https://github.com/fluencelabs/fluence-network-environment/issues/4)) ([a65217f](https://github.com/fluencelabs/fluence-network-environment/commit/a65217fd2e0d3c65f4ae54105b54018af778e92d)) +* Update stage multiaddr ([#7](https://github.com/fluencelabs/fluence-network-environment/issues/7)) ([3c0f1f8](https://github.com/fluencelabs/fluence-network-environment/commit/3c0f1f89a5f713e94ee0104bcf0fa9b66f8a5cca)) + + +### Bug Fixes + +* Update testnet DNS records ([#8](https://github.com/fluencelabs/fluence-network-environment/issues/8)) ([2ed6209](https://github.com/fluencelabs/fluence-network-environment/commit/2ed6209c9c122fe2cd2b7811379c97163c64db88)) diff --git a/packages/core/fluence-network-environment/README.md b/packages/core/fluence-network-environment/README.md new file mode 100644 index 00000000..b00f9f64 --- /dev/null +++ b/packages/core/fluence-network-environment/README.md @@ -0,0 +1,65 @@ +# Fluence network environment + +[![npm](https://img.shields.io/npm/v/@fluencelabs/fluence-network-environment)](https://www.npmjs.com/package/@fluencelabs/fluence-network-environment) + +Maintained list of well-known Fluence network nodes. The package is meant to be used in combination with [Fluence JS SDK](https://github.com/fluencelabs/fluence-js). + +## Installation + +With npm + +```bash +npm install @fluencelabs/fluence-network-environment +``` + +With yarn + +```bash +yarn add @fluencelabs/fluence-network-environment +``` + +## Usage + +Pick a node to connect to the Fluence network. + +```typescript +import { testNet } from "@fluencelabs/fluence-network-environment"; + +export const relayNode = testNet[0]; +``` + +Which can be used to initialize the Fluence client (see [Fluence JS SDK](https://github.com/fluencelabs/fluence-js).) + +```typescript +import { FluencePeer } from "@fluencelabs/fluence"; + +const peer = new FluencePeer(); +await peer.start({ connectTo: relayNode }); +``` + +## Known networks + +- stage - unstable network for development tests; low capacity +- TestNet - more stable network, used for QA of new releases; higher capacity +- Kras - stable network, has the highest load capacity + +All 3 networks are connected, i.e. any node can be discovered from every other. They're open and permissionless, meaning that anyone can use any node for bootstrapping. + +## Fluence Stack + +| Layer | Tech | Scale | State | Based on | +| :-------------------: | :-------------------------------------------------------------------------------------------------------------------------------: | :------------------------------: | :-------------------------------: | :-----------------------------------------------------------------------------------------------------------: | +| Execution | [Marine](https://github.com/fluencelabs/marine) | Single peer | Disk, network, external processes | Wasm, [IT](https://github.com/fluencelabs/interface-types), [Wasmer\*](https://github.com/fluencelabs/wasmer) | +| Composition | [Aqua](https://github.com/fluencelabs/aqua) | Involved peers | Results and signatures | ⇅, π-calculus | +| Topology | [TrustGraph](https://github.com/fluencelabs/fluence/tree/master/trust-graph), [DHT\*](https://github.com/fluencelabs/rust-libp2p) | Distributed with Kademlia\* algo | Actual state of the network | [libp2p](https://github.com/libp2p/rust-libp2p) | +| Security & Accounting | Blockchain | Whole network | Licenses & payments | substrate? | + +
+ +

+aquamarine scheme +

+ +## License + +[Apache 2.0](https://github.com/fluencelabs/fluence/blob/trustless_computing/LICENSE.md) diff --git a/packages/core/fluence-network-environment/doc/image.png b/packages/core/fluence-network-environment/doc/image.png new file mode 100644 index 00000000..ecaa8431 Binary files /dev/null and b/packages/core/fluence-network-environment/doc/image.png differ diff --git a/packages/core/fluence-network-environment/package-lock.json b/packages/core/fluence-network-environment/package-lock.json new file mode 100644 index 00000000..b416f79a --- /dev/null +++ b/packages/core/fluence-network-environment/package-lock.json @@ -0,0 +1,37 @@ +{ + "name": "@fluencelabs/fluence-network-environment", + "version": "1.1.2", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "@fluencelabs/fluence-network-environment", + "version": "1.1.2", + "license": "Apache-2.0", + "devDependencies": { + "typescript": "3.9.5" + } + }, + "node_modules/typescript": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", + "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + } + }, + "dependencies": { + "typescript": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", + "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==", + "dev": true + } + } +} diff --git a/packages/core/fluence-network-environment/package.json b/packages/core/fluence-network-environment/package.json new file mode 100644 index 00000000..f2e39b0e --- /dev/null +++ b/packages/core/fluence-network-environment/package.json @@ -0,0 +1,16 @@ +{ + "name": "@fluencelabs/fluence-network-environment", + "version": "1.1.2", + "description": "Fluence network environments addresses", + "files": [ + "dist" + ], + "main": "./dist/index.js", + "typings": "./dist/index.d.ts", + "scripts": { + "build": "tsc" + }, + "repository": "https://github.com/fluencelabs/fluence-network-environment", + "author": "Fluence Labs", + "license": "Apache-2.0" +} diff --git a/packages/core/js-client/src/network.ts b/packages/core/fluence-network-environment/src/index.ts similarity index 91% rename from packages/core/js-client/src/network.ts rename to packages/core/fluence-network-environment/src/index.ts index fe232fb4..8833fb6a 100644 --- a/packages/core/js-client/src/network.ts +++ b/packages/core/fluence-network-environment/src/index.ts @@ -164,26 +164,3 @@ export const kras: Relay[] = [ peerId: "12D3KooWD7CvsYcpF9HE9CCV9aY3SJ317tkXVykjtZnht2EbzDPm", }, ]; - -export const randomKras = (): Relay => { - return randomItem(kras); -}; - -export const randomTestNet = (): Relay => { - return randomItem(testNet); -}; - -export const randomStage = (): Relay => { - return randomItem(stage); -}; - -function randomItem(arr: Relay[]): Relay { - const index = randomInt(0, arr.length); - // This array access always defined - // eslint-disable-next-line @typescript-eslint/consistent-type-assertions - return arr[index] as Relay; -} - -function randomInt(min: number, max: number) { - return Math.floor(Math.random() * (max - min)) + min; -} diff --git a/packages/core/fluence-network-environment/tsconfig.json b/packages/core/fluence-network-environment/tsconfig.json new file mode 100644 index 00000000..a04ef1f8 --- /dev/null +++ b/packages/core/fluence-network-environment/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/core/js-client/package.json b/packages/core/js-client/package.json index ca344c49..926cf650 100644 --- a/packages/core/js-client/package.json +++ b/packages/core/js-client/package.json @@ -35,6 +35,7 @@ "@fluencelabs/avm": "0.62.0", "@fluencelabs/interfaces": "workspace:*", "@fluencelabs/js-client-isomorphic": "workspace:*", + "@fluencelabs/fluence-network-environment": "workspace:*", "@fluencelabs/marine-worker": "0.6.0", "@fluencelabs/threads": "^2.0.0", "@libp2p/crypto": "4.0.1", diff --git a/packages/core/js-client/src/api.ts b/packages/core/js-client/src/api.ts index 2dbd95e5..cae0931b 100644 --- a/packages/core/js-client/src/api.ts +++ b/packages/core/js-client/src/api.ts @@ -17,7 +17,6 @@ import type { ArrowWithoutCallbacks, FunctionCallDef, - JSONValue, ServiceDef, SimpleTypes, } from "@fluencelabs/interfaces"; @@ -32,6 +31,7 @@ import { } from "./compilerSupport/conversions.js"; import { ServiceImpl, UserServiceImpl } from "./compilerSupport/types.js"; import { FluencePeer } from "./jsPeer/FluencePeer.js"; +import type { JSONValue } from "./util/types.js"; import { zip } from "./util/utils.js"; import { callAquaFunction, Fluence, registerService } from "./index.js"; diff --git a/packages/core/js-client/src/clientPeer/__test__/client.spec.ts b/packages/core/js-client/src/clientPeer/__test__/client.spec.ts index 98af037f..e321faa5 100644 --- a/packages/core/js-client/src/clientPeer/__test__/client.spec.ts +++ b/packages/core/js-client/src/clientPeer/__test__/client.spec.ts @@ -14,13 +14,13 @@ * limitations under the License. */ -import { JSONValue } from "@fluencelabs/interfaces"; import { it, describe, expect, assert } from "vitest"; import { ExpirationError } from "../../jsPeer/errors.js"; import { CallServiceData } from "../../jsServiceHost/interfaces.js"; import { handleTimeout } from "../../particle/Particle.js"; import { registerHandlersHelper, withClient } from "../../util/testUtils.js"; +import type { JSONValue } from "../../util/types.js"; import { checkConnection } from "../checkConnection.js"; import { nodes, RELAY } from "./connection.js"; diff --git a/packages/core/js-client/src/clientPeer/checkConnection.ts b/packages/core/js-client/src/clientPeer/checkConnection.ts index e7d8a3df..39735c7c 100644 --- a/packages/core/js-client/src/clientPeer/checkConnection.ts +++ b/packages/core/js-client/src/clientPeer/checkConnection.ts @@ -14,11 +14,10 @@ * limitations under the License. */ -import { JSONValue } from "@fluencelabs/interfaces"; - import { WrapFnIntoServiceCall } from "../jsServiceHost/serviceUtils.js"; import { handleTimeout } from "../particle/Particle.js"; import { logger } from "../util/logger.js"; +import type { JSONValue } from "../util/types.js"; import { ClientPeer } from "./ClientPeer.js"; diff --git a/packages/core/js-client/src/clientPeer/types.ts b/packages/core/js-client/src/clientPeer/types.ts index 3a9cff7a..6314f55f 100644 --- a/packages/core/js-client/src/clientPeer/types.ts +++ b/packages/core/js-client/src/clientPeer/types.ts @@ -16,11 +16,6 @@ import { z } from "zod"; -/** - * Peer ID's id as a base58 string (multihash/CIDv0). - */ -export type PeerIdB58 = string; - const relaySchema = z.object({ peerId: z.string(), multiaddr: z.string(), diff --git a/packages/core/js-client/src/compilerSupport/__test__/conversion.spec.ts b/packages/core/js-client/src/compilerSupport/__test__/conversion.spec.ts index 946432b7..d08a44ee 100644 --- a/packages/core/js-client/src/compilerSupport/__test__/conversion.spec.ts +++ b/packages/core/js-client/src/compilerSupport/__test__/conversion.spec.ts @@ -14,9 +14,10 @@ * limitations under the License. */ -import { JSONValue, NonArrowSimpleType } from "@fluencelabs/interfaces"; +import { NonArrowSimpleType } from "@fluencelabs/interfaces"; import { it, describe, expect, test } from "vitest"; +import type { JSONValue } from "../../util/types.js"; import { aqua2js, js2aqua } from "../conversions.js"; const i32 = { tag: "scalar", name: "i32" } as const; diff --git a/packages/core/js-client/src/compilerSupport/callFunction.ts b/packages/core/js-client/src/compilerSupport/callFunction.ts index 1e2971e9..530a33f2 100644 --- a/packages/core/js-client/src/compilerSupport/callFunction.ts +++ b/packages/core/js-client/src/compilerSupport/callFunction.ts @@ -14,11 +14,10 @@ * limitations under the License. */ -import { JSONValue } from "@fluencelabs/interfaces"; - import { FluencePeer } from "../jsPeer/FluencePeer.js"; import { logger } from "../util/logger.js"; import { ArgCallbackFunction } from "../util/testUtils.js"; +import type { JSONValue } from "../util/types.js"; import { errorHandlingService, diff --git a/packages/core/js-client/src/compilerSupport/conversions.ts b/packages/core/js-client/src/compilerSupport/conversions.ts index 68ce8865..0d59b9b7 100644 --- a/packages/core/js-client/src/compilerSupport/conversions.ts +++ b/packages/core/js-client/src/compilerSupport/conversions.ts @@ -17,7 +17,6 @@ import { ArrowType, ArrowWithoutCallbacks, - JSONValue, LabeledProductType, NonArrowSimpleType, ScalarType, @@ -25,6 +24,7 @@ import { UnlabeledProductType, } from "@fluencelabs/interfaces"; +import { JSONValue } from "../util/types.js"; import { zip } from "../util/utils.js"; import { ServiceImpl, UserServiceImpl } from "./types.js"; diff --git a/packages/core/js-client/src/compilerSupport/services.ts b/packages/core/js-client/src/compilerSupport/services.ts index 1a619e83..c74bc87a 100644 --- a/packages/core/js-client/src/compilerSupport/services.ts +++ b/packages/core/js-client/src/compilerSupport/services.ts @@ -14,8 +14,6 @@ * limitations under the License. */ -import { JSONValue } from "@fluencelabs/interfaces"; - import { FluencePeer } from "../jsPeer/FluencePeer.js"; import { CallServiceData, @@ -23,6 +21,7 @@ import { ResultCodes, } from "../jsServiceHost/interfaces.js"; import { Particle } from "../particle/Particle.js"; +import type { JSONValue } from "../util/types.js"; import { ServiceImpl } from "./types.js"; diff --git a/packages/core/js-client/src/compilerSupport/types.ts b/packages/core/js-client/src/compilerSupport/types.ts index 6ad2a283..4b46a8ed 100644 --- a/packages/core/js-client/src/compilerSupport/types.ts +++ b/packages/core/js-client/src/compilerSupport/types.ts @@ -14,9 +14,8 @@ * limitations under the License. */ -import { JSONArray, JSONValue } from "@fluencelabs/interfaces"; - import { ParticleContext } from "../jsServiceHost/interfaces.js"; +import type { JSONArray, JSONValue } from "../util/types.js"; export type MaybePromise = T | Promise; diff --git a/packages/core/js-client/src/connection/RelayConnection.ts b/packages/core/js-client/src/connection/RelayConnection.ts index 75a6d33f..659f6d8e 100644 --- a/packages/core/js-client/src/connection/RelayConnection.ts +++ b/packages/core/js-client/src/connection/RelayConnection.ts @@ -16,7 +16,6 @@ import { noise } from "@chainsafe/libp2p-noise"; import { yamux } from "@chainsafe/libp2p-yamux"; -import { PeerIdB58 } from "@fluencelabs/interfaces"; import { identify } from "@libp2p/identify"; import type { PeerId } from "@libp2p/interface"; import { peerIdFromString } from "@libp2p/peer-id"; @@ -39,6 +38,7 @@ import { } from "../particle/Particle.js"; import { throwHasNoPeerId } from "../util/libp2pUtils.js"; import { logger } from "../util/logger.js"; +import type { PeerIdB58 } from "../util/types.js"; import { IConnection } from "./interfaces.js"; diff --git a/packages/core/js-client/src/connection/interfaces.ts b/packages/core/js-client/src/connection/interfaces.ts index bb0345c4..0ea3bdb3 100644 --- a/packages/core/js-client/src/connection/interfaces.ts +++ b/packages/core/js-client/src/connection/interfaces.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import type { PeerIdB58 } from "@fluencelabs/interfaces"; import type { Subscribable } from "rxjs"; import { IParticle } from "../particle/interfaces.js"; import { IStartable } from "../util/commonTypes.js"; +import { PeerIdB58 } from "../util/types.js"; /** * Interface for connection used in Fluence Peer. diff --git a/packages/core/js-client/src/ephemeral/client.ts b/packages/core/js-client/src/ephemeral/client.ts index fe41d193..19ddc418 100644 --- a/packages/core/js-client/src/ephemeral/client.ts +++ b/packages/core/js-client/src/ephemeral/client.ts @@ -14,12 +14,11 @@ * limitations under the License. */ -import { PeerIdB58 } from "@fluencelabs/interfaces"; - import { FluencePeer, PeerConfig } from "../jsPeer/FluencePeer.js"; import { JsServiceHost } from "../jsServiceHost/JsServiceHost.js"; import { KeyPair } from "../keypair/index.js"; import { IMarineHost } from "../marine/interfaces.js"; +import { PeerIdB58 } from "../util/types.js"; import { EphemeralNetwork } from "./network.js"; diff --git a/packages/core/js-client/src/ephemeral/network.ts b/packages/core/js-client/src/ephemeral/network.ts index 3a90aecc..5b437e98 100644 --- a/packages/core/js-client/src/ephemeral/network.ts +++ b/packages/core/js-client/src/ephemeral/network.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { PeerIdB58 } from "@fluencelabs/interfaces"; import { Subject } from "rxjs"; import { IConnection } from "../connection/interfaces.js"; @@ -26,6 +25,7 @@ import { loadMarineDeps } from "../marine/loader.js"; import { MarineBackgroundRunner } from "../marine/worker/index.js"; import { Particle } from "../particle/Particle.js"; import { logger } from "../util/logger.js"; +import { PeerIdB58 } from "../util/types.js"; const log = logger("ephemeral"); diff --git a/packages/core/js-client/src/index.ts b/packages/core/js-client/src/index.ts index 44d12bd3..9878ff01 100644 --- a/packages/core/js-client/src/index.ts +++ b/packages/core/js-client/src/index.ts @@ -146,7 +146,7 @@ export { fromOpts, } from "./keypair/index.js"; -export * from "./network.js"; +export * from "@fluencelabs/fluence-network-environment"; // TODO: Remove this export after DXJ-535 is done! export { js2aqua, aqua2js } from "./compilerSupport/conversions.js"; diff --git a/packages/core/js-client/src/jsPeer/FluencePeer.ts b/packages/core/js-client/src/jsPeer/FluencePeer.ts index 0444b5d8..5d9c7dd8 100644 --- a/packages/core/js-client/src/jsPeer/FluencePeer.ts +++ b/packages/core/js-client/src/jsPeer/FluencePeer.ts @@ -20,7 +20,6 @@ import { KeyPairFormat, serializeAvmArgs, } from "@fluencelabs/avm"; -import { JSONValue } from "@fluencelabs/interfaces"; import { fromUint8Array } from "js-base64"; import { concatMap, @@ -64,6 +63,7 @@ import { defaultSigGuard, Sig } from "../services/Sig.js"; import { Srv } from "../services/SingleModuleSrv.js"; import { Tracing } from "../services/Tracing.js"; import { logger } from "../util/logger.js"; +import type { JSONValue } from "../util/types.js"; import { getErrorMessage, isString, jsonify } from "../util/utils.js"; import { ExpirationError, InterpreterError, SendError } from "./errors.js"; diff --git a/packages/core/js-client/src/jsPeer/__test__/avm.spec.ts b/packages/core/js-client/src/jsPeer/__test__/avm.spec.ts index b7b5dde1..9162970c 100644 --- a/packages/core/js-client/src/jsPeer/__test__/avm.spec.ts +++ b/packages/core/js-client/src/jsPeer/__test__/avm.spec.ts @@ -14,11 +14,11 @@ * limitations under the License. */ -import { JSONValue } from "@fluencelabs/interfaces"; import { it, describe, expect, assert } from "vitest"; import { handleTimeout } from "../../particle/Particle.js"; import { registerHandlersHelper, withPeer } from "../../util/testUtils.js"; +import type { JSONValue } from "../../util/types.js"; describe("Basic AVM functionality in Fluence Peer tests", () => { it("Simple call", async () => { diff --git a/packages/core/js-client/src/jsPeer/__test__/par.spec.ts b/packages/core/js-client/src/jsPeer/__test__/par.spec.ts index 7a85654c..4299aa78 100644 --- a/packages/core/js-client/src/jsPeer/__test__/par.spec.ts +++ b/packages/core/js-client/src/jsPeer/__test__/par.spec.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { JSONValue } from "@fluencelabs/interfaces"; import { describe, expect, it, assert } from "vitest"; import { @@ -23,6 +22,7 @@ import { } from "../../jsServiceHost/interfaces.js"; import { handleTimeout } from "../../particle/Particle.js"; import { registerHandlersHelper, withPeer } from "../../util/testUtils.js"; +import type { JSONValue } from "../../util/types.js"; describe("FluencePeer flow tests", () => { it("should execute par instruction in parallel", async function () { diff --git a/packages/core/js-client/src/jsServiceHost/interfaces.ts b/packages/core/js-client/src/jsServiceHost/interfaces.ts index 02f08898..74172ca7 100644 --- a/packages/core/js-client/src/jsServiceHost/interfaces.ts +++ b/packages/core/js-client/src/jsServiceHost/interfaces.ts @@ -15,8 +15,8 @@ */ import type { SecurityTetraplet } from "@fluencelabs/avm"; -import type { PeerIdB58 } from "@fluencelabs/interfaces"; -import { JSONArray, JSONValue } from "@fluencelabs/interfaces"; + +import type { JSONArray, JSONValue, PeerIdB58 } from "../util/types.js"; /** * JS Service host a low level interface for managing pure javascript services. diff --git a/packages/core/js-client/src/jsServiceHost/serviceUtils.ts b/packages/core/js-client/src/jsServiceHost/serviceUtils.ts index 2e6fcfe7..fea0a4dd 100644 --- a/packages/core/js-client/src/jsServiceHost/serviceUtils.ts +++ b/packages/core/js-client/src/jsServiceHost/serviceUtils.ts @@ -15,11 +15,11 @@ */ import { SecurityTetraplet } from "@fluencelabs/avm"; -import { JSONArray } from "@fluencelabs/interfaces"; import { FluencePeer } from "../jsPeer/FluencePeer.js"; import { IParticle } from "../particle/interfaces.js"; import { builtInServices } from "../services/builtins.js"; +import type { JSONArray } from "../util/types.js"; import { CallServiceData, diff --git a/packages/core/js-client/src/marine/interfaces.ts b/packages/core/js-client/src/marine/interfaces.ts index 996479d4..3afc44d0 100644 --- a/packages/core/js-client/src/marine/interfaces.ts +++ b/packages/core/js-client/src/marine/interfaces.ts @@ -14,10 +14,10 @@ * limitations under the License. */ -import { JSONObject, JSONValue, JSONArray } from "@fluencelabs/interfaces"; import { CallParameters } from "@fluencelabs/marine-worker"; import { IStartable } from "../util/commonTypes.js"; +import type { JSONObject, JSONValue, JSONArray } from "../util/types.js"; /** * Contract for marine host implementations. Marine host is responsible for creating calling and removing marine services diff --git a/packages/core/js-client/src/marine/worker/index.ts b/packages/core/js-client/src/marine/worker/index.ts index 66c665cc..83aaa37f 100644 --- a/packages/core/js-client/src/marine/worker/index.ts +++ b/packages/core/js-client/src/marine/worker/index.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { JSONValue } from "@fluencelabs/interfaces"; import type { MarineBackgroundInterface, LogFunction, @@ -24,6 +23,7 @@ import type { import { ModuleThread, Thread } from "@fluencelabs/threads/master"; import { MarineLogger, marineLogger } from "../../util/logger.js"; +import type { JSONValue } from "../../util/types.js"; import { IMarineHost } from "../interfaces.js"; export class MarineBackgroundRunner implements IMarineHost { diff --git a/packages/core/js-client/src/particle/Particle.ts b/packages/core/js-client/src/particle/Particle.ts index 9d8c7025..33df49eb 100644 --- a/packages/core/js-client/src/particle/Particle.ts +++ b/packages/core/js-client/src/particle/Particle.ts @@ -19,7 +19,6 @@ import { MulticodecRepr, MsgPackRepr, } from "@fluencelabs/avm"; -import { JSONValue } from "@fluencelabs/interfaces"; import int64Buffer from "int64-buffer"; import { concat } from "uint8arrays/concat"; import { v4 as uuidv4 } from "uuid"; @@ -28,6 +27,7 @@ import { z } from "zod"; import { ExpirationError } from "../jsPeer/errors.js"; import { KeyPair } from "../keypair/index.js"; import { numberToLittleEndianBytes } from "../util/bytes.js"; +import type { JSONValue } from "../util/types.js"; import { IParticle } from "./interfaces.js"; diff --git a/packages/core/js-client/src/particle/interfaces.ts b/packages/core/js-client/src/particle/interfaces.ts index cbe5c8cb..0bba001d 100644 --- a/packages/core/js-client/src/particle/interfaces.ts +++ b/packages/core/js-client/src/particle/interfaces.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { PeerIdB58 } from "@fluencelabs/interfaces"; +import type { PeerIdB58 } from "../util/types.js"; /** * Immutable part of the particle. diff --git a/packages/core/js-client/src/services/Sig.ts b/packages/core/js-client/src/services/Sig.ts index 3aa85f5e..d2cceac5 100644 --- a/packages/core/js-client/src/services/Sig.ts +++ b/packages/core/js-client/src/services/Sig.ts @@ -14,10 +14,9 @@ * limitations under the License. */ -import { PeerIdB58 } from "@fluencelabs/interfaces"; - import { ServiceFnArgs } from "../compilerSupport/types.js"; import { KeyPair } from "../keypair/index.js"; +import type { PeerIdB58 } from "../util/types.js"; import { allowOnlyParticleOriginatedAt, diff --git a/packages/core/js-client/src/services/__test__/builtInHandler.spec.ts b/packages/core/js-client/src/services/__test__/builtInHandler.spec.ts index 5ac125c7..36b9553e 100644 --- a/packages/core/js-client/src/services/__test__/builtInHandler.spec.ts +++ b/packages/core/js-client/src/services/__test__/builtInHandler.spec.ts @@ -14,13 +14,13 @@ * limitations under the License. */ -import { JSONArray } from "@fluencelabs/interfaces"; import { toUint8Array } from "js-base64"; import { describe, expect, it, test, assert } from "vitest"; import { CallServiceData } from "../../jsServiceHost/interfaces.js"; import { KeyPair } from "../../keypair/index.js"; import { makeTestTetraplet } from "../../util/testUtils.js"; +import type { JSONArray } from "../../util/types.js"; import { builtInServices } from "../builtins.js"; import { allowServiceFn } from "../securityGuard.js"; import { defaultSigGuard, Sig } from "../Sig.js"; diff --git a/packages/core/js-client/src/services/builtins.ts b/packages/core/js-client/src/services/builtins.ts index ed331712..23d790cd 100644 --- a/packages/core/js-client/src/services/builtins.ts +++ b/packages/core/js-client/src/services/builtins.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { JSONValue } from "@fluencelabs/interfaces"; import bs58 from "bs58"; import { sha256 } from "multiformats/hashes/sha2"; import { z } from "zod"; @@ -26,6 +25,7 @@ import { GenericCallServiceHandler, ResultCodes, } from "../jsServiceHost/interfaces.js"; +import type { JSONValue } from "../util/types.js"; import { getErrorMessage, jsonify } from "../util/utils.js"; const success = (result: CallServiceResultType): CallServiceResult => { diff --git a/packages/core/js-client/src/services/securityGuard.ts b/packages/core/js-client/src/services/securityGuard.ts index da32486e..8fe94158 100644 --- a/packages/core/js-client/src/services/securityGuard.ts +++ b/packages/core/js-client/src/services/securityGuard.ts @@ -15,9 +15,9 @@ */ import { SecurityTetraplet } from "@fluencelabs/avm"; -import { PeerIdB58 } from "@fluencelabs/interfaces"; import { ParticleContext } from "../jsServiceHost/interfaces.js"; +import type { PeerIdB58 } from "../util/types.js"; // Helpers for validating service function diff --git a/packages/core/js-client/src/util/testUtils.ts b/packages/core/js-client/src/util/testUtils.ts index 11be2584..5e33c8a2 100644 --- a/packages/core/js-client/src/util/testUtils.ts +++ b/packages/core/js-client/src/util/testUtils.ts @@ -17,12 +17,7 @@ import { promises as fs } from "fs"; import { compileFromPath } from "@fluencelabs/aqua-api"; -import { - FunctionCallDef, - JSONArray, - JSONValue, - ServiceDef, -} from "@fluencelabs/interfaces"; +import { FunctionCallDef, ServiceDef } from "@fluencelabs/interfaces"; import { Subject, Subscribable } from "rxjs"; import { ClientPeer, makeClientPeerConfig } from "../clientPeer/ClientPeer.js"; @@ -43,6 +38,8 @@ import { loadMarineDeps } from "../marine/loader.js"; import { MarineBackgroundRunner } from "../marine/worker/index.js"; import { Particle } from "../particle/Particle.js"; +import type { JSONArray, JSONValue } from "./types.js"; + export const registerHandlersHelper = ( peer: FluencePeer, particle: Particle, diff --git a/packages/core/js-client/src/util/types.ts b/packages/core/js-client/src/util/types.ts new file mode 100644 index 00000000..245a6e13 --- /dev/null +++ b/packages/core/js-client/src/util/types.ts @@ -0,0 +1,30 @@ +/** + * Copyright 2023 Fluence Labs Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Peer ID's id as a base58 string (multihash/CIDv0). + */ +export type PeerIdB58 = string; + +export type JSONValue = + | string + | number + | boolean + | null + | { [x: string]: JSONValue } + | Array; +export type JSONObject = { [x: string]: JSONValue }; +export type JSONArray = Array; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 522c7dc0..7440ec19 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -194,6 +194,8 @@ importers: specifier: 3.22.4 version: 3.22.4 + packages/core/fluence-network-environment: {} + packages/core/interfaces: devDependencies: hotscript: @@ -211,6 +213,9 @@ importers: '@fluencelabs/avm': specifier: 0.62.0 version: 0.62.0 + '@fluencelabs/fluence-network-environment': + specifier: workspace:* + version: link:../fluence-network-environment '@fluencelabs/interfaces': specifier: workspace:* version: link:../interfaces