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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@tehw0lf/yaft

v0.0.5

Published

YaFT - Feature Toggles using Go&PostgreSQL or any source!

Readme

YaFT for TypeScript


This provides a client for YaFT which aims to bring simple feature toggles for Methods and Classes to Typescript.


Installation

npm install --save @tehw0lf/yaft

Initialization

To be able to use YaFT, implement and set a FeatureProvider on the abstract Base Class, or copy and adapt one of the example providers.

In this example a local json file with the Feature data type is used, but in theory any data type can be used since the Provider implements the isEnabled function which can be overridden as necessary.

import { FeatureToggleBase } from "@tehw0lf/yaft";
import { LocalStorageFeatureProvider } from "./provider";

FeatureToggleBase.featureProvider = new LocalStorageFeatureProvider(
  "./test-feature.json"
);

This repo contains examples for two provider types: API Providers for boolean and Feature and LocalStorage Providers for boolean and Feature. The APi providers are designed to work with the default Go implementation of YaFT, but can be implemented through their interface:

export interface FeatureProvider<T> {
  apiUrl?: string;
  baseUUID?: string;
  data: Record<string, T>;
  initConfig(configPathOrUrl: string): void;
  isEnabled(key: string): boolean;
}

Usage

To manage anything with a feature toggle, decorate it with the feature's key:

import { FeatureToggle } from "@tehw0lf/yaft";

@FeatureToggle("myKey")
class MyClass {}
import { FeatureToggle } from "@tehw0lf/yaft";

@FeatureToggle("myKey")
myMethod() {}

If the feature is enabled, the original class/method will be used.

If the feature is disabled, a fallback can be provided:

import { FeatureToggle } from "@tehw0lf/yaft";

@FeatureToggle("myKey", MyFallbackClass)
class MyClass {}
import { FeatureToggle } from "@tehw0lf/yaft";

@FeatureToggle("myKey", myFallbackMethod)
myMethod() {}

Otherwise, or if the feature does not exist, the class/method gets replaced with an empty object/an empty function.

Collection Hash

The default YaFT API provides a collection hash to efficiently check whether the locally cached features are still up to date. See API provider examples for details. This can be scheduled to automatically update feature data in the background.

Feature Data Type

The default data type for YaFT is Feature. A feature has a key string, a value string representing a boolean and optional activeAt and disabledAt date strings.

export type Feature = {
  key: string;
  value: string;
  activeAt: string;
  disabledAt: string;
};

Licenses

  • Code: MIT License
  • Logo/Branding: All rights reserved