Skip to content

Commit c53b637

Browse files
authored
Release for TW-Extension v1.21 (#154)
Merge pull request #154 from madfish-solutions/development
2 parents 45ff1da + 6923fb0 commit c53b637

File tree

9 files changed

+639
-317
lines changed

9 files changed

+639
-317
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
"pino-pretty": "^4.7.1",
3333
"qs": "^6.10.3",
3434
"semaphore": "^1.1.0",
35+
"semver": "^7.6.0",
3536
"swagger-jsdoc": "^6.2.8",
3637
"swagger-ui-express": "^5.0.0",
3738
"yup": "^1.3.2"
Lines changed: 42 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { satisfies as versionSatisfiesRange } from 'semver';
2+
13
import { objectStorageMethodsFactory, redisClient } from '../redis';
24

35
/** Style properties names that are likely to be unnecessary for banners are skipped */
@@ -77,12 +79,16 @@ export const stylePropsNames = [
7779
];
7880
export type StylePropName = (typeof stylePropsNames)[number];
7981

80-
interface SliseAdStylesOverrides {
82+
interface AdStylesOverrides {
8183
parentDepth: number;
8284
style: Record<StylePropName, string>;
8385
}
8486

85-
export interface SliseAdPlacesRule {
87+
interface ExtVersionConstraints {
88+
extVersion: string;
89+
}
90+
91+
export interface AdPlacesRule extends ExtVersionConstraints {
8692
urlRegexes: string[];
8793
selector: {
8894
isMultiple: boolean;
@@ -91,11 +97,11 @@ export interface SliseAdPlacesRule {
9197
shouldUseDivWrapper: boolean;
9298
divWrapperStyle?: Record<StylePropName, string>;
9399
};
94-
stylesOverrides?: SliseAdStylesOverrides[];
100+
stylesOverrides?: AdStylesOverrides[];
95101
shouldHideOriginal?: boolean;
96102
}
97103

98-
export interface PermanentSliseAdPlacesRule {
104+
export interface PermanentAdPlacesRule extends ExtVersionConstraints {
99105
urlRegexes: string[];
100106
adSelector: {
101107
isMultiple: boolean;
@@ -115,48 +121,58 @@ export interface PermanentSliseAdPlacesRule {
115121
elementStyle?: Record<StylePropName, string>;
116122
divWrapperStyle?: Record<StylePropName, string>;
117123
elementToMeasureSelector?: string;
118-
stylesOverrides?: SliseAdStylesOverrides[];
124+
stylesOverrides?: AdStylesOverrides[];
119125
shouldHideOriginal?: boolean;
120126
}
121127

122-
export interface SliseAdProvidersByDomainRule {
128+
export interface AdProvidersByDomainRule extends ExtVersionConstraints {
123129
urlRegexes: string[];
124130
providers: string[];
125131
}
126132

127-
const SLISE_AD_PLACES_RULES_KEY = 'slise_ad_places_rules';
128-
const SLISE_AD_PROVIDERS_BY_SITES_KEY = 'slise_ad_providers_by_sites';
129-
const SLISE_AD_PROVIDERS_ALL_SITES_KEY = 'slise_ad_providers_all_sites';
130-
const SLISE_AD_PROVIDERS_LIST_KEY = 'slise_ad_providers_list';
131-
const PERMANENT_SLISE_AD_PLACES_RULES_KEY = 'permanent_slise_ad_places_rules';
133+
export interface AdProviderSelectorsRule extends ExtVersionConstraints {
134+
selectors: string[];
135+
}
136+
137+
export interface AdProviderForAllSitesRule extends ExtVersionConstraints {
138+
providers: string[];
139+
}
140+
141+
const AD_PLACES_RULES_KEY = 'ad_places_rules';
142+
const AD_PROVIDERS_BY_SITES_KEY = 'ad_providers_by_sites';
143+
const AD_PROVIDERS_ALL_SITES_KEY = 'ad_providers_all_sites';
144+
const AD_PROVIDERS_LIST_KEY = 'ad_providers_list';
145+
const PERMANENT_AD_PLACES_RULES_KEY = 'permanent_ad_places_rules';
132146
const PERMANENT_NATIVE_AD_PLACES_RULES_KEY = 'permanent_native_ad_places_rules';
133147

134-
export const sliseAdPlacesRulesMethods = objectStorageMethodsFactory<SliseAdPlacesRule[]>(
135-
SLISE_AD_PLACES_RULES_KEY,
136-
[]
137-
);
148+
export const adPlacesRulesMethods = objectStorageMethodsFactory<AdPlacesRule[]>(AD_PLACES_RULES_KEY, []);
138149

139-
export const sliseAdProvidersByDomainRulesMethods = objectStorageMethodsFactory<SliseAdProvidersByDomainRule[]>(
140-
SLISE_AD_PROVIDERS_BY_SITES_KEY,
150+
export const adProvidersByDomainRulesMethods = objectStorageMethodsFactory<AdProvidersByDomainRule[]>(
151+
AD_PROVIDERS_BY_SITES_KEY,
141152
[]
142153
);
143154

144-
export const sliseAdProvidersMethods = objectStorageMethodsFactory<string[]>(SLISE_AD_PROVIDERS_LIST_KEY, []);
155+
export const adProvidersMethods = objectStorageMethodsFactory<AdProviderSelectorsRule[]>(AD_PROVIDERS_LIST_KEY, []);
145156

146-
export const permanentSliseAdPlacesMethods = objectStorageMethodsFactory<PermanentSliseAdPlacesRule[]>(
147-
PERMANENT_SLISE_AD_PLACES_RULES_KEY,
157+
export const permanentAdPlacesMethods = objectStorageMethodsFactory<PermanentAdPlacesRule[]>(
158+
PERMANENT_AD_PLACES_RULES_KEY,
148159
[]
149160
);
150161

151-
export const permanentNativeAdPlacesMethods = objectStorageMethodsFactory<PermanentSliseAdPlacesRule[]>(
162+
export const permanentNativeAdPlacesMethods = objectStorageMethodsFactory<PermanentAdPlacesRule[]>(
152163
PERMANENT_NATIVE_AD_PLACES_RULES_KEY,
153164
[]
154165
);
155166

156-
export const getSliseAdProvidersForAllSites = async () => redisClient.smembers(SLISE_AD_PROVIDERS_ALL_SITES_KEY);
167+
export const getAdProvidersForAllSites = async () => redisClient.smembers(AD_PROVIDERS_ALL_SITES_KEY);
168+
169+
export const addAdProvidersForAllSites = async (providers: string[]) =>
170+
redisClient.sadd(AD_PROVIDERS_ALL_SITES_KEY, ...providers);
171+
172+
export const removeAdProvidersForAllSites = async (providers: string[]) =>
173+
redisClient.srem(AD_PROVIDERS_ALL_SITES_KEY, ...providers);
157174

158-
export const addSliseAdProvidersForAllSites = async (providers: string[]) =>
159-
redisClient.sadd(SLISE_AD_PROVIDERS_ALL_SITES_KEY, ...providers);
175+
const FALLBACK_VERSION = '0.0.0';
160176

161-
export const removeSliseAdProvidersForAllSites = async (providers: string[]) =>
162-
redisClient.srem(SLISE_AD_PROVIDERS_ALL_SITES_KEY, ...providers);
177+
export const filterByVersion = <T extends ExtVersionConstraints>(rules: T[], version?: string) =>
178+
rules.filter(({ extVersion }) => versionSatisfiesRange(version ?? FALLBACK_VERSION, extVersion));

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { getNotifications } from './notifications/utils/get-notifications.util';
2020
import { getParsedContent } from './notifications/utils/get-parsed-content.util';
2121
import { getPlatforms } from './notifications/utils/get-platforms.util';
2222
import { redisClient } from './redis';
23-
import { sliseRulesRouter } from './routers/slise-ad-rules';
23+
import { adRulesRouter } from './routers/slise-ad-rules';
2424
import { getABData } from './utils/ab-test';
2525
import { cancelAliceBobOrder } from './utils/alice-bob/cancel-alice-bob-order';
2626
import { createAliceBobOrder } from './utils/alice-bob/create-alice-bob-order';
@@ -328,7 +328,7 @@ app.get('/api/advertising-info', (_req, res) => {
328328
}
329329
});
330330

331-
app.use('/api/slise-ad-rules', sliseRulesRouter);
331+
app.use('/api/slise-ad-rules', adRulesRouter);
332332

333333
app.post('/api/magic-square-quest/start', async (req, res) => {
334334
try {

0 commit comments

Comments
 (0)