@surfside/ads 3.6.2 → 3.6.4-4c0a326f.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/BuildInfo.js +9 -0
- package/lib/cjs/BuildInfo.js.map +1 -0
- package/lib/cjs/Constants.js +5 -0
- package/lib/cjs/Constants.js.map +1 -0
- package/lib/cjs/Init.js +130 -0
- package/lib/cjs/Init.js.map +1 -0
- package/lib/cjs/components/Banner.js +135 -0
- package/lib/cjs/components/Banner.js.map +1 -0
- package/lib/cjs/components/Card.js +162 -0
- package/lib/cjs/components/Card.js.map +1 -0
- package/lib/cjs/components/Carousel.js +241 -0
- package/lib/cjs/components/Carousel.js.map +1 -0
- package/lib/cjs/components/Creative.js +203 -0
- package/lib/cjs/components/Creative.js.map +1 -0
- package/lib/cjs/components/Dynamic.js +300 -0
- package/lib/cjs/components/Dynamic.js.map +1 -0
- package/lib/cjs/components/SimpleCreative.js +75 -0
- package/lib/cjs/components/SimpleCreative.js.map +1 -0
- package/lib/cjs/components/Video.js +134 -0
- package/lib/cjs/components/Video.js.map +1 -0
- package/lib/cjs/demo/test.js +7 -0
- package/lib/cjs/demo/test.js.map +1 -0
- package/lib/cjs/index.module.js +107 -0
- package/lib/cjs/index.module.js.map +1 -0
- package/lib/cjs/index.script.js +102 -0
- package/lib/cjs/index.script.js.map +1 -0
- package/lib/cjs/index.script.mock.js +154 -0
- package/lib/cjs/index.script.mock.js.map +1 -0
- package/lib/cjs/service/Init.js +3 -0
- package/lib/cjs/service/Init.js.map +1 -0
- package/lib/cjs/util/Attributes.js +93 -0
- package/lib/cjs/util/Attributes.js.map +1 -0
- package/lib/cjs/util/Types.js +3 -0
- package/lib/cjs/util/Types.js.map +1 -0
- package/lib/esm/BuildInfo.js +6 -0
- package/lib/esm/BuildInfo.js.map +1 -0
- package/lib/esm/Constants.js +2 -0
- package/lib/esm/Constants.js.map +1 -0
- package/lib/esm/Init.js +92 -0
- package/lib/esm/Init.js.map +1 -0
- package/lib/esm/components/Banner.js +131 -0
- package/lib/esm/components/Banner.js.map +1 -0
- package/lib/esm/components/Card.js +158 -0
- package/lib/esm/components/Card.js.map +1 -0
- package/lib/esm/components/Carousel.js +237 -0
- package/lib/esm/components/Carousel.js.map +1 -0
- package/lib/esm/components/Creative.js +198 -0
- package/lib/esm/components/Creative.js.map +1 -0
- package/lib/esm/components/Dynamic.js +296 -0
- package/lib/esm/components/Dynamic.js.map +1 -0
- package/lib/esm/components/SimpleCreative.js +69 -0
- package/lib/esm/components/SimpleCreative.js.map +1 -0
- package/lib/esm/components/Video.js +130 -0
- package/lib/esm/components/Video.js.map +1 -0
- package/lib/esm/demo/test.js +5 -0
- package/lib/esm/demo/test.js.map +1 -0
- package/lib/esm/index.module.js +67 -0
- package/lib/esm/index.module.js.map +1 -0
- package/lib/esm/index.script.js +100 -0
- package/lib/esm/index.script.js.map +1 -0
- package/lib/esm/index.script.mock.js +152 -0
- package/lib/esm/index.script.mock.js.map +1 -0
- package/lib/esm/service/Init.js +2 -0
- package/lib/esm/service/Init.js.map +1 -0
- package/lib/esm/util/Attributes.js +81 -0
- package/lib/esm/util/Attributes.js.map +1 -0
- package/lib/esm/util/Types.js +2 -0
- package/lib/esm/util/Types.js.map +1 -0
- package/lib/types/BuildInfo.d.ts +5 -0
- package/lib/types/Constants.d.ts +1 -0
- package/lib/types/Init.d.ts +31 -0
- package/lib/types/components/Banner.d.ts +18 -0
- package/lib/types/components/Card.d.ts +17 -0
- package/lib/types/components/Carousel.d.ts +31 -0
- package/lib/types/components/Creative.d.ts +65 -0
- package/lib/types/components/Dynamic.d.ts +23 -0
- package/lib/types/components/SimpleCreative.d.ts +19 -0
- package/lib/types/components/Video.d.ts +22 -0
- package/lib/types/demo/test.d.ts +1 -0
- package/lib/types/index.module.d.ts +12 -0
- package/lib/types/index.script.d.ts +1 -0
- package/lib/types/index.script.mock.d.ts +1 -0
- package/lib/types/service/Init.d.ts +1 -0
- package/lib/types/util/Attributes.d.ts +24 -0
- package/lib/types/util/Types.d.ts +3 -0
- package/package.json +10 -10
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { CancellationToken } from '@surfside/ads-core';
|
|
2
|
+
import { IntValOrThrow, SimpleCreativeComponent } from './SimpleCreative';
|
|
3
|
+
import { DEBOUNCE_THRESHOLD } from './Creative';
|
|
4
|
+
export class SurfsideVideo extends SimpleCreativeComponent {
|
|
5
|
+
_cancellationToken = new CancellationToken();
|
|
6
|
+
minDuration;
|
|
7
|
+
maxDuration;
|
|
8
|
+
_bounce;
|
|
9
|
+
static get observedAttributes() {
|
|
10
|
+
return [...SimpleCreativeComponent.observedSimpleAttributes, 'min-duration', 'max-duration'];
|
|
11
|
+
}
|
|
12
|
+
constructor(initApi, getUserId, logger) {
|
|
13
|
+
super(initApi, getUserId, logger);
|
|
14
|
+
}
|
|
15
|
+
getComponentName() {
|
|
16
|
+
return 'SurfsideVideo';
|
|
17
|
+
}
|
|
18
|
+
attributesLoaded() {
|
|
19
|
+
return (super.attributesLoaded() && this.minDuration !== undefined && this.maxDuration !== undefined
|
|
20
|
+
&& this.minDuration !== null && this.maxDuration !== null);
|
|
21
|
+
}
|
|
22
|
+
async attributeChangedCallback(name, oldValue, newValue) {
|
|
23
|
+
const log = this.log?.with('attributeChangedCallback');
|
|
24
|
+
log?.info('Attribute changed');
|
|
25
|
+
if (name === 'min-duration') {
|
|
26
|
+
try {
|
|
27
|
+
this.minDuration = IntValOrThrow(this, 'min-duration', newValue);
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
log?.warn('Couldn\'t parse min-duration', err);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else if (name === 'max-duration') {
|
|
34
|
+
try {
|
|
35
|
+
this.maxDuration = IntValOrThrow(this, 'max-duration', newValue);
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
log?.warn('Couldn\'t parse min-duration', err);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
this.simpleAttributeChangedCallback(name, oldValue, newValue, log);
|
|
43
|
+
}
|
|
44
|
+
const totem = crypto.randomUUID();
|
|
45
|
+
this.totem = totem;
|
|
46
|
+
log?.debug(name, 'totem', totem);
|
|
47
|
+
if (!this.attributesLoaded()) {
|
|
48
|
+
log?.debug('Attributes not ready yet...');
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (this.totem !== totem) {
|
|
52
|
+
log?.debug('Totem changed. Deferring rendering of video until last attribute changed', totem, this.totem);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
log?.debug(`Rendering video upon change of [${name}]`);
|
|
56
|
+
if (this._bounce !== undefined) {
|
|
57
|
+
globalThis.clearTimeout(this._bounce);
|
|
58
|
+
}
|
|
59
|
+
this._bounce = globalThis.setTimeout(() => this.render(), DEBOUNCE_THRESHOLD);
|
|
60
|
+
}
|
|
61
|
+
readVideoAttributes() {
|
|
62
|
+
this.readSimpleAttributes();
|
|
63
|
+
}
|
|
64
|
+
async connectedCallback() {
|
|
65
|
+
super.connectedCallback();
|
|
66
|
+
this.readVideoAttributes();
|
|
67
|
+
await this.initApi();
|
|
68
|
+
const totem = crypto.randomUUID();
|
|
69
|
+
this.totem = totem;
|
|
70
|
+
if (this.attributesLoaded()) {
|
|
71
|
+
await this.lazyLoadApi();
|
|
72
|
+
if (this.totem !== totem) {
|
|
73
|
+
this.log?.debug('Attributes changed after connectedCallback, waiting to render');
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this.log?.debug('Rendering upon connectedCallback');
|
|
77
|
+
await this.render();
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this.log?.warn('ConnectedCallback called before attributes were all ready.');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async render() {
|
|
84
|
+
const log = this.log?.with('SurfsideVideo', { zoneId: this.zoneId });
|
|
85
|
+
log?.info('rendering');
|
|
86
|
+
log?.debug('width', this.width, 'height', this.height);
|
|
87
|
+
const stopTimer = log?.time?.('render video');
|
|
88
|
+
this._cancellationToken.cancel();
|
|
89
|
+
const token = new CancellationToken();
|
|
90
|
+
this._cancellationToken = token;
|
|
91
|
+
const { requestBids, startRequest, buildVideoResponse, renderVideo } = this.api;
|
|
92
|
+
const bidResponseResult = await requestBids(startRequest(this.zoneId)
|
|
93
|
+
.withSurfCategory(this.category)
|
|
94
|
+
.withKeywords(this.keywords)
|
|
95
|
+
.withVideo(this.width, this.height, this.minDuration, this.maxDuration)
|
|
96
|
+
.build());
|
|
97
|
+
if (token.cancelled) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (!bidResponseResult.ok) {
|
|
101
|
+
log?.warn('Did not get any bid responses', bidResponseResult.error);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const bid = bidResponseResult.value.seatbid?.[0]?.bid?.[0];
|
|
105
|
+
if (bid === undefined) {
|
|
106
|
+
log?.error('Got a bid response, but it was malformed', bidResponseResult);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const responseResult = buildVideoResponse(bid);
|
|
110
|
+
if (!responseResult.ok) {
|
|
111
|
+
log?.error(responseResult.error);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const elementResult = renderVideo(responseResult.value);
|
|
115
|
+
if (!elementResult.ok) {
|
|
116
|
+
log?.error(elementResult.error);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (!token.cancelled) {
|
|
120
|
+
stopTimer?.();
|
|
121
|
+
this.shadow.innerHTML = '';
|
|
122
|
+
this.shadow.appendChild(elementResult.value);
|
|
123
|
+
elementResult.value.classList.add(`surf-zone-${this.zoneId}`);
|
|
124
|
+
if (this.api.configuration.settings.reauctionEnabled && bid.ext?.takeover !== true) {
|
|
125
|
+
elementResult.value.onended = () => this.render();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=Video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Video.js","sourceRoot":"../@surfside-ads/","sources":["components/Video.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"../@surfside-ads/","sources":["demo/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;IACjB,wBAAwB,EAAE,CAAC;AAC/B,CAAC,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { GetSurfUserIdCookie, InitSurfAdsWebInternal, SurfsideAdsCoreWebVersionInfo, } from '@surfside/ads-core-web';
|
|
2
|
+
import { SurfsideBanner } from './components/Banner';
|
|
3
|
+
import { InitLogger, MemoizeAsync, SurfsideAdsCoreVersionInfo } from '@surfside/ads-core';
|
|
4
|
+
import { SurfsideVideo } from './components/Video';
|
|
5
|
+
import { SurfsideCarousel } from './components/Carousel';
|
|
6
|
+
import { SurfsideProductCard } from './components/Card';
|
|
7
|
+
import { SurfsideDynamicZone } from './components/Dynamic';
|
|
8
|
+
import { InitSurfAdsCoreClient, SurfsideAdsCoreClientVersionInfo } from '@surfside/ads-core-client';
|
|
9
|
+
import * as SurfsideAdsVersionInfo from './BuildInfo';
|
|
10
|
+
export * from './Init';
|
|
11
|
+
const searchHasString = (str) => typeof globalThis.window !== 'undefined' &&
|
|
12
|
+
globalThis.window.location.search.toLowerCase().includes(str);
|
|
13
|
+
export const InitSurfAdsWebComponents = (initializer) => {
|
|
14
|
+
const debug = searchHasString('surf_debug=true');
|
|
15
|
+
const logger = debug ? InitLogger() : undefined;
|
|
16
|
+
const log = logger?.with('InitSurfAdsWebComponents');
|
|
17
|
+
log?.info('🏄♂️ Initializing surfside ads web components');
|
|
18
|
+
log?.table(SurfsideAdsVersionTable);
|
|
19
|
+
const initApi = MemoizeAsync((accountId, siteId, channelId, locationId, userId) => {
|
|
20
|
+
return InitSurfAdsWebInternal((initializer ?? InitSurfAdsCoreClient)(accountId, siteId, channelId, locationId, userId));
|
|
21
|
+
});
|
|
22
|
+
log?.debug('Defining surf-banner');
|
|
23
|
+
customElements.define('surf-banner', class extends SurfsideBanner {
|
|
24
|
+
constructor() {
|
|
25
|
+
super(initApi, GetSurfUserIdCookie, logger);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
log?.debug('Definining surf-video');
|
|
29
|
+
customElements.define('surf-video', class extends SurfsideVideo {
|
|
30
|
+
constructor() {
|
|
31
|
+
super(initApi, GetSurfUserIdCookie, logger);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
log?.debug('Definining surf-carousel');
|
|
35
|
+
customElements.define('surf-carousel', class extends SurfsideCarousel {
|
|
36
|
+
constructor() {
|
|
37
|
+
super(initApi, GetSurfUserIdCookie, logger);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
log?.debug('Definining surf-product-card');
|
|
41
|
+
customElements.define('surf-product-card', class extends SurfsideProductCard {
|
|
42
|
+
constructor() {
|
|
43
|
+
super(initApi, GetSurfUserIdCookie, logger);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
log?.debug('Definining surf-dynamic-zone');
|
|
47
|
+
customElements.define('surf-dynamic-zone', class extends SurfsideDynamicZone {
|
|
48
|
+
constructor() {
|
|
49
|
+
super(initApi, GetSurfUserIdCookie, logger);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
const pad = (name) => {
|
|
54
|
+
let newName = name;
|
|
55
|
+
const remaining = 25 - name.length;
|
|
56
|
+
for (let i = 0; i < remaining; i++) {
|
|
57
|
+
newName += ' ';
|
|
58
|
+
}
|
|
59
|
+
return newName;
|
|
60
|
+
};
|
|
61
|
+
export const SurfsideAdsVersionTable = {
|
|
62
|
+
[pad('@surfside/ads-core')]: SurfsideAdsCoreVersionInfo.VersionInfo,
|
|
63
|
+
[pad('@surfside/ads-core-client')]: SurfsideAdsCoreClientVersionInfo.VersionInfo,
|
|
64
|
+
[pad('@surfside/ads-core-web')]: SurfsideAdsCoreWebVersionInfo.VersionInfo,
|
|
65
|
+
[pad('@surfside/ads')]: SurfsideAdsVersionInfo.VersionInfo
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=index.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.module.js","sourceRoot":"../@surfside-ads/","sources":["index.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { InitLogger, Ok, WrapBidRequestDebouncerIfEnabled } from '@surfside/ads-core';
|
|
2
|
+
import { LoadSurfAds } from './Init';
|
|
3
|
+
const edge = '//cdn.surfside.io/sdk/1.0.0/edge.js';
|
|
4
|
+
const searchHasString = (str) => typeof globalThis.window !== 'undefined' &&
|
|
5
|
+
globalThis.window.location.search.toLowerCase().includes(str);
|
|
6
|
+
function GetSafeUrl(relativeUrl) {
|
|
7
|
+
/* Already has the Protocol included */
|
|
8
|
+
if (relativeUrl.includes('://')) {
|
|
9
|
+
return relativeUrl;
|
|
10
|
+
}
|
|
11
|
+
/* Check if protocol begins with // or not */
|
|
12
|
+
const slashes = relativeUrl.startsWith('//') ? '' : '//';
|
|
13
|
+
let protocol = globalThis.location.protocol;
|
|
14
|
+
if (!protocol.startsWith('http')) {
|
|
15
|
+
protocol = 'https:';
|
|
16
|
+
}
|
|
17
|
+
return `${protocol}${slashes}${relativeUrl}`;
|
|
18
|
+
}
|
|
19
|
+
function appendEdge() {
|
|
20
|
+
const wind = globalThis.window;
|
|
21
|
+
if (wind.surf === undefined) {
|
|
22
|
+
const url = GetSafeUrl(edge);
|
|
23
|
+
wind.surfContext = wind.surfContext ?? [];
|
|
24
|
+
wind.surfContext.push('surf');
|
|
25
|
+
wind.surf = function surfadsEventHandler(...args) {
|
|
26
|
+
if (wind.surf === undefined) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
(wind.surf.q = wind.surf.q ?? []).push(args);
|
|
30
|
+
};
|
|
31
|
+
wind.surf.q = wind.surf.q ?? [];
|
|
32
|
+
const script = globalThis.document.createElement('script');
|
|
33
|
+
script.src = url;
|
|
34
|
+
script.async = true;
|
|
35
|
+
globalThis.document.head.appendChild(script);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (globalThis.document.readyState === 'loading') {
|
|
39
|
+
globalThis.window.addEventListener('DOMContentLoaded', () => {
|
|
40
|
+
start();
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
start();
|
|
45
|
+
}
|
|
46
|
+
function start() {
|
|
47
|
+
const isDebug = searchHasString('surf_debug=true');
|
|
48
|
+
const isTelemetryEnabled = isDebug && searchHasString('surf_telemetry=true');
|
|
49
|
+
const logger = isDebug ? InitLogger(true) : undefined;
|
|
50
|
+
const monkeyPatchHistory = (name, newFunc) => {
|
|
51
|
+
const existing = globalThis.window[`surf_monkey_${name}_patched`];
|
|
52
|
+
if (existing !== undefined) {
|
|
53
|
+
return existing;
|
|
54
|
+
}
|
|
55
|
+
const oldFunc = globalThis.history[name];
|
|
56
|
+
globalThis.window[`surf_monkey_${name}`] = oldFunc;
|
|
57
|
+
const patched = (...p) => newFunc(oldFunc, ...p);
|
|
58
|
+
globalThis.window[`surf_monkey_${name}_patched`] = patched;
|
|
59
|
+
return patched;
|
|
60
|
+
};
|
|
61
|
+
try {
|
|
62
|
+
globalThis.history.replaceState = monkeyPatchHistory('replaceState', (oldFunc, ...args) => {
|
|
63
|
+
logger?.info('Intercepting replaceState');
|
|
64
|
+
oldFunc.call(globalThis.window.history, ...args);
|
|
65
|
+
globalThis.window.dispatchEvent(new Event('monkeyHistoryReplace'));
|
|
66
|
+
});
|
|
67
|
+
globalThis.history.pushState = monkeyPatchHistory('pushState', (oldFunc, ...args) => {
|
|
68
|
+
logger?.info('Intercepting pushState');
|
|
69
|
+
oldFunc.call(globalThis.window.history, ...args);
|
|
70
|
+
globalThis.window.dispatchEvent(new Event('monkeyHistoryReplace'));
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
logger?.error('Unable to monkey patch the history functions', e);
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
logger?.info('Loading digital SDK');
|
|
78
|
+
appendEdge();
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
logger?.error('Failed to initialize digital SDK! Got', e);
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
logger?.info('Starting up Surfside Ads');
|
|
85
|
+
LoadSurfAds({
|
|
86
|
+
logger,
|
|
87
|
+
telemetry: isTelemetryEnabled,
|
|
88
|
+
overrides: {
|
|
89
|
+
services: {
|
|
90
|
+
requestBids: (config, requestBids) => Ok(WrapBidRequestDebouncerIfEnabled(logger, config.configuration, config.windowInfo, requestBids))
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
logger?.error('Failed to initialize Surfside Ads! Got ', e);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
;
|
|
100
|
+
//# sourceMappingURL=index.script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.script.js","sourceRoot":"../@surfside-ads/","sources":["index.script.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { DeviceToTelemetryDevice, GetValue, InitLogger, ITelemetryCollector, Ok, WrapBidRequestDebouncerIfEnabled } from '@surfside/ads-core';
|
|
2
|
+
import { LoadSurfAds } from './Init';
|
|
3
|
+
import { FallbackSponsoredProducts, MockGetConfiguration, MockRequestBids } from '@surfside/ads-core-mock';
|
|
4
|
+
const edge = '//cdn.surfside.io/sdk/1.0.0/edge.js';
|
|
5
|
+
const searchHasString = (str) => typeof globalThis.window !== 'undefined' &&
|
|
6
|
+
globalThis.window.location.search.toLowerCase().includes(str);
|
|
7
|
+
function GetSafeUrl(relativeUrl) {
|
|
8
|
+
/* Already has the Protocol included */
|
|
9
|
+
if (relativeUrl.includes('://')) {
|
|
10
|
+
return relativeUrl;
|
|
11
|
+
}
|
|
12
|
+
/* Check if protocol begins with // or not */
|
|
13
|
+
const slashes = relativeUrl.startsWith('//') ? '' : '//';
|
|
14
|
+
let protocol = globalThis.location.protocol;
|
|
15
|
+
if (!protocol.startsWith('http')) {
|
|
16
|
+
protocol = 'https:';
|
|
17
|
+
}
|
|
18
|
+
return `${protocol}${slashes}${relativeUrl}`;
|
|
19
|
+
}
|
|
20
|
+
function appendEdge() {
|
|
21
|
+
const wind = globalThis.window;
|
|
22
|
+
if (wind.surf === undefined) {
|
|
23
|
+
const url = GetSafeUrl(edge);
|
|
24
|
+
wind.surfContext = wind.surfContext ?? [];
|
|
25
|
+
wind.surfContext.push('surf');
|
|
26
|
+
wind.surf = function surfadsEventHandler(...args) {
|
|
27
|
+
if (wind.surf === undefined) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
(wind.surf.q = wind.surf.q ?? []).push(args);
|
|
31
|
+
};
|
|
32
|
+
wind.surf.q = wind.surf.q ?? [];
|
|
33
|
+
const script = globalThis.document.createElement('script');
|
|
34
|
+
script.src = url;
|
|
35
|
+
script.async = true;
|
|
36
|
+
globalThis.document.head.appendChild(script);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (globalThis.document.readyState === 'loading') {
|
|
40
|
+
globalThis.window.addEventListener('DOMContentLoaded', () => {
|
|
41
|
+
start();
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
start();
|
|
46
|
+
}
|
|
47
|
+
const MOCK_GEO = {
|
|
48
|
+
country: 'USA',
|
|
49
|
+
region: 'Virginia',
|
|
50
|
+
city: 'Richmond',
|
|
51
|
+
zip: '23218',
|
|
52
|
+
coords: {
|
|
53
|
+
latitude: 37.538837527059044,
|
|
54
|
+
longitude: -77.43359909814527,
|
|
55
|
+
accuracy: 1
|
|
56
|
+
},
|
|
57
|
+
utcoffset: -4,
|
|
58
|
+
ip: '127.0.0.1'
|
|
59
|
+
};
|
|
60
|
+
async function start() {
|
|
61
|
+
const isDebug = searchHasString('surf_debug=true');
|
|
62
|
+
const isTelemetryEnabled = isDebug || searchHasString('surf_telemetry=true');
|
|
63
|
+
const logger = isDebug ? InitLogger(true) : undefined;
|
|
64
|
+
try {
|
|
65
|
+
logger?.info('Loading digital SDK');
|
|
66
|
+
appendEdge();
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
logger?.error('Failed to initialize digital SDK! Got', e);
|
|
70
|
+
}
|
|
71
|
+
const mockConfiguration = GetValue(await MockGetConfiguration(logger));
|
|
72
|
+
try {
|
|
73
|
+
logger?.info('Starting up Surfside Ads');
|
|
74
|
+
LoadSurfAds({
|
|
75
|
+
logger,
|
|
76
|
+
telemetry: isTelemetryEnabled,
|
|
77
|
+
overrides: {
|
|
78
|
+
dependencies: {
|
|
79
|
+
geo: MOCK_GEO,
|
|
80
|
+
configuration: mockConfiguration
|
|
81
|
+
},
|
|
82
|
+
services: {
|
|
83
|
+
requestBids: (config) => Ok(WrapBidRequestDebouncerIfEnabled(logger, config.configuration, config.windowInfo, (bidRequest) => {
|
|
84
|
+
config.logger?.error('RUNNING MOCK BID REQUEST!!!');
|
|
85
|
+
globalThis.requestCounter ??= 0;
|
|
86
|
+
globalThis.requestCounter++;
|
|
87
|
+
return MockRequestBids(config.logger, config.windowInfo, 0, 0, [], bidRequest);
|
|
88
|
+
})),
|
|
89
|
+
getAllSponsoredBrandProducts: () => Ok(async () => Ok(FallbackSponsoredProducts
|
|
90
|
+
.map((p) => ({
|
|
91
|
+
...p,
|
|
92
|
+
image: `http://creative.surfside.io/mock/flower${Math.floor(Math.random() * 10) + 1}.jpg`,
|
|
93
|
+
details: p.description
|
|
94
|
+
})))),
|
|
95
|
+
getAllSponsoredProducts: () => Ok(async () => Ok(FallbackSponsoredProducts
|
|
96
|
+
.map((p) => ({
|
|
97
|
+
...p,
|
|
98
|
+
image: `http://creative.surfside.io/mock/flower${Math.floor(Math.random() * 10) + 1}.jpg`,
|
|
99
|
+
details: p.description
|
|
100
|
+
})))),
|
|
101
|
+
generateTopProducts: () => Ok(async function* () {
|
|
102
|
+
yield* FallbackSponsoredProducts
|
|
103
|
+
.map((p) => ({
|
|
104
|
+
...p,
|
|
105
|
+
image: `http://creative.surfside.io/mock/flower${Math.floor(Math.random() * 10) + 1}.jpg`,
|
|
106
|
+
details: p.description
|
|
107
|
+
}));
|
|
108
|
+
}),
|
|
109
|
+
generateForYou: () => Ok(async function* () {
|
|
110
|
+
yield* FallbackSponsoredProducts
|
|
111
|
+
.map((p) => ({
|
|
112
|
+
...p,
|
|
113
|
+
image: `http://creative.surfside.io/mock/flower${Math.floor(Math.random() * 10) + 1}.jpg`,
|
|
114
|
+
details: p.description
|
|
115
|
+
}));
|
|
116
|
+
}),
|
|
117
|
+
generatePreviousPurchases: () => Ok(async function* () {
|
|
118
|
+
yield* FallbackSponsoredProducts
|
|
119
|
+
.map((p) => ({
|
|
120
|
+
...p,
|
|
121
|
+
image: `http://creative.surfside.io/mock/flower${Math.floor(Math.random() * 10) + 1}.jpg`,
|
|
122
|
+
details: p.description
|
|
123
|
+
}));
|
|
124
|
+
}),
|
|
125
|
+
getRecommendedProduct: () => Ok(async () => Ok(FallbackSponsoredProducts
|
|
126
|
+
.map((p) => ({
|
|
127
|
+
...p,
|
|
128
|
+
image: `http://creative.surfside.io/mock/flower${Math.floor(Math.random() * 10) + 1}.jpg`,
|
|
129
|
+
details: p.description,
|
|
130
|
+
brand_name: p.brand,
|
|
131
|
+
brandName: p.brand
|
|
132
|
+
}))[Math.floor(Math.random() * FallbackSponsoredProducts.length)])),
|
|
133
|
+
createTelemetryCollector: (config) => {
|
|
134
|
+
return Ok(new class extends ITelemetryCollector {
|
|
135
|
+
constructor() {
|
|
136
|
+
super(config.accountId, config.siteId, config.channelId, config.locationId, DeviceToTelemetryDevice(config.device));
|
|
137
|
+
}
|
|
138
|
+
record(entry) {
|
|
139
|
+
logger?.info(`o(*^▽^*)┛ ${entry.name} | ${entry.durationMs}ms`);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
logger?.error('Failed to initialize Surfside Ads! Got ', e);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
;
|
|
152
|
+
//# sourceMappingURL=index.script.mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.script.mock.js","sourceRoot":"../@surfside-ads/","sources":["index.script.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,QAAQ,EAGR,UAAU,EAEV,mBAAmB,EAEnB,EAAE,EACF,gCAAgC,EACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE3G,MAAM,IAAI,GAAG,qCAAqC,CAAC;AAEnD,MAAM,eAAe,GAAG,CAAC,GAAW,EAAE,EAAE,CACpC,OAAO,UAAU,CAAC,MAAM,KAAK,WAAW;IACxC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAElE,SAAS,UAAU,CAAC,WAAmB;IACnC,uCAAuC;IACvC,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAC;IACvB,CAAC;IACD,6CAA6C;IAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC5C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,QAAQ,GAAG,QAAQ,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,UAAU;IACf,MAAM,IAAI,GAAG,UAAU,CAAC,MAAa,CAAC;IACtC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,SAAS,mBAAmB,CAAC,GAAG,IAAW;YACnD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO;YACX,CAAC;YACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QACjB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;AACL,CAAC;AAED,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;IAC/C,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACxD,KAAK,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACP,CAAC;KAAM,CAAC;IACJ,KAAK,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,QAAQ,GAAgB;IAC1B,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,OAAO;IACZ,MAAM,EAAE;QACJ,QAAQ,EAAE,kBAAkB;QAC5B,SAAS,EAAE,CAAC,iBAAiB;QAC7B,QAAQ,EAAE,CAAC;KACd;IACD,SAAS,EAAE,CAAC,CAAC;IACb,EAAE,EAAE,WAAW;CAClB,CAAC;AAEF,KAAK,UAAU,KAAK;IAChB,MAAM,OAAO,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACnD,MAAM,kBAAkB,GAAG,OAAO,IAAI,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,IAAI,CAAC;QACD,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpC,UAAU,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,EAAE,KAAK,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvE,IAAI,CAAC;QACD,MAAM,EAAE,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzC,WAAW,CAAC;YACR,MAAM;YACN,SAAS,EAAE,kBAAkB;YAC7B,SAAS,EAAE;gBACP,YAAY,EAAE;oBACV,GAAG,EAAE,QAAQ;oBACb,aAAa,EAAE,iBAAiB;iBACnC;gBACD,QAAQ,EAAE;oBACN,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,gCAAgC,CACxD,MAAM,EACN,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,UAAU,EACjB,CAAC,UAAuB,EAAE,EAAE;wBACxB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,6BAA6B,CAAC,CAAC;wBACnD,UAAkB,CAAC,cAAc,KAAK,CAAC,CAAC;wBACxC,UAAkB,CAAC,cAAc,EAAE,CAAC;wBACrC,OAAO,eAAe,CAAC,MAAM,CAAC,MAAM,EAChC,MAAM,CAAC,UAAU,EACjB,CAAC,EACD,CAAC,EACD,EAAE,EACF,UAAU,CACb,CAAC;oBACN,CAAC,CACJ,CAAC;oBACF,4BAA4B,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,yBAAyB;yBAC1E,GAAG,CAAC,CAAC,CAA+D,EAAE,EAAE,CAAC,CAAC;wBACvE,GAAG,CAAC;wBACJ,KAAK,EAAE,0CAA0C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM;wBACzF,OAAO,EAAE,CAAC,CAAC,WAAW;qBACzB,CAAC,CAAC,CAAC,CAAC;oBACT,uBAAuB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,yBAAyB;yBACrE,GAAG,CAAC,CAAC,CAA+D,EAAE,EAAE,CAAC,CAAC;wBACvE,GAAG,CAAC;wBACJ,KAAK,EAAE,0CAA0C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM;wBACzF,OAAO,EAAE,CAAC,CAAC,WAAW;qBACzB,CAAC,CAAC,CAAC,CAAC;oBACT,mBAAmB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;wBACzC,KAAM,CAAC,CAAA,yBAAyB;6BAC3B,GAAG,CAAC,CAAC,CAA+D,EAAE,EAAE,CAAC,CAAC;4BACvE,GAAG,CAAC;4BACJ,KAAK,EACD,0CAA0C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM;4BACtF,OAAO,EAAE,CAAC,CAAC,WAAW;yBACzB,CAAC,CAAC,CAAC;oBACZ,CAAC,CAAC;oBACF,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;wBACpC,KAAM,CAAC,CAAA,yBAAyB;6BAC3B,GAAG,CAAC,CAAC,CAA+D,EAAE,EAAE,CAAC,CAAC;4BACvE,GAAG,CAAC;4BACJ,KAAK,EACD,0CAA0C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM;4BACtF,OAAO,EAAE,CAAC,CAAC,WAAW;yBACzB,CAAC,CAAC,CAAC;oBACZ,CAAC,CAAC;oBACF,yBAAyB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;wBAC/C,KAAM,CAAC,CAAA,yBAAyB;6BAC3B,GAAG,CAAC,CAAC,CAA+D,EAAE,EAAE,CAAC,CAAC;4BACvE,GAAG,CAAC;4BACJ,KAAK,EACD,0CAA0C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM;4BACtF,OAAO,EAAE,CAAC,CAAC,WAAW;yBACzB,CAAC,CAAC,CAAC;oBACZ,CAAC,CAAC;oBACF,qBAAqB,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,yBAAyB;yBACnE,GAAG,CAAC,CAAC,CAA+D,EAAE,EAAE,CAAC,CAAC;wBACvE,GAAG,CAAC;wBACJ,KAAK,EAAE,0CAA0C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM;wBACzF,OAAO,EAAE,CAAC,CAAC,WAAW;wBACtB,UAAU,EAAE,CAAC,CAAC,KAAK;wBACnB,SAAS,EAAE,CAAC,CAAC,KAAK;qBACrB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAE,CAAC,CAAC;oBACxE,wBAAwB,EAAE,CAAC,MAAM,EAAE,EAAE;wBACjC,OAAO,EAAE,CAAC,IAAI,KAAM,SAAQ,mBAAmB;4BAC3C;gCACI,KAAK,CACD,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,UAAU,EACjB,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,CACzC,CAAC;4BACN,CAAC;4BACD,MAAM,CAAC,KAAsB;gCACzB,MAAM,EAAE,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;4BACpE,CAAC;yBACJ,CAAC,CAAC;oBACP,CAAC;iBACJ;aACJ;SACJ,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,EAAE,KAAK,CAAC,yCAAyC,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;AACL,CAAC;AAAA,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Init.js","sourceRoot":"../@surfside-ads/","sources":["service/Init.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Err, Ok } from '@surfside/ads-core';
|
|
2
|
+
export const ReadAttribute = (element, attr) => {
|
|
3
|
+
const value = element.getAttribute(attr);
|
|
4
|
+
if (value === null) {
|
|
5
|
+
return Err(new AttributeNotFoundError(element, attr));
|
|
6
|
+
}
|
|
7
|
+
return Ok(value);
|
|
8
|
+
};
|
|
9
|
+
export const ReadNumberAttribute = (element, attr) => {
|
|
10
|
+
const strValue = ReadAttribute(element, attr);
|
|
11
|
+
if (!strValue.ok) {
|
|
12
|
+
return strValue;
|
|
13
|
+
}
|
|
14
|
+
const value = Number(strValue.value);
|
|
15
|
+
if (Number.isNaN(value)) {
|
|
16
|
+
return Err(new AttributeNotANumberError(element, attr));
|
|
17
|
+
}
|
|
18
|
+
return Ok(value);
|
|
19
|
+
};
|
|
20
|
+
export const ReadIntAttribute = (element, attr) => {
|
|
21
|
+
const numValue = ReadNumberAttribute(element, attr);
|
|
22
|
+
if (!numValue.ok) {
|
|
23
|
+
return numValue;
|
|
24
|
+
}
|
|
25
|
+
if (!Number.isInteger(numValue.value)) {
|
|
26
|
+
return Err(new AttributeNotIntError(element, attr));
|
|
27
|
+
}
|
|
28
|
+
return numValue;
|
|
29
|
+
};
|
|
30
|
+
export const ReadBoolAttribute = (element, attr) => {
|
|
31
|
+
const strValue = ReadAttribute(element, attr);
|
|
32
|
+
if (!strValue.ok) {
|
|
33
|
+
return strValue;
|
|
34
|
+
}
|
|
35
|
+
const value = strValue.value.toLowerCase();
|
|
36
|
+
switch (value) {
|
|
37
|
+
case 'true': {
|
|
38
|
+
return Ok(true);
|
|
39
|
+
}
|
|
40
|
+
case 'false': {
|
|
41
|
+
return Ok(false);
|
|
42
|
+
}
|
|
43
|
+
default: {
|
|
44
|
+
return Err(new AttributeNotBoolError(element, attr));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
export class AttributeNotFoundError extends Error {
|
|
49
|
+
element;
|
|
50
|
+
attribute;
|
|
51
|
+
constructor(element, attribute) {
|
|
52
|
+
super(`Attribute '${attribute}' was not found on element`);
|
|
53
|
+
this.element = element;
|
|
54
|
+
this.attribute = attribute;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export class AttributeWrongTypeError extends Error {
|
|
58
|
+
element;
|
|
59
|
+
attribute;
|
|
60
|
+
constructor(element, attribute, message) {
|
|
61
|
+
super(message);
|
|
62
|
+
this.element = element;
|
|
63
|
+
this.attribute = attribute;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export class AttributeNotANumberError extends AttributeWrongTypeError {
|
|
67
|
+
constructor(element, attribute) {
|
|
68
|
+
super(element, attribute, `Attribute '${attribute}' is not a number`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
export class AttributeNotBoolError extends AttributeWrongTypeError {
|
|
72
|
+
constructor(element, attribute) {
|
|
73
|
+
super(element, attribute, `Attribute '${attribute}' is not a boolean`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export class AttributeNotIntError extends AttributeWrongTypeError {
|
|
77
|
+
constructor(element, attribute) {
|
|
78
|
+
super(element, attribute, `Attribute '${attribute}' is not an integer`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=Attributes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Attributes.js","sourceRoot":"../@surfside-ads/","sources":["util/Attributes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Types.js","sourceRoot":"../@surfside-ads/","sources":["util/Types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const DefaultMinCardWidth = 300;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type ISurfAdsWebConfigurationOverrides, type ISurfAdsWebDependencies } from '@surfside/ads-core-web';
|
|
2
|
+
import { SurfsideBanner } from './components/Banner';
|
|
3
|
+
import { SurfsideVideo } from './components/Video';
|
|
4
|
+
import { SurfsideCarousel } from './components/Carousel';
|
|
5
|
+
import { SurfsideProductCard } from './components/Card';
|
|
6
|
+
import { SurfsideDynamicZone } from './components/Dynamic';
|
|
7
|
+
import { type ILogger, type Result } from '@surfside/ads-core';
|
|
8
|
+
export type ISurfAdsConfiguration = {
|
|
9
|
+
logger?: ILogger;
|
|
10
|
+
telemetry?: boolean;
|
|
11
|
+
getUserId?: (logger?: ILogger) => Promise<string | undefined>;
|
|
12
|
+
overrides?: {
|
|
13
|
+
services?: Partial<ISurfAdsWebConfigurationOverrides>;
|
|
14
|
+
dependencies?: Partial<ISurfAdsWebDependencies>;
|
|
15
|
+
};
|
|
16
|
+
} & Partial<ISurfAdsWebConfigurationOverrides>;
|
|
17
|
+
export interface ISurfsideAdsApi {
|
|
18
|
+
bannerComponent: typeof SurfsideBanner;
|
|
19
|
+
videoComponent: typeof SurfsideVideo;
|
|
20
|
+
carouselComponent: typeof SurfsideCarousel;
|
|
21
|
+
productCardComponent: typeof SurfsideProductCard;
|
|
22
|
+
dynamicZoneComponent: typeof SurfsideDynamicZone;
|
|
23
|
+
}
|
|
24
|
+
/** Injects dependencies into the advertising web components and passes them an initializer service.
|
|
25
|
+
* Be warned! This function has no side effects, but it returns stateful classes. The web components
|
|
26
|
+
* call their own initialization functions lazily with side effects. Once you begin
|
|
27
|
+
* using Surfside Ads Web components, you have moved out of functional programming land and into OOP
|
|
28
|
+
* land. State for Surfside ads web components is managed within the web component classes.
|
|
29
|
+
*/
|
|
30
|
+
export declare const CreateSurfAds: (config?: ISurfAdsConfiguration) => Result<ISurfsideAdsApi>;
|
|
31
|
+
export declare const LoadSurfAds: (config?: ISurfAdsConfiguration) => Result<ISurfsideAdsApi>;
|