Skip to content

Commit 998e9cc

Browse files
committed
refactor: move out import config into content-scope-features
1 parent e7e6721 commit 998e9cc

File tree

8 files changed

+32
-72
lines changed

8 files changed

+32
-72
lines changed

injected/entry-points/android.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,8 @@ function initCode() {
3030
debug: processedConfig.debug,
3131
});
3232

33-
const importConfig = {
34-
trackerLookup: import.meta.trackerLookup,
35-
injectName: import.meta.injectName,
36-
};
37-
3833
load({
3934
platform: processedConfig.platform,
40-
importConfig,
4135
site: processedConfig.site,
4236
bundledConfig: processedConfig.bundledConfig,
4337
messagingConfig: processedConfig.messagingConfig,

injected/entry-points/apple.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,8 @@ function initCode() {
4141
});
4242
}
4343

44-
const importConfig = {
45-
trackerLookup: import.meta.trackerLookup,
46-
injectName: import.meta.injectName,
47-
};
48-
4944
load({
5045
platform: processedConfig.platform,
51-
importConfig,
5246
site: processedConfig.site,
5347
bundledConfig: processedConfig.bundledConfig,
5448
messagingConfig: processedConfig.messagingConfig,

injected/entry-points/chrome.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ function init() {
5454
platform: {
5555
name: 'extension'
5656
},
57-
trackerLookup: ${JSON.stringify(trackerLookup)},
5857
site: ${JSON.stringify(siteObject)},
5958
documentOriginIsTracker: ${documentOriginIsTracker},
6059
bundledConfig: ${JSON.stringify(bundledConfig)}

injected/entry-points/extension-mv3.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,10 @@ import { computeLimitedSiteObject } from '../src/utils.js';
66

77
const secret = (crypto.getRandomValues(new Uint32Array(1))[0] / 2 ** 32).toString().replace('0.', '');
88

9-
const importConfig = {
10-
trackerLookup: import.meta.trackerLookup,
11-
injectName: import.meta.injectName,
12-
};
13-
149
load({
1510
platform: {
1611
name: 'extension',
1712
},
18-
importConfig,
1913
site: computeLimitedSiteObject(),
2014
// @ts-expect-error https://app.asana.com/0/1201614831475344/1203979574128023/f
2115
bundledConfig: $BUNDLED_CONFIG$,

injected/entry-points/integration.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,9 @@ async function initCode() {
8484
},
8585
});
8686

87-
const importConfig = {
88-
trackerLookup: processedConfig.trackerLookup,
89-
injectName: import.meta.injectName,
90-
};
91-
9287
load({
9388
// @ts-expect-error Types of property 'name' are incompatible.
9489
platform: processedConfig.platform,
95-
importConfig,
9690
site: processedConfig.site,
9791
messagingConfig: processedConfig.messagingConfig,
9892
});

injected/entry-points/windows.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,8 @@ function initCode() {
2828
},
2929
});
3030

31-
const importConfig = {
32-
trackerLookup: processedConfig.trackerLookup,
33-
injectName: import.meta.injectName,
34-
};
35-
3631
load({
3732
platform: processedConfig.platform,
38-
importConfig,
3933
site: processedConfig.site,
4034
bundledConfig: processedConfig.bundledConfig,
4135
messagingConfig: processedConfig.messagingConfig,

injected/src/content-feature.js

Lines changed: 25 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,6 @@ class ConfigParser {
3535
/** @type {any} */
3636
name;
3737

38-
/** @type {object | undefined} */
39-
#trackerLookup;
40-
41-
/** @type {boolean | undefined} */
42-
#documentOriginIsTracker;
43-
44-
/** @type {string} */
45-
#injectName;
46-
4738
/**
4839
* @param {any} name
4940
*/
@@ -57,15 +48,12 @@ class ConfigParser {
5748
initLoadArgs(loadArgs) {
5849
const { bundledConfig, site, platform } = loadArgs;
5950
this.#bundledConfig = bundledConfig;
60-
this.#injectName = loadArgs.importConfig.injectName;
6151
// If we have a bundled config, treat it as a regular config
6252
// This will be overriden by the remote config if it is available
6353
if (this.#bundledConfig) {
6454
const enabledFeatures = computeEnabledFeatures(bundledConfig, site.domain, platform.version);
6555
this.#featureSettings = parseFeatureSettings(bundledConfig, enabledFeatures);
6656
}
67-
this.#trackerLookup = loadArgs.importConfig.trackerLookup;
68-
this.#documentOriginIsTracker = isTrackerOrigin(this.#trackerLookup);
6957
}
7058

7159
/**
@@ -178,37 +166,12 @@ class ConfigParser {
178166
return result?.[featureKeyName];
179167
}
180168

181-
/**
182-
* @returns {object}
183-
**/
184-
get trackerLookup() {
185-
return this.#trackerLookup || {};
186-
}
187-
188169
/**
189170
* @returns {import('./utils.js').RemoteConfig | undefined}
190171
**/
191172
get bundledConfig() {
192173
return this.#bundledConfig;
193174
}
194-
195-
/**
196-
* @returns {boolean}
197-
*/
198-
get documentOriginIsTracker() {
199-
return !!this.#documentOriginIsTracker;
200-
}
201-
202-
set documentOriginIsTracker(value) {
203-
this.#documentOriginIsTracker = value;
204-
}
205-
206-
/**
207-
* @returns {string}
208-
*/
209-
get injectName() {
210-
return this.#injectName;
211-
}
212175
}
213176

214177
export default class ContentFeature extends ConfigParser {
@@ -222,10 +185,13 @@ export default class ContentFeature extends ConfigParser {
222185
/** @type {{ debug?: boolean, desktopModeEnabled?: boolean, forcedZoomEnabled?: boolean, featureSettings?: Record<string, unknown>, assets?: AssetConfig | undefined, site: Site, messagingConfig?: import('@duckduckgo/messaging').MessagingConfig } | null} */
223186
#args;
224187

225-
constructor(featureName) {
188+
/** @type {any} */
189+
#importConfig;
190+
constructor(featureName, importConfig) {
226191
super(featureName);
227192
this.#args = null;
228193
this.monitor = new PerformanceMonitor();
194+
this.#importConfig = importConfig;
229195
}
230196

231197
get isDebug() {
@@ -259,6 +225,27 @@ export default class ContentFeature extends ConfigParser {
259225
return this.#args?.assets;
260226
}
261227

228+
/**
229+
* @returns {object}
230+
**/
231+
get trackerLookup() {
232+
return this.#importConfig.trackerLookup || {};
233+
}
234+
235+
/**
236+
* @returns {string}
237+
*/
238+
get injectName() {
239+
return this.#importConfig.injectName;
240+
}
241+
242+
/**
243+
* @returns {boolean}
244+
*/
245+
get documentOriginIsTracker() {
246+
return isTrackerOrigin(this.trackerLookup);
247+
}
248+
262249
/**
263250
* @deprecated as we should make this internal to the class and not used externally
264251
* @return {MessagingContext}

injected/src/content-scope-features.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ const isHTMLDocument =
2323
* @property {import('./content-feature').Site} site
2424
* @property {import('./utils.js').Platform} platform
2525
* @property {import('./utils.js').RemoteConfig} bundledConfig
26-
* @property {object} importConfig - contains trackerLookup and injectName, trackerLookup is provided currently only by the extension
2726
* @property {import('@duckduckgo/messaging').MessagingConfig} [messagingConfig]
2827
* @property {string} [messageSecret] - optional, used in the messageBridge creation
2928
*/
@@ -37,11 +36,16 @@ export function load(args) {
3736
return;
3837
}
3938

40-
const featureNames = typeof args.importConfig.injectName === 'string' ? platformSupport[args.importConfig.injectName] : [];
39+
const importConfig = {
40+
trackerLookup: import.meta.trackerLookup,
41+
injectName: import.meta.injectName,
42+
};
43+
44+
const featureNames = typeof importConfig.injectName === 'string' ? platformSupport[importConfig.injectName] : [];
4145

4246
for (const featureName of featureNames) {
4347
const ContentFeature = platformFeatures['ddg_feature_' + featureName];
44-
const featureInstance = new ContentFeature(featureName);
48+
const featureInstance = new ContentFeature(featureName, importConfig);
4549
featureInstance.callLoad(args);
4650
features.push({ featureName, featureInstance });
4751
}

0 commit comments

Comments
 (0)