@surfside/ads-core 2.0.22 → 2.0.23

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 CHANGED
@@ -1,15 +1,15 @@
1
- # @surfside/ads-core
2
-
3
- To install dependencies:
4
-
5
- ```bash
6
- bun install
7
- ```
8
-
9
- To run:
10
-
11
- ```bash
12
- bun run src/index.ts
13
- ```
14
-
15
- This project was created using `bun init` in bun v1.2.10. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
1
+ # @surfside/ads-core
2
+
3
+ To install dependencies:
4
+
5
+ ```bash
6
+ bun install
7
+ ```
8
+
9
+ To run:
10
+
11
+ ```bash
12
+ bun run src/index.ts
13
+ ```
14
+
15
+ This project was created using `bun init` in bun v1.2.10. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SurfsideAdsCoreVersionInfo = void 0;
4
- exports.SurfsideAdsCoreVersionInfo = { buildBranch: 'master', buildHash: '941a997', buildVer: '2.0.22' };
4
+ exports.SurfsideAdsCoreVersionInfo = { buildBranch: 'hotfix-0.1.23', buildHash: 'f4f4536', buildVer: '2.0.23' };
5
5
  //# sourceMappingURL=BuildInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BuildInfo.js","sourceRoot":"src/","sources":["BuildInfo.ts"],"names":[],"mappings":";;;AAAa,QAAA,0BAA0B,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC"}
