@temple-wallet/extension-ads 6.0.0 → 6.2.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 (95) hide show
  1. package/.editorconfig +9 -0
  2. package/dist/ads-actions/helpers.d.ts +13 -0
  3. package/dist/ads-actions/helpers.js +83 -0
  4. package/dist/ads-actions/helpers.js.map +1 -0
  5. package/dist/ads-actions/index.d.ts +3 -0
  6. package/dist/ads-actions/index.js +45 -0
  7. package/dist/ads-actions/index.js.map +1 -0
  8. package/dist/ads-actions/process-permanent-rule.d.ts +3 -0
  9. package/dist/ads-actions/process-permanent-rule.js +132 -0
  10. package/dist/ads-actions/process-permanent-rule.js.map +1 -0
  11. package/dist/ads-actions/process-providers-ads.d.ts +3 -0
  12. package/dist/ads-actions/process-providers-ads.js +113 -0
  13. package/dist/ads-actions/process-providers-ads.js.map +1 -0
  14. package/dist/ads-actions/process-rule.d.ts +3 -0
  15. package/dist/ads-actions/process-rule.js +97 -0
  16. package/dist/ads-actions/process-rule.js.map +1 -0
  17. package/dist/ads-configuration.d.ts +33 -0
  18. package/dist/ads-configuration.js +29 -0
  19. package/dist/ads-configuration.js.map +1 -0
  20. package/dist/ads-meta.d.ts +17 -0
  21. package/dist/ads-meta.js +135 -0
  22. package/dist/ads-meta.js.map +1 -0
  23. package/dist/constants.d.ts +8 -0
  24. package/dist/constants.js +9 -0
  25. package/dist/constants.js.map +1 -0
  26. package/dist/execute-ads-actions/ads-views/index.d.ts +3 -0
  27. package/dist/execute-ads-actions/ads-views/index.js +4 -0
  28. package/dist/execute-ads-actions/ads-views/index.js.map +1 -0
  29. package/dist/execute-ads-actions/ads-views/make-hypelab-ad.d.ts +3 -0
  30. package/dist/execute-ads-actions/ads-views/make-hypelab-ad.js +60 -0
  31. package/dist/execute-ads-actions/ads-views/make-hypelab-ad.js.map +1 -0
  32. package/dist/execute-ads-actions/ads-views/make-persona-ad.d.ts +3 -0
  33. package/dist/execute-ads-actions/ads-views/make-persona-ad.js +11 -0
  34. package/dist/execute-ads-actions/ads-views/make-persona-ad.js.map +1 -0
  35. package/dist/execute-ads-actions/ads-views/make-tkey-ad.d.ts +2 -0
  36. package/dist/execute-ads-actions/ads-views/make-tkey-ad.js +24 -0
  37. package/dist/execute-ads-actions/ads-views/make-tkey-ad.js.map +1 -0
  38. package/dist/execute-ads-actions/index.d.ts +2 -0
  39. package/dist/execute-ads-actions/index.js +23 -0
  40. package/dist/execute-ads-actions/index.js.map +1 -0
  41. package/dist/execute-ads-actions/observing.d.ts +1 -0
  42. package/dist/execute-ads-actions/observing.js +123 -0
  43. package/dist/execute-ads-actions/observing.js.map +1 -0
  44. package/dist/execute-ads-actions/override-element-styles.d.ts +2 -0
  45. package/dist/execute-ads-actions/override-element-styles.js +6 -0
  46. package/dist/execute-ads-actions/override-element-styles.js.map +1 -0
  47. package/dist/execute-ads-actions/process-insert-ad-action.d.ts +2 -0
  48. package/dist/execute-ads-actions/process-insert-ad-action.js +120 -0
  49. package/dist/execute-ads-actions/process-insert-ad-action.js.map +1 -0
  50. package/dist/index.d.ts +7 -3
  51. package/dist/index.js +13 -13
  52. package/dist/index.js.map +1 -0
  53. package/dist/render-ads-stack.d.ts +7 -0
  54. package/dist/render-ads-stack.js +101 -0
  55. package/dist/render-ads-stack.js.map +1 -0
  56. package/dist/temple-wallet-api.d.ts +17 -0
  57. package/dist/temple-wallet-api.js +56 -0
  58. package/dist/temple-wallet-api.js.map +1 -0
  59. package/dist/transform-raw-rules.d.ts +3 -0
  60. package/dist/transform-raw-rules.js +117 -0
  61. package/dist/transform-raw-rules.js.map +1 -0
  62. package/dist/types/ad-view.d.ts +3 -0
  63. package/dist/types/ad-view.js +2 -0
  64. package/dist/types/ad-view.js.map +1 -0
  65. package/dist/types/ads-actions.d.ts +54 -0
  66. package/dist/types/ads-actions.js +15 -0
  67. package/dist/types/ads-actions.js.map +1 -0
  68. package/dist/types/ads-meta.d.ts +46 -0
  69. package/dist/types/ads-meta.js +2 -0
  70. package/dist/types/ads-meta.js.map +1 -0
  71. package/dist/types/ads-provider.d.ts +7 -0
  72. package/dist/types/ads-provider.js +8 -0
  73. package/dist/types/ads-provider.js.map +1 -0
  74. package/dist/types/ads-rules.d.ts +17 -0
  75. package/dist/types/ads-rules.js +2 -0
  76. package/dist/types/ads-rules.js.map +1 -0
  77. package/dist/types/temple-wallet-api.d.ts +61 -0
  78. package/dist/types/temple-wallet-api.js +2 -0
  79. package/dist/types/temple-wallet-api.js.map +1 -0
  80. package/dist/utils.d.ts +6 -0
  81. package/dist/utils.js +4 -0
  82. package/dist/utils.js.map +1 -0
  83. package/package.json +1 -1
  84. package/src/ads-actions/helpers.ts +11 -3
  85. package/src/ads-actions/process-permanent-rule.ts +26 -10
  86. package/src/ads-actions/process-providers-ads.ts +12 -7
  87. package/src/ads-actions/process-rule.ts +3 -3
  88. package/src/constants.ts +2 -0
  89. package/src/execute-ads-actions/ads-views/make-hypelab-ad.ts +6 -2
  90. package/src/execute-ads-actions/observing.ts +15 -11
  91. package/src/execute-ads-actions/process-insert-ad-action.ts +91 -14
  92. package/src/render-ads-stack.ts +18 -7
  93. package/src/types/ads-actions.ts +3 -3
  94. package/src/types/temple-wallet-api.ts +6 -1
  95. package/.vscode/settings.json +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ads-configuration.js","sourceRoot":"","sources":["../src/ads-configuration.ts"],"names":[],"mappings":"AAmBA,MAAM,OAAO,gBAAgB;;AACpB,8CAA6B,GAAG,EAAE,CAAC;AACnC,6CAA4B,GAAG,EAAE,CAAC;AAClC,4CAA2B,GAAG,EAAE,CAAC;AACjC,4CAA2B,GAAG,EAAE,CAAC;AACjC,uCAAsB,GAAG,EAAE,CAAC;AAC5B,mCAAkB,GAAG,EAAE,CAAC;AACxB,8BAAa,GAAG,EAAE,CAAC;AACnB,mDAAkC,GAAG,EAAE,CAAC;AACxC,oCAAmB,GAA6C,GAAG,EAAE,CAAC,EAAE,CAAC;AACzE,qCAAoB,GAA8C,GAAG,EAAE,CAAC,EAAE,CAAC;AAKpF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAyB,EAAE,EAAE;IACxD,MAAM,EACJ,OAAO,EACP,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EACjB,GAAG,MAAM,CAAC;IACX,MAAM,EACJ,MAAM,EAAE,0BAA0B,EAClC,KAAK,EAAE,yBAAyB,EAChC,OAAO,EAAE,wBAAwB,EACjC,IAAI,EAAE,wBAAwB,EAC/B,GAAG,OAAO,CAAC;IAEZ,gBAAgB,CAAC,6BAA6B,GAAG,0BAA0B,CAAC;IAC5E,gBAAgB,CAAC,4BAA4B,GAAG,yBAAyB,CAAC;IAC1E,gBAAgB,CAAC,2BAA2B,GAAG,wBAAwB,CAAC;IACxE,gBAAgB,CAAC,2BAA2B,GAAG,wBAAwB,CAAC;IACxE,gBAAgB,CAAC,sBAAsB,GAAG,mBAAmB,CAAC;IAC9D,gBAAgB,CAAC,kBAAkB,GAAG,eAAe,CAAC;IACtD,gBAAgB,CAAC,aAAa,GAAG,WAAW,CAAC;IAC7C,gBAAgB,CAAC,kCAAkC,GAAG,8BAA8B,CAAC;IACrF,gBAAgB,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IAC3D,gBAAgB,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IAC7D,gBAAgB,CAAC,iBAAiB,GAAG,UAAU,CAAC;IAChD,gBAAgB,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;AACxD,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { AdMetadata } from 'src/types/ads-meta';
