Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@tdreyno/confidant

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tdreyno/confidant

[![Test Coverage](https://api.codeclimate.com/v1/badges/bade509a61c126d7f488/test_coverage)](https://codeclimate.com/github/tdreyno/confidant/test_coverage) [![npm latest version](https://img.shields.io/npm/v/@tdreyno/confidant/latest.svg)](https://www.np

  • 1.12.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Confidant

Test Coverage npm latest version

Confidant is a library for storing environmental variables, secrets, feature flags and tokens so all can be easily access throughout your JavaScript/TypeScript project.

Install

yarn add @tdreyno/confidant

Basic Usage

import { SecretsManager } from "aws-sdk"
import {
  Confidant,
  AWSSecret,
  Hardcoded as _,
  LaunchDarkly,
  Inputs,
  Group,
  AWSManager,
} from "@tdreyno/confidant"

const results = await Confidant(
  {
    awsManager: new AWSManager(new SecretsManager({ region: "ap-south-1" })),
  },
  {
    ...DEV,
    url: _("/prod"),
    anotherThing: AWSSecret("MyViasat-TSUsage/PSM/serviceAccount/PROD"),

    launchDarklyKey: AWSSecret("LDKEY FROM AWS"),
    featureA: Inputs("launchDarklyKey").chain(
      LaunchDarkly("feature-a", "default-value"),
    ),

    items: Group({
      first: _(1),
      last: _(1_000_000),
    }),
  },
).initialize()

console.log(results.url)

console.log(results.featureA)

Built-in Tasks

  • Hardcoded (often aliased as _): A task which always returns a hard-coded value.
  • AWSSecret: A task which loads a string secret from AWS Secret Manager. Must include an instance of awsManager in the Confidant context.
  • AWSJSONSecret: A task which loads a JSON secret from AWS Secret Manager. Must include an instance of awsManager in the Confidant context.
  • LaunchDarkly: A task which loads a feature flag when provided a launchDarklyUser object in the Confidant context.
  • Token is an abstract base class. Create custom Token tasks by inheriting from it and implementing the fetchToken method which returns a Promise<string>
  • DecodedJWT is a task which takes a JWT string and a function for converting the decoded object into a typed and validated data structure.
  • Inputs is a task which listens to other tasks by key name. When all those tasks are loaded (or updated), pass the values to a dependent task via .chain. Allows composition of tasks.
  • Group is a task which groups a set of tasks into a single object.

Add Logger

Provide a winston logger as the 3rd parameter to Confidant. Can be accessed as this.logger in custom Tasks.

Can be used to forward logs to 3rd party logging platforms.

import { createLogger, transports } from "winston"
import { Confidant, Task } from "@tdreyno/confidant"

class MyToken extends Token<MyTokenData> {
  constructor(
    confidant: Confidant<MyTokenData, Record<string, any>>,
    public url_: string,
    public username_: string,
    public password_: string,
  ) {
    super(confidant)
  }

  fetchToken(): Promise<string> {
    this.logger.log("My message")

    return fetch(this.url_, {
      username: this.username_,
      password: this.password_,
    })
  }
}

const results = await Confidant(
  {},
  {
    myToken: c => new MyToken(c, "url", "username", "password"),
  },
  {
    logger: createLogger({
      transports: [new transports.Console()],
    }),
  },
).initialize()

console.log(results.myToken)

Invalidate JWT

import { Confidant } from "@tdreyno/confidant"

const confidant = Confidant(
  {},
  {
    myJWT: MyJWT("url", "username", "password"),
  },
)

const results = await confidant.initialize()

await confidant.invalidate("myJWT")

const newValue = await confidant.get("myJWT")

FAQs

Package last updated on 12 Nov 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc