Package wisp.feature

Types

Link copied to clipboard
open class Attributes @JvmOverloads constructor(text: Map<String, String>, number: Map<String, Number>?, anonymous: Boolean)

Extra attributes to be used for evaluating features.

Link copied to clipboard
interface BooleanFeatureFlag : FeatureFlag<Boolean>
Link copied to clipboard
interface DoubleFeatureFlag : FeatureFlag<Double>
Link copied to clipboard
interface DynamicConfig

Interface for evaluating dynamic flags. Dynamic flags are similar to feature flags, but they don't support different variations for different keys.

Link copied to clipboard
interface EnumFeatureFlag<T : Enum<T>> : FeatureFlag<T>

A Enumeration feature flag, when evaluated returns T

Link copied to clipboard
open class Feature(name: String)

Typed feature string.

Link copied to clipboard
interface FeatureFlag<T : Any>
Link copied to clipboard
interface FeatureFlags : StrongFeatureFlags, LegacyFeatureFlags

Interface for evaluating feature flags.

Link copied to clipboard
object FeatureFlagValidation
Link copied to clipboard
interface IntFeatureFlag : FeatureFlag<Int>
Link copied to clipboard
interface JsonFeatureFlag<T : Any> : FeatureFlag<T>

A JSON feature flag, when evaluated returns T.

Link copied to clipboard
interface LegacyFeatureFlags
Link copied to clipboard
interface StringFeatureFlag : FeatureFlag<String>
Link copied to clipboard
interface StrongFeatureFlags
Link copied to clipboard
interface TrackerReference

Functions

Link copied to clipboard
fun <T> JsonAdapter<T>.fromSafeJson(value: String): T?
fun <T> JsonAdapter<T>.fromSafeJson(json: String, onUnknownFields: (JsonDataException) -> Unit): T?

Attempts to use JsonAdapter.failOnUnknown and logs any issues before falling back to ignoring the unknown fields.

Link copied to clipboard
inline fun <T : Enum<T>> DynamicConfig.getEnum(feature: Feature): T
inline fun <T : Enum<T>> FeatureFlags.getEnum(feature: Feature, key: String, attributes: Attributes = Attributes()): T
Link copied to clipboard
inline fun <T> DynamicConfig.getJson(feature: Feature): T
inline fun <T> FeatureFlags.getJson(feature: Feature, key: String, attributes: Attributes = Attributes()): T
Link copied to clipboard
fun <T> JsonAdapter<T>.toSafeJson(value: T): String
fun <T> JsonAdapter<T>.toSafeJson(value: T, onUnknownFields: (JsonDataException) -> Unit): String

Attempts to use JsonAdapter.failOnUnknown and logs any issues before falling back to ignoring the unknown fields.

Link copied to clipboard
inline fun <T : Enum<T>> DynamicConfig.trackEnum(feature: Feature, executor: Executor, noinline tracker: (T) -> Unit): TrackerReference
inline fun <T : Enum<T>> FeatureFlags.trackEnum(feature: Feature, key: String, attributes: Attributes = Attributes(), executor: Executor, noinline tracker: (T) -> Unit): TrackerReference
Link copied to clipboard
inline fun <T> DynamicConfig.trackJson(feature: Feature, executor: Executor, noinline tracker: (T) -> Unit): TrackerReference
inline fun <T> FeatureFlags.trackJson(feature: Feature, key: String, attributes: Attributes = Attributes(), executor: Executor, noinline tracker: (T) -> Unit): TrackerReference