2
+ export declare const BANNER_ADS_META: AdMetadata[];
3
+ export declare const buildHypeLabNativeMeta: (containerWidth: number, containerHeight: number) => {
4
+ source: {
5
+ providerName: "HypeLab";
6
+ native: true;
7
+ slug: string;
8
+ };
9
+ dimensions: {
10
+ width: number;
11
+ height: number;
12
+ minContainerWidth: number;
13
+ minContainerHeight: number;
14
+ maxContainerWidth: number;
15
+ maxContainerHeight: number;
16
+ };
17
+ };
@@ -0,0 +1,135 @@
1
+ import { AdsConfiguration } from 'src/ads-configuration';
2
+ export const BANNER_ADS_META = [
3
+ {
4
+ source: {
5
+ providerName: 'HypeLab',
6
+ native: false,
7
+ size: 'wide'
8
+ },
9
+ dimensions: {
10
+ width: 728,
11
+ height: 90,
12
+ minContainerWidth: 701,
13
+ minContainerHeight: 60,
14
+ maxContainerWidth: Infinity,
15
+ maxContainerHeight: 300
16
+ }
17
+ },
18
+ // {
19
+ // source: {
20
+ // providerName: 'Persona',
21
+ // shape: 'wide'
22
+ // },
23
+ // dimensions: {
24
+ // width: 970,
25
+ // height: 90,
26
+ // minContainerWidth: 900,
27
+ // minContainerHeight: 60,
28
+ // maxContainerWidth: Infinity,
29
+ // maxContainerHeight: 300
30
+ // }
31
+ // },
32
+ {
33
+ source: {
34
+ providerName: 'Temple'
35
+ },
36
+ dimensions: {
37
+ width: 728,
38
+ height: 90,
39
+ minContainerWidth: 701,
40
+ minContainerHeight: 60,
41
+ maxContainerWidth: Infinity,
42
+ maxContainerHeight: 300
43
+ }
44
+ },
45
+ {
46
+ source: {
47
+ providerName: 'Persona',
48
+ shape: 'medium'
49
+ },
50
+ dimensions: {
51
+ width: 600,
52
+ height: 160,
53
+ minContainerWidth: 600,
54
+ minContainerHeight: 80,
55
+ maxContainerWidth: 800,
56
+ maxContainerHeight: 300
57
+ }
58
+ },
59
+ {
60
+ source: {
61
+ providerName: 'HypeLab',
62
+ native: false,
63
+ size: 'high'
64
+ },
65
+ dimensions: {
66
+ width: 300,
67
+ height: 250,
68
+ minContainerWidth: 300,
69
+ minContainerHeight: 170,
70
+ maxContainerWidth: 700,
71
+ maxContainerHeight: Infinity
72
+ }
73
+ },
74
+ {
75
+ source: {
76
+ providerName: 'Persona',
77
+ shape: 'squarish'
78
+ },
79
+ dimensions: {
80
+ width: 300,
81
+ height: 250,
82
+ minContainerWidth: 300,
83
+ minContainerHeight: 170,
84
+ maxContainerWidth: 700,
85
+ maxContainerHeight: Infinity
86
+ }
87
+ },
88
+ {
89
+ source: {
90
+ providerName: 'HypeLab',
91
+ native: false,
92
+ size: 'small',
93
+ shouldNotUseStrictContainerLimits: true
94
+ },
95
+ dimensions: {
96
+ width: 320,
97
+ height: 50,
98
+ minContainerWidth: 230,
99
+ minContainerHeight: 32,
100
+ maxContainerWidth: 420,
101
+ maxContainerHeight: 130
102
+ }
103
+ },
104
+ {
105
+ source: {
106
+ providerName: 'Persona',
107
+ shape: 'regular',
108
+ shouldNotUseStrictContainerLimits: true
109
+ },
110
+ dimensions: {
111
+ width: 321,
112
+ height: 101,
113
+ minContainerWidth: 230,
114
+ minContainerHeight: 32,
115
+ maxContainerWidth: 420,
116
+ maxContainerHeight: 130
117
+ }
118
+ }
119
+ ];
120
+ export const buildHypeLabNativeMeta = (containerWidth, containerHeight) => ({
121
+ source: {
122
+ providerName: 'HypeLab',
123
+ native: true,
124
+ slug: AdsConfiguration.HYPELAB_NATIVE_PLACEMENT_SLUG
125
+ },
126
+ dimensions: {
127
+ width: Math.max(160, containerWidth),
128
+ height: Math.max(16, containerHeight),
129
+ minContainerWidth: 2,
130
+ minContainerHeight: 2,
131
+ maxContainerWidth: Infinity,
132
+ maxContainerHeight: Infinity
133
+ }
134
+ });
135
+ //# sourceMappingURL=ads-meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ads-meta.js","sourceRoot":"","sources":["../src/ads-meta.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const TEMPLE_WALLET_AD_ATTRIBUTE_NAME = "twa";
2
+ export declare const TEMPLE_WALLET_NATIVE_AD_ATTRIBUTE_NAME = "twa-native";
3
+ export declare const SIBLING_REPLACEMENT_ATTRIBUTE_NAME = "twa-sibling-replacement";
4
+ export declare const AD_SEEN_THRESHOLD = 0.5;
5
+ export declare const AD_RENDER_START_MESSAGE_TYPE = "adRenderStart";
6
+ export declare const AD_RESIZE_MESSAGE_TYPE = "resize";
7
+ export declare const AD_READY_MESSAGE_TYPE = "ready";
8
+ export declare const AD_ERROR_MESSAGE_TYPE = "error";
@@ -0,0 +1,9 @@
1
+ export const TEMPLE_WALLET_AD_ATTRIBUTE_NAME = 'twa';
2
+ export const TEMPLE_WALLET_NATIVE_AD_ATTRIBUTE_NAME = 'twa-native';
3
+ export const SIBLING_REPLACEMENT_ATTRIBUTE_NAME = 'twa-sibling-replacement';
4
+ export const AD_SEEN_THRESHOLD = 0.5;
5
+ export const AD_RENDER_START_MESSAGE_TYPE = 'adRenderStart';
6
+ export const AD_RESIZE_MESSAGE_TYPE = 'resize';
7
+ export const AD_READY_MESSAGE_TYPE = 'ready';
8
+ export const AD_ERROR_MESSAGE_TYPE = 'error';
9
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,+BAA+B,GAAG,KAAK,CAAC;AACrD,MAAM,CAAC,MAAM,sCAAsC,GAAG,YAAY,CAAC;AACnE,MAAM,CAAC,MAAM,kCAAkC,GAAG,yBAAyB,CAAC;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,MAAM,CAAC,MAAM,4BAA4B,GAAG,eAAe,CAAC;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAC;AAC/C,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { makeTKeyAdView } from './make-tkey-ad';
2
+ export { makeHypelabAdView } from './make-hypelab-ad';
3
+ export { makePersonaAdView } from './make-persona-ad';
@@ -0,0 +1,4 @@
1
+ export { makeTKeyAdView } from './make-tkey-ad';
2
+ export { makeHypelabAdView } from './make-hypelab-ad';
3
+ export { makePersonaAdView } from './make-persona-ad';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/execute-ads-actions/ads-views/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { AdView } from 'src/types/ad-view';
2
+ import { AdDimensions, HypeLabAdSources } from 'src/types/ads-meta';
3
+ export declare const makeHypelabAdView: (source: HypeLabAdSources, dimensions: AdDimensions, origin: string) => AdView;
@@ -0,0 +1,60 @@
1
+ import { AES } from 'crypto-js';
2
+ import { AdsConfiguration } from 'src/ads-configuration';
3
+ export const makeHypelabAdView = (source, dimensions, origin) => {
4
+ const { width, height } = dimensions;
5
+ const iframe = document.createElement('iframe');
6
+ iframe.src = getHypelabIframeUrl(source, origin, width, height, iframe.id);
7
+ iframe.style.width = source.native ? '100%' : `${width}px`;
8
+ iframe.style.height = `${height}px`;
9
+ iframe.style.border = 'none';
10
+ return { element: iframe };
11
+ };
12
+ /**
13
+ * Returns URL for Hypelab ad iframe
14
+ * @param placementType Placement type
15
+ * @param origin Full URL of the page
16
+ * @param width Frame width
17
+ * @param height Frame height
18
+ */
19
+ const getHypelabIframeUrl = (source, origin, width, height, id) => {
20
+ let defaultWidth, defaultHeight, placementSlug;
21
+ if (source.native) {
22
+ placementSlug = AdsConfiguration.HYPELAB_NATIVE_PLACEMENT_SLUG;
23
+ defaultWidth = 360;
24
+ defaultHeight = 110;
25
+ }
26
+ else
27
+ switch (source.size) {
28
+ case 'small':
29
+ defaultWidth = 320;
30
+ defaultHeight = 50;
31
+ placementSlug = AdsConfiguration.HYPELAB_SMALL_PLACEMENT_SLUG;
32
+ break;
33
+ case 'high':
34
+ defaultWidth = 300;
35
+ defaultHeight = 250;
36
+ placementSlug = AdsConfiguration.HYPELAB_HIGH_PLACEMENT_SLUG;
37
+ break;
38
+ case 'wide':
39
+ defaultWidth = 728;
40
+ defaultHeight = 90;
41
+ placementSlug = AdsConfiguration.HYPELAB_WIDE_PLACEMENT_SLUG;
42
+ break;
43
+ }
44
+ const url = new URL(AdsConfiguration.HYPELAB_ADS_WINDOW_URL);
45
+ if (source.native) {
46
+ url.searchParams.set('vh', String(height !== null && height !== void 0 ? height : defaultHeight));
47
+ }
48
+ else {
49
+ url.searchParams.set('w', String(width !== null && width !== void 0 ? width : defaultWidth));
50
+ }
51
+ url.searchParams.set('h', String(height !== null && height !== void 0 ? height : defaultHeight));
52
+ url.searchParams.set('p', placementSlug);
53
+ url.searchParams.set('o', encryptWithAES(origin));
54
+ if (id) {
55
+ url.searchParams.set('id', id);
56
+ }
57
+ return url.toString();
58
+ };
59
+ const encryptWithAES = (text) => AES.encrypt(text, AdsConfiguration.TEMPLE_PASSPHRASE).toString();
60
+ //# sourceMappingURL=make-hypelab-ad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-hypelab-ad.js","sourceRoot":"","sources":["../../../src/execute-ads-actions/ads-views/make-hypelab-ad.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { AdView } from 'src/types/ad-view';
2
+ import { AdDimensions, PersonaAdShape } from 'src/types/ads-meta';
3
+ export declare const makePersonaAdView: (id: string, shape: PersonaAdShape, { width, height }: AdDimensions) => AdView;
@@ -0,0 +1,11 @@
1
+ import { AdsConfiguration } from 'src/ads-configuration';
2
+ export const makePersonaAdView = (id, shape, { width, height }) => {
3
+ const element = document.createElement('iframe');
4
+ element.src = AdsConfiguration.getPersonaIframeURL(id, shape);
5
+ element.id = id;
6
+ element.style.width = `${width}px`;
7
+ element.style.height = `${height}px`;
8
+ element.style.border = 'none';
9
+ return { element };
10
+ };
11
+ //# sourceMappingURL=make-persona-ad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-persona-ad.js","sourceRoot":"","sources":["../../../src/execute-ads-actions/ads-views/make-persona-ad.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAIzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAU,EAAE,KAAqB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAgB,EAAU,EAAE;IAC9G,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAEhB,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;IACrC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAE9B,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { AdView } from 'src/types/ad-view';
2
+ export declare const makeTKeyAdView: (width: number, height: number) => AdView;
@@ -0,0 +1,24 @@
1
+ import { AdsConfiguration } from 'src/ads-configuration';
2
+ export const makeTKeyAdView = (width, height) => {
3
+ const element = document.createElement('div');
4
+ element.style.width = `${width}px`;
5
+ element.style.height = `${height}px`;
6
+ const div = document.createElement('div');
7
+ div.style.width = `${width}px`;
8
+ div.style.height = `${height}px`;
9
+ element.appendChild(div);
10
+ const anchor = document.createElement('a');
11
+ anchor.href = AdsConfiguration.SWAP_TKEY_URL;
12
+ anchor.target = '_blank';
13
+ anchor.rel = 'noopener noreferrer';
14
+ anchor.style.width = '100%';
15
+ anchor.style.height = '100%';
16
+ div.appendChild(anchor);
17
+ const img = document.createElement('img');
18
+ img.src = AdsConfiguration.TKEY_INPAGE_AD_URL;
19
+ img.style.width = '100%';
20
+ img.style.height = '100%';
21
+ anchor.appendChild(img);
22
+ return { element };
23
+ };
24
+ //# sourceMappingURL=make-tkey-ad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-tkey-ad.js","sourceRoot":"","sources":["../../../src/execute-ads-actions/ads-views/make-tkey-ad.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,MAAc,EAAU,EAAE;IACtE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;IAErC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,IAAI,CAAC;IAC/B,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC;IAEjC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAEzB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,GAAG,gBAAgB,CAAC,aAAa,CAAC;IAC7C,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;IACzB,MAAM,CAAC,GAAG,GAAG,qBAAqB,CAAC;IACnC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAC7B,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAExB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,GAAG,GAAG,gBAAgB,CAAC,kBAAkB,CAAC;IAC9C,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;IACzB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IAC1B,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAExB,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { AdAction } from 'src/types/ads-actions';
2
+ export declare const executeAdsActions: (adsActions: AdAction[]) => Promise<PromiseSettledResult<void>[]>;
@@ -0,0 +1,23 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { AdActionType } from 'src/types/ads-actions';
11
+ import { processInsertAdAction } from './process-insert-ad-action';
12
+ export const executeAdsActions = (adsActions) => Promise.allSettled(adsActions.map((action) => __awaiter(void 0, void 0, void 0, function* () {
13
+ if (action.type === AdActionType.RemoveElement) {
14
+ action.element.remove();
15
+ }
16
+ else if (action.type === AdActionType.HideElement) {
17
+ action.element.style.setProperty('display', 'none');
18
+ }
19
+ else {
20
+ yield processInsertAdAction(action);
21
+ }
22
+ })));
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execute-ads-actions/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAY,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,UAAsB,EAAE,EAAE,CAC1D,OAAO,CAAC,UAAU,CAChB,UAAU,CAAC,GAAG,CAAC,CAAM,MAAM,EAAC,EAAE;IAC5B,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,aAAa,EAAE,CAAC;QAC/C,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;SAAM,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAA,CAAC,CACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const subscribeToAdsStackIframeLoadIfNecessary: (element: HTMLIFrameElement) => Promise<void>;
@@ -0,0 +1,123 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import browser from 'webextension-polyfill';
11
+ import { AdsConfiguration } from 'src/ads-configuration';
12
+ import { AD_ERROR_MESSAGE_TYPE, AD_READY_MESSAGE_TYPE, AD_RENDER_START_MESSAGE_TYPE, AD_RESIZE_MESSAGE_TYPE, AD_SEEN_THRESHOLD } from 'src/constants';
13
+ import { AdsProviderTitle } from 'src/types/ads-provider';
14
+ const loadingAdsIds = new Set();
15
+ const loadedAdsIds = new Set();
16
+ const alreadySentAnalyticsAdsIds = new Set();
17
+ const IFRAME_READY_TIMEOUT = 30000;
18
+ export const subscribeToAdsStackIframeLoadIfNecessary = (element) => __awaiter(void 0, void 0, void 0, function* () {
19
+ const adId = element.id;
20
+ if (loadingAdsIds.has(adId)) {
21
+ return;
22
+ }
23
+ loadingAdsIds.add(adId);
24
+ return new Promise((resolve, reject) => {
25
+ const responseTimeout = setTimeout(() => {
26
+ window.removeEventListener('message', messageListener);
27
+ reject(new Error(`Timeout exceeded for ${adId}`));
28
+ }, IFRAME_READY_TIMEOUT);
29
+ const messageListener = (event) => {
30
+ var _a, _b, _c;
31
+ if (event.source !== element.contentWindow)
32
+ return;
33
+ try {
34
+ const data = typeof event.data === 'string' ? JSON.parse(event.data) : event.data;
35
+ if (data.id !== adId)
36
+ return;
37
+ switch (data.type) {
38
+ case AD_READY_MESSAGE_TYPE:
39
+ resolve(data.adMetadata.source.providerName);
40
+ clearTimeout(responseTimeout);
41
+ break;
42
+ case AD_ERROR_MESSAGE_TYPE:
43
+ window.removeEventListener('message', messageListener);
44
+ element.style.display = 'none';
45
+ reject(new Error((_a = data.reason) !== null && _a !== void 0 ? _a : 'Unknown error'));
46
+ break;
47
+ case AD_RENDER_START_MESSAGE_TYPE:
48
+ const { dimensions } = data.adMetadata;
49
+ const { width, height } = dimensions;
50
+ if (width > 0 && height > 0) {
51
+ if (!((_b = element.style.width) === null || _b === void 0 ? void 0 : _b.endsWith('%'))) {
52
+ element.style.width = `${dimensions.width}px`;
53
+ }
54
+ element.style.height = `${dimensions.height}px`;
55
+ }
56
+ break;
57
+ case AD_RESIZE_MESSAGE_TYPE:
58
+ const { width: newWidth, height: newHeight } = data;
59
+ if (!((_c = element.style.width) === null || _c === void 0 ? void 0 : _c.endsWith('%'))) {
60
+ element.style.width = `${newWidth}px`;
61
+ }
62
+ element.style.height = `${newHeight}px`;
63
+ }
64
+ }
65
+ catch (error) {
66
+ console.error('Observing error:', error);
67
+ }
68
+ };
69
+ window.addEventListener('message', messageListener);
70
+ })
71
+ .then(providerName => {
72
+ if (loadedAdsIds.has(adId))
73
+ return;
74
+ loadedAdsIds.add(adId);
75
+ const adIsSeen = adRectIsSeen(element);
76
+ if (adIsSeen) {
77
+ sendExternalAdsActivity(adId, providerName);
78
+ }
79
+ else {
80
+ observeIntersection(element, providerName);
81
+ }
82
+ })
83
+ .catch(console.error)
84
+ .finally(() => void loadingAdsIds.delete(adId));
85
+ });
86
+ const observeIntersection = (element, providerName) => {
87
+ const observer = new IntersectionObserver(entries => {
88
+ if (entries.some(entry => entry.isIntersecting)) {
89
+ sendExternalAdsActivity(element.id, providerName);
90
+ observer.disconnect();
91
+ }
92
+ }, { threshold: AD_SEEN_THRESHOLD });
93
+ observer.observe(element);
94
+ };
95
+ const sendExternalAdsActivity = (adId, providerName) => {
96
+ if (alreadySentAnalyticsAdsIds.has(adId)) {
97
+ return;
98
+ }
99
+ alreadySentAnalyticsAdsIds.add(adId);
100
+ const url = window.parent.location.href;
101
+ browser.runtime
102
+ .sendMessage({
103
+ type: AdsConfiguration.EXTERNAL_ADS_ACTIVITY_MESSAGE_TYPE,
104
+ url,
105
+ provider: AdsProviderTitle[providerName]
106
+ })
107
+ .catch(err => void console.error(err));
108
+ };
109
+ const adRectIsSeen = (element) => {
110
+ const elementRect = element.getBoundingClientRect();
111
+ const viewport = window.visualViewport;
112
+ if (!viewport) {
113
+ return false;
114
+ }
115
+ const intersectionX0 = Math.min(Math.max(0, elementRect.x), viewport.width);
116
+ const intersectionX1 = Math.min(Math.max(0, elementRect.x + elementRect.width), viewport.width);
117
+ const intersectionY0 = Math.min(Math.max(0, elementRect.y), viewport.height);
118
+ const intersectionY1 = Math.min(Math.max(0, elementRect.y + elementRect.height), viewport.height);
119
+ const elementArea = elementRect.width * elementRect.height;
120
+ const intersectionArea = (intersectionX1 - intersectionX0) * (intersectionY1 - intersectionY0);
121
+ return intersectionArea / elementArea >= AD_SEEN_THRESHOLD;
122
+ };
123
+ //# sourceMappingURL=observing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observing.js","sourceRoot":"","sources":["../../src/execute-ads-actions/observing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { StringRecord } from 'src/utils';
2
+ export declare const overrideElementStyles: (element: HTMLElement, overrides: StringRecord) => void;
@@ -0,0 +1,6 @@
1
+ export const overrideElementStyles = (element, overrides) => {
2
+ for (const stylePropName in overrides) {
3
+ element.style.setProperty(stylePropName, overrides[stylePropName]);
4
+ }
5
+ };
6
+ //# sourceMappingURL=override-element-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"override-element-styles.js","sourceRoot":"","sources":["../../src/execute-ads-actions/override-element-styles.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAoB,EAAE,SAAuB,EAAE,EAAE;IACrF,KAAK,MAAM,aAAa,IAAI,SAAS,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { InsertAdAction } from 'src/types/ads-actions';
2
+ export declare const processInsertAdAction: (action: InsertAdAction) => Promise<void>;
@@ -0,0 +1,120 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { nanoid } from 'nanoid';
11
+ import { AdsConfiguration } from 'src/ads-configuration';
12
+ import { BANNER_ADS_META } from 'src/ads-meta';
13
+ import { SIBLING_REPLACEMENT_ATTRIBUTE_NAME, TEMPLE_WALLET_AD_ATTRIBUTE_NAME, TEMPLE_WALLET_NATIVE_AD_ATTRIBUTE_NAME } from 'src/constants';
14
+ import { AdActionType } from 'src/types/ads-actions';
15
+ import { subscribeToAdsStackIframeLoadIfNecessary } from './observing';
16
+ import { overrideElementStyles } from './override-element-styles';
17
+ const adjustToAd = (wrapperElement, adDimensions) => {
18
+ const predefinedStylesKeyToOverride = ['width', 'height'];
19
+ predefinedStylesKeyToOverride.forEach(dimensionName => {
20
+ var _a;
21
+ const predefinedStyleValue = (_a = wrapperElement.style[dimensionName]) !== null && _a !== void 0 ? _a : '';
22
+ if (/^\d+(px)?$/.test(predefinedStyleValue)) {
23
+ const predefinedSize = parseInt(predefinedStyleValue, 10);
24
+ if (predefinedSize < adDimensions[dimensionName]) {
25
+ wrapperElement.style.removeProperty(dimensionName);
26
+ }
27
+ }
28
+ });
29
+ };
30
+ const processInsertAdActionOnce = (action, wrapperElement, insertionPoint) => __awaiter(void 0, void 0, void 0, function* () {
31
+ const { elementStyle = {}, stylesOverrides = [] } = action;
32
+ stylesOverrides.sort((a, b) => a.parentDepth - b.parentDepth);
33
+ let stylesOverridesCurrentElement;
34
+ const adId = nanoid();
35
+ const adElement = document.createElement('iframe');
36
+ adElement.src = AdsConfiguration.getAdsStackIframeURL(adId, action.adsMetadata, window.location.href);
37
+ adElement.id = adId;
38
+ const firstAdMetadataOrId = action.adsMetadata[0];
39
+ const { dimensions } = typeof firstAdMetadataOrId === 'number' ? BANNER_ADS_META[firstAdMetadataOrId] : firstAdMetadataOrId;
40
+ adElement.style.width = `${dimensions.width}px`;
41
+ adElement.style.height = `${dimensions.height}px`;
42
+ adElement.style.border = 'none';
43
+ for (const styleProp in elementStyle) {
44
+ adElement.style.setProperty(styleProp, elementStyle[styleProp]);
45
+ }
46
+ adElement.setAttribute(TEMPLE_WALLET_AD_ATTRIBUTE_NAME, 'true');
47
+ adjustToAd(wrapperElement, dimensions);
48
+ insertionPoint.appendChild(adElement);
49
+ switch (action.type) {
50
+ case AdActionType.ReplaceAllChildren:
51
+ stylesOverridesCurrentElement = action.parent;
52
+ action.parent.innerHTML = '';
53
+ action.parent.appendChild(wrapperElement);
54
+ break;
55
+ case AdActionType.ReplaceElement:
56
+ stylesOverridesCurrentElement = action.element.parentElement;
57
+ action.element.replaceWith(wrapperElement);
58
+ break;
59
+ default:
60
+ if (action.isSiblingReplacement) {
61
+ wrapperElement.setAttribute(SIBLING_REPLACEMENT_ATTRIBUTE_NAME, 'true');
62
+ }
63
+ stylesOverridesCurrentElement = action.parent;
64
+ action.parent.insertBefore(wrapperElement, action.parent.children[action.insertionIndex]);
65
+ break;
66
+ }
67
+ subscribeToAdsStackIframeLoadIfNecessary(adElement);
68
+ let currentParentDepth = 0;
69
+ stylesOverrides.forEach(({ parentDepth, style }) => {
70
+ while (parentDepth > currentParentDepth && stylesOverridesCurrentElement) {
71
+ stylesOverridesCurrentElement = stylesOverridesCurrentElement.parentElement;
72
+ currentParentDepth++;
73
+ }
74
+ if (stylesOverridesCurrentElement) {
75
+ overrideElementStyles(stylesOverridesCurrentElement, style);
76
+ }
77
+ });
78
+ });
79
+ export const processInsertAdAction = (action) => __awaiter(void 0, void 0, void 0, function* () {
80
+ const { wrapperStyle = {}, adsMetadata, wrapperType = 'div', colsAfter = 0, colsBefore = 0, colspan = 1 } = action;
81
+ const isNativeAd = adsMetadata.every(adMetadata => typeof adMetadata === 'object');
82
+ let wrapperElement;
83
+ let insertionPoint;
84
+ if (wrapperType === 'div') {
85
+ wrapperElement = document.createElement('div');
86
+ insertionPoint = wrapperElement;
87
+ }
88
+ else {
89
+ wrapperElement = document.createElement('tbody');
90
+ const row = document.createElement('tr');
91
+ wrapperElement.appendChild(row);
92
+ for (let i = 0; i < colsBefore; i++) {
93
+ row.appendChild(document.createElement('td'));
94
+ }
95
+ const cell = document.createElement('td');
96
+ cell.colSpan = colspan;
97
+ row.appendChild(cell);
98
+ insertionPoint = cell;
99
+ for (let i = 0; i < colsAfter; i++) {
100
+ row.appendChild(document.createElement('td'));
101
+ }
102
+ }
103
+ wrapperElement.setAttribute(TEMPLE_WALLET_AD_ATTRIBUTE_NAME, 'true');
104
+ if (isNativeAd) {
105
+ wrapperElement.setAttribute(TEMPLE_WALLET_NATIVE_AD_ATTRIBUTE_NAME, 'true');
106
+ }
107
+ overrideElementStyles(wrapperElement, wrapperStyle);
108
+ yield processInsertAdActionOnce(action, wrapperElement, insertionPoint).catch(error => {
109
+ console.error('Inserting an ad attempt error:', error);
110
+ const emptyAdElement = document.createElement('div');
111
+ emptyAdElement.setAttribute(TEMPLE_WALLET_AD_ATTRIBUTE_NAME, 'true');
112
+ if (isNativeAd) {
113
+ emptyAdElement.setAttribute(TEMPLE_WALLET_NATIVE_AD_ATTRIBUTE_NAME, 'true');
114
+ }
115
+ emptyAdElement.style.display = 'none';
116
+ wrapperElement.replaceWith(emptyAdElement);
117
+ throw error;
118
+ });
119
+ });
120
+ //# sourceMappingURL=process-insert-ad-action.js.map