@viibe/impulse-integration-js 2.3.10 → 2.3.11

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 CHANGED
@@ -62,6 +62,27 @@ The contact itself;
62
62
  - for `phone` category, should be a full phone number (including national prefix)
63
63
  - for `expertise` category, should be an `id_expertise`
64
64
 
65
+ `suggestions[]` **(array, optional)**
66
+
67
+ A list of suggested contacts to call.
68
+ Each item is an object with the following format:
69
+
70
+ `category` **(string, mandatory)**
71
+
72
+ The type of contact (`email` or `phone`)
73
+
74
+ `value` **(string, mandatory)**
75
+
76
+ The contact itself;
77
+
78
+ - for `email` category, should be a valid email
79
+ - for `phone` category, should be a full phone number (including national prefix)
80
+
81
+ `description` **(string, optional)**
82
+
83
+ An optional text to add information about the contact (his name for example).
84
+ Displayed between brackets after the `value` field.
85
+
65
86
  `ticket`
66
87
 
67
88
  Represents the host application entity the call will be attached to. Viibe calls should typically be attached to a ticket, conversation or issue within the host application
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- (()=>{var t={579:t=>{function n(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function e(t,n){for(var e=0;e<n.length;e++){var o=n[e];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function o(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}function i(t){return function(n){return Boolean(n.isTrusted&&0===n.origin.indexOf(t))}}function a(t){var n=new URL(t),e="".concat(n.protocol,"//").concat(n.host),o=window.screen.width/2-240,a=window.screen.height/2-300,r=["toolbar=no","location=no","directories=no","status=no","menubar=no","scrollbars=no","resizable=no","copyhistory=no","width=".concat(480),"height=".concat(600),"top=".concat(a),"left=".concat(o)];return new Promise((function(n,o){var a=window.open(t,"Authorization",r.join(", "));a||o("Failed to open window");var c=setInterval((function(){a.closed&&(s(),o("User closed window"))}),100);function s(){window.removeEventListener("message",u),clearInterval(c)}function u(t){if(!i(e)(t))return null;if(t.data.token&&(s(),n(t.data.token)),t.data.error&&(s(),o(t.data.error)),t.data&&t.data.event&&t.data.payload)switch(t.data.event){case"authentication:success":return s(),n(t.data);case"authentication:failure":return s(),o(t.data)}return null}window.addEventListener("message",u)}))}var r="auth.viibe.pro",c=1e4,s=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r;n(this,t),this.host=e}return o(t,[{key:"loginZendesk",value:function(t){var n=document.location.origin;return a("https://".concat(this.host,"/auth/zendesk/login?subdomain=").concat(t,"&origin=").concat(n))}}]),t}(),u=function(){function t(e){n(this,t),this.handlers=[],this.host=e.host,this.origin=/^localhost/.test(this.host)?"http://".concat(this.host):"https://".concat(this.host),this.apiOrigin=/^localhost/.test(this.host)?"http://".concat(this.host):"https://api-".concat(this.host),this.source=e.source,this.isViibeEvent=i(this.origin),window.addEventListener("message",this.onMessage.bind(this))}return o(t,[{key:"createNotificationIframe",value:function(){if(!this.host)throw new Error("fillHost");if(!this.source)throw new Error("fillSource");var t=document.createElement("iframe");return t.name="viibe-".concat(Math.floor(Math.random()*c)),t.style="border: 0;width: 0;",t.src="".concat(this.origin,"/integration/features/notifications"),t}},{key:"createCallIframe",value:function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.host)throw new Error("fillHost");if(!this.source)throw new Error("fillSource");var e=this.generateIframeSrc(n),o=document.createElement("iframe");return o.name="viibe-".concat(Math.floor(Math.random()*c)),o.style="border: 0;width: calc(100% - 1rem);margin: 0.5rem;",o.src=e,o.allow="geolocation;autoplay;microphone;camera;midi;encrypted-media;clipboard-write;",this.on(o,"document",(function(n){return t.onDocument(n)})),o}},{key:"generateIframeSrc",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.clipboard,e=void 0!==n&&n,o=t.components,i=t.links,a=t.o2m,r=void 0!==a&&a,c=t.ticket,s=t.token,u=t.locale,l=t.standalone,h=t.suggestions,d="".concat(this.origin,"/integration/features/ticket"),f=new URLSearchParams({origin:document.location.origin,resize:"true",source:this.source});if(c&&c.title&&f.set("title",c.title),c&&c.integration&&f.set("thirdPartyId",c.integration.id),i){var v=i instanceof Array?i.map((function(t){return"".concat(t.category,":").concat(t.value)})).join(","):String(i);f.set("links",v)}if(h){var m=h instanceof Array?h.map((function(t){var n=t.category,e=t.value,o=t.description,i="".concat(n,":").concat(e);return o&&(i+=":".concat(o)),i})).join(","):String(h);f.set("suggestions",m)}if(s&&f.set("token",s),u&&f.set("locale",u),o){var w=o instanceof Array?o.join(","):String(o);f.set("components",w)}return l&&f.set("standalone",Boolean(l)),f.set("clipboard",Boolean(e)),f.set("o2m",Boolean(r)),d+"?".concat(f)}},{key:"dispatch",value:function(t,n,e){return this.handlers.filter((function(n){return n.eventName===t&&(!n.windowName||n.windowName===e)})).map((function(t){return t.func(n)}))}},{key:"onMessage",value:function(t){return this.isViibeEvent(t)?t.data&&t.data.event&&t.data.payload?this.dispatch(t.data.event,t.data.payload,t.data.windowName):t.data&&t.data.token?this.dispatch("authentication:token",t.data.token):t.data&&t.data.error?this.dispatch("authentication:error",t.data.error):null:null}},{key:"on",value:function(t,n,e){"string"==typeof t&&"function"==typeof n&&void 0===e&&(e=n,n=t,t=null);var o={eventName:n,func:e,windowName:t?t.name:null};this.handlers.push(o)}},{key:"onDocument",value:function(t){window.open(t.signed_url,"_blank")}},{key:"authenticate",value:function(t){var n=document.location,e=n.protocol,o=n.host;return a("".concat(e,"//api-").concat(o,"/auth/login/").concat(t,"?origin=").concat(origin))}}]),t}();u.Auth=s,"undefined"!=typeof window&&(window.Viibe=u),t.exports=u}},n={},e=function e(o){var i=n[o];if(void 0!==i)return i.exports;var a=n[o]={exports:{}};return t[o](a,a.exports,e),a.exports}(579);module.exports=e})();
1
+ (()=>{var t={579:t=>{function n(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}function e(t,n){for(var e=0;e<n.length;e++){var o=n[e];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function o(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}function i(t){return function(n){return Boolean(n.isTrusted&&0===n.origin.indexOf(t))}}function a(t){var n=new URL(t),e="".concat(n.protocol,"//").concat(n.host),o=window.screen.width/2-240,a=window.screen.height/2-300,r=["toolbar=no","location=no","directories=no","status=no","menubar=no","scrollbars=no","resizable=no","copyhistory=no","width=".concat(480),"height=".concat(600),"top=".concat(a),"left=".concat(o)];return new Promise((function(n,o){var a=window.open(t,"Authorization",r.join(", "));a||o("Failed to open window");var c=setInterval((function(){a.closed&&(s(),o("User closed window"))}),100);function s(){window.removeEventListener("message",u),clearInterval(c)}function u(t){if(!i(e)(t))return null;if(t.data.token&&(s(),n(t.data.token)),t.data.error&&(s(),o(t.data.error)),t.data&&t.data.event&&t.data.payload)switch(t.data.event){case"authentication:success":return s(),n(t.data);case"authentication:failure":return s(),o(t.data)}return null}window.addEventListener("message",u)}))}var r=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"auth.viibe.pro";n(this,t),this.host=e}return o(t,[{key:"loginZendesk",value:function(t){var n=document.location.origin;return a("https://".concat(this.host,"/auth/zendesk/login?subdomain=").concat(t,"&origin=").concat(n))}}]),t}(),c=function(){function t(e){n(this,t),this.handlers=[],this.host=e.host,this.origin=/^localhost/.test(this.host)?"http://".concat(this.host):"https://".concat(this.host),this.apiOrigin=/^localhost/.test(this.host)?"http://".concat(this.host):"https://api-".concat(this.host),this.source=e.source,this.isViibeEvent=i(this.origin),window.addEventListener("message",this.onMessage.bind(this))}return o(t,[{key:"createNotificationIframe",value:function(){if(!this.host)throw new Error("fillHost");if(!this.source)throw new Error("fillSource");var t=document.createElement("iframe");return t.name="viibe-".concat(Math.floor(1e4*Math.random())),t.style="border: 0;width: 0;",t.src="".concat(this.origin,"/integration/features/notifications"),t}},{key:"createCallIframe",value:function(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.host)throw new Error("fillHost");if(!this.source)throw new Error("fillSource");var e=this.generateIframeSrc(n),o=document.createElement("iframe");return o.name="viibe-".concat(Math.floor(1e4*Math.random())),o.style="border: 0;width: calc(100% - 1rem);margin: 0.5rem;",o.src=e,o.allow="geolocation;autoplay;microphone;camera;midi;encrypted-media;clipboard-write;",this.on(o,"document",(function(n){return t.onDocument(n)})),o}},{key:"generateIframeSrc",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.clipboard,e=void 0!==n&&n,o=t.components,i=t.links,a=t.o2m,r=void 0!==a&&a,c=t.ticket,s=t.token,u=t.locale,l=t.standalone,h=t.suggestions,d="".concat(this.origin,"/integration/features/ticket"),f=new URLSearchParams({origin:document.location.origin,resize:"true",source:this.source});if(c&&c.title&&f.set("title",c.title),c&&c.integration&&f.set("thirdPartyId",c.integration.id),i){var v=i instanceof Array?i.map((function(t){return"".concat(t.category,":").concat(t.value)})).join(","):String(i);f.set("links",v)}if(h){var m=h instanceof Array?h.map((function(t){var n=t.category,e=t.value,o=t.description,i="".concat(n,":").concat(e);return o&&(i+=":".concat(o)),i})).join(","):String(h);f.set("suggestions",m)}if(s&&f.set("token",s),u&&f.set("locale",u),o){var w=o instanceof Array?o.join(","):String(o);f.set("components",w)}return l&&f.set("standalone",Boolean(l)),f.set("clipboard",Boolean(e)),f.set("o2m",Boolean(r)),d+"?".concat(f)}},{key:"dispatch",value:function(t,n,e){return this.handlers.filter((function(n){return n.eventName===t&&(!n.windowName||n.windowName===e)})).map((function(t){return t.func(n)}))}},{key:"onMessage",value:function(t){return this.isViibeEvent(t)?t.data&&t.data.event&&t.data.payload?this.dispatch(t.data.event,t.data.payload,t.data.windowName):t.data&&t.data.token?this.dispatch("authentication:token",t.data.token):t.data&&t.data.error?this.dispatch("authentication:error",t.data.error):null:null}},{key:"on",value:function(t,n,e){"string"==typeof t&&"function"==typeof n&&void 0===e&&(e=n,n=t,t=null);var o={eventName:n,func:e,windowName:t?t.name:null};this.handlers.push(o)}},{key:"onDocument",value:function(t){window.open(t.signed_url,"_blank")}},{key:"authenticate",value:function(t){var n=document.location,e=n.protocol,o=n.host;return a("".concat(e,"//api-").concat(o,"/auth/login/").concat(t,"?origin=").concat(origin))}}]),t}();c.Auth=r,"undefined"!=typeof window&&(window.Viibe=c),t.exports=c}},n={},e=function e(o){var i=n[o];if(void 0!==i)return i.exports;var a=n[o]={exports:{}};return t[o](a,a.exports,e),a.exports}(579);module.exports=e})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viibe/impulse-integration-js",
3
- "version": "2.3.10",
3
+ "version": "2.3.11",
4
4
  "engines": {
5
5
  "node": ">= 10.0.0"
6
6
  },
