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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@flargd/web

v0.4.0

Published

This is the web client for [Flargd](https://github.com/pmbanugo/flargd). It can be used anywhere JavaScript runs (i.e browsers, Node.js, and any Edge runtime).

Downloads

14

Readme

Flargd - @flargd/web

This is the web client for Flargd. It can be used anywhere JavaScript runs (i.e browsers, Node.js, and any Edge runtime).

Getting Started

Install the package

npm i @flargd/web

Then you initialise the client:

import { createClient } from "@flargd/web";
import { EDGE_FLAGS_HOST } from "./constants"; // EDGE_FLAGS_HOST is a constant value that could be resolved to an environment variable

const client = createClient({ host: EDGE_FLAGS_HOST });

The createClient() function takes a context object which is used to configure the client. See the next section for more info.

After the client is created, you can retrieve a feature flag using the get() method.

const flag = await client.get("feature-name");

The get() function returns an object with a boolean property enable. If it resolves to true, then you can enable the feature for the user.

If you want to retrieve more than one flag, you should use getMany() or getAll() function.

const flags = await client.getMany(["feature-1", "feature_2"]);
const allFlags = await client.getAll();

The getAll() function allows you to evaluate all the flags associated to an app. getMany() on the other hand allows you to retrieve a few flags.

See the examples repo for more code examples.

Configuration Context

The configuration context has the following shape in TypeScript:

interface Context {
  host?: string;
  app?: string;
  team?: string;
  distinctId?: string;
}

If app, host, or team are skipped, a default value will be used. For app, it defaults to default, for host it's https://api.flargd.dev, while team defaults to public.

The distinctId is optional and has no default. It is used by flargd as part of the evaluation criteria for a flag. If it is present, you are guaranteed to make get the same result each time you call get(), getMany(), or getAll(). If absent, the server generates a random identifier for each call to the get() or getMany() function. If you want a consistent result, it's advised to initialise with a value for distinctId.

You can use a unique identifier for the user, for example, the user ID in your database or the session ID if you want to keep it consistent only for the session. You can also generate and cache a random identifier for the user using crypto.randomUUID()