@surfside/ads-core-mock 0.1.4 → 0.1.6
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/index.js +17 -11
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/mock/Bidder.js +69 -22
- package/lib/cjs/mock/Bidder.js.map +1 -1
- package/lib/cjs/mock/Dynamic.js +155 -60
- package/lib/cjs/mock/Dynamic.js.map +1 -1
- package/lib/cjs/mock/Product.js +130 -80
- package/lib/cjs/mock/Product.js.map +1 -1
- package/lib/cjs/util/Array.js +19 -0
- package/lib/cjs/util/Array.js.map +1 -0
- package/lib/cjs/util/Wait.js +7 -0
- package/lib/cjs/util/Wait.js.map +1 -0
- package/lib/esm/index.js +18 -12
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/mock/Bidder.js +67 -22
- package/lib/esm/mock/Bidder.js.map +1 -1
- package/lib/esm/mock/Dynamic.js +150 -58
- package/lib/esm/mock/Dynamic.js.map +1 -1
- package/lib/esm/mock/Product.js +125 -76
- package/lib/esm/mock/Product.js.map +1 -1
- package/lib/esm/util/Array.js +14 -0
- package/lib/esm/util/Array.js.map +1 -0
- package/lib/esm/util/Wait.js +3 -0
- package/lib/esm/util/Wait.js.map +1 -0
- package/lib/types/index.d.ts +3 -1
- package/lib/types/mock/Bidder.d.ts +5 -1
- package/lib/types/mock/Dynamic.d.ts +4 -1
- package/lib/types/mock/Product.d.ts +25 -5
- package/lib/types/util/Array.d.ts +5 -0
- package/lib/types/util/Wait.d.ts +1 -0
- package/package.json +2 -2
package/lib/esm/mock/Dynamic.js
CHANGED
|
@@ -1,62 +1,154 @@
|
|
|
1
1
|
import { Ok } from '@surfside/ads-core-client';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
]
|
|
2
|
+
const defaultZone = { value: [] };
|
|
3
|
+
const shuffleArray = (arr) => {
|
|
4
|
+
for (let i = arr.length - 1; i > 0; i--) {
|
|
5
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
6
|
+
[arr[i], arr[j]] = [arr[j], arr[i]];
|
|
7
|
+
}
|
|
8
|
+
return arr;
|
|
9
|
+
};
|
|
10
|
+
const shuffleDynamicZone = (value) => {
|
|
11
|
+
value.value.forEach((v) => shuffleArray(v.values));
|
|
12
|
+
return value;
|
|
13
|
+
};
|
|
14
|
+
// Mock service using the parser
|
|
15
|
+
export const MockGetDynamicZone = async (zoneIdString) => {
|
|
16
|
+
const parsed = parseZoneIds(zoneIdString);
|
|
17
|
+
const shuffled = shuffleDynamicZone(parsed);
|
|
18
|
+
return Ok(shuffled);
|
|
19
|
+
};
|
|
20
|
+
// Parses a comma-separated list of zoneIds into one consolidated dynamic zone
|
|
21
|
+
export const parseZoneIds = (zoneIds) => {
|
|
22
|
+
const ids = zoneIds
|
|
23
|
+
.split(',')
|
|
24
|
+
.map((z) => z.trim().toLowerCase())
|
|
25
|
+
.filter((z) => z.length > 0);
|
|
26
|
+
// Generate individual zone configs
|
|
27
|
+
const zones = ids.map((id) => {
|
|
28
|
+
let platform = 'both';
|
|
29
|
+
let cleanedId = id;
|
|
30
|
+
if (id.startsWith('m-')) {
|
|
31
|
+
platform = 'mobile';
|
|
32
|
+
cleanedId = id.slice(2);
|
|
33
|
+
}
|
|
34
|
+
else if (id.startsWith('d-')) {
|
|
35
|
+
platform = 'desktop';
|
|
36
|
+
cleanedId = id.slice(2);
|
|
37
|
+
}
|
|
38
|
+
let zone;
|
|
39
|
+
if (cleanedId.includes('banner')) {
|
|
40
|
+
zone = bannerZoneCreator(cleanedId);
|
|
41
|
+
}
|
|
42
|
+
else if (cleanedId.includes('video')) {
|
|
43
|
+
zone = videoZoneCreator(cleanedId);
|
|
44
|
+
}
|
|
45
|
+
else if (cleanedId.includes('carousel')) {
|
|
46
|
+
zone = carouselZoneCreator(cleanedId);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return defaultZone;
|
|
50
|
+
}
|
|
51
|
+
// Filter zone values by platform
|
|
52
|
+
if (platform === 'both' || zone === undefined) {
|
|
53
|
+
return zone;
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
value: zone.value.filter((v) => v.size === platform),
|
|
57
|
+
};
|
|
60
58
|
});
|
|
59
|
+
// Combine by size, merging all values for each size
|
|
60
|
+
const sizes = Array.from(new Set(zones.flatMap((z) => z?.value.map((v) => v.size))));
|
|
61
|
+
const combined = sizes.map((size) => ({
|
|
62
|
+
size,
|
|
63
|
+
values: zones.flatMap((z) => z !== undefined && z.value !== undefined
|
|
64
|
+
? z.value.find((v) => v.size === size)?.values ?? []
|
|
65
|
+
: []),
|
|
66
|
+
}));
|
|
67
|
+
return { value: combined };
|
|
68
|
+
};
|
|
69
|
+
// Banner zone creator (provided starter)
|
|
70
|
+
const bannerRegex = /banner(?<width>\d+)x(?<height>\d+)/;
|
|
71
|
+
const bannerZoneCreator = (zoneId) => {
|
|
72
|
+
const match = zoneId.match(bannerRegex);
|
|
73
|
+
if (match === null ||
|
|
74
|
+
match?.groups === undefined ||
|
|
75
|
+
match?.groups?.height === undefined ||
|
|
76
|
+
match?.groups?.width === undefined) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
const width = parseInt(match.groups.width, 10);
|
|
80
|
+
const height = parseInt(match.groups.height, 10);
|
|
81
|
+
if (width > 16 || width < 0 || height > 16 || height < 0) {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
const zoneValue = [
|
|
85
|
+
{
|
|
86
|
+
size: 'mobile',
|
|
87
|
+
values: [{ type: 'Banner', zoneId, width, height }],
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
size: 'desktop',
|
|
91
|
+
values: [{ type: 'Banner', zoneId, width, height }],
|
|
92
|
+
},
|
|
93
|
+
];
|
|
94
|
+
return { value: zoneValue };
|
|
95
|
+
};
|
|
96
|
+
// Video zone creator
|
|
97
|
+
const videoRegex = /video(?<width>\d+)x(?<height>\d+)/;
|
|
98
|
+
export const videoZoneCreator = (zoneId) => {
|
|
99
|
+
const match = zoneId.match(videoRegex);
|
|
100
|
+
if (match === null ||
|
|
101
|
+
match?.groups === undefined ||
|
|
102
|
+
match?.groups?.height === undefined ||
|
|
103
|
+
match?.groups?.width === undefined) {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
const width = parseInt(match.groups.width, 10);
|
|
107
|
+
const height = parseInt(match.groups.height, 10);
|
|
108
|
+
if (width <= 0 || height <= 0) {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
const zoneValue = [
|
|
112
|
+
{
|
|
113
|
+
size: 'mobile',
|
|
114
|
+
values: [{ type: 'Video', zoneId, width, height, maxDuration: 60 }],
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
size: 'desktop',
|
|
118
|
+
values: [{ type: 'Video', zoneId, width, height, maxDuration: 60 }],
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
return { value: zoneValue };
|
|
122
|
+
};
|
|
123
|
+
// Carousel zone creator (sponsored, hybrid, recommended)
|
|
124
|
+
const carouselRegex = /carousel-(?<mode>sponsored|hybrid|recommended)/;
|
|
125
|
+
export const carouselZoneCreator = (zoneId) => {
|
|
126
|
+
const match = zoneId.match(carouselRegex);
|
|
127
|
+
const tryMode = match?.groups?.mode;
|
|
128
|
+
if (tryMode === undefined ||
|
|
129
|
+
(tryMode !== 'sponsored' && tryMode !== 'hybrid' && tryMode !== 'recommended')) {
|
|
130
|
+
return undefined;
|
|
131
|
+
}
|
|
132
|
+
const mode = tryMode;
|
|
133
|
+
// Basic carousel config; adjust properties as needed
|
|
134
|
+
const carouselItem = {
|
|
135
|
+
type: 'Carousel',
|
|
136
|
+
zoneId,
|
|
137
|
+
strategy: mode, // 'sponsored' | 'hybrid' | 'recommended'
|
|
138
|
+
catalog: true,
|
|
139
|
+
cardMinWidth: 320,
|
|
140
|
+
nextType: 'page',
|
|
141
|
+
};
|
|
142
|
+
const zoneValue = [
|
|
143
|
+
{
|
|
144
|
+
size: 'mobile',
|
|
145
|
+
values: [carouselItem],
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
size: 'desktop',
|
|
149
|
+
values: [carouselItem],
|
|
150
|
+
},
|
|
151
|
+
];
|
|
152
|
+
return { value: zoneValue };
|
|
61
153
|
};
|
|
62
154
|
//# sourceMappingURL=Dynamic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dynamic.js","sourceRoot":"src/","sources":["mock/Dynamic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,EAAE,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"Dynamic.js","sourceRoot":"src/","sources":["mock/Dynamic.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/mock/Product.js
CHANGED
|
@@ -1,100 +1,150 @@
|
|
|
1
1
|
import { Ctx, Ok } from '@surfside/ads-core';
|
|
2
2
|
import { CHEAT_CODES } from './CheatCodes';
|
|
3
|
-
const
|
|
3
|
+
export const FallbackSponsoredProducts = [
|
|
4
|
+
// Lemon twist only same one in both
|
|
4
5
|
{
|
|
5
|
-
id: '
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
'brand': 'Mid Software'
|
|
6
|
+
id: 'prod-001',
|
|
7
|
+
name: 'Lemon Twist',
|
|
8
|
+
description: '1:1 CBD:THC oil drops for balanced relief without intense psychoactivity',
|
|
9
|
+
brand: 'Bright Co',
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
|
-
id: '
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
'brand': 'Mid Software'
|
|
12
|
+
id: 'prod-002',
|
|
13
|
+
name: 'Ocean Breeze',
|
|
14
|
+
description: 'Cool and refreshing',
|
|
15
|
+
brand: 'NatureLabs',
|
|
17
16
|
},
|
|
18
17
|
{
|
|
19
|
-
id: '
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
'brand': 'Mid Software'
|
|
18
|
+
id: 'prod-003',
|
|
19
|
+
name: 'Midnight Fuel',
|
|
20
|
+
description: 'Dark roast profile',
|
|
21
|
+
brand: 'Rocket Roast',
|
|
24
22
|
},
|
|
25
23
|
{
|
|
26
|
-
id: '
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
'brand': 'Zen Cloud'
|
|
24
|
+
id: 'prod-004',
|
|
25
|
+
name: 'Sunny Daze',
|
|
26
|
+
description: 'Tropical fruit mix',
|
|
27
|
+
brand: 'Bright Co',
|
|
31
28
|
},
|
|
32
29
|
{
|
|
33
|
-
id: '
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
'brand': 'Zen Cloud'
|
|
30
|
+
id: 'prod-005',
|
|
31
|
+
name: 'Maple Drizzle',
|
|
32
|
+
description: 'Sweet maple treat',
|
|
33
|
+
brand: 'Golden Drop',
|
|
38
34
|
},
|
|
39
35
|
{
|
|
40
|
-
id: '
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
'brand': 'Zen Cloud'
|
|
36
|
+
id: 'prod-006',
|
|
37
|
+
name: 'Crimson Crunch',
|
|
38
|
+
description: 'Berry granola bar',
|
|
39
|
+
brand: 'NatureLabs',
|
|
45
40
|
},
|
|
46
41
|
{
|
|
47
|
-
id: '
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
'brand': 'Zen Cloud'
|
|
42
|
+
id: 'prod-007',
|
|
43
|
+
name: 'Cocoa Thunder',
|
|
44
|
+
description: 'Rich chocolate flavor',
|
|
45
|
+
brand: 'Rocket Roast',
|
|
52
46
|
},
|
|
53
47
|
{
|
|
54
|
-
id: '
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
'brand': 'Mid Software'
|
|
48
|
+
id: 'prod-008',
|
|
49
|
+
name: 'Frosty Pine',
|
|
50
|
+
description: 'Cooling pine blend',
|
|
51
|
+
brand: 'EverGreen',
|
|
59
52
|
},
|
|
60
53
|
{
|
|
61
|
-
id: '
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
'brand': 'Mid Software'
|
|
54
|
+
id: 'prod-009',
|
|
55
|
+
name: 'Tangerine Rush',
|
|
56
|
+
description: 'Sweet citrus profile',
|
|
57
|
+
brand: 'Bright Co',
|
|
66
58
|
},
|
|
67
59
|
{
|
|
68
|
-
id: '
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
'brand': 'Mid Software'
|
|
60
|
+
id: 'prod-010',
|
|
61
|
+
name: 'Evening Mist',
|
|
62
|
+
description: 'Light lavender touch',
|
|
63
|
+
brand: 'EverGreen',
|
|
73
64
|
},
|
|
65
|
+
];
|
|
66
|
+
export const FallbackRecommendedProducts = [
|
|
67
|
+
// Lemon twist only same one in both
|
|
74
68
|
{
|
|
75
|
-
id: '
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
69
|
+
id: 'prod-001',
|
|
70
|
+
name: 'Lemon Twist',
|
|
71
|
+
description: '1:1 CBD:THC oil drops for balanced relief without intense psychoactivity',
|
|
72
|
+
brand: 'Bright Co',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: 'prod-011',
|
|
76
|
+
name: 'Morning Kick',
|
|
77
|
+
description: 'Light roast coffee',
|
|
78
|
+
brand: 'Rocket Roast',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: 'prod-012',
|
|
82
|
+
name: 'Berry Buzz',
|
|
83
|
+
description: 'Mixed berry blend',
|
|
84
|
+
brand: 'NatureLabs',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
id: 'prod-013',
|
|
88
|
+
name: 'Mint Chill',
|
|
89
|
+
description: 'Soothing mint breeze',
|
|
90
|
+
brand: 'EverGreen',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: 'prod-014',
|
|
94
|
+
name: 'Vanilla Drop',
|
|
95
|
+
description: 'Classic vanilla taste',
|
|
96
|
+
brand: 'Golden Drop',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
id: 'prod-015',
|
|
100
|
+
name: 'Firecracker',
|
|
101
|
+
description: 'Bold cinnamon pop',
|
|
102
|
+
brand: 'Golden Drop',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: 'prod-016',
|
|
106
|
+
name: 'Citrus Zing',
|
|
107
|
+
description: 'Lime and lemon fusion',
|
|
108
|
+
brand: 'Bright Co',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: 'prod-017',
|
|
112
|
+
name: 'Cocoa Dream',
|
|
113
|
+
description: 'Velvety chocolate',
|
|
114
|
+
brand: 'Rocket Roast',
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: 'prod-018',
|
|
118
|
+
name: 'Forest Whisper',
|
|
119
|
+
description: 'Pine and sage blend',
|
|
120
|
+
brand: 'EverGreen',
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
id: 'prod-019',
|
|
124
|
+
name: 'Cherry Pop',
|
|
125
|
+
description: 'Sweet cherry candy',
|
|
126
|
+
brand: 'NatureLabs',
|
|
127
|
+
},
|
|
84
128
|
];
|
|
85
|
-
export
|
|
129
|
+
export function withFallbackProducts(provided, fallback, label, logger) {
|
|
130
|
+
if (!Array.isArray(provided) || provided.length === 0) {
|
|
131
|
+
Ctx(logger)
|
|
132
|
+
?.with('withFallbackProducts')
|
|
133
|
+
?.info?.(`Using fallback for ${label ?? 'products'}`);
|
|
134
|
+
return fallback;
|
|
135
|
+
}
|
|
136
|
+
return provided;
|
|
137
|
+
}
|
|
138
|
+
export async function* MockGetSponsoredProduct(logger, accountId, products) {
|
|
86
139
|
const log = Ctx(logger)?.with('MockGetSponsoredProduct');
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
log?.debug('Fake product', accountId);
|
|
91
|
-
yield productify(fake);
|
|
92
|
-
}
|
|
93
|
-
log?.debug('Back to the beginning');
|
|
140
|
+
for (const product of products) {
|
|
141
|
+
log?.debug('Yielding product', product.id);
|
|
142
|
+
yield productify(product);
|
|
94
143
|
}
|
|
95
144
|
}
|
|
96
|
-
|
|
97
|
-
export const
|
|
145
|
+
;
|
|
146
|
+
export const MockGetRecommendedProductFactory = (products) => async () => Ok(products[Math.floor(Math.random() * products.length)]);
|
|
147
|
+
export const MockGetAllSponsoredProductsFactory = (products) => async () => Ok(products.map(productify));
|
|
98
148
|
const productify = (product) => ({
|
|
99
149
|
id: product.id,
|
|
100
150
|
name: product.name,
|
|
@@ -103,14 +153,14 @@ const productify = (product) => ({
|
|
|
103
153
|
details: product.description,
|
|
104
154
|
image: `http://creative.surfside.io/mock/flower${Math.floor(Math.random() * 10) + 1}.jpg`
|
|
105
155
|
});
|
|
106
|
-
export async function* MockGenerateSponsoredProductCard(logger, windowInfo, config, accountId, bids) {
|
|
156
|
+
export async function* MockGenerateSponsoredProductCard(logger, windowInfo, config, accountId, getSponsoredProductFactory, bids) {
|
|
107
157
|
const log = Ctx(logger)?.with('MockGenerateSponsoredProductCard');
|
|
108
158
|
log?.info('Generating mock sponsored product card response');
|
|
109
159
|
for (const bid of bids) {
|
|
110
160
|
log?.info('Going through bids', bid);
|
|
111
161
|
const native = JSON.parse(bid?.adm ?? '');
|
|
112
162
|
log?.debug('Native', native);
|
|
113
|
-
for await (const product of
|
|
163
|
+
for await (const product of getSponsoredProductFactory) {
|
|
114
164
|
log?.info('Yielding sponsored product card');
|
|
115
165
|
switch (accountId) {
|
|
116
166
|
case CHEAT_CODES.returnSome: {
|
|
@@ -119,7 +169,6 @@ export async function* MockGenerateSponsoredProductCard(logger, windowInfo, conf
|
|
|
119
169
|
log?.info('Returning no product');
|
|
120
170
|
return;
|
|
121
171
|
}
|
|
122
|
-
;
|
|
123
172
|
break;
|
|
124
173
|
}
|
|
125
174
|
case CHEAT_CODES.returnNone: {
|
|
@@ -133,16 +182,16 @@ export async function* MockGenerateSponsoredProductCard(logger, windowInfo, conf
|
|
|
133
182
|
product,
|
|
134
183
|
window: windowInfo,
|
|
135
184
|
publisher: config,
|
|
136
|
-
catalog: product
|
|
185
|
+
catalog: product,
|
|
137
186
|
}),
|
|
138
187
|
bid: bid,
|
|
139
188
|
product,
|
|
140
189
|
trackers: {
|
|
141
190
|
imp: ['https://surfside.io/track'],
|
|
142
191
|
win: 'https://surfside.io/win',
|
|
143
|
-
others: []
|
|
192
|
+
others: [],
|
|
144
193
|
},
|
|
145
|
-
sponsored: true
|
|
194
|
+
sponsored: true,
|
|
146
195
|
};
|
|
147
196
|
}
|
|
148
197
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Product.js","sourceRoot":"src/","sources":["mock/Product.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,GAAG,EAMH,EAAE,
|
|
1
|
+
{"version":3,"file":"Product.js","sourceRoot":"src/","sources":["mock/Product.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,GAAG,EAMH,EAAE,EAEL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAU3C,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,oCAAoC;IACpC;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,0EAA0E;QACvF,KAAK,EAAE,WAAW;KACrB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,qBAAqB;QAClC,KAAK,EAAE,YAAY;KACtB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,oBAAoB;QACjC,KAAK,EAAE,cAAc;KACxB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,oBAAoB;QACjC,KAAK,EAAE,WAAW;KACrB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,aAAa;KACvB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,YAAY;KACtB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,uBAAuB;QACpC,KAAK,EAAE,cAAc;KACxB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,oBAAoB;QACjC,KAAK,EAAE,WAAW;KACrB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,sBAAsB;QACnC,KAAK,EAAE,WAAW;KACrB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,sBAAsB;QACnC,KAAK,EAAE,WAAW;KACrB;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACvC,oCAAoC;IACpC;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,0EAA0E;QACvF,KAAK,EAAE,WAAW;KACrB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,oBAAoB;QACjC,KAAK,EAAE,cAAc;KACxB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,YAAY;KACtB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,sBAAsB;QACnC,KAAK,EAAE,WAAW;KACrB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,uBAAuB;QACpC,KAAK,EAAE,aAAa;KACvB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,aAAa;KACvB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,uBAAuB;QACpC,KAAK,EAAE,WAAW;KACrB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,cAAc;KACxB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,qBAAqB;QAClC,KAAK,EAAE,WAAW;KACrB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,oBAAoB;QACjC,KAAK,EAAE,YAAY;KACtB;CACJ,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAChC,QAAqC,EACrC,QAAa,EACb,KAAc,EACd,MAAgB;IAEhB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,MAAM,CAAC;YACP,EAAE,IAAI,CAAC,sBAAsB,CAAC;YAC9B,EAAE,IAAI,EAAE,CAAC,sBAAsB,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC;QAC1D,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,SAAU,CAAC,CAAA,uBAAuB,CAC1C,MAA2B,EAC3B,SAAiB,EACjB,QAAgC;IAEhC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAEzD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,GAAG,EAAE,KAAK,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;AACL,CAAC;AAAA,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC5C,QAA+B,EACjC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAE,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAC9C,QAAgC,EAClC,EAAE,CAAE,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;AAE/C,MAAM,UAAU,GAAG,CACf,OAA6B,EACV,EAAE,CAAC,CAAC;IACvB,EAAE,EAAE,OAAO,CAAC,EAAE;IACd,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,UAAU,EAAE,OAAO,CAAC,KAAK;IACzB,SAAS,EAAE,OAAO,CAAC,KAAK;IACxB,OAAO,EAAE,OAAO,CAAC,WAAW;IAC5B,KAAK,EAAE,0CAA0C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM;CAC5F,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,gCAAgC,CACnD,MAA2B,EAC3B,UAAyC,EACzC,MAAuC,EACvC,SAAiB,EACjB,0BAA+D,EAC/D,IAAY;IAEZ,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClE,GAAG,EAAE,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAC7D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,GAAG,EAAE,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC1C,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7B,IAAI,KAAK,EAAE,MAAM,OAAO,IAAI,0BAA0B,EAAE,CAAC;YACrD,GAAG,EAAE,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC7C,QAAQ,SAAS,EAAE,CAAC;gBAChB,KAAK,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC1B,GAAG,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;oBACnC,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;wBACvB,GAAG,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;wBAClC,OAAO;oBACX,CAAC;oBACD,MAAM;gBACV,CAAC;gBACD,KAAK,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;oBAC1B,OAAO;gBACX,CAAC;YACL,CAAC;YAED,MAAM;gBACF,IAAI,EAAE,cAAc;gBACpB,MAAM;gBACN,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC;oBACnD,OAAO;oBACP,MAAM,EAAE,UAAU;oBAClB,SAAS,EAAE,MAAM;oBACjB,OAAO,EAAE,OAAO;iBACnB,CAAC;gBACF,GAAG,EAAE,GAAG;gBACR,OAAO;gBACP,QAAQ,EAAE;oBACN,GAAG,EAAE,CAAC,2BAA2B,CAAC;oBAClC,GAAG,EAAE,yBAAyB;oBAC9B,MAAM,EAAE,EAAE;iBACb;gBACD,SAAS,EAAE,IAAI;aAClB,CAAC;QACN,CAAC;IACL,CAAC;AACL,CAAC;AAAA,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Err, Ok } from '@surfside/ads-core-client';
|
|
2
|
+
export const GetRandom = (arr) => {
|
|
3
|
+
if (arr.length === 0) {
|
|
4
|
+
return Err(new EmptyArrayError);
|
|
5
|
+
}
|
|
6
|
+
const idx = Math.floor(Math.random() * arr.length);
|
|
7
|
+
return Ok(arr[idx]);
|
|
8
|
+
};
|
|
9
|
+
export class EmptyArrayError extends Error {
|
|
10
|
+
constructor() {
|
|
11
|
+
super('Array was empty');
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=Array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Array.js","sourceRoot":"src/","sources":["util/Array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAe,MAAM,2BAA2B,CAAC;AAEjE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,GAAa,EAAa,EAAE;IACrD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC,IAAI,eAAe,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACtC;QACI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC7B,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Wait.js","sourceRoot":"src/","sources":["util/Wait.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC"}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import { type ISurfsideClientApi, type AsyncResult, type ILogger } from '@surfside/ads-core-client';
|
|
2
|
-
|
|
2
|
+
import { type IMockSurfsideProduct } from './mock/Product';
|
|
3
|
+
export type { IMockSurfsideProduct } from './mock/Product';
|
|
4
|
+
export declare const InitSurfAdsCoreMock: (accountId: string, siteId: string, channelId: string, locationId: string, userId: string | undefined, logger?: ILogger, mockSponsoredProducts?: IMockSurfsideProduct[], mockRecommendedProducts?: IMockSurfsideProduct[], simulateNoResponse?: number, simulateNetworkLatency?: number) => AsyncResult<ISurfsideClientApi>;
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { type AsyncResult, type IBidRequest, type IBidResponse, type ILogger, type INativeTemplateDelegateWindow, type Result } from '@surfside/ads-core';
|
|
2
|
-
export declare const MockRequestBids: (logger: ILogger | undefined, windowInfo: INativeTemplateDelegateWindow, bidRequest: IBidRequest) => AsyncResult<IBidResponse>;
|
|
2
|
+
export declare const MockRequestBids: (logger: ILogger | undefined, windowInfo: INativeTemplateDelegateWindow, simulateNetworkLatency: number, simulateNoResponse: number, bidRequest: IBidRequest) => AsyncResult<IBidResponse>;
|
|
3
|
+
export declare const makeBannerImage: (w: number, h: number, message?: string) => Result<HTMLElement>;
|
|
3
4
|
export declare const makeImage: (width: number, height: number, message?: string) => Result<HTMLElement>;
|
|
5
|
+
export declare class CanvasFailedError extends Error {
|
|
6
|
+
constructor();
|
|
7
|
+
}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
import { type AsyncResult, type IDynamicZone } from '@surfside/ads-core-client';
|
|
2
|
-
export declare const MockGetDynamicZone: () => AsyncResult<IDynamicZone>;
|
|
2
|
+
export declare const MockGetDynamicZone: (zoneIdString: string) => AsyncResult<IDynamicZone>;
|
|
3
|
+
export declare const parseZoneIds: (zoneIds: string) => IDynamicZone;
|
|
4
|
+
export declare const videoZoneCreator: (zoneId: string) => IDynamicZone | undefined;
|
|
5
|
+
export declare const carouselZoneCreator: (zoneId: string) => IDynamicZone | undefined;
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
-
import { type IBid, type IBuiltProductCardBidResponse, type ICompiledPublisherConfiguration, type ILogger, type INativeTemplateDelegateWindow, type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export
|
|
1
|
+
import { type IBid, type IBuiltProductCardBidResponse, type ICompiledPublisherConfiguration, type ILogger, type INativeTemplateDelegateWindow, type IProductInformation } from '@surfside/ads-core';
|
|
2
|
+
/**
|
|
3
|
+
* Super simple type with just id in case we want to expand upon this in the future.
|
|
4
|
+
*/
|
|
5
|
+
export interface IMockSurfsideProduct {
|
|
6
|
+
id: string;
|
|
7
|
+
[key: string]: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const FallbackSponsoredProducts: {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
description: string;
|
|
13
|
+
brand: string;
|
|
14
|
+
}[];
|
|
15
|
+
export declare const FallbackRecommendedProducts: {
|
|
16
|
+
id: string;
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
brand: string;
|
|
20
|
+
}[];
|
|
21
|
+
export declare function withFallbackProducts<T>(provided: T[] | undefined | undefined, fallback: T[], label?: string, logger?: ILogger): T[];
|
|
22
|
+
export declare function MockGetSponsoredProduct(logger: ILogger | undefined, accountId: string, products: IMockSurfsideProduct[]): AsyncGenerator<IProductInformation>;
|
|
23
|
+
export declare const MockGetRecommendedProductFactory: (products: IProductInformation[]) => () => Promise<import("@surfside/ads-core").OkResult<IProductInformation>>;
|
|
24
|
+
export declare const MockGetAllSponsoredProductsFactory: (products: IMockSurfsideProduct[]) => () => Promise<import("@surfside/ads-core").OkResult<IProductInformation[]>>;
|
|
25
|
+
export declare function MockGenerateSponsoredProductCard(logger: ILogger | undefined, windowInfo: INativeTemplateDelegateWindow, config: ICompiledPublisherConfiguration, accountId: string, getSponsoredProductFactory: AsyncGenerator<IProductInformation>, bids: IBid[]): AsyncGenerator<IBuiltProductCardBidResponse>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const Wait: (time: number) => Promise<unknown>;
|