@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 +15 -15
- package/lib/cjs/BuildInfo.js +1 -1
- package/lib/cjs/BuildInfo.js.map +1 -1
- package/lib/cjs/Init.js +474 -0
- package/lib/cjs/Init.js.map +1 -0
- package/lib/cjs/helpers/TelemetryCollector.js +72 -0
- package/lib/cjs/helpers/TelemetryCollector.js.map +1 -0
- package/lib/cjs/helpers/Types.js +3 -0
- package/lib/cjs/helpers/Types.js.map +1 -0
- package/lib/cjs/helpers/response/Html.js +37 -0
- package/lib/cjs/helpers/response/Html.js.map +1 -0
- package/lib/cjs/helpers/response/Products.js +174 -0
- package/lib/cjs/helpers/response/Products.js.map +1 -0
- package/lib/cjs/services/Product.js.map +1 -1
- package/lib/esm/BuildInfo.js +1 -1
- package/lib/esm/BuildInfo.js.map +1 -1
- package/lib/esm/Init.js +455 -0
- package/lib/esm/Init.js.map +1 -0
- package/lib/esm/helpers/TelemetryCollector.js +67 -0
- package/lib/esm/helpers/TelemetryCollector.js.map +1 -0
- package/lib/esm/helpers/Types.js +2 -0
- package/lib/esm/helpers/Types.js.map +1 -0
- package/lib/esm/helpers/response/Html.js +33 -0
- package/lib/esm/helpers/response/Html.js.map +1 -0
- package/lib/esm/helpers/response/Products.js +169 -0
- package/lib/esm/helpers/response/Products.js.map +1 -0
- package/lib/esm/services/Product.js.map +1 -1
- package/lib/types/Init.d.ts +147 -0
- package/lib/types/helpers/TelemetryCollector.d.ts +25 -0
- package/lib/types/helpers/Types.d.ts +1 -0
- package/lib/types/helpers/response/Html.d.ts +2 -0
- package/lib/types/helpers/response/Products.d.ts +8 -0
- package/package.json +47 -47
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.
|
package/lib/cjs/BuildInfo.js
CHANGED
|
@@ -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: '
|
|
4
|
+
exports.SurfsideAdsCoreVersionInfo = { buildBranch: 'hotfix-0.1.23', buildHash: 'f4f4536', buildVer: '2.0.23' };
|
|
5
5
|
//# sourceMappingURL=BuildInfo.js.map
|
package/lib/cjs/BuildInfo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildInfo.js","sourceRoot":"src/","sources":["BuildInfo.ts"],"names":[],"mappings":";;;AAAa,QAAA,0BAA0B,GAAG,EAAE,WAAW,EAAE,
|
|
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"}
|
package/lib/cjs/Init.js
ADDED
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"Types.js","sourceRoot":"/","sources":["helpers/Types.ts"],"names":[],"mappings":""}
|