A lightweight MoonBit feature flag and progressive rollout decision engine.
let promo_flag : @moonflagkit.Flag = {
name: "promo_banner",
enabled: true,
default_enabled: false,
rollout: 100,
salt: "promo_salt",
rules: [
@moonflagkit.AllowVariant("vip_user", "treatment_b"),
@moonflagkit.WhenVariant("plan", In, "pro,enterprise", "treatment_a")
],
is_multivariate: true,
variants: [
{ name: "control", weight: 50 },
{ name: "treatment_a", weight: 30 },
{ name: "treatment_b", weight: 20 }
],
default_variant: "control"
}
let context : @moonflagkit.EvalContext = {
subject: "user_bob",
environment: "production",
attributes: [
{ key: "plan", value: "pro" }
]
}
let decision = @moonflagkit.evaluate(promo_flag, context)
println(@moonflagkit.explain(decision)){
"flags": [
{
"name": "multivariate_promo_banner",
"enabled": true,
"default_enabled": false,
"rollout": 100,
"salt": "promo_salt",
"is_multivariate": true,
"default_variant": "control",
"variants": [
{ "name": "control", "weight": 50 },
{ "name": "treatment_red", "weight": 30 },
{ "name": "treatment_blue", "weight": 20 }
],
"rules": [
{ "type": "AllowVariant", "subject": "vip_user_1", "variant": "treatment_blue" },
{ "type": "WhenVariant", "key": "plan", "op": "In", "value": "pro,enterprise", "variant": "treatment_red" }
]
}
]
}# 对项目进行类型检查
moon check
# 代码格式化自检
moon fmt --deny-warn
# 自动生成公共接口 .mbti 自检
moon info --deny-warn
# 运行所有单元与集成测试
moon test
# 运行 CLI 演示程序
moon run cmd/mainq0w1ertyuiop/moonflagkitpub struct JsonConfigProvider {
json_string : String
}A lightweight MoonBit feature flag and progressive rollout decision engine.