@surfside/ads-core-mock 0.1.3 → 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 +131 -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 +126 -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,115 +1,166 @@
|
|
|
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) => ({
|
|
149
|
+
id: product.id,
|
|
99
150
|
name: product.name,
|
|
100
151
|
brand_name: product.brand,
|
|
101
152
|
brandName: product.brand,
|
|
102
153
|
details: product.description,
|
|
103
154
|
image: `http://creative.surfside.io/mock/flower${Math.floor(Math.random() * 10) + 1}.jpg`
|
|
104
155
|
});
|
|
105
|
-
export async function* MockGenerateSponsoredProductCard(logger, windowInfo, config, accountId, bids) {
|
|
156
|
+
export async function* MockGenerateSponsoredProductCard(logger, windowInfo, config, accountId, getSponsoredProductFactory, bids) {
|
|
106
157
|
const log = Ctx(logger)?.with('MockGenerateSponsoredProductCard');
|
|
107
158
|
log?.info('Generating mock sponsored product card response');
|
|
108
159
|
for (const bid of bids) {
|
|
109
160
|
log?.info('Going through bids', bid);
|
|
110
161
|
const native = JSON.parse(bid?.adm ?? '');
|
|
111
162
|
log?.debug('Native', native);
|
|
112
|
-
for await (const product of
|
|
163
|
+
for await (const product of getSponsoredProductFactory) {
|
|
113
164
|
log?.info('Yielding sponsored product card');
|
|
114
165
|
switch (accountId) {
|
|
115
166
|
case CHEAT_CODES.returnSome: {
|
|
@@ -118,7 +169,6 @@ export async function* MockGenerateSponsoredProductCard(logger, windowInfo, conf
|
|
|
118
169
|
log?.info('Returning no product');
|
|
119
170
|
return;
|
|
120
171
|
}
|
|
121
|
-
;
|
|
122
172
|
break;
|
|
123
173
|
}
|
|
124
174
|
case CHEAT_CODES.returnNone: {
|
|
@@ -132,16 +182,16 @@ export async function* MockGenerateSponsoredProductCard(logger, windowInfo, conf
|
|
|
132
182
|
product,
|
|
133
183
|
window: windowInfo,
|
|
134
184
|
publisher: config,
|
|
135
|
-
catalog: product
|
|
185
|
+
catalog: product,
|
|
136
186
|
}),
|
|
137
187
|
bid: bid,
|
|
138
188
|
product,
|
|
139
189
|
trackers: {
|
|
140
190
|
imp: ['https://surfside.io/track'],
|
|
141
191
|
win: 'https://surfside.io/win',
|
|
142
|
-
others: []
|
|
192
|
+
others: [],
|
|
143
193
|
},
|
|
144
|
-
sponsored: true
|
|
194
|
+
sponsored: true,
|
|
145
195
|
};
|
|
146
196
|
}
|
|
147
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":"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"}
|
|
@@ -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>;
|