@@ -25,7 +25,7 @@
25
25
  "core-js": "^3.18.2",
26
26
  "jest": "^28.1.1",
27
27
  "jest-environment-jsdom": "^28.1.1",
28
- "webpack": "^5.58.1",
28
+ "webpack": "5.82.0",
29
29
  "webpack-cli": "^4.9.0"
30
30
  }
31
31
  }
package/src/index.js CHANGED
@@ -81,20 +81,20 @@ function openAuthPopup(src) {
81
81
  // events from auth.viibe.tech
82
82
  if (event.data && event.data.event && event.data.payload) {
83
83
  switch (event.data.event) {
84
- case 'authentication:success':
85
- destroy();
86
-
87
- return resolve(event.data);
88
- case 'authentication:failure':
89
- destroy();
90
-
91
- return reject(event.data);
92
- default:
93
-
84
+ case 'authentication:success':
85
+ destroy();
86
+
87
+ return resolve(event.data);
88
+ case 'authentication:failure':
89
+ destroy();
90
+
91
+ return reject(event.data);
92
+ default:
93
+
94
94
  }
95
-
95
+
96
96
  }
97
-
97
+
98
98
  return null;
99
99
  }
100
100
 
@@ -114,7 +114,7 @@ class ViibeAuth {
114
114
  loginZendesk(subdomain) {
115
115
  const { origin } = document.location;
116
116
  const url = `https://${this.host}/auth/zendesk/login?subdomain=${subdomain}&origin=${origin}`;
117
-
117
+
118
118
  return openAuthPopup(url);
119
119
  }
120
120
  }
