Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
@livechat/widget-vue
Advanced tools
This library allows to render and interact with the LiveChat Chat Widget inside a Vue 3 application
This library allows to render and interact with the LiveChat Chat Widget inside a Vue application.
Using npm:
npm install @livechat/widget-vue
or using yarn:
yarn add @livechat/widget-vue
<script lang="ts" setup>
import { LiveChatWidget, EventHandlerPayload } from '@livechat/widget-vue'
function handleNewEvent(event: EventHandlerPayload<'onNewEvent'>) {
console.log('LiveChatWidget.onNewEvent', event)
}
</script>
<template>
<LiveChatWidget
license="12345678"
visibility="maximized"
v-on:new-event="handleNewEvent"
/>
</template>
<template>
<LiveChatWidget
license="12345678"
visibility="maximized"
v-on:new-event="handleNewEvent"
/>
</template>
<script>
import { LiveChatWidget } from '@livechat/widget-vue/v2'
export default {
name: 'App',
components: {
LiveChatWidget,
},
methods: {
handleNewEvent(event) {
console.log('LiveChatWidget.onNewEvent', event)
},
},
}
</script>
All properties described below are used for initialization on the first render and later updates of the chat widget with new values on change.
Prop | Type |
---|---|
license | string (required) |
customerName | string |
group | string |
customerEmail | string |
chatBetweenGroups | boolean |
sessionVariables | Record<string, string> |
visibility | 'maximized' | 'minimized' | 'hidden' |
customIdentityProvider | () => CustomerAuth |
CustomerAuth:
parameters | type | description |
---|---|---|
getFreshToken | () => Promise | Should resolve with freshly requested customer access token. |
getToken | () => Promise | Should resolve with currently stored customer access token. |
hasToken | () => Promise | Should resolve with a boolean value representing if a token has been already acquired. |
invalidate | () => Promise | Should handle token invalidation and/or clearing the locally cached value. |
All event handlers listed below are registered if provided for the first time. They unregister on the component cleanup or the property value change. Descriptions of all events are available after clicking on the associated links.
This package exports a set of Vue Composition API utilities that allow consuming reactive data from the chat widget in any place of the application as long as the LiveChatWidget
component is rendered in the tree.
The composition API is only availble for Vue 3 apps.
Access the current chat widget availability
or visibility
state if the chat widget is loaded.
<script setup>
import { useWidgetState } from '@livechat/widget-vue'
const widgetState = useWidgetState()
</script>
<template>
<div v-if="widgetState">
<span>{{widgetState.availability}}</span>
<span>{{widgetState.visibility}}</span>
</div>
</template>
Check if the chat widget is ready using the boolean flag isWidgetReady
.
<script setup>
import { useWidgetIsReady } from '@livechat/widget-vue'
const isWidgetReady = useWidgetIsReady()
</script>
<template>
<div>
<span>Chat Widget is</span>
<span v-if="isWidgetReady">loaded</span>
<span v-else>loading...</span>
</div>
</template>
Access the chatId
and threadId
of the chat if there's one currently available.
<script setup>
import { useWidgetChatData } from '@livechat/widget-vue'
const chatData = useWidgetChatData()
</script>
<template>
<div v-if="chatData">
<span>{{chatData.chatId}}</span>
<span>{{chatData.threadId}}</span>
</div>
</template>
Access the current greeting id
and uniqueId
if one is currently displayed (received and not hidden).
<script setup>
import { useWidgetGreeting } from '@livechat/widget-vue'
const greeting = useWidgetGreeting()
</script>
<template>
<div v-if="greeting">
<span>{{greeting.id}}</span>
<span>{{greeting.uniqueId}}</span>
</div>
</template>
Access the id
, isReturning
, status
, and sessionVariables
of the current customer if the chat widget is loaded.
<script setup>
import { useWidgetCustomerData } from '@livechat/widget-vue'
const customerData = useWidgetCustomerData()
</script>
<template>
<div v-if="customerData">
<span>{{customerData.id}}</span>
<span>{{customerData.isReturning}}</span>
<span>{{customerData.status}}</span>
<ul>
<li v-for="variable in customerData.sessionVariables">{{variable}}</li>
</ul>
</div>
</template>
In order to make Custom Identity Provider work, you'll have to properly implement and provide a set of following methods:
getToken
- resolving Chat Widget token. If you want to cache the token, this should return the cached token instead of a fresh request to https://accounts.livechat.com/customer/token endpoint.getFreshToken
- resolving Chat Widget token. This should always make a call for a fresh token from https://accounts.livechat.com/customer/token endpoint.hasToken
- resolving boolean. It determines whether a token has been acquired.invalidate
- resolving nothing. When called, it should remove the current token. There is no need to do anything else as a new token will be requested by getFreshToken afterwards.<script lang="ts" setup>
import { LiveChatWidget } from '@livechat/widget-vue'
const customIdentityProvider = () => {
const baseAPI = 'YOUR_API_URL'
const userId = '30317220-c72d-11ed-2137-0242ac120002'
const getToken = async () => {
const response = await fetch(`${baseAPI}/getToken/${userId}`)
const token = await response.json()
console.log('getToken', token)
return token
}
const getFreshToken = async () => {
const response = await fetch(`${baseAPI}/getFreshToken/${userId}`)
const token = await response.json()
console.log('getFreshToken, token')
return token
}
const hasToken = async () => {
const response = await fetch(`${baseAPI}/hasToken/${userId}`)
const data = await response.json()
return data
}
const invalidateToken = async () => {
const response = await fetch(`${baseAPI}/invalidate/${userId}`)
const data = await response.json()
console.log(data)
}
return {
getToken,
getFreshToken,
hasToken,
invalidate: invalidateToken,
}
}
</script>
<template>
<LiveChatWidget
license="12345678"
visibility="maximized"
:customIdentityProvider="customIdentityProvider"
/>
</template>
<template>
<LiveChatWidget
license="12345678"
visibility="maximized"
:customIdentityProvider="customIdentityProvider"
/>
</template>
<script>
import { LiveChatWidget } from '@livechat/widget-vue/v2'
export default {
name: 'App',
components: {
LiveChatWidget,
},
methods: {
customIdentityProvider() {
const baseAPI = 'YOUR_API_URL'
const userId = '30317220-c72d-11ed-2137-0242ac120002'
const getToken = async () => {
const response = await fetch(`${baseAPI}/getToken/${userId}`)
const token = await response.json()
console.log('getToken', token)
return token
}
const getFreshToken = async () => {
const response = await fetch(`${baseAPI}/getFreshToken/${userId}`)
const token = await response.json()
console.log('getFreshToken, token')
return token
}
const hasToken = async () => {
const response = await fetch(`${baseAPI}/hasToken/${userId}`)
const data = await response.json()
return data
}
const invalidateToken = async () => {
const response = await fetch(`${baseAPI}/invalidate/${userId}`)
const data = await response.json()
console.log(data)
}
return {
getToken,
getFreshToken,
hasToken,
invalidate: invalidateToken,
}
},
},
}
</script>
For more information about Custom Identity Provider, check out https://developers.livechat.com/docs/extending-chat-widget/custom-identity-provider
Pull requests are welcome. For major changes, please open an issue first, so we can discuss what you would like to change. Follow a Contributing guide for more details.
This project is MIT licensed
FAQs
This library allows to render and interact with the LiveChat Chat Widget inside a Vue 3 application
The npm package @livechat/widget-vue receives a total of 4,050 weekly downloads. As such, @livechat/widget-vue popularity was classified as popular.
We found that @livechat/widget-vue demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.