@surfside/ads-core 2.0.1 → 2.0.3
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 +313 -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 +294 -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 +58 -15
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"Configuration.js","sourceRoot":"src/","sources":["services/Configuration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetDevice = void 0;
|
|
4
|
+
const models_1 = require("../models");
|
|
5
|
+
const _1 = require(".");
|
|
6
|
+
const GetDevice = (logger, screen, navigator, mobile) => {
|
|
7
|
+
const log = (0, _1.Ctx)(logger)?.with('DeviceService');
|
|
8
|
+
log?.info('Getting device info');
|
|
9
|
+
const deviceInfo = getDeviceInfo(log, navigator.userAgent);
|
|
10
|
+
const sua = {
|
|
11
|
+
model: deviceInfo?.model,
|
|
12
|
+
mobile: mobile ? 1 : 0, // open RTB uses 1 for true and 0 for false
|
|
13
|
+
browsers: deviceInfo?.browser !== undefined
|
|
14
|
+
? [deviceInfo.browser]
|
|
15
|
+
: undefined,
|
|
16
|
+
platform: (deviceInfo?.os !== undefined)
|
|
17
|
+
? {
|
|
18
|
+
brand: deviceInfo?.os,
|
|
19
|
+
version: deviceInfo?.osv?.split('.')
|
|
20
|
+
}
|
|
21
|
+
: undefined,
|
|
22
|
+
architecture: getCPUArchitecture(log, navigator.userAgent, mobile),
|
|
23
|
+
source: 3
|
|
24
|
+
};
|
|
25
|
+
return (0, _1.Ok)({
|
|
26
|
+
make: deviceInfo?.make,
|
|
27
|
+
model: deviceInfo?.model,
|
|
28
|
+
w: screen.width,
|
|
29
|
+
h: screen.height,
|
|
30
|
+
language: navigator.language,
|
|
31
|
+
ua: navigator.userAgent,
|
|
32
|
+
devicetype: getDeviceType(log, screen, mobile),
|
|
33
|
+
os: deviceInfo?.os,
|
|
34
|
+
osv: deviceInfo?.osv,
|
|
35
|
+
sua
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
exports.GetDevice = GetDevice;
|
|
39
|
+
const getDeviceInfo = (logger, userAgent) => {
|
|
40
|
+
const log = (0, _1.Ctx)(logger)?.with('tryGetDeviceInfo');
|
|
41
|
+
log?.debug('getting device info');
|
|
42
|
+
const userAgentLower = userAgent.toLowerCase();
|
|
43
|
+
const browser = getBrowserInfo(log, navigator.userAgent);
|
|
44
|
+
if (userAgentLower.includes('android')) {
|
|
45
|
+
return {
|
|
46
|
+
...getAndroidDeviceInfo(log, userAgent),
|
|
47
|
+
browser
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
else if (userAgentLower.includes('iphone') || userAgentLower.includes('ipad')) {
|
|
51
|
+
return {
|
|
52
|
+
...getiPhoneDeviceInfo(log, userAgent),
|
|
53
|
+
browser
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
else if (userAgentLower.includes('windows nt')) {
|
|
57
|
+
return {
|
|
58
|
+
make: 'Microsoft',
|
|
59
|
+
model: 'Windows',
|
|
60
|
+
os: 'Windows',
|
|
61
|
+
osv: /Windows NT (?<osv>[0-9.]+)/ig.exec(userAgent)?.groups?.osv,
|
|
62
|
+
browser
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
else if (userAgentLower.includes('macintosh')) {
|
|
66
|
+
return {
|
|
67
|
+
make: 'Apple',
|
|
68
|
+
model: 'Macintosh',
|
|
69
|
+
os: 'MacOS',
|
|
70
|
+
osv: /Mac OS X (?<osv>[0-9_]+)/ig.exec(userAgent)?.groups?.osv?.replaceAll('_', '.'),
|
|
71
|
+
browser
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return { browser };
|
|
75
|
+
};
|
|
76
|
+
const getAndroidDeviceInfo = (logger, userAgent) => {
|
|
77
|
+
const log = (0, _1.Ctx)(logger)?.with('getAndroidDeviceInfo');
|
|
78
|
+
log?.debug('getting android info');
|
|
79
|
+
const match = /^[^\s]+\s\((?<Linux>.*);\s*(?<osv>[^)]+);\s*(?<Model>[^)]+)\)/ig.exec(userAgent);
|
|
80
|
+
const osv = match?.groups?.osv;
|
|
81
|
+
const model = match?.groups?.Model;
|
|
82
|
+
const partialDevice = {
|
|
83
|
+
os: 'Android',
|
|
84
|
+
osv,
|
|
85
|
+
model,
|
|
86
|
+
};
|
|
87
|
+
if (model !== undefined) {
|
|
88
|
+
if (model.includes('Pixel')) {
|
|
89
|
+
return {
|
|
90
|
+
...partialDevice,
|
|
91
|
+
make: 'Google'
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
else if (model.includes('SM-')) {
|
|
95
|
+
return {
|
|
96
|
+
...partialDevice,
|
|
97
|
+
make: 'Samsung'
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
else if (model.startsWith('LG-')) {
|
|
101
|
+
return {
|
|
102
|
+
...partialDevice,
|
|
103
|
+
make: 'LG'
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
else if (model.startsWith('moto')) {
|
|
107
|
+
return {
|
|
108
|
+
...partialDevice,
|
|
109
|
+
make: 'Motorola'
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
else if (model.startsWith('Redmi')) {
|
|
113
|
+
return {
|
|
114
|
+
...partialDevice,
|
|
115
|
+
make: 'Xiaomi'
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
return {
|
|
120
|
+
...partialDevice,
|
|
121
|
+
make: 'Android'
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
os: 'Android',
|
|
127
|
+
osv
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
const getiPhoneDeviceInfo = (logger, userAgent) => {
|
|
131
|
+
const log = (0, _1.Ctx)(logger)?.with('getIphoneDeviceInfo');
|
|
132
|
+
log?.debug('getting iPhone info');
|
|
133
|
+
const match = /^[^\s]+\s*\((?<Device>[^;]+);\s(?<Model>[^;)]+[;)])\s(?<ModelExt>[^;)]+[;)])?/ig.exec(userAgent);
|
|
134
|
+
const make = 'Apple';
|
|
135
|
+
const device = match?.groups?.Device;
|
|
136
|
+
const model = device?.toLowerCase().includes('ipad') === true
|
|
137
|
+
? 'iPad'
|
|
138
|
+
: 'iPhone';
|
|
139
|
+
const modelGroup = match?.groups?.Model;
|
|
140
|
+
/* Newer Device */
|
|
141
|
+
const os = 'iOS';
|
|
142
|
+
const osvSearch = modelGroup === 'U'
|
|
143
|
+
? match?.groups?.ModelExt
|
|
144
|
+
: modelGroup;
|
|
145
|
+
const osv = osvSearch !== undefined
|
|
146
|
+
? /OS (?<ver>[0-9_]+)/ig.exec(osvSearch)?.groups?.ModelExt
|
|
147
|
+
: undefined;
|
|
148
|
+
return {
|
|
149
|
+
make,
|
|
150
|
+
model,
|
|
151
|
+
os,
|
|
152
|
+
osv
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
const getBrowserInfo = (logger, userAgent) => {
|
|
156
|
+
const log = (0, _1.Ctx)(logger)?.with('getBrowserInfo');
|
|
157
|
+
log?.debug('getting browser info');
|
|
158
|
+
try {
|
|
159
|
+
if (userAgent.includes('Firefox/')) {
|
|
160
|
+
return {
|
|
161
|
+
version: userAgent.split('Firefox/')[1]?.split('.'),
|
|
162
|
+
brand: 'Firefox'
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
else if (userAgent.includes('Chrome/')) {
|
|
166
|
+
return {
|
|
167
|
+
version: userAgent.split('Chrome/')[1]?.split(' ')[0]?.split('.'),
|
|
168
|
+
brand: 'Chrome'
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
else if (userAgent.includes('CriOS')) {
|
|
172
|
+
// Chrome on iOS uses "CriOS/" instead of "Chrome/", which was causing issues
|
|
173
|
+
return {
|
|
174
|
+
version: userAgent.split('CriOS/')[1]?.split(' ')[0]?.split('.'),
|
|
175
|
+
brand: 'Chrome'
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
else if (userAgent.includes('Safari/') && !userAgent.includes('Chrome')) {
|
|
179
|
+
// Safari version is a bit trickier due to its UA string format
|
|
180
|
+
return {
|
|
181
|
+
version: userAgent.split('Version/')[1]?.split(' ')[0]?.split('.'),
|
|
182
|
+
brand: 'Safari'
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
else if (userAgent.includes('Edg/')) {
|
|
186
|
+
return {
|
|
187
|
+
version: userAgent.split('Edg/')[1]?.split('.'),
|
|
188
|
+
brand: 'Edge'
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
log?.error(error);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
const getCPUArchitecture = (logger, userAgent, mobile) => {
|
|
197
|
+
const log = (0, _1.Ctx)(logger)?.with('getCPUArchitecture');
|
|
198
|
+
log?.debug('Getting CPU arch');
|
|
199
|
+
// Common architecture patterns
|
|
200
|
+
if (/Win64|x64|x86_64|WOW64/.test(userAgent)) {
|
|
201
|
+
return 'x64';
|
|
202
|
+
}
|
|
203
|
+
if (/Win32|x86/.test(userAgent)) {
|
|
204
|
+
return 'x86';
|
|
205
|
+
}
|
|
206
|
+
if (/aarch64|arm64/.test(userAgent)) {
|
|
207
|
+
return 'ARM64';
|
|
208
|
+
}
|
|
209
|
+
if (/armv\d+/.test(userAgent)) {
|
|
210
|
+
return 'ARM';
|
|
211
|
+
}
|
|
212
|
+
/* Just naively assume all phones are arm */
|
|
213
|
+
if (mobile) {
|
|
214
|
+
return 'ARM';
|
|
215
|
+
}
|
|
216
|
+
log?.warn('Failed to get cpu architecture');
|
|
217
|
+
return;
|
|
218
|
+
};
|
|
219
|
+
const getDeviceType = (logger, screen, mobile) => {
|
|
220
|
+
const log = (0, _1.Ctx)(logger)?.with('getDeviceType');
|
|
221
|
+
log?.debug('getting device type');
|
|
222
|
+
const MINIMUM_SHORT_TABLET = 600;
|
|
223
|
+
const MAXIMUM_LONG_TABLET = 960;
|
|
224
|
+
const hasTouch = mobile;
|
|
225
|
+
if (!hasTouch) {
|
|
226
|
+
return models_1.AdCom10DeviceTypes.PC;
|
|
227
|
+
}
|
|
228
|
+
const width = screen.width;
|
|
229
|
+
const height = screen.height;
|
|
230
|
+
const [shorterSide, longerSide] = [width, height].sort((a, b) => a - b);
|
|
231
|
+
if (hasTouch && shorterSide >= MINIMUM_SHORT_TABLET && longerSide >= MAXIMUM_LONG_TABLET) {
|
|
232
|
+
return models_1.AdCom10DeviceTypes.Tablet;
|
|
233
|
+
}
|
|
234
|
+
return models_1.AdCom10DeviceTypes.Mobile;
|
|
235
|
+
};
|
|
236
|
+
//# sourceMappingURL=Device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Device.js","sourceRoot":"src/","sources":["services/Device.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MissingDynamicZoneError = exports.buildDynamicBidRequestRecursive = exports.buildDynamicBidRequestFromSelectedScreenSize = exports.NoDynamicScreenSizeMatchError = exports.BuildDynamicZoneRequest = exports.GetDynamicZone = void 0;
|
|
4
|
+
const Logger_1 = require("./Logger");
|
|
5
|
+
const Result_1 = require("./Result");
|
|
6
|
+
const GetDynamicZone = async (logger, config, zoneId) => {
|
|
7
|
+
const log = (0, Logger_1.Ctx)(logger)?.with('GetDynamicZone');
|
|
8
|
+
log?.info('Getting dynamic zone', zoneId);
|
|
9
|
+
const dynamicZone = config?.dynamicZones?.[zoneId];
|
|
10
|
+
if (dynamicZone === undefined) {
|
|
11
|
+
return (0, Result_1.Err)(new MissingDynamicZoneError(zoneId));
|
|
12
|
+
}
|
|
13
|
+
log?.debug('Dynamic zone', dynamicZone);
|
|
14
|
+
return (0, Result_1.Ok)(dynamicZone);
|
|
15
|
+
};
|
|
16
|
+
exports.GetDynamicZone = GetDynamicZone;
|
|
17
|
+
const BuildDynamicZoneRequest = (logger, startRequest, nativeRequest, screenInfo, zoneId, dynamicZone) => {
|
|
18
|
+
const log = (0, Logger_1.Ctx)(logger)?.with('BuildDynamicZoneRequest');
|
|
19
|
+
log?.info('Building dynamic zone request', dynamicZone);
|
|
20
|
+
const screenSizeRes = selectDynamicScreenSize(log, screenInfo, dynamicZone);
|
|
21
|
+
if (!screenSizeRes.ok) {
|
|
22
|
+
return screenSizeRes;
|
|
23
|
+
}
|
|
24
|
+
return (0, exports.buildDynamicBidRequestFromSelectedScreenSize)(log, startRequest, nativeRequest, zoneId, screenSizeRes.value);
|
|
25
|
+
};
|
|
26
|
+
exports.BuildDynamicZoneRequest = BuildDynamicZoneRequest;
|
|
27
|
+
const selectDynamicScreenSize = (logger, screenInfo, dynamicZone) => {
|
|
28
|
+
const log = (0, Logger_1.Ctx)(logger)?.with('selectDynamicScreenSize');
|
|
29
|
+
log?.info('Getting screen size for dynamic zone', screenInfo);
|
|
30
|
+
const screenSize = (0, Result_1.GetValue)((0, Result_1.TryDo)(() => {
|
|
31
|
+
if (screenInfo.width < 768) {
|
|
32
|
+
return 'mobile';
|
|
33
|
+
}
|
|
34
|
+
else if (screenInfo.width < 1024) {
|
|
35
|
+
return 'tablet';
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return 'desktop';
|
|
39
|
+
}
|
|
40
|
+
})) ?? 'default';
|
|
41
|
+
const selectedDynamic = dynamicZone.value
|
|
42
|
+
.filter(screen => screen.size === screenSize)?.[0]
|
|
43
|
+
?? dynamicZone.value
|
|
44
|
+
.filter(screen => screen.size === 'default')?.[0];
|
|
45
|
+
if (selectedDynamic === undefined) {
|
|
46
|
+
return (0, Result_1.Err)(new NoDynamicScreenSizeMatchError(dynamicZone, screenInfo, screenSize));
|
|
47
|
+
}
|
|
48
|
+
log?.debug('selectedDynamic', selectedDynamic);
|
|
49
|
+
return (0, Result_1.Ok)(selectedDynamic);
|
|
50
|
+
};
|
|
51
|
+
class NoDynamicScreenSizeMatchError extends Error {
|
|
52
|
+
dynamicZone;
|
|
53
|
+
screenInfo;
|
|
54
|
+
selectedStringSize;
|
|
55
|
+
constructor(dynamicZone, screenInfo, selectedStringSize) {
|
|
56
|
+
super('No dynamic screen size matched the window width');
|
|
57
|
+
this.dynamicZone = dynamicZone;
|
|
58
|
+
this.screenInfo = screenInfo;
|
|
59
|
+
this.selectedStringSize = selectedStringSize;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.NoDynamicScreenSizeMatchError = NoDynamicScreenSizeMatchError;
|
|
63
|
+
;
|
|
64
|
+
const buildDynamicBidRequestFromSelectedScreenSize = (logger, startRequest, nativeRequest, zoneId, screenSize) => {
|
|
65
|
+
const log = (0, Logger_1.Ctx)(logger)?.with('buildDynamicBidRequestFromSelectedScreenSize');
|
|
66
|
+
log?.info('Building dynamic bid request', zoneId, screenSize);
|
|
67
|
+
const requestPayload = (0, exports.buildDynamicBidRequestRecursive)(log, nativeRequest, startRequest(zoneId), {}, screenSize.values);
|
|
68
|
+
if (!requestPayload.ok) {
|
|
69
|
+
return requestPayload;
|
|
70
|
+
}
|
|
71
|
+
log?.debug('requestPayload', requestPayload);
|
|
72
|
+
const [builder, requestIds] = requestPayload.value;
|
|
73
|
+
return (0, Result_1.Ok)({
|
|
74
|
+
request: builder.build(),
|
|
75
|
+
requestIds
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
exports.buildDynamicBidRequestFromSelectedScreenSize = buildDynamicBidRequestFromSelectedScreenSize;
|
|
79
|
+
const buildDynamicBidRequestRecursive = (logger, nativeRequest, builder, requestIds, [head, ...tail]) => {
|
|
80
|
+
const log = (0, Logger_1.Ctx)(logger);
|
|
81
|
+
log?.info('descending...');
|
|
82
|
+
if (head === undefined) {
|
|
83
|
+
// Not an error - we are done
|
|
84
|
+
log?.info('Finished');
|
|
85
|
+
return (0, Result_1.Ok)([builder, requestIds]);
|
|
86
|
+
}
|
|
87
|
+
if (head.type === 'Banner') {
|
|
88
|
+
log?.info('Adding banner to request');
|
|
89
|
+
const banner = head;
|
|
90
|
+
const id = crypto.randomUUID();
|
|
91
|
+
return (0, exports.buildDynamicBidRequestRecursive)(log, nativeRequest, builder.withBanner(banner.width, banner.height, undefined, { id }), {
|
|
92
|
+
...requestIds,
|
|
93
|
+
[id]: head
|
|
94
|
+
}, tail);
|
|
95
|
+
}
|
|
96
|
+
else if (head.type === 'Video') {
|
|
97
|
+
log?.info('Adding video to request');
|
|
98
|
+
const video = head;
|
|
99
|
+
const id = crypto.randomUUID();
|
|
100
|
+
return (0, exports.buildDynamicBidRequestRecursive)(log, nativeRequest, builder.withVideo(video.width, video.height, video.minDuration ?? 0, video.maxDuration, ['video/mp4', 'video/webm'], undefined, { id }), {
|
|
101
|
+
...requestIds,
|
|
102
|
+
[id]: head
|
|
103
|
+
}, tail);
|
|
104
|
+
}
|
|
105
|
+
else if (head.type === 'Carousel' || head.type === 'ProductCard') {
|
|
106
|
+
log?.info('Adding carousel to request');
|
|
107
|
+
const id = crypto.randomUUID();
|
|
108
|
+
return (0, exports.buildDynamicBidRequestRecursive)(log, nativeRequest, builder.withNative(nativeRequest()
|
|
109
|
+
.withMetaProduct()
|
|
110
|
+
.build(), undefined, { id }), {
|
|
111
|
+
...requestIds,
|
|
112
|
+
[id]: head
|
|
113
|
+
}, tail);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
log?.warn('Invalid creative type. Skipping.', head);
|
|
117
|
+
return (0, exports.buildDynamicBidRequestRecursive)(log, nativeRequest, builder, requestIds, tail);
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
exports.buildDynamicBidRequestRecursive = buildDynamicBidRequestRecursive;
|
|
121
|
+
class MissingDynamicZoneError extends Error {
|
|
122
|
+
zoneId;
|
|
123
|
+
constructor(zoneId) {
|
|
124
|
+
super('Missing dynamic zone ' + zoneId);
|
|
125
|
+
this.zoneId = zoneId;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.MissingDynamicZoneError = MissingDynamicZoneError;
|
|
129
|
+
//# sourceMappingURL=Dynamic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dynamic.js","sourceRoot":"src/","sources":["services/Dynamic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GeoContextToORTB = exports.GetGeo = void 0;
|
|
4
|
+
const Logger_1 = require("./Logger");
|
|
5
|
+
const Result_1 = require("./Result");
|
|
6
|
+
const SURF_GEO_SERVICE_URL = 'https://g.surfside.io/enrich';
|
|
7
|
+
const LOCATION_TYPE_IP = 2;
|
|
8
|
+
const IP_SERVICES_MAXMIND = 3;
|
|
9
|
+
const GetGeo = async (logger) => {
|
|
10
|
+
const log = (0, Logger_1.Ctx)(logger)?.with('GeoService');
|
|
11
|
+
log?.info('Getting Geo info');
|
|
12
|
+
try {
|
|
13
|
+
const response = await fetch(SURF_GEO_SERVICE_URL);
|
|
14
|
+
log?.debug('Geo Response', response);
|
|
15
|
+
return (0, Result_1.Ok)(await response.json());
|
|
16
|
+
}
|
|
17
|
+
catch (err) {
|
|
18
|
+
return (0, Result_1.Err)(err);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
exports.GetGeo = GetGeo;
|
|
22
|
+
const GeoContextToORTB = (logger, geoContext) => ({
|
|
23
|
+
lat: geoContext.coords.latitude,
|
|
24
|
+
lon: geoContext.coords.longitude,
|
|
25
|
+
city: geoContext.city,
|
|
26
|
+
region: geoContext.region,
|
|
27
|
+
country: geoContext.country,
|
|
28
|
+
zip: geoContext.zip,
|
|
29
|
+
type: LOCATION_TYPE_IP,
|
|
30
|
+
accuracy: geoContext.coords.accuracy,
|
|
31
|
+
utcoffset: geoContext.utcoffset,
|
|
32
|
+
ipservice: IP_SERVICES_MAXMIND
|
|
33
|
+
});
|
|
34
|
+
exports.GeoContextToORTB = GeoContextToORTB;
|
|
35
|
+
//# sourceMappingURL=Geo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Geo.js","sourceRoot":"src/","sources":["services/Geo.ts"],"names":[],"mappings":";;;AACA,qCAA6C;AAC7C,qCAAqD;AAErD,MAAM,oBAAoB,GAAG,8BAA8B,CAAC;AAI5D,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAEvB,MAAM,MAAM,GAAG,KAAK,EAAE,MAAgB,EAA4B,EAAE;IACvE,MAAM,GAAG,GAAG,IAAA,YAAG,EAAC,MAAM,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5C,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC9B,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACnD,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACrC,OAAO,IAAA,WAAE,EAAC,MAAM,QAAQ,CAAC,IAAI,EAAiB,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,IAAA,YAAG,EAAC,GAAY,CAAC,CAAC;IAC7B,CAAC;AACL,CAAC,CAAC;AAVW,QAAA,MAAM,UAUjB;AAEK,MAAM,gBAAgB,GAAG,CAAC,MAA2B,EAAE,UAAuB,EAAQ,EAAE,CAAC,CAAC;IAC7F,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ;IAC/B,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS;IAChC,IAAI,EAAE,UAAU,CAAC,IAAI;IACrB,MAAM,EAAE,UAAU,CAAC,MAAM;IACzB,OAAO,EAAE,UAAU,CAAC,OAAO;IAC3B,GAAG,EAAE,UAAU,CAAC,GAAG;IACnB,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ;IACpC,SAAS,EAAE,UAAU,CAAC,SAAS;IAC/B,SAAS,EAAE,mBAAmB;CACjC,CAAC,CAAC;AAXU,QAAA,gBAAgB,oBAW1B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Ctx = exports.InitLogger = void 0;
|
|
4
|
+
const SURF_PREFIX = '%c[SURF]';
|
|
5
|
+
const SEPARATOR = ' ›';
|
|
6
|
+
const UNDEF = '[ undefined ]';
|
|
7
|
+
const LogColors = {
|
|
8
|
+
/* Accents */
|
|
9
|
+
Lavender: '#c0abff',
|
|
10
|
+
UltraRed: '#f97585',
|
|
11
|
+
SoftGold: '#f4bd5d',
|
|
12
|
+
MagicMint: '#baf7db'
|
|
13
|
+
};
|
|
14
|
+
;
|
|
15
|
+
;
|
|
16
|
+
const log = (log, args, color) => {
|
|
17
|
+
args.unshift(`border-radius: 3px; margin-left: 10px; background: ${color}; font-size: 12px; font-weight: bold;`);
|
|
18
|
+
args.unshift(SURF_PREFIX);
|
|
19
|
+
log.apply(console, args);
|
|
20
|
+
};
|
|
21
|
+
const info = (...args) => log(console.log, ['(Info)', ...args], LogColors.Lavender);
|
|
22
|
+
const warn = (...args) => log(console.warn, ['(Warning)', ...args], LogColors.SoftGold);
|
|
23
|
+
const debug = (...args) => log(console.debug, ['(Debug)', ...args], LogColors.MagicMint);
|
|
24
|
+
const error = (...args) => log(console.error, ['(Error)', ...args], LogColors.UltraRed);
|
|
25
|
+
const context = (logger, ...prefix) => {
|
|
26
|
+
const newPrefix = joinCtx(prefix) + SEPARATOR;
|
|
27
|
+
const newLogger = {
|
|
28
|
+
info: logger.info.bind(undefined, newPrefix),
|
|
29
|
+
warn: logger.warn.bind(undefined, newPrefix),
|
|
30
|
+
debug: logger.debug.bind(undefined, newPrefix),
|
|
31
|
+
error: logger.error.bind(undefined, newPrefix),
|
|
32
|
+
table: console.table,
|
|
33
|
+
with: logger.with
|
|
34
|
+
};
|
|
35
|
+
newLogger.with = context.bind(undefined, newLogger);
|
|
36
|
+
return newLogger;
|
|
37
|
+
};
|
|
38
|
+
const InitLogger = () => {
|
|
39
|
+
const logger = {
|
|
40
|
+
info,
|
|
41
|
+
warn,
|
|
42
|
+
debug,
|
|
43
|
+
error,
|
|
44
|
+
table: console.table
|
|
45
|
+
};
|
|
46
|
+
logger.with = context.bind(undefined, logger);
|
|
47
|
+
return logger;
|
|
48
|
+
};
|
|
49
|
+
exports.InitLogger = InitLogger;
|
|
50
|
+
const joinCtx = (ctx) => ctx.map(e => e === undefined ? UNDEF : e).join(SEPARATOR);
|
|
51
|
+
const Ctx = (logger) => logger === undefined
|
|
52
|
+
? undefined
|
|
53
|
+
: logger?.with === undefined
|
|
54
|
+
? { ...logger, with: () => (0, exports.Ctx)(logger) }
|
|
55
|
+
: logger;
|
|
56
|
+
exports.Ctx = Ctx;
|
|
57
|
+
//# sourceMappingURL=Logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"src/","sources":["services/Logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Memo = void 0;
|
|
4
|
+
const Memo = (fn) => {
|
|
5
|
+
const cache = new Map();
|
|
6
|
+
return (...args) => {
|
|
7
|
+
const key = JSON.stringify(args);
|
|
8
|
+
if (cache.has(key)) {
|
|
9
|
+
return cache.get(key);
|
|
10
|
+
}
|
|
11
|
+
const result = fn(...args);
|
|
12
|
+
cache.set(key, result);
|
|
13
|
+
return result;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
exports.Memo = Memo;
|
|
17
|
+
//# sourceMappingURL=Memoization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Memoization.js","sourceRoot":"src/","sources":["services/Memoization.ts"],"names":[],"mappings":";;;AAAO,MAAM,IAAI,GAAG,CAAqB,EAAqB,EAAqB,EAAE;IACjF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAa,CAAC;IACnC,OAAO,CAAC,GAAG,IAAO,EAAK,EAAE;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAC3B,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC,CAAC;AAZW,QAAA,IAAI,QAYf"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NoNativeError = exports.GetRecommendedProduct = exports.GetAllSponsoredProducts = void 0;
|
|
4
|
+
exports.GetSponsoredProduct = GetSponsoredProduct;
|
|
5
|
+
const Logger_1 = require("./Logger");
|
|
6
|
+
const Result_1 = require("./Result");
|
|
7
|
+
async function* GetSponsoredProduct(logger, url, accountId, locationId, nativeId) {
|
|
8
|
+
const log = (0, Logger_1.Ctx)(logger)?.with('GetSponsoredProduct').with(accountId).with(locationId).with(nativeId);
|
|
9
|
+
log?.info('Getting sponsored product');
|
|
10
|
+
try {
|
|
11
|
+
const rawResponse = await fetch(`${url}/native/${accountId}/${locationId}/${nativeId}.json`);
|
|
12
|
+
if (rawResponse.status !== 200) {
|
|
13
|
+
log?.error('product feed service returned with non-200 response', rawResponse.status);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const products = rawResponse;
|
|
17
|
+
log?.debug('response', products);
|
|
18
|
+
if (Array.isArray(products)) {
|
|
19
|
+
log?.debug('Brand level creative');
|
|
20
|
+
const productArr = products;
|
|
21
|
+
for (const product of productArr) {
|
|
22
|
+
yield mapResponseToProductInfo(log, product);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
log?.debug('Individual product creative');
|
|
27
|
+
const product = products;
|
|
28
|
+
return mapResponseToProductInfo(log, product);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
log?.error(err);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const GetAllSponsoredProducts = async (logger, url, accountId, locationId, nativeId) => {
|
|
36
|
+
const log = (0, Logger_1.Ctx)(logger)?.with('GetSponsoredProduct').with(accountId).with(locationId).with(nativeId);
|
|
37
|
+
log?.info('Getting sponsored product');
|
|
38
|
+
try {
|
|
39
|
+
const rawResponse = await fetch(`${url}/native/${accountId}/${locationId}/${nativeId}.json`);
|
|
40
|
+
if (rawResponse.status !== 200) {
|
|
41
|
+
log?.error('product feed service returned with non-200 response', rawResponse.status);
|
|
42
|
+
return (0, Result_1.Err)(new NoNativeError(nativeId));
|
|
43
|
+
}
|
|
44
|
+
const products = (await rawResponse.json());
|
|
45
|
+
log?.debug('response', products);
|
|
46
|
+
if (Array.isArray(products)) {
|
|
47
|
+
log?.debug('Brand level creative');
|
|
48
|
+
const productArr = products;
|
|
49
|
+
const mapResponseToProductInfoLogged = mapResponseToProductInfo.bind(undefined, log);
|
|
50
|
+
return (0, Result_1.Ok)(productArr.map(mapResponseToProductInfoLogged));
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
log?.debug('Individual product creative');
|
|
54
|
+
const product = products;
|
|
55
|
+
return (0, Result_1.Ok)([mapResponseToProductInfo(log, product)]);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
log?.error(err);
|
|
60
|
+
return (0, Result_1.Err)(err);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
exports.GetAllSponsoredProducts = GetAllSponsoredProducts;
|
|
64
|
+
const GetRecommendedProduct = async (logger, url, accountId, locationId, productId) => {
|
|
65
|
+
const log = (0, Logger_1.Ctx)(logger)?.with('GetRecommendedProduct').with(accountId).with(locationId).with(productId);
|
|
66
|
+
log?.info('Getting recommended product');
|
|
67
|
+
try {
|
|
68
|
+
const rawResponse = await fetch(`${url}/product/${accountId}/${locationId}/${productId}.json`);
|
|
69
|
+
if (rawResponse.status !== 200) {
|
|
70
|
+
log?.error('product feed service returned with non-200 response', rawResponse.status);
|
|
71
|
+
return (0, Result_1.Err)(new Error('product feed service returned with non-200 response'));
|
|
72
|
+
}
|
|
73
|
+
const rawProduct = await rawResponse.json();
|
|
74
|
+
log?.debug('response', rawProduct);
|
|
75
|
+
const productInfo = mapResponseToProductInfo(log, rawProduct);
|
|
76
|
+
log?.debug('mapped', productInfo);
|
|
77
|
+
return (0, Result_1.Ok)(productInfo);
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
log?.error(err);
|
|
81
|
+
return (0, Result_1.Err)(err);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
exports.GetRecommendedProduct = GetRecommendedProduct;
|
|
85
|
+
const mapResponseToProductInfo = (logger, data) => {
|
|
86
|
+
const log = (0, Logger_1.Ctx)(logger)?.with('mapResponseToProductInfo');
|
|
87
|
+
log?.debug('Mapping product');
|
|
88
|
+
const getField = fieldOrUndef.bind(undefined, data);
|
|
89
|
+
return {
|
|
90
|
+
image: getField('image_link'),
|
|
91
|
+
price: getField('price'),
|
|
92
|
+
salePrice: getField('sale_price'),
|
|
93
|
+
thc: getField('thc'),
|
|
94
|
+
cbd: getField('cbd'),
|
|
95
|
+
strain: getField('strain'),
|
|
96
|
+
name: getField('name'),
|
|
97
|
+
brand_name: getField('brand'),
|
|
98
|
+
brandName: getField('brand'),
|
|
99
|
+
productType: getField('productType'),
|
|
100
|
+
details: getField('details'),
|
|
101
|
+
cta: getField('cta'),
|
|
102
|
+
clickthroughUrl: getField('clickthroughUrl'),
|
|
103
|
+
winUrl: getField('winUrl'),
|
|
104
|
+
pixelUrl: getField('pixelUrl'),
|
|
105
|
+
ext: data
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
const fieldOrUndef = (data, field) => {
|
|
109
|
+
if (field in data) {
|
|
110
|
+
return String(data[field]);
|
|
111
|
+
}
|
|
112
|
+
return undefined;
|
|
113
|
+
};
|
|
114
|
+
class NoNativeError extends Error {
|
|
115
|
+
nativeId;
|
|
116
|
+
constructor(nativeId) {
|
|
117
|
+
super('Native ID did not exist in product feed: ' + nativeId);
|
|
118
|
+
this.nativeId = nativeId;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
exports.NoNativeError = NoNativeError;
|
|
122
|
+
//blissandlex-ues
|
|
123
|
+
// blissandlex-ues
|
|
124
|
+
// blissandlex-ues
|
|
125
|
+
// blissandlex-ues
|
|
126
|
+
// blissandlex-ues
|
|
127
|
+
//# sourceMappingURL=Product.js.map
|