@liquidcommercedev/rmn-sdk 1.4.6-beta.6 → 1.4.6-beta.7
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/dist/index.cjs +68 -22
- package/dist/index.esm.js +68 -22
- package/dist/types/enums.d.ts +1 -0
- package/dist/types/modules/event/event.interface.d.ts +13 -0
- package/dist/types/modules/selection/selection.interface.d.ts +3 -1
- package/dist/types/modules/selection/selection.service.d.ts +4 -2
- package/dist/types/rmn-client.d.ts +7 -3
- package/dist/types/types.d.ts +3 -1
- package/package.json +1 -1
- package/umd/liquidcommerce-rmn-sdk.min.js +1 -1
package/dist/index.cjs
CHANGED
@@ -56,6 +56,7 @@ exports.RMN_FILTER_PROPERTIES = void 0;
|
|
56
56
|
})(exports.RMN_FILTER_PROPERTIES || (exports.RMN_FILTER_PROPERTIES = {}));
|
57
57
|
exports.RMN_SPOT_EVENT = void 0;
|
58
58
|
(function (RMN_SPOT_EVENT) {
|
59
|
+
RMN_SPOT_EVENT["INJECT_SPOTS"] = "INJECT_SPOTS";
|
59
60
|
RMN_SPOT_EVENT["MOUNTED"] = "MOUNTED";
|
60
61
|
RMN_SPOT_EVENT["UNMOUNTED"] = "UNMOUNTED";
|
61
62
|
RMN_SPOT_EVENT["IMPRESSION"] = "IMPRESSION";
|
@@ -17913,19 +17914,19 @@ class SelectionService extends BaseApi {
|
|
17913
17914
|
*
|
17914
17915
|
* @param {ISpotSelectionParams} data - Spots selection parameters.
|
17915
17916
|
*
|
17916
|
-
* @return {Promise<ISpots>} - The spots response object.
|
17917
|
+
* @return {Promise<ISpots | { error: string }>} - The spots response object.
|
17917
17918
|
*/
|
17918
17919
|
async spotSelection(data) {
|
17919
17920
|
const { isOk, val, isErr } = await this.post(SELECTION_API_PATH, data, {});
|
17920
17921
|
if (isErr) {
|
17921
|
-
|
17922
|
+
return { error: `There was an error during spot selection: (${isErr === null || isErr === void 0 ? void 0 : isErr.errorMessage})` };
|
17922
17923
|
}
|
17923
17924
|
if (isOk && val && val.data && (val === null || val === void 0 ? void 0 : val.refresh.token)) {
|
17924
17925
|
this.authInfo.authenticated = true;
|
17925
17926
|
this.authInfo.token = val.refresh.token;
|
17926
17927
|
return val.data.spots;
|
17927
17928
|
}
|
17928
|
-
|
17929
|
+
return { error: 'Spot selection response was not successful' };
|
17929
17930
|
}
|
17930
17931
|
}
|
17931
17932
|
|
@@ -17942,7 +17943,7 @@ class LiquidCommerceRmnClient {
|
|
17942
17943
|
*
|
17943
17944
|
* @param {ISpotSelectionParams} params - Spots selection parameters.
|
17944
17945
|
*
|
17945
|
-
* @return {Promise<ISpots>} - The spots response object.
|
17946
|
+
* @return {Promise<ISpots | {error : string}>} - The spots response object.
|
17946
17947
|
*/
|
17947
17948
|
async spotSelection(params) {
|
17948
17949
|
return this.selectionService.spotSelection(params);
|
@@ -17956,31 +17957,51 @@ class LiquidCommerceRmnClient {
|
|
17956
17957
|
*/
|
17957
17958
|
async injectSpotElement(params) {
|
17958
17959
|
var _a;
|
17959
|
-
const
|
17960
|
+
const config = params.config;
|
17961
|
+
let inject = params.inject;
|
17962
|
+
this.eventService.publish(exports.RMN_SPOT_EVENT.INJECT_SPOTS, {
|
17963
|
+
isLoading: true,
|
17964
|
+
isCompleted: false,
|
17965
|
+
error: null,
|
17966
|
+
});
|
17960
17967
|
if (!inject.length) {
|
17961
|
-
|
17968
|
+
this.eventError('RmnSdk: Failed to inject spot element. Please provide at least one spot element to inject.');
|
17969
|
+
return;
|
17970
|
+
}
|
17971
|
+
const hasDuplicatePlacementIds = this.preventDuplicateSpotPlacementIds(inject);
|
17972
|
+
if (!hasDuplicatePlacementIds) {
|
17973
|
+
return;
|
17974
|
+
}
|
17975
|
+
inject = this.preventNonExistentSpotTypes(inject);
|
17976
|
+
const response = await this.spotSelectionRequest({ ...params, inject });
|
17977
|
+
if (typeof response === 'object' && 'error' in response) {
|
17978
|
+
this.eventError(response.error);
|
17962
17979
|
return;
|
17963
17980
|
}
|
17964
|
-
this.preventDuplicateSpotPlacementIds(inject);
|
17965
|
-
const response = await this.spotSelectionRequest(params);
|
17966
17981
|
for (const item of inject) {
|
17967
17982
|
const itemConfig = (_a = item.config) !== null && _a !== void 0 ? _a : config;
|
17968
17983
|
const spots = response[item.placementId];
|
17969
17984
|
if (!(spots === null || spots === void 0 ? void 0 : spots.length)) {
|
17970
|
-
|
17985
|
+
this.eventError(`RmnSdk: Failed to inject spot element. No spots found for type "${item.spotType}".`, { placementId: item.placementId, type: item.spotType });
|
17971
17986
|
continue;
|
17972
17987
|
}
|
17973
17988
|
const placementId = item.placementId.replace('#', '');
|
17974
17989
|
const placement = document.getElementById(placementId);
|
17975
17990
|
if (!placement) {
|
17976
|
-
|
17991
|
+
this.eventError(`RmnSdk: Failed to inject spot element. Placement not found for id "#${placementId}".`, { placementId, type: item.spotType });
|
17977
17992
|
continue;
|
17978
17993
|
}
|
17979
17994
|
if (spots.length === 1) {
|
17980
|
-
this.injectOneSpotElement(item, placement, spots[0], itemConfig);
|
17995
|
+
const isInjected = this.injectOneSpotElement(item, placement, spots[0], itemConfig);
|
17996
|
+
if (!isInjected) {
|
17997
|
+
continue;
|
17998
|
+
}
|
17981
17999
|
}
|
17982
18000
|
if (spots.length > 1) {
|
17983
|
-
this.injectCarouselSpotElement(placement, spots, itemConfig);
|
18001
|
+
const isInjected = this.injectCarouselSpotElement(placement, spots, itemConfig);
|
18002
|
+
if (!isInjected) {
|
18003
|
+
continue;
|
18004
|
+
}
|
17984
18005
|
}
|
17985
18006
|
}
|
17986
18007
|
}
|
@@ -17997,7 +18018,7 @@ class LiquidCommerceRmnClient {
|
|
17997
18018
|
*
|
17998
18019
|
* @param {IInjectSpotElementParams} params - Parameters for injecting spot elements.
|
17999
18020
|
*
|
18000
|
-
* @return {Promise<ISpots>} - The spots response object.
|
18021
|
+
* @return {Promise<ISpots | {error: string}>} - The spots response object.
|
18001
18022
|
*/
|
18002
18023
|
async spotSelectionRequest(params) {
|
18003
18024
|
const { inject, filter, config } = params;
|
@@ -18029,8 +18050,8 @@ class LiquidCommerceRmnClient {
|
|
18029
18050
|
const spot = this.elementService.overrideSpotColors(spotItem, config === null || config === void 0 ? void 0 : config.colors);
|
18030
18051
|
const content = SPOT_TEMPLATE_HTML_ELEMENT(spot, { overlay: config === null || config === void 0 ? void 0 : config.overlay });
|
18031
18052
|
if (!content) {
|
18032
|
-
|
18033
|
-
|
18053
|
+
this.eventError(`RmnSdk: Failed to inject carousel spot element. Could not create element for type "${spot.spot}".`, { placementId: placement.id, type: spot.spot });
|
18054
|
+
continue;
|
18034
18055
|
}
|
18035
18056
|
this.eventSpotElement({
|
18036
18057
|
spot,
|
@@ -18054,10 +18075,11 @@ class LiquidCommerceRmnClient {
|
|
18054
18075
|
},
|
18055
18076
|
});
|
18056
18077
|
if (!carouselElement) {
|
18057
|
-
|
18058
|
-
return;
|
18078
|
+
this.eventError(`RmnSdk: Failed to inject spot carousel element. Could not create spot carousel element.`, { placementId: placement.id });
|
18079
|
+
return false;
|
18059
18080
|
}
|
18060
18081
|
placement.replaceChildren(carouselElement);
|
18082
|
+
return true;
|
18061
18083
|
}
|
18062
18084
|
/**
|
18063
18085
|
* Injects a single spot element into the provided placement.
|
@@ -18074,8 +18096,8 @@ class LiquidCommerceRmnClient {
|
|
18074
18096
|
const spotData = this.elementService.overrideSpotColors(spot, config === null || config === void 0 ? void 0 : config.colors);
|
18075
18097
|
const content = SPOT_TEMPLATE_HTML_ELEMENT(spotData, { overlay: config === null || config === void 0 ? void 0 : config.overlay });
|
18076
18098
|
if (!content) {
|
18077
|
-
|
18078
|
-
return;
|
18099
|
+
this.eventError(`RmnSdk: Failed to inject spot element. Could not create element for type "${injectItem.spotType}".`, { placementId: injectItem.placementId, type: injectItem.spotType });
|
18100
|
+
return false;
|
18079
18101
|
}
|
18080
18102
|
const spotElement = this.elementService.createSpotElement({
|
18081
18103
|
content,
|
@@ -18088,8 +18110,8 @@ class LiquidCommerceRmnClient {
|
|
18088
18110
|
},
|
18089
18111
|
});
|
18090
18112
|
if (!spotElement) {
|
18091
|
-
|
18092
|
-
return;
|
18113
|
+
this.eventError(`RmnSdk: Failed to inject spot element. Could not create element for type "${injectItem.spotType}".`, { placementId: injectItem.placementId, type: injectItem.spotType });
|
18114
|
+
return false;
|
18093
18115
|
}
|
18094
18116
|
this.eventSpotElement({
|
18095
18117
|
spot,
|
@@ -18097,6 +18119,7 @@ class LiquidCommerceRmnClient {
|
|
18097
18119
|
element: spotElement,
|
18098
18120
|
});
|
18099
18121
|
placement.replaceChildren(spotElement);
|
18122
|
+
return true;
|
18100
18123
|
}
|
18101
18124
|
eventSpotElement({ spot, placementId, element, }) {
|
18102
18125
|
this.eventService.registerSpot({
|
@@ -18118,10 +18141,33 @@ class LiquidCommerceRmnClient {
|
|
18118
18141
|
const placementIds = new Set();
|
18119
18142
|
for (const item of inject) {
|
18120
18143
|
if (placementIds.has(item.placementId)) {
|
18121
|
-
|
18144
|
+
this.eventError(`RmnSdk: Duplicate placement id (${item.placementId}) found. Please provide a unique placement id for each spot element.`, { placementId: item.placementId, type: item.spotType });
|
18145
|
+
return false;
|
18122
18146
|
}
|
18123
18147
|
placementIds.add(item.placementId);
|
18124
18148
|
}
|
18149
|
+
return true;
|
18150
|
+
}
|
18151
|
+
preventNonExistentSpotTypes(inject) {
|
18152
|
+
const newInject = [];
|
18153
|
+
for (const item of inject) {
|
18154
|
+
if (!Object.values(exports.RMN_SPOT_TYPE).includes(item.spotType)) {
|
18155
|
+
this.eventError(`RmnSdk: Invalid spot type (${item.spotType}) found. Please provide a valid spot type for each spot element.`, { placementId: item.placementId, type: item.spotType });
|
18156
|
+
continue;
|
18157
|
+
}
|
18158
|
+
newInject.push(item);
|
18159
|
+
}
|
18160
|
+
return newInject;
|
18161
|
+
}
|
18162
|
+
eventError(error, spot) {
|
18163
|
+
this.eventService.publish(exports.RMN_SPOT_EVENT.INJECT_SPOTS, {
|
18164
|
+
isLoading: false,
|
18165
|
+
isCompleted: true,
|
18166
|
+
error: {
|
18167
|
+
message: error,
|
18168
|
+
spot,
|
18169
|
+
},
|
18170
|
+
});
|
18125
18171
|
}
|
18126
18172
|
}
|
18127
18173
|
/**
|
package/dist/index.esm.js
CHANGED
@@ -54,6 +54,7 @@ var RMN_FILTER_PROPERTIES;
|
|
54
54
|
})(RMN_FILTER_PROPERTIES || (RMN_FILTER_PROPERTIES = {}));
|
55
55
|
var RMN_SPOT_EVENT;
|
56
56
|
(function (RMN_SPOT_EVENT) {
|
57
|
+
RMN_SPOT_EVENT["INJECT_SPOTS"] = "INJECT_SPOTS";
|
57
58
|
RMN_SPOT_EVENT["MOUNTED"] = "MOUNTED";
|
58
59
|
RMN_SPOT_EVENT["UNMOUNTED"] = "UNMOUNTED";
|
59
60
|
RMN_SPOT_EVENT["IMPRESSION"] = "IMPRESSION";
|
@@ -17911,19 +17912,19 @@ class SelectionService extends BaseApi {
|
|
17911
17912
|
*
|
17912
17913
|
* @param {ISpotSelectionParams} data - Spots selection parameters.
|
17913
17914
|
*
|
17914
|
-
* @return {Promise<ISpots>} - The spots response object.
|
17915
|
+
* @return {Promise<ISpots | { error: string }>} - The spots response object.
|
17915
17916
|
*/
|
17916
17917
|
async spotSelection(data) {
|
17917
17918
|
const { isOk, val, isErr } = await this.post(SELECTION_API_PATH, data, {});
|
17918
17919
|
if (isErr) {
|
17919
|
-
|
17920
|
+
return { error: `There was an error during spot selection: (${isErr === null || isErr === void 0 ? void 0 : isErr.errorMessage})` };
|
17920
17921
|
}
|
17921
17922
|
if (isOk && val && val.data && (val === null || val === void 0 ? void 0 : val.refresh.token)) {
|
17922
17923
|
this.authInfo.authenticated = true;
|
17923
17924
|
this.authInfo.token = val.refresh.token;
|
17924
17925
|
return val.data.spots;
|
17925
17926
|
}
|
17926
|
-
|
17927
|
+
return { error: 'Spot selection response was not successful' };
|
17927
17928
|
}
|
17928
17929
|
}
|
17929
17930
|
|
@@ -17940,7 +17941,7 @@ class LiquidCommerceRmnClient {
|
|
17940
17941
|
*
|
17941
17942
|
* @param {ISpotSelectionParams} params - Spots selection parameters.
|
17942
17943
|
*
|
17943
|
-
* @return {Promise<ISpots>} - The spots response object.
|
17944
|
+
* @return {Promise<ISpots | {error : string}>} - The spots response object.
|
17944
17945
|
*/
|
17945
17946
|
async spotSelection(params) {
|
17946
17947
|
return this.selectionService.spotSelection(params);
|
@@ -17954,31 +17955,51 @@ class LiquidCommerceRmnClient {
|
|
17954
17955
|
*/
|
17955
17956
|
async injectSpotElement(params) {
|
17956
17957
|
var _a;
|
17957
|
-
const
|
17958
|
+
const config = params.config;
|
17959
|
+
let inject = params.inject;
|
17960
|
+
this.eventService.publish(RMN_SPOT_EVENT.INJECT_SPOTS, {
|
17961
|
+
isLoading: true,
|
17962
|
+
isCompleted: false,
|
17963
|
+
error: null,
|
17964
|
+
});
|
17958
17965
|
if (!inject.length) {
|
17959
|
-
|
17966
|
+
this.eventError('RmnSdk: Failed to inject spot element. Please provide at least one spot element to inject.');
|
17967
|
+
return;
|
17968
|
+
}
|
17969
|
+
const hasDuplicatePlacementIds = this.preventDuplicateSpotPlacementIds(inject);
|
17970
|
+
if (!hasDuplicatePlacementIds) {
|
17971
|
+
return;
|
17972
|
+
}
|
17973
|
+
inject = this.preventNonExistentSpotTypes(inject);
|
17974
|
+
const response = await this.spotSelectionRequest({ ...params, inject });
|
17975
|
+
if (typeof response === 'object' && 'error' in response) {
|
17976
|
+
this.eventError(response.error);
|
17960
17977
|
return;
|
17961
17978
|
}
|
17962
|
-
this.preventDuplicateSpotPlacementIds(inject);
|
17963
|
-
const response = await this.spotSelectionRequest(params);
|
17964
17979
|
for (const item of inject) {
|
17965
17980
|
const itemConfig = (_a = item.config) !== null && _a !== void 0 ? _a : config;
|
17966
17981
|
const spots = response[item.placementId];
|
17967
17982
|
if (!(spots === null || spots === void 0 ? void 0 : spots.length)) {
|
17968
|
-
|
17983
|
+
this.eventError(`RmnSdk: Failed to inject spot element. No spots found for type "${item.spotType}".`, { placementId: item.placementId, type: item.spotType });
|
17969
17984
|
continue;
|
17970
17985
|
}
|
17971
17986
|
const placementId = item.placementId.replace('#', '');
|
17972
17987
|
const placement = document.getElementById(placementId);
|
17973
17988
|
if (!placement) {
|
17974
|
-
|
17989
|
+
this.eventError(`RmnSdk: Failed to inject spot element. Placement not found for id "#${placementId}".`, { placementId, type: item.spotType });
|
17975
17990
|
continue;
|
17976
17991
|
}
|
17977
17992
|
if (spots.length === 1) {
|
17978
|
-
this.injectOneSpotElement(item, placement, spots[0], itemConfig);
|
17993
|
+
const isInjected = this.injectOneSpotElement(item, placement, spots[0], itemConfig);
|
17994
|
+
if (!isInjected) {
|
17995
|
+
continue;
|
17996
|
+
}
|
17979
17997
|
}
|
17980
17998
|
if (spots.length > 1) {
|
17981
|
-
this.injectCarouselSpotElement(placement, spots, itemConfig);
|
17999
|
+
const isInjected = this.injectCarouselSpotElement(placement, spots, itemConfig);
|
18000
|
+
if (!isInjected) {
|
18001
|
+
continue;
|
18002
|
+
}
|
17982
18003
|
}
|
17983
18004
|
}
|
17984
18005
|
}
|
@@ -17995,7 +18016,7 @@ class LiquidCommerceRmnClient {
|
|
17995
18016
|
*
|
17996
18017
|
* @param {IInjectSpotElementParams} params - Parameters for injecting spot elements.
|
17997
18018
|
*
|
17998
|
-
* @return {Promise<ISpots>} - The spots response object.
|
18019
|
+
* @return {Promise<ISpots | {error: string}>} - The spots response object.
|
17999
18020
|
*/
|
18000
18021
|
async spotSelectionRequest(params) {
|
18001
18022
|
const { inject, filter, config } = params;
|
@@ -18027,8 +18048,8 @@ class LiquidCommerceRmnClient {
|
|
18027
18048
|
const spot = this.elementService.overrideSpotColors(spotItem, config === null || config === void 0 ? void 0 : config.colors);
|
18028
18049
|
const content = SPOT_TEMPLATE_HTML_ELEMENT(spot, { overlay: config === null || config === void 0 ? void 0 : config.overlay });
|
18029
18050
|
if (!content) {
|
18030
|
-
|
18031
|
-
|
18051
|
+
this.eventError(`RmnSdk: Failed to inject carousel spot element. Could not create element for type "${spot.spot}".`, { placementId: placement.id, type: spot.spot });
|
18052
|
+
continue;
|
18032
18053
|
}
|
18033
18054
|
this.eventSpotElement({
|
18034
18055
|
spot,
|
@@ -18052,10 +18073,11 @@ class LiquidCommerceRmnClient {
|
|
18052
18073
|
},
|
18053
18074
|
});
|
18054
18075
|
if (!carouselElement) {
|
18055
|
-
|
18056
|
-
return;
|
18076
|
+
this.eventError(`RmnSdk: Failed to inject spot carousel element. Could not create spot carousel element.`, { placementId: placement.id });
|
18077
|
+
return false;
|
18057
18078
|
}
|
18058
18079
|
placement.replaceChildren(carouselElement);
|
18080
|
+
return true;
|
18059
18081
|
}
|
18060
18082
|
/**
|
18061
18083
|
* Injects a single spot element into the provided placement.
|
@@ -18072,8 +18094,8 @@ class LiquidCommerceRmnClient {
|
|
18072
18094
|
const spotData = this.elementService.overrideSpotColors(spot, config === null || config === void 0 ? void 0 : config.colors);
|
18073
18095
|
const content = SPOT_TEMPLATE_HTML_ELEMENT(spotData, { overlay: config === null || config === void 0 ? void 0 : config.overlay });
|
18074
18096
|
if (!content) {
|
18075
|
-
|
18076
|
-
return;
|
18097
|
+
this.eventError(`RmnSdk: Failed to inject spot element. Could not create element for type "${injectItem.spotType}".`, { placementId: injectItem.placementId, type: injectItem.spotType });
|
18098
|
+
return false;
|
18077
18099
|
}
|
18078
18100
|
const spotElement = this.elementService.createSpotElement({
|
18079
18101
|
content,
|
@@ -18086,8 +18108,8 @@ class LiquidCommerceRmnClient {
|
|
18086
18108
|
},
|
18087
18109
|
});
|
18088
18110
|
if (!spotElement) {
|
18089
|
-
|
18090
|
-
return;
|
18111
|
+
this.eventError(`RmnSdk: Failed to inject spot element. Could not create element for type "${injectItem.spotType}".`, { placementId: injectItem.placementId, type: injectItem.spotType });
|
18112
|
+
return false;
|
18091
18113
|
}
|
18092
18114
|
this.eventSpotElement({
|
18093
18115
|
spot,
|
@@ -18095,6 +18117,7 @@ class LiquidCommerceRmnClient {
|
|
18095
18117
|
element: spotElement,
|
18096
18118
|
});
|
18097
18119
|
placement.replaceChildren(spotElement);
|
18120
|
+
return true;
|
18098
18121
|
}
|
18099
18122
|
eventSpotElement({ spot, placementId, element, }) {
|
18100
18123
|
this.eventService.registerSpot({
|
@@ -18116,10 +18139,33 @@ class LiquidCommerceRmnClient {
|
|
18116
18139
|
const placementIds = new Set();
|
18117
18140
|
for (const item of inject) {
|
18118
18141
|
if (placementIds.has(item.placementId)) {
|
18119
|
-
|
18142
|
+
this.eventError(`RmnSdk: Duplicate placement id (${item.placementId}) found. Please provide a unique placement id for each spot element.`, { placementId: item.placementId, type: item.spotType });
|
18143
|
+
return false;
|
18120
18144
|
}
|
18121
18145
|
placementIds.add(item.placementId);
|
18122
18146
|
}
|
18147
|
+
return true;
|
18148
|
+
}
|
18149
|
+
preventNonExistentSpotTypes(inject) {
|
18150
|
+
const newInject = [];
|
18151
|
+
for (const item of inject) {
|
18152
|
+
if (!Object.values(RMN_SPOT_TYPE).includes(item.spotType)) {
|
18153
|
+
this.eventError(`RmnSdk: Invalid spot type (${item.spotType}) found. Please provide a valid spot type for each spot element.`, { placementId: item.placementId, type: item.spotType });
|
18154
|
+
continue;
|
18155
|
+
}
|
18156
|
+
newInject.push(item);
|
18157
|
+
}
|
18158
|
+
return newInject;
|
18159
|
+
}
|
18160
|
+
eventError(error, spot) {
|
18161
|
+
this.eventService.publish(RMN_SPOT_EVENT.INJECT_SPOTS, {
|
18162
|
+
isLoading: false,
|
18163
|
+
isCompleted: true,
|
18164
|
+
error: {
|
18165
|
+
message: error,
|
18166
|
+
spot,
|
18167
|
+
},
|
18168
|
+
});
|
18123
18169
|
}
|
18124
18170
|
}
|
18125
18171
|
/**
|
package/dist/types/enums.d.ts
CHANGED
@@ -4,6 +4,18 @@ export interface IFireEventParams {
|
|
4
4
|
event: RMN_SPOT_EVENT;
|
5
5
|
eventUrl: string;
|
6
6
|
}
|
7
|
+
export interface IInjectSpotError {
|
8
|
+
message: string;
|
9
|
+
spot?: {
|
10
|
+
type?: string;
|
11
|
+
placementId?: string;
|
12
|
+
};
|
13
|
+
}
|
14
|
+
export interface IInjectSpotsEvent {
|
15
|
+
isLoading: boolean;
|
16
|
+
isCompleted: boolean;
|
17
|
+
error: null | IInjectSpotError;
|
18
|
+
}
|
7
19
|
export interface IMountedEvent {
|
8
20
|
placementId: string;
|
9
21
|
spotId: string;
|
@@ -42,6 +54,7 @@ export interface IBuyNowEvent {
|
|
42
54
|
spotId: string;
|
43
55
|
}
|
44
56
|
export interface IEventMap {
|
57
|
+
[RMN_SPOT_EVENT.INJECT_SPOTS]: IInjectSpotsEvent;
|
45
58
|
[RMN_SPOT_EVENT.MOUNTED]: IMountedEvent;
|
46
59
|
[RMN_SPOT_EVENT.UNMOUNTED]: IUnMountedEvent;
|
47
60
|
[RMN_SPOT_EVENT.CLICK]: IClickEvent;
|
@@ -33,5 +33,7 @@ export interface ISpot {
|
|
33
33
|
}
|
34
34
|
export type ISpots = Record<PlacementIdType, ISpot[]>;
|
35
35
|
export interface ISelectionService {
|
36
|
-
spotSelection(data: ISpotSelectionParams): Promise<ISpots
|
36
|
+
spotSelection(data: ISpotSelectionParams): Promise<ISpots | {
|
37
|
+
error: string;
|
38
|
+
}>;
|
37
39
|
}
|
@@ -10,7 +10,9 @@ export declare class SelectionService extends BaseApi implements ISelectionServi
|
|
10
10
|
*
|
11
11
|
* @param {ISpotSelectionParams} data - Spots selection parameters.
|
12
12
|
*
|
13
|
-
* @return {Promise<ISpots>} - The spots response object.
|
13
|
+
* @return {Promise<ISpots | { error: string }>} - The spots response object.
|
14
14
|
*/
|
15
|
-
spotSelection(data: ISpotSelectionParams): Promise<ISpots
|
15
|
+
spotSelection(data: ISpotSelectionParams): Promise<ISpots | {
|
16
|
+
error: string;
|
17
|
+
}>;
|
16
18
|
}
|
@@ -15,9 +15,11 @@ export declare class LiquidCommerceRmnClient implements IRmnClient {
|
|
15
15
|
*
|
16
16
|
* @param {ISpotSelectionParams} params - Spots selection parameters.
|
17
17
|
*
|
18
|
-
* @return {Promise<ISpots>} - The spots response object.
|
18
|
+
* @return {Promise<ISpots | {error : string}>} - The spots response object.
|
19
19
|
*/
|
20
|
-
spotSelection(params: ISpotSelectionParams): Promise<ISpots
|
20
|
+
spotSelection(params: ISpotSelectionParams): Promise<ISpots | {
|
21
|
+
error: string;
|
22
|
+
}>;
|
21
23
|
/**
|
22
24
|
* Injects the spot elements into their provided placement.
|
23
25
|
*
|
@@ -37,7 +39,7 @@ export declare class LiquidCommerceRmnClient implements IRmnClient {
|
|
37
39
|
*
|
38
40
|
* @param {IInjectSpotElementParams} params - Parameters for injecting spot elements.
|
39
41
|
*
|
40
|
-
* @return {Promise<ISpots>} - The spots response object.
|
42
|
+
* @return {Promise<ISpots | {error: string}>} - The spots response object.
|
41
43
|
*/
|
42
44
|
private spotSelectionRequest;
|
43
45
|
/**
|
@@ -72,6 +74,8 @@ export declare class LiquidCommerceRmnClient implements IRmnClient {
|
|
72
74
|
* @return {void}
|
73
75
|
*/
|
74
76
|
private preventDuplicateSpotPlacementIds;
|
77
|
+
private preventNonExistentSpotTypes;
|
78
|
+
private eventError;
|
75
79
|
}
|
76
80
|
/**
|
77
81
|
* Creates a new instance of the RmnClient.
|
package/dist/types/types.d.ts
CHANGED
@@ -7,7 +7,9 @@ import type { RMN_ENV } from 'enums';
|
|
7
7
|
import type { IInjectSpotElementParams } from 'modules/element';
|
8
8
|
import type { ISpots, ISpotSelectionParams } from 'modules/selection';
|
9
9
|
export interface IRmnClient {
|
10
|
-
spotSelection(params: ISpotSelectionParams): Promise<ISpots
|
10
|
+
spotSelection(params: ISpotSelectionParams): Promise<ISpots | {
|
11
|
+
error: string;
|
12
|
+
}>;
|
11
13
|
injectSpotElement(params: IInjectSpotElementParams): Promise<void>;
|
12
14
|
eventManager(): EventService;
|
13
15
|
}
|
package/package.json
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
"name": "@liquidcommercedev/rmn-sdk",
|
3
3
|
"description": "LiquidCommerce RMN SDK",
|
4
4
|
"author": "LiquidCommerce Tech",
|
5
|
-
"version": "1.4.6-beta.
|
5
|
+
"version": "1.4.6-beta.7",
|
6
6
|
"homepage": "https://docs.liquidcommerce.co/rmn-sdk",
|
7
7
|
"main": "./dist/index.cjs",
|
8
8
|
"module": "./dist/index.esm.js",
|