Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@tencentcloud/call-uikit-vue2.6

Package Overview
Dependencies
Maintainers
0
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tencentcloud/call-uikit-vue2.6 - npm Package Compare versions

Comparing version 3.3.7 to 3.3.9

src/Components/assets/streamInfo/networkStatus.png

4

package.json
{
"name": "@tencentcloud/call-uikit-vue2.6",
"version": "3.3.7",
"version": "3.3.9",
"main": "./tuicall-uikit-vue2.umd.js",

@@ -19,3 +19,3 @@ "module": "./tuicall-uikit-vue2.es.js",

"@vue/composition-api": "^1.7.2",
"tuicall-engine-webrtc": "^3.1.2"
"tuicall-engine-webrtc": "^3.1.5"
},

@@ -22,0 +22,0 @@ "bugs": {

@@ -10,1 +10,2 @@ export * from './CallInfoContext';

export * from './CustomUIConfigContext';
export * from './TranslateContext';

@@ -22,1 +22,2 @@ export * from './useCallerUserInfoContext';

export * from './useJoinGroupCall';
export * from './useTranslate';

@@ -11,16 +11,9 @@ import { ref, onMounted, onUnmounted } from '../../adapter-vue';

const handleCallTipsChange = (value) => {
duration.value = 0;
tip.value = value;
};
const handleToastInfoChange = (value) => {
let text = value;
if (typeof value === 'object') {
if (typeof text === 'object') {
text = value?.text;
tip.value = value.text;
duration.value = value.duration || 0;
} else {
tip.value = value;
}
if (text) {
duration.value = 2000;
tip.value = text;
}
};

@@ -38,8 +31,2 @@

);
TUIStore.watch(
StoreName.CALL,
{
[NAME.TOAST_INFO]: handleToastInfoChange,
},
);
});

@@ -52,3 +39,2 @@

[NAME.CALL_TIPS]: handleCallTipsChange,
[NAME.TOAST_INFO]: handleToastInfoChange,
},

@@ -55,0 +41,0 @@ );

@@ -40,3 +40,3 @@ import {

};
const Version = '3.3.7'; // basic-demo 原来上报使用
const Version = '3.3.9'; // basic-demo 原来上报使用

@@ -43,0 +43,0 @@ // 输出产物

@@ -9,10 +9,10 @@ import { TUICore, TUILogin, TUIConstants, ExtensionInfo } from '@tencentcloud/tui-core';

import TencentCloudChat from '@tencentcloud/chat';
import { t } from '../locales';
import { t } from '../locales/index';
const TUIStore: ITUIStore = TuiStore.getInstance();
const cmd2messageCardContentMap = {
audioCall: () => t('Voice call'),
videoCall: () => t('Video call'),
switchToAudio: () => t('Switch audio call'),
switchToVideo: () => t('Switch video call'),
audioCall: () => 'Voice call',
videoCall: () => 'Video call',
switchToAudio: () => 'Switch audio call',
switchToVideo: () => 'Switch video call',
hangup: ({ callDuration }) => `${t('Call duration')}:${callDuration}`,

@@ -220,3 +220,3 @@ };

case ACTION_TYPE.CANCEL_INVITE:
messageCardContent = isInviter ? t('Call Cancel') : t('Other Side Cancel');
messageCardContent = isInviter ? 'Call Cancel' : 'Other Side Cancel';
break;

@@ -233,5 +233,5 @@ case ACTION_TYPE.ACCEPT_INVITE:

if (this.isLineBusy(message)) {
messageCardContent = isInviter ? t('Line Busy') : t('Other Side Line Busy');
messageCardContent = isInviter ? 'Line Busy' : 'Other Side Line Busy';
} else {
messageCardContent = isInviter ? t('Other Side Decline') : t('Decline');
messageCardContent = isInviter ? 'Other Side Decline' : 'Decline';
}

@@ -244,3 +244,3 @@

} else {
messageCardContent = isInviter ? t('Other Side No Answer') : t('No answer');
messageCardContent = isInviter ? 'Other Side No Answer' : 'No answer';
}

@@ -247,0 +247,0 @@

@@ -9,3 +9,3 @@ import { ITUIStore } from '../interface/ITUIStore';

