@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.
Files changed (208) hide show
  1. package/README.md +15 -15
  2. package/lib/cjs/Api.js +71 -33
  3. package/lib/cjs/Api.js.map +1 -1
  4. package/lib/cjs/BuildInfo.js +6 -2
  5. package/lib/cjs/BuildInfo.js.map +1 -1
  6. package/lib/cjs/Init.js +473 -0
  7. package/lib/cjs/Init.js.map +1 -0
  8. package/lib/cjs/helpers/Functions.js.map +1 -1
  9. package/lib/cjs/helpers/Generator.js.map +1 -1
  10. package/lib/cjs/helpers/Handlebars.js +5 -2
  11. package/lib/cjs/helpers/Handlebars.js.map +1 -1
  12. package/lib/cjs/helpers/NativeRequestBuilder.js.map +1 -1
  13. package/lib/cjs/helpers/RequestBuilder.js +143 -25
  14. package/lib/cjs/helpers/RequestBuilder.js.map +1 -1
  15. package/lib/cjs/helpers/TelemetryCollector.js +72 -0
  16. package/lib/cjs/helpers/TelemetryCollector.js.map +1 -0
  17. package/lib/cjs/helpers/TryGet.js.map +1 -1
  18. package/lib/cjs/helpers/Types.js +3 -0
  19. package/lib/cjs/helpers/Types.js.map +1 -0
  20. package/lib/cjs/helpers/Window.js +52 -11
  21. package/lib/cjs/helpers/Window.js.map +1 -1
  22. package/lib/cjs/helpers/index.js +2 -0
  23. package/lib/cjs/helpers/index.js.map +1 -1
  24. package/lib/cjs/helpers/response/Banner.js +85 -0
  25. package/lib/cjs/helpers/response/Banner.js.map +1 -1
  26. package/lib/cjs/helpers/response/BuiltResponse.js.map +1 -1
  27. package/lib/cjs/helpers/response/Carousel.js +114 -25
  28. package/lib/cjs/helpers/response/Carousel.js.map +1 -1
  29. package/lib/cjs/helpers/response/Clickthrough.js.map +1 -1
  30. package/lib/cjs/helpers/response/Html.js +37 -0
  31. package/lib/cjs/helpers/response/Html.js.map +1 -0
  32. package/lib/cjs/helpers/response/ProductCard.js +10 -128
  33. package/lib/cjs/helpers/response/ProductCard.js.map +1 -1
  34. package/lib/cjs/helpers/response/Products.js +163 -0
  35. package/lib/cjs/helpers/response/Products.js.map +1 -0
  36. package/lib/cjs/helpers/response/Video.js +54 -0
  37. package/lib/cjs/helpers/response/Video.js.map +1 -1
  38. package/lib/cjs/helpers/response/index.js +59 -0
  39. package/lib/cjs/helpers/response/index.js.map +1 -1
  40. package/lib/cjs/index.js +25 -1
  41. package/lib/cjs/index.js.map +1 -1
  42. package/lib/cjs/models/dynamic/DynamicZone.js.map +1 -1
  43. package/lib/cjs/models/dynamic/index.js.map +1 -1
  44. package/lib/cjs/models/index.js.map +1 -1
  45. package/lib/cjs/models/retail/Category.js.map +1 -1
  46. package/lib/cjs/models/retail/Configuration.js +34 -1
  47. package/lib/cjs/models/retail/Configuration.js.map +1 -1
  48. package/lib/cjs/models/retail/Product.js.map +1 -1
  49. package/lib/cjs/models/retail/Recommended.js.map +1 -1
  50. package/lib/cjs/models/retail/index.js +1 -0
  51. package/lib/cjs/models/retail/index.js.map +1 -1
  52. package/lib/cjs/models/rtb/BidRequest.js.map +1 -1
  53. package/lib/cjs/models/rtb/BidResponse.js.map +1 -1
  54. package/lib/cjs/models/rtb/NativeRequest.js.map +1 -1
  55. package/lib/cjs/models/rtb/NativeResponse.js.map +1 -1
  56. package/lib/cjs/models/rtb/index.js.map +1 -1
  57. package/lib/cjs/models/tracking/Geo.js.map +1 -1
  58. package/lib/cjs/models/tracking/index.js.map +1 -1
  59. package/lib/cjs/models/vast/Vast.js.map +1 -1
  60. package/lib/cjs/models/vast/index.js.map +1 -1
  61. package/lib/cjs/services/Bidder.js +186 -9
  62. package/lib/cjs/services/Bidder.js.map +1 -1
  63. package/lib/cjs/services/BotFiltering.js.map +1 -1
  64. package/lib/cjs/services/Category.js +8 -4
  65. package/lib/cjs/services/Category.js.map +1 -1
  66. package/lib/cjs/services/Configuration.js +186 -5
  67. package/lib/cjs/services/Configuration.js.map +1 -1
  68. package/lib/cjs/services/Device.js +1 -1
  69. package/lib/cjs/services/Device.js.map +1 -1
  70. package/lib/cjs/services/Dynamic.js +9 -7
  71. package/lib/cjs/services/Dynamic.js.map +1 -1
  72. package/lib/cjs/services/Geo.js +5 -1
  73. package/lib/cjs/services/Geo.js.map +1 -1
  74. package/lib/cjs/services/Logger.js +82 -14
  75. package/lib/cjs/services/Logger.js.map +1 -1
  76. package/lib/cjs/services/Memo.js +82 -14
  77. package/lib/cjs/services/Memo.js.map +1 -1
  78. package/lib/cjs/services/Memoization.js +3 -0
  79. package/lib/cjs/services/Memoization.js.map +1 -1
  80. package/lib/cjs/services/Product.js +11 -5
  81. package/lib/cjs/services/Product.js.map +1 -1
  82. package/lib/cjs/services/Recommender.js +40 -15
  83. package/lib/cjs/services/Recommender.js.map +1 -1
  84. package/lib/cjs/services/Result.js +3 -1
  85. package/lib/cjs/services/Result.js.map +1 -1
  86. package/lib/cjs/services/Template.js.map +1 -1
  87. package/lib/cjs/services/Tracker.js.map +1 -1
  88. package/lib/cjs/services/index.js.map +1 -1
  89. package/lib/cjs/util/Functional.js.map +1 -1
  90. package/lib/esm/Api.js +70 -35
  91. package/lib/esm/Api.js.map +1 -1
  92. package/lib/esm/BuildInfo.js +5 -1
  93. package/lib/esm/BuildInfo.js.map +1 -1
  94. package/lib/esm/Init.js +454 -0
  95. package/lib/esm/Init.js.map +1 -0
  96. package/lib/esm/helpers/Functions.js.map +1 -1
  97. package/lib/esm/helpers/Generator.js.map +1 -1
  98. package/lib/esm/helpers/Handlebars.js +5 -2
  99. package/lib/esm/helpers/Handlebars.js.map +1 -1
  100. package/lib/esm/helpers/NativeRequestBuilder.js.map +1 -1
  101. package/lib/esm/helpers/RequestBuilder.js +143 -25
  102. package/lib/esm/helpers/RequestBuilder.js.map +1 -1
  103. package/lib/esm/helpers/TelemetryCollector.js +67 -0
  104. package/lib/esm/helpers/TelemetryCollector.js.map +1 -0
  105. package/lib/esm/helpers/TryGet.js.map +1 -1
  106. package/lib/esm/helpers/Types.js +2 -0
  107. package/lib/esm/helpers/Types.js.map +1 -0
  108. package/lib/esm/helpers/Window.js +47 -10
  109. package/lib/esm/helpers/Window.js.map +1 -1
  110. package/lib/esm/helpers/index.js +2 -0
  111. package/lib/esm/helpers/index.js.map +1 -1
  112. package/lib/esm/helpers/response/Banner.js +81 -1
  113. package/lib/esm/helpers/response/Banner.js.map +1 -1
  114. package/lib/esm/helpers/response/BuiltResponse.js.map +1 -1
  115. package/lib/esm/helpers/response/Carousel.js +112 -25
  116. package/lib/esm/helpers/response/Carousel.js.map +1 -1
  117. package/lib/esm/helpers/response/Clickthrough.js.map +1 -1
  118. package/lib/esm/helpers/response/Html.js +33 -0
  119. package/lib/esm/helpers/response/Html.js.map +1 -0
  120. package/lib/esm/helpers/response/ProductCard.js +10 -128
  121. package/lib/esm/helpers/response/ProductCard.js.map +1 -1
  122. package/lib/esm/helpers/response/Products.js +158 -0
  123. package/lib/esm/helpers/response/Products.js.map +1 -0
  124. package/lib/esm/helpers/response/Video.js +51 -1
  125. package/lib/esm/helpers/response/Video.js.map +1 -1
  126. package/lib/esm/helpers/response/index.js +56 -0
  127. package/lib/esm/helpers/response/index.js.map +1 -1
  128. package/lib/esm/index.js +2 -1
  129. package/lib/esm/index.js.map +1 -1
  130. package/lib/esm/models/dynamic/DynamicZone.js.map +1 -1
  131. package/lib/esm/models/dynamic/index.js.map +1 -1
  132. package/lib/esm/models/index.js.map +1 -1
  133. package/lib/esm/models/retail/Category.js.map +1 -1
  134. package/lib/esm/models/retail/Configuration.js +32 -0
  135. package/lib/esm/models/retail/Configuration.js.map +1 -1
  136. package/lib/esm/models/retail/Product.js.map +1 -1
  137. package/lib/esm/models/retail/Recommended.js.map +1 -1
  138. package/lib/esm/models/retail/index.js +1 -0
  139. package/lib/esm/models/retail/index.js.map +1 -1
  140. package/lib/esm/models/rtb/BidRequest.js.map +1 -1
  141. package/lib/esm/models/rtb/BidResponse.js.map +1 -1
  142. package/lib/esm/models/rtb/NativeRequest.js.map +1 -1
  143. package/lib/esm/models/rtb/NativeResponse.js.map +1 -1
  144. package/lib/esm/models/rtb/index.js.map +1 -1
  145. package/lib/esm/models/tracking/Geo.js.map +1 -1
  146. package/lib/esm/models/tracking/index.js.map +1 -1
  147. package/lib/esm/models/vast/Vast.js.map +1 -1
  148. package/lib/esm/models/vast/index.js.map +1 -1
  149. package/lib/esm/services/Bidder.js +182 -9
  150. package/lib/esm/services/Bidder.js.map +1 -1
  151. package/lib/esm/services/BotFiltering.js.map +1 -1
  152. package/lib/esm/services/Category.js +6 -2
  153. package/lib/esm/services/Category.js.map +1 -1
  154. package/lib/esm/services/Configuration.js +176 -5
  155. package/lib/esm/services/Configuration.js.map +1 -1
  156. package/lib/esm/services/Device.js +1 -1
  157. package/lib/esm/services/Device.js.map +1 -1
  158. package/lib/esm/services/Dynamic.js +9 -7
  159. package/lib/esm/services/Dynamic.js.map +1 -1
  160. package/lib/esm/services/Geo.js +5 -1
  161. package/lib/esm/services/Geo.js.map +1 -1
  162. package/lib/esm/services/Logger.js +78 -12
  163. package/lib/esm/services/Logger.js.map +1 -1
  164. package/lib/esm/services/Memo.js +79 -13
  165. package/lib/esm/services/Memo.js.map +1 -1
  166. package/lib/esm/services/Memoization.js +3 -0
  167. package/lib/esm/services/Memoization.js.map +1 -1
  168. package/lib/esm/services/Product.js +11 -5
  169. package/lib/esm/services/Product.js.map +1 -1
  170. package/lib/esm/services/Recommender.js +40 -15
  171. package/lib/esm/services/Recommender.js.map +1 -1
  172. package/lib/esm/services/Result.js +1 -0
  173. package/lib/esm/services/Result.js.map +1 -1
  174. package/lib/esm/services/Template.js.map +1 -1
  175. package/lib/esm/services/Tracker.js.map +1 -1
  176. package/lib/esm/services/index.js.map +1 -1
  177. package/lib/esm/util/Functional.js.map +1 -1
  178. package/lib/types/Api.d.ts +42 -18
  179. package/lib/types/BuildInfo.d.ts +1 -1
  180. package/lib/types/Init.d.ts +147 -0
  181. package/lib/types/helpers/Handlebars.d.ts +1 -0
  182. package/lib/types/helpers/RequestBuilder.d.ts +9 -2
  183. package/lib/types/helpers/TelemetryCollector.d.ts +25 -0
  184. package/lib/types/helpers/Types.d.ts +1 -0
  185. package/lib/types/helpers/Window.d.ts +11 -1
  186. package/lib/types/helpers/index.d.ts +2 -0
  187. package/lib/types/helpers/response/Banner.d.ts +13 -0
  188. package/lib/types/helpers/response/Carousel.d.ts +14 -6
  189. package/lib/types/helpers/response/Html.d.ts +2 -0
  190. package/lib/types/helpers/response/Products.d.ts +8 -0
  191. package/lib/types/helpers/response/Video.d.ts +17 -2
  192. package/lib/types/helpers/response/index.d.ts +12 -0
  193. package/lib/types/index.d.ts +2 -1
  194. package/lib/types/models/retail/Category.d.ts +1 -1
  195. package/lib/types/models/retail/Configuration.d.ts +17 -0
  196. package/lib/types/models/retail/index.d.ts +1 -0
  197. package/lib/types/models/rtb/BidRequest.d.ts +4 -1
  198. package/lib/types/models/rtb/BidResponse.d.ts +1 -0
  199. package/lib/types/services/Bidder.d.ts +19 -3
  200. package/lib/types/services/Category.d.ts +9 -1
  201. package/lib/types/services/Configuration.d.ts +25 -2
  202. package/lib/types/services/Dynamic.d.ts +5 -3
  203. package/lib/types/services/Logger.d.ts +36 -2
  204. package/lib/types/services/Memo.d.ts +28 -2
  205. package/lib/types/services/Memoization.d.ts +3 -0
  206. package/lib/types/services/Recommender.d.ts +2 -2
  207. package/lib/types/services/Result.d.ts +1 -0
  208. 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
