@prefab-cloud/prefab-cloud-node
TypeScript icon, indicating that this package has built-in type declarations

0.2.2 • Public • Published

prefab-cloud-nodejs

Prefab Node.js client


Install the client

npm install @prefab-cloud/prefab-cloud-node or yarn add @prefab-cloud/prefab-cloud-node

Set up a Prefab client.

import { Prefab } from "@prefab-cloud/prefab-cloud-node";

if (!process.env.PREFAB_API_KEY) {
  throw new Error("PREFAB_API_KEY is not set");
}

const prefab = new Prefab({
  apiKey: process.env.PREFAB_API_KEY,
  enableSSE: true,
  enablePolling: true,
});

await prefab.init();

After the init completes you can use

  • prefab.get('some.config.name') returns a raw value
  • prefab.isFeatureEnabled('some.feature.name') returns true or false
  • prefab.shouldLog({loggerName, desiredLevel, defaultLevel, contexts}) returns true or false

Prefab supports context for intelligent rule-based evaluation of get and isFeatureEnabled based on the current request/device/user/etc.

Given

const context = new Map([
  [
    "user",
    new Map([
      ["key", "some-unique-identifier"],
      ["country", "US"],
    ]),
  ],

  [
    "subscription",
    new Map([
      ["key", "pro-sub"],
      ["plan", "pro"],
    ]),
  ],
]);

You can pass this in to each call

  • prefab.get('some.config.name', context, defaultValue)
  • prefab.isFeatureEnabled('some.feature.name', context, false)

Or you can set the context in a block (perhaps surrounding evaluation of a web request)

prefab.inContext(context, (pf) => {
  const optionalJustInTimeContext = { ... }

  console.log(pf.get("some.config.name", optionalJustInTimeContext, defaultValue))
  console.log(pf.isEnabled("some.config.name", optionalJustInTimeContext, false))
})

Note that you can also provide Context as an object instead of a Map, e.g.:

{
  user: {
    key: "some-unique-identifier",
    country: "US"
  },
  subscription: {
    key: "pro-sub",
    plan: "pro"
  }
}

Option Definitions

Besides apiKey, you can initialize new Prefab(...) with the following options

Name Description Default
collectEvaluationSummaries Send counts of config/flag evaluation results back to Prefab to view in web app true
collectLoggerCounts Send counts of logger usage back to Prefab to power log-levels configuration screen true
contextUploadMode Upload either context "shapes" (the names and data types your app uses in prefab contexts) or periodically send full example contexts "periodicExample"
defaultLevel Level to be used as the min-verbosity for a loggerPath if no value is configured in Prefab "warn"
enableSSE Whether or not we should listen for live changes from Prefab true
enablePolling Whether or not we should poll for changes from Prefab false

Readme

Keywords

none

Package Sidebar

Install

npm i @prefab-cloud/prefab-cloud-node

Weekly Downloads

215

Version

0.2.2

License

ISC

Unpacked Size

200 kB

Total Files

8

Last publish

Collaborators

  • ayip-prefab
  • semanticart
  • jdwyah