@temple-wallet/extension-ads 8.1.0-dev.1 → 8.1.0-dev.3

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 (86) 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 +55 -41
  50. package/dist/index.js +11 -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 +1 -1
  83. package/src/ads-actions/helpers.ts +17 -2
  84. package/src/execute-ads-actions/observing.ts +3 -1
  85. package/src/render-ads-stack.ts +9 -1
  86. package/src/execute-ads-actions/utils.ts +0 -24
@@ -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.1",
3
+ "version": "8.1.0-dev.3",
4
4
  "main": "dist/index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -102,6 +102,19 @@ 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
+
105
118
  return AdsConfiguration.bannerAdsMeta.reduce<number[]>((acc, { dimensions, source }, i) => {
106
119
  const { shouldNotUseStrictContainerLimits = false, categories = [CRYPTO_CATEGORY_NAME] } = source;
107
120
 
@@ -116,12 +129,14 @@ export const pickAdsToDisplay = (
116
129
  case AdType.Permanent:
117
130
  matches =
118
131
  shouldNotUseStrictContainerLimits ||
119
- (containerWidth >= width && (containerHeight >= minContainerHeight || containerHeight < 2));
132
+ (containerWithFallbackWidth >= width &&
133
+ (containerWithFallbackHeight >= minContainerHeight || containerWithFallbackHeight < 2));
120
134
  break;
121
135
  case AdType.SlotReplacement:
122
136
  matches =
123
137
  shouldNotUseStrictContainerLimits ||
124
- (containerWidth >= minContainerWidth && (containerHeight >= minContainerHeight || containerHeight < 2));
138
+ (containerWithFallbackWidth >= minContainerWidth &&
139
+ (containerWithFallbackHeight >= minContainerHeight || containerWithFallbackHeight < 2));
125
140
  break;
126
141
  default:
127
142
  matches =
@@ -26,6 +26,7 @@ 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;
29
30
  const messageListener = (event: MessageEvent<any>) => {
30
31
  if (event.source !== element.contentWindow) return;
31
32
 
@@ -48,6 +49,7 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
48
49
  break;
49
50
  case AD_RENDER_START_MESSAGE_TYPE:
50
51
  const { dimensions, source }: AdMetadata = data.adMetadata;
52
+ adIsNative = source.native ?? false;
51
53
  const { width, height } = dimensions;
52
54
  if (width > 0 && height > 0) {
53
55
  if (source.native) {
@@ -61,7 +63,7 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
61
63
  case AD_RESIZE_MESSAGE_TYPE:
62
64
  const { width: newWidth, height: newHeight } = data;
63
65
 
64
- if (element.style.width?.endsWith('%')) {
66
+ if (adIsNative) {
65
67
  element.style.height = `${newHeight + verticalBordersWidth}px`;
66
68
  } else {
67
69
  extendOrKeepDimension(element, 'width', newWidth + horizontalBordersWidth);
@@ -58,9 +58,17 @@ export const renderAdsStack = async (
58
58
  else templeLabelElement.removeAttribute('active');
59
59
 
60
60
  const updateBackground = (creativeSet: CreativeSet = {}) => {
61
+ const prevBackgroundElement = document.getElementById(BACKGROUND_ELEMENT_ID);
62
+ if (source.native && prevBackgroundElement) {
63
+ rootElement.removeChild(prevBackgroundElement);
64
+ }
65
+
66
+ if (source.native) {
67
+ return;
68
+ }
69
+
61
70
  try {
62
71
  const { image, video } = creativeSet;
63
- const prevBackgroundElement = document.getElementById(BACKGROUND_ELEMENT_ID);
64
72
  let backgroundElement: HTMLImageElement | HTMLVideoElement | undefined;
65
73
  if (image) {
66
74
  backgroundElement = document.createElement('img');
@@ -1,24 +0,0 @@
1
- export const stripDimentionsLimits = (wrapperElement: HTMLDivElement, width: number, height: number) => {
2
- const predefinedStyles = wrapperElement.style;
3
- // If needed in future, try `getComputedStyle(wrapperElement)` - though would have to not remove but override
4
-
5
- stripOneDimensionLimit(predefinedStyles, width, ['width']);
6
- stripOneDimensionLimit(predefinedStyles, height, ['height', 'maxHeight']);
7
- };
8
-
9
- const stripOneDimensionLimit = (
10
- predefinedStyles: CSSStyleDeclaration,
11
- value: number,
12
- dimensionNames: ('width' | 'height' | 'maxWidth' | 'maxHeight')[]
13
- ) => {
14
- for (const dimensionName of dimensionNames) {
15
- const predefinedStyleValue = predefinedStyles[dimensionName] ?? '';
16
-
17
- if (/^\d+(px)?$/.test(predefinedStyleValue)) {
18
- const predefinedSize = parseInt(predefinedStyleValue, 10);
19
- if (predefinedSize < value) {
20
- predefinedStyles.removeProperty(dimensionName);
21
- }
22
- }
23
- }
24
- };