0.2.1 • Published 19 days ago

@prefab-cloud/prefab-cloud-node v0.2.1

Weekly downloads
-
License
ISC
Repository
-
Last release
19 days ago

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

NameDescriptionDefault
collectEvaluationSummariesSend counts of config/flag evaluation results back to Prefab to view in web apptrue
collectLoggerCountsSend counts of logger usage back to Prefab to power log-levels configuration screentrue
contextUploadModeUpload either context "shapes" (the names and data types your app uses in prefab contexts) or periodically send full example contexts"periodicExample"
defaultLevelLevel to be used as the min-verbosity for a loggerPath if no value is configured in Prefab"warn"
enableSSEWhether or not we should listen for live changes from Prefabtrue
enablePollingWhether or not we should poll for changes from Prefabfalse
0.2.1

19 days ago

0.2.0

25 days ago

0.1.20

2 months ago

0.1.19-pre1

3 months ago

0.1.18-pre3

3 months ago

0.1.18

3 months ago

0.1.19

3 months ago

0.1.18-pre1

3 months ago

0.1.18-pre2

3 months ago

0.1.17

4 months ago

0.1.17-rc1

4 months ago

0.1.16-rc1

4 months ago

0.1.16

4 months ago

0.1.15-rc7

4 months ago

0.1.15-rc8

4 months ago

0.1.15-rc9

4 months ago

0.1.15

4 months ago

0.1.15-rc6

4 months ago

0.1.15-rc4

4 months ago

0.1.15-rc5

4 months ago

0.1.15-rc2

4 months ago

0.1.15-rc3

4 months ago

0.1.15-rc1

4 months ago

0.1.13

5 months ago

0.1.14

5 months ago

0.1.12

5 months ago

0.1.12-rc1

5 months ago

0.1.12-rc2

5 months ago

0.1.11

5 months ago

0.1.10

5 months ago

0.1.10-rc4

5 months ago

0.1.10-rc2

5 months ago

0.1.10-rc3

5 months ago

0.1.10-rc1

5 months ago

0.1.1-alpha.8

10 months ago

0.1.1-alpha.7

10 months ago

0.1.2

9 months ago

0.1.1-alpha.6

10 months ago

0.1.1-alpha.5

10 months ago

0.1.9-rc3

5 months ago

0.1.8

7 months ago

0.1.9-rc2

5 months ago

0.1.7

7 months ago

0.1.9-rc1

5 months ago

0.1.9

5 months ago

0.1.4

8 months ago

0.1.9-rc6

5 months ago

0.1.3

9 months ago

0.1.9-rc5

5 months ago

0.1.6

7 months ago

0.1.9-rc4

5 months ago

0.1.5

7 months ago

0.1.1-alpha.4

10 months ago

0.1.1-alpha.3

10 months ago

0.1.1-alpha.2

11 months ago

0.1.1-alpha.1

12 months ago

0.1.1-alpha.0

12 months ago