@surfside/ads-core 2.0.21 → 2.1.0
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/lib/cjs/Api.js +63 -33
- package/lib/cjs/Api.js.map +1 -1
- package/lib/cjs/BuildInfo.js +6 -2
- package/lib/cjs/BuildInfo.js.map +1 -1
- package/lib/cjs/Init.js +340 -0
- package/lib/cjs/Init.js.map +1 -0
- package/lib/cjs/helpers/Functions.js.map +1 -1
- package/lib/cjs/helpers/Generator.js.map +1 -1
- package/lib/cjs/helpers/Handlebars.js +5 -2
- package/lib/cjs/helpers/Handlebars.js.map +1 -1
- package/lib/cjs/helpers/NativeRequestBuilder.js.map +1 -1
- package/lib/cjs/helpers/RequestBuilder.js +139 -24
- package/lib/cjs/helpers/RequestBuilder.js.map +1 -1
- package/lib/cjs/helpers/TelemetryCollector.js +72 -0
- package/lib/cjs/helpers/TelemetryCollector.js.map +1 -0
- package/lib/cjs/helpers/TryGet.js.map +1 -1
- package/lib/cjs/helpers/Types.js +3 -0
- package/lib/cjs/helpers/Types.js.map +1 -0
- package/lib/cjs/helpers/Window.js +52 -11
- package/lib/cjs/helpers/Window.js.map +1 -1
- package/lib/cjs/helpers/index.js +2 -0
- package/lib/cjs/helpers/index.js.map +1 -1
- package/lib/cjs/helpers/response/Banner.js.map +1 -1
- package/lib/cjs/helpers/response/BuiltResponse.js.map +1 -1
- package/lib/cjs/helpers/response/Carousel.js +49 -24
- package/lib/cjs/helpers/response/Carousel.js.map +1 -1
- package/lib/cjs/helpers/response/Clickthrough.js.map +1 -1
- package/lib/cjs/helpers/response/ProductCard.js +16 -10
- package/lib/cjs/helpers/response/ProductCard.js.map +1 -1
- package/lib/cjs/helpers/response/Video.js.map +1 -1
- package/lib/cjs/helpers/response/index.js.map +1 -1
- package/lib/cjs/index.js +25 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/models/dynamic/DynamicZone.js.map +1 -1
- package/lib/cjs/models/dynamic/index.js.map +1 -1
- package/lib/cjs/models/index.js.map +1 -1
- package/lib/cjs/models/retail/Category.js.map +1 -1
- package/lib/cjs/models/retail/Configuration.js.map +1 -1
- package/lib/cjs/models/retail/Product.js.map +1 -1
- package/lib/cjs/models/retail/Recommended.js.map +1 -1
- package/lib/cjs/models/retail/index.js +1 -0
- package/lib/cjs/models/retail/index.js.map +1 -1
- package/lib/cjs/models/rtb/BidRequest.js.map +1 -1
- package/lib/cjs/models/rtb/BidResponse.js.map +1 -1
- package/lib/cjs/models/rtb/NativeRequest.js.map +1 -1
- package/lib/cjs/models/rtb/NativeResponse.js.map +1 -1
- package/lib/cjs/models/rtb/index.js.map +1 -1
- package/lib/cjs/models/tracking/Geo.js.map +1 -1
- package/lib/cjs/models/tracking/index.js.map +1 -1
- package/lib/cjs/models/vast/Vast.js.map +1 -1
- package/lib/cjs/models/vast/index.js.map +1 -1
- package/lib/cjs/services/Bidder.js +175 -8
- package/lib/cjs/services/Bidder.js.map +1 -1
- package/lib/cjs/services/BotFiltering.js.map +1 -1
- package/lib/cjs/services/Category.js +8 -4
- package/lib/cjs/services/Category.js.map +1 -1
- package/lib/cjs/services/Configuration.js +186 -5
- package/lib/cjs/services/Configuration.js.map +1 -1
- package/lib/cjs/services/Device.js +1 -1
- package/lib/cjs/services/Device.js.map +1 -1
- package/lib/cjs/services/Dynamic.js +9 -7
- package/lib/cjs/services/Dynamic.js.map +1 -1
- package/lib/cjs/services/Geo.js +5 -1
- package/lib/cjs/services/Geo.js.map +1 -1
- package/lib/cjs/services/Logger.js +82 -14
- package/lib/cjs/services/Logger.js.map +1 -1
- package/lib/cjs/services/Memo.js.map +1 -1
- package/lib/cjs/services/Memoization.js +3 -0
- package/lib/cjs/services/Memoization.js.map +1 -1
- package/lib/cjs/services/Product.js +11 -5
- package/lib/cjs/services/Product.js.map +1 -1
- package/lib/cjs/services/Recommender.js +40 -15
- package/lib/cjs/services/Recommender.js.map +1 -1
- package/lib/cjs/services/Result.js +3 -1
- package/lib/cjs/services/Result.js.map +1 -1
- package/lib/cjs/services/Template.js.map +1 -1
- package/lib/cjs/services/Tracker.js.map +1 -1
- package/lib/cjs/services/index.js.map +1 -1
- package/lib/cjs/util/Functional.js.map +1 -1
- package/lib/esm/Api.js +60 -33
- package/lib/esm/Api.js.map +1 -1
- package/lib/esm/BuildInfo.js +5 -1
- package/lib/esm/BuildInfo.js.map +1 -1
- package/lib/esm/Init.js +326 -0
- package/lib/esm/Init.js.map +1 -0
- package/lib/esm/helpers/Functions.js.map +1 -1
- package/lib/esm/helpers/Generator.js.map +1 -1
- package/lib/esm/helpers/Handlebars.js +5 -2
- package/lib/esm/helpers/Handlebars.js.map +1 -1
- package/lib/esm/helpers/NativeRequestBuilder.js.map +1 -1
- package/lib/esm/helpers/RequestBuilder.js +139 -24
- package/lib/esm/helpers/RequestBuilder.js.map +1 -1
- package/lib/esm/helpers/TelemetryCollector.js +67 -0
- package/lib/esm/helpers/TelemetryCollector.js.map +1 -0
- package/lib/esm/helpers/TryGet.js.map +1 -1
- package/lib/esm/helpers/Types.js +2 -0
- package/lib/esm/helpers/Types.js.map +1 -0
- package/lib/esm/helpers/Window.js +47 -10
- package/lib/esm/helpers/Window.js.map +1 -1
- package/lib/esm/helpers/index.js +2 -0
- package/lib/esm/helpers/index.js.map +1 -1
- package/lib/esm/helpers/response/Banner.js.map +1 -1
- package/lib/esm/helpers/response/BuiltResponse.js.map +1 -1
- package/lib/esm/helpers/response/Carousel.js +50 -25
- package/lib/esm/helpers/response/Carousel.js.map +1 -1
- package/lib/esm/helpers/response/Clickthrough.js.map +1 -1
- package/lib/esm/helpers/response/ProductCard.js +16 -10
- package/lib/esm/helpers/response/ProductCard.js.map +1 -1
- package/lib/esm/helpers/response/Video.js.map +1 -1
- package/lib/esm/helpers/response/index.js.map +1 -1
- package/lib/esm/index.js +2 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/models/dynamic/DynamicZone.js.map +1 -1
- package/lib/esm/models/dynamic/index.js.map +1 -1
- package/lib/esm/models/index.js.map +1 -1
- package/lib/esm/models/retail/Category.js.map +1 -1
- package/lib/esm/models/retail/Configuration.js.map +1 -1
- package/lib/esm/models/retail/Product.js.map +1 -1
- package/lib/esm/models/retail/Recommended.js.map +1 -1
- package/lib/esm/models/retail/index.js +1 -0
- package/lib/esm/models/retail/index.js.map +1 -1
- package/lib/esm/models/rtb/BidRequest.js.map +1 -1
- package/lib/esm/models/rtb/BidResponse.js.map +1 -1
- package/lib/esm/models/rtb/NativeRequest.js.map +1 -1
- package/lib/esm/models/rtb/NativeResponse.js.map +1 -1
- package/lib/esm/models/rtb/index.js.map +1 -1
- package/lib/esm/models/tracking/Geo.js.map +1 -1
- package/lib/esm/models/tracking/index.js.map +1 -1
- package/lib/esm/models/vast/Vast.js.map +1 -1
- package/lib/esm/models/vast/index.js.map +1 -1
- package/lib/esm/services/Bidder.js +171 -8
- package/lib/esm/services/Bidder.js.map +1 -1
- package/lib/esm/services/BotFiltering.js.map +1 -1
- package/lib/esm/services/Category.js +6 -2
- package/lib/esm/services/Category.js.map +1 -1
- package/lib/esm/services/Configuration.js +176 -5
- package/lib/esm/services/Configuration.js.map +1 -1
- package/lib/esm/services/Device.js +1 -1
- package/lib/esm/services/Device.js.map +1 -1
- package/lib/esm/services/Dynamic.js +9 -7
- package/lib/esm/services/Dynamic.js.map +1 -1
- package/lib/esm/services/Geo.js +5 -1
- package/lib/esm/services/Geo.js.map +1 -1
- package/lib/esm/services/Logger.js +78 -12
- package/lib/esm/services/Logger.js.map +1 -1
- package/lib/esm/services/Memo.js.map +1 -1
- package/lib/esm/services/Memoization.js +3 -0
- package/lib/esm/services/Memoization.js.map +1 -1
- package/lib/esm/services/Product.js +11 -5
- package/lib/esm/services/Product.js.map +1 -1
- package/lib/esm/services/Recommender.js +40 -15
- package/lib/esm/services/Recommender.js.map +1 -1
- package/lib/esm/services/Result.js +1 -0
- package/lib/esm/services/Result.js.map +1 -1
- package/lib/esm/services/Template.js.map +1 -1
- package/lib/esm/services/Tracker.js.map +1 -1
- package/lib/esm/services/index.js.map +1 -1
- package/lib/esm/util/Functional.js.map +1 -1
- package/lib/types/Api.d.ts +33 -16
- package/lib/types/BuildInfo.d.ts +1 -1
- package/lib/types/Init.d.ts +99 -0
- package/lib/types/helpers/Handlebars.d.ts +1 -0
- package/lib/types/helpers/RequestBuilder.d.ts +9 -2
- package/lib/types/helpers/TelemetryCollector.d.ts +25 -0
- package/lib/types/helpers/Types.d.ts +1 -0
- package/lib/types/helpers/Window.d.ts +11 -1
- package/lib/types/helpers/index.d.ts +2 -0
- package/lib/types/helpers/response/Carousel.d.ts +4 -4
- package/lib/types/index.d.ts +2 -1
- package/lib/types/models/retail/Category.d.ts +1 -1
- package/lib/types/models/retail/Configuration.d.ts +10 -0
- package/lib/types/models/retail/index.d.ts +1 -0
- package/lib/types/models/rtb/BidRequest.d.ts +4 -1
- package/lib/types/models/rtb/BidResponse.d.ts +1 -0
- package/lib/types/services/Bidder.d.ts +19 -3
- package/lib/types/services/Category.d.ts +9 -1
- package/lib/types/services/Configuration.d.ts +23 -2
- package/lib/types/services/Dynamic.d.ts +5 -3
- package/lib/types/services/Logger.d.ts +36 -2
- package/lib/types/services/Memoization.d.ts +3 -0
- package/lib/types/services/Recommender.d.ts +2 -2
- package/lib/types/services/Result.d.ts +1 -0
- package/package.json +3 -3
package/lib/types/Api.d.ts
CHANGED
|
@@ -5,14 +5,16 @@ import Handlebars from 'handlebars/runtime';
|
|
|
5
5
|
import { type BuildHybridCarouselFn, type BuildHybridCarouselFromInitialBidFn, type BuildRecommendedCarouselFn, type BuildSponsoredCarouselFn, type BuildSponsoredCarouselFromInitialBidFn } from './helpers/response/Carousel';
|
|
6
6
|
import { type EvaluateClickthroughTemplateFn, type EvaluateProductCardTemplateFn } from './services/Template';
|
|
7
7
|
import { type BuildDynamicZoneRequestFn, type GetDynamicZoneFn } from './services/Dynamic';
|
|
8
|
-
import { type
|
|
8
|
+
import { type MapCategoriesFn } from './services/Category';
|
|
9
9
|
import { type InitTrackerServiceFn, type IProductTrackerService } from './services/Tracker';
|
|
10
10
|
export declare const PROD_BIDDER = "//bid.surfside.io/rtb/bids/surfside";
|
|
11
11
|
export declare const PROD_CONFIGURATION_SERVICE = "//r.surfside.io";
|
|
12
|
+
export declare const PROD_CATEGORY_CONFIGURATION_SERVICE = "//r.surfside.io";
|
|
12
13
|
export declare const PROD_SPONSORED_PRODUCT_FEED = "//creative.surfside.io";
|
|
13
14
|
export declare const PROD_RECOMMENDED_PRODUCT_FEED = "//creative.surfside.io";
|
|
14
15
|
export declare const PROD_RECOMMENDER_SERVICE = "//t.surfside.io";
|
|
15
16
|
export declare const PROD_DYNAMIC_ZONE_SERVICE = "//r.surfside.io/";
|
|
17
|
+
export declare const PROD_TELEMETRY_SERVICE = "//telemetry.surfside.io/v1/ingest";
|
|
16
18
|
/**
|
|
17
19
|
* A collection of services for querying the surfside API and building responses
|
|
18
20
|
*/
|
|
@@ -46,9 +48,14 @@ export interface ISurfsideApi {
|
|
|
46
48
|
*/
|
|
47
49
|
getConfiguration: GetConfigurationFn;
|
|
48
50
|
/**
|
|
49
|
-
*
|
|
51
|
+
* @deprecated Use mapCategories instead
|
|
52
|
+
* Maps publisher categories to Surfside canonical categories
|
|
50
53
|
*/
|
|
51
|
-
generateCategories:
|
|
54
|
+
generateCategories: MapCategoriesFn;
|
|
55
|
+
/**
|
|
56
|
+
* Maps publisher categories to Surfside canonical categories
|
|
57
|
+
*/
|
|
58
|
+
mapCategories: MapCategoriesFn;
|
|
52
59
|
/**
|
|
53
60
|
* Creates a set of trackers from a product input. Builds a URL with all relevant info from the trackers
|
|
54
61
|
* and returns functions to call when the relevant events fire
|
|
@@ -128,17 +135,11 @@ export interface ISurfsideApi {
|
|
|
128
135
|
getDynamicZone: GetDynamicZoneFn;
|
|
129
136
|
buildDynamicZoneRequest: BuildDynamicZoneRequestFn;
|
|
130
137
|
}
|
|
131
|
-
|
|
132
|
-
* Initializes the API with the services explicitly passed to it. This function is used by the framework for overloading
|
|
133
|
-
* mock services. It should not be used in an application
|
|
134
|
-
* @param internalApiDto The list of services and helpers to inject
|
|
135
|
-
* @returns An initialized Surfside API
|
|
136
|
-
*/
|
|
137
|
-
export declare function InitSurfAdsCoreInternal(internalApiDto: {
|
|
138
|
+
export type SurfAdsCoreInitDto = {
|
|
138
139
|
logger: ILogger | undefined;
|
|
139
140
|
requestBids: RequestBidsFn;
|
|
140
141
|
getConfiguration: GetConfigurationFn;
|
|
141
|
-
generateCategories:
|
|
142
|
+
generateCategories: MapCategoriesFn;
|
|
142
143
|
getGeo: GetGeoFn;
|
|
143
144
|
getDevice: GetDeviceFn;
|
|
144
145
|
getAllSponsoredProducts: GetAllSponsoredProductFromNativeIdFn;
|
|
@@ -164,13 +165,29 @@ export declare function InitSurfAdsCoreInternal(internalApiDto: {
|
|
|
164
165
|
channelId: string;
|
|
165
166
|
locationId: string;
|
|
166
167
|
userId: string | undefined;
|
|
167
|
-
}
|
|
168
|
-
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Initializes the API with the services explicitly passed to it. This function is used by the framework for overloading
|
|
171
|
+
* mock services. It should not be used in an application
|
|
172
|
+
* @param internalApiDto The list of services and helpers to inject
|
|
173
|
+
* @returns An initialized Surfside API
|
|
174
|
+
*/
|
|
175
|
+
export declare function InitSurfAdsCoreInternal(internalApiDto: SurfAdsCoreInitDto): AsyncResult<ISurfsideApi>;
|
|
176
|
+
export declare const InitSurfAdsCoreServices: (logger: ILogger | undefined, bidderServiceUrl: string, configurationServiceUrl: string, productFeedUrl: string, recommendedProductFeedUrl: string, recommenderServiceUrl: string, dynamicZoneServiceUrl: string, windowInfo: INativeTemplateDelegateWindow, screenInfo: IScreen, navigator: INavigator, mobile: boolean, ip: string | undefined, geoProviderToken: string | undefined, accountId: string, siteId: string, channelId: string, locationId: string, userId: string | undefined, initTrackerService?: InitTrackerServiceFn, overrides?: Partial<SurfAdsCoreInitDto>) => AsyncResult<ISurfsideApi>;
|
|
169
177
|
export declare const InitSurfAdsCoreSSR: (windowInfo: INativeTemplateDelegateWindow, screen: IScreen, navigator: INavigator, mobile: boolean, ip: string, geoProviderToken: string, accountId: string, siteId: string, channelId: string, locationId: string, userId: string | undefined, logger?: ILogger) => AsyncResult<ISurfsideApi>;
|
|
170
178
|
export declare const InitSurfAdsCore: (channelId: string, accountId: string, siteId: string, locationId: string, userId: string | undefined, logger?: ILogger) => AsyncResult<ISurfsideApi>;
|
|
171
|
-
export declare class MissingConfigurationError extends Error {
|
|
172
|
-
constructor(accountId: string, siteId: string);
|
|
173
|
-
}
|
|
174
179
|
export declare class NotABrowserError extends Error {
|
|
175
180
|
constructor();
|
|
176
181
|
}
|
|
182
|
+
export declare class SurfsideAdsDisabledError extends Error {
|
|
183
|
+
constructor();
|
|
184
|
+
}
|
|
185
|
+
export declare class LocationExcludedError extends Error {
|
|
186
|
+
constructor(locationId: string);
|
|
187
|
+
}
|
|
188
|
+
export declare class ZoneExcludedError extends Error {
|
|
189
|
+
constructor(zoneId: string);
|
|
190
|
+
}
|
|
191
|
+
export declare class MissingConfigurationError extends Error {
|
|
192
|
+
constructor(accountId: string, siteId: string);
|
|
193
|
+
}
|
package/lib/types/BuildInfo.d.ts
CHANGED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { type ISurfsideApi } from './Api';
|
|
2
|
+
import Handlebars from 'handlebars/runtime';
|
|
3
|
+
import { type BuildAllSponsoredProductCardResponsesFn, type GenerateSponsoredProductCardResponseFn, type HandlebarsHelpers, type RequestBuilderFn } from './helpers';
|
|
4
|
+
import { type IDevice, type ICompiledPublisherConfiguration, type IGeoContext, type INativeTemplateDelegateWindow } from './models';
|
|
5
|
+
import { type RequestBidsFn, type GetAllSponsoredProductFromNativeIdFn, type GetRecommendedProductFromProductIdFn, type NonPersonalRecommenderFn, type PersonalRecommenderFn, type GetDynamicZoneFn, type EvaluateProductCardTemplateFn, type EvaluateClickthroughTemplateFn, type IProductTrackerService, type ILogger, type ITelemetryCollector, type IScreen, type INavigator, type Result, type AsyncResult } from './services';
|
|
6
|
+
import { type MapCategoriesFn } from './services/Category';
|
|
7
|
+
export type OverrideFactory<T, U = ISurfAdsCoreConfiguration> = (config: U, original: T) => Result<T>;
|
|
8
|
+
export interface ISurfAdsCoreConfigurationOverrides {
|
|
9
|
+
mapCategories: OverrideFactory<(categories: string[]) => string[]>;
|
|
10
|
+
generateCategories: OverrideFactory<MapCategoriesFn>;
|
|
11
|
+
requestBids: OverrideFactory<RequestBidsFn>;
|
|
12
|
+
getAllSponsoredProducts: OverrideFactory<GetAllSponsoredProductFromNativeIdFn>;
|
|
13
|
+
getAllSponsoredBrandProducts: OverrideFactory<GetAllSponsoredProductFromNativeIdFn>;
|
|
14
|
+
getRecommendedProduct: OverrideFactory<GetRecommendedProductFromProductIdFn>;
|
|
15
|
+
generateTopProducts: OverrideFactory<NonPersonalRecommenderFn>;
|
|
16
|
+
generateForYou: OverrideFactory<PersonalRecommenderFn>;
|
|
17
|
+
generatePreviousPurchases: OverrideFactory<PersonalRecommenderFn>;
|
|
18
|
+
getDynamicZone: OverrideFactory<GetDynamicZoneFn>;
|
|
19
|
+
buildAllSponsoredProductCardResponses: OverrideFactory<BuildAllSponsoredProductCardResponsesFn>;
|
|
20
|
+
generateSponsoredProductCardResponse: OverrideFactory<GenerateSponsoredProductCardResponseFn>;
|
|
21
|
+
evaluateProductCardTemplate: OverrideFactory<EvaluateProductCardTemplateFn>;
|
|
22
|
+
evaluateClickthroughTemplate: OverrideFactory<EvaluateClickthroughTemplateFn>;
|
|
23
|
+
startRequest: (config: ISurfAdsCoreConfiguration, startRequest: RequestBuilderFn) => Result<RequestBuilderFn>;
|
|
24
|
+
trackerService: OverrideFactory<IProductTrackerService>;
|
|
25
|
+
createTelemetryCollector: OverrideFactory<ITelemetryCollector | undefined, Omit<ISurfAdsCoreConfiguration, 'geo' | 'handlebars' | 'configuration' | 'logger'>>;
|
|
26
|
+
}
|
|
27
|
+
export interface ISurfAdsCoreConfiguration extends ISurfAdsCoreDependencies {
|
|
28
|
+
windowInfo: INativeTemplateDelegateWindow;
|
|
29
|
+
screen: IScreen;
|
|
30
|
+
navigator: INavigator;
|
|
31
|
+
mobile: boolean;
|
|
32
|
+
ip: string | undefined;
|
|
33
|
+
accountId: string;
|
|
34
|
+
siteId: string;
|
|
35
|
+
channelId: string;
|
|
36
|
+
locationId: string;
|
|
37
|
+
userId: string | undefined;
|
|
38
|
+
overrides?: {
|
|
39
|
+
services?: Partial<ISurfAdsCoreConfigurationOverrides>;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export declare function CreateSurfAdsCore(config: ISurfAdsCoreConfiguration): Result<ISurfsideApi>;
|
|
43
|
+
export interface ILoadSurfAdsCoreConfiguration {
|
|
44
|
+
logger?: ILogger;
|
|
45
|
+
windowInfo: INativeTemplateDelegateWindow;
|
|
46
|
+
screen: IScreen;
|
|
47
|
+
navigator: INavigator;
|
|
48
|
+
mobile: boolean;
|
|
49
|
+
ip: string | undefined;
|
|
50
|
+
accountId: string;
|
|
51
|
+
siteId: string;
|
|
52
|
+
channelId: string;
|
|
53
|
+
locationId: string;
|
|
54
|
+
userId: string | undefined;
|
|
55
|
+
telemetry?: boolean;
|
|
56
|
+
overrides?: {
|
|
57
|
+
services?: Partial<ISurfAdsCoreConfigurationOverrides>;
|
|
58
|
+
dependencies?: Partial<ISurfAdsCoreDependencies>;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export interface ISurfAdsCoreDependencies {
|
|
62
|
+
handlebars: typeof Handlebars;
|
|
63
|
+
configuration: ICompiledPublisherConfiguration;
|
|
64
|
+
geo: IGeoContext | undefined;
|
|
65
|
+
device: IDevice | undefined;
|
|
66
|
+
logger: ILogger | undefined;
|
|
67
|
+
}
|
|
68
|
+
export declare const LoadSurfAdsCoreHandlebarsDependencies: (logger: ILogger | undefined, windowInfo: INativeTemplateDelegateWindow) => [typeof Handlebars, HandlebarsHelpers];
|
|
69
|
+
export interface ILoadSurfAdsCoreConfigurationDependenciesConfig {
|
|
70
|
+
logger: ILogger | undefined;
|
|
71
|
+
accountId: string;
|
|
72
|
+
siteId: string;
|
|
73
|
+
handlebars: typeof Handlebars;
|
|
74
|
+
handlebarsHelpers: HandlebarsHelpers;
|
|
75
|
+
overrides?: {
|
|
76
|
+
dependencies?: Partial<ISurfAdsCoreDependencies>;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export declare const LoadSurfAdsCoreConfigurationDependencies: (config: ILoadSurfAdsCoreConfigurationDependenciesConfig) => AsyncResult<ICompiledPublisherConfiguration>;
|
|
80
|
+
export interface ILoadSurfAdsCoreGeoDependenciesConfig {
|
|
81
|
+
logger: ILogger | undefined;
|
|
82
|
+
overrides?: {
|
|
83
|
+
dependencies?: Partial<ISurfAdsCoreDependencies>;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
export declare const LoadSurfAdsCoreGeoDependencies: (config: ILoadSurfAdsCoreGeoDependenciesConfig) => AsyncResult<IGeoContext>;
|
|
87
|
+
export interface ILoadSurfAdsCoreDeviceDependenciesConfig {
|
|
88
|
+
logger: ILogger | undefined;
|
|
89
|
+
screen: IScreen;
|
|
90
|
+
navigator: INavigator;
|
|
91
|
+
mobile: boolean;
|
|
92
|
+
overrides?: {
|
|
93
|
+
dependencies?: Partial<ISurfAdsCoreDependencies>;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
export declare const LoadSurfAdsCoreDeviceDependencies: (config: ILoadSurfAdsCoreDeviceDependenciesConfig) => IDevice | undefined;
|
|
97
|
+
export declare const LoadSurfAdsCoreDependencies: (config: ILoadSurfAdsCoreConfiguration) => AsyncResult<ISurfAdsCoreDependencies>;
|
|
98
|
+
export declare const LoadSurfAdsCore: (config: ILoadSurfAdsCoreConfiguration) => AsyncResult<ISurfsideApi>;
|
|
99
|
+
export declare const LoadAdsCoreBrowser: (accountId: string, channelId: string, siteId: string, locationId: string, userId?: string, logger?: ILogger) => AsyncResult<ISurfsideApi>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type IApp, type IBanner, type IBidRequest, type IDevice, type IGeoContext, type IImp, type INative, type INativeRequest, type IRegs, type ISite, type IUser, type IVideo } from '../models';
|
|
2
2
|
import { type ILogger } from '../services';
|
|
3
3
|
import { type NativeRequestBuilder } from './NativeRequestBuilder';
|
|
4
|
-
import { type
|
|
4
|
+
import { type MapCategoriesFn } from '../services/Category';
|
|
5
5
|
export type RequestBuilderFn = (zoneId: string, id?: string) => RequestBuilder;
|
|
6
6
|
export type RequestWith<T> = (t: T) => RequestBuilder;
|
|
7
7
|
export type RequestBuilder = {
|
|
@@ -17,6 +17,13 @@ export type RequestBuilder = {
|
|
|
17
17
|
withNatives: (requests: (string | INativeRequest)[], options?: Partial<INative>, impOptions?: Partial<IImp>) => RequestBuilder;
|
|
18
18
|
withNativeCopies: (request: string | INativeRequest, n: number, options?: Partial<INative>, impOptions?: Partial<IImp>) => RequestBuilder;
|
|
19
19
|
withProductCards: (nativeBuilder: NativeRequestBuilder, options?: Partial<INative>, impOptions?: Partial<IImp>) => RequestBuilder;
|
|
20
|
+
withImp: (zoneId: string, imp?: Partial<IImp>) => ImpressionRequestBuilder;
|
|
20
21
|
build: () => IBidRequest;
|
|
21
22
|
};
|
|
22
|
-
export
|
|
23
|
+
export type ImpressionRequestBuilder = RequestBuilder & {
|
|
24
|
+
andBanner: (w: number, h: number, options?: Partial<IBanner>) => ImpressionRequestBuilder;
|
|
25
|
+
andVideo: (w: number, h: number, minduration: number | undefined, maxduration: number, mimes?: string[], options?: Partial<IVideo>) => ImpressionRequestBuilder;
|
|
26
|
+
andNative: (request: string | INativeRequest, options?: Partial<INative>) => ImpressionRequestBuilder;
|
|
27
|
+
andProductCards: (nativeBuilder: NativeRequestBuilder, options?: Partial<INative>) => ImpressionRequestBuilder;
|
|
28
|
+
};
|
|
29
|
+
export declare function StartRequest(logger: ILogger | undefined, accountId: string, siteId: string, channelId: string, locationId: string, device: IDevice | undefined, geo: IGeoContext | undefined, userId: string | undefined, generateCategories: MapCategoriesFn, strictCategoryFiltering: boolean | undefined, zoneId: string, id?: string): RequestBuilder;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type IDevice } from '../models';
|
|
2
|
+
import { ITelemetryCollector, type ITelemetryDevice, type ITelemetryEntry } from '../services/Logger';
|
|
3
|
+
export interface ISSRTelemetryCollectorOptions {
|
|
4
|
+
accountId: string;
|
|
5
|
+
siteId: string;
|
|
6
|
+
channelId: string;
|
|
7
|
+
locationId: string;
|
|
8
|
+
endpoint: string;
|
|
9
|
+
tags?: Record<string, string>;
|
|
10
|
+
batchIntervalMs?: number;
|
|
11
|
+
url: string;
|
|
12
|
+
device?: ITelemetryDevice;
|
|
13
|
+
}
|
|
14
|
+
export declare const DeviceToTelemetryDevice: (device: IDevice | undefined) => ITelemetryDevice | undefined;
|
|
15
|
+
export declare class SSRTelemetryCollector extends ITelemetryCollector {
|
|
16
|
+
private readonly _endpoint;
|
|
17
|
+
private readonly _tags;
|
|
18
|
+
private readonly _batchIntervalMs;
|
|
19
|
+
private readonly _pageUrl;
|
|
20
|
+
private queue;
|
|
21
|
+
private flushTimer;
|
|
22
|
+
constructor(options: ISSRTelemetryCollectorOptions);
|
|
23
|
+
record(entry: ITelemetryEntry): void;
|
|
24
|
+
flush(): void;
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type Debouncer = ReturnType<typeof globalThis.setTimeout>;
|
|
@@ -1,7 +1,17 @@
|
|
|
1
|
+
import { NotABrowserError } from '../Api';
|
|
1
2
|
import { type INativeTemplateDelegateWindow } from '../models';
|
|
2
|
-
import { type Result } from '../services';
|
|
3
|
+
import { type INavigator, type IScreen, type Result } from '../services';
|
|
3
4
|
export declare const WindowFromUrl: (urlStr: string) => Result<INativeTemplateDelegateWindow>;
|
|
4
5
|
export declare const GetWindowInfo: () => Result<INativeTemplateDelegateWindow>;
|
|
6
|
+
export declare const GetNavigator: () => Result<INavigator>;
|
|
7
|
+
export declare const GetScreenInfo: () => Result<IScreen>;
|
|
8
|
+
export declare const GetBrowserInfo: () => Result<{
|
|
9
|
+
windowInfo: INativeTemplateDelegateWindow;
|
|
10
|
+
navigator: INavigator;
|
|
11
|
+
isMobile: boolean;
|
|
12
|
+
screen: IScreen;
|
|
13
|
+
}>;
|
|
14
|
+
export declare const IsMobile: () => import("../services").ErrResult<NotABrowserError> | import("../services").OkResult<boolean>;
|
|
5
15
|
export declare class NotAUrlError extends Error {
|
|
6
16
|
url: string;
|
|
7
17
|
constructor(url: string);
|
|
@@ -2,7 +2,9 @@ export * from './NativeRequestBuilder';
|
|
|
2
2
|
export * from './RequestBuilder';
|
|
3
3
|
export * from './response';
|
|
4
4
|
export * from './Handlebars';
|
|
5
|
+
export * from './TelemetryCollector';
|
|
5
6
|
export * from './TryGet';
|
|
6
7
|
export * from './Window';
|
|
7
8
|
export * from './Generator';
|
|
8
9
|
export * from './Functions';
|
|
10
|
+
export * from './Types';
|
|
@@ -5,7 +5,7 @@ import { type IProductTrackerService } from '../../services/Tracker';
|
|
|
5
5
|
import type { GenerateSponsoredProductCardResponseFn, IBuiltProductCardResponse } from './ProductCard';
|
|
6
6
|
export type BuildSponsoredCarouselFn = (request: IBidRequest) => Result<IBuiltCarousel>;
|
|
7
7
|
export type BuildSponsoredCarouselFromInitialBidFn = (request: IBidRequest, initialBid: IBid) => Result<IBuiltCarousel>;
|
|
8
|
-
export type BuildRecommendedCarouselFn = (RecommenderType: PublicRecommenderType) => Result<IBuiltCarousel>;
|
|
8
|
+
export type BuildRecommendedCarouselFn = (RecommenderType: PublicRecommenderType, category?: string) => Result<IBuiltCarousel>;
|
|
9
9
|
export type BuildHybridCarouselFn = (recommenderType: PublicRecommenderType, request: IBidRequest) => Result<IBuiltCarousel>;
|
|
10
10
|
export type BuildHybridCarouselFromInitialBidFn = (RecommenderType: PublicRecommenderType, request: IBidRequest, initialBid: IBid) => Result<IBuiltCarousel>;
|
|
11
11
|
export type CarouselNextProductFn = () => AsyncGenerator<IBuiltProductCardResponse>;
|
|
@@ -43,9 +43,9 @@ export interface IPastPurchasesProductRecommender {
|
|
|
43
43
|
export type ProductRecommender = ITopProductRecommender | IForYouProductRecommender | IPastPurchasesProductRecommender;
|
|
44
44
|
export declare const BuildSponsoredCarousel: (logger: ILogger | undefined, requestBids: RequestBidsFn, generateProductCardResponse: GenerateSponsoredProductCardResponseFn, request: IBidRequest) => Result<IBuiltCarousel>;
|
|
45
45
|
export declare const BuildSponsoredCarouselFromInitialBid: (logger: ILogger | undefined, requestBids: RequestBidsFn, generateProductCardResponse: GenerateSponsoredProductCardResponseFn, request: IBidRequest, initialBid: IBid) => Result<IBuiltCarousel>;
|
|
46
|
-
export declare const BuildRecommendedCarousel: (logger: ILogger | undefined, evaluateClickthroughTemplate: EvaluateClickthroughTemplateFn, topProductGenerator: NonPersonalRecommenderFn, forYouProductGenerator: PersonalRecommenderFn, pastPurchasesProductGenerator: PersonalRecommenderFn, userId: string | undefined, trackers: IProductTrackerService, recommenderType: PublicRecommenderType) => Result<IBuiltCarousel>;
|
|
47
|
-
export declare const BuildHybridCarousel: (logger: ILogger | undefined, evaluateClickthroughTemplate: EvaluateClickthroughTemplateFn, requestBids: RequestBidsFn, generateProductCardResponse: GenerateSponsoredProductCardResponseFn, topProductGenerator: NonPersonalRecommenderFn, forYouProductGenerator: PersonalRecommenderFn, pastPurchasesProductGenerator: PersonalRecommenderFn, userId: string | undefined, trackers: IProductTrackerService, recommenderType: PublicRecommenderType, request: IBidRequest) => Result<IBuiltCarousel>;
|
|
48
|
-
export declare const BuildHybridCarouselFromInitialBid: (logger: ILogger | undefined, evaluateClickthroughTemplate: EvaluateClickthroughTemplateFn, requestBids: RequestBidsFn, generateProductCardResponse: GenerateSponsoredProductCardResponseFn, topProductGenerator: NonPersonalRecommenderFn, forYouProductGenerator: PersonalRecommenderFn, pastPurchasesProductGenerator: PersonalRecommenderFn, userId: string | undefined, trackers: IProductTrackerService, recommenderType: PublicRecommenderType, request: IBidRequest, initialBid: IBid) => Result<IBuiltCarousel>;
|
|
46
|
+
export declare const BuildRecommendedCarousel: (logger: ILogger | undefined, evaluateClickthroughTemplate: EvaluateClickthroughTemplateFn, topProductGenerator: NonPersonalRecommenderFn, forYouProductGenerator: PersonalRecommenderFn, pastPurchasesProductGenerator: PersonalRecommenderFn, userId: string | undefined, trackers: IProductTrackerService, recommenderType: PublicRecommenderType, category?: string) => Result<IBuiltCarousel>;
|
|
47
|
+
export declare const BuildHybridCarousel: (logger: ILogger | undefined, evaluateClickthroughTemplate: EvaluateClickthroughTemplateFn, requestBids: RequestBidsFn, generateProductCardResponse: GenerateSponsoredProductCardResponseFn, topProductGenerator: NonPersonalRecommenderFn, forYouProductGenerator: PersonalRecommenderFn, pastPurchasesProductGenerator: PersonalRecommenderFn, userId: string | undefined, trackers: IProductTrackerService, excludedZones: string[] | undefined, recommenderType: PublicRecommenderType, request: IBidRequest) => Result<IBuiltCarousel>;
|
|
48
|
+
export declare const BuildHybridCarouselFromInitialBid: (logger: ILogger | undefined, evaluateClickthroughTemplate: EvaluateClickthroughTemplateFn, requestBids: RequestBidsFn, generateProductCardResponse: GenerateSponsoredProductCardResponseFn, topProductGenerator: NonPersonalRecommenderFn, forYouProductGenerator: PersonalRecommenderFn, pastPurchasesProductGenerator: PersonalRecommenderFn, userId: string | undefined, trackers: IProductTrackerService, excludedZones: string[] | undefined, recommenderType: PublicRecommenderType, request: IBidRequest, initialBid: IBid) => Result<IBuiltCarousel>;
|
|
49
49
|
export declare class InvalidRecommenderTypeError extends Error {
|
|
50
50
|
type: string;
|
|
51
51
|
constructor(type: string);
|
package/lib/types/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export interface ICompiledCategoryGlobalConfigDTO {
|
|
|
4
4
|
globalPatterns: string[];
|
|
5
5
|
}
|
|
6
6
|
export interface ICompiledCategoryPublisherConfigurationDTO {
|
|
7
|
-
|
|
7
|
+
strategy: CategoryStrategy;
|
|
8
8
|
customCanonicalMap: Record<string, string>;
|
|
9
9
|
customPatterns: string[];
|
|
10
10
|
}
|
|
@@ -32,6 +32,7 @@ export interface IPublisherConfiguration {
|
|
|
32
32
|
carouselStyleSheet?: string;
|
|
33
33
|
reAuctionEnabled?: boolean;
|
|
34
34
|
reAuctionInterval?: number;
|
|
35
|
+
brandTakeover?: Record<string, string[]>;
|
|
35
36
|
}
|
|
36
37
|
export interface ICompiledPublisherConfigurationTemplatesDTO {
|
|
37
38
|
productCardTemplate: string;
|
|
@@ -65,6 +66,10 @@ export interface ICompiledPublisherConfigurationSettingsDTO {
|
|
|
65
66
|
sponsoredByEnabled?: boolean;
|
|
66
67
|
defaultImage?: string;
|
|
67
68
|
strictCategoryMatching?: boolean;
|
|
69
|
+
disableSurfsideAds?: boolean;
|
|
70
|
+
excludedLocations?: string[];
|
|
71
|
+
excludedZones?: string[];
|
|
72
|
+
brandTakeover?: Record<string, string[]>;
|
|
68
73
|
}
|
|
69
74
|
export interface ICompiledPublisherConfigurationDTO {
|
|
70
75
|
templates: ICompiledPublisherConfigurationTemplatesDTO;
|
|
@@ -72,6 +77,11 @@ export interface ICompiledPublisherConfigurationDTO {
|
|
|
72
77
|
category: ICompiledCategoryPublisherConfigurationDTO;
|
|
73
78
|
dynamicZones?: Record<string, IDynamicZone>;
|
|
74
79
|
}
|
|
80
|
+
export interface ILoadedTemplateModules {
|
|
81
|
+
productCardTemplateRaw?: TemplateSpecification;
|
|
82
|
+
clickthroughTemplateRaw?: TemplateSpecification;
|
|
83
|
+
callbacks?: Callbacks;
|
|
84
|
+
}
|
|
75
85
|
export interface ICompiledPublisherConfiguration {
|
|
76
86
|
settings: ICompiledPublisherConfigurationSettingsDTO;
|
|
77
87
|
templates: ICompiledPublisherConfigurationTemplates;
|
|
@@ -229,7 +229,7 @@ export interface ISite {
|
|
|
229
229
|
}
|
|
230
230
|
export interface IDeal {
|
|
231
231
|
id: string;
|
|
232
|
-
bidfloor
|
|
232
|
+
bidfloor?: number;
|
|
233
233
|
bidfloorcur?: string;
|
|
234
234
|
at?: number;
|
|
235
235
|
wseat?: string[];
|
|
@@ -408,4 +408,7 @@ export interface ISurfExtension {
|
|
|
408
408
|
accountLocationId: string;
|
|
409
409
|
surfCategory: string[];
|
|
410
410
|
keywords?: string[];
|
|
411
|
+
publisherConfig?: string;
|
|
412
|
+
bcreatives?: number[];
|
|
413
|
+
bplacements?: number[];
|
|
411
414
|
}
|
|
@@ -1,8 +1,21 @@
|
|
|
1
|
-
import type { IBidRequest, IBidResponse } from '../models';
|
|
1
|
+
import type { IBidRequest, IBidResponse, ICompiledPublisherConfiguration, INativeTemplateDelegateWindow } from '../models';
|
|
2
2
|
import { type ILogger } from './Logger';
|
|
3
|
-
import { type AsyncResult } from './Result';
|
|
3
|
+
import { type AsyncResult, type ErrResult, type Result } from './Result';
|
|
4
4
|
export type RequestBidsFn = (request: IBidRequest) => AsyncResult<IBidResponse>;
|
|
5
|
-
export declare const RequestBids: (logger: ILogger | undefined, url: string, accountId: string, siteId: string, locationId: string, channelId: string, bidRequest: IBidRequest) => AsyncResult<IBidResponse>;
|
|
5
|
+
export declare const RequestBids: (logger: ILogger | undefined, url: string, accountId: string, siteId: string, locationId: string, channelId: string, excludedZones: string[] | undefined, bidRequest: IBidRequest) => AsyncResult<IBidResponse>;
|
|
6
|
+
export declare class StatefulRequestBidsSubscriber {
|
|
7
|
+
private _log;
|
|
8
|
+
private _requestBids;
|
|
9
|
+
private _bounce?;
|
|
10
|
+
private _resolvers;
|
|
11
|
+
private _requestToImpIdMap;
|
|
12
|
+
private _request;
|
|
13
|
+
constructor(_log: ILogger | undefined, _requestBids: RequestBidsFn);
|
|
14
|
+
kill(err: ErrResult): void;
|
|
15
|
+
debounce(bidRequest: IBidRequest, res: (value: Result<IBidResponse>) => void): void;
|
|
16
|
+
}
|
|
17
|
+
export declare const DebounceBidRequests: (state: StatefulRequestBidsSubscriber) => (bidRequest: IBidRequest) => AsyncResult<IBidResponse>;
|
|
18
|
+
export declare const WrapBidRequestDebouncerIfEnabled: (logger: ILogger | undefined, config: ICompiledPublisherConfiguration, window: INativeTemplateDelegateWindow, requestBids: RequestBidsFn) => RequestBidsFn;
|
|
6
19
|
export declare class NoBidsError extends Error {
|
|
7
20
|
readonly request: IBidRequest;
|
|
8
21
|
readonly response?: Response | undefined;
|
|
@@ -29,3 +42,6 @@ export declare class MalformedBidResponseError extends Error {
|
|
|
29
42
|
readonly bidResponse: unknown;
|
|
30
43
|
constructor(request: IBidRequest, response: Response, bidResponse: unknown);
|
|
31
44
|
}
|
|
45
|
+
export declare class MissingBidRequestInDebouncerError extends Error {
|
|
46
|
+
constructor();
|
|
47
|
+
}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import { type ICompiledCategoryPublisherConfiguration } from '../models/retail/Category';
|
|
2
2
|
import { type ILogger } from './Logger';
|
|
3
|
-
export type
|
|
3
|
+
export type MapCategoriesFn = (providedCategories: string[]) => string[];
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Use MapCategoriesFn
|
|
6
|
+
*/
|
|
7
|
+
export type GenerateCategoriesFn = MapCategoriesFn;
|
|
8
|
+
export declare const MapCategories: (logger: ILogger | undefined, providedCategories: string[], page: string, categoryConfig: ICompiledCategoryPublisherConfiguration) => string[];
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated Use MapCategories
|
|
11
|
+
*/
|
|
4
12
|
export declare const GenerateCategories: (logger: ILogger | undefined, providedCategories: string[], page: string, categoryConfig: ICompiledCategoryPublisherConfiguration) => string[];
|
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
import type Handlebars from 'handlebars/runtime';
|
|
2
|
-
import type { ICompiledPublisherConfiguration } from '../models';
|
|
3
|
-
import { type AsyncResult, type ILogger } from '.';
|
|
2
|
+
import type { ICompiledPublisherConfiguration, ICompiledPublisherConfigurationDTO, ILoadedTemplateModules } from '../models';
|
|
3
|
+
import { type AsyncResult, type ILogger, type Result } from '.';
|
|
4
4
|
import { type HandlebarsHelpers } from '../helpers';
|
|
5
|
+
import { type ICompiledCategoryGlobalConfigDTO, type ICompiledCategoryPublisherConfiguration, type ICompiledCategoryPublisherConfigurationDTO } from '../models/retail/Category';
|
|
5
6
|
export type GetConfigurationFn = () => AsyncResult<ICompiledPublisherConfiguration>;
|
|
6
7
|
export declare const GetConfiguration: (logger: ILogger | undefined, url: string, handlebars: typeof Handlebars, helpers: HandlebarsHelpers, accountId: string, siteId: string) => AsyncResult<ICompiledPublisherConfiguration>;
|
|
8
|
+
export declare const LoadConfigurationFile: (logger: ILogger | undefined, accountId: string, siteId: string) => AsyncResult<ICompiledPublisherConfigurationDTO>;
|
|
9
|
+
export declare const LoadConfigurationTemplateModules: (logger: ILogger | undefined, configurationDto: ICompiledPublisherConfigurationDTO) => AsyncResult<ILoadedTemplateModules>;
|
|
10
|
+
export declare const CreateCompiledConfiguration: (logger: ILogger | undefined, loadedTemplateModules: ILoadedTemplateModules, configurationDto: ICompiledPublisherConfigurationDTO, handlebars: typeof Handlebars, handlebarsHelpers: HandlebarsHelpers, globalCategories: ICompiledCategoryGlobalConfigDTO) => Result<ICompiledPublisherConfiguration>;
|
|
11
|
+
export declare const LoadCompiledConfiguration: (logger: ILogger | undefined, configurationDto: ICompiledPublisherConfigurationDTO, handlebars: typeof Handlebars, handlebarsHelpers: HandlebarsHelpers) => AsyncResult<Omit<ICompiledPublisherConfiguration, "category">>;
|
|
12
|
+
export declare const CreateCategoryConfiguration: (logger: ILogger | undefined, globalCategories: ICompiledCategoryGlobalConfigDTO, publisherCategories: ICompiledCategoryPublisherConfigurationDTO | undefined) => Result<ICompiledCategoryPublisherConfiguration>;
|
|
13
|
+
export declare const LoadGlobalCategoryConfiguration: (logger: ILogger | undefined) => AsyncResult<ICompiledCategoryGlobalConfigDTO>;
|
|
14
|
+
export declare const LoadConfiguration: (logger: ILogger | undefined, accountId: string, siteId: string, handlebars: typeof Handlebars, handlebarsHelpers: HandlebarsHelpers) => AsyncResult<ICompiledPublisherConfiguration>;
|
|
15
|
+
export declare class FailedToFetchConfigurationError extends Error {
|
|
16
|
+
accountId: string;
|
|
17
|
+
siteId: string;
|
|
18
|
+
constructor(accountId: string, siteId: string);
|
|
19
|
+
}
|
|
20
|
+
export declare class MalformedConfigurationError extends Error {
|
|
21
|
+
accountId: string;
|
|
22
|
+
siteId: string;
|
|
23
|
+
constructor(accountId: string, siteId: string);
|
|
24
|
+
}
|
|
25
|
+
export declare class FailedToFetchGlobalCategoryConfigurationError extends Error {
|
|
26
|
+
constructor();
|
|
27
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { ZoneExcludedError } from '../Api';
|
|
2
|
+
import type { ImpressionRequestBuilder, NativeRequestBuilderFn, RequestBuilder, RequestBuilderFn } from '../helpers';
|
|
2
3
|
import type { IBidRequest, ICompiledPublisherConfiguration } from '../models';
|
|
3
4
|
import { type DynamicCreative, type IDynamicZone, type IScreenSize } from '../models/dynamic/DynamicZone';
|
|
4
5
|
import type { IScreen } from './Device';
|
|
@@ -6,11 +7,12 @@ import { type ILogger } from './Logger';
|
|
|
6
7
|
import { type AsyncResult, type Result } from './Result';
|
|
7
8
|
export interface IDynamicZoneRequest {
|
|
8
9
|
request: IBidRequest;
|
|
10
|
+
/** @deprecated */
|
|
9
11
|
requestIds: Record<string, DynamicCreative>;
|
|
10
12
|
}
|
|
11
13
|
export type BuildDynamicZoneRequestFn = (zoneId: string, dynamicZone: IDynamicZone, category?: string[]) => Result<IDynamicZoneRequest>;
|
|
12
14
|
export type GetDynamicZoneFn = (zoneId: string) => AsyncResult<IDynamicZone>;
|
|
13
|
-
export declare const GetDynamicZone: (logger: ILogger | undefined, config: ICompiledPublisherConfiguration, zoneId: string) => Promise<import("./Result").ErrResult<
|
|
15
|
+
export declare const GetDynamicZone: (logger: ILogger | undefined, config: ICompiledPublisherConfiguration, zoneId: string) => Promise<import("./Result").ErrResult<ZoneExcludedError> | import("./Result").OkResult<IDynamicZone>>;
|
|
14
16
|
export declare const BuildDynamicZoneRequest: (logger: ILogger | undefined, startRequest: RequestBuilderFn, nativeRequest: NativeRequestBuilderFn, screenInfo: IScreen, zoneId: string, dynamicZone: IDynamicZone, category?: string[]) => Result<IDynamicZoneRequest>;
|
|
15
17
|
export declare class NoDynamicScreenSizeMatchError extends Error {
|
|
16
18
|
readonly dynamicZone: IDynamicZone;
|
|
@@ -19,7 +21,7 @@ export declare class NoDynamicScreenSizeMatchError extends Error {
|
|
|
19
21
|
constructor(dynamicZone: IDynamicZone, screenInfo: IScreen, selectedStringSize: string);
|
|
20
22
|
}
|
|
21
23
|
export declare const buildDynamicBidRequestFromSelectedScreenSize: (logger: ILogger | undefined, startRequest: RequestBuilderFn, nativeRequest: NativeRequestBuilderFn, zoneId: string, screenSize: IScreenSize, category?: string[]) => Result<IDynamicZoneRequest>;
|
|
22
|
-
export declare const buildDynamicBidRequestRecursive: (logger: ILogger | undefined, nativeRequest: NativeRequestBuilderFn, builder:
|
|
24
|
+
export declare const buildDynamicBidRequestRecursive: (logger: ILogger | undefined, nativeRequest: NativeRequestBuilderFn, builder: ImpressionRequestBuilder, requestIds: Record<string, DynamicCreative>, [head, ...tail]: DynamicCreative[]) => Result<[builder: RequestBuilder, /** @deprecated */ requestIds: Record<string, DynamicCreative>]>;
|
|
23
25
|
export declare class MissingDynamicZoneError extends Error {
|
|
24
26
|
readonly zoneId: string;
|
|
25
27
|
constructor(zoneId: string);
|
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
export type LoggerFn = (...args: any[]) => void;
|
|
2
|
-
export type ContextFn = (
|
|
2
|
+
export type ContextFn = (name: string | undefined, tags?: Record<string, string>) => IContextLogger;
|
|
3
|
+
export interface ITelemetryDevice {
|
|
4
|
+
ua?: string;
|
|
5
|
+
browser?: string;
|
|
6
|
+
os?: string;
|
|
7
|
+
osv?: string;
|
|
8
|
+
make?: string;
|
|
9
|
+
model?: string;
|
|
10
|
+
deviceType?: number;
|
|
11
|
+
screenW?: number;
|
|
12
|
+
screenH?: number;
|
|
13
|
+
language?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ITelemetryEntry {
|
|
16
|
+
name: string;
|
|
17
|
+
durationMs: number;
|
|
18
|
+
timestamp: number;
|
|
19
|
+
pageUrl?: string;
|
|
20
|
+
device?: ITelemetryDevice;
|
|
21
|
+
tags?: Record<string, string>;
|
|
22
|
+
}
|
|
23
|
+
export declare abstract class ITelemetryCollector {
|
|
24
|
+
protected readonly accountId: string;
|
|
25
|
+
protected readonly siteId: string;
|
|
26
|
+
protected readonly channelId: string;
|
|
27
|
+
protected readonly locationId: string;
|
|
28
|
+
protected readonly device: ITelemetryDevice | undefined;
|
|
29
|
+
constructor(accountId: string, siteId: string, channelId: string, locationId: string, device: ITelemetryDevice | undefined);
|
|
30
|
+
abstract record(entry: ITelemetryEntry): void;
|
|
31
|
+
}
|
|
3
32
|
export interface ILogger {
|
|
4
33
|
info: LoggerFn;
|
|
5
34
|
debug: LoggerFn;
|
|
@@ -9,6 +38,11 @@ export interface ILogger {
|
|
|
9
38
|
}
|
|
10
39
|
export interface IContextLogger extends ILogger {
|
|
11
40
|
with: ContextFn;
|
|
41
|
+
prefix?: string;
|
|
42
|
+
time?: (name: string) => () => void;
|
|
43
|
+
collector?: ITelemetryCollector;
|
|
12
44
|
}
|
|
13
45
|
export declare const InitLogger: (rich?: boolean) => IContextLogger;
|
|
14
|
-
export declare
|
|
46
|
+
export declare function CreateTelemetryLogger(logger: ILogger, telemetryCollector: ITelemetryCollector | undefined): IContextLogger;
|
|
47
|
+
export declare function Ctx(logger: ILogger): IContextLogger;
|
|
48
|
+
export declare function Ctx(logger: ILogger | undefined): IContextLogger | undefined;
|
|
@@ -4,8 +4,8 @@ import type { GetRecommendedProductFromProductIdFn } from './Product';
|
|
|
4
4
|
export type NonPersonalRecommenderFn = (category?: string) => AsyncGenerator<IProductInformation>;
|
|
5
5
|
export type PersonalRecommenderFn = (userId: string, category?: string) => AsyncGenerator<IProductInformation>;
|
|
6
6
|
export declare function GenerateTopProducts(logger: ILogger | undefined, productFeed: GetRecommendedProductFromProductIdFn, url: string, accountId: string, siteId: string, locationId: string, category?: string): AsyncGenerator<IProductInformation>;
|
|
7
|
-
export declare function GenerateForYou(logger: ILogger | undefined, productFeed: GetRecommendedProductFromProductIdFn, url: string, accountId: string, siteId: string, locationId: string, userId: string, category?: string): AsyncGenerator<IProductInformation>;
|
|
8
|
-
export declare function GeneratePreviousPurchases(logger: ILogger | undefined, productFeed: GetRecommendedProductFromProductIdFn, url: string, accountId: string, siteId: string, locationId: string, userId: string, category?: string): AsyncGenerator<IProductInformation>;
|
|
7
|
+
export declare function GenerateForYou(logger: ILogger | undefined, productFeed: GetRecommendedProductFromProductIdFn, url: string, accountId: string, siteId: string, locationId: string, userId: string | undefined, category?: string): AsyncGenerator<IProductInformation>;
|
|
8
|
+
export declare function GeneratePreviousPurchases(logger: ILogger | undefined, productFeed: GetRecommendedProductFromProductIdFn, url: string, accountId: string, siteId: string, locationId: string, userId: string | undefined, category?: string): AsyncGenerator<IProductInformation>;
|
|
9
9
|
export declare class NoRecommendationsError extends Error {
|
|
10
10
|
constructor();
|
|
11
11
|
}
|
|
@@ -18,6 +18,7 @@ export declare const GetValue: <T, E = Error>(result: Result<T, E> | undefined)
|
|
|
18
18
|
export declare const ValueOr: <T, E = Error, U = T>(result: Result<T, E> | undefined, or: U) => T | U;
|
|
19
19
|
export declare const GetValueOrThrow: <T>(result: Result<T, Error>, error?: Error) => T;
|
|
20
20
|
export declare const WrapValue: <T>(value: T | undefined | null) => Result<T>;
|
|
21
|
+
export declare const WrapValueAsync: <T>(value: T | undefined | null) => AsyncResult<T>;
|
|
21
22
|
export declare const AssertValue: <T>(result: Result<T, Error>, error?: Error) => T;
|
|
22
23
|
export declare const AllOrNone: <T>(results: Result<T, Error>[]) => Result<T[]>;
|
|
23
24
|
export declare const Some: <T>(results: Result<T, Error>[]) => OkResult<T[]>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@surfside/ads-core",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"module": "./lib/esm/index.js",
|
|
5
5
|
"main": "./lib/cjs/index.js",
|
|
6
6
|
"types": "./lib/types/index.d.ts",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
},
|
|
38
38
|
"scripts": {
|
|
39
39
|
"clean": "rm -rf ./lib",
|
|
40
|
-
"
|
|
41
|
-
"build": "
|
|
40
|
+
"build": "bun x npm-run-all --parallel \"types\" \"esm\" \"cjs\"",
|
|
41
|
+
"build:debug": "bun ./debug.build.ts",
|
|
42
42
|
"types": "tsc -p ./tsconfig.types.json",
|
|
43
43
|
"esm": "tsc -p ./tsconfig.esm.json",
|
|
44
44
|
"cjs": "tsc -p tsconfig.cjs.json",
|