import { initAndCheckRunEnv } from './miniProgram';
import { getMyProfile, getRemoteUserProfile, generateText, updateRoomIdAndRoomIdType, analyzeEventData, deleteRemoteUser } from './utils';
import { getMyProfile, getRemoteUserProfile, updateRoomIdAndRoomIdType, analyzeEventData, deleteRemoteUser } from './utils';
import promiseRetryDecorator from '../utils/decorators/promise-retry';

@@ -106,9 +106,8 @@ import { UIDesign } from './UIDesign';

let callTipsKey = eventName === TUICallEvent.REJECT ? CallTips.OTHER_SIDE_REJECT_CALL : CallTips.OTHER_SIDE_LINE_BUSY;
let text = generateText(callTipsKey);
let userListNeedToShow = '';
if (isGroup) {
const prefix: string = (remoteUserInfoList.find(obj => obj.userId === userId) || {}).displayUserInfo || userId;
userListNeedToShow = (remoteUserInfoList.find(obj => obj.userId === userId) || {}).displayUserInfo || userId;
callTipsKey = eventName === TUICallEvent.REJECT ? CallTips.REJECT_CALL : CallTips.IN_BUSY;
text = generateText(callTipsKey, prefix);
}
TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { text });
TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { content: { key: callTipsKey, options: { userList: userListNeedToShow } } });
userId && deleteRemoteUser([userId]);

@@ -124,4 +123,3 @@ break;

});
const text = isGroup ? generateText(callTipsKey, userInfoList.join()) : generateText(callTipsKey);
TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { text });
TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { content: { key: callTipsKey, options: { userList: userInfoList.join() } } });
userIDList.length > 0 && deleteRemoteUser(userIDList);

@@ -131,3 +129,2 @@ break;

case TUICallEvent.CALLING_CANCEL: {
// TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { text: generateText(CallTips.CANCEL) });
this._callService?._resetCallStore();

@@ -148,3 +145,3 @@ break;

callTips = t(ErrorMessage[key]);
callTips && TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { text: callTips, type: NAME.ERROR });
callTips && TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { content: ErrorMessage[key], type: NAME.ERROR });
}

@@ -166,3 +163,3 @@ this._callService?.executeExternalAfterCalling();

[NAME.CALL_MEDIA_TYPE]: type,
[NAME.CALL_TIPS]: t(callTipsKey),
[NAME.CALL_TIPS]: callTipsKey,
[NAME.CALLER_USER_INFO]: { userId: sponsor },

@@ -192,3 +189,3 @@ [NAME.GROUP_ID]: groupID,

this._callerChangeToConnected();
TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, t('answered'));
TUIStore.update(StoreName.CALL, NAME.CALL_TIPS, { text: 'answered', duration: 2000 });
console.log(`${NAME.PREFIX}accept event data: ${JSON.stringify(event)}.`);

@@ -235,5 +232,4 @@ }

const remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
const prefix: string = (remoteUserInfoList.find(obj => obj.userId === userId) || {}).displayUserInfo || userId;
const text = generateText(CallTips.END_CALL, prefix);
TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { text });
const userListNeedToShow: string = (remoteUserInfoList.find(obj => obj.userId === userId) || {}).displayUserInfo || userId;
TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { content: { key: CallTips.END_CALL, options: { userList: userListNeedToShow } } });
}

@@ -266,4 +262,2 @@ userId && deleteRemoteUser([userId]);

this._callService?.setDefaultOfflinePushInfo({ ...this._callService?.getDefaultOfflinePushInfo(), title: localUserInfo?.displayUserInfo });
TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO, localUserInfo);

@@ -277,3 +271,3 @@ TUIStore.update(StoreName.CALL, NAME.LOCAL_USER_INFO_EXCLUDE_VOLUMN, localUserInfo);

TUIStore.update(StoreName.CALL, NAME.CALL_TIPS, generateText(CallTips.KICK_OUT));
TUIStore.update(StoreName.CALL, NAME.CALL_TIPS, CallTips.KICK_OUT);
this._callService?._resetCallStore();

@@ -305,3 +299,3 @@ }

if(isLocalNetworkPoor) {
TUIStore.update(StoreName.CALL, NAME.CALL_TIPS, t(CallTips.LOCAL_NETWORK_IS_POOR));
TUIStore.update(StoreName.CALL, NAME.CALL_TIPS, CallTips.LOCAL_NETWORK_IS_POOR);
return;

@@ -308,0 +302,0 @@ }

