UNPKG

@relewise/client

Version:

Relewise is a next generation personalization SaaS-platform, which offers functionality within product- and content recommendations and personalized search. This official SDK helps you interact with our API.

2 lines (1 loc) 11 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Relewise={})}(this,function(e){"use strict";function t(e,t,r,i){return new(r||(r=Promise))(function(n,s){function a(e){try{u(i.next(e))}catch(e){s(e)}}function o(e){try{u(i.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r(function(e){e(t)})).then(a,o)}u((i=i.apply(e,t||[])).next())})}"function"==typeof SuppressedError&&SuppressedError;var r="client@2.24.0";class i extends Error{get details(){return this._details}constructor(e,t){super(e),this._details=t}}class n{constructor(e,t,r){if(this.datasetId=e,this.apiKey=t,this._serverUrl="https://api.relewise.com",this._urlPath="v1",this.cache="no-cache",!e)throw new Error("Dataset id cannot be null or empty. Please contact Relewise if you don't have an account already or would like a free demo license");if(!t)throw new Error("API Key secret cannot be null or empty. Please contact Relewise support if you don't know the apiKeySecret for your datasetId.");this._apiKeyHeader=`APIKey ${this.apiKey}`,(null==r?void 0:r.serverUrl)&&(this._serverUrl=r.serverUrl),(null==r?void 0:r.cache)&&(this.cache=r.cache)}get serverUrl(){return this._serverUrl}request(e,n,s){return t(this,void 0,void 0,function*(){const t=this.createRequestUrl(this._serverUrl,this.datasetId,this._urlPath,e);try{const e=yield fetch(t,{method:"POST",headers:{Authorization:this._apiKeyHeader,"Content-Type":"application/json","X-Relewise-Version":r},body:JSON.stringify(n),signal:null==s?void 0:s.abortSignal,cache:this.cache});if(!e.ok){let t=null;try{t=yield e.json()}catch(e){}const r=(null==t?void 0:t.detail)?`Details: ${t.detail}\n`:"";throw new i(`Error when calling the Relewise API.\n\nTitle: ${e.statusText}\nStatus: ${e.status}\n${r}\nRead more in the details property if there is error response or look in the network tab.`,t)}return yield this.parseJson(e)}catch(e){this.handleRequestError(e)}})}createRequestUrl(e,...t){const r=t.join("/");return e.endsWith("/")?e.concat(r):e.concat("/",r)}handleRequestError(e){if(e instanceof i)throw e;if(e instanceof DOMException)throw e;let t="",r=null;if(e instanceof Error){t+=`\nOriginal error: ${e.name} - ${e.message}`,e.code&&(t+=`\nCode: ${e.code}`);const i=e.message.toLowerCase();i.includes("failed to fetch")?r="Failed to connect to API. Possible network outage, incorrect server URL, or CORS/preflight issue.":i.includes("401")||i.includes("unauthorized")?r="Unauthorized: Your API Key might be missing, expired, or incorrect.":i.includes("403")||i.includes("forbidden")?r="Forbidden: Your API Key might not have access to this dataset.":(i.includes("404")||i.includes("not found"))&&(r="Not Found: The Dataset ID or endpoint may be incorrect.")}else t+=`\nNon-Error thrown: ${JSON.stringify(e)}`;const n="Network error or preflight request failed.\n"+(r?`Possible cause: ${r}\n`:"")+"Troubleshooting steps:\n- Check your API Key is correct and active\n- Verify the Dataset ID exists and is correctly spelled\n- Ensure the server URL is reachable from your network\n- Check browser console/network tab for blocked requests or CORS issues"+t;throw console.error(n),new Error(n)}parseJson(e){return t(this,void 0,void 0,function*(){try{return yield e.json()}catch(e){return}})}}e.ProblemDetailsError=i,e.RelewiseClient=n,e.Tracker=class extends n{constructor(e,t,r){super(e,t,r),this.datasetId=e,this.apiKey=t}trackOrder(e,r){return t(this,arguments,void 0,function*({user:e,subtotal:t,orderNumber:r,lineItems:i,cartName:n="default",trackingNumber:s,data:a},o){return this.request("TrackOrderRequest",{$type:"Relewise.Client.Requests.Tracking.TrackOrderRequest, Relewise.Client",order:{$type:"Relewise.Client.DataTypes.Order, Relewise.Client",lineItems:i.map(e=>Object.assign(Object.assign({product:{id:e.productId}},e.variantId&&{variant:{id:e.variantId}}),{lineTotal:e.lineTotal,quantity:e.quantity,data:e.data})),subtotal:{amount:t.amount,currency:{value:t.currency}},orderNumber:r,trackingNumber:s,cartName:n,data:a,user:e}},o)})}trackCart(e,r){return t(this,arguments,void 0,function*({user:e,subtotal:t,lineItems:r,data:i,cartName:n="default"},s){return this.request("TrackCartRequest",{$type:"Relewise.Client.Requests.Tracking.TrackCartRequest, Relewise.Client",cart:{$type:"Relewise.Client.DataTypes.Cart, Relewise.Client",lineItems:r.map(e=>Object.assign(Object.assign({product:{id:e.productId}},e.variantId&&{variant:{id:e.variantId}}),{lineTotal:e.lineTotal,quantity:e.quantity,data:e.data})),subtotal:{amount:t.amount,currency:{value:t.currency}},name:n,user:e,data:i}},s)})}trackProductView(e,r){return t(this,arguments,void 0,function*({productId:e,variantId:t,user:r},i){return this.request("TrackProductViewRequest",{$type:"Relewise.Client.Requests.Tracking.TrackProductViewRequest, Relewise.Client",productView:Object.assign(Object.assign({$type:"Relewise.Client.DataTypes.ProductView, Relewise.Client",product:{id:e}},t&&{variant:{id:t}}),{user:r})},i)})}trackProductCategoryView(e,r){return t(this,arguments,void 0,function*({idPath:e,user:t},r){return this.request("TrackProductCategoryViewRequest",{$type:"Relewise.Client.Requests.Tracking.TrackProductCategoryViewRequest, Relewise.Client",productCategoryView:{$type:"Relewise.Client.DataTypes.ProductCategoryView, Relewise.Client",idPath:e,user:t}},r)})}trackContentView(e,r){return t(this,arguments,void 0,function*({contentId:e,user:t},r){return this.request("TrackContentViewRequest",{$type:"Relewise.Client.Requests.Tracking.TrackContentViewRequest, Relewise.Client",contentView:{$type:"Relewise.Client.DataTypes.ContentView, Relewise.Client",content:{id:e},user:t}},r)})}trackContentCategoryView(e,r){return t(this,arguments,void 0,function*({idPath:e,user:t},r){return this.request("TrackContentCategoryViewRequest",{$type:"Relewise.Client.Requests.Tracking.TrackContentCategoryViewRequest, Relewise.Client",contentCategoryView:{$type:"Relewise.Client.DataTypes.ContentCategoryView, Relewise.Client",idPath:e,user:t}},r)})}trackBrandView(e,r){return t(this,arguments,void 0,function*({brandId:e,user:t},r){return this.request("TrackBrandViewRequest",{$type:"Relewise.Client.Requests.Tracking.TrackBrandViewRequest, Relewise.Client",brandView:{$type:"Relewise.Client.DataTypes.BrandView, Relewise.Client",brand:{id:e},user:t}},r)})}trackSearchTerm(e,r){return t(this,arguments,void 0,function*({term:e,language:t,user:r},i){return this.request("TrackSearchTermRequest",{$type:"Relewise.Client.Requests.Tracking.TrackSearchTermRequest, Relewise.Client",searchTerm:{$type:"Relewise.Client.DataTypes.SearchTerm, Relewise.Client",language:{value:t},term:e,user:r}},i)})}trackUserUpdate(e,r){return t(this,arguments,void 0,function*({user:e,updateKind:t="UpdateAndAppend"},r){return this.request("TrackUserUpdateRequest",{$type:"Relewise.Client.Requests.Tracking.TrackUserUpdateRequest, Relewise.Client",userUpdate:{$type:"Relewise.Client.DataTypes.UserUpdate, Relewise.Client",user:e,kind:t}},r)})}trackProductEngagement(e,r){return t(this,arguments,void 0,function*({user:e,engagement:t,product:r},i){return this.request("TrackProductEngagementRequest",{$type:"Relewise.Client.Requests.Tracking.TrackProductEngagementRequest, Relewise.Client",productEngagement:{$type:"Relewise.Client.DataTypes.ProductEngagement, Relewise.Client",user:e,id:r,engagement:t}},i)})}trackContentEngagement(e,r){return t(this,arguments,void 0,function*({user:e,engagement:t,contentId:r},i){return this.request("TrackContentEngagementRequest",{$type:"Relewise.Client.Requests.Tracking.TrackContentEngagementRequest, Relewise.Client",contentEngagement:{$type:"Relewise.Client.DataTypes.ContentEngagement, Relewise.Client",user:e,id:r,engagement:t}},i)})}trackDisplayAdClick(e,r){return t(this,arguments,void 0,function*({user:e,campaignId:t,displayAdId:r},i){return this.request("TrackDisplayAdClickRequest",{$type:"Relewise.Client.Requests.Tracking.TrackDisplayAdClickRequest, Relewise.Client",displayAdClick:{$type:"Relewise.Client.DataTypes.DisplayAdClick, Relewise.Client",user:e,campaignId:t,displayAdId:r}},i)})}trackFeedDwell(e,r){return t(this,arguments,void 0,function*({user:e,feedId:t,dwellTimeMilliseconds:r,visibleItems:i},n){return this.request("TrackFeedDwellRequest",{$type:"Relewise.Client.Requests.Tracking.Feed.TrackFeedDwellRequest, Relewise.Client",dwell:{$type:"Relewise.Client.DataTypes.Feed.FeedDwell, Relewise.Client",user:e,feedId:t,dwellTimeMilliseconds:r,visibleItems:i}},n)})}trackFeedItemClick(e,r){return t(this,arguments,void 0,function*({user:e,feedId:t,item:r},i){return this.request("TrackFeedItemClickRequest",{$type:"Relewise.Client.Requests.Tracking.Feed.TrackFeedItemClickRequest, Relewise.Client",click:{$type:"Relewise.Client.DataTypes.Feed.FeedItemClick, Relewise.Client",user:e,feedId:t,item:r}},i)})}trackFeedItemPreview(e,r){return t(this,arguments,void 0,function*({user:e,feedId:t,item:r},i){return this.request("TrackFeedItemPreviewRequest",{$type:"Relewise.Client.Requests.Tracking.Feed.TrackFeedItemPreviewRequest, Relewise.Client",preview:{$type:"Relewise.Client.DataTypes.Feed.FeedItemPreview, Relewise.Client",user:e,feedId:t,item:r}},i)})}},e.UserFactory=class{static anonymous(e){return Object.assign({},e)}static byAuthenticatedId(e,t,r){return"string"!=typeof e?this.logAndReturnAnonymous("byAuthenticatedId","authenticatedId must be a string",e):void 0!==t&&"string"!=typeof t?this.logAndReturnAnonymous("byAuthenticatedId","temporaryId must be a string when provided",t):Object.assign(Object.assign({authenticatedId:e},t&&{temporaryId:t}),r)}static byTemporaryId(e,t){return"string"!=typeof e?this.logAndReturnAnonymous("byTemporaryId","temporaryId must be a string",e):Object.assign(Object.assign({},t),{temporaryId:e})}static byIdentifier(e,t,r){return"string"!=typeof e?this.logAndReturnAnonymous("byIdentifier","key must be a string",e):"string"!=typeof t?this.logAndReturnAnonymous("byIdentifier","value must be a string",t):Object.assign(Object.assign({},r),{identifiers:{[e]:t}})}static byIdentifiers(e,t){if(null===e||"object"!=typeof e||Array.isArray(e))return this.logAndReturnAnonymous("byIdentifiers","identifiers must be a record of string keys to string values",e);for(const[t,r]of Object.entries(e))if("string"!=typeof t||"string"!=typeof r)return this.logAndReturnAnonymous("byIdentifiers","identifiers must be a record of string keys to string values",e);return Object.assign({identifiers:e},t)}static byEmail(e,t){return"string"!=typeof e?this.logAndReturnAnonymous("byEmail","email must be a string",e):Object.assign({email:e},t)}static byFingerprint(e,t){return"string"!=typeof e?this.logAndReturnAnonymous("byFingerprint","fingerprint must be a string",e):Object.assign({fingerprint:e},t)}static logAndReturnAnonymous(e,t,r){return console.error(`[UserFactory.${e}] ${t}`,r),this.anonymous()}}});