@surfside/ads-core 2.0.22 → 2.3.0-0ff9dfa7.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/README.md +15 -15
- package/lib/cjs/Api.js +71 -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 +473 -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 +143 -25
- 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 +85 -0
- 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 +114 -25
- 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/Html.js +37 -0
- package/lib/cjs/helpers/response/Html.js.map +1 -0
- package/lib/cjs/helpers/response/ProductCard.js +10 -128
- package/lib/cjs/helpers/response/ProductCard.js.map +1 -1
- package/lib/cjs/helpers/response/Products.js +163 -0
- package/lib/cjs/helpers/response/Products.js.map +1 -0
- package/lib/cjs/helpers/response/Video.js +54 -0
- package/lib/cjs/helpers/response/Video.js.map +1 -1
- package/lib/cjs/helpers/response/index.js +59 -0
- 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 +34 -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 +186 -9
- 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 +82 -14
- 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 +70 -35
- 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 +454 -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 +143 -25
- 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 +81 -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 +112 -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/Html.js +33 -0
- package/lib/esm/helpers/response/Html.js.map +1 -0
- package/lib/esm/helpers/response/ProductCard.js +10 -128
- package/lib/esm/helpers/response/ProductCard.js.map +1 -1
- package/lib/esm/helpers/response/Products.js +158 -0
- package/lib/esm/helpers/response/Products.js.map +1 -0
- package/lib/esm/helpers/response/Video.js +51 -1
- package/lib/esm/helpers/response/Video.js.map +1 -1
- package/lib/esm/helpers/response/index.js +56 -0
- 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 +32 -0
- 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 +182 -9
- 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 +79 -13
- 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 +42 -18
- package/lib/types/BuildInfo.d.ts +1 -1
- package/lib/types/Init.d.ts +147 -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/Banner.d.ts +13 -0
- package/lib/types/helpers/response/Carousel.d.ts +14 -6
- package/lib/types/helpers/response/Html.d.ts +2 -0
- package/lib/types/helpers/response/Products.d.ts +8 -0
- package/lib/types/helpers/response/Video.d.ts +17 -2
- package/lib/types/helpers/response/index.d.ts +12 -0
- 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 +17 -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 +25 -2
- package/lib/types/services/Dynamic.d.ts +5 -3
- package/lib/types/services/Logger.d.ts +36 -2
- package/lib/types/services/Memo.d.ts +28 -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 +48 -47
|
@@ -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;
|
|
@@ -79,3 +89,10 @@ export interface ICompiledPublisherConfiguration {
|
|
|
79
89
|
dynamicZones?: Record<string, IDynamicZone>;
|
|
80
90
|
}
|
|
81
91
|
export declare const DefaultProductCallbackExtras: () => ProductCallbackExtras;
|
|
92
|
+
export declare class Configuration implements ICompiledPublisherConfiguration {
|
|
93
|
+
settings: ICompiledPublisherConfigurationSettingsDTO;
|
|
94
|
+
templates: ICompiledPublisherConfigurationTemplates;
|
|
95
|
+
category: ICompiledCategoryPublisherConfiguration;
|
|
96
|
+
dynamicZones?: Record<string, IDynamicZone> | undefined;
|
|
97
|
+
constructor(overrides?: Partial<ICompiledPublisherConfiguration>);
|
|
98
|
+
}
|
|
@@ -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,29 @@
|
|
|
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 type LoadConfigurationFileFn = (accountId: string, siteId: string) => AsyncResult<ICompiledPublisherConfigurationDTO>;
|
|
9
|
+
export declare const LoadConfigurationFile: (logger: ILogger | undefined, accountId: string, siteId: string) => AsyncResult<ICompiledPublisherConfigurationDTO>;
|
|
10
|
+
export declare const LoadConfigurationTemplateModules: (logger: ILogger | undefined, configurationDto: ICompiledPublisherConfigurationDTO) => AsyncResult<ILoadedTemplateModules>;
|
|
11
|
+
export declare const CreateCompiledConfiguration: (logger: ILogger | undefined, loadedTemplateModules: ILoadedTemplateModules, configurationDto: ICompiledPublisherConfigurationDTO, handlebars: typeof Handlebars, handlebarsHelpers: HandlebarsHelpers, globalCategories: ICompiledCategoryGlobalConfigDTO) => Result<ICompiledPublisherConfiguration>;
|
|
12
|
+
export declare const LoadCompiledConfiguration: (logger: ILogger | undefined, configurationDto: ICompiledPublisherConfigurationDTO, handlebars: typeof Handlebars, handlebarsHelpers: HandlebarsHelpers) => AsyncResult<Omit<ICompiledPublisherConfiguration, "category">>;
|
|
13
|
+
export declare const CreateCategoryConfiguration: (logger: ILogger | undefined, globalCategories: ICompiledCategoryGlobalConfigDTO, publisherCategories: ICompiledCategoryPublisherConfigurationDTO | undefined) => Result<ICompiledCategoryPublisherConfiguration>;
|
|
14
|
+
export type LoadGlobalCategoryConfigurationFn = () => AsyncResult<ICompiledCategoryGlobalConfigDTO>;
|
|
15
|
+
export declare const LoadGlobalCategoryConfiguration: (logger: ILogger | undefined) => AsyncResult<ICompiledCategoryGlobalConfigDTO>;
|
|
16
|
+
export declare const LoadConfiguration: (logger: ILogger | undefined, accountId: string, siteId: string, handlebars: typeof Handlebars, handlebarsHelpers: HandlebarsHelpers) => AsyncResult<ICompiledPublisherConfiguration>;
|
|
17
|
+
export declare class FailedToFetchConfigurationError extends Error {
|
|
18
|
+
accountId: string;
|
|
19
|
+
siteId: string;
|
|
20
|
+
constructor(accountId: string, siteId: string);
|
|
21
|
+
}
|
|
22
|
+
export declare class MalformedConfigurationError extends Error {
|
|
23
|
+
accountId: string;
|
|
24
|
+
siteId: string;
|
|
25
|
+
constructor(accountId: string, siteId: string);
|
|
26
|
+
}
|
|
27
|
+
export declare class FailedToFetchGlobalCategoryConfigurationError extends Error {
|
|
28
|
+
constructor();
|
|
29
|
+
}
|
|
@@ -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;
|
|
@@ -1,2 +1,28 @@
|
|
|
1
|
-
export declare const Memoize: <TArgs extends readonly unknown[], TReturn>(fn: (...args: TArgs) => TReturn
|
|
2
|
-
|
|
1
|
+
export declare const Memoize: <TArgs extends readonly unknown[], TReturn>(fn: (...args: TArgs) => TReturn, { minutes, hours, seconds, milliseconds, cache }?: Partial<{
|
|
2
|
+
minutes: number;
|
|
3
|
+
hours: number;
|
|
4
|
+
seconds: number;
|
|
5
|
+
milliseconds: number;
|
|
6
|
+
cache: Map<string, [last: number, value: TReturn]>;
|
|
7
|
+
}>) => (...args: TArgs) => TReturn;
|
|
8
|
+
export declare const MemoizeAsync: <TArgs extends readonly unknown[], TReturn>(fn: (...args: TArgs) => Promise<TReturn>, { minutes, hours, seconds, milliseconds, cache }?: Partial<{
|
|
9
|
+
minutes: number;
|
|
10
|
+
hours: number;
|
|
11
|
+
seconds: number;
|
|
12
|
+
milliseconds: number;
|
|
13
|
+
cache: Map<string, [last: number, value: Promise<TReturn>]>;
|
|
14
|
+
}>) => (...args: TArgs) => Promise<TReturn>;
|
|
15
|
+
export declare const Cache: <TArgs extends readonly unknown[], TReturn>(fn: (...args: TArgs) => TReturn, { minutes, hours, seconds, milliseconds, cache }: Partial<{
|
|
16
|
+
minutes: number;
|
|
17
|
+
hours: number;
|
|
18
|
+
seconds: number;
|
|
19
|
+
milliseconds: number;
|
|
20
|
+
cache: [last: number, value: TReturn];
|
|
21
|
+
}>) => (...args: TArgs) => TReturn;
|
|
22
|
+
export declare const CacheAsync: <TArgs extends readonly unknown[], TReturn>(fn: (...args: TArgs) => Promise<TReturn>, { minutes, hours, seconds, milliseconds, cache }: Partial<{
|
|
23
|
+
minutes: number;
|
|
24
|
+
hours: number;
|
|
25
|
+
seconds: number;
|
|
26
|
+
milliseconds: number;
|
|
27
|
+
cache: [last: number, value: Promise<TReturn>];
|
|
28
|
+
}>) => (...args: TArgs) => Promise<TReturn>;
|
|
@@ -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,47 +1,48 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@surfside/ads-core",
|
|
3
|
-
"version": "2.0.
|
|
4
|
-
"module": "./lib/esm/index.js",
|
|
5
|
-
"main": "./lib/cjs/index.js",
|
|
6
|
-
"types": "./lib/types/index.d.ts",
|
|
7
|
-
"exports": {
|
|
8
|
-
".": {
|
|
9
|
-
"import": "./lib/esm/index.js",
|
|
10
|
-
"require": "./lib/cjs/index.js",
|
|
11
|
-
"types": "./lib/types/index.d.ts"
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"license": "UNLICENSED",
|
|
15
|
-
"type": "module",
|
|
16
|
-
"files": [
|
|
17
|
-
"lib/",
|
|
18
|
-
"README.md"
|
|
19
|
-
],
|
|
20
|
-
"devDependencies": {
|
|
21
|
-
"@eslint/js": "^9.25.1",
|
|
22
|
-
"@types/bun": "latest",
|
|
23
|
-
"@types/handlebars": "^4.1.0",
|
|
24
|
-
"@types/jest": "^29.5.14",
|
|
25
|
-
"eslint": "^9.25.1",
|
|
26
|
-
"jest": "^29.7.0",
|
|
27
|
-
"npm-run-all": "^4.1.5",
|
|
28
|
-
"ts-jest": "^29.3.2",
|
|
29
|
-
"typedoc": "^0.28.5",
|
|
30
|
-
"typescript-eslint": "^8.41.0"
|
|
31
|
-
},
|
|
32
|
-
"peerDependencies": {
|
|
33
|
-
"typescript": "^5.8.3"
|
|
34
|
-
},
|
|
35
|
-
"dependencies": {
|
|
36
|
-
"handlebars": "^4.7.8"
|
|
37
|
-
},
|
|
38
|
-
"scripts": {
|
|
39
|
-
"clean": "rm -rf ./lib",
|
|
40
|
-
"
|
|
41
|
-
"build": "
|
|
42
|
-
"types": "tsc -p ./tsconfig.types.json",
|
|
43
|
-
"esm": "tsc -p ./tsconfig.esm.json",
|
|
44
|
-
"cjs": "tsc -p tsconfig.cjs.json",
|
|
45
|
-
"lint": "npx eslint"
|
|
46
|
-
|
|
47
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@surfside/ads-core",
|
|
3
|
+
"version": "2.3.0-0ff9dfa7.0",
|
|
4
|
+
"module": "./lib/esm/index.js",
|
|
5
|
+
"main": "./lib/cjs/index.js",
|
|
6
|
+
"types": "./lib/types/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./lib/esm/index.js",
|
|
10
|
+
"require": "./lib/cjs/index.js",
|
|
11
|
+
"types": "./lib/types/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"license": "UNLICENSED",
|
|
15
|
+
"type": "module",
|
|
16
|
+
"files": [
|
|
17
|
+
"lib/",
|
|
18
|
+
"README.md"
|
|
19
|
+
],
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@eslint/js": "^9.25.1",
|
|
22
|
+
"@types/bun": "latest",
|
|
23
|
+
"@types/handlebars": "^4.1.0",
|
|
24
|
+
"@types/jest": "^29.5.14",
|
|
25
|
+
"eslint": "^9.25.1",
|
|
26
|
+
"jest": "^29.7.0",
|
|
27
|
+
"npm-run-all": "^4.1.5",
|
|
28
|
+
"ts-jest": "^29.3.2",
|
|
29
|
+
"typedoc": "^0.28.5",
|
|
30
|
+
"typescript-eslint": "^8.41.0"
|
|
31
|
+
},
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"typescript": "^5.8.3"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"handlebars": "^4.7.8"
|
|
37
|
+
},
|
|
38
|
+
"scripts": {
|
|
39
|
+
"clean": "rm -rf ./lib",
|
|
40
|
+
"build": "bun x npm-run-all --parallel \"types\" \"esm\" \"cjs\"",
|
|
41
|
+
"build:debug": "bun ./debug.build.ts",
|
|
42
|
+
"types": "tsc -p ./tsconfig.types.json",
|
|
43
|
+
"esm": "tsc -p ./tsconfig.esm.json",
|
|
44
|
+
"cjs": "tsc -p tsconfig.cjs.json",
|
|
45
|
+
"lint": "npx eslint",
|
|
46
|
+
"test": "jest --config jest.config.cjs"
|
|
47
|
+
}
|
|
48
|
+
}
|