@@ -30,3 +30,3 @@ import {

uiDesign.setTUIStore(TUIStore);
const version = '3.3.7';
const version = '3.3.9';
const frameWork = 'vue2.6';

@@ -45,6 +45,3 @@ export { TUIGlobal, TUIStore, uiDesign };

private _currentGroupId: string = ''; // The currentGroupId of the group chat that the user is currently in
private _defaultOfflinePushInfo = {
title: '',
description: t('you have a new call'),
};
private _offlinePushInfo = null;
private _permissionCheckTimer: any = null;

@@ -139,3 +136,3 @@ private _chatCombine: any = null;

this.executeExternalBeforeCalling(); // 执行外部传入的 beforeCall 方法
callParams.offlinePushInfo = { ...this._defaultOfflinePushInfo, ...offlinePushInfo };
callParams.offlinePushInfo = { ...this.getDefaultOfflinePushInfo(), ...offlinePushInfo };
const response = await this._tuiCallEngine.call(callParams);

@@ -158,3 +155,3 @@ await this._updateCallStoreAfterCall([userID], response);

this.executeExternalBeforeCalling();
groupCallParams.offlinePushInfo = { ...this._defaultOfflinePushInfo, ...offlinePushInfo };
groupCallParams.offlinePushInfo = { ...this.getDefaultOfflinePushInfo(), ...offlinePushInfo };
const response = await this._tuiCallEngine.groupCall(groupCallParams);

@@ -175,2 +172,8 @@ await this._updateCallStoreAfterCall(userIDList, response);

const remoteUserInfoList = TUIStore.getData(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST);
const userIDListNotInRemoteUserInfoList = userIDList.filter(userId => {
return !remoteUserInfoList.some(remoteUserInfo => remoteUserInfo.userId === userId);
});
if (userIDListNotInRemoteUserInfoList.length === 0) {
return;
}
TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_LIST, [...remoteUserInfoList, ...inviteUserInfoList]);

@@ -181,4 +184,2 @@ TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, [...remoteUserInfoList, ...inviteUserInfoList]);

console.error(`${NAME.PREFIX}inviteUser failed, error: ${error}.`);
this._resetCallStore();
throw error;
}

@@ -227,2 +228,3 @@ }

TUIStore.update(StoreName.CALL, NAME.LANGUAGE, language);
TUIStore.update(StoreName.CALL, NAME.TRANSLATE, t.bind(null));
}

@@ -361,3 +363,9 @@ }

try {
await this._tuiCallEngine.openCamera(videoViewDomID);
if (TUIGlobal.isH5) {
const currentPosition = TUIStore.getData(StoreName.CALL, NAME.CAMERA_POSITION);
const isFrontCamera = currentPosition === CameraPosition.FRONT ? true : false;
await this._tuiCallEngine.openCamera(videoViewDomID, isFrontCamera);
} else {
await this._tuiCallEngine.openCamera(videoViewDomID);
}
setLocalUserInfoAudioVideoAvailable(true, NAME.VIDEO);

@@ -559,3 +567,3 @@ } catch (error: any) {

[NAME.IS_GROUP]: !!groupID,
[NAME.CALL_TIPS]: t(callTips),
[NAME.CALL_TIPS]: callTips,
[NAME.GROUP_ID]: groupID

@@ -666,2 +674,4 @@ };

TUIStore.update(StoreName.CALL, NAME.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, []);
TUIStore.update(StoreName.CALL, NAME.CAMERA_POSITION, CameraPosition.FRONT);
const newStatusStr = generateStatusChangeText();

