@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.
Files changed (90) hide show
  1. package/dist/ads-actions/helpers.d.ts +17 -0
  2. package/dist/ads-actions/helpers.js +96 -0
  3. package/dist/ads-actions/helpers.js.map +1 -0
  4. package/dist/ads-actions/index.d.ts +3 -0
  5. package/dist/ads-actions/index.js +63 -0
  6. package/dist/ads-actions/index.js.map +1 -0
  7. package/dist/ads-actions/process-elements-to-hide-or-remove-rule.d.ts +3 -0
  8. package/dist/ads-actions/process-elements-to-hide-or-remove-rule.js +19 -0
  9. package/dist/ads-actions/process-elements-to-hide-or-remove-rule.js.map +1 -0
  10. package/dist/ads-actions/process-permanent-rule.d.ts +3 -0
  11. package/dist/ads-actions/process-permanent-rule.js +143 -0
  12. package/dist/ads-actions/process-permanent-rule.js.map +1 -0
  13. package/dist/ads-actions/process-providers-ads.d.ts +3 -0
  14. package/dist/ads-actions/process-providers-ads.js +137 -0
  15. package/dist/ads-actions/process-providers-ads.js.map +1 -0
  16. package/dist/ads-actions/process-rule.d.ts +3 -0
  17. package/dist/ads-actions/process-rule.js +98 -0
  18. package/dist/ads-actions/process-rule.js.map +1 -0
  19. package/dist/ads-configuration.d.ts +31 -0
  20. package/dist/ads-configuration.js +30 -0
  21. package/dist/ads-configuration.js.map +1 -0
  22. package/dist/constants.d.ts +11 -0
  23. package/dist/constants.js +12 -0
  24. package/dist/constants.js.map +1 -0
  25. package/dist/execute-ads-actions/ads-views/index.d.ts +3 -0
  26. package/dist/execute-ads-actions/ads-views/index.js +4 -0
  27. package/dist/execute-ads-actions/ads-views/index.js.map +1 -0
  28. package/dist/execute-ads-actions/ads-views/make-ads-tw-view.d.ts +3 -0
  29. package/dist/execute-ads-actions/ads-views/make-ads-tw-view.js +40 -0
  30. package/dist/execute-ads-actions/ads-views/make-ads-tw-view.js.map +1 -0
  31. package/dist/execute-ads-actions/ads-views/make-extension-iframe-view.d.ts +3 -0
  32. package/dist/execute-ads-actions/ads-views/make-extension-iframe-view.js +22 -0
  33. package/dist/execute-ads-actions/ads-views/make-extension-iframe-view.js.map +1 -0
  34. package/dist/execute-ads-actions/ads-views/make-tkey-ad.d.ts +3 -0
  35. package/dist/execute-ads-actions/ads-views/make-tkey-ad.js +38 -0
  36. package/dist/execute-ads-actions/ads-views/make-tkey-ad.js.map +1 -0
  37. package/dist/execute-ads-actions/index.d.ts +2 -0
  38. package/dist/execute-ads-actions/index.js +23 -0
  39. package/dist/execute-ads-actions/index.js.map +1 -0
  40. package/dist/execute-ads-actions/observing.d.ts +1 -0
  41. package/dist/execute-ads-actions/observing.js +129 -0
  42. package/dist/execute-ads-actions/observing.js.map +1 -0
  43. package/dist/execute-ads-actions/override-element-styles.d.ts +2 -0
  44. package/dist/execute-ads-actions/override-element-styles.js +6 -0
  45. package/dist/execute-ads-actions/override-element-styles.js.map +1 -0
  46. package/dist/execute-ads-actions/process-insert-ad-action.d.ts +2 -0
  47. package/dist/execute-ads-actions/process-insert-ad-action.js +153 -0
  48. package/dist/execute-ads-actions/process-insert-ad-action.js.map +1 -0
  49. package/dist/index.d.ts +0 -1
  50. package/dist/index.js +14 -12
  51. package/dist/index.js.map +1 -0
  52. package/dist/render-ads-stack.d.ts +7 -0
  53. package/dist/render-ads-stack.js +156 -0
  54. package/dist/render-ads-stack.js.map +1 -0
  55. package/dist/temple-wallet-api.d.ts +23 -0
  56. package/dist/temple-wallet-api.js +67 -0
  57. package/dist/temple-wallet-api.js.map +1 -0
  58. package/dist/transform-raw-rules.d.ts +3 -0
  59. package/dist/transform-raw-rules.js +137 -0
  60. package/dist/transform-raw-rules.js.map +1 -0
  61. package/dist/types/ad-view.d.ts +7 -0
  62. package/dist/types/ad-view.js +2 -0
  63. package/dist/types/ad-view.js.map +1 -0
  64. package/dist/types/ads-actions.d.ts +56 -0
  65. package/dist/types/ads-actions.js +15 -0
  66. package/dist/types/ads-actions.js.map +1 -0
  67. package/dist/types/ads-meta.d.ts +19 -0
  68. package/dist/types/ads-meta.js +2 -0
  69. package/dist/types/ads-meta.js.map +1 -0
  70. package/dist/types/ads-provider.d.ts +8 -0
  71. package/dist/types/ads-provider.js +9 -0
  72. package/dist/types/ads-provider.js.map +1 -0
  73. package/dist/types/ads-rules.d.ts +26 -0
  74. package/dist/types/ads-rules.js +2 -0
  75. package/dist/types/ads-rules.js.map +1 -0
  76. package/dist/types/temple-wallet-api.d.ts +78 -0
  77. package/dist/types/temple-wallet-api.js +2 -0
  78. package/dist/types/temple-wallet-api.js.map +1 -0
  79. package/dist/utils.d.ts +6 -0
  80. package/dist/utils.js +4 -0
  81. package/dist/utils.js.map +1 -0
  82. package/package.json +3 -2
  83. package/src/ads-actions/helpers.ts +2 -36
  84. package/src/ads-actions/process-permanent-rule.ts +3 -5
  85. package/src/ads-actions/process-providers-ads.ts +2 -28
  86. package/src/execute-ads-actions/observing.ts +1 -3
  87. package/src/execute-ads-actions/process-insert-ad-action.ts +4 -24
  88. package/src/render-ads-stack.ts +2 -10
  89. package/src/temple-wallet-api.ts +2 -1
  90. package/src/types/ads-actions.ts +0 -1
