A simple OpenFeature provider intended for demos and as a test stub.

const provider = new TypedInMemoryProvider({
'my-flag': {
variants: { on: true, off: false },
defaultVariant: 'on',
contextEvaluator: (ctx) => ctx?.user?.id === '123' ? 'on' : 'off',
disabled: false,
},
});

const flags = {
'my-flag': {
variants: { on: true, off: false },
defaultVariant: 'on',
contextEvaluator: (ctx) => ctx?.user?.id === '123' ? 'on' : 'off',
disabled: false,
},
} as const; // 'as const' needed to preserve the `defaultVariant` narrow literal type rather than `string`
const provider = new TypedInMemoryProvider(flags);

Type Parameters

  • T extends Record<string, FlagVariants<string>> = Record<string, FlagVariants<string>>

Hierarchy (view full)

Constructors

Properties

An event emitter for ProviderEvents.

ProviderEvents

metadata: {
    name: "in-memory";
} = ...
runsOn: "client" = 'client'

Represents where the provider is intended to be run. If defined, the SDK will enforce that the defined paradigm at runtime.

Methods

  • Overwrites the configured flags.

    Type Parameters

    • U extends Record<string, FlagVariants<string>> = Record<string, FlagVariants<string>>

    Parameters

    • flagConfiguration: FlagConfiguration<U>

      new flag configuration

    Returns Promise<void>

    await provider.putConfiguration({
    'my-flag': {
    variants: { on: true, off: false },
    defaultVariant: 'on',
    contextEvaluator: (ctx) => ctx?.user?.id === '123' ? 'on' : 'off',
    disabled: false,
    },
    });

    const flags = {
    'my-flag': {
    variants: { on: true, off: false },
    defaultVariant: 'on',
    contextEvaluator: (ctx) => ctx?.user?.id === '123' ? 'on' : 'off',
    disabled: false,
    },
    } as const; // 'as const' needed to preserve the `defaultVariant` narrow literal type rather than `string`
    await provider.putConfiguration(flags);