@@ -752,6 +762,14 @@ if (oldStatusStr !== newStatusStr) {

public setDefaultOfflinePushInfo(offlinePushInfo) {
this._defaultOfflinePushInfo = offlinePushInfo;
this._offlinePushInfo = offlinePushInfo;
}
public getDefaultOfflinePushInfo() {
return this._defaultOfflinePushInfo;
const localUserInfo: IUserInfo = TUIStore.getData(StoreName.CALL, NAME.LOCAL_USER_INFO);
if (this._offlinePushInfo) {
return this._offlinePushInfo;
}
return {
title: localUserInfo?.displayUserInfo || '',
description: t('you have a new call'),
};
}

@@ -758,0 +776,0 @@ public async getCallMessage(message) {

@@ -226,9 +226,9 @@ import { NAME, StoreName, CallStatus, StatusChange, CallMediaType, ROOM_ID_TYPE } from '../const/index';

export function noDevicePermissionToast(error, type: CallMediaType, tuiCallEngine: any) {
let toastInfoKey = '';
if (handleNoDevicePermissionError(error)) {
let text = '';
if (type === CallMediaType.AUDIO) {
text = generateText(CallTips.NO_MICROPHONE_DEVICE_PERMISSION);
toastInfoKey = CallTips.NO_MICROPHONE_DEVICE_PERMISSION;
}
if (type === CallMediaType.VIDEO) {
text = generateText(CallTips.NO_CAMERA_DEVICE_PERMISSION);
toastInfoKey = CallTips.NO_CAMERA_DEVICE_PERMISSION;
}

@@ -241,3 +241,3 @@

text && TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { text, type: NAME.ERROR });
toastInfoKey && TUIStore.update(StoreName.CALL, NAME.TOAST_INFO, { content: toastInfoKey, type: NAME.ERROR });
console.error(`${NAME.PREFIX}call failed, error: ${error.message}.`);

@@ -244,0 +244,0 @@ }

@@ -73,2 +73,3 @@ export * from './call';

CUSTOM_UI_CONFIG: 'customUIConfig',
TRANSLATE: 'translate',
...PUSHER_ID,

@@ -75,0 +76,0 @@ ...CALL_DATA_KEY,

@@ -51,2 +51,4 @@ import { CallStatus, CallRole, CallMediaType, VideoDisplayMode, VideoResolution, TDeviceList, CameraPosition, ICustomUIConfig } from '../const/index';

pusherId: string, // 重新渲染 live-Pusher 的标识位
// translate function
translate: Function,
}

@@ -17,9 +17,9 @@ export const en = {

'other side reject call': 'other side reject call',
'reject call': 'Reject Call',
'reject call': '{{ userList }} Reject Call',
'cancel': 'Cancel Call',
'other side line busy': 'other side line busy',
'in busy': 'in busy',
'in busy': '{{ userList }} in busy',
'call timeout': 'call timeout',
'no response from the other side': 'no response from the other side',
'end call': 'end call',
'end call': '{{ userList }} end call',
// 通话提示语

@@ -106,3 +106,3 @@ 'caller calling message': 'Awaiting response',

'microphone-closed': 'Mic off',
'timeout': 'timeout',
'timeout': '{{ userList }} timeout',
'kick out': 'kick out',

@@ -109,0 +109,0 @@ 'image-resolution': 'Resolution',

import { TUIStore } from '../CallService/index';
import { NAME, StoreName } from '../const/index';
import { zh } from './zh-cn';
// @if process.env.BUILD_TARGET!='MINI'
import { en } from './en';
import { zh } from './zh-cn';
import { ja_JP } from './ja_JP';
// @endif
import { interpolate, isString, isPlainObject } from '../utils/common-utils';
export const CallTips: any = {

@@ -30,25 +34,22 @@ OTHER_SIDE: 'other side',

export const languageData: languageDataType = {
'zh-cn': zh,
// @if process.env.BUILD_TARGET!='MINI'
en,
'zh-cn': zh,
ja_JP,
// @endif
};
// language translate
export function t(key: any): string {
export function t(args): string {
const language = TUIStore.getData(StoreName.CALL, NAME.LANGUAGE);
// eslint-disable-next-line
for (const langKey in languageData) {
if (langKey === language) {
const currentLanguage = languageData[langKey];
// eslint-disable-next-line
for (const sentenceKey in currentLanguage) {
if (sentenceKey === key) {
return currentLanguage[sentenceKey];
}
}
}
let translationContent = '';
if (isString(args)) {
translationContent = languageData?.[language]?.[args] || '';
} else if (isPlainObject(args)) {
const { key, options } = args;
translationContent = languageData?.[language]?.[key] || '';
translationContent = interpolate(translationContent, options);
}
const enString = key['en']?.key; // eslint-disable-line
console.error(`${NAME.PREFIX}translation is not found: ${key}.`);
return enString;
return translationContent;
}

@@ -55,0 +56,0 @@

@@ -12,8 +12,8 @@ export const ja_JP = {

'other side reject call': '通話が拒否されました',
'reject call': '通話拒否',
'reject call': '{{ userList }} 通話拒否',
'cancel': '通話をキャンセル',
'other side line busy': '相手が通話中です',
'in busy': '通話中',
'in busy': '{{ userList }} 通話中',
'call timeout': '呼び出しタイムアウト',
'end call': '通話終了',
'end call': '{{ userList }} 通話終了',
// 通话提示语

@@ -82,3 +82,3 @@ 'caller calling message': '応答を待っています',

// 待废弃文案
'timeout': 'タイムアウト',
'timeout': '{{ userList }} タイムアウト',
'kick out': 'キックアウトされました',

@@ -85,0 +85,0 @@ 'Invited group call': 'グループ通話に招待されました。',

@@ -17,8 +17,8 @@ export const zh = {

'other side reject call': '对方已拒绝',
'reject call': '拒绝通话',
'reject call': '{{ userList }} 拒绝通话',
'cancel': '取消通话',
'other side line busy': '对方忙线',
'in busy': '正在忙',
'in busy': '{{ userList }} 正在忙',
'call timeout': '呼叫超时',
'end call': '结束通话',
'end call': '{{ userList }} 结束通话',
// 通话提示语

@@ -87,3 +87,3 @@ 'caller calling message': '等待对方接受邀请',

// 待废弃文案
'timeout': '超时',
'timeout': '{{ userList }} 超时',
'kick out': '被踢',

@@ -90,0 +90,0 @@ 'call': '通话',

import { CallStatus, CallRole, CallMediaType, VideoDisplayMode, VideoResolution, CameraPosition, LayoutMode, NAME } from '../const/index';
import { ICallStore } from '../interface/ICallStore';
import { t } from '../locales/index';
import { getLanguage } from '../utils/common-utils';

@@ -52,3 +53,4 @@ import { deepClone } from "../utils/index";

},
// translate function
translate: t,
};

@@ -55,0 +57,0 @@ public store: ICallStore = deepClone(this.defaultStore);

@@ -240,1 +240,16 @@ import { NAME } from '../const/index';

}
/**
* interpolate function
* @param {string} str - 'hello {{name}}'
* @param {object} data - { name: 'sam' }
* @returns {string} 'hello sam'
*
*/
export function interpolate(str, data) {
return str.replace(/{{\s*(\w+)(\s*,\s*[^}]+)?\s*}}/g, (match, p1) => {
const key = p1.trim();
return data[key] !== undefined ? String(data[key]) : match;
});
}

@@ -10,1 +10,2 @@ export * from './CallInfoContext';

export * from './CustomUIConfigContext';
export * from './TranslateContext';

@@ -20,1 +20,2 @@ export * from './useCallerUserInfoContext';

export * from './useJoinGroupCall';
export * from './useTranslate';

@@ -19,3 +19,3 @@ import { ITUICallService, ICallParams, IGroupCallParams, ICallbackParam, ISelfInfoParams, IInviteUserParams, IJoinInGroupCallParams, IInitParams } from '../interface/ICallService';

private _preDevicePermission;
private _defaultOfflinePushInfo;
private _offlinePushInfo;
private _permissionCheckTimer;

@@ -97,7 +97,4 @@ private _chatCombine;

setDefaultOfflinePushInfo(offlinePushInfo: any): void;
getDefaultOfflinePushInfo(): {
title: string;
description: string;
};
getDefaultOfflinePushInfo(): any;
getCallMessage(message: any): Promise<any>;
}

@@ -44,2 +44,3 @@ import { CallStatus, CallRole, CallMediaType, VideoDisplayMode, VideoResolution, TDeviceList, CameraPosition, ICustomUIConfig } from '../const/index';

pusherId: string;
translate: Function;
}
export declare const CallTips: any;
export declare const languageData: languageDataType;
export declare function t(key: any): string;
export declare function t(args: any): string;
interface languageItemType {

@@ -5,0 +5,0 @@ [key: string]: string;

@@ -54,1 +54,9 @@ export declare const isUndefined: (input: any) => boolean;

export declare function modifyObjectKey(obj: any, oldKey: any, newKey: any): any;
/**
* interpolate function
* @param {string} str - 'hello {{name}}'
* @param {object} data - { name: 'sam' }
* @returns {string} 'hello sam'
*
*/
export declare function interpolate(str: any, data: any): any;

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc