@temple-wallet/extension-ads 8.1.0-dev.4 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ads-actions/helpers.d.ts +17 -0
- package/dist/ads-actions/helpers.js +96 -0
- package/dist/ads-actions/helpers.js.map +1 -0
- package/dist/ads-actions/index.d.ts +3 -0
- package/dist/ads-actions/index.js +63 -0
- package/dist/ads-actions/index.js.map +1 -0
- package/dist/ads-actions/process-elements-to-hide-or-remove-rule.d.ts +3 -0
- package/dist/ads-actions/process-elements-to-hide-or-remove-rule.js +19 -0
- package/dist/ads-actions/process-elements-to-hide-or-remove-rule.js.map +1 -0
- package/dist/ads-actions/process-permanent-rule.d.ts +3 -0
- package/dist/ads-actions/process-permanent-rule.js +143 -0
- package/dist/ads-actions/process-permanent-rule.js.map +1 -0
- package/dist/ads-actions/process-providers-ads.d.ts +3 -0
- package/dist/ads-actions/process-providers-ads.js +137 -0
- package/dist/ads-actions/process-providers-ads.js.map +1 -0
- package/dist/ads-actions/process-rule.d.ts +3 -0
- package/dist/ads-actions/process-rule.js +98 -0
- package/dist/ads-actions/process-rule.js.map +1 -0
- package/dist/ads-configuration.d.ts +31 -0
- package/dist/ads-configuration.js +30 -0
- package/dist/ads-configuration.js.map +1 -0
- package/dist/constants.d.ts +11 -0
- package/dist/constants.js +12 -0
- package/dist/constants.js.map +1 -0
- package/dist/execute-ads-actions/ads-views/index.d.ts +3 -0
- package/dist/execute-ads-actions/ads-views/index.js +4 -0
- package/dist/execute-ads-actions/ads-views/index.js.map +1 -0
- package/dist/execute-ads-actions/ads-views/make-ads-tw-view.d.ts +3 -0
- package/dist/execute-ads-actions/ads-views/make-ads-tw-view.js +40 -0
- package/dist/execute-ads-actions/ads-views/make-ads-tw-view.js.map +1 -0
- package/dist/execute-ads-actions/ads-views/make-extension-iframe-view.d.ts +3 -0
- package/dist/execute-ads-actions/ads-views/make-extension-iframe-view.js +22 -0
- package/dist/execute-ads-actions/ads-views/make-extension-iframe-view.js.map +1 -0
- package/dist/execute-ads-actions/ads-views/make-tkey-ad.d.ts +3 -0
- package/dist/execute-ads-actions/ads-views/make-tkey-ad.js +38 -0
- package/dist/execute-ads-actions/ads-views/make-tkey-ad.js.map +1 -0
- package/dist/execute-ads-actions/index.d.ts +2 -0
- package/dist/execute-ads-actions/index.js +23 -0
- package/dist/execute-ads-actions/index.js.map +1 -0
- package/dist/execute-ads-actions/observing.d.ts +1 -0
- package/dist/execute-ads-actions/observing.js +129 -0
- package/dist/execute-ads-actions/observing.js.map +1 -0
- package/dist/execute-ads-actions/override-element-styles.d.ts +2 -0
- package/dist/execute-ads-actions/override-element-styles.js +6 -0
- package/dist/execute-ads-actions/override-element-styles.js.map +1 -0
- package/dist/execute-ads-actions/process-insert-ad-action.d.ts +2 -0
- package/dist/execute-ads-actions/process-insert-ad-action.js +153 -0
- package/dist/execute-ads-actions/process-insert-ad-action.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +14 -12
- package/dist/index.js.map +1 -0
- package/dist/render-ads-stack.d.ts +7 -0
- package/dist/render-ads-stack.js +156 -0
- package/dist/render-ads-stack.js.map +1 -0
- package/dist/temple-wallet-api.d.ts +23 -0
- package/dist/temple-wallet-api.js +67 -0
- package/dist/temple-wallet-api.js.map +1 -0
- package/dist/transform-raw-rules.d.ts +3 -0
- package/dist/transform-raw-rules.js +137 -0
- package/dist/transform-raw-rules.js.map +1 -0
- package/dist/types/ad-view.d.ts +7 -0
- package/dist/types/ad-view.js +2 -0
- package/dist/types/ad-view.js.map +1 -0
- package/dist/types/ads-actions.d.ts +56 -0
- package/dist/types/ads-actions.js +15 -0
- package/dist/types/ads-actions.js.map +1 -0
- package/dist/types/ads-meta.d.ts +19 -0
- package/dist/types/ads-meta.js +2 -0
- package/dist/types/ads-meta.js.map +1 -0
- package/dist/types/ads-provider.d.ts +8 -0
- package/dist/types/ads-provider.js +9 -0
- package/dist/types/ads-provider.js.map +1 -0
- package/dist/types/ads-rules.d.ts +26 -0
- package/dist/types/ads-rules.js +2 -0
- package/dist/types/ads-rules.js.map +1 -0
- package/dist/types/temple-wallet-api.d.ts +78 -0
- package/dist/types/temple-wallet-api.js +2 -0
- package/dist/types/temple-wallet-api.js.map +1 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.js +4 -0
- package/dist/utils.js.map +1 -0
- package/package.json +3 -2
- package/src/ads-actions/helpers.ts +2 -36
- package/src/ads-actions/process-permanent-rule.ts +3 -5
- package/src/ads-actions/process-providers-ads.ts +2 -28
- package/src/execute-ads-actions/observing.ts +1 -3
- package/src/execute-ads-actions/process-insert-ad-action.ts +4 -24
- package/src/render-ads-stack.ts +2 -10
- package/src/temple-wallet-api.ts +2 -1
- package/src/types/ads-actions.ts +0 -1
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { isEqual } from 'lodash';
|
|
13
|
+
import { CRYPTO_CATEGORY_NAME } from './constants';
|
|
14
|
+
export const transformRawRules = (location, rules) => {
|
|
15
|
+
const { adPlacesRulesForAllDomains, providersRulesForAllDomains, providersSelectors, providersNegativeSelectors = {}, providersToReplaceAtAllSites, permanentAdPlacesRulesForAllDomains, permanentNativeAdPlacesRulesForAllDomains = {}, adsReplaceUrlsBlacklist = [], elementsToHideOrRemoveRules = {}, providersCategories = {}, timestamp } = rules;
|
|
16
|
+
const { hostname, href } = location;
|
|
17
|
+
if (adsReplaceUrlsBlacklist.some(regex => new RegExp(regex).test(href))) {
|
|
18
|
+
return {
|
|
19
|
+
adPlacesRules: [],
|
|
20
|
+
permanentAdPlacesRules: [],
|
|
21
|
+
providersSelectors: [],
|
|
22
|
+
providersNegativeSelectors: [],
|
|
23
|
+
elementsToHideOrRemoveRules: [],
|
|
24
|
+
timestamp
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const hrefWithoutHash = href.replace(/#.*$/, '');
|
|
28
|
+
const hrefMatchPredicate = (regex) => {
|
|
29
|
+
const hrefToTest = regex.source.includes('#') ? href : hrefWithoutHash;
|
|
30
|
+
return regex.test(hrefToTest);
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
adPlacesRules: buildAdPlacesRules(hostname, hrefMatchPredicate, adPlacesRulesForAllDomains),
|
|
34
|
+
permanentAdPlacesRules: buildPermanentAdPlacesRules(hostname, hrefMatchPredicate, permanentAdPlacesRulesForAllDomains, permanentNativeAdPlacesRulesForAllDomains),
|
|
35
|
+
providersSelectors: buildProvidersSelectors(hostname, hrefMatchPredicate, providersRulesForAllDomains, providersSelectors, providersToReplaceAtAllSites, providersCategories),
|
|
36
|
+
providersNegativeSelectors: buildProvidersSelectors(hostname, hrefMatchPredicate, providersRulesForAllDomains, providersNegativeSelectors, providersToReplaceAtAllSites, providersCategories),
|
|
37
|
+
elementsToHideOrRemoveRules: buildElementsToHideOrRemoveRules(hostname, hrefMatchPredicate, elementsToHideOrRemoveRules),
|
|
38
|
+
timestamp
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
const buildElementsToHideOrRemoveRules = (hostname, hrefMatchPredicate, elementsToHideOrRemoveRules) => {
|
|
42
|
+
var _a;
|
|
43
|
+
return ((_a = elementsToHideOrRemoveRules[hostname]) !== null && _a !== void 0 ? _a : [])
|
|
44
|
+
.map((_a) => {
|
|
45
|
+
var { urlRegexes } = _a, restRuleProps = __rest(_a, ["urlRegexes"]);
|
|
46
|
+
return (Object.assign(Object.assign({}, restRuleProps), { urlRegexes: urlRegexes.map(regex => new RegExp(regex)) }));
|
|
47
|
+
})
|
|
48
|
+
.filter(({ urlRegexes }) => urlRegexes.some(hrefMatchPredicate));
|
|
49
|
+
};
|
|
50
|
+
const buildAdPlacesRules = (hostname, hrefMatchPredicate, adPlacesRulesForAllDomains) => {
|
|
51
|
+
var _a;
|
|
52
|
+
const adPlacesRules = ((_a = adPlacesRulesForAllDomains[hostname]) !== null && _a !== void 0 ? _a : []).map((_a) => {
|
|
53
|
+
var { urlRegexes } = _a, restRuleProps = __rest(_a, ["urlRegexes"]);
|
|
54
|
+
return (Object.assign(Object.assign({}, restRuleProps), { urlRegexes: urlRegexes.map(regex => new RegExp(regex)) }));
|
|
55
|
+
});
|
|
56
|
+
const aggregatedRelatedAdPlacesRules = adPlacesRules.reduce((acc, _a) => {
|
|
57
|
+
var { urlRegexes, selector } = _a, restProps = __rest(_a, ["urlRegexes", "selector"]);
|
|
58
|
+
if (!urlRegexes.some(hrefMatchPredicate))
|
|
59
|
+
return acc;
|
|
60
|
+
const { cssString } = selector, restSelectorProps = __rest(selector, ["cssString"]);
|
|
61
|
+
const ruleToComplementIndex = acc.findIndex((_a) => {
|
|
62
|
+
var { selector: candidateSelector } = _a, candidateRestProps = __rest(_a, ["selector"]);
|
|
63
|
+
const { cssString: _candidateCssString } = candidateSelector, restCandidateSelectorProps = __rest(candidateSelector, ["cssString"]);
|
|
64
|
+
return isEqual(restSelectorProps, restCandidateSelectorProps) && isEqual(restProps, candidateRestProps);
|
|
65
|
+
});
|
|
66
|
+
if (ruleToComplementIndex === -1) {
|
|
67
|
+
acc.push(Object.assign({ selector }, restProps));
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
acc[ruleToComplementIndex].selector.cssString += ', '.concat(cssString);
|
|
71
|
+
}
|
|
72
|
+
return acc;
|
|
73
|
+
}, []);
|
|
74
|
+
return aggregatedRelatedAdPlacesRules;
|
|
75
|
+
};
|
|
76
|
+
const makePermanentAdRuleTransformationFn = (isNative) => (_a) => {
|
|
77
|
+
var { urlRegexes, elementToMeasureSelector, elementsToMeasureSelectors } = _a, restRuleProps = __rest(_a, ["urlRegexes", "elementToMeasureSelector", "elementsToMeasureSelectors"]);
|
|
78
|
+
return (Object.assign(Object.assign({}, restRuleProps), { urlRegexes: urlRegexes.map(regex => new RegExp(regex)), isNative, elementsToMeasureSelectors: elementsToMeasureSelectors !== null && elementsToMeasureSelectors !== void 0 ? elementsToMeasureSelectors : (elementToMeasureSelector ? { width: elementToMeasureSelector, height: elementToMeasureSelector } : undefined) }));
|
|
79
|
+
};
|
|
80
|
+
const buildPermanentAdPlacesRules = (hostname, hrefMatchPredicate, permanentAdPlacesRulesForAllDomains, permanentNativeAdPlacesRulesForAllDomains = {}) => {
|
|
81
|
+
var _a, _b;
|
|
82
|
+
const rawPermanentAdPlacesRules = (_a = permanentAdPlacesRulesForAllDomains[hostname]) !== null && _a !== void 0 ? _a : [];
|
|
83
|
+
const rawPermanentNativeAdPlacesRules = (_b = permanentNativeAdPlacesRulesForAllDomains[hostname]) !== null && _b !== void 0 ? _b : [];
|
|
84
|
+
const permanentAdPlacesRules = rawPermanentAdPlacesRules
|
|
85
|
+
.map(makePermanentAdRuleTransformationFn(false))
|
|
86
|
+
.concat(rawPermanentNativeAdPlacesRules.map(makePermanentAdRuleTransformationFn(true)));
|
|
87
|
+
return permanentAdPlacesRules.filter(({ urlRegexes }) => urlRegexes.some(hrefMatchPredicate));
|
|
88
|
+
};
|
|
89
|
+
function quickJoinSelectors(selectors) {
|
|
90
|
+
let result = '';
|
|
91
|
+
selectors.forEach(selector => {
|
|
92
|
+
result += selector + ', ';
|
|
93
|
+
});
|
|
94
|
+
if (result) {
|
|
95
|
+
result = result.slice(0, -2);
|
|
96
|
+
}
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
const buildProvidersSelectors = (hostname, hrefMatchPredicate, providersRulesForAllDomains, providersSelectors, providersToReplaceAtAllSites, providersCategories) => {
|
|
100
|
+
var _a;
|
|
101
|
+
const providersRulesByHostname = ((_a = providersRulesForAllDomains[hostname]) !== null && _a !== void 0 ? _a : []).map((_a) => {
|
|
102
|
+
var { urlRegexes } = _a, restRuleProps = __rest(_a, ["urlRegexes"]);
|
|
103
|
+
return (Object.assign(Object.assign({}, restRuleProps), { urlRegexes: urlRegexes.map(regex => new RegExp(regex)) }));
|
|
104
|
+
});
|
|
105
|
+
const relatedProvidersRulesByUrl = providersRulesByHostname.filter(({ urlRegexes }) => urlRegexes.some(hrefMatchPredicate));
|
|
106
|
+
const alreadyProcessedProviders = new Set();
|
|
107
|
+
const adsSelectors = {};
|
|
108
|
+
const handleProvider = (provider) => {
|
|
109
|
+
var _a, _b;
|
|
110
|
+
if (alreadyProcessedProviders.has(provider))
|
|
111
|
+
return;
|
|
112
|
+
const categoriesSlug = ((_a = providersCategories[provider]) !== null && _a !== void 0 ? _a : [CRYPTO_CATEGORY_NAME]).join('|');
|
|
113
|
+
const newSelectors = (_b = providersSelectors[provider]) !== null && _b !== void 0 ? _b : [];
|
|
114
|
+
newSelectors.forEach(selector => {
|
|
115
|
+
const { selector: cssString, parentDepth } = typeof selector === 'string' ? { selector, parentDepth: 0 } : selector;
|
|
116
|
+
if (!adsSelectors[categoriesSlug]) {
|
|
117
|
+
adsSelectors[categoriesSlug] = {};
|
|
118
|
+
}
|
|
119
|
+
const sameCategoriesAdsSelectors = adsSelectors[categoriesSlug];
|
|
120
|
+
if (!sameCategoriesAdsSelectors[parentDepth]) {
|
|
121
|
+
sameCategoriesAdsSelectors[parentDepth] = new Set();
|
|
122
|
+
}
|
|
123
|
+
sameCategoriesAdsSelectors[parentDepth].add(cssString);
|
|
124
|
+
});
|
|
125
|
+
alreadyProcessedProviders.add(provider);
|
|
126
|
+
};
|
|
127
|
+
providersToReplaceAtAllSites.forEach(handleProvider);
|
|
128
|
+
relatedProvidersRulesByUrl.forEach(({ providers }) => providers.forEach(handleProvider));
|
|
129
|
+
return Object.entries(adsSelectors)
|
|
130
|
+
.map(([categoriesSlug, sameCategoriesSelectors]) => Object.entries(sameCategoriesSelectors).map(([parentDepth, selectors]) => ({
|
|
131
|
+
parentDepth: Number(parentDepth),
|
|
132
|
+
selector: quickJoinSelectors(selectors),
|
|
133
|
+
categories: categoriesSlug.split('|')
|
|
134
|
+
})))
|
|
135
|
+
.flat();
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=transform-raw-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-raw-rules.js","sourceRoot":"","sources":["../src/transform-raw-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ad-view.js","sourceRoot":"","sources":["../../src/types/ad-view.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { StringRecord } from 'src/utils';
|
|
2
|
+
import { AdMetadata } from './ads-meta';
|
|
3
|
+
import type { AdStylesOverrides, RawPermanentAdPlacesRule } from './temple-wallet-api';
|
|
4
|
+
export declare enum AdActionType {
|
|
5
|
+
ReplaceAllChildren = "replace-all-children",
|
|
6
|
+
ReplaceElement = "replace-element",
|
|
7
|
+
SimpleInsertAd = "simple-insert-ad",
|
|
8
|
+
RemoveElement = "remove-element",
|
|
9
|
+
HideElement = "hide-element"
|
|
10
|
+
}
|
|
11
|
+
export declare enum AdType {
|
|
12
|
+
Permanent = "permanent",
|
|
13
|
+
SlotReplacement = "slot-replacement",
|
|
14
|
+
ProviderReplacement = "provider-replacement"
|
|
15
|
+
}
|
|
16
|
+
interface AdActionBase {
|
|
17
|
+
type: AdActionType;
|
|
18
|
+
}
|
|
19
|
+
interface InsertAdActionProps extends Pick<RawPermanentAdPlacesRule, 'wrapperStyle' | 'wrapperType' | 'colsAfter' | 'colsBefore' | 'colspan'> {
|
|
20
|
+
/** A value of 'number' type stands for the value with respective index in `BANNER_ADS_META`. It is done to shorten
|
|
21
|
+
* ads stack Iframe URL search parameters.
|
|
22
|
+
*/
|
|
23
|
+
adsMetadata: (number | AdMetadata)[];
|
|
24
|
+
elementStyle?: StringRecord<string>;
|
|
25
|
+
stylesOverrides?: AdStylesOverrides[];
|
|
26
|
+
originalWidth: number;
|
|
27
|
+
originalHeight: number;
|
|
28
|
+
}
|
|
29
|
+
export interface ReplaceAllChildrenWithAdAction extends AdActionBase, InsertAdActionProps {
|
|
30
|
+
type: AdActionType.ReplaceAllChildren;
|
|
31
|
+
parent: HTMLElement;
|
|
32
|
+
}
|
|
33
|
+
export interface ReplaceElementWithAdAction extends AdActionBase, InsertAdActionProps {
|
|
34
|
+
type: AdActionType.ReplaceElement;
|
|
35
|
+
element: HTMLElement;
|
|
36
|
+
}
|
|
37
|
+
export interface SimpleInsertAdAction extends AdActionBase, InsertAdActionProps {
|
|
38
|
+
type: AdActionType.SimpleInsertAd;
|
|
39
|
+
parent: HTMLElement;
|
|
40
|
+
insertionIndex: number;
|
|
41
|
+
isSiblingReplacement: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface RemoveElementAction extends AdActionBase {
|
|
44
|
+
type: AdActionType.RemoveElement;
|
|
45
|
+
element: HTMLElement;
|
|
46
|
+
}
|
|
47
|
+
export interface HideElementAction extends AdActionBase {
|
|
48
|
+
type: AdActionType.HideElement;
|
|
49
|
+
element: HTMLElement;
|
|
50
|
+
}
|
|
51
|
+
export type InsertAdAction = ReplaceAllChildrenWithAdAction | ReplaceElementWithAdAction | SimpleInsertAdAction;
|
|
52
|
+
export type OmitAdInAction<T extends InsertAdActionProps> = Omit<T, 'adsMetadata' | 'originalWidth' | 'originalHeight'>;
|
|
53
|
+
export type InsertAdActionWithoutMeta = OmitAdInAction<ReplaceAllChildrenWithAdAction> | OmitAdInAction<ReplaceElementWithAdAction> | OmitAdInAction<SimpleInsertAdAction>;
|
|
54
|
+
export type AdAction = InsertAdAction | RemoveElementAction | HideElementAction;
|
|
55
|
+
export type AddActionsIfAdResolutionAvailable = (elementsToMeasure: Record<'width' | 'height', HTMLElement>, adType: AdType, adIsNative: boolean, expectedCategories: string[], ...actionsBases: (InsertAdActionWithoutMeta | HideElementAction | RemoveElementAction)[]) => boolean;
|
|
56
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export var AdActionType;
|
|
2
|
+
(function (AdActionType) {
|
|
3
|
+
AdActionType["ReplaceAllChildren"] = "replace-all-children";
|
|
4
|
+
AdActionType["ReplaceElement"] = "replace-element";
|
|
5
|
+
AdActionType["SimpleInsertAd"] = "simple-insert-ad";
|
|
6
|
+
AdActionType["RemoveElement"] = "remove-element";
|
|
7
|
+
AdActionType["HideElement"] = "hide-element";
|
|
8
|
+
})(AdActionType || (AdActionType = {}));
|
|
9
|
+
export var AdType;
|
|
10
|
+
(function (AdType) {
|
|
11
|
+
AdType["Permanent"] = "permanent";
|
|
12
|
+
AdType["SlotReplacement"] = "slot-replacement";
|
|
13
|
+
AdType["ProviderReplacement"] = "provider-replacement";
|
|
14
|
+
})(AdType || (AdType = {}));
|
|
15
|
+
//# sourceMappingURL=ads-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ads-actions.js","sourceRoot":"","sources":["../../src/types/ads-actions.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,2DAA2C,CAAA;IAC3C,kDAAkC,CAAA;IAClC,mDAAmC,CAAA;IACnC,gDAAgC,CAAA;IAChC,4CAA4B,CAAA;AAC9B,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;AAED,MAAM,CAAN,IAAY,MAIX;AAJD,WAAY,MAAM;IAChB,iCAAuB,CAAA;IACvB,8CAAoC,CAAA;IACpC,sDAA4C,CAAA;AAC9C,CAAC,EAJW,MAAM,KAAN,MAAM,QAIjB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface AdSource {
|
|
2
|
+
shouldNotUseStrictContainerLimits?: boolean;
|
|
3
|
+
providerName: 'Temple' | 'Persona' | 'HypeLab' | 'SmartyAds';
|
|
4
|
+
native?: boolean;
|
|
5
|
+
slug: string;
|
|
6
|
+
categories?: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface AdDimensions {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
minContainerWidth: number;
|
|
12
|
+
minContainerHeight: number;
|
|
13
|
+
maxContainerWidth: number;
|
|
14
|
+
maxContainerHeight: number;
|
|
15
|
+
}
|
|
16
|
+
export interface AdMetadata {
|
|
17
|
+
source: AdSource;
|
|
18
|
+
dimensions: AdDimensions;
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ads-meta.js","sourceRoot":"","sources":["../../src/types/ads-meta.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export var AdsProviderTitle;
|
|
2
|
+
(function (AdsProviderTitle) {
|
|
3
|
+
AdsProviderTitle["Optimal"] = "Optimal";
|
|
4
|
+
AdsProviderTitle["SmartyAds"] = "SmartyAds";
|
|
5
|
+
AdsProviderTitle["HypeLab"] = "HypeLab";
|
|
6
|
+
AdsProviderTitle["Persona"] = "Persona";
|
|
7
|
+
AdsProviderTitle["Temple"] = "Temple Wallet";
|
|
8
|
+
})(AdsProviderTitle || (AdsProviderTitle = {}));
|
|
9
|
+
//# sourceMappingURL=ads-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ads-provider.js","sourceRoot":"","sources":["../../src/types/ads-provider.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBAMX;AAND,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,2CAAuB,CAAA;IACvB,uCAAmB,CAAA;IACnB,uCAAmB,CAAA;IACnB,4CAAwB,CAAA;AAC1B,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,QAM3B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { RawAdPlacesRule, RawElementsToHideOrRemoveEntry, RawPermanentAdPlacesRule } from './temple-wallet-api';
|
|
2
|
+
export interface AdPlacesRule extends Omit<RawAdPlacesRule, 'urlRegexes'> {
|
|
3
|
+
urlRegexes: RegExp[];
|
|
4
|
+
}
|
|
5
|
+
export interface PermanentAdPlacesRule extends Omit<RawPermanentAdPlacesRule, 'urlRegexes' | 'elementToMeasureSelector'> {
|
|
6
|
+
urlRegexes: RegExp[];
|
|
7
|
+
isNative: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ElementsToHideOrRemoveRule extends Omit<RawElementsToHideOrRemoveEntry, 'urlRegexes'> {
|
|
10
|
+
urlRegexes: RegExp[];
|
|
11
|
+
}
|
|
12
|
+
export interface AdsRules {
|
|
13
|
+
adPlacesRules: Array<Omit<AdPlacesRule, 'urlRegexes'>>;
|
|
14
|
+
permanentAdPlacesRules: PermanentAdPlacesRule[];
|
|
15
|
+
providersSelectors: Array<{
|
|
16
|
+
selector: string;
|
|
17
|
+
parentDepth: number;
|
|
18
|
+
categories: string[];
|
|
19
|
+
}>;
|
|
20
|
+
providersNegativeSelectors: Array<{
|
|
21
|
+
selector: string;
|
|
22
|
+
parentDepth: number;
|
|
23
|
+
}>;
|
|
24
|
+
elementsToHideOrRemoveRules: ElementsToHideOrRemoveRule[];
|
|
25
|
+
timestamp: number;
|
|
26
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ads-rules.js","sourceRoot":"","sources":["../../src/types/ads-rules.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export interface AdStylesOverrides {
|
|
2
|
+
parentDepth: number;
|
|
3
|
+
style: Record<string, string>;
|
|
4
|
+
}
|
|
5
|
+
export interface RawAdPlacesRule {
|
|
6
|
+
urlRegexes: string[];
|
|
7
|
+
selector: {
|
|
8
|
+
isMultiple: boolean;
|
|
9
|
+
cssString: string;
|
|
10
|
+
parentDepth: number;
|
|
11
|
+
shouldUseDivWrapper: boolean;
|
|
12
|
+
divWrapperStyle?: Record<string, string>;
|
|
13
|
+
};
|
|
14
|
+
stylesOverrides?: AdStylesOverrides[];
|
|
15
|
+
shouldHideOriginal?: boolean;
|
|
16
|
+
isNative?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export type ElementsToMeasure = Record<'width' | 'height', string>;
|
|
19
|
+
export interface RawPermanentAdPlacesRule {
|
|
20
|
+
urlRegexes: string[];
|
|
21
|
+
adSelector: {
|
|
22
|
+
isMultiple: boolean;
|
|
23
|
+
cssString: string;
|
|
24
|
+
parentDepth: number;
|
|
25
|
+
};
|
|
26
|
+
parentSelector: {
|
|
27
|
+
isMultiple: boolean;
|
|
28
|
+
cssString: string;
|
|
29
|
+
parentDepth: number;
|
|
30
|
+
};
|
|
31
|
+
insertionIndex?: number;
|
|
32
|
+
insertBeforeSelector?: string;
|
|
33
|
+
insertAfterSelector?: string;
|
|
34
|
+
insertionsCount?: number;
|
|
35
|
+
shouldUseDivWrapper?: boolean;
|
|
36
|
+
wrapperType?: 'div' | 'tbody';
|
|
37
|
+
colsBefore?: number;
|
|
38
|
+
colspan?: number;
|
|
39
|
+
colsAfter?: number;
|
|
40
|
+
divWrapperStyle?: Record<string, string>;
|
|
41
|
+
wrapperStyle?: Record<string, string>;
|
|
42
|
+
elementStyle?: Record<string, string>;
|
|
43
|
+
elementToMeasureSelector?: string;
|
|
44
|
+
elementsToMeasureSelectors?: ElementsToMeasure;
|
|
45
|
+
stylesOverrides?: AdStylesOverrides[];
|
|
46
|
+
shouldHideOriginal?: boolean;
|
|
47
|
+
displayWidth?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface RawAdProvidersRule {
|
|
50
|
+
urlRegexes: string[];
|
|
51
|
+
providers: string[];
|
|
52
|
+
}
|
|
53
|
+
export interface RawElementsToHideOrRemoveEntry {
|
|
54
|
+
cssString: string;
|
|
55
|
+
parentDepth: number;
|
|
56
|
+
isMultiple: boolean;
|
|
57
|
+
urlRegexes: string[];
|
|
58
|
+
shouldHide: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface RawAllAdsRules {
|
|
61
|
+
adPlacesRulesForAllDomains: Record<string, RawAdPlacesRule[]>;
|
|
62
|
+
providersCategories: Record<string, string[]>;
|
|
63
|
+
providersRulesForAllDomains: Record<string, RawAdProvidersRule[]>;
|
|
64
|
+
providersSelectors: Record<string, (string | {
|
|
65
|
+
selector: string;
|
|
66
|
+
parentDepth: number;
|
|
67
|
+
})[]>;
|
|
68
|
+
providersNegativeSelectors: Record<string, (string | {
|
|
69
|
+
selector: string;
|
|
70
|
+
parentDepth: number;
|
|
71
|
+
})[]>;
|
|
72
|
+
providersToReplaceAtAllSites: string[];
|
|
73
|
+
permanentAdPlacesRulesForAllDomains: Record<string, RawPermanentAdPlacesRule[]>;
|
|
74
|
+
permanentNativeAdPlacesRulesForAllDomains: Record<string, RawPermanentAdPlacesRule[]>;
|
|
75
|
+
adsReplaceUrlsBlacklist: string[];
|
|
76
|
+
elementsToHideOrRemoveRules: Record<string, RawElementsToHideOrRemoveEntry[]>;
|
|
77
|
+
timestamp: number;
|
|
78
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temple-wallet-api.js","sourceRoot":"","sources":["../../src/types/temple-wallet-api.ts"],"names":[],"mappings":""}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** From lodash */
|
|
2
|
+
type Truthy<T> = T extends null | undefined | void | false | '' | 0 | 0n ? never : T;
|
|
3
|
+
export declare const isTruthy: <T>(value: T) => value is Truthy<T>;
|
|
4
|
+
export declare const delay: (ms?: number) => Promise<unknown>;
|
|
5
|
+
export type StringRecord<T = string> = Record<string, T>;
|
|
6
|
+
export {};
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,KAAQ,EAAsB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE5E,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,aAAa,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@temple-wallet/extension-ads",
|
|
3
|
-
"version": "8.1.0
|
|
3
|
+
"version": "8.1.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -36,7 +36,8 @@
|
|
|
36
36
|
},
|
|
37
37
|
"packageManager": "yarn@4.1.1",
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"axios": "^
|
|
39
|
+
"@vespaiach/axios-fetch-adapter": "^0.3.1",
|
|
40
|
+
"axios": "^1.6.7",
|
|
40
41
|
"crypto-js": "^4.2.0",
|
|
41
42
|
"lodash": "^4.17.21",
|
|
42
43
|
"nanoid": "^5.0.6",
|
|
@@ -102,19 +102,6 @@ export const pickAdsToDisplay = (
|
|
|
102
102
|
return AdsConfiguration.buildNativeAdsMeta(containerWidth, containerHeight);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
-
const fallbackAdsFullMeta =
|
|
106
|
-
adType === AdType.Permanent || adType === AdType.SlotReplacement
|
|
107
|
-
? AdsConfiguration.bannerAdsMeta.filter(({ source }) => source.shouldNotUseStrictContainerLimits)
|
|
108
|
-
: [];
|
|
109
|
-
const containerWithFallbackWidth = Math.max(
|
|
110
|
-
containerWidth,
|
|
111
|
-
...fallbackAdsFullMeta.map(({ dimensions }) => dimensions.width)
|
|
112
|
-
);
|
|
113
|
-
const containerWithFallbackHeight = Math.max(
|
|
114
|
-
containerHeight,
|
|
115
|
-
...fallbackAdsFullMeta.map(({ dimensions }) => dimensions.height)
|
|
116
|
-
);
|
|
117
|
-
|
|
118
105
|
return AdsConfiguration.bannerAdsMeta.reduce<number[]>((acc, { dimensions, source }, i) => {
|
|
119
106
|
const { shouldNotUseStrictContainerLimits = false, categories = [CRYPTO_CATEGORY_NAME] } = source;
|
|
120
107
|
|
|
@@ -129,14 +116,12 @@ export const pickAdsToDisplay = (
|
|
|
129
116
|
case AdType.Permanent:
|
|
130
117
|
matches =
|
|
131
118
|
shouldNotUseStrictContainerLimits ||
|
|
132
|
-
(
|
|
133
|
-
(containerWithFallbackHeight >= minContainerHeight || containerWithFallbackHeight < 2));
|
|
119
|
+
(containerWidth >= width && (containerHeight >= minContainerHeight || containerHeight < 2));
|
|
134
120
|
break;
|
|
135
121
|
case AdType.SlotReplacement:
|
|
136
122
|
matches =
|
|
137
123
|
shouldNotUseStrictContainerLimits ||
|
|
138
|
-
(
|
|
139
|
-
(containerWithFallbackHeight >= minContainerHeight || containerWithFallbackHeight < 2));
|
|
124
|
+
(containerWidth >= minContainerWidth && (containerHeight >= minContainerHeight || containerHeight < 2));
|
|
140
125
|
break;
|
|
141
126
|
default:
|
|
142
127
|
matches =
|
|
@@ -153,22 +138,3 @@ export const pickAdsToDisplay = (
|
|
|
153
138
|
return acc;
|
|
154
139
|
}, []);
|
|
155
140
|
};
|
|
156
|
-
|
|
157
|
-
const elementHasBox = (element: Element) => {
|
|
158
|
-
const { x, y, width, height } = element.getBoundingClientRect();
|
|
159
|
-
|
|
160
|
-
return x !== 0 || y !== 0 || width !== 0 || height !== 0;
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
export const elementIsHidden = (element: Element): boolean => {
|
|
164
|
-
const { display } = window.getComputedStyle(element);
|
|
165
|
-
|
|
166
|
-
switch (display) {
|
|
167
|
-
case 'none':
|
|
168
|
-
return true;
|
|
169
|
-
case 'contents':
|
|
170
|
-
return Array.from(element.children).every(child => elementIsHidden(child));
|
|
171
|
-
default:
|
|
172
|
-
return !elementHasBox(element);
|
|
173
|
-
}
|
|
174
|
-
};
|
|
@@ -18,7 +18,6 @@ import { delay, isTruthy } from 'src/utils';
|
|
|
18
18
|
|
|
19
19
|
import {
|
|
20
20
|
applyQuerySelector,
|
|
21
|
-
elementIsHidden,
|
|
22
21
|
elementIsOurAd,
|
|
23
22
|
getParentOfDepth,
|
|
24
23
|
ourBannerAdQuerySelector,
|
|
@@ -112,15 +111,14 @@ const processPermanentAdsParent = (
|
|
|
112
111
|
true,
|
|
113
112
|
parent
|
|
114
113
|
).reduce<Element[]>((acc, element) => {
|
|
115
|
-
if (acc.some(prevElement => prevElement.contains(element))) {
|
|
114
|
+
if (acc.some(prevElement => prevElement.contains(element) || element.contains(prevElement))) {
|
|
116
115
|
return acc;
|
|
117
116
|
}
|
|
118
117
|
|
|
119
|
-
return [...acc
|
|
118
|
+
return [...acc, element];
|
|
120
119
|
}, []);
|
|
121
|
-
const ourHiddenAds = ourAds.filter(elementIsHidden);
|
|
122
120
|
|
|
123
|
-
const ourAdsCount = ourAds.length
|
|
121
|
+
const ourAdsCount = ourAds.length;
|
|
124
122
|
let insertionsLeft = insertionsCount - ourAdsCount;
|
|
125
123
|
|
|
126
124
|
const banners = applyQuerySelector<HTMLElement>(bannerCssString, shouldSearchForManyBannersInParent, parent)
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
import { memoize } from 'lodash';
|
|
2
|
-
|
|
3
|
-
import { AdsConfiguration } from 'src/ads-configuration';
|
|
4
1
|
import { SIBLING_REPLACEMENT_ATTRIBUTE_NAME } from 'src/constants';
|
|
5
2
|
import {
|
|
6
3
|
AdAction,
|
|
@@ -13,7 +10,6 @@ import {
|
|
|
13
10
|
RemoveElementAction,
|
|
14
11
|
SimpleInsertAdAction
|
|
15
12
|
} from 'src/types/ads-actions';
|
|
16
|
-
import { AdDimensions, AdMetadata } from 'src/types/ads-meta';
|
|
17
13
|
import { AdsRules } from 'src/types/ads-rules';
|
|
18
14
|
import { delay } from 'src/utils';
|
|
19
15
|
|
|
@@ -60,30 +56,12 @@ interface BannerFromProviderEntry {
|
|
|
60
56
|
categories: string[];
|
|
61
57
|
}
|
|
62
58
|
|
|
63
|
-
/** Returns such a minimal subset of ads dimensions that we can use to filter containers that cannot place any of our ads */
|
|
64
|
-
const getSmallestBannersDimensions = memoize((bannerAdsMeta: AdMetadata[]) =>
|
|
65
|
-
bannerAdsMeta.reduce<AdDimensions[]>((acc, { dimensions }) => {
|
|
66
|
-
const result = acc.filter(({ width, height }) => width < dimensions.width || height < dimensions.height);
|
|
67
|
-
|
|
68
|
-
if (
|
|
69
|
-
result.length === 0 ||
|
|
70
|
-
result.some(({ width, height }) => width > dimensions.width || height > dimensions.height)
|
|
71
|
-
) {
|
|
72
|
-
result.push(dimensions);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return result;
|
|
76
|
-
}, [])
|
|
77
|
-
);
|
|
78
|
-
|
|
79
59
|
export const processProvidersAds = async (
|
|
80
60
|
providersSelectors: AdsRules['providersSelectors'],
|
|
81
61
|
providersNegativeSelectors: AdsRules['providersNegativeSelectors'],
|
|
82
62
|
addActionsIfAdResolutionAvailable: AddActionsIfAdResolutionAvailable,
|
|
83
63
|
result: AdAction[]
|
|
84
64
|
) => {
|
|
85
|
-
const smallestBannersDimensions = getSmallestBannersDimensions(AdsConfiguration.bannerAdsMeta);
|
|
86
|
-
|
|
87
65
|
let bannersFromProviders = providersSelectors
|
|
88
66
|
.map(({ selector: providersSelector, parentDepth, categories }) =>
|
|
89
67
|
applyQuerySelector(providersSelector, true).reduce<BannerFromProviderEntry[]>((acc, foundElement) => {
|
|
@@ -101,11 +79,8 @@ export const processProvidersAds = async (
|
|
|
101
79
|
});
|
|
102
80
|
const bannerIsHiddenByParent = parentStyles?.display === 'none' || parentStyles?.visibility === 'hidden';
|
|
103
81
|
const hasAnchorParent = parentElementIndex >= 0 && acc[parentElementIndex] instanceof HTMLAnchorElement;
|
|
104
|
-
const canPlaceAds = smallestBannersDimensions.some(
|
|
105
|
-
({ width: minWidth, height: minHeight }) => width >= minWidth && height >= minHeight
|
|
106
|
-
);
|
|
107
82
|
|
|
108
|
-
if (bannerIsTouchedByOtherActions ||
|
|
83
|
+
if (bannerIsTouchedByOtherActions || width === 0 || height === 0 || bannerIsHiddenByParent || hasAnchorParent) {
|
|
109
84
|
return acc;
|
|
110
85
|
}
|
|
111
86
|
|
|
@@ -180,8 +155,7 @@ export const processProvidersAds = async (
|
|
|
180
155
|
wrapperStyle,
|
|
181
156
|
parent: banner.parentElement ?? document.body,
|
|
182
157
|
insertionIndex: Array.from(banner.parentElement?.children ?? []).indexOf(banner),
|
|
183
|
-
isSiblingReplacement: true
|
|
184
|
-
shouldUseBlurredBackground: true
|
|
158
|
+
isSiblingReplacement: true
|
|
185
159
|
};
|
|
186
160
|
|
|
187
161
|
let actions: (InsertAdActionWithoutMeta | HideElementAction | RemoveElementAction)[];
|
|
@@ -26,7 +26,6 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
|
|
|
26
26
|
loadingAdsIds.add(adId);
|
|
27
27
|
|
|
28
28
|
return new Promise<AdMetadata['source']['providerName']>((resolve, reject) => {
|
|
29
|
-
let adIsNative = false;
|
|
30
29
|
const messageListener = (event: MessageEvent<any>) => {
|
|
31
30
|
if (event.source !== element.contentWindow) return;
|
|
32
31
|
|
|
@@ -49,7 +48,6 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
|
|
|
49
48
|
break;
|
|
50
49
|
case AD_RENDER_START_MESSAGE_TYPE:
|
|
51
50
|
const { dimensions, source }: AdMetadata = data.adMetadata;
|
|
52
|
-
adIsNative = source.native ?? false;
|
|
53
51
|
const { width, height } = dimensions;
|
|
54
52
|
if (width > 0 && height > 0) {
|
|
55
53
|
if (source.native) {
|
|
@@ -63,7 +61,7 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
|
|
|
63
61
|
case AD_RESIZE_MESSAGE_TYPE:
|
|
64
62
|
const { width: newWidth, height: newHeight } = data;
|
|
65
63
|
|
|
66
|
-
if (
|
|
64
|
+
if (element.style.width?.endsWith('%')) {
|
|
67
65
|
element.style.height = `${newHeight + verticalBordersWidth}px`;
|
|
68
66
|
} else {
|
|
69
67
|
extendOrKeepDimension(element, 'width', newWidth + horizontalBordersWidth);
|