@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
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { ZoneExcludedError } from '../Api';
|
|
1
2
|
import { Ctx } from './Logger';
|
|
2
3
|
import { Err, GetValue, Ok, TryDo } from './Result';
|
|
3
4
|
export const GetDynamicZone = async (logger, config, zoneId) => {
|
|
4
5
|
const log = Ctx(logger)?.with('GetDynamicZone');
|
|
5
6
|
log?.info('Getting dynamic zone', zoneId);
|
|
7
|
+
if (config.settings.excludedZones?.includes(zoneId) === true) {
|
|
8
|
+
log?.info('Zone is excluded', zoneId);
|
|
9
|
+
return Err(new ZoneExcludedError(zoneId));
|
|
10
|
+
}
|
|
6
11
|
const dynamicZone = config?.dynamicZones?.[zoneId];
|
|
7
12
|
if (dynamicZone === undefined) {
|
|
8
13
|
return Err(new MissingDynamicZoneError(zoneId));
|
|
@@ -58,7 +63,7 @@ export class NoDynamicScreenSizeMatchError extends Error {
|
|
|
58
63
|
export const buildDynamicBidRequestFromSelectedScreenSize = (logger, startRequest, nativeRequest, zoneId, screenSize, category) => {
|
|
59
64
|
const log = Ctx(logger)?.with('buildDynamicBidRequestFromSelectedScreenSize');
|
|
60
65
|
log?.info('Building dynamic bid request', zoneId, screenSize);
|
|
61
|
-
const requestPayload = buildDynamicBidRequestRecursive(log, nativeRequest, startRequest(zoneId).withSurfCategory(category ?? []), {}, screenSize.values);
|
|
66
|
+
const requestPayload = buildDynamicBidRequestRecursive(log, nativeRequest, startRequest(zoneId).withSurfCategory(category ?? []).withImp(zoneId), {}, screenSize.values);
|
|
62
67
|
if (!requestPayload.ok) {
|
|
63
68
|
return requestPayload;
|
|
64
69
|
}
|
|
@@ -81,7 +86,7 @@ export const buildDynamicBidRequestRecursive = (logger, nativeRequest, builder,
|
|
|
81
86
|
log?.info('Adding banner to request');
|
|
82
87
|
const banner = head;
|
|
83
88
|
const id = crypto.randomUUID();
|
|
84
|
-
return buildDynamicBidRequestRecursive(log, nativeRequest, builder.
|
|
89
|
+
return buildDynamicBidRequestRecursive(log, nativeRequest, builder.andBanner(banner.width, banner.height, undefined), {
|
|
85
90
|
...requestIds,
|
|
86
91
|
[id]: head
|
|
87
92
|
}, tail);
|
|
@@ -90,7 +95,7 @@ export const buildDynamicBidRequestRecursive = (logger, nativeRequest, builder,
|
|
|
90
95
|
log?.info('Adding video to request');
|
|
91
96
|
const video = head;
|
|
92
97
|
const id = crypto.randomUUID();
|
|
93
|
-
return buildDynamicBidRequestRecursive(log, nativeRequest, builder.
|
|
98
|
+
return buildDynamicBidRequestRecursive(log, nativeRequest, builder.andVideo(video.width, video.height, video.minDuration ?? 0, video.maxDuration, ['video/mp4', 'video/webm'], undefined), {
|
|
94
99
|
...requestIds,
|
|
95
100
|
[id]: head
|
|
96
101
|
}, tail);
|
|
@@ -98,10 +103,7 @@ export const buildDynamicBidRequestRecursive = (logger, nativeRequest, builder,
|
|
|
98
103
|
else if (head.type === 'Carousel' || head.type === 'ProductCard') {
|
|
99
104
|
log?.info('Adding carousel to request');
|
|
100
105
|
const id = crypto.randomUUID();
|
|
101
|
-
return buildDynamicBidRequestRecursive(log, nativeRequest, builder.
|
|
102
|
-
.withMetaProduct(80, false)
|
|
103
|
-
.withMetaBrand(80, false)
|
|
104
|
-
.build(), undefined, { id }), {
|
|
106
|
+
return buildDynamicBidRequestRecursive(log, nativeRequest, builder.andProductCards(nativeRequest()), {
|
|
105
107
|
...requestIds,
|
|
106
108
|
[id]: head
|
|
107
109
|
}, tail);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dynamic.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"Dynamic.js","sourceRoot":"/","sources":["services/Dynamic.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/services/Geo.js
CHANGED
|
@@ -4,8 +4,9 @@ const SURF_GEO_SERVICE_URL = 'https://g.surfside.io/enrich';
|
|
|
4
4
|
const LOCATION_TYPE_IP = 2;
|
|
5
5
|
const IP_SERVICES_MAXMIND = 3;
|
|
6
6
|
export const GetGeo = async (logger) => {
|
|
7
|
-
const log = Ctx(logger)?.with('
|
|
7
|
+
const log = Ctx(logger)?.with('Geo');
|
|
8
8
|
log?.info('Getting Geo info');
|
|
9
|
+
const geoFetch = log?.time?.('fetch geo');
|
|
9
10
|
try {
|
|
10
11
|
const response = await fetch(SURF_GEO_SERVICE_URL);
|
|
11
12
|
log?.debug('Geo Response', response);
|
|
@@ -18,6 +19,9 @@ export const GetGeo = async (logger) => {
|
|
|
18
19
|
catch (err) {
|
|
19
20
|
return Err(err);
|
|
20
21
|
}
|
|
22
|
+
finally {
|
|
23
|
+
geoFetch?.();
|
|
24
|
+
}
|
|
21
25
|
};
|
|
22
26
|
export class GeoServiceError extends Error {
|
|
23
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Geo.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"Geo.js","sourceRoot":"/","sources":["services/Geo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAgB,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAoB,MAAM,UAAU,CAAC;AAErD,MAAM,oBAAoB,GAAG,8BAA8B,CAAC;AAI5D,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,MAAgB,EAA4B,EAAE;IACvE,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,GAAG,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACnD,GAAG,EAAE,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAiB,CAAC;QACjD,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACtD,OAAO,GAAG,CAAC,IAAI,eAAe,CAAC,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,GAAY,CAAC,CAAC;IAC7B,CAAC;YAAS,CAAC;QACP,QAAQ,EAAE,EAAE,CAAC;IACjB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,OAAO,eAAgB,SAAQ,KAAK;CAAI;AAE9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAA2B,EAAE,UAAuB,EAAQ,EAAE,CAAC,CAAC;IAC7F,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ;IAC/B,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS;IAChC,IAAI,EAAE,UAAU,CAAC,IAAI;IACrB,MAAM,EAAE,UAAU,CAAC,MAAM;IACzB,OAAO,EAAE,UAAU,CAAC,OAAO;IAC3B,GAAG,EAAE,UAAU,CAAC,GAAG;IACnB,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,QAAQ;IACpC,SAAS,EAAE,UAAU,CAAC,SAAS;IAC/B,SAAS,EAAE,mBAAmB;CACjC,CAAC,CAAC"}
|
|
@@ -9,6 +9,20 @@ const LogColors = {
|
|
|
9
9
|
SoftGold: '#f4bd5d',
|
|
10
10
|
MagicMint: '#baf7db'
|
|
11
11
|
};
|
|
12
|
+
export class ITelemetryCollector {
|
|
13
|
+
accountId;
|
|
14
|
+
siteId;
|
|
15
|
+
channelId;
|
|
16
|
+
locationId;
|
|
17
|
+
device;
|
|
18
|
+
constructor(accountId, siteId, channelId, locationId, device) {
|
|
19
|
+
this.accountId = accountId;
|
|
20
|
+
this.siteId = siteId;
|
|
21
|
+
this.channelId = channelId;
|
|
22
|
+
this.locationId = locationId;
|
|
23
|
+
this.device = device;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
12
26
|
;
|
|
13
27
|
;
|
|
14
28
|
const log = (rich, log, args, color) => {
|
|
@@ -25,17 +39,39 @@ const info = (rich, ...args) => log(rich, console.log, ['(Info)', ...args], LogC
|
|
|
25
39
|
const warn = (rich, ...args) => log(rich, console.warn, ['(Warning)', ...args], LogColors.SoftGold);
|
|
26
40
|
const debug = (rich, ...args) => log(rich, console.debug, ['(Debug)', ...args], LogColors.MagicMint);
|
|
27
41
|
const error = (rich, ...args) => log(rich, console.error, ['(Error)', ...args], LogColors.UltraRed);
|
|
28
|
-
const context = (
|
|
29
|
-
const newPrefix =
|
|
42
|
+
const context = (logger, inheritedTags, name, tags) => {
|
|
43
|
+
const newPrefix = (name ?? UNDEF) + SEPARATOR;
|
|
44
|
+
const mergedTags = inheritedTags === undefined && tags === undefined
|
|
45
|
+
? undefined
|
|
46
|
+
: { ...(inheritedTags ?? {}), ...(tags ?? {}) };
|
|
47
|
+
const collector = logger.collector;
|
|
30
48
|
const newLogger = {
|
|
31
49
|
info: logger.info.bind(undefined, newPrefix),
|
|
32
50
|
warn: logger.warn.bind(undefined, newPrefix),
|
|
33
51
|
debug: logger.debug.bind(undefined, newPrefix),
|
|
34
52
|
error: logger.error.bind(undefined, newPrefix),
|
|
35
53
|
table: console.table,
|
|
36
|
-
with: logger.with
|
|
54
|
+
with: logger.with,
|
|
55
|
+
time: collector === undefined
|
|
56
|
+
? undefined
|
|
57
|
+
: (name) => {
|
|
58
|
+
const start = performance.now();
|
|
59
|
+
const timestamp = Date.now();
|
|
60
|
+
return () => {
|
|
61
|
+
collector.record({
|
|
62
|
+
name: newLogger.prefix !== undefined
|
|
63
|
+
? newLogger.prefix + ' ' + name
|
|
64
|
+
: name,
|
|
65
|
+
durationMs: Math.floor(performance.now() - start),
|
|
66
|
+
timestamp,
|
|
67
|
+
tags: mergedTags
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
},
|
|
71
|
+
collector,
|
|
72
|
+
prefix: newPrefix
|
|
37
73
|
};
|
|
38
|
-
newLogger.with = context.bind(undefined,
|
|
74
|
+
newLogger.with = context.bind(undefined, newLogger, mergedTags);
|
|
39
75
|
return newLogger;
|
|
40
76
|
};
|
|
41
77
|
export const InitLogger = (rich = true) => {
|
|
@@ -44,15 +80,45 @@ export const InitLogger = (rich = true) => {
|
|
|
44
80
|
warn: warn.bind(undefined, rich),
|
|
45
81
|
debug: debug.bind(undefined, rich),
|
|
46
82
|
error: error.bind(undefined, rich),
|
|
47
|
-
table: console.table
|
|
83
|
+
table: console.table,
|
|
48
84
|
};
|
|
49
|
-
logger.with = context.bind(undefined,
|
|
85
|
+
logger.with = context.bind(undefined, logger, undefined);
|
|
50
86
|
return logger;
|
|
51
87
|
};
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
88
|
+
export function CreateTelemetryLogger(logger, telemetryCollector) {
|
|
89
|
+
if (logger === undefined) {
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
const log = Ctx(logger);
|
|
93
|
+
const newLogger = {
|
|
94
|
+
...log,
|
|
95
|
+
time: telemetryCollector === undefined
|
|
96
|
+
? undefined
|
|
97
|
+
: (name) => {
|
|
98
|
+
const start = performance.now();
|
|
99
|
+
const timestamp = Date.now();
|
|
100
|
+
return () => {
|
|
101
|
+
telemetryCollector.record({
|
|
102
|
+
name: newLogger.prefix !== undefined
|
|
103
|
+
? newLogger.prefix + ' ' + name
|
|
104
|
+
: name,
|
|
105
|
+
durationMs: Math.floor(performance.now() - start),
|
|
106
|
+
timestamp
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
},
|
|
110
|
+
prefix: undefined,
|
|
111
|
+
collector: telemetryCollector
|
|
112
|
+
};
|
|
113
|
+
newLogger.with = context.bind(undefined, newLogger, undefined);
|
|
114
|
+
return newLogger;
|
|
115
|
+
}
|
|
116
|
+
;
|
|
117
|
+
export function Ctx(logger) {
|
|
118
|
+
return logger === undefined
|
|
119
|
+
? undefined
|
|
120
|
+
: logger?.with === undefined
|
|
121
|
+
? { ...logger, with: () => Ctx(logger) }
|
|
122
|
+
: logger;
|
|
123
|
+
}
|
|
58
124
|
//# sourceMappingURL=Logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"/","sources":["services/Logger.ts"],"names":[],"mappings":"AAGA,MAAM,gBAAgB,GAAW,UAAU,CAAC;AAC5C,MAAM,iBAAiB,GAAW,QAAQ,CAAC;AAC3C,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,KAAK,GAAG,eAAe,CAAC;AAE9B,MAAM,SAAS,GAAG;IACd,aAAa;IACb,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;CACd,CAAC;AAwBX,MAAM,OAAgB,mBAAmB;IAGd;IACA;IACA;IACA;IACA;IALvB,YACuB,SAAiB,EACjB,MAAc,EACd,SAAiB,EACjB,UAAkB,EAClB,MAAoC;QAJpC,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAQ;QACjB,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAA8B;IAG3D,CAAC;CAEJ;AAQA,CAAC;AAOD,CAAC;AAEF,MAAM,GAAG,GAAG,CAAC,IAAa,EAAE,GAAa,EAAE,IAAW,EAAE,KAAa,EAAQ,EAAE;IAC3E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,CACR,sDAAsD,KAAK,uCAAuC,CACrG,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpC,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAE7B,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;AAChH,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;AACpH,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;AACrH,MAAM,KAAK,GAAG,CAAC,IAAa,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;AAEpH,MAAM,OAAO,GAAG,CACZ,MAAsB,EACtB,aAAiD,EACjD,IAAwB,EACxB,IAA6B,EACf,EAAE;IAChB,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,SAAS,CAAC;IAC9C,MAAM,UAAU,GAAG,aAAa,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;QAChE,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,EAAE,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACnC,MAAM,SAAS,GAAmB;QAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAC5C,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAC5C,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9C,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;QAC9C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,SAAS,KAAK,SAAS;YACzB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,IAAY,EAAE,EAAE;gBACf,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,OAAO,GAAG,EAAE;oBACR,SAAS,CAAC,MAAM,CAAC;wBACb,IAAI,EAAE,SAAS,CAAC,MAAM,KAAK,SAAS;4BAChC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI;4BAC/B,CAAC,CAAC,IAAI;wBACV,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;wBACjD,SAAS;wBACT,IAAI,EAAE,UAAU;qBACnB,CAAC,CAAC;gBACP,CAAC,CAAC;YACN,CAAC;QAEL,SAAS;QACT,MAAM,EAAE,SAAS;KACpB,CAAC;IACF,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAChE,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CACtB,OAAgB,IAAI,EACN,EAAE;IAChB,MAAM,MAAM,GAA4B;QACpC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;QAChC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;QAClC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;KACvB,CAAC;IACF,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAwB,EAAE,SAAS,CAAC,CAAC;IAC3E,OAAO,MAAwB,CAAC;AACpC,CAAC,CAAC;AAOF,MAAM,UAAU,qBAAqB,CACjC,MAA2B,EAC3B,kBAAmD;IAEnD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,SAAS,GAAG;QACd,GAAG,GAAG;QACN,IAAI,EAAE,kBAAkB,KAAK,SAAS;YAClC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,IAAY,EAAE,EAAE;gBACf,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC7B,OAAO,GAAG,EAAE;oBACR,kBAAkB,CAAC,MAAM,CAAC;wBACtB,IAAI,EAAE,SAAS,CAAC,MAAM,KAAK,SAAS;4BAChC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI;4BAC/B,CAAC,CAAC,IAAI;wBACV,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;wBACjD,SAAS;qBACZ,CAAC,CAAC;gBACP,CAAC,CAAC;YACN,CAAC;QACL,MAAM,EAAE,SAAS;QACjB,SAAS,EAAE,kBAAkB;KAChC,CAAC;IACF,SAAS,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC/D,OAAO,SAAS,CAAC;AACrB,CAAC;AAAA,CAAC;AAIF,MAAM,UAAU,GAAG,CAAE,MAA2B;IAC5C,OAAO,MAAM,KAAK,SAAS;QACvB,CAAC,CAAC,SAAS;QACX,CAAC,CAAE,MAAc,EAAE,IAAI,KAAK,SAAS;YACjC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAE,EAAE;YACzC,CAAC,CAAC,MAAwB,CAAC;AACvC,CAAC"}
|
package/lib/esm/services/Memo.js
CHANGED
|
@@ -1,31 +1,97 @@
|
|
|
1
|
-
export const Memoize = (fn) => {
|
|
2
|
-
const
|
|
1
|
+
export const Memoize = (fn, { minutes, hours, seconds, milliseconds, cache } = {}) => {
|
|
2
|
+
const internalCache = cache ?? new Map();
|
|
3
|
+
const cacheTimeout = (minutes === undefined &&
|
|
4
|
+
hours === undefined &&
|
|
5
|
+
seconds === undefined &&
|
|
6
|
+
milliseconds === undefined)
|
|
7
|
+
? 5 * 60 * 1_000
|
|
8
|
+
: (minutes ?? 0) * 60_000 +
|
|
9
|
+
(seconds ?? 0) * 1_000 +
|
|
10
|
+
(hours ?? 0) * 3_600_000 +
|
|
11
|
+
(milliseconds ?? 0);
|
|
3
12
|
return (...args) => {
|
|
4
13
|
const key = JSON.stringify(args);
|
|
5
|
-
if (
|
|
6
|
-
|
|
14
|
+
if (internalCache.has(key)) {
|
|
15
|
+
const [last, value] = internalCache.get(key);
|
|
16
|
+
if (Date.now() - last < cacheTimeout) {
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
7
19
|
}
|
|
8
20
|
const value = fn(...args);
|
|
9
|
-
|
|
21
|
+
internalCache.set(key, [Date.now(), value]);
|
|
10
22
|
return value;
|
|
11
23
|
};
|
|
12
24
|
};
|
|
13
|
-
export const MemoizeAsync = (fn) => {
|
|
14
|
-
const
|
|
25
|
+
export const MemoizeAsync = (fn, { minutes, hours, seconds, milliseconds, cache } = {}) => {
|
|
26
|
+
const internalCache = cache ?? new Map();
|
|
27
|
+
const cacheTimeout = (minutes === undefined &&
|
|
28
|
+
hours === undefined &&
|
|
29
|
+
seconds === undefined &&
|
|
30
|
+
milliseconds === undefined)
|
|
31
|
+
? 5 * 60 * 1_000
|
|
32
|
+
: (minutes ?? 0) * 60_000 +
|
|
33
|
+
(seconds ?? 0) * 1_000 +
|
|
34
|
+
(hours ?? 0) * 3_600_000 +
|
|
35
|
+
(milliseconds ?? 0);
|
|
15
36
|
return (...args) => {
|
|
16
37
|
const key = JSON.stringify(args);
|
|
17
|
-
if (
|
|
18
|
-
|
|
38
|
+
if (internalCache.has(key)) {
|
|
39
|
+
const [last, value] = internalCache.get(key);
|
|
40
|
+
if (Date.now() - last < cacheTimeout) {
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
19
43
|
}
|
|
20
44
|
const promise = fn(...args);
|
|
21
|
-
|
|
45
|
+
internalCache.set(key, [Date.now(), promise]);
|
|
22
46
|
promise.catch(() => {
|
|
23
|
-
const
|
|
24
|
-
if (promise ===
|
|
25
|
-
|
|
47
|
+
const entry = internalCache.get(key);
|
|
48
|
+
if (promise === entry?.[1]) {
|
|
49
|
+
internalCache.delete(key);
|
|
26
50
|
}
|
|
27
51
|
});
|
|
28
52
|
return promise;
|
|
29
53
|
};
|
|
30
54
|
};
|
|
55
|
+
export const Cache = (fn, { minutes, hours, seconds, milliseconds, cache }) => {
|
|
56
|
+
const internalCache = cache ?? [];
|
|
57
|
+
const cacheTimeout = (minutes === undefined &&
|
|
58
|
+
hours === undefined &&
|
|
59
|
+
seconds === undefined &&
|
|
60
|
+
milliseconds === undefined)
|
|
61
|
+
? 5 * 60 * 1_000
|
|
62
|
+
: (minutes ?? 0) * 60_000 +
|
|
63
|
+
(seconds ?? 0) * 1_000 +
|
|
64
|
+
(hours ?? 0) * 3_600_000 +
|
|
65
|
+
(milliseconds ?? 0);
|
|
66
|
+
return (...args) => {
|
|
67
|
+
if ((internalCache.length === 0) || ((Date.now() - internalCache[0]) > cacheTimeout)) {
|
|
68
|
+
const newValue = fn(...args);
|
|
69
|
+
internalCache[0] = Date.now();
|
|
70
|
+
internalCache[1] = newValue;
|
|
71
|
+
return newValue;
|
|
72
|
+
}
|
|
73
|
+
return internalCache[1];
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
export const CacheAsync = (fn, { minutes, hours, seconds, milliseconds, cache }) => {
|
|
77
|
+
const internalCache = cache ?? [];
|
|
78
|
+
const cacheTimeout = (minutes === undefined &&
|
|
79
|
+
hours === undefined &&
|
|
80
|
+
seconds === undefined &&
|
|
81
|
+
milliseconds === undefined)
|
|
82
|
+
? 5 * 60 * 1_000
|
|
83
|
+
: (minutes ?? 0) * 60_000 +
|
|
84
|
+
(seconds ?? 0) * 1_000 +
|
|
85
|
+
(hours ?? 0) * 3_600_000 +
|
|
86
|
+
(milliseconds ?? 0);
|
|
87
|
+
return (...args) => {
|
|
88
|
+
if ((internalCache.length === 0) || ((Date.now() - internalCache[0]) > cacheTimeout)) {
|
|
89
|
+
const newValue = fn(...args);
|
|
90
|
+
internalCache[0] = Date.now();
|
|
91
|
+
internalCache[1] = newValue;
|
|
92
|
+
return newValue;
|
|
93
|
+
}
|
|
94
|
+
return internalCache[1];
|
|
95
|
+
};
|
|
96
|
+
};
|
|
31
97
|
//# sourceMappingURL=Memo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Memo.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"Memo.js","sourceRoot":"/","sources":["services/Memo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Memoization.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"Memoization.js","sourceRoot":"/","sources":["services/Memoization.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAqB,EAAqB,EAAqB,EAAE;IACjF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAa,CAAC;IACnC,OAAO,CAAC,GAAG,IAAO,EAAK,EAAE;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAC3B,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -4,17 +4,19 @@ const filterCategories = (productData, categories, canonicalMap) => {
|
|
|
4
4
|
if (categories !== undefined && categories.length > 0) {
|
|
5
5
|
return Ok(productData
|
|
6
6
|
.filter(p => p.ext?.category !== undefined)
|
|
7
|
-
.filter(p => canonicalMap[p.ext.category] !== undefined)
|
|
8
|
-
.filter(p => categories.includes(canonicalMap[p.ext.category])));
|
|
7
|
+
.filter(p => canonicalMap[p.ext.category.toLowerCase()] !== undefined)
|
|
8
|
+
.filter(p => categories.includes(canonicalMap[p.ext.category.toLowerCase()])));
|
|
9
9
|
}
|
|
10
10
|
return Ok(productData);
|
|
11
11
|
};
|
|
12
12
|
export const GetAllSponsoredProducts = async (logger, url, config, accountId, locationId, nativeId, categories) => {
|
|
13
|
-
const log = Ctx(logger)?.with('GetSponsoredProduct')
|
|
13
|
+
const log = Ctx(logger)?.with('GetSponsoredProduct');
|
|
14
14
|
log?.info('Getting sponsored product');
|
|
15
15
|
log?.debug('Getting sponsored product with categories', categories);
|
|
16
16
|
try {
|
|
17
|
+
const stopTimer = log?.time?.('fetch sponsored products');
|
|
17
18
|
const rawResponse = await fetch(`${url}/native/${accountId}/${locationId}/${nativeId}.json`);
|
|
19
|
+
stopTimer?.();
|
|
18
20
|
if (rawResponse.status !== 200) {
|
|
19
21
|
log?.error('product feed service returned with non-200 response', rawResponse.status);
|
|
20
22
|
return Err(new NoNativeError(nativeId));
|
|
@@ -44,11 +46,13 @@ export const GetAllSponsoredProducts = async (logger, url, config, accountId, lo
|
|
|
44
46
|
}
|
|
45
47
|
};
|
|
46
48
|
export const GetAllSponsoredBrandProducts = async (logger, url, config, accountId, locationId, nativeId, categories) => {
|
|
47
|
-
const log = Ctx(logger)?.with('GetSponsoredBrandProducts')
|
|
49
|
+
const log = Ctx(logger)?.with('GetSponsoredBrandProducts');
|
|
48
50
|
log?.info('Getting sponsored brand-level product responses');
|
|
49
51
|
log?.debug('Getting sponsored brand-level product responses with categories', categories);
|
|
50
52
|
try {
|
|
53
|
+
const stopTimer = log?.time?.('fetch sponsored brand products');
|
|
51
54
|
const rawResponse = await fetch(`${url}/native/v2/brand/${accountId}/${locationId}/${nativeId}.json`);
|
|
55
|
+
stopTimer?.();
|
|
52
56
|
if (rawResponse.status !== 200) {
|
|
53
57
|
return Err(new NoNativeError(nativeId));
|
|
54
58
|
}
|
|
@@ -67,10 +71,12 @@ export const GetAllSponsoredBrandProducts = async (logger, url, config, accountI
|
|
|
67
71
|
}
|
|
68
72
|
};
|
|
69
73
|
export const GetRecommendedProduct = async (logger, url, config, accountId, locationId, productId) => {
|
|
70
|
-
const log = Ctx(logger)?.with('GetRecommendedProduct')
|
|
74
|
+
const log = Ctx(logger)?.with('GetRecommendedProduct');
|
|
71
75
|
log?.info('Getting recommended product');
|
|
72
76
|
try {
|
|
77
|
+
const stopTimer = log?.time?.('fetch product by id');
|
|
73
78
|
const rawResponse = await fetch(`${url}/product/${accountId}/${locationId}/${productId}.json`);
|
|
79
|
+
stopTimer?.();
|
|
74
80
|
if (rawResponse.status !== 200) {
|
|
75
81
|
log?.error('product feed service returned with non-200 response', rawResponse.status);
|
|
76
82
|
return Err(new Error('product feed service returned with non-200 response'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Product.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"Product.js","sourceRoot":"/","sources":["services/Product.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,7 +23,9 @@ export async function* GeneratePreviousPurchases(logger, productFeed, url, accou
|
|
|
23
23
|
async function* generateProductRecommendation(logger, productFeed, url, accountId, siteId, locationId, userId, type, category) {
|
|
24
24
|
const log = Ctx(logger)?.with('generateProductRecommendation');
|
|
25
25
|
log?.debug('Generating product recommendation');
|
|
26
|
+
const stopTimer = log?.time?.('fetch product recommendations');
|
|
26
27
|
const recommendations = await fetchRecommendations(log, url, accountId, siteId, locationId, userId, type, category);
|
|
28
|
+
stopTimer?.();
|
|
27
29
|
if (!recommendations.ok) {
|
|
28
30
|
log?.error(recommendations.error);
|
|
29
31
|
return;
|
|
@@ -37,7 +39,12 @@ const fetchRecommendations = async (logger, url, accountId, siteId, locationId,
|
|
|
37
39
|
const key = `accountId=${accountId}&siteId=${siteId}&locationId=${locationId}&userId=${userId ?? 'null'}` +
|
|
38
40
|
(category !== undefined ? `&category=${category}` : '');
|
|
39
41
|
try {
|
|
40
|
-
const results = await fetch(`${url}/r/${type}?${key}&limit=100`);
|
|
42
|
+
const results = await fetch(`${url}/r/${type}${category !== undefined ? '/category' : ''}?${key}&limit=100`);
|
|
43
|
+
if (results.status === 204 && category !== undefined) {
|
|
44
|
+
/* Try without category */
|
|
45
|
+
return await fetchRecommendations(logger, url, accountId, siteId, locationId, userId, type, undefined);
|
|
46
|
+
}
|
|
47
|
+
/* Otherwise, fail */
|
|
41
48
|
if (results.status !== 200) {
|
|
42
49
|
return Err(new NoRecommendationsError);
|
|
43
50
|
}
|
|
@@ -54,25 +61,43 @@ const fetchRecommendations = async (logger, url, accountId, siteId, locationId,
|
|
|
54
61
|
return Err(err);
|
|
55
62
|
}
|
|
56
63
|
};
|
|
64
|
+
const chunk = (arr, n) => {
|
|
65
|
+
const chunks = [];
|
|
66
|
+
for (let i = 0; i < arr.length; i += n) {
|
|
67
|
+
chunks.push(arr.slice(i * n, i * n + n));
|
|
68
|
+
}
|
|
69
|
+
return chunks;
|
|
70
|
+
};
|
|
57
71
|
async function* generateProduct(logger, productFeed, accountId, locationId, results) {
|
|
58
72
|
const log = Ctx(logger)?.with('generateProduct');
|
|
59
73
|
log?.debug('generating product info');
|
|
60
|
-
for (const
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
74
|
+
for (const items of chunk(results, 5)) {
|
|
75
|
+
const promises = items.map(async (item) => {
|
|
76
|
+
const itemId = item.item_id;
|
|
77
|
+
try {
|
|
78
|
+
log?.debug('itemId', itemId);
|
|
79
|
+
const stopTimer = log?.time?.('fetch product by id');
|
|
80
|
+
const product = await productFeed(itemId);
|
|
81
|
+
if (product.ok) {
|
|
82
|
+
stopTimer?.();
|
|
83
|
+
}
|
|
84
|
+
log?.debug('product', itemId, product);
|
|
85
|
+
if (product.ok) {
|
|
86
|
+
return product.value;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
log?.warn('item was missing from product feed', itemId);
|
|
90
|
+
}
|
|
68
91
|
}
|
|
69
|
-
|
|
70
|
-
log?.warn('
|
|
92
|
+
catch (err) {
|
|
93
|
+
log?.warn('couldn\'t get product', err);
|
|
71
94
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
95
|
+
return undefined;
|
|
96
|
+
});
|
|
97
|
+
const chunkedResponse = await Promise.allSettled(promises);
|
|
98
|
+
yield* chunkedResponse.filter(p => p.status === 'fulfilled')
|
|
99
|
+
.map(p => p.value)
|
|
100
|
+
.filter(p => p !== undefined);
|
|
76
101
|
}
|
|
77
102
|
log?.info('no more products. Exiting');
|
|
78
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Recommender.js","sourceRoot":"
|
|
1
|
+
{"version":3,"file":"Recommender.js","sourceRoot":"/","sources":["services/Recommender.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAgB,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAoB,MAAM,UAAU,CAAC;AAKrD,MAAM,CAAC,KAAK,SAAU,CAAC,CAAA,mBAAmB,CACtC,MAA2B,EAC3B,WAAiD,EACjD,GAAW,EACX,SAAiB,EACjB,MAAc,EACd,UAAkB,EAClB,QAAiB;IAEjB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnG,GAAG,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAErC,KAAK,CAAC,CAAC,6BAA6B,CAChC,MAAM,EACN,WAAW,EACX,GAAG,EACH,SAAS,EACT,MAAM,EACN,UAAU,EACV,SAAS,EACT,cAAc,EACd,QAAQ,CACX,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,SAAU,CAAC,CAAA,cAAc,CACjC,MAA2B,EAC3B,WAAiD,EACjD,GAAW,EACX,SAAiB,EACjB,MAAc,EACd,UAAkB,EAClB,MAA0B,EAC1B,QAAiB;IAEjB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3G,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAEhC,KAAK,CAAC,CAAC,6BAA6B,CAChC,MAAM,EACN,WAAW,EACX,GAAG,EACH,SAAS,EACT,MAAM,EACN,UAAU,EACV,MAAM,EACN,SAAS,EACT,QAAQ,CACX,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,SAAU,CAAC,CAAA,yBAAyB,CAC5C,MAA2B,EAC3B,WAAiD,EACjD,GAAW,EACX,SAAiB,EACjB,MAAc,EACd,UAAkB,EAClB,MAA0B,EAC1B,QAAiB;IAEjB,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QACnB,EAAE,IAAI,CAAC,2BAA2B,CAAC;SAClC,IAAI,CAAC,SAAS,CAAC;SACf,IAAI,CAAC,MAAM,CAAC;SACZ,IAAI,CAAC,UAAU,CAAC;SAChB,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,GAAG,EAAE,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAE3C,KAAK,CAAC,CAAC,6BAA6B,CAChC,GAAG,EACH,WAAW,EACX,GAAG,EAAE,SAAS,EACd,MAAM,EACN,UAAU,EACV,MAAM,EACN,WAAW,EACX,QAAQ,CACX,CAAC;AACN,CAAC;AAED,KAAK,SAAU,CAAC,CAAA,6BAA6B,CACzC,MAA2B,EAC3B,WAAiD,EACjD,GAAW,EACX,SAAiB,EACjB,MAAc,EACd,UAAkB,EAClB,MAA0B,EAC1B,IAAY,EACZ,QAA4B;IAE5B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/D,GAAG,EAAE,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,+BAA+B,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAC9C,GAAG,EACH,GAAG,EACH,SAAS,EACT,MAAM,EACN,UAAU,EACV,MAAM,EACN,IAAI,EACJ,QAAQ,CACX,CAAC;IACF,SAAS,EAAE,EAAE,CAAC;IACd,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;QACtB,GAAG,EAAE,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO;IACX,CAAC;IAED,KAAK,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IACvF,GAAG,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,oBAAoB,GAAG,KAAK,EAC9B,MAA2B,EAC3B,GAAW,EACX,SAAiB,EACjB,MAAc,EACd,UAAkB,EAClB,MAA0B,EAC1B,IAAY,EACZ,QAA4B,EACM,EAAE;IACpC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtD,GAAG,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEvC,MAAM,GAAG,GAAG,aAAa,SAAS,WAAW,MAAM,eAAe,UAAU,WAAW,MAAM,IAAI,MAAM,EAAE;QACrG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE5D,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,MAAM,IAAI,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,YAAY,CAAC,CAAC;QAC7G,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAEnD,0BAA0B;YAC1B,OAAO,MAAM,oBAAoB,CAC7B,MAAM,EACN,GAAG,EACH,SAAS,EACT,MAAM,EACN,UAAU,EACV,MAAM,EACN,IAAI,EACJ,SAAS,CACZ,CAAC;QACN,CAAC;QACD,qBAAqB;QACrB,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC,IAAI,sBAAsB,CAAC,CAAC;QAC3C,CAAC;QACD;uEAC+D;QAC/D,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,EAAoD,CAAC;QAC/F,MAAM,KAAK,GAAI,eAAwC,CAAC,KAAK,CAAC;QAC9D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,EAAE,CAAC,eAAwC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,GAAY,CAAC,CAAC;IAC7B,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAI,GAAQ,EAAE,CAAS,EAAE,EAAE;IACrC,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,KAAK,SAAS,CAAC,CAAC,eAAe,CAC3B,MAA2B,EAC3B,WAAiD,EACjD,SAAiB,EACjB,UAAkB,EAClB,OAA8B;IAE9B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACjD,GAAG,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACtC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,IAAI,CAAC;gBACD,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC7B,MAAM,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,qBAAqB,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;oBACb,SAAS,EAAE,EAAE,CAAC;gBAClB,CAAC;gBACD,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACvC,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;oBACb,OAAO,OAAO,CAAC,KAAK,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACJ,GAAG,EAAE,IAAI,CAAC,oCAAoC,EAAE,MAAM,CAAC,CAAC;gBAC5D,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,GAAG,EAAE,IAAI,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,SAAS,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3D,KAAK,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC;aACvD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aACjB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC7C;QACI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC1C,CAAC;CACJ"}
|
|
@@ -52,6 +52,7 @@ export const WrapValue = (value) => {
|
|
|
52
52
|
}
|
|
53
53
|
return Ok(value);
|
|
54
54
|
};
|
|
55
|
+
export const WrapValueAsync = async (value) => WrapValue(value);
|
|
55
56
|
export const AssertValue = GetValueOrThrow;
|
|
56
57
|
export const AllOrNone = (results) => {
|
|
57
58
|
const failed = results.filter(res => !res.ok).map(res => res.error);
|