npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

common-dev-deps

v0.1.0

Published

[![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-c

Readme

Fluence JS Client

npm npm

This is the Javascript client for the Fluence 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

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 or UNPKG). The script is large, thus we highly recommend to use the async attribute.

    Here is an example using the JSDELIVR CDN:

    <head>
        <title>Cool App</title>
        <script
            src="https://cdn.jsdelivr.net/npm/@fluencelabs/[email protected]/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 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:

    npm i @fluencelabs/js-client.api @fluencelabs/fluence-network-environment
  3. Add the following lines at the beginning of your code:

    import { Fluence } from "@fluencelabs/js-client.api";
    import { randomKras } from '@fluencelabs/fluence-network-environment';
    
    Fluence.connect(randomKras());

Node.js Apps

Prerequisites:

The Fluence JS Client only supports the ESM format. This implies that a few preliminary steps are required if your project is not already using ESM:

  • Add "type": "module" to your package.json.
  • Replace "main": "index.js" with "exports": "./index.js" in your package.json.
  • Remove 'use strict'; from all JavaScript files.
  • Replace all require()/module.export with import/export.
  • Use only full relative file paths for imports: import x from '.';import x from './index.js';.

If you are using TypeScript:

  • Make sure you are using TypeScript 4.7 or later.
  • Add "module": "ESNext", "target": "ESNext", "moduleResolution": "nodenext" to your tsconfig.json.
  • Use only full relative file paths for imports: import x from '.';import x from './index.js';.
  • Remove namespace usage and use export instead.
  • You must use a .js extension in relative imports even though you're importing .ts files.

Installation:

  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 and run it in your application. To compile Aqua, use Fluence CLI.

  1. Install the package:

    npm i -D @fluencelabs/cli
  2. Add a directory in your project for Aqua code, e.g., _aqua.

  3. Put *.aqua files in that directory.

  4. Add a directory for compiled Aqua files inside your sources. For example, if your app source is located in the src directory, you can create src/_aqua.

  5. To compile Aqua code once, run npx fluence aqua -i ./_aqua -o ./src/_aqua/. To watch the changes and to recompile on the fly, add the -w flag: npx fluence aqua -w -i ./_aqua -o ./src/_aqua/.

    Hint: it might be a good idea to add these scripts to your package.json file. For example, you project structure could look like this:

     ┣ _aqua
     ┃ ┗ demo.aqua
     ┣ src
     ┃ ┣ _aqua
     ┃ ┃ ┗ demo.ts
     ┃ ┗ index.ts
     ┣ package-lock.json
     ┣ package.json
     ┗ tsconfig.json

    Then, your package.json file should include the following lines:

    {
      ...
      "scripts": {
        ...
        "aqua:compile": "fluence aqua -i ./aqua/ -o ./src/_aqua",
        "aqua:watch": "fluence aqua -w -i ./aqua/ -o ./src/_aqua"
      },
      ...
    }
  6. Now you can import and call Aqua code from your application like this:

    import { getRelayTime } from "./_aqua/demo";
    
    async function buttonClick() {
      const time = await getRelayTime();
      alert("relay time: " + time);
    }

Debug

JS Client uses the debug library under the hood for logging. The log namespaces are structured on a per-component basis, following this structure:

fluence:<component>:trace
fluence:<component>:debug
fluence:<component>:error

Marine JS logs have a slightly different structure:

fluence:marine:<service id>:trace
fluence:marine:<service id>:debug
fluence:marine:<service id>:info
fluence:marine:<service id>:warn
fluence:marine:<service id>:error

Each level corresponds to a logging level in Marine JS.

Star (*) character can be used as a wildcard to enable logs for multiple components at once. For example, DEBUG=fluence:* will enable logs for all components. To exclude a component, use a minus sign before the component name. For example, DEBUG=fluence:*,-fluence:particle:*

Index of components:

  • particle: everything related to particle processing queue
  • aqua: infrastructure of aqua compiler support
  • connection: connection layer
  • marine: Marine JS logs

Enabling logs in Node.js

enable logs, pass the environment variable DEBUG with the corresponding log level. For example:

DEBUG=fluence:* node --loader ts-node/esm ./src/index.ts

Enabling logs in the browser

To enable logs, set the localStorage.debug variable. For example:

localStorage.debug = 'fluence:*'

NOTE

In Chromium-based web browsers (e.g. Brave, Chrome, and Electron), the JavaScript console will—by default—only show messages logged by debug if the "Verbose" log level is enabled.

Development

To hack on the Fluence JS Client itself, please refer to the development page.

Documentation

The starting point for all documentation related to Fluence is fluence.dev. We also have an active YouTube channel.

Support

Please, file an issue if you find a bug. You can also contact us at Discord or Telegram. We will do our best to resolve the issue ASAP.

Contributing

Any interested person is welcome to contribute to the project. Please, make sure you read and follow some basic rules.

License

All software code is copyright (c) Fluence Labs, Inc. under the Apache-2.0 license.