@@ -0,0 +1,3 @@
1
+ import { AdsRules } from 'src/types/ads-rules';
2
+ import { RawAllAdsRules } from 'src/types/temple-wallet-api';
3
+ export declare const transformRawRules: (location: Location, rules: RawAllAdsRules) => AdsRules;
@@ -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,7 @@
1
+ export type CreativeSet = Partial<Record<'image' | 'video', {
2
+ url: string;
3
+ }>>;
4
+ export interface AdView {
5
+ element: HTMLDivElement | HTMLIFrameElement;
6
+ creativeSet?: CreativeSet;
7
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ad-view.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ads-meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ads-meta.js","sourceRoot":"","sources":["../../src/types/ads-meta.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ export declare enum AdsProviderTitle {
2
+ Optimal = "Optimal",
3
+ SmartyAds = "SmartyAds",
4
+ HypeLab = "HypeLab",
5
+ Persona = "Persona",
6
+ Temple = "Temple Wallet"
7
+ }
8
+ export type AdsProviderName = keyof typeof AdsProviderTitle;
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ads-rules.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=temple-wallet-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"temple-wallet-api.js","sourceRoot":"","sources":["../../src/types/temple-wallet-api.ts"],"names":[],"mappings":""}
@@ -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,4 @@
1
+ export const isTruthy = (value) => Boolean(value);
2
+ const DEFAULT_DELAY = 300;
3
+ export const delay = (ms = DEFAULT_DELAY) => new Promise(res => setTimeout(res, ms));
4
+ //# sourceMappingURL=utils.js.map
@@ -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-dev.4",
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": "^1.7.4",
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
- (containerWithFallbackWidth >= width &&
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
- (containerWithFallbackWidth >= minContainerWidth &&
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.filter(prevElement => !element.contains(prevElement)), element];
118
+ return [...acc, element];
120
119
  }, []);
121
- const ourHiddenAds = ourAds.filter(elementIsHidden);
122
120
 
123
- const ourAdsCount = ourAds.length - ourHiddenAds.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 || !canPlaceAds || bannerIsHiddenByParent || hasAnchorParent) {
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 (adIsNative) {
64
+ if (element.style.width?.endsWith('%')) {
67
65
  element.style.height = `${newHeight + verticalBordersWidth}px`;
68
66
  } else {
69
67
  extendOrKeepDimension(element, 'width', newWidth + horizontalBordersWidth);