1
+ {"version":3,"file":"BuildInfo.js","sourceRoot":"src/","sources":["BuildInfo.ts"],"names":[],"mappings":";;;AAAa,QAAA,0BAA0B,GAAG,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC"}
@@ -0,0 +1,474 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LoadSurfAdsCoreHeadless = exports.LoadAdsCoreBrowser = exports.LoadSurfAdsCore = exports.LoadSurfAdsCoreDependencies = exports.LoadSurfAdsCoreDeviceDependencies = exports.LoadSurfAdsCoreGeoDependencies = exports.LoadSurfAdsCoreConfigurationDependencies = exports.LoadSurfAdsCoreHandlebarsDependencies = exports.AsyncCacheOverride = exports.CacheOverride = exports.MemoizeOverrideAsync = exports.MemoizeOverride = void 0;
7
+ exports.CreateSurfAdsCore = CreateSurfAdsCore;
8
+ const Api_1 = require("./Api");
9
+ const runtime_1 = __importDefault(require("handlebars/runtime"));
10
+ const helpers_1 = require("./helpers");
11
+ const services_1 = require("./services");
12
+ const BotFiltering_1 = require("./services/BotFiltering");
13
+ const Category_1 = require("./services/Category");
14
+ /* =====
15
+ * These are the new initialization functions for Surfside ads. The old ones
16
+ * are being kept for legacy users but they're all deprecated. Move to the new ones!
17
+ */
18
+ const TLS = (url) => 'https:' + url;
19
+ const MemoizeOverride = (time = {}) => {
20
+ const cache = new Map();
21
+ return (config, original) => {
22
+ const memoized = (0, services_1.Memoize)(original, { ...time, cache });
23
+ return (0, services_1.Ok)(memoized);
24
+ };
25
+ };
26
+ exports.MemoizeOverride = MemoizeOverride;
27
+ const MemoizeOverrideAsync = (time = {}) => {
28
+ const cache = new Map();
29
+ return async (config, original) => {
30
+ const memoized = await (0, services_1.MemoizeAsync)(original, { ...time, cache });
31
+ return (0, services_1.Ok)(memoized);
32
+ };
33
+ };
34
+ exports.MemoizeOverrideAsync = MemoizeOverrideAsync;
35
+ const CacheOverride = (timeout = {}) => {
36
+ const cache = [-Infinity, undefined];
37
+ return (config, original) => {
38
+ const cached = (0, services_1.Cache)(original, { ...timeout, cache });
39
+ return (0, services_1.Ok)(cached);
40
+ };
41
+ };
42
+ exports.CacheOverride = CacheOverride;
43
+ const AsyncCacheOverride = (timeout = {}) => {
44
+ return (config, original) => {
45
+ const cached = (0, services_1.CacheAsync)(original, timeout);
46
+ return (0, services_1.Ok)(cached);
47
+ };
48
+ };
49
+ exports.AsyncCacheOverride = AsyncCacheOverride;
50
+ ;
51
+ ;
52
+ function CreateSurfAdsCore(config) {
53
+ const { handlebars, mobile, navigator, accountId, siteId, logger, channelId, locationId, userId, windowInfo, screen, overrides, configuration, geo, device } = config;
54
+ const log = (0, services_1.Ctx)(config.logger)?.with('CreateSurfAdsCore');
55
+ log?.info('Creating Surfside ads core');
56
+ log?.info('time???', config.logger.time === undefined);
57
+ const ua = navigator.userAgent;
58
+ if (configuration.settings.disableSurfsideAds === true) {
59
+ return (0, services_1.Err)(new Api_1.SurfsideAdsDisabledError);
60
+ }
61
+ if (configuration.settings.excludedLocations?.includes(locationId) === true) {
62
+ return (0, services_1.Err)(new Api_1.LocationExcludedError(locationId));
63
+ }
64
+ /* == Initialize bid request metadata getters == */
65
+ const getDevice = () => (0, services_1.WrapValue)(device);
66
+ const getGeo = () => (0, services_1.WrapValueAsync)(geo);
67
+ /* == Initialize configuration Getter == */
68
+ const getConfiguration = () => (0, services_1.WrapValueAsync)(configuration);
69
+ const getValueOrLog = (t) => {
70
+ if (t === undefined) {
71
+ // Value wasn't passed, this isn't an error, it's the default state
72
+ logger?.debug('Using default');
73
+ return undefined;
74
+ }
75
+ else if (!t.ok) {
76
+ logger?.warn('Failed to override service. Got ', t.error);
77
+ return undefined;
78
+ }
79
+ else {
80
+ logger?.debug('Using override');
81
+ return t.value;
82
+ }
83
+ };
84
+ /* == Initialize product feed == */
85
+ const defaultGetAllSponsoredProducts = services_1.GetAllSponsoredProducts.bind(undefined, log, TLS(Api_1.PROD_SPONSORED_PRODUCT_FEED), configuration, accountId, locationId);
86
+ const getAllSponsoredProducts = getValueOrLog(overrides?.services?.getAllSponsoredProducts?.(config, defaultGetAllSponsoredProducts)) ?? defaultGetAllSponsoredProducts;
87
+ const defaultGetAllSponsoredBrandProducts = services_1.GetAllSponsoredBrandProducts.bind(undefined, log, TLS(Api_1.PROD_SPONSORED_PRODUCT_FEED), configuration, accountId, locationId);
88
+ const getAllSponsoredBrandProducts = getValueOrLog(overrides?.services?.getAllSponsoredBrandProducts?.(config, defaultGetAllSponsoredBrandProducts)) ?? defaultGetAllSponsoredBrandProducts;
89
+ const defaultGetRecommendedProduct = services_1.GetRecommendedProduct.bind(undefined, log, TLS(Api_1.PROD_RECOMMENDED_PRODUCT_FEED), configuration, accountId, locationId);
90
+ const getRecommendedProduct = getValueOrLog(overrides?.services?.getRecommendedProduct?.(config, defaultGetRecommendedProduct)) ?? defaultGetRecommendedProduct;
91
+ const getRecommendedProductFiltered = (0, BotFiltering_1.FilterBots)(log, ua, getRecommendedProduct, async () => (0, services_1.Err)(new services_1.NoRecommendationsError()));
92
+ const defaultGenerateTopProducts = services_1.GenerateTopProducts.bind(undefined, log, getRecommendedProductFiltered, TLS(Api_1.PROD_RECOMMENDER_SERVICE), accountId, siteId, locationId);
93
+ const generateTopProducts = getValueOrLog(overrides?.services?.generateTopProducts?.(config, defaultGenerateTopProducts)) ?? defaultGenerateTopProducts;
94
+ const defaultGenerateForYou = services_1.GenerateForYou.bind(undefined, log, getRecommendedProductFiltered, TLS(Api_1.PROD_RECOMMENDER_SERVICE), accountId, siteId, locationId, userId);
95
+ const generateForYou = getValueOrLog(overrides?.services?.generateForYou?.(config, defaultGenerateForYou)) ?? defaultGenerateForYou;
96
+ const defaultGeneratePreviousPurchases = services_1.GeneratePreviousPurchases.bind(undefined, log, getRecommendedProductFiltered, TLS(Api_1.PROD_RECOMMENDER_SERVICE), accountId, siteId, locationId, userId);
97
+ const generatePreviousPurchases = getValueOrLog(overrides?.services?.generatePreviousPurchases?.(config, defaultGeneratePreviousPurchases)) ?? defaultGeneratePreviousPurchases;
98
+ const defaultBuildAllSponsoredProductCardResponses = helpers_1.BuildAllSponsoredProductCardResponses.bind(undefined, log, getAllSponsoredProducts, getAllSponsoredBrandProducts, windowInfo, configuration);
99
+ const buildAllSponsoredProductCardResponses = getValueOrLog(overrides?.services?.buildAllSponsoredProductCardResponses?.(config, defaultBuildAllSponsoredProductCardResponses)) ?? defaultBuildAllSponsoredProductCardResponses;
100
+ const generateTopProductsFiltered = (0, BotFiltering_1.FilterBotsAsyncGenerator)(log, ua, generateTopProducts);
101
+ const generateForYouFiltered = (0, BotFiltering_1.FilterBotsAsyncGenerator)(log, ua, generateForYou);
102
+ const generatePreviousPurchasesFiltered = (0, BotFiltering_1.FilterBotsAsyncGenerator)(log, ua, generatePreviousPurchases);
103
+ /* == Initialize product card generators == */
104
+ const defaultGenerateSponsoredProductCardResponse = helpers_1.GenerateSponsoredProductCardResponse.bind(undefined, log, getAllSponsoredProducts, getAllSponsoredBrandProducts, windowInfo, configuration);
105
+ const generateSponsoredProductCardResponse = getValueOrLog(overrides?.services?.generateSponsoredProductCardResponse?.(config, defaultGenerateSponsoredProductCardResponse)) ?? defaultGenerateSponsoredProductCardResponse;
106
+ /* == Initialize handlebars evaluator functions == */
107
+ const defaultEvaluateClickthroughTemplate = services_1.EvaluateHandlebarsClickthroughTemplate.bind(undefined, log, windowInfo, configuration);
108
+ const evaluateClickthroughTemplate = getValueOrLog(overrides?.services?.evaluateClickthroughTemplate?.(config, defaultEvaluateClickthroughTemplate)) ?? defaultEvaluateClickthroughTemplate;
109
+ const defaultEvaluateProductCardTemplate = services_1.EvaluateHandlebarsProductCardTemplate.bind(undefined, log, windowInfo, configuration);
110
+ const evaluateProductCardTemplate = getValueOrLog(overrides?.services?.evaluateProductCardTemplate?.(config, defaultEvaluateProductCardTemplate)) ?? defaultEvaluateProductCardTemplate;
111
+ /* == Initialize category mapper */
112
+ const defaultMapCategories = ((categories) => (0, Category_1.MapCategories)(log, categories, windowInfo.href, configuration.category));
113
+ const mapCategories = getValueOrLog(overrides?.services?.mapCategories?.(config, defaultMapCategories)) ?? defaultMapCategories;
114
+ /* == Initialize request builder */
115
+ const defaultStartRequest = helpers_1.StartRequest.bind(undefined, log, accountId, siteId, channelId, locationId, device, geo, userId, mapCategories, configuration.settings.strictCategoryMatching);
116
+ /*
117
+ This one is a little tricky looking, so here's how you would override it:
118
+
119
+ overrides: {
120
+ services: {
121
+ startRequest: (config, startRequest) => (zoneId: string, id?: string) => {
122
+ startRequest(zoneId, id)
123
+ .withApp({ /* ... etc ... *\/ })
124
+ }
125
+ }
126
+ }
127
+
128
+ It's different from the over override functions because it takes the bound startRequest helper.
129
+ This isn't truly overriding a service, but this allows any user to inject a set of default parameters
130
+ for their own bid requests rather than using ours (i.e, the app and site defaults)
131
+ */
132
+ const startRequest = getValueOrLog(overrides?.services?.startRequest?.(config, defaultStartRequest)) ??
133
+ ((zoneId, id) => defaultStartRequest(zoneId, id)
134
+ .withApp({
135
+ bundle: windowInfo.host,
136
+ name: windowInfo.host,
137
+ id: siteId,
138
+ domain: windowInfo.host,
139
+ publisher: {
140
+ domain: windowInfo.host,
141
+ }
142
+ })
143
+ .withSite({
144
+ name: windowInfo.host,
145
+ id: siteId,
146
+ kwarray: [],
147
+ mobile: mobile ? 1 : 0,
148
+ page: windowInfo.href,
149
+ domain: windowInfo.host,
150
+ publisher: {
151
+ id: siteId,
152
+ name: windowInfo.host,
153
+ domain: windowInfo.host,
154
+ },
155
+ ref: '',
156
+ search: windowInfo.search
157
+ }));
158
+ const startNative = helpers_1.StartNative.bind(undefined, log);
159
+ const defaultNative = helpers_1.DefaultNative.bind(undefined, log);
160
+ const defaultRequestBids = services_1.RequestBids.bind(undefined, log, TLS(Api_1.PROD_BIDDER), accountId, siteId, locationId, channelId, configuration.settings.excludedZones);
161
+ const requestBidsFiltered = (0, BotFiltering_1.FilterBots)(log, ua, getValueOrLog(overrides?.services?.requestBids?.(config, defaultRequestBids)) ?? defaultRequestBids, async (request) => (0, services_1.Err)(new services_1.NoBidsError(request)));
162
+ /* == Initialize Trackers == */
163
+ const defaultTrackerService = (0, services_1.InitTrackerService)(log, accountId, siteId, locationId, channelId, windowInfo, ua, geo, device, userId, 'edge.surfside.io');
164
+ const trackerService = getValueOrLog(overrides?.services?.trackerService?.(config, defaultTrackerService)) ?? defaultTrackerService;
165
+ /* == Initialize response builders == */
166
+ const buildSponsoredCarousel = helpers_1.BuildSponsoredCarousel.bind(undefined, log, requestBidsFiltered, generateSponsoredProductCardResponse);
167
+ const buildSponsoredCarouselFromInitialBid = helpers_1.BuildSponsoredCarouselFromInitialBid.bind(undefined, log, requestBidsFiltered, generateSponsoredProductCardResponse);
168
+ const buildHybridCarouselFromInitialBid = helpers_1.BuildHybridCarouselFromInitialBid.bind(undefined, log, evaluateClickthroughTemplate, requestBidsFiltered, generateSponsoredProductCardResponse, generateTopProductsFiltered, generatePreviousPurchasesFiltered, generateForYouFiltered, userId, trackerService, configuration.settings.excludedZones);
169
+ const buildRecommendedCarousel = helpers_1.BuildRecommendedCarousel.bind(undefined, log, evaluateClickthroughTemplate, generateTopProductsFiltered, generatePreviousPurchasesFiltered, generateForYouFiltered, userId, trackerService);
170
+ const buildHybridCarousel = helpers_1.BuildHybridCarousel.bind(undefined, log, evaluateClickthroughTemplate, requestBidsFiltered, generateSponsoredProductCardResponse, generateTopProductsFiltered, generatePreviousPurchasesFiltered, generateForYouFiltered, userId, trackerService, configuration.settings.excludedZones);
171
+ /* == Initialize Dynamic Zone services == */
172
+ const defaultGetDynamicZone = services_1.GetDynamicZone.bind(undefined, log, configuration);
173
+ const getDynamicZone = getValueOrLog(overrides?.services?.getDynamicZone?.(config, defaultGetDynamicZone)) ?? defaultGetDynamicZone;
174
+ const buildDynamicZoneRequest = services_1.BuildDynamicZoneRequest.bind(undefined, log, startRequest, defaultNative, screen);
175
+ const buildBannerResponseCore = helpers_1.BuildBannerResponseCore.bind(undefined, log, windowInfo, configuration);
176
+ const buildVideoResponseCore = helpers_1.BuildVideoResponseCore.bind(undefined, log, windowInfo, configuration);
177
+ const buildSimpleCarousel = helpers_1.BuildSimpleCarousel.bind(undefined, log, windowInfo, getAllSponsoredBrandProducts, configuration);
178
+ const buildAllResponsesCore = helpers_1.BuildAllResponsesCore.bind(undefined, log, windowInfo, configuration, getAllSponsoredBrandProducts);
179
+ const buildAllBannersCore = helpers_1.BuildAllBannersCore.bind(undefined, log, windowInfo, configuration);
180
+ const buildAllVideosCore = helpers_1.BuildAllVideosCore.bind(undefined, log, windowInfo, configuration);
181
+ const buildAllSimpleCarousels = helpers_1.BuildAllSimpleCarousels.bind(undefined, log, windowInfo, getAllSponsoredBrandProducts, configuration);
182
+ return (0, services_1.Ok)({
183
+ getDevice,
184
+ device,
185
+ getGeo,
186
+ geo,
187
+ configuration,
188
+ getConfiguration,
189
+ generateCategories: mapCategories,
190
+ mapCategories,
191
+ handlebars,
192
+ requestBids: requestBidsFiltered,
193
+ startRequest,
194
+ startNative,
195
+ defaultNative,
196
+ getAllSponsoredProducts,
197
+ getRecommendedProduct: getRecommendedProductFiltered,
198
+ generateTopProducts: generateTopProductsFiltered,
199
+ generateForYou: generateForYouFiltered,
200
+ generatePreviousPurchases: generatePreviousPurchasesFiltered,
201
+ buildAllSponsoredProductCardResponses,
202
+ generateSponsoredProductCardResponse,
203
+ evaluateProductCardTemplate,
204
+ evaluateClickthroughTemplate,
205
+ buildSponsoredCarousel,
206
+ buildSponsoredCarouselFromInitialBid,
207
+ buildHybridCarousel,
208
+ buildHybridCarouselFromInitialBid,
209
+ buildRecommendedCarousel,
210
+ getDynamicZone,
211
+ buildDynamicZoneRequest,
212
+ buildBannerResponseCore,
213
+ buildVideoResponseCore,
214
+ buildSimpleCarousel,
215
+ buildAllResponsesCore,
216
+ buildAllBannersCore,
217
+ buildAllVideosCore,
218
+ buildAllSimpleCarousels,
219
+ trackers: trackerService
220
+ });
221
+ }
222
+ const InitializeHandlebarsWithHelpers = (logger, helpers) => {
223
+ const handlebars = runtime_1.default.create();
224
+ const log = (0, services_1.Ctx)(logger)?.with('HandlebarInit');
225
+ log?.info('Initializing handlebars helpers');
226
+ for (const name in helpers) {
227
+ const helper = helpers[name];
228
+ if (helper === undefined) {
229
+ log?.warn(`Helper ${helper} was missing! Skipping`);
230
+ continue;
231
+ }
232
+ log?.debug('Adding Helper: ', name);
233
+ handlebars.registerHelper(name, helper);
234
+ }
235
+ return handlebars;
236
+ };
237
+ const LoadSurfAdsCoreHandlebarsDependencies = (logger, windowInfo) => {
238
+ const handlebarsHelpers = (0, helpers_1.GetHelpers)(windowInfo);
239
+ const handlebars = InitializeHandlebarsWithHelpers(logger, handlebarsHelpers);
240
+ return [handlebars, handlebarsHelpers];
241
+ };
242
+ exports.LoadSurfAdsCoreHandlebarsDependencies = LoadSurfAdsCoreHandlebarsDependencies;
243
+ ;
244
+ const LoadSurfAdsCoreConfigurationDependencies = async (config) => {
245
+ if (config.overrides?.dependencies?.configuration !== undefined) {
246
+ return (0, services_1.Ok)(config.overrides.dependencies.configuration);
247
+ }
248
+ const fileRes = (0, services_1.TryDoFlatAsync)(() => {
249
+ if (config.overrides?.services?.loadConfigurationFile === undefined) {
250
+ return (0, services_1.LoadConfigurationFile)(config.logger, config.accountId, config.siteId);
251
+ }
252
+ const fnRes = config.overrides.services.loadConfigurationFile(config, services_1.LoadConfigurationFile.bind(undefined, config.logger));
253
+ if (!fnRes.ok) {
254
+ return (0, services_1.LoadConfigurationFile)(config.logger, config.accountId, config.siteId);
255
+ }
256
+ return fnRes.value(config.accountId, config.siteId);
257
+ });
258
+ const globalCategoryRes = (0, services_1.TryDoFlatAsync)(() => {
259
+ if (config.overrides?.services?.loadGlobalCategoryConfiguration === undefined) {
260
+ return (0, services_1.LoadGlobalCategoryConfiguration)(config.logger);
261
+ }
262
+ const fnRes = config.overrides.services.loadGlobalCategoryConfiguration(config, services_1.LoadGlobalCategoryConfiguration.bind(undefined, config.logger));
263
+ if (!fnRes.ok) {
264
+ return (0, services_1.LoadGlobalCategoryConfiguration)(config.logger);
265
+ }
266
+ return fnRes.value();
267
+ });
268
+ const [filePromiseSettledResult, globalCategorySettledResult] = await Promise.allSettled([fileRes, globalCategoryRes]);
269
+ if (filePromiseSettledResult.status === 'rejected') {
270
+ return (0, services_1.Err)(filePromiseSettledResult.reason);
271
+ }
272
+ if (globalCategorySettledResult.status === 'rejected') {
273
+ return (0, services_1.Err)(globalCategorySettledResult.reason);
274
+ }
275
+ const fileResult = filePromiseSettledResult.value;
276
+ const globalCategoryResult = globalCategorySettledResult.value;
277
+ if (!fileResult.ok) {
278
+ return fileResult;
279
+ }
280
+ if (!globalCategoryResult.ok) {
281
+ return globalCategoryResult;
282
+ }
283
+ const file = fileResult.value;
284
+ const globalCategories = globalCategoryResult.value;
285
+ const categoryConfigResult = (0, services_1.CreateCategoryConfiguration)(config.logger, globalCategories, file.category);
286
+ if (!categoryConfigResult.ok) {
287
+ return categoryConfigResult;
288
+ }
289
+ const categoryConfig = categoryConfigResult.value;
290
+ const compiledPublisherConfigurationResult = await (0, services_1.LoadCompiledConfiguration)(config.logger, file, config.handlebars, config.handlebarsHelpers);
291
+ if (!compiledPublisherConfigurationResult.ok) {
292
+ return compiledPublisherConfigurationResult;
293
+ }
294
+ const compiledPublisherConfiguration = compiledPublisherConfigurationResult.value;
295
+ return (0, services_1.Ok)({
296
+ ...compiledPublisherConfiguration,
297
+ category: categoryConfig
298
+ });
299
+ };
300
+ exports.LoadSurfAdsCoreConfigurationDependencies = LoadSurfAdsCoreConfigurationDependencies;
301
+ ;
302
+ const LoadSurfAdsCoreGeoDependencies = (config) => config.overrides?.dependencies?.geo === undefined
303
+ ? (0, services_1.GetGeo)(config.logger)
304
+ : (0, services_1.WrapValueAsync)(config.overrides?.dependencies.geo);
305
+ exports.LoadSurfAdsCoreGeoDependencies = LoadSurfAdsCoreGeoDependencies;
306
+ const LoadSurfAdsCoreDeviceDependencies = (config) => config.overrides?.dependencies?.device === undefined
307
+ ? (0, services_1.GetValue)((0, services_1.GetDevice)(config.logger, config.screen, config.navigator, config.mobile))
308
+ : config.overrides.dependencies.device;
309
+ exports.LoadSurfAdsCoreDeviceDependencies = LoadSurfAdsCoreDeviceDependencies;
310
+ const LoadSurfAdsCoreDependencies = async (config) => {
311
+ const { windowInfo, overrides, accountId, siteId, locationId, channelId, logger, screen, navigator, mobile } = config;
312
+ const device = (0, exports.LoadSurfAdsCoreDeviceDependencies)({
313
+ logger,
314
+ navigator,
315
+ mobile,
316
+ screen,
317
+ overrides: config.overrides
318
+ });
319
+ const defaultTelemetryCollector = config.telemetry === true
320
+ ? new helpers_1.SSRTelemetryCollector({
321
+ accountId,
322
+ siteId,
323
+ locationId,
324
+ channelId,
325
+ device,
326
+ tags: { accountId, siteId, locationId },
327
+ endpoint: TLS(Api_1.PROD_TELEMETRY_SERVICE),
328
+ url: config.windowInfo.href
329
+ })
330
+ : undefined;
331
+ const telemetryCollectorOpt = config.telemetry === true
332
+ ? config.overrides?.services?.createTelemetryCollector?.({ ...config, device }, defaultTelemetryCollector) ?? (0, services_1.Ok)(defaultTelemetryCollector)
333
+ : undefined;
334
+ const telemetryCollector = telemetryCollectorOpt !== undefined
335
+ ? (0, services_1.GetValue)(telemetryCollectorOpt)
336
+ : undefined;
337
+ const log = logger !== undefined
338
+ ? (0, services_1.CreateTelemetryLogger)(logger, telemetryCollector)
339
+ : undefined;
340
+ if (config.telemetry === true) {
341
+ log?.info('⏰ Using telemetry!\n' +
342
+ `${log.time !== undefined ? '✅' : '❌'} | log.time\n` +
343
+ `${telemetryCollector !== undefined ? '✅' : '❌'} | telemetryCollector`);
344
+ }
345
+ const [handlebars, handlebarsHelpers] = (0, exports.LoadSurfAdsCoreHandlebarsDependencies)(log, windowInfo);
346
+ const configurationPromise = (0, exports.LoadSurfAdsCoreConfigurationDependencies)({
347
+ logger: log,
348
+ accountId,
349
+ siteId,
350
+ handlebars,
351
+ handlebarsHelpers,
352
+ overrides
353
+ });
354
+ const geoPromise = (0, exports.LoadSurfAdsCoreGeoDependencies)({
355
+ logger: log,
356
+ overrides
357
+ });
358
+ const dependencyPromisesSettled = await Promise.allSettled([
359
+ configurationPromise,
360
+ geoPromise
361
+ ]);
362
+ const [configurationPromiseSettled, geoPromiseSettled] = dependencyPromisesSettled;
363
+ /* Check configuration rejection. This should never happen since exceptions are handled internally, but
364
+ * Promise.allSettled doesn't know that so we are being thorough here */
365
+ if (configurationPromiseSettled.status === 'rejected') {
366
+ return (0, services_1.Err)(new Error('Unknown promise rejection error when retrieving configuration. Got ' +
367
+ configurationPromiseSettled.reason.message));
368
+ }
369
+ /* Check the actual error now, if any */
370
+ const configurationResult = configurationPromiseSettled.value;
371
+ if (!configurationResult.ok) {
372
+ return configurationResult;
373
+ }
374
+ const configuration = configurationResult.value;
375
+ /* Do the same check with geo, except geo is allowed to fail as it's not strictly required for RTB, just targeting.
376
+ * if Geo fails, we may see reduced bid responses. */
377
+ const geo = (geoPromiseSettled.status === 'rejected')
378
+ ? undefined
379
+ : (0, services_1.GetValue)(geoPromiseSettled.value);
380
+ return (0, services_1.Ok)({
381
+ handlebars,
382
+ geo,
383
+ configuration,
384
+ device,
385
+ telemetryCollector,
386
+ logger: log
387
+ });
388
+ };
389
+ exports.LoadSurfAdsCoreDependencies = LoadSurfAdsCoreDependencies;
390
+ const LoadSurfAdsCore = async (config) => {
391
+ const { logger, overrides, windowInfo, accountId, siteId, navigator, mobile, ip, channelId, locationId, userId, screen } = config;
392
+ const dependencyResult = await (0, exports.LoadSurfAdsCoreDependencies)(config);
393
+ if (!dependencyResult.ok) {
394
+ return dependencyResult;
395
+ }
396
+ const { handlebars, configuration, geo, device, logger: dependenciesLogger } = dependencyResult.value;
397
+ return CreateSurfAdsCore({
398
+ mobile,
399
+ handlebars,
400
+ navigator,
401
+ accountId,
402
+ siteId,
403
+ logger: dependenciesLogger ?? logger,
404
+ channelId,
405
+ locationId,
406
+ userId,
407
+ windowInfo,
408
+ screen,
409
+ configuration,
410
+ device,
411
+ geo,
412
+ ip,
413
+ overrides
414
+ });
415
+ };
416
+ exports.LoadSurfAdsCore = LoadSurfAdsCore;
417
+ const LoadAdsCoreBrowser = async (accountId, channelId, siteId, locationId, userId, logger) => {
418
+ const browserInfo = (0, helpers_1.GetBrowserInfo)();
419
+ if (!browserInfo.ok) {
420
+ return browserInfo;
421
+ }
422
+ const { windowInfo, navigator, isMobile, screen } = browserInfo.value;
423
+ return (0, exports.LoadSurfAdsCore)({
424
+ logger,
425
+ accountId,
426
+ channelId,
427
+ siteId,
428
+ locationId,
429
+ userId,
430
+ windowInfo,
431
+ navigator,
432
+ mobile: isMobile,
433
+ screen,
434
+ ip: undefined
435
+ });
436
+ };
437
+ exports.LoadAdsCoreBrowser = LoadAdsCoreBrowser;
438
+ /* Global version of these overrides for simple headless use cases*/
439
+ const memoizedLoadConfigurationFile = (0, exports.MemoizeOverride)({ minutes: 5 });
440
+ const cachedGlobalCategory = (0, exports.CacheOverride)({ minutes: 5 });
441
+ const LoadSurfAdsCoreHeadless = async (config) => {
442
+ const windowInfoRes = (0, helpers_1.WindowFromUrl)(config.url);
443
+ if (!windowInfoRes.ok) {
444
+ return windowInfoRes;
445
+ }
446
+ const windowInfo = windowInfoRes.value;
447
+ return (0, exports.LoadSurfAdsCore)({
448
+ accountId: config.accountId,
449
+ siteId: config.siteId,
450
+ channelId: config.channelId,
451
+ locationId: config.locationId,
452
+ userId: config.userId,
453
+ mobile: false,
454
+ ip: config.ip,
455
+ windowInfo,
456
+ screen: { width: 1920, height: 1080 },
457
+ navigator: {
458
+ userAgent: config.userAgent,
459
+ language: 'en-US'
460
+ },
461
+ logger: config.logging === true ? (0, services_1.InitLogger)(false) : undefined,
462
+ telemetry: config.telemetry,
463
+ overrides: {
464
+ ...config.overrides,
465
+ services: {
466
+ ...config.overrides?.services,
467
+ loadConfigurationFile: config.overrides?.services?.loadConfigurationFile ?? memoizedLoadConfigurationFile,
468
+ loadGlobalCategoryConfiguration: config.overrides?.services?.loadGlobalCategoryConfiguration ?? cachedGlobalCategory
469
+ }
470
+ }
471
+ });
472
+ };
473
+ exports.LoadSurfAdsCoreHeadless = LoadSurfAdsCoreHeadless;
474
+ //# sourceMappingURL=Init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Init.js","sourceRoot":"/","sources":["Init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SSRTelemetryCollector = exports.DeviceToTelemetryDevice = void 0;
4
+ const Logger_1 = require("../services/Logger");
5
+ const DeviceToTelemetryDevice = (device) => {
6
+ if (device === undefined) {
7
+ return undefined;
8
+ }
9
+ const browser = device.sua?.browsers?.[0];
10
+ return {
11
+ ua: device.ua,
12
+ browser: browser !== undefined
13
+ ? `${browser.brand} ${browser.version?.join('.') ?? ''}`.trim()
14
+ : undefined,
15
+ os: device.os,
16
+ osv: device.osv,
17
+ make: device.make,
18
+ model: device.model,
19
+ deviceType: device.devicetype,
20
+ screenW: device.w,
21
+ screenH: device.h,
22
+ language: device.language,
23
+ };
24
+ };
25
+ exports.DeviceToTelemetryDevice = DeviceToTelemetryDevice;
26
+ class SSRTelemetryCollector extends Logger_1.ITelemetryCollector {
27
+ _endpoint;
28
+ _tags;
29
+ _batchIntervalMs;
30
+ _pageUrl;
31
+ queue = [];
32
+ flushTimer;
33
+ constructor(options) {
34
+ super(options.accountId, options.siteId, options.channelId, options.locationId, options.device);
35
+ this._endpoint = options.endpoint;
36
+ this._tags = { ...(options.tags ?? {}) };
37
+ this._batchIntervalMs = options.batchIntervalMs ?? 1000;
38
+ this._pageUrl = options.url;
39
+ }
40
+ record(entry) {
41
+ this.queue.push({
42
+ device: this.device,
43
+ pageUrl: this._pageUrl,
44
+ ...entry,
45
+ tags: { ...this._tags, ...(entry.tags ?? {}) },
46
+ });
47
+ if (this._batchIntervalMs === 0) {
48
+ this.flush();
49
+ return;
50
+ }
51
+ clearTimeout(this.flushTimer);
52
+ this.flushTimer = setTimeout(() => this.flush(), this._batchIntervalMs);
53
+ if (this.queue.length >= 100) {
54
+ this.flush();
55
+ }
56
+ }
57
+ flush() {
58
+ if (this.queue.length === 0) {
59
+ return;
60
+ }
61
+ const payload = JSON.stringify(this.queue.splice(0));
62
+ clearTimeout(this.flushTimer);
63
+ this.flushTimer = undefined;
64
+ fetch(this._endpoint, {
65
+ method: 'POST',
66
+ headers: { 'Content-Type': 'application/json' },
67
+ body: payload,
68
+ }).catch(() => { });
69
+ }
70
+ }
71
+ exports.SSRTelemetryCollector = SSRTelemetryCollector;
72
+ //# sourceMappingURL=TelemetryCollector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TelemetryCollector.js","sourceRoot":"/","sources":["helpers/TelemetryCollector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Types.js","sourceRoot":"/","sources":["helpers/Types.ts"],"names":[],"mappings":""}