(
experimentId: ExperimentId,
enabled: boolean | null | undefined
)
| 138 | } |
| 139 | |
| 140 | async setOverride( |
| 141 | experimentId: ExperimentId, |
| 142 | enabled: boolean | null | undefined |
| 143 | ): Promise<void> { |
| 144 | await this.ensureInitialized(); |
| 145 | assert(experimentId in EXPERIMENTS, `Unknown experimentId: ${experimentId}`); |
| 146 | assert( |
| 147 | EXPERIMENTS[experimentId].userOverridable === true, |
| 148 | `Experiment ${experimentId} does not support user overrides` |
| 149 | ); |
| 150 | assert( |
| 151 | enabled == null || typeof enabled === "boolean", |
| 152 | `Experiment override for ${experimentId} must be boolean | null | undefined` |
| 153 | ); |
| 154 | |
| 155 | if (!this.isExperimentSupported(experimentId)) { |
| 156 | this.overrides.delete(experimentId); |
| 157 | this.telemetryService.setFeatureFlagVariant(this.getFlagKey(experimentId), null); |
| 158 | await this.writeCacheToDisk(); |
| 159 | return; |
| 160 | } |
| 161 | |
| 162 | if (enabled == null) { |
| 163 | this.overrides.delete(experimentId); |
| 164 | const cached = this.cachedVariants.get(experimentId); |
| 165 | this.telemetryService.setFeatureFlagVariant( |
| 166 | this.getFlagKey(experimentId), |
| 167 | cached?.value ?? null |
| 168 | ); |
| 169 | } else { |
| 170 | this.overrides.set(experimentId, enabled); |
| 171 | this.telemetryService.setFeatureFlagVariant(this.getFlagKey(experimentId), enabled); |
| 172 | } |
| 173 | |
| 174 | await this.writeCacheToDisk(); |
| 175 | } |
| 176 | |
| 177 | getExperimentValue(experimentId: ExperimentId): ExperimentValue { |
| 178 | assert(experimentId in EXPERIMENTS, `Unknown experimentId: ${experimentId}`); |
no test coverage detected