@surfside/ads-core 2.0.1 → 2.0.2
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/README.md +15 -15
- package/lib/cjs/Api.js +195 -0
- package/lib/cjs/Api.js.map +1 -0
- package/lib/cjs/helpers/Generator.js +50 -0
- package/lib/cjs/helpers/Generator.js.map +1 -0
- package/lib/cjs/helpers/Handlebars.js +270 -0
- package/lib/cjs/helpers/Handlebars.js.map +1 -0
- package/lib/cjs/helpers/NativeRequestBuilder.js +174 -0
- package/lib/cjs/helpers/NativeRequestBuilder.js.map +1 -0
- package/lib/cjs/helpers/RequestBuilder.js +160 -0
- package/lib/cjs/helpers/RequestBuilder.js.map +1 -0
- package/lib/cjs/helpers/TryGet.js +14 -0
- package/lib/cjs/helpers/TryGet.js.map +1 -0
- package/lib/cjs/helpers/Window.js +24 -0
- package/lib/cjs/helpers/Window.js.map +1 -0
- package/lib/cjs/helpers/index.js +24 -0
- package/lib/cjs/helpers/index.js.map +1 -0
- package/lib/cjs/helpers/response/Banner.js +4 -0
- package/lib/cjs/helpers/response/Banner.js.map +1 -0
- package/lib/cjs/helpers/response/BuiltResponse.js +27 -0
- package/lib/cjs/helpers/response/BuiltResponse.js.map +1 -0
- package/lib/cjs/helpers/response/Carousel.js +282 -0
- package/lib/cjs/helpers/response/Carousel.js.map +1 -0
- package/lib/cjs/helpers/response/Clickthrough.js +24 -0
- package/lib/cjs/helpers/response/Clickthrough.js.map +1 -0
- package/lib/cjs/helpers/response/ProductCard.js +198 -0
- package/lib/cjs/helpers/response/ProductCard.js.map +1 -0
- package/lib/cjs/helpers/response/Video.js +4 -0
- package/lib/cjs/helpers/response/Video.js.map +1 -0
- package/lib/cjs/helpers/response/index.js +23 -0
- package/lib/cjs/helpers/response/index.js.map +1 -0
- package/lib/cjs/index.js +21 -3488
- package/lib/cjs/index.js.map +1 -54
- package/lib/cjs/models/dynamic/DynamicZone.js +12 -0
- package/lib/cjs/models/dynamic/DynamicZone.js.map +1 -0
- package/lib/cjs/models/dynamic/index.js +18 -0
- package/lib/cjs/models/dynamic/index.js.map +1 -0
- package/lib/cjs/models/index.js +22 -0
- package/lib/cjs/models/index.js.map +1 -0
- package/lib/cjs/models/retail/Configuration.js +10 -0
- package/lib/cjs/models/retail/Configuration.js.map +1 -0
- package/lib/cjs/models/retail/Product.js +4 -0
- package/lib/cjs/models/retail/Product.js.map +1 -0
- package/lib/cjs/models/retail/Recommended.js +3 -0
- package/lib/cjs/models/retail/Recommended.js.map +1 -0
- package/lib/cjs/models/retail/index.js +20 -0
- package/lib/cjs/models/retail/index.js.map +1 -0
- package/lib/cjs/models/rtb/BidRequest.js +20 -0
- package/lib/cjs/models/rtb/BidRequest.js.map +1 -0
- package/lib/cjs/models/rtb/BidResponse.js +3 -0
- package/lib/cjs/models/rtb/BidResponse.js.map +1 -0
- package/lib/cjs/models/rtb/NativeRequest.js +122 -0
- package/lib/cjs/models/rtb/NativeRequest.js.map +1 -0
- package/lib/cjs/models/rtb/NativeResponse.js +26 -0
- package/lib/cjs/models/rtb/NativeResponse.js.map +1 -0
- package/lib/cjs/models/rtb/index.js +21 -0
- package/lib/cjs/models/rtb/index.js.map +1 -0
- package/lib/cjs/models/tracking/Geo.js +3 -0
- package/lib/cjs/models/tracking/Geo.js.map +1 -0
- package/lib/cjs/models/tracking/index.js +18 -0
- package/lib/cjs/models/tracking/index.js.map +1 -0
- package/lib/cjs/models/vast/Vast.js +4 -0
- package/lib/cjs/models/vast/Vast.js.map +1 -0
- package/lib/cjs/models/vast/index.js +18 -0
- package/lib/cjs/models/vast/index.js.map +1 -0
- package/lib/cjs/services/Bidder.js +128 -0
- package/lib/cjs/services/Bidder.js.map +1 -0
- package/lib/cjs/services/Configuration.js +93 -0
- package/lib/cjs/services/Configuration.js.map +1 -0
- package/lib/cjs/services/Device.js +236 -0
- package/lib/cjs/services/Device.js.map +1 -0
- package/lib/cjs/services/Dynamic.js +129 -0
- package/lib/cjs/services/Dynamic.js.map +1 -0
- package/lib/cjs/services/Geo.js +35 -0
- package/lib/cjs/services/Geo.js.map +1 -0
- package/lib/cjs/services/Logger.js +57 -0
- package/lib/cjs/services/Logger.js.map +1 -0
- package/lib/cjs/services/Memoization.js +17 -0
- package/lib/cjs/services/Memoization.js.map +1 -0
- package/lib/cjs/services/Product.js +127 -0
- package/lib/cjs/services/Product.js.map +1 -0
- package/lib/cjs/services/Recommender.js +83 -0
- package/lib/cjs/services/Recommender.js.map +1 -0
- package/lib/cjs/services/Result.js +220 -0
- package/lib/cjs/services/Result.js.map +1 -0
- package/lib/cjs/services/Template.js +43 -0
- package/lib/cjs/services/Template.js.map +1 -0
- package/lib/cjs/services/index.js +28 -0
- package/lib/cjs/services/index.js.map +1 -0
- package/lib/cjs/services/mock/Bidder.js +3 -0
- package/lib/cjs/services/mock/Bidder.js.map +1 -0
- package/lib/cjs/services/mock/index.js +18 -0
- package/lib/cjs/services/mock/index.js.map +1 -0
- package/lib/esm/Api.js +183 -0
- package/lib/esm/Api.js.map +1 -0
- package/lib/esm/helpers/Generator.js +42 -0
- package/lib/esm/helpers/Generator.js.map +1 -0
- package/lib/esm/helpers/Handlebars.js +251 -0
- package/lib/esm/helpers/Handlebars.js.map +1 -0
- package/lib/esm/helpers/NativeRequestBuilder.js +169 -0
- package/lib/esm/helpers/NativeRequestBuilder.js.map +1 -0
- package/lib/esm/helpers/RequestBuilder.js +157 -0
- package/lib/esm/helpers/RequestBuilder.js.map +1 -0
- package/lib/esm/helpers/TryGet.js +10 -0
- package/lib/esm/helpers/TryGet.js.map +1 -0
- package/lib/esm/helpers/Window.js +20 -0
- package/lib/esm/helpers/Window.js.map +1 -0
- package/lib/esm/helpers/index.js +8 -0
- package/lib/esm/helpers/index.js.map +1 -0
- package/lib/esm/helpers/response/Banner.js +3 -0
- package/lib/esm/helpers/response/Banner.js.map +1 -0
- package/lib/esm/helpers/response/BuiltResponse.js +22 -0
- package/lib/esm/helpers/response/BuiltResponse.js.map +1 -0
- package/lib/esm/helpers/response/Carousel.js +273 -0
- package/lib/esm/helpers/response/Carousel.js.map +1 -0
- package/lib/esm/helpers/response/Clickthrough.js +20 -0
- package/lib/esm/helpers/response/Clickthrough.js.map +1 -0
- package/lib/esm/helpers/response/ProductCard.js +189 -0
- package/lib/esm/helpers/response/ProductCard.js.map +1 -0
- package/lib/esm/helpers/response/Video.js +3 -0
- package/lib/esm/helpers/response/Video.js.map +1 -0
- package/lib/esm/helpers/response/index.js +7 -0
- package/lib/esm/helpers/response/index.js.map +1 -0
- package/lib/esm/index.js +5 -3460
- package/lib/esm/index.js.map +1 -54
- package/lib/esm/models/dynamic/DynamicZone.js +11 -0
- package/lib/esm/models/dynamic/DynamicZone.js.map +1 -0
- package/lib/esm/models/dynamic/index.js +2 -0
- package/lib/esm/models/dynamic/index.js.map +1 -0
- package/lib/esm/models/index.js +6 -0
- package/lib/esm/models/index.js.map +1 -0
- package/lib/esm/models/retail/Configuration.js +9 -0
- package/lib/esm/models/retail/Configuration.js.map +1 -0
- package/lib/esm/models/retail/Product.js +3 -0
- package/lib/esm/models/retail/Product.js.map +1 -0
- package/lib/esm/models/retail/Recommended.js +2 -0
- package/lib/esm/models/retail/Recommended.js.map +1 -0
- package/lib/esm/models/retail/index.js +4 -0
- package/lib/esm/models/retail/index.js.map +1 -0
- package/lib/esm/models/rtb/BidRequest.js +17 -0
- package/lib/esm/models/rtb/BidRequest.js.map +1 -0
- package/lib/esm/models/rtb/BidResponse.js +2 -0
- package/lib/esm/models/rtb/BidResponse.js.map +1 -0
- package/lib/esm/models/rtb/NativeRequest.js +119 -0
- package/lib/esm/models/rtb/NativeRequest.js.map +1 -0
- package/lib/esm/models/rtb/NativeResponse.js +23 -0
- package/lib/esm/models/rtb/NativeResponse.js.map +1 -0
- package/lib/esm/models/rtb/index.js +5 -0
- package/lib/esm/models/rtb/index.js.map +1 -0
- package/lib/esm/models/tracking/Geo.js +2 -0
- package/lib/esm/models/tracking/Geo.js.map +1 -0
- package/lib/esm/models/tracking/index.js +2 -0
- package/lib/esm/models/tracking/index.js.map +1 -0
- package/lib/esm/models/vast/Vast.js +3 -0
- package/lib/esm/models/vast/Vast.js.map +1 -0
- package/lib/esm/models/vast/index.js +2 -0
- package/lib/esm/models/vast/index.js.map +1 -0
- package/lib/esm/services/Bidder.js +119 -0
- package/lib/esm/services/Bidder.js.map +1 -0
- package/lib/esm/services/Configuration.js +56 -0
- package/lib/esm/services/Configuration.js.map +1 -0
- package/lib/esm/services/Device.js +232 -0
- package/lib/esm/services/Device.js.map +1 -0
- package/lib/esm/services/Dynamic.js +120 -0
- package/lib/esm/services/Dynamic.js.map +1 -0
- package/lib/esm/services/Geo.js +30 -0
- package/lib/esm/services/Geo.js.map +1 -0
- package/lib/esm/services/Logger.js +52 -0
- package/lib/esm/services/Logger.js.map +1 -0
- package/lib/esm/services/Memoization.js +13 -0
- package/lib/esm/services/Memoization.js.map +1 -0
- package/lib/esm/services/Product.js +120 -0
- package/lib/esm/services/Product.js.map +1 -0
- package/lib/esm/services/Recommender.js +78 -0
- package/lib/esm/services/Recommender.js.map +1 -0
- package/lib/esm/services/Result.js +199 -0
- package/lib/esm/services/Result.js.map +1 -0
- package/lib/esm/services/Template.js +38 -0
- package/lib/esm/services/Template.js.map +1 -0
- package/lib/esm/services/index.js +12 -0
- package/lib/esm/services/index.js.map +1 -0
- package/lib/esm/services/mock/Bidder.js +2 -0
- package/lib/esm/services/mock/Bidder.js.map +1 -0
- package/lib/esm/services/mock/index.js +2 -0
- package/lib/esm/services/mock/index.js.map +1 -0
- package/lib/types/Api.d.ts +5 -5
- package/lib/types/helpers/Handlebars.d.ts +3 -3
- package/lib/types/helpers/NativeRequestBuilder.d.ts +1 -1
- package/lib/types/helpers/RequestBuilder.d.ts +1 -1
- package/lib/types/helpers/TryGet.d.ts +1 -1
- package/lib/types/helpers/Window.d.ts +2 -2
- package/lib/types/helpers/response/Banner.d.ts +1 -1
- package/lib/types/helpers/response/BuiltResponse.d.ts +1 -1
- package/lib/types/helpers/response/Carousel.d.ts +1 -1
- package/lib/types/helpers/response/Clickthrough.d.ts +1 -1
- package/lib/types/helpers/response/ProductCard.d.ts +3 -3
- package/lib/types/helpers/response/Video.d.ts +2 -2
- package/lib/types/services/Bidder.d.ts +3 -3
- package/lib/types/services/Configuration.d.ts +1 -1
- package/lib/types/services/Dynamic.d.ts +6 -6
- package/lib/types/services/Geo.d.ts +1 -1
- package/lib/types/services/Product.d.ts +1 -1
- package/lib/types/services/Template.d.ts +3 -3
- package/package.json +41 -33
- package/lib/index.js +0 -1
- package/lib/index.js.map +0 -1
- package/lib/types/constant-values/index.d.ts +0 -46
- package/lib/types/errors/index.d.ts +0 -3
- package/lib/types/helpers/generators/CollectN.d.ts +0 -2
- package/lib/types/helpers/generators/index.d.ts +0 -1
- package/lib/types/helpers/handlebars/index.d.ts +0 -119
- package/lib/types/helpers/requests/RequestBuilder.d.ts +0 -124
- package/lib/types/helpers/requests/SimpleBannerRequest.d.ts +0 -26
- package/lib/types/helpers/requests/index.d.ts +0 -2
- package/lib/types/helpers/responses/BuildBannerResponse.d.ts +0 -10
- package/lib/types/helpers/responses/BuildNativeResponse.d.ts +0 -21
- package/lib/types/helpers/responses/BuildVideoResponse.d.ts +0 -0
- package/lib/types/helpers/responses/ClickthroughHelpers.d.ts +0 -2
- package/lib/types/helpers/responses/VastHelpers.d.ts +0 -4
- package/lib/types/helpers/responses/index.d.ts +0 -4
- package/lib/types/middleware/DeviceMiddleware.d.ts +0 -3
- package/lib/types/middleware/GeoMiddleware.d.ts +0 -3
- package/lib/types/middleware/IdentityMiddleware.d.ts +0 -4
- package/lib/types/middleware/index.d.ts +0 -3
- package/lib/types/models/retail/IProductInformation.d.ts +0 -37
- package/lib/types/models/retail/IPublisherConfiguration.d.ts +0 -64
- package/lib/types/models/retail/IRecommenderResponse.d.ts +0 -10
- package/lib/types/models/rtb/IBidRequest.d.ts +0 -399
- package/lib/types/models/rtb/IBidResponse.d.ts +0 -47
- package/lib/types/models/rtb/native/Constants.d.ts +0 -60
- package/lib/types/models/rtb/native/INativeRequest.d.ts +0 -54
- package/lib/types/models/rtb/native/INativeResponse.d.ts +0 -60
- package/lib/types/models/rtb/native/NativeConstants.d.ts +0 -120
- package/lib/types/models/rtb/native/NativeRequestBuilder.d.ts +0 -158
- package/lib/types/models/rtb/native/index.d.ts +0 -4
- package/lib/types/models/tracking/IEvents.d.ts +0 -82
- package/lib/types/models/tracking/IGeoContext.d.ts +0 -14
- package/lib/types/models/tracking/IUserID.d.ts +0 -1
- package/lib/types/services/OverrideService.d.ts +0 -10
- package/lib/types/services/logger/ILoggerService.d.ts +0 -39
- package/lib/types/services/logger/LocalLoggerService.d.ts +0 -19
- package/lib/types/services/logger/index.d.ts +0 -2
- package/lib/types/services/product-feed/IProductFeedService.d.ts +0 -5
- package/lib/types/services/product-feed/SurfsideProductFeedService.d.ts +0 -11
- package/lib/types/services/product-feed/index.d.ts +0 -2
- package/lib/types/services/recommender/IRecommenderService.d.ts +0 -47
- package/lib/types/services/recommender/SurfsideRecommenderService.d.ts +0 -31
- package/lib/types/services/recommender/index.d.ts +0 -2
- package/lib/types/services/rtb/bidder/IBidderService.d.ts +0 -12
- package/lib/types/services/rtb/bidder/SurfsideBidderService.d.ts +0 -28
- package/lib/types/services/rtb/bidder/index.d.ts +0 -2
- package/lib/types/services/rtb/configuration/IConfigurationService.d.ts +0 -14
- package/lib/types/services/rtb/configuration/SurfsideConfigurationService.d.ts +0 -29
- package/lib/types/services/rtb/configuration/index.d.ts +0 -2
- package/lib/types/services/rtb/index.d.ts +0 -2
- package/lib/types/services/tracking/device/DeviceOverrideService.d.ts +0 -8
- package/lib/types/services/tracking/device/IDeviceService.d.ts +0 -4
- package/lib/types/services/tracking/device/SurfsideDeviceService.d.ts +0 -16
- package/lib/types/services/tracking/device/index.d.ts +0 -3
- package/lib/types/services/tracking/events/IEventService.d.ts +0 -5
- package/lib/types/services/tracking/events/SurfsideEventService.d.ts +0 -42
- package/lib/types/services/tracking/events/index.d.ts +0 -2
- package/lib/types/services/tracking/geo/GeoOverrideService.d.ts +0 -8
- package/lib/types/services/tracking/geo/IGeoService.d.ts +0 -12
- package/lib/types/services/tracking/geo/SurfsideGeoService.d.ts +0 -7
- package/lib/types/services/tracking/geo/index.d.ts +0 -3
- package/lib/types/services/tracking/index.d.ts +0 -4
- package/lib/types/services/tracking/user/IUserIDService.d.ts +0 -4
- package/lib/types/services/tracking/user/SurfsideUserIDService.d.ts +0 -7
- package/lib/types/services/tracking/user/UserOverrideService.d.ts +0 -8
- package/lib/types/services/tracking/user/index.d.ts +0 -3
- package/lib/types/utils/Protocol.d.ts +0 -1
- package/lib/types/utils/Rendering.d.ts +0 -44
- package/lib/types/utils/index.d.ts +0 -2
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { Ctx } from './Logger';
|
|
2
|
+
import { Err, Ok } from './Result';
|
|
3
|
+
export async function* GenerateTopProducts(logger, productFeed, url, accountId, siteId, locationId) {
|
|
4
|
+
const log = Ctx(logger)?.with('GenerateTopProducts').with(accountId).with(siteId).with(locationId);
|
|
5
|
+
log?.info('Generating top products');
|
|
6
|
+
yield* generateProductRecommendation(logger, productFeed, url, accountId, siteId, locationId, undefined, 'top-products');
|
|
7
|
+
}
|
|
8
|
+
export async function* GenerateForYou(logger, productFeed, url, accountId, siteId, locationId, userId) {
|
|
9
|
+
const log = Ctx(logger)?.with('GenerateForYou').with(accountId).with(siteId).with(locationId).with(userId);
|
|
10
|
+
log?.info('Generating for you');
|
|
11
|
+
yield* generateProductRecommendation(logger, productFeed, url, accountId, siteId, locationId, userId, 'for-you');
|
|
12
|
+
}
|
|
13
|
+
export async function* GeneratePreviousPurchases(logger, productFeed, url, accountId, siteId, locationId, userId) {
|
|
14
|
+
const log = Ctx(logger)
|
|
15
|
+
?.with('GeneratePreviousPurchases')
|
|
16
|
+
.with(accountId)
|
|
17
|
+
.with(siteId)
|
|
18
|
+
.with(locationId)
|
|
19
|
+
.with(userId);
|
|
20
|
+
log?.info('Generating previous purchases');
|
|
21
|
+
yield* generateProductRecommendation(log, productFeed, url, accountId, siteId, locationId, userId, 'buy-again');
|
|
22
|
+
}
|
|
23
|
+
async function* generateProductRecommendation(logger, productFeed, url, accountId, siteId, locationId, userId, type) {
|
|
24
|
+
const log = Ctx(logger)?.with('generatreProductRecommendation');
|
|
25
|
+
log?.debug('Generating product recommendation');
|
|
26
|
+
const recommendations = await fetchRecommendations(log, url, accountId, siteId, locationId, userId, type);
|
|
27
|
+
if (!recommendations.ok) {
|
|
28
|
+
log?.error(recommendations.error);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
yield* generateProduct(log, productFeed, accountId, locationId, recommendations.value);
|
|
32
|
+
log?.debug('out of recommendations');
|
|
33
|
+
}
|
|
34
|
+
const fetchRecommendations = async (logger, url, accountId, siteId, locationId, userId, type) => {
|
|
35
|
+
const log = Ctx(logger)?.with('fetchRecommendations');
|
|
36
|
+
log?.debug('Fetching recommendations');
|
|
37
|
+
const key = `accountId=${accountId}&siteId=${siteId}&locationId=${locationId}&userId=${userId ?? 'null'}`;
|
|
38
|
+
try {
|
|
39
|
+
const results = await fetch(`${url}/r/${type}?${key}&limit=100`);
|
|
40
|
+
if (!results.ok) {
|
|
41
|
+
return Err(new Error('Failed to load recommendations. Service returned ' + results.status));
|
|
42
|
+
}
|
|
43
|
+
/* On error, the result will be IRecommenderResponse.
|
|
44
|
+
* On success, it will just be a set of recommended products */
|
|
45
|
+
const recommendations = await results.json();
|
|
46
|
+
const error = recommendations.error;
|
|
47
|
+
if (error !== undefined) {
|
|
48
|
+
return Err(new Error(error));
|
|
49
|
+
}
|
|
50
|
+
return Ok(recommendations);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
return Err(err);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
async function* generateProduct(logger, productFeed, accountId, locationId, results) {
|
|
57
|
+
const log = Ctx(logger)?.with('generateProduct');
|
|
58
|
+
log?.debug('generating product info');
|
|
59
|
+
for (const item of results) {
|
|
60
|
+
const itemId = item.item_id;
|
|
61
|
+
try {
|
|
62
|
+
log?.debug('itemId', itemId);
|
|
63
|
+
const product = await productFeed(itemId);
|
|
64
|
+
log?.debug('product', itemId, product);
|
|
65
|
+
if (product.ok) {
|
|
66
|
+
yield product.value;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
log?.warn('item was missing from product feed', itemId);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
log?.warn('couldn\'t get product', err);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
log?.info('no more products. Exiting');
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=Recommender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Recommender.js","sourceRoot":"src/","sources":["services/Recommender.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
export const Ok = (t) => ({
|
|
2
|
+
ok: true,
|
|
3
|
+
value: t
|
|
4
|
+
});
|
|
5
|
+
export const Err = (e) => ({
|
|
6
|
+
ok: false,
|
|
7
|
+
error: e
|
|
8
|
+
});
|
|
9
|
+
export const TryDo = (fn) => {
|
|
10
|
+
try {
|
|
11
|
+
return Ok(fn());
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
return Err(err);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
export const TryDoFlat = (fn) => {
|
|
18
|
+
try {
|
|
19
|
+
return fn();
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
return Err(err);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
export const TryDoAsync = async (fn) => {
|
|
26
|
+
try {
|
|
27
|
+
return Ok(await fn());
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
return Err(err);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
export const GetValue = (result) => result?.ok === true ? result.value : undefined;
|
|
34
|
+
export const ValueOr = (result, or) => result?.ok === true ? result.value : or;
|
|
35
|
+
export const GetValueOrThrow = (result) => {
|
|
36
|
+
if (result.ok) {
|
|
37
|
+
return result.value;
|
|
38
|
+
}
|
|
39
|
+
throw result.error;
|
|
40
|
+
};
|
|
41
|
+
export const WrapValue = (value) => {
|
|
42
|
+
if (value === undefined || value === null) {
|
|
43
|
+
return Err(new NoValueError(value));
|
|
44
|
+
}
|
|
45
|
+
return Ok(value);
|
|
46
|
+
};
|
|
47
|
+
export const AssertValue = GetValueOrThrow;
|
|
48
|
+
export const AllOrNone = (results) => {
|
|
49
|
+
const failed = results.filter(res => !res.ok).map(res => res.error);
|
|
50
|
+
if (failed.length > 0) {
|
|
51
|
+
return Err(new MultipleErrorsError(failed));
|
|
52
|
+
}
|
|
53
|
+
const success = results.filter(res => res.ok).map(res => res.value);
|
|
54
|
+
return Ok(success);
|
|
55
|
+
};
|
|
56
|
+
export const Some = (results) => {
|
|
57
|
+
const success = results.filter(res => res.ok).map(res => res.value);
|
|
58
|
+
return Ok(success);
|
|
59
|
+
};
|
|
60
|
+
export const Filter = (...results) => {
|
|
61
|
+
const success = Some(results).value.map(val => Ok(val));
|
|
62
|
+
const failed = results.filter(res => !res.ok);
|
|
63
|
+
return [success, failed];
|
|
64
|
+
};
|
|
65
|
+
export const AnyFailed = (...results) => {
|
|
66
|
+
const errors = results.filter(res => !res.ok).map(res => res.error);
|
|
67
|
+
if (errors.length > 0) {
|
|
68
|
+
return [true, errors];
|
|
69
|
+
}
|
|
70
|
+
return [false];
|
|
71
|
+
};
|
|
72
|
+
export class MultipleErrorsError extends Error {
|
|
73
|
+
errors;
|
|
74
|
+
constructor(errors) {
|
|
75
|
+
super('Got multiple errors:\n' +
|
|
76
|
+
errors.map(err => '\t' + err.message.substring(0, 32).padEnd(35, '.')).join('\n'));
|
|
77
|
+
this.errors = errors;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export const Pipe = (result) => ({
|
|
81
|
+
then: pipeThen(result),
|
|
82
|
+
result: pipeResult(result),
|
|
83
|
+
value: pipeValue(result),
|
|
84
|
+
valueOr: pipeValueOr(result),
|
|
85
|
+
valueOrThrow: pipeValueOrThrow(result)
|
|
86
|
+
});
|
|
87
|
+
const pipeThen = (result) => (fn) => {
|
|
88
|
+
if (!result.ok) {
|
|
89
|
+
return Pipe(result);
|
|
90
|
+
}
|
|
91
|
+
return Pipe(Ok(fn(result.value)));
|
|
92
|
+
};
|
|
93
|
+
const pipeResult = (result) => () => result;
|
|
94
|
+
const pipeValue = (result) => () => GetValue(result);
|
|
95
|
+
const pipeValueOr = (result) => (or) => GetValue(result) ?? or;
|
|
96
|
+
const pipeValueOrThrow = (result) => () => {
|
|
97
|
+
if (result.ok) {
|
|
98
|
+
return result.value;
|
|
99
|
+
}
|
|
100
|
+
throw result.error;
|
|
101
|
+
};
|
|
102
|
+
export const AsyncPipe = (result) => ({
|
|
103
|
+
then: asyncPipeThen(result),
|
|
104
|
+
result: asyncPipeResult(result),
|
|
105
|
+
value: asyncPipeValue(result),
|
|
106
|
+
valueOr: asyncPipeValueOr(result),
|
|
107
|
+
valueOrThrow: asyncPipeValueOrThrow(result)
|
|
108
|
+
});
|
|
109
|
+
const asyncPipeThen = (result) => (fn) => {
|
|
110
|
+
const asyncResult = result;
|
|
111
|
+
const wrappedPromiseResult = asyncResult.then(unwrappedResult => {
|
|
112
|
+
if (unwrappedResult.ok) {
|
|
113
|
+
try {
|
|
114
|
+
const fnRes = fn(unwrappedResult.value);
|
|
115
|
+
return Promise.resolve(fnRes)
|
|
116
|
+
.catch(Err);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
return Err(err);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
return unwrappedResult;
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
return AsyncPipe(wrappedPromiseResult);
|
|
127
|
+
};
|
|
128
|
+
const asyncPipeResult = (result) => () => result;
|
|
129
|
+
const asyncPipeValue = (result) => async () => {
|
|
130
|
+
try {
|
|
131
|
+
const res = await result;
|
|
132
|
+
if (res.ok) {
|
|
133
|
+
return res.value;
|
|
134
|
+
}
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
const asyncPipeValueOr = (result) => async (or) => {
|
|
142
|
+
try {
|
|
143
|
+
const res = await result;
|
|
144
|
+
if (res.ok) {
|
|
145
|
+
return res.value;
|
|
146
|
+
}
|
|
147
|
+
return or;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return or;
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
const asyncPipeValueOrThrow = (result) => async () => {
|
|
154
|
+
const res = await result;
|
|
155
|
+
if (res.ok) {
|
|
156
|
+
return res.value;
|
|
157
|
+
}
|
|
158
|
+
throw res.error;
|
|
159
|
+
};
|
|
160
|
+
export const ResultStream = (results) => ({
|
|
161
|
+
map: streamMap(results),
|
|
162
|
+
filter: streamFilter(results),
|
|
163
|
+
results: streamResults(results),
|
|
164
|
+
value: streamValue(results),
|
|
165
|
+
valueOr: streamValueOr(results),
|
|
166
|
+
valueOrThrow: streamValueOrThrow(results)
|
|
167
|
+
});
|
|
168
|
+
const streamMap = (results) => (fn) => {
|
|
169
|
+
if (!results.ok) {
|
|
170
|
+
return ResultStream(results);
|
|
171
|
+
}
|
|
172
|
+
return ResultStream(Ok(results.value.map(fn)));
|
|
173
|
+
};
|
|
174
|
+
const streamFilter = (results) => (fn) => {
|
|
175
|
+
if (!results.ok) {
|
|
176
|
+
return ResultStream(results);
|
|
177
|
+
}
|
|
178
|
+
return ResultStream(Ok(results.value.filter(fn)));
|
|
179
|
+
};
|
|
180
|
+
const streamResults = (results) => () => results;
|
|
181
|
+
const streamValue = (results) => () => results.ok ? results.value : undefined;
|
|
182
|
+
const streamValueOr = (results) => (or) => results.ok ? results.value : or;
|
|
183
|
+
const streamValueOrThrow = (results) => () => {
|
|
184
|
+
if (results.ok) {
|
|
185
|
+
return results.value;
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
throw results.error;
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
export class NoValueError extends Error {
|
|
192
|
+
value;
|
|
193
|
+
constructor(value) {
|
|
194
|
+
super('Value was undefined or null');
|
|
195
|
+
this.value = value;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
;
|
|
199
|
+
//# sourceMappingURL=Result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Result.js","sourceRoot":"src/","sources":["services/Result.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Ctx } from './Logger';
|
|
2
|
+
import { Err, GetValueOrThrow, Ok } from './Result';
|
|
3
|
+
export const EvaluateHandlebarsProductCardTemplate = (logger, windowInfo, publisher, product, clickthrough) => {
|
|
4
|
+
const log = Ctx(logger)?.with('EvaluateHandlebarsProductCardTemplate');
|
|
5
|
+
log?.info('Evaluating handlebars product card template', product);
|
|
6
|
+
try {
|
|
7
|
+
const renderedClickthrough = clickthrough ?? GetValueOrThrow(EvaluateHandlebarsClickthroughTemplate(log, windowInfo, publisher, product));
|
|
8
|
+
log?.debug('Got clickthrough URL', renderedClickthrough);
|
|
9
|
+
return Ok(publisher.templates.productCardTemplate({
|
|
10
|
+
...product,
|
|
11
|
+
product,
|
|
12
|
+
window: windowInfo,
|
|
13
|
+
publisher,
|
|
14
|
+
catalog: product,
|
|
15
|
+
clickthrough: renderedClickthrough
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
return Err(error);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
export const EvaluateHandlebarsClickthroughTemplate = (logger, windowInfo, publisher, product) => {
|
|
23
|
+
const log = Ctx(logger)?.with('EvaluateHandlebarsClickthroughTemplate');
|
|
24
|
+
log?.info('Evaluating handlebars clickthrough URL template', product);
|
|
25
|
+
try {
|
|
26
|
+
return Ok(publisher.templates.clickThroughUrlTemplate({
|
|
27
|
+
product,
|
|
28
|
+
catalog: product,
|
|
29
|
+
window: windowInfo,
|
|
30
|
+
publisher,
|
|
31
|
+
...product
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
return Err(error);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=Template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Template.js","sourceRoot":"src/","sources":["services/Template.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAgB,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,EAAe,MAAM,UAAU,CAAC;AAWjE,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,MAA2B,EAC7E,UAAyC,EACzC,SAA0C,EAC1C,OAA4B,EAC5B,YAAqB,EACP,EAAE;IAChB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACvE,GAAG,EAAE,IAAI,CAAC,6CAA6C,EAAE,OAAO,CAAC,CAAC;IAElE,IAAI,CAAC;QACD,MAAM,oBAAoB,GAAG,YAAY,IAAI,eAAe,CACxD,sCAAsC,CAAC,GAAG,EACtC,UAAU,EACV,SAAS,EACT,OAAO,CACV,CACJ,CAAC;QACF,GAAG,EAAE,KAAK,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;QAEzD,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC;YAC9C,GAAG,OAAO;YACV,OAAO;YACP,MAAM,EAAE,UAAU;YAClB,SAAS;YACT,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,oBAAoB;SACrC,CAAC,CAAC,CAAC;IACR,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,GAAG,CAAC,KAAc,CAAC,CAAC;IAC/B,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,MAA2B,EAC9E,UAAyC,EACzC,SAA0C,EAC1C,OAA4B,EACd,EAAE;IAChB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACxE,GAAG,EAAE,IAAI,CAAC,iDAAiD,EAAE,OAAO,CAAC,CAAC;IACtE,IAAI,CAAC;QACD,OAAO,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,uBAAuB,CAAC;YAClD,OAAO;YACP,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,UAAU;YAClB,SAAS;YACT,GAAG,OAAO;SACb,CAAC,CAAC,CAAC;IACR,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,GAAG,CAAC,KAAc,CAAC,CAAC;IAC/B,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './Geo';
|
|
2
|
+
export * from './Logger';
|
|
3
|
+
export * from './Result';
|
|
4
|
+
export * from './Device';
|
|
5
|
+
export * from './Configuration';
|
|
6
|
+
export * from './Bidder';
|
|
7
|
+
export * from './Product';
|
|
8
|
+
export * from './Recommender';
|
|
9
|
+
export * from './mock';
|
|
10
|
+
export * from './Template';
|
|
11
|
+
export * from './Dynamic';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["services/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bidder.js","sourceRoot":"src/","sources":["services/mock/Bidder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["services/mock/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
|
package/lib/types/Api.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { INativeTemplateDelegateWindow, ICompiledPublisherConfiguration, IDevice, IGeoContext } from './models';
|
|
2
|
-
import { AsyncResult, INavigator, type IScreen, RequestBidsFn, ILogger, GetSponsoredProductFromNativeIdFn, PersonalRecommenderFn, NonPersonalRecommenderFn, GetConfigurationFn, GetGeoFn, GetDeviceFn, GetRecommendedProductFromProductIdFn, GetAllSponsoredProductFromNativeIdFn } from './services';
|
|
3
|
-
import { BuildAllSponsoredProductCardResponsesFn, GenerateSponsoredProductCardResponseFn, NativeRequestBuilderFn, RequestBuilderFn } from './helpers';
|
|
2
|
+
import { type AsyncResult, type INavigator, type IScreen, type RequestBidsFn, type ILogger, type GetSponsoredProductFromNativeIdFn, type PersonalRecommenderFn, type NonPersonalRecommenderFn, type GetConfigurationFn, type GetGeoFn, type GetDeviceFn, type GetRecommendedProductFromProductIdFn, type GetAllSponsoredProductFromNativeIdFn } from './services';
|
|
3
|
+
import { type BuildAllSponsoredProductCardResponsesFn, type GenerateSponsoredProductCardResponseFn, type NativeRequestBuilderFn, type RequestBuilderFn } from './helpers';
|
|
4
4
|
import Handlebars from 'handlebars/runtime';
|
|
5
|
-
import { BuildHybridCarouselFn, BuildHybridCarouselFromInitialBidFn, BuildRecommendedCarouselFn, BuildSponsoredCarouselFn, BuildSponsoredCarouselFromInitialBidFn } from './helpers/response/Carousel';
|
|
5
|
+
import { type BuildHybridCarouselFn, type BuildHybridCarouselFromInitialBidFn, type BuildRecommendedCarouselFn, type BuildSponsoredCarouselFn, type BuildSponsoredCarouselFromInitialBidFn } from './helpers/response/Carousel';
|
|
6
6
|
import { type EvaluateClickthroughTemplateFn, type EvaluateProductCardTemplateFn } from './services/Template';
|
|
7
|
-
import { BuildDynamicZoneRequestFn, GetDynamicZoneFn } from './services/Dynamic';
|
|
8
|
-
export declare const PROD_BIDDER = "//
|
|
7
|
+
import { type BuildDynamicZoneRequestFn, type GetDynamicZoneFn } from './services/Dynamic';
|
|
8
|
+
export declare const PROD_BIDDER = "//bid.surfside.io/rtb/bids/surfside";
|
|
9
9
|
export declare const PROD_CONFIGURATION_SERVICE = "//r.surfside.io";
|
|
10
10
|
export declare const PROD_SPONSORED_PRODUCT_FEED = "//creative.surfside.io";
|
|
11
11
|
export declare const PROD_RECOMMENDED_PRODUCT_FEED = "//creative.surfside.io";
|
|
@@ -61,7 +61,7 @@ export declare function search(name: string): string;
|
|
|
61
61
|
*
|
|
62
62
|
* @returns The first truthy argument, or an empty string if all arguments are falsy
|
|
63
63
|
*/
|
|
64
|
-
export declare function coalesce(): string;
|
|
64
|
+
export declare function coalesce(...args: any[]): string;
|
|
65
65
|
/**
|
|
66
66
|
* Joins the passed arguments with the specified separator.
|
|
67
67
|
* For example, {{join "foo" "bar" "baz"}} will return "foo/bar/baz"..
|
|
@@ -71,7 +71,7 @@ export declare function coalesce(): string;
|
|
|
71
71
|
*
|
|
72
72
|
* @returns The joined string
|
|
73
73
|
*/
|
|
74
|
-
export declare function join(): string;
|
|
74
|
+
export declare function join(...args: any[]): string;
|
|
75
75
|
/**
|
|
76
76
|
* Encodes the passed string for use in a URI component.
|
|
77
77
|
*
|
|
@@ -119,6 +119,6 @@ export declare function isIn(a: any, b: any[]): boolean;
|
|
|
119
119
|
*
|
|
120
120
|
* @returns An array of the passed arguments
|
|
121
121
|
*/
|
|
122
|
-
export declare function array(): any[];
|
|
122
|
+
export declare function array(...args: any[]): any[];
|
|
123
123
|
export type HandlebarsHelpers = Record<string, Function>;
|
|
124
124
|
export declare const GetHelpers: () => HandlebarsHelpers;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type INativeRequest } from '../models';
|
|
2
|
-
import { ILogger } from '../services';
|
|
2
|
+
import { type ILogger } from '../services';
|
|
3
3
|
export type NativeRequestBuilderFn = () => NativeRequestBuilder;
|
|
4
4
|
export type NativeRequestBuilder = {
|
|
5
5
|
withVer: (ver: string) => NativeRequestBuilder;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type IApp, type IBanner, type IBidRequest, type IDevice, type IGeoContext, type IImp, type INative, type INativeRequest, type IRegs, type ISite, type IUser, type IVideo } from '../models';
|
|
2
|
-
import { ILogger } from '../services';
|
|
2
|
+
import { type ILogger } from '../services';
|
|
3
3
|
export type RequestBuilderFn = (zoneId: string, id?: string) => RequestBuilder;
|
|
4
4
|
export type RequestWith<T> = (t: T) => RequestBuilder;
|
|
5
5
|
export type RequestBuilder = {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Result } from '../services';
|
|
1
|
+
import { type Result } from '../services';
|
|
2
2
|
export declare const TryGet: <T>(get: () => T) => Result<T>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { INativeTemplateDelegateWindow } from '../models';
|
|
2
|
-
import { Result } from '../services';
|
|
1
|
+
import { type INativeTemplateDelegateWindow } from '../models';
|
|
2
|
+
import { type Result } from '../services';
|
|
3
3
|
export declare const GetWindowInfo: () => Result<INativeTemplateDelegateWindow>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IBid, IBidRequest } from '../../models';
|
|
2
2
|
import { type ILogger, type NonPersonalRecommenderFn, type PersonalRecommenderFn, type RequestBidsFn, type Result } from '../../services';
|
|
3
|
-
import { EvaluateClickthroughTemplateFn } from '../../services/Template';
|
|
3
|
+
import { type EvaluateClickthroughTemplateFn } from '../../services/Template';
|
|
4
4
|
import type { GenerateSponsoredProductCardResponseFn, IBuiltProductCardResponse } from './ProductCard';
|
|
5
5
|
export type BuildSponsoredCarouselFn = (request: IBidRequest) => Result<IBuiltCarousel>;
|
|
6
6
|
export type BuildSponsoredCarouselFromInitialBidFn = (request: IBidRequest, initialBid: IBid) => Result<IBuiltCarousel>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { ICompiledPublisherConfiguration, INativeTemplateDelegateWindow, IProductInformation } from '../../models';
|
|
2
|
-
import { ILogger, Result } from '../../services';
|
|
2
|
+
import { type ILogger, type Result } from '../../services';
|
|
3
3
|
export declare const BuildClickthroughUrl: (logger: ILogger | undefined, windowInfo: INativeTemplateDelegateWindow, configuration: ICompiledPublisherConfiguration, product: IProductInformation) => Result<string>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IBid, ICompiledPublisherConfiguration, INativeResponse, INativeTemplateDelegateWindow, IProductInformation } from '../../models';
|
|
2
|
-
import { AsyncResult, GetAllSponsoredProductFromNativeIdFn, ILogger } from '../../services';
|
|
3
|
-
import { IBuiltResponse } from './BuiltResponse';
|
|
1
|
+
import { type IBid, type ICompiledPublisherConfiguration, type INativeResponse, type INativeTemplateDelegateWindow, type IProductInformation } from '../../models';
|
|
2
|
+
import { type AsyncResult, type GetAllSponsoredProductFromNativeIdFn, type ILogger } from '../../services';
|
|
3
|
+
import { type IBuiltResponse } from './BuiltResponse';
|
|
4
4
|
export type BuildAllSponsoredProductCardResponsesFn = (bids: IBid[]) => AsyncResult<IBuiltProductCardBidResponse[]>;
|
|
5
5
|
export type GenerateSponsoredProductCardResponseFn = (bids: IBid[]) => AsyncGenerator<IBuiltProductCardBidResponse>;
|
|
6
6
|
export interface ITracker {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { IVast } from '../../models';
|
|
2
|
-
import { IBuiltResponse } from './BuiltResponse';
|
|
1
|
+
import type { IVast } from '../../models';
|
|
2
|
+
import type { IBuiltResponse } from './BuiltResponse';
|
|
3
3
|
/**
|
|
4
4
|
* A built video response. The raw Vast XML response from the bidder has been parsed out into a structure object here.
|
|
5
5
|
* @expandType IBuiltResponse
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { IBidRequest, IBidResponse } from '../models';
|
|
2
|
-
import { ILogger } from './Logger';
|
|
3
|
-
import { AsyncResult } from './Result';
|
|
1
|
+
import type { IBidRequest, IBidResponse } from '../models';
|
|
2
|
+
import { type ILogger } from './Logger';
|
|
3
|
+
import { type AsyncResult } from './Result';
|
|
4
4
|
export type RequestBidsFn = (request: IBidRequest) => AsyncResult<IBidResponse>;
|
|
5
5
|
export declare const RequestBids: (logger: ILogger | undefined, url: string, accountId: string, siteId: string, locationId: string, channelId: string, bidRequest: IBidRequest) => AsyncResult<IBidResponse>;
|
|
6
6
|
export declare class NoBidsError extends Error {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type Handlebars from 'handlebars/runtime';
|
|
2
2
|
import type { ICompiledPublisherConfiguration } from '../models';
|
|
3
3
|
import { type AsyncResult, type ILogger } from '.';
|
|
4
|
-
import { HandlebarsHelpers } from '../helpers';
|
|
4
|
+
import { type HandlebarsHelpers } from '../helpers';
|
|
5
5
|
export type GetConfigurationFn = () => AsyncResult<ICompiledPublisherConfiguration>;
|
|
6
6
|
export declare const GetConfiguration: (logger: ILogger | undefined, url: string, handlebars: typeof Handlebars, helpers: HandlebarsHelpers, accountId: string, siteId: string) => AsyncResult<ICompiledPublisherConfiguration>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { NativeRequestBuilderFn, RequestBuilder, RequestBuilderFn } from '../helpers';
|
|
2
|
-
import { IBidRequest, ICompiledPublisherConfiguration } from '../models';
|
|
3
|
-
import { DynamicCreative, IDynamicZone, IScreenSize } from '../models/dynamic/DynamicZone';
|
|
4
|
-
import { IScreen } from './Device';
|
|
5
|
-
import { ILogger } from './Logger';
|
|
6
|
-
import { AsyncResult, Result } from './Result';
|
|
1
|
+
import type { NativeRequestBuilderFn, RequestBuilder, RequestBuilderFn } from '../helpers';
|
|
2
|
+
import type { IBidRequest, ICompiledPublisherConfiguration } from '../models';
|
|
3
|
+
import { type DynamicCreative, type IDynamicZone, type IScreenSize } from '../models/dynamic/DynamicZone';
|
|
4
|
+
import type { IScreen } from './Device';
|
|
5
|
+
import { type ILogger } from './Logger';
|
|
6
|
+
import { type AsyncResult, type Result } from './Result';
|
|
7
7
|
export interface IDynamicZoneRequest {
|
|
8
8
|
request: IBidRequest;
|
|
9
9
|
requestIds: Record<string, DynamicCreative>;
|
|
@@ -2,5 +2,5 @@ import type { IGeo, IGeoContext } from '../models';
|
|
|
2
2
|
import { type ILogger } from './Logger';
|
|
3
3
|
import { type AsyncResult } from './Result';
|
|
4
4
|
export type GetGeoFn = (ip?: string, geoProviderToken?: string) => AsyncResult<IGeoContext>;
|
|
5
|
-
export declare const GetGeo: (logger?: ILogger
|
|
5
|
+
export declare const GetGeo: (logger?: ILogger) => AsyncResult<IGeoContext>;
|
|
6
6
|
export declare const GeoContextToORTB: (logger: ILogger | undefined, geoContext: IGeoContext) => IGeo;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IProductInformation } from '../models';
|
|
2
2
|
import { type ILogger } from './Logger';
|
|
3
|
-
import { Result, type AsyncResult } from './Result';
|
|
3
|
+
import { type Result, type AsyncResult } from './Result';
|
|
4
4
|
export type GetSponsoredProductFromNativeIdFn = (nativeId: string) => AsyncGenerator<IProductInformation>;
|
|
5
5
|
export type GetAllSponsoredProductFromNativeIdFn = (nativeId: string) => Promise<Result<IProductInformation[]>>;
|
|
6
6
|
export type GetRecommendedProductFromProductIdFn = (productId: string) => AsyncResult<IProductInformation>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ICompiledPublisherConfiguration, INativeTemplateDelegateWindow, IProductInformation } from '../models';
|
|
2
|
-
import { ILogger } from './Logger';
|
|
3
|
-
import { Result } from './Result';
|
|
1
|
+
import type { ICompiledPublisherConfiguration, INativeTemplateDelegateWindow, IProductInformation } from '../models';
|
|
2
|
+
import { type ILogger } from './Logger';
|
|
3
|
+
import { type Result } from './Result';
|
|
4
4
|
export type EvaluateProductCardTemplateFn = (product: IProductInformation, clickthrough?: string) => Result<string>;
|
|
5
5
|
export type EvaluateClickthroughTemplateFn = (product: IProductInformation) => Result<string>;
|
|
6
6
|
export declare const EvaluateHandlebarsProductCardTemplate: (logger: ILogger | undefined, windowInfo: INativeTemplateDelegateWindow, publisher: ICompiledPublisherConfiguration, product: IProductInformation, clickthrough?: string) => Result<string>;
|