@@ -164,7 +164,7 @@ class Viibe {
164
164
  iframe.name = `viibe-${Math.floor(Math.random() * IFRAME_NAME_RANGE)}`;
165
165
  iframe.style = 'border: 0;width: 0;';
166
166
  iframe.src = `${this.origin}/integration/features/notifications`;
167
-
167
+
168
168
  return iframe;
169
169
  }
170
170
 
@@ -222,8 +222,8 @@ class Viibe {
222
222
 
223
223
  if (links) {
224
224
  const linksParams = (links instanceof Array)
225
- ? links.map(link => `${link.category}:${link.value}`).join(',')
226
- : String(links);
225
+ ? links.map(link => `${link.category}:${link.value}`).join(',')
226
+ : String(links);
227
227
 
228
228
  params.set('links', linksParams);
229
229
  }
@@ -250,8 +250,8 @@ class Viibe {
250
250
 
251
251
  if (components) {
252
252
  const componentsParams = (components instanceof Array)
253
- ? components.join(',')
254
- : String(components);
253
+ ? components.join(',')
254
+ : String(components);
255
255
 
256
256
  params.set('components', componentsParams);
257
257
  }
@@ -280,11 +280,11 @@ class Viibe {
280
280
  */
281
281
  dispatch(eventName, payload, windowName) {
282
282
  return this.handlers
283
- .filter(handler =>
284
- handler.eventName === eventName &&
285
- (!handler.windowName || (handler.windowName === windowName)),
286
- )
287
- .map(handler => handler.func(payload));
283
+ .filter(handler =>
284
+ handler.eventName === eventName &&
285
+ (!handler.windowName || (handler.windowName === windowName)),
286
+ )
287
+ .map(handler => handler.func(payload));
288
288
  }
289
289
 
290
290
  /**
@@ -323,8 +323,8 @@ class Viibe {
323
323
  */
324
324
  on(iframe, eventName, func) {
325
325
  if (typeof iframe === 'string' &&
326
- typeof eventName === 'function' &&
327
- typeof func === 'undefined') {
326
+ typeof eventName === 'function' &&
327
+ typeof func === 'undefined') {
328
328
  func = eventName;
329
329
  eventName = iframe;
330
330
  iframe = null;
package/test/dist.test.js CHANGED
@@ -62,7 +62,7 @@ describe('dist', () => {
62
62
  source: 'jest',
63
63
  });
64
64
  const iframe = viibe.createCallIframe();
65
- // const callUrl = viibe.createCallUrl();
65
+ //const callUrl = viibe.createCallUrl();
66
66
 
67
67
  expect(iframe).toBeInstanceOf(HTMLIFrameElement);
68
68
  expect(iframe.name).toMatch(/^viibe-[0-9]{1,4}$/);
@@ -70,6 +70,6 @@ describe('dist', () => {
70
70
  expect(iframe.style.border).toBe('0px');
71
71
  expect(iframe.style.margin).toBe('0.5rem');
72
72
  expect(iframe.style.width).toBe('calc(100% - 1rem)');
73
- // expect(iframe.src).toEqual(callUrl);
73
+ //expect(iframe.src).toEqual(callUrl);
74
74
  });
75
75
  });