Skip to content

Commit b4c9002

Browse files
committed
refactor(experiment): remove enable-animethemes-api feature flag
1 parent 712e622 commit b4c9002

6 files changed

Lines changed: 8 additions & 35 deletions

File tree

README.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,7 @@
2323
cp .env.example .env
2424
```
2525
Fill in provider URLs/keys (`TMDB`, `TRAKT`, `ANIME_THEMES`, GrowthBook, Mongo creds, etc.). Keep secrets out of source control.
26-
`ANIME_THEMES` is the active base URL for AnimeThemes lookups. `THEMES` is retained only as a legacy placeholder while the compatibility facade in `src/service/theme/` remains in place.
27-
GrowthBook flag `enable-animethemes-api` switches `ThemeService` between the legacy `THEMES` endpoint and the AnimeThemes API during rollout.
26+
`ANIME_THEMES` is the active base URL for AnimeThemes lookups.
2827
3. **Install dependencies** (cached by Deno on demand)
2928
```bash
3029
deno task cache

src/experiment/experiment.service.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ export class ExperimentService implements OnAppClose {
3737
AppFeatures,
3838
| 'news-refactor-api'
3939
| 'enable-analytics'
40-
| 'enable-animethemes-api'
4140
| 'episode-align-title-sim'
4241
| 'episodes-diagnostics'
4342
| 'enable-skyhook-source'

src/experiment/experiment.types.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ export type AppFeatures = {
77
'platform-source'?: PlatformSource;
88
'news-refactor-api': boolean;
99
'enable-analytics': boolean;
10-
'enable-animethemes-api'?: boolean;
1110
// Numeric threshold for fuzzy title alignment (0..1). If absent, fallback disabled
1211
'episode-align-title-sim'?: number;
1312
// Enable emitting diagnostics on episodes response

src/package/series/repository/series.repository.aggregation.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ describe.skip('SeriesRepository aggregation', () => {
257257
mocks.services.arm,
258258
mocks.services.thexem,
259259
mocks.services.animeThemes,
260-
createMockExperiment({ 'enable-animethemes-api': true }),
260+
createMockExperiment({}),
261261
logger,
262262
);
263263
}

src/package/series/repository/series.resolver.test.ts

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,9 @@ const animeThemesLookup: AnimeThemesLookupModel = {
119119
}],
120120
};
121121

122-
function createResolver(flagEnabled: boolean) {
122+
function createResolver() {
123123
const { logger } = createMockLogger();
124-
const experiment = createMockExperiment({
125-
'enable-animethemes-api': flagEnabled,
126-
});
124+
const experiment = createMockExperiment({});
127125
const getThemesForAnime = spy(async () => animeThemesLookup);
128126

129127
const resolver = new SeriesResolver(
@@ -146,17 +144,8 @@ function createResolver(flagEnabled: boolean) {
146144
}
147145

148146
describe('SeriesResolver', () => {
149-
it('skips AnimeThemes when enable-animethemes-api is disabled', async () => {
150-
const { resolver, getThemesForAnime } = createResolver(false);
151-
152-
const result = await resolver.resolve({ anilist: 400 });
153-
154-
assertSpyCalls(getThemesForAnime, 0);
155-
assertEquals('animethemes' in result ? result.animethemes : [], []);
156-
});
157-
158-
it('uses AnimeThemes when enable-animethemes-api is enabled', async () => {
159-
const { resolver, getThemesForAnime } = createResolver(true);
147+
it('resolves AnimeThemes correctly', async () => {
148+
const { resolver, getThemesForAnime } = createResolver();
160149

161150
const result = await resolver.resolve({ anilist: 400 });
162151

@@ -169,9 +158,7 @@ describe('SeriesResolver', () => {
169158

170159
it('throws SeriesNotFoundError when no relation can be resolved', async () => {
171160
const { logger } = createMockLogger();
172-
const experiment = createMockExperiment({
173-
'enable-animethemes-api': false,
174-
});
161+
const experiment = createMockExperiment({});
175162

176163
const resolver = new SeriesResolver(
177164
{ getShow: async () => undefined } as unknown as TraktService,
@@ -199,9 +186,7 @@ describe('SeriesResolver', () => {
199186

200187
it('throws SeriesArmLookupError when ARM lookup fails upstream', async () => {
201188
const { logger } = createMockLogger();
202-
const experiment = createMockExperiment({
203-
'enable-animethemes-api': false,
204-
});
189+
const experiment = createMockExperiment({});
205190
const upstreamError = new Error('ARM timeout');
206191

207192
const resolver = new SeriesResolver(

src/package/series/repository/series.resolver.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -168,15 +168,6 @@ export class SeriesResolver {
168168
if (!malId) {
169169
return undefined;
170170
}
171-
if (!this.experiment.isEnabled('enable-animethemes-api')) {
172-
this.logger.instance.info(
173-
'Skipping AnimeThemes fetch because feature flag is disabled',
174-
{
175-
malId,
176-
},
177-
);
178-
return undefined;
179-
}
180171
try {
181172
return await this.animeThemes.getThemesForAnime(malId);
182173
} catch (error) {

0 commit comments

Comments
 (0)