@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.
Files changed (274) hide show
  1. package/README.md +15 -15
  2. package/lib/cjs/Api.js +195 -0
  3. package/lib/cjs/Api.js.map +1 -0
  4. package/lib/cjs/helpers/Generator.js +50 -0
  5. package/lib/cjs/helpers/Generator.js.map +1 -0
  6. package/lib/cjs/helpers/Handlebars.js +270 -0
  7. package/lib/cjs/helpers/Handlebars.js.map +1 -0
  8. package/lib/cjs/helpers/NativeRequestBuilder.js +174 -0
  9. package/lib/cjs/helpers/NativeRequestBuilder.js.map +1 -0
  10. package/lib/cjs/helpers/RequestBuilder.js +160 -0
  11. package/lib/cjs/helpers/RequestBuilder.js.map +1 -0
  12. package/lib/cjs/helpers/TryGet.js +14 -0
  13. package/lib/cjs/helpers/TryGet.js.map +1 -0
  14. package/lib/cjs/helpers/Window.js +24 -0
  15. package/lib/cjs/helpers/Window.js.map +1 -0
  16. package/lib/cjs/helpers/index.js +24 -0
  17. package/lib/cjs/helpers/index.js.map +1 -0
  18. package/lib/cjs/helpers/response/Banner.js +4 -0
  19. package/lib/cjs/helpers/response/Banner.js.map +1 -0
  20. package/lib/cjs/helpers/response/BuiltResponse.js +27 -0
  21. package/lib/cjs/helpers/response/BuiltResponse.js.map +1 -0
  22. package/lib/cjs/helpers/response/Carousel.js +282 -0
  23. package/lib/cjs/helpers/response/Carousel.js.map +1 -0
  24. package/lib/cjs/helpers/response/Clickthrough.js +24 -0
  25. package/lib/cjs/helpers/response/Clickthrough.js.map +1 -0
  26. package/lib/cjs/helpers/response/ProductCard.js +198 -0
  27. package/lib/cjs/helpers/response/ProductCard.js.map +1 -0
  28. package/lib/cjs/helpers/response/Video.js +4 -0
  29. package/lib/cjs/helpers/response/Video.js.map +1 -0
  30. package/lib/cjs/helpers/response/index.js +23 -0
  31. package/lib/cjs/helpers/response/index.js.map +1 -0
  32. package/lib/cjs/index.js +21 -3488
  33. package/lib/cjs/index.js.map +1 -54
  34. package/lib/cjs/models/dynamic/DynamicZone.js +12 -0
  35. package/lib/cjs/models/dynamic/DynamicZone.js.map +1 -0
  36. package/lib/cjs/models/dynamic/index.js +18 -0
  37. package/lib/cjs/models/dynamic/index.js.map +1 -0
  38. package/lib/cjs/models/index.js +22 -0
  39. package/lib/cjs/models/index.js.map +1 -0
  40. package/lib/cjs/models/retail/Configuration.js +10 -0
  41. package/lib/cjs/models/retail/Configuration.js.map +1 -0
  42. package/lib/cjs/models/retail/Product.js +4 -0
  43. package/lib/cjs/models/retail/Product.js.map +1 -0
  44. package/lib/cjs/models/retail/Recommended.js +3 -0
  45. package/lib/cjs/models/retail/Recommended.js.map +1 -0
  46. package/lib/cjs/models/retail/index.js +20 -0
  47. package/lib/cjs/models/retail/index.js.map +1 -0
  48. package/lib/cjs/models/rtb/BidRequest.js +20 -0
  49. package/lib/cjs/models/rtb/BidRequest.js.map +1 -0
  50. package/lib/cjs/models/rtb/BidResponse.js +3 -0
  51. package/lib/cjs/models/rtb/BidResponse.js.map +1 -0
  52. package/lib/cjs/models/rtb/NativeRequest.js +122 -0
  53. package/lib/cjs/models/rtb/NativeRequest.js.map +1 -0
  54. package/lib/cjs/models/rtb/NativeResponse.js +26 -0
  55. package/lib/cjs/models/rtb/NativeResponse.js.map +1 -0
  56. package/lib/cjs/models/rtb/index.js +21 -0
  57. package/lib/cjs/models/rtb/index.js.map +1 -0
  58. package/lib/cjs/models/tracking/Geo.js +3 -0
  59. package/lib/cjs/models/tracking/Geo.js.map +1 -0
  60. package/lib/cjs/models/tracking/index.js +18 -0
  61. package/lib/cjs/models/tracking/index.js.map +1 -0
  62. package/lib/cjs/models/vast/Vast.js +4 -0
  63. package/lib/cjs/models/vast/Vast.js.map +1 -0
  64. package/lib/cjs/models/vast/index.js +18 -0
  65. package/lib/cjs/models/vast/index.js.map +1 -0
  66. package/lib/cjs/services/Bidder.js +128 -0
  67. package/lib/cjs/services/Bidder.js.map +1 -0
  68. package/lib/cjs/services/Configuration.js +93 -0
  69. package/lib/cjs/services/Configuration.js.map +1 -0
  70. package/lib/cjs/services/Device.js +236 -0
  71. package/lib/cjs/services/Device.js.map +1 -0
  72. package/lib/cjs/services/Dynamic.js +129 -0
  73. package/lib/cjs/services/Dynamic.js.map +1 -0
  74. package/lib/cjs/services/Geo.js +35 -0
  75. package/lib/cjs/services/Geo.js.map +1 -0
  76. package/lib/cjs/services/Logger.js +57 -0
  77. package/lib/cjs/services/Logger.js.map +1 -0
  78. package/lib/cjs/services/Memoization.js +17 -0
  79. package/lib/cjs/services/Memoization.js.map +1 -0
  80. package/lib/cjs/services/Product.js +127 -0
  81. package/lib/cjs/services/Product.js.map +1 -0
  82. package/lib/cjs/services/Recommender.js +83 -0
  83. package/lib/cjs/services/Recommender.js.map +1 -0
  84. package/lib/cjs/services/Result.js +220 -0
  85. package/lib/cjs/services/Result.js.map +1 -0
  86. package/lib/cjs/services/Template.js +43 -0
  87. package/lib/cjs/services/Template.js.map +1 -0
  88. package/lib/cjs/services/index.js +28 -0
  89. package/lib/cjs/services/index.js.map +1 -0
  90. package/lib/cjs/services/mock/Bidder.js +3 -0
  91. package/lib/cjs/services/mock/Bidder.js.map +1 -0
  92. package/lib/cjs/services/mock/index.js +18 -0
  93. package/lib/cjs/services/mock/index.js.map +1 -0
  94. package/lib/esm/Api.js +183 -0
  95. package/lib/esm/Api.js.map +1 -0
  96. package/lib/esm/helpers/Generator.js +42 -0
  97. package/lib/esm/helpers/Generator.js.map +1 -0
  98. package/lib/esm/helpers/Handlebars.js +251 -0
  99. package/lib/esm/helpers/Handlebars.js.map +1 -0
  100. package/lib/esm/helpers/NativeRequestBuilder.js +169 -0
  101. package/lib/esm/helpers/NativeRequestBuilder.js.map +1 -0
  102. package/lib/esm/helpers/RequestBuilder.js +157 -0
  103. package/lib/esm/helpers/RequestBuilder.js.map +1 -0
  104. package/lib/esm/helpers/TryGet.js +10 -0
  105. package/lib/esm/helpers/TryGet.js.map +1 -0
  106. package/lib/esm/helpers/Window.js +20 -0
  107. package/lib/esm/helpers/Window.js.map +1 -0
  108. package/lib/esm/helpers/index.js +8 -0
  109. package/lib/esm/helpers/index.js.map +1 -0
  110. package/lib/esm/helpers/response/Banner.js +3 -0
  111. package/lib/esm/helpers/response/Banner.js.map +1 -0
  112. package/lib/esm/helpers/response/BuiltResponse.js +22 -0
  113. package/lib/esm/helpers/response/BuiltResponse.js.map +1 -0
  114. package/lib/esm/helpers/response/Carousel.js +273 -0
  115. package/lib/esm/helpers/response/Carousel.js.map +1 -0
  116. package/lib/esm/helpers/response/Clickthrough.js +20 -0
  117. package/lib/esm/helpers/response/Clickthrough.js.map +1 -0
  118. package/lib/esm/helpers/response/ProductCard.js +189 -0
  119. package/lib/esm/helpers/response/ProductCard.js.map +1 -0
  120. package/lib/esm/helpers/response/Video.js +3 -0
  121. package/lib/esm/helpers/response/Video.js.map +1 -0
  122. package/lib/esm/helpers/response/index.js +7 -0
  123. package/lib/esm/helpers/response/index.js.map +1 -0
  124. package/lib/esm/index.js +5 -3460
  125. package/lib/esm/index.js.map +1 -54
  126. package/lib/esm/models/dynamic/DynamicZone.js +11 -0
  127. package/lib/esm/models/dynamic/DynamicZone.js.map +1 -0
  128. package/lib/esm/models/dynamic/index.js +2 -0
  129. package/lib/esm/models/dynamic/index.js.map +1 -0
  130. package/lib/esm/models/index.js +6 -0
  131. package/lib/esm/models/index.js.map +1 -0
  132. package/lib/esm/models/retail/Configuration.js +9 -0
  133. package/lib/esm/models/retail/Configuration.js.map +1 -0
  134. package/lib/esm/models/retail/Product.js +3 -0
  135. package/lib/esm/models/retail/Product.js.map +1 -0
  136. package/lib/esm/models/retail/Recommended.js +2 -0
  137. package/lib/esm/models/retail/Recommended.js.map +1 -0
  138. package/lib/esm/models/retail/index.js +4 -0
  139. package/lib/esm/models/retail/index.js.map +1 -0
  140. package/lib/esm/models/rtb/BidRequest.js +17 -0
  141. package/lib/esm/models/rtb/BidRequest.js.map +1 -0
  142. package/lib/esm/models/rtb/BidResponse.js +2 -0
  143. package/lib/esm/models/rtb/BidResponse.js.map +1 -0
  144. package/lib/esm/models/rtb/NativeRequest.js +119 -0
  145. package/lib/esm/models/rtb/NativeRequest.js.map +1 -0
  146. package/lib/esm/models/rtb/NativeResponse.js +23 -0
  147. package/lib/esm/models/rtb/NativeResponse.js.map +1 -0
  148. package/lib/esm/models/rtb/index.js +5 -0
  149. package/lib/esm/models/rtb/index.js.map +1 -0
  150. package/lib/esm/models/tracking/Geo.js +2 -0
  151. package/lib/esm/models/tracking/Geo.js.map +1 -0
  152. package/lib/esm/models/tracking/index.js +2 -0
  153. package/lib/esm/models/tracking/index.js.map +1 -0
  154. package/lib/esm/models/vast/Vast.js +3 -0
  155. package/lib/esm/models/vast/Vast.js.map +1 -0
  156. package/lib/esm/models/vast/index.js +2 -0
  157. package/lib/esm/models/vast/index.js.map +1 -0
  158. package/lib/esm/services/Bidder.js +119 -0
  159. package/lib/esm/services/Bidder.js.map +1 -0
  160. package/lib/esm/services/Configuration.js +56 -0
  161. package/lib/esm/services/Configuration.js.map +1 -0
  162. package/lib/esm/services/Device.js +232 -0
  163. package/lib/esm/services/Device.js.map +1 -0
  164. package/lib/esm/services/Dynamic.js +120 -0
  165. package/lib/esm/services/Dynamic.js.map +1 -0
  166. package/lib/esm/services/Geo.js +30 -0
  167. package/lib/esm/services/Geo.js.map +1 -0
  168. package/lib/esm/services/Logger.js +52 -0
  169. package/lib/esm/services/Logger.js.map +1 -0
  170. package/lib/esm/services/Memoization.js +13 -0
  171. package/lib/esm/services/Memoization.js.map +1 -0
  172. package/lib/esm/services/Product.js +120 -0
  173. package/lib/esm/services/Product.js.map +1 -0
  174. package/lib/esm/services/Recommender.js +78 -0
  175. package/lib/esm/services/Recommender.js.map +1 -0
  176. package/lib/esm/services/Result.js +199 -0
  177. package/lib/esm/services/Result.js.map +1 -0
  178. package/lib/esm/services/Template.js +38 -0
  179. package/lib/esm/services/Template.js.map +1 -0
  180. package/lib/esm/services/index.js +12 -0
  181. package/lib/esm/services/index.js.map +1 -0
  182. package/lib/esm/services/mock/Bidder.js +2 -0
  183. package/lib/esm/services/mock/Bidder.js.map +1 -0
  184. package/lib/esm/services/mock/index.js +2 -0
  185. package/lib/esm/services/mock/index.js.map +1 -0
  186. package/lib/types/Api.d.ts +5 -5
  187. package/lib/types/helpers/Handlebars.d.ts +3 -3
  188. package/lib/types/helpers/NativeRequestBuilder.d.ts +1 -1
  189. package/lib/types/helpers/RequestBuilder.d.ts +1 -1
  190. package/lib/types/helpers/TryGet.d.ts +1 -1
  191. package/lib/types/helpers/Window.d.ts +2 -2
  192. package/lib/types/helpers/response/Banner.d.ts +1 -1
  193. package/lib/types/helpers/response/BuiltResponse.d.ts +1 -1
  194. package/lib/types/helpers/response/Carousel.d.ts +1 -1
  195. package/lib/types/helpers/response/Clickthrough.d.ts +1 -1
  196. package/lib/types/helpers/response/ProductCard.d.ts +3 -3
  197. package/lib/types/helpers/response/Video.d.ts +2 -2
  198. package/lib/types/services/Bidder.d.ts +3 -3
  199. package/lib/types/services/Configuration.d.ts +1 -1
  200. package/lib/types/services/Dynamic.d.ts +6 -6
  201. package/lib/types/services/Geo.d.ts +1 -1
  202. package/lib/types/services/Product.d.ts +1 -1
  203. package/lib/types/services/Template.d.ts +3 -3
  204. package/package.json +41 -33
  205. package/lib/index.js +0 -1
  206. package/lib/index.js.map +0 -1
  207. package/lib/types/constant-values/index.d.ts +0 -46
  208. package/lib/types/errors/index.d.ts +0 -3
  209. package/lib/types/helpers/generators/CollectN.d.ts +0 -2
  210. package/lib/types/helpers/generators/index.d.ts +0 -1
  211. package/lib/types/helpers/handlebars/index.d.ts +0 -119
  212. package/lib/types/helpers/requests/RequestBuilder.d.ts +0 -124
  213. package/lib/types/helpers/requests/SimpleBannerRequest.d.ts +0 -26
  214. package/lib/types/helpers/requests/index.d.ts +0 -2
  215. package/lib/types/helpers/responses/BuildBannerResponse.d.ts +0 -10
  216. package/lib/types/helpers/responses/BuildNativeResponse.d.ts +0 -21
  217. package/lib/types/helpers/responses/BuildVideoResponse.d.ts +0 -0
  218. package/lib/types/helpers/responses/ClickthroughHelpers.d.ts +0 -2
  219. package/lib/types/helpers/responses/VastHelpers.d.ts +0 -4
  220. package/lib/types/helpers/responses/index.d.ts +0 -4
  221. package/lib/types/middleware/DeviceMiddleware.d.ts +0 -3
  222. package/lib/types/middleware/GeoMiddleware.d.ts +0 -3
  223. package/lib/types/middleware/IdentityMiddleware.d.ts +0 -4
  224. package/lib/types/middleware/index.d.ts +0 -3
  225. package/lib/types/models/retail/IProductInformation.d.ts +0 -37
  226. package/lib/types/models/retail/IPublisherConfiguration.d.ts +0 -64
  227. package/lib/types/models/retail/IRecommenderResponse.d.ts +0 -10
  228. package/lib/types/models/rtb/IBidRequest.d.ts +0 -399
  229. package/lib/types/models/rtb/IBidResponse.d.ts +0 -47
  230. package/lib/types/models/rtb/native/Constants.d.ts +0 -60
  231. package/lib/types/models/rtb/native/INativeRequest.d.ts +0 -54
  232. package/lib/types/models/rtb/native/INativeResponse.d.ts +0 -60
  233. package/lib/types/models/rtb/native/NativeConstants.d.ts +0 -120
  234. package/lib/types/models/rtb/native/NativeRequestBuilder.d.ts +0 -158
  235. package/lib/types/models/rtb/native/index.d.ts +0 -4
  236. package/lib/types/models/tracking/IEvents.d.ts +0 -82
  237. package/lib/types/models/tracking/IGeoContext.d.ts +0 -14
  238. package/lib/types/models/tracking/IUserID.d.ts +0 -1
  239. package/lib/types/services/OverrideService.d.ts +0 -10
  240. package/lib/types/services/logger/ILoggerService.d.ts +0 -39
  241. package/lib/types/services/logger/LocalLoggerService.d.ts +0 -19
  242. package/lib/types/services/logger/index.d.ts +0 -2
  243. package/lib/types/services/product-feed/IProductFeedService.d.ts +0 -5
  244. package/lib/types/services/product-feed/SurfsideProductFeedService.d.ts +0 -11
  245. package/lib/types/services/product-feed/index.d.ts +0 -2
  246. package/lib/types/services/recommender/IRecommenderService.d.ts +0 -47
  247. package/lib/types/services/recommender/SurfsideRecommenderService.d.ts +0 -31
  248. package/lib/types/services/recommender/index.d.ts +0 -2
  249. package/lib/types/services/rtb/bidder/IBidderService.d.ts +0 -12
  250. package/lib/types/services/rtb/bidder/SurfsideBidderService.d.ts +0 -28
  251. package/lib/types/services/rtb/bidder/index.d.ts +0 -2
  252. package/lib/types/services/rtb/configuration/IConfigurationService.d.ts +0 -14
  253. package/lib/types/services/rtb/configuration/SurfsideConfigurationService.d.ts +0 -29
  254. package/lib/types/services/rtb/configuration/index.d.ts +0 -2
  255. package/lib/types/services/rtb/index.d.ts +0 -2
  256. package/lib/types/services/tracking/device/DeviceOverrideService.d.ts +0 -8
  257. package/lib/types/services/tracking/device/IDeviceService.d.ts +0 -4
  258. package/lib/types/services/tracking/device/SurfsideDeviceService.d.ts +0 -16
  259. package/lib/types/services/tracking/device/index.d.ts +0 -3
  260. package/lib/types/services/tracking/events/IEventService.d.ts +0 -5
  261. package/lib/types/services/tracking/events/SurfsideEventService.d.ts +0 -42
  262. package/lib/types/services/tracking/events/index.d.ts +0 -2
  263. package/lib/types/services/tracking/geo/GeoOverrideService.d.ts +0 -8
  264. package/lib/types/services/tracking/geo/IGeoService.d.ts +0 -12
  265. package/lib/types/services/tracking/geo/SurfsideGeoService.d.ts +0 -7
  266. package/lib/types/services/tracking/geo/index.d.ts +0 -3
  267. package/lib/types/services/tracking/index.d.ts +0 -4
  268. package/lib/types/services/tracking/user/IUserIDService.d.ts +0 -4
  269. package/lib/types/services/tracking/user/SurfsideUserIDService.d.ts +0 -7
  270. package/lib/types/services/tracking/user/UserOverrideService.d.ts +0 -8
  271. package/lib/types/services/tracking/user/index.d.ts +0 -3
  272. package/lib/types/utils/Protocol.d.ts +0 -1
  273. package/lib/types/utils/Rendering.d.ts +0 -44
  274. 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