@surfside/ads 2.0.0 → 3.6.0-0652b02f.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 (88) hide show
  1. package/README.md +15 -69
  2. package/lib/cjs/BuildInfo.js +9 -0
  3. package/lib/cjs/BuildInfo.js.map +1 -0
  4. package/lib/cjs/Constants.js +5 -0
  5. package/lib/cjs/Constants.js.map +1 -0
  6. package/lib/cjs/Init.js +130 -0
  7. package/lib/cjs/Init.js.map +1 -0
  8. package/lib/cjs/components/Banner.js +136 -0
  9. package/lib/cjs/components/Banner.js.map +1 -0
  10. package/lib/cjs/components/Card.js +170 -0
  11. package/lib/cjs/components/Card.js.map +1 -0
  12. package/lib/cjs/components/Carousel.js +249 -0
  13. package/lib/cjs/components/Carousel.js.map +1 -0
  14. package/lib/cjs/components/Creative.js +285 -0
  15. package/lib/cjs/components/Creative.js.map +1 -0
  16. package/lib/cjs/components/Dynamic.js +310 -0
  17. package/lib/cjs/components/Dynamic.js.map +1 -0
  18. package/lib/cjs/components/SimpleCreative.js +81 -0
  19. package/lib/cjs/components/SimpleCreative.js.map +1 -0
  20. package/lib/cjs/components/Video.js +144 -0
  21. package/lib/cjs/components/Video.js.map +1 -0
  22. package/lib/cjs/demo/test.js +7 -0
  23. package/lib/cjs/demo/test.js.map +1 -0
  24. package/lib/cjs/index.module.js +107 -0
  25. package/lib/cjs/index.module.js.map +1 -0
  26. package/lib/cjs/index.script.js +102 -0
  27. package/lib/cjs/index.script.js.map +1 -0
  28. package/lib/cjs/index.script.mock.js +154 -0
  29. package/lib/cjs/index.script.mock.js.map +1 -0
  30. package/lib/cjs/service/Init.js +3 -0
  31. package/lib/cjs/service/Init.js.map +1 -0
  32. package/lib/cjs/util/Attributes.js +93 -0
  33. package/lib/cjs/util/Attributes.js.map +1 -0
  34. package/lib/cjs/util/Types.js +3 -0
  35. package/lib/cjs/util/Types.js.map +1 -0
  36. package/lib/esm/BuildInfo.js +6 -0
  37. package/lib/esm/BuildInfo.js.map +1 -0
  38. package/lib/esm/Constants.js +2 -0
  39. package/lib/esm/Constants.js.map +1 -0
  40. package/lib/esm/Init.js +92 -0
  41. package/lib/esm/Init.js.map +1 -0
  42. package/lib/esm/components/Banner.js +132 -0
  43. package/lib/esm/components/Banner.js.map +1 -0
  44. package/lib/esm/components/Card.js +166 -0
  45. package/lib/esm/components/Card.js.map +1 -0
  46. package/lib/esm/components/Carousel.js +245 -0
  47. package/lib/esm/components/Carousel.js.map +1 -0
  48. package/lib/esm/components/Creative.js +280 -0
  49. package/lib/esm/components/Creative.js.map +1 -0
  50. package/lib/esm/components/Dynamic.js +306 -0
  51. package/lib/esm/components/Dynamic.js.map +1 -0
  52. package/lib/esm/components/SimpleCreative.js +75 -0
  53. package/lib/esm/components/SimpleCreative.js.map +1 -0
  54. package/lib/esm/components/Video.js +140 -0
  55. package/lib/esm/components/Video.js.map +1 -0
  56. package/lib/esm/demo/test.js +5 -0
  57. package/lib/esm/demo/test.js.map +1 -0
  58. package/lib/esm/index.module.js +67 -0
  59. package/lib/esm/index.module.js.map +1 -0
  60. package/lib/esm/index.script.js +100 -0
  61. package/lib/esm/index.script.js.map +1 -0
  62. package/lib/esm/index.script.mock.js +152 -0
  63. package/lib/esm/index.script.mock.js.map +1 -0
  64. package/lib/esm/service/Init.js +2 -0
  65. package/lib/esm/service/Init.js.map +1 -0
  66. package/lib/esm/util/Attributes.js +81 -0
  67. package/lib/esm/util/Attributes.js.map +1 -0
  68. package/lib/esm/util/Types.js +2 -0
  69. package/lib/esm/util/Types.js.map +1 -0
  70. package/lib/types/BuildInfo.d.ts +5 -0
  71. package/lib/types/Constants.d.ts +1 -0
  72. package/lib/types/Init.d.ts +31 -0
  73. package/lib/types/components/Banner.d.ts +17 -0
  74. package/lib/types/components/Card.d.ts +18 -0
  75. package/lib/types/components/Carousel.d.ts +32 -0
  76. package/lib/types/components/Creative.d.ts +84 -0
  77. package/lib/types/components/Dynamic.d.ts +24 -0
  78. package/lib/types/components/SimpleCreative.d.ts +20 -0
  79. package/lib/types/components/Video.d.ts +23 -0
  80. package/lib/types/demo/test.d.ts +1 -0
  81. package/lib/types/index.module.d.ts +12 -0
  82. package/lib/types/index.script.d.ts +1 -0
  83. package/lib/types/index.script.mock.d.ts +1 -0
  84. package/lib/types/service/Init.d.ts +1 -0
  85. package/lib/types/util/Attributes.d.ts +24 -0
  86. package/lib/types/util/Types.d.ts +3 -0
  87. package/package.json +42 -73
  88. package/lib/index.js +0 -2
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SurfsideCarousel = exports.NextType = void 0;
4
+ const ads_core_1 = require("@surfside/ads-core");
5
+ const Creative_1 = require("./Creative");
6
+ const SimpleCreative_1 = require("./SimpleCreative");
7
+ const Constants_1 = require("../Constants");
8
+ exports.NextType = {
9
+ Product: 'product',
10
+ Page: 'page'
11
+ };
12
+ class SurfsideCarousel extends Creative_1.CreativeComponent {
13
+ _cancellationToken = new ads_core_1.CancellationToken();
14
+ _renderDebounce;
15
+ maxItems;
16
+ cardMinWidth = Constants_1.DefaultMinCardWidth;
17
+ cardMaxWidth;
18
+ strategy = Creative_1.ProductFeedStrategy.Hybrid;
19
+ recommend = 'top-products';
20
+ nextType = exports.NextType.Page;
21
+ static get observedAttributes() {
22
+ return [
23
+ ...Creative_1.CreativeComponent.observedBaseAttributes,
24
+ 'max-items',
25
+ 'card-min-width',
26
+ 'card-max-width',
27
+ 'strategy',
28
+ 'recommend',
29
+ 'next-type'
30
+ ];
31
+ }
32
+ constructor(initApi, getUserId, logger) {
33
+ logger?.info('Building carousel');
34
+ super(initApi, getUserId, logger);
35
+ }
36
+ getComponentName() {
37
+ return 'SurfsideCarousel';
38
+ }
39
+ async attributeChangedCallback(name, oldValue, newValue) {
40
+ const log = this.log?.with('attributeChangedCallback');
41
+ log?.info('Carousel attribute changed');
42
+ switch (name) {
43
+ case 'max-items': {
44
+ try {
45
+ this.maxItems = (0, SimpleCreative_1.IntValOrThrow)(this, 'max-items', newValue);
46
+ }
47
+ catch (err) {
48
+ log?.warn('Failed to parse. Got', err);
49
+ }
50
+ break;
51
+ }
52
+ case 'card-min-width': {
53
+ try {
54
+ this.cardMinWidth = (0, SimpleCreative_1.IntValOrThrow)(this, 'card-min-width', newValue);
55
+ }
56
+ catch (err) {
57
+ log?.warn('Failed to parse. Got', err);
58
+ }
59
+ break;
60
+ }
61
+ case 'card-max-width': {
62
+ try {
63
+ this.cardMaxWidth = (0, SimpleCreative_1.IntValOrThrow)(this, 'card-max-width', newValue);
64
+ }
65
+ catch (err) {
66
+ log?.warn('Failed to parse. Got', err);
67
+ }
68
+ break;
69
+ }
70
+ case 'strategy': {
71
+ const strategy = newValue?.toLowerCase();
72
+ switch (strategy) {
73
+ case Creative_1.ProductFeedStrategy.Sponsored:
74
+ case Creative_1.ProductFeedStrategy.Hybrid:
75
+ case Creative_1.ProductFeedStrategy.Recommended:
76
+ this.strategy = strategy;
77
+ break;
78
+ default:
79
+ log?.warn('Unrecognized or null strategy:', newValue);
80
+ break;
81
+ }
82
+ break;
83
+ }
84
+ case 'recommend': {
85
+ const recommend = newValue?.toLowerCase();
86
+ switch (recommend) {
87
+ case Creative_1.RecommenderTypeInputs.TopProducts:
88
+ this.recommend = 'top-products';
89
+ break;
90
+ case Creative_1.RecommenderTypeInputs.ForYou:
91
+ this.recommend = 'for-you';
92
+ break;
93
+ case Creative_1.RecommenderTypeInputs.PastPurchases:
94
+ case Creative_1.RecommenderTypeInputs.BuyAgain:
95
+ this.recommend = 'past-purchases';
96
+ break;
97
+ default:
98
+ log?.warn('Unrecognized or null recommender type:', newValue);
99
+ break;
100
+ }
101
+ break;
102
+ }
103
+ case 'next-type': {
104
+ const nextType = newValue?.toLowerCase();
105
+ switch (nextType) {
106
+ case exports.NextType.Page:
107
+ case exports.NextType.Product:
108
+ this.nextType = nextType;
109
+ break;
110
+ default:
111
+ log?.warn('Unrecognized or null next-type:', newValue);
112
+ break;
113
+ }
114
+ break;
115
+ }
116
+ default: {
117
+ const baseName = name;
118
+ if (Creative_1.CreativeComponent.observedBaseAttributes.includes(baseName)) {
119
+ await super.baseAttributeChangedCallback(baseName, oldValue, newValue, log);
120
+ }
121
+ break;
122
+ }
123
+ }
124
+ const totem = crypto.randomUUID();
125
+ this.totem = totem;
126
+ log?.debug(name, 'totem', totem);
127
+ if (!this.attributesLoaded()) {
128
+ log?.debug('Attributes not ready yet...', this.accountId);
129
+ return;
130
+ }
131
+ else {
132
+ log?.debug('Attributes ready!');
133
+ }
134
+ await this.lazyLoadApi();
135
+ if (this.totem !== totem) {
136
+ log?.debug('Totem changed. Deferring rendering of carousel until last attribute changed', totem, this.totem);
137
+ return;
138
+ }
139
+ if (this.isConnected) {
140
+ log?.debug(`Rendering carousel upon [${name}] changed`);
141
+ await this.render();
142
+ }
143
+ }
144
+ async connectedCallback() {
145
+ super.connectedCallback();
146
+ const log = this.log?.with('connectedCallback');
147
+ log?.info('connectedCallback');
148
+ super.readBaseAttributes();
149
+ await this.initApi();
150
+ const totem = crypto.randomUUID();
151
+ this.totem = totem;
152
+ if (this.attributesLoaded()) {
153
+ await this.lazyLoadApi();
154
+ if (this.totem !== totem) {
155
+ log?.debug('Attributes changed after connectedCallback, waiting to render');
156
+ return;
157
+ }
158
+ log?.debug('Rendering upon connectedCallback');
159
+ await this.render();
160
+ }
161
+ else {
162
+ this.log?.warn('ConnectedCallback called before attributes were all ready.');
163
+ }
164
+ }
165
+ disconnectedCallback() {
166
+ super.disconnectedCallback();
167
+ this._cancellationToken.cancel();
168
+ if (this._renderDebounce !== undefined) {
169
+ globalThis.clearTimeout(this._renderDebounce);
170
+ this._renderDebounce = undefined;
171
+ }
172
+ }
173
+ async render() {
174
+ const log = this.log?.with('SurfsideCarousel', { zoneId: this.zoneId });
175
+ log?.info('Rendering carousel');
176
+ if (this._renderDebounce !== undefined) {
177
+ log?.debug('Debounce was not undefined');
178
+ globalThis.clearTimeout(this._renderDebounce);
179
+ }
180
+ this._renderDebounce = globalThis.setTimeout(async () => {
181
+ log?.info('Rendering carousel', this.api);
182
+ const stopTimer = log?.time?.('render carousel');
183
+ this._cancellationToken.cancel();
184
+ const token = new ads_core_1.CancellationToken();
185
+ this._cancellationToken = token;
186
+ const { startRequest, defaultNative, buildHybridCarousel, buildSponsoredCarousel, buildRecommendedCarousel, renderCarousel } = this.api;
187
+ const carousel = (0, ads_core_1.TryDoFlat)(() => {
188
+ log?.debug('Starting request');
189
+ const request = startRequest(this.zoneId)
190
+ .withSurfCategory(this.category)
191
+ .withKeywords(this.keywords)
192
+ .withProductCards(defaultNative())
193
+ .build();
194
+ switch (this.strategy) {
195
+ case Creative_1.ProductFeedStrategy.Hybrid:
196
+ log?.debug('building Hybrid carousel');
197
+ return buildHybridCarousel({
198
+ type: this.recommend
199
+ }, request);
200
+ case Creative_1.ProductFeedStrategy.Sponsored:
201
+ log?.debug('Building sponsored carousel');
202
+ return buildSponsoredCarousel(request);
203
+ case Creative_1.ProductFeedStrategy.Recommended:
204
+ log?.debug('Building recommended carousel');
205
+ return buildRecommendedCarousel({
206
+ type: this.recommend
207
+ }, this.category?.[0]);
208
+ default:
209
+ return (0, ads_core_1.Err)(new ads_core_1.InvalidRecommenderTypeError(this.strategy));
210
+ }
211
+ });
212
+ if (!carousel.ok) {
213
+ log?.error('Failed to build carousel!', carousel.error);
214
+ return;
215
+ }
216
+ log?.info('Rendering carousel');
217
+ const element = await renderCarousel(carousel.value, this.cardMinWidth, this.maxItems === undefined || this.maxItems === 0
218
+ ? {
219
+ type: 'infinite'
220
+ }
221
+ : {
222
+ type: 'limited',
223
+ limit: this.maxItems
224
+ }, this.nextType, this.cardMaxWidth);
225
+ log?.info('rendered carousel element');
226
+ if (!element.ok) {
227
+ log?.error(element.error);
228
+ return;
229
+ }
230
+ if (this._cancellationToken.cancelled) {
231
+ log?.info('Cancelled rendering carousel');
232
+ return;
233
+ }
234
+ stopTimer?.();
235
+ element.value.element.classList.add(`surf-zone-${this.zoneId}`);
236
+ this.shadow.innerHTML = '';
237
+ this.shadow.appendChild(element.value.element);
238
+ const elementInitRes = await element.value.init();
239
+ if (!elementInitRes.ok) {
240
+ log?.error('Carousel first page was empty', elementInitRes);
241
+ this.remove();
242
+ }
243
+ log?.info('Appended carousel to DOM');
244
+ this.restartEndToEndTimer();
245
+ }, Creative_1.DEBOUNCE_THRESHOLD);
246
+ }
247
+ }
248
+ exports.SurfsideCarousel = SurfsideCarousel;
249
+ //# sourceMappingURL=Carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Carousel.js","sourceRoot":"../@surfside-ads/","sources":["components/Carousel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreativeComponent = exports.DEBOUNCE_THRESHOLD = exports.AttributeValOrThrow = exports.RecommenderTypeInputs = exports.ProductFeedStrategy = void 0;
4
+ const ads_core_1 = require("@surfside/ads-core");
5
+ const Attributes_1 = require("../util/Attributes");
6
+ exports.ProductFeedStrategy = {
7
+ Sponsored: 'sponsored',
8
+ Hybrid: 'hybrid',
9
+ Recommended: 'recommended'
10
+ };
11
+ exports.RecommenderTypeInputs = {
12
+ TopProducts: 'top-products',
13
+ ForYou: 'for-you',
14
+ BuyAgain: 'buy-again',
15
+ PastPurchases: 'past-purchases'
16
+ };
17
+ const AttributeValOrThrow = (element, attribute, value) => {
18
+ if (value !== null) {
19
+ return value;
20
+ }
21
+ throw new Attributes_1.AttributeNotFoundError(element, attribute);
22
+ };
23
+ exports.AttributeValOrThrow = AttributeValOrThrow;
24
+ exports.DEBOUNCE_THRESHOLD = 10;
25
+ class CreativeComponent extends HTMLElement {
26
+ _initApi;
27
+ _getUserId;
28
+ accountId;
29
+ siteId;
30
+ locationId;
31
+ channelId;
32
+ zoneId;
33
+ category = [];
34
+ keywords = [];
35
+ shadow;
36
+ api;
37
+ log;
38
+ /* Value to check for mutibility */
39
+ totem;
40
+ _stopTimer;
41
+ restartEndToEndTimer;
42
+ /* Checking for equality while debugging */
43
+ _instanceId;
44
+ get instanceId() {
45
+ return this._instanceId;
46
+ }
47
+ _monkeyHistoryReplaceCallback = () => {
48
+ this.log?.info('Running monkey-patch re-init function');
49
+ this.initApi();
50
+ };
51
+ /* Re-auction timer state. Paused while the window is blurred or the document is hidden */
52
+ _reauctionTimer;
53
+ _reauctionCallback;
54
+ _reauctionRemainingMs = 0;
55
+ _reauctionStartedAt = 0;
56
+ _windowBlurred = false;
57
+ _blurCallback = () => {
58
+ this._windowBlurred = true;
59
+ this.pauseReauction();
60
+ };
61
+ _focusCallback = () => {
62
+ this._windowBlurred = false;
63
+ this.resumeReauction();
64
+ };
65
+ _visibilityChangeCallback = () => {
66
+ if (globalThis.document.visibilityState === 'hidden') {
67
+ this.pauseReauction();
68
+ }
69
+ else {
70
+ this.resumeReauction();
71
+ }
72
+ };
73
+ constructor(_initApi, _getUserId, logger) {
74
+ super();
75
+ this._initApi = _initApi;
76
+ this._getUserId = _getUserId;
77
+ this._instanceId = crypto.randomUUID();
78
+ this.shadow = this.attachShadow({ mode: 'open' });
79
+ this.log = (0, ads_core_1.Ctx)(logger)?.with(this.getComponentName());
80
+ this.restartEndToEndTimer = () => {
81
+ if (this._stopTimer !== undefined) {
82
+ this._stopTimer();
83
+ }
84
+ this._stopTimer = this.log?.time?.(this.constructor.name + '-e2e');
85
+ };
86
+ this.restartEndToEndTimer();
87
+ }
88
+ connectedCallback() {
89
+ globalThis.window.addEventListener('monkeyHistoryReplace', this._monkeyHistoryReplaceCallback);
90
+ globalThis.window.addEventListener('popstate', this._monkeyHistoryReplaceCallback);
91
+ globalThis.window.addEventListener('blur', this._blurCallback);
92
+ globalThis.window.addEventListener('focus', this._focusCallback);
93
+ globalThis.document.addEventListener('visibilitychange', this._visibilityChangeCallback);
94
+ }
95
+ static get observedBaseAttributes() {
96
+ return [
97
+ 'account-id',
98
+ 'site-id',
99
+ 'location-id',
100
+ 'channel-id',
101
+ 'zone-id',
102
+ 'keywords',
103
+ 'category',
104
+ ];
105
+ }
106
+ getBaseAttributeValues() {
107
+ return {
108
+ accountId: this.accountId,
109
+ siteId: this.siteId,
110
+ channelId: this.channelId,
111
+ locationId: this.locationId,
112
+ zoneId: this.zoneId,
113
+ category: this.category,
114
+ keywords: this.keywords
115
+ };
116
+ }
117
+ attributesLoaded() {
118
+ return (this.accountId !== undefined &&
119
+ this.siteId !== undefined &&
120
+ this.channelId !== undefined &&
121
+ this.locationId !== undefined &&
122
+ this.zoneId !== undefined &&
123
+ this.category !== undefined &&
124
+ this.keywords !== undefined &&
125
+ this.accountId !== null &&
126
+ this.siteId !== null &&
127
+ this.channelId !== null &&
128
+ this.locationId !== null &&
129
+ this.zoneId !== null &&
130
+ this.category !== null &&
131
+ this.keywords !== null);
132
+ }
133
+ async lazyLoadApi() {
134
+ if (this.api === undefined && this.attributesLoaded()) {
135
+ await this.initApi();
136
+ }
137
+ }
138
+ async baseAttributeChangedCallback(key, oldValue, newValue, logger) {
139
+ const log = logger?.with('baseAttributeChangedCallback');
140
+ log?.info('Detected base attribute change. key, oldValue, newValue:', key, oldValue, newValue);
141
+ let reInit = false;
142
+ switch (key) {
143
+ case 'account-id':
144
+ this.accountId = newValue ?? undefined;
145
+ reInit = true;
146
+ log?.debug('account-id', this.accountId);
147
+ break;
148
+ case 'site-id':
149
+ this.siteId = newValue ?? undefined;
150
+ reInit = true;
151
+ log?.debug('site-id', this.siteId);
152
+ break;
153
+ case 'location-id':
154
+ this.locationId = newValue ?? undefined;
155
+ reInit = true;
156
+ log?.debug('location-id', this.locationId);
157
+ break;
158
+ case 'channel-id':
159
+ this.channelId = newValue ?? undefined;
160
+ reInit = true;
161
+ log?.debug('channel-id', this.channelId);
162
+ break;
163
+ case 'zone-id':
164
+ this.zoneId = newValue ?? undefined;
165
+ log?.debug('zone-id', this.zoneId);
166
+ break;
167
+ case 'category':
168
+ this.category = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'category'))
169
+ ?.split(',')
170
+ .map(k => k.trim())
171
+ ?? this.category ?? [this.api?.configuration.category];
172
+ log?.debug('surf-category', this.category);
173
+ break;
174
+ case 'keywords':
175
+ this.keywords = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'keywords'))
176
+ ?.split(',')
177
+ .map(k => k.trim())
178
+ ?? this.keywords ?? [];
179
+ log?.debug('keywords', this.keywords);
180
+ break;
181
+ }
182
+ if (reInit) {
183
+ log?.info('Re-initializing API');
184
+ await this.initApi();
185
+ }
186
+ }
187
+ disconnectedCallback() {
188
+ this.log?.info('Disconnected - removing monkey history and focus listeners');
189
+ globalThis.window.removeEventListener('monkeyHistoryReplace', this._monkeyHistoryReplaceCallback);
190
+ globalThis.window.removeEventListener('popstate', this._monkeyHistoryReplaceCallback);
191
+ globalThis.window.removeEventListener('blur', this._blurCallback);
192
+ globalThis.window.removeEventListener('focus', this._focusCallback);
193
+ globalThis.document.removeEventListener('visibilitychange', this._visibilityChangeCallback);
194
+ this.clearReauction();
195
+ }
196
+ reauctionPaused() {
197
+ return this._windowBlurred || globalThis.document.visibilityState === 'hidden';
198
+ }
199
+ /**
200
+ * Schedules `callback` to run after `intervalMs`, replacing any pending re-auction.
201
+ * The countdown is paused while the window is blurred or the document is hidden, and
202
+ * resumes with the remaining time once the page regains focus.
203
+ */
204
+ scheduleReauction(callback, intervalMs) {
205
+ this.clearReauction();
206
+ this._reauctionCallback = callback;
207
+ this._reauctionRemainingMs = intervalMs;
208
+ if (this.reauctionPaused()) {
209
+ this.log?.info('Page is blurred or hidden. Re-auction paused until it regains focus');
210
+ return;
211
+ }
212
+ this.startReauctionTimer();
213
+ }
214
+ clearReauction() {
215
+ if (this._reauctionTimer !== undefined) {
216
+ globalThis.clearTimeout(this._reauctionTimer);
217
+ }
218
+ this._reauctionTimer = undefined;
219
+ this._reauctionCallback = undefined;
220
+ }
221
+ startReauctionTimer() {
222
+ const callback = this._reauctionCallback;
223
+ if (callback === undefined || this._reauctionTimer !== undefined) {
224
+ return;
225
+ }
226
+ this._reauctionStartedAt = Date.now();
227
+ this._reauctionTimer = globalThis.setTimeout(() => {
228
+ this._reauctionTimer = undefined;
229
+ this._reauctionCallback = undefined;
230
+ callback();
231
+ }, this._reauctionRemainingMs);
232
+ }
233
+ pauseReauction() {
234
+ if (this._reauctionTimer === undefined) {
235
+ return;
236
+ }
237
+ globalThis.clearTimeout(this._reauctionTimer);
238
+ this._reauctionTimer = undefined;
239
+ this._reauctionRemainingMs = Math.max(this._reauctionRemainingMs - (Date.now() - this._reauctionStartedAt), 0);
240
+ this.log?.info('Pausing re-auction', { remainingMs: this._reauctionRemainingMs });
241
+ }
242
+ resumeReauction() {
243
+ if (this._reauctionCallback === undefined || this.reauctionPaused()) {
244
+ return;
245
+ }
246
+ this.log?.info('Resuming re-auction', { remainingMs: this._reauctionRemainingMs });
247
+ this.startReauctionTimer();
248
+ }
249
+ async initApi() {
250
+ const log = this.log?.with('initApi');
251
+ log?.info('Initializing API');
252
+ const userId = await this._getUserId();
253
+ log?.info(this.accountId, this.siteId, this.channelId, this.locationId, userId);
254
+ if (this.accountId === undefined ||
255
+ this.siteId === undefined ||
256
+ this.channelId === undefined ||
257
+ this.locationId === undefined) {
258
+ log?.warn('Component isn\'t fully initialized yet');
259
+ return;
260
+ }
261
+ log?.info('Component initialized');
262
+ this.api = (0, ads_core_1.GetValueOrThrow)(await this._initApi(this.accountId, this.siteId, this.channelId, this.locationId, userId, globalThis.window.location.href));
263
+ }
264
+ readBaseAttributes() {
265
+ const log = this.log?.with('readBaseAttributes');
266
+ log?.info('Reading base attributes');
267
+ this.accountId = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'account-id')) ?? this.accountId;
268
+ this.siteId = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'site-id')) ?? this.siteId;
269
+ this.locationId = (0, ads_core_1.GetValue)((0, ads_core_1.First)((0, Attributes_1.ReadAttribute)(this, 'location-id'), (0, Attributes_1.ReadAttribute)(this, 'store-id'))) ?? this.locationId;
270
+ this.channelId = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'channel-id')) ?? this.channelId;
271
+ this.zoneId = (0, ads_core_1.GetValue)((0, ads_core_1.First)((0, Attributes_1.ReadAttribute)(this, 'zone-id'), (0, Attributes_1.ReadAttribute)(this, 'placement-id'))) ?? this.zoneId;
272
+ this.category = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'category'))
273
+ ?.split(',')
274
+ .map(k => k.trim())
275
+ ?? this.category ?? [this.api?.configuration.category];
276
+ log?.info('category', this.category);
277
+ this.keywords = (0, ads_core_1.GetValue)((0, Attributes_1.ReadAttribute)(this, 'keywords'))
278
+ ?.split(',')
279
+ .map(k => k.trim())
280
+ ?? this.keywords ?? [];
281
+ log?.debug(this.accountId, this.siteId, this.channelId, this.locationId, this.zoneId, this.category, this.keywords);
282
+ }
283
+ }
284
+ exports.CreativeComponent = CreativeComponent;
285
+ //# sourceMappingURL=Creative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Creative.js","sourceRoot":"../@surfside-ads/","sources":["components/Creative.ts"],"names":[],"mappings":"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"}