+ }
@@ -1,3 +1,4 @@
1
1
  export * from './Configuration';
2
2
  export * from './Product';
3
3
  export * from './Recommended';
4
+ export * from './Category';
@@ -229,7 +229,7 @@ export interface ISite {
229
229
  }
230
230
  export interface IDeal {
231
231
  id: string;
232
- bidfloor: number;
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,6 +1,7 @@
1
1
  export interface IBidExtensions extends Record<string, any> {
2
2
  primaryCategory?: string;
3
3
  originalCategories?: string[];
4
+ filteringEnabled?: boolean;
4
5
  }
5
6
  export interface IBid {
6
7
  id: string;
@@ -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 GenerateCategoriesFn = (providedCategories: string[]) => string[];
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 type { NativeRequestBuilderFn, RequestBuilder, RequestBuilderFn } from '../helpers';
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<MissingDynamicZoneError> | import("./Result").OkResult<IDynamicZone>>;
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: RequestBuilder, requestIds: Record<string, DynamicCreative>, [head, ...tail]: DynamicCreative[]) => Result<[builder: RequestBuilder, requestIds: Record<string, DynamicCreative>]>;
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 = (...prefix: (string | undefined)[]) => IContextLogger;
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 const Ctx: (logger: ILogger | undefined) => IContextLogger | undefined;
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) => (...args: TArgs) => TReturn;
2
- export declare const MemoizeAsync: <TArgs extends readonly unknown[], TReturn>(fn: (...args: TArgs) => Promise<TReturn>) => (...args: TArgs) => Promise<TReturn>;
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>;
@@ -1 +1,4 @@
1
+ /**
2
+ * @deprecated @see Memoize
3
+ */
1
4
  export declare const Memo: <T extends any[], R>(fn: (...args: T) => R) => (...args: T) => R;
@@ -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.22",
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
- "prebuild": "echo \"export const SurfsideAdsCoreVersionInfo = { buildBranch: '$(git rev-parse --abbrev-ref HEAD)', buildHash: '$(git rev-parse --short HEAD)', buildVer: '$(bun -e 'console.log(require(\"./package.json\").version)')'};\" > src/BuildInfo.ts",
41
- "build": "bunx npm-run-all --parallel \"types\" \"esm\" \"cjs\"",
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
+ }