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

@liveblocks/react

Package Overview
Dependencies
Maintainers
5
Versions
418
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@liveblocks/react - npm Package Compare versions

Comparing version 2.9.2 to 2.9.3-emails1

dist/chunk-DW7VXZBG.js

6

dist/index.js

@@ -70,3 +70,3 @@ "use strict";Object.defineProperty(exports, "__esModule", {value: true});

var _chunk4LHU3NIYjs = require('./chunk-4LHU3NIY.js');
var _chunkDW7VXZBGjs = require('./chunk-DW7VXZBG.js');

@@ -76,3 +76,3 @@ // src/index.ts

var _client = require('@liveblocks/client');
_core.detectDupes.call(void 0, _chunk4LHU3NIYjs.PKG_NAME, _chunk4LHU3NIYjs.PKG_VERSION, _chunk4LHU3NIYjs.PKG_FORMAT);
_core.detectDupes.call(void 0, _chunkDW7VXZBGjs.PKG_NAME, _chunkDW7VXZBGjs.PKG_VERSION, _chunkDW7VXZBGjs.PKG_FORMAT);

@@ -145,3 +145,3 @@

exports.ClientContext = _chunk4LHU3NIYjs.ClientContext; exports.ClientSideSuspense = _chunk4LHU3NIYjs.ClientSideSuspense; exports.CreateThreadError = _chunk4LHU3NIYjs.CreateThreadError; exports.LiveblocksProvider = _chunk4LHU3NIYjs.LiveblocksProvider; exports.RoomContext = _chunk4LHU3NIYjs.RoomContext; exports.RoomProvider = _chunk4LHU3NIYjs._RoomProvider; exports.createLiveblocksContext = _chunk4LHU3NIYjs.createLiveblocksContext; exports.createRoomContext = _chunk4LHU3NIYjs.createRoomContext; exports.getUmbrellaStoreForClient = _chunk4LHU3NIYjs.getUmbrellaStoreForClient; exports.selectThreads = _chunk4LHU3NIYjs.selectThreads; exports.shallow = _client.shallow; exports.useAddReaction = _chunk4LHU3NIYjs._useAddReaction; exports.useAttachmentUrl = _chunk4LHU3NIYjs.useAttachmentUrl; exports.useBatch = _chunk4LHU3NIYjs.useBatch; exports.useBroadcastEvent = _chunk4LHU3NIYjs._useBroadcastEvent; exports.useCanRedo = _chunk4LHU3NIYjs.useCanRedo; exports.useCanUndo = _chunk4LHU3NIYjs.useCanUndo; exports.useClient = _chunk4LHU3NIYjs.useClient; exports.useCommentsErrorListener = _chunk4LHU3NIYjs.useCommentsErrorListener; exports.useCreateComment = _chunk4LHU3NIYjs.useCreateComment; exports.useCreateThread = _chunk4LHU3NIYjs._useCreateThread; exports.useDeleteAllInboxNotifications = _chunk4LHU3NIYjs.useDeleteAllInboxNotifications; exports.useDeleteComment = _chunk4LHU3NIYjs.useDeleteComment; exports.useDeleteInboxNotification = _chunk4LHU3NIYjs.useDeleteInboxNotification; exports.useDeleteThread = _chunk4LHU3NIYjs._useDeleteThread; exports.useEditComment = _chunk4LHU3NIYjs.useEditComment; exports.useEditThreadMetadata = _chunk4LHU3NIYjs._useEditThreadMetadata; exports.useErrorListener = _chunk4LHU3NIYjs.useErrorListener; exports.useEventListener = _chunk4LHU3NIYjs._useEventListener; exports.useHistory = _chunk4LHU3NIYjs.useHistory; exports.useHistoryVersionData = _chunk4LHU3NIYjs.useHistoryVersionData; exports.useHistoryVersions = _chunk4LHU3NIYjs._useHistoryVersions; exports.useInboxNotificationThread = _chunk4LHU3NIYjs._useInboxNotificationThread; exports.useInboxNotifications = _chunk4LHU3NIYjs.useInboxNotifications; exports.useIsInsideRoom = _chunk4LHU3NIYjs._useIsInsideRoom; exports.useLostConnectionListener = _chunk4LHU3NIYjs.useLostConnectionListener; exports.useMarkAllInboxNotificationsAsRead = _chunk4LHU3NIYjs.useMarkAllInboxNotificationsAsRead; exports.useMarkInboxNotificationAsRead = _chunk4LHU3NIYjs.useMarkInboxNotificationAsRead; exports.useMarkThreadAsRead = _chunk4LHU3NIYjs.useMarkThreadAsRead; exports.useMarkThreadAsResolved = _chunk4LHU3NIYjs.useMarkThreadAsResolved; exports.useMarkThreadAsUnresolved = _chunk4LHU3NIYjs.useMarkThreadAsUnresolved; exports.useMutation = _chunk4LHU3NIYjs._useMutation; exports.useMyPresence = _chunk4LHU3NIYjs._useMyPresence; exports.useOther = _chunk4LHU3NIYjs._useOther; exports.useOthers = _chunk4LHU3NIYjs._useOthers; exports.useOthersConnectionIds = _chunk4LHU3NIYjs.useOthersConnectionIds; exports.useOthersListener = _chunk4LHU3NIYjs._useOthersListener; exports.useOthersMapped = _chunk4LHU3NIYjs._useOthersMapped; exports.useRedo = _chunk4LHU3NIYjs.useRedo; exports.useRemoveReaction = _chunk4LHU3NIYjs.useRemoveReaction; exports.useRoom = _chunk4LHU3NIYjs._useRoom; exports.useRoomInfo = _chunk4LHU3NIYjs.useRoomInfo; exports.useRoomNotificationSettings = _chunk4LHU3NIYjs.useRoomNotificationSettings; exports.useSelf = _chunk4LHU3NIYjs._useSelf; exports.useStatus = _chunk4LHU3NIYjs.useStatus; exports.useStorage = _chunk4LHU3NIYjs._useStorage; exports.useStorageRoot = _chunk4LHU3NIYjs._useStorageRoot; exports.useStorageStatus = _chunk4LHU3NIYjs.useStorageStatus; exports.useThreadSubscription = _chunk4LHU3NIYjs.useThreadSubscription; exports.useThreads = _chunk4LHU3NIYjs._useThreads; exports.useUndo = _chunk4LHU3NIYjs.useUndo; exports.useUnreadInboxNotificationsCount = _chunk4LHU3NIYjs.useUnreadInboxNotificationsCount; exports.useUpdateMyPresence = _chunk4LHU3NIYjs._useUpdateMyPresence; exports.useUpdateRoomNotificationSettings = _chunk4LHU3NIYjs.useUpdateRoomNotificationSettings; exports.useUser = _chunk4LHU3NIYjs._useUser; exports.useUserThreads_experimental = _chunk4LHU3NIYjs._useUserThreads_experimental;
exports.ClientContext = _chunkDW7VXZBGjs.ClientContext; exports.ClientSideSuspense = _chunkDW7VXZBGjs.ClientSideSuspense; exports.CreateThreadError = _chunkDW7VXZBGjs.CreateThreadError; exports.LiveblocksProvider = _chunkDW7VXZBGjs.LiveblocksProvider; exports.RoomContext = _chunkDW7VXZBGjs.RoomContext; exports.RoomProvider = _chunkDW7VXZBGjs._RoomProvider; exports.createLiveblocksContext = _chunkDW7VXZBGjs.createLiveblocksContext; exports.createRoomContext = _chunkDW7VXZBGjs.createRoomContext; exports.getUmbrellaStoreForClient = _chunkDW7VXZBGjs.getUmbrellaStoreForClient; exports.selectThreads = _chunkDW7VXZBGjs.selectThreads; exports.shallow = _client.shallow; exports.useAddReaction = _chunkDW7VXZBGjs._useAddReaction; exports.useAttachmentUrl = _chunkDW7VXZBGjs.useAttachmentUrl; exports.useBatch = _chunkDW7VXZBGjs.useBatch; exports.useBroadcastEvent = _chunkDW7VXZBGjs._useBroadcastEvent; exports.useCanRedo = _chunkDW7VXZBGjs.useCanRedo; exports.useCanUndo = _chunkDW7VXZBGjs.useCanUndo; exports.useClient = _chunkDW7VXZBGjs.useClient; exports.useCommentsErrorListener = _chunkDW7VXZBGjs.useCommentsErrorListener; exports.useCreateComment = _chunkDW7VXZBGjs.useCreateComment; exports.useCreateThread = _chunkDW7VXZBGjs._useCreateThread; exports.useDeleteAllInboxNotifications = _chunkDW7VXZBGjs.useDeleteAllInboxNotifications; exports.useDeleteComment = _chunkDW7VXZBGjs.useDeleteComment; exports.useDeleteInboxNotification = _chunkDW7VXZBGjs.useDeleteInboxNotification; exports.useDeleteThread = _chunkDW7VXZBGjs._useDeleteThread; exports.useEditComment = _chunkDW7VXZBGjs.useEditComment; exports.useEditThreadMetadata = _chunkDW7VXZBGjs._useEditThreadMetadata; exports.useErrorListener = _chunkDW7VXZBGjs.useErrorListener; exports.useEventListener = _chunkDW7VXZBGjs._useEventListener; exports.useHistory = _chunkDW7VXZBGjs.useHistory; exports.useHistoryVersionData = _chunkDW7VXZBGjs.useHistoryVersionData; exports.useHistoryVersions = _chunkDW7VXZBGjs._useHistoryVersions; exports.useInboxNotificationThread = _chunkDW7VXZBGjs._useInboxNotificationThread; exports.useInboxNotifications = _chunkDW7VXZBGjs.useInboxNotifications; exports.useIsInsideRoom = _chunkDW7VXZBGjs._useIsInsideRoom; exports.useLostConnectionListener = _chunkDW7VXZBGjs.useLostConnectionListener; exports.useMarkAllInboxNotificationsAsRead = _chunkDW7VXZBGjs.useMarkAllInboxNotificationsAsRead; exports.useMarkInboxNotificationAsRead = _chunkDW7VXZBGjs.useMarkInboxNotificationAsRead; exports.useMarkThreadAsRead = _chunkDW7VXZBGjs.useMarkThreadAsRead; exports.useMarkThreadAsResolved = _chunkDW7VXZBGjs.useMarkThreadAsResolved; exports.useMarkThreadAsUnresolved = _chunkDW7VXZBGjs.useMarkThreadAsUnresolved; exports.useMutation = _chunkDW7VXZBGjs._useMutation; exports.useMyPresence = _chunkDW7VXZBGjs._useMyPresence; exports.useOther = _chunkDW7VXZBGjs._useOther; exports.useOthers = _chunkDW7VXZBGjs._useOthers; exports.useOthersConnectionIds = _chunkDW7VXZBGjs.useOthersConnectionIds; exports.useOthersListener = _chunkDW7VXZBGjs._useOthersListener; exports.useOthersMapped = _chunkDW7VXZBGjs._useOthersMapped; exports.useRedo = _chunkDW7VXZBGjs.useRedo; exports.useRemoveReaction = _chunkDW7VXZBGjs.useRemoveReaction; exports.useRoom = _chunkDW7VXZBGjs._useRoom; exports.useRoomInfo = _chunkDW7VXZBGjs.useRoomInfo; exports.useRoomNotificationSettings = _chunkDW7VXZBGjs.useRoomNotificationSettings; exports.useSelf = _chunkDW7VXZBGjs._useSelf; exports.useStatus = _chunkDW7VXZBGjs.useStatus; exports.useStorage = _chunkDW7VXZBGjs._useStorage; exports.useStorageRoot = _chunkDW7VXZBGjs._useStorageRoot; exports.useStorageStatus = _chunkDW7VXZBGjs.useStorageStatus; exports.useThreadSubscription = _chunkDW7VXZBGjs.useThreadSubscription; exports.useThreads = _chunkDW7VXZBGjs._useThreads; exports.useUndo = _chunkDW7VXZBGjs.useUndo; exports.useUnreadInboxNotificationsCount = _chunkDW7VXZBGjs.useUnreadInboxNotificationsCount; exports.useUpdateMyPresence = _chunkDW7VXZBGjs._useUpdateMyPresence; exports.useUpdateRoomNotificationSettings = _chunkDW7VXZBGjs.useUpdateRoomNotificationSettings; exports.useUser = _chunkDW7VXZBGjs._useUser; exports.useUserThreads_experimental = _chunkDW7VXZBGjs._useUserThreads_experimental;
//# sourceMappingURL=index.js.map

@@ -63,3 +63,3 @@ "use strict";Object.defineProperty(exports, "__esModule", {value: true});

var _chunk4LHU3NIYjs = require('./chunk-4LHU3NIY.js');
var _chunkDW7VXZBGjs = require('./chunk-DW7VXZBG.js');

@@ -69,3 +69,3 @@ // src/suspense.ts

var _client = require('@liveblocks/client');
_core.detectDupes.call(void 0, _chunk4LHU3NIYjs.PKG_NAME, _chunk4LHU3NIYjs.PKG_VERSION, _chunk4LHU3NIYjs.PKG_FORMAT);
_core.detectDupes.call(void 0, _chunkDW7VXZBGjs.PKG_NAME, _chunkDW7VXZBGjs.PKG_VERSION, _chunkDW7VXZBGjs.PKG_FORMAT);

@@ -131,3 +131,3 @@

exports.ClientContext = _chunk4LHU3NIYjs.ClientContext; exports.ClientSideSuspense = _chunk4LHU3NIYjs.ClientSideSuspense; exports.LiveblocksProvider = _chunk4LHU3NIYjs.LiveblocksProvider; exports.RoomContext = _chunk4LHU3NIYjs.RoomContext; exports.RoomProvider = _chunk4LHU3NIYjs._RoomProvider; exports.shallow = _client.shallow; exports.useAddReaction = _chunk4LHU3NIYjs._useAddReaction; exports.useAttachmentUrl = _chunk4LHU3NIYjs.useAttachmentUrlSuspense; exports.useBatch = _chunk4LHU3NIYjs.useBatch; exports.useBroadcastEvent = _chunk4LHU3NIYjs._useBroadcastEvent; exports.useCanRedo = _chunk4LHU3NIYjs.useCanRedo; exports.useCanUndo = _chunk4LHU3NIYjs.useCanUndo; exports.useClient = _chunk4LHU3NIYjs.useClient; exports.useCreateComment = _chunk4LHU3NIYjs.useCreateComment; exports.useCreateThread = _chunk4LHU3NIYjs._useCreateThread; exports.useDeleteAllInboxNotifications = _chunk4LHU3NIYjs.useDeleteAllInboxNotifications; exports.useDeleteComment = _chunk4LHU3NIYjs.useDeleteComment; exports.useDeleteInboxNotification = _chunk4LHU3NIYjs.useDeleteInboxNotification; exports.useDeleteThread = _chunk4LHU3NIYjs._useDeleteThread; exports.useEditComment = _chunk4LHU3NIYjs.useEditComment; exports.useEditThreadMetadata = _chunk4LHU3NIYjs._useEditThreadMetadata; exports.useErrorListener = _chunk4LHU3NIYjs.useErrorListener; exports.useEventListener = _chunk4LHU3NIYjs._useEventListener; exports.useHistory = _chunk4LHU3NIYjs.useHistory; exports.useHistoryVersions = _chunk4LHU3NIYjs._useHistoryVersionsSuspense; exports.useInboxNotificationThread = _chunk4LHU3NIYjs._useInboxNotificationThread; exports.useInboxNotifications = _chunk4LHU3NIYjs.useInboxNotificationsSuspense; exports.useIsInsideRoom = _chunk4LHU3NIYjs._useIsInsideRoom; exports.useLostConnectionListener = _chunk4LHU3NIYjs.useLostConnectionListener; exports.useMarkAllInboxNotificationsAsRead = _chunk4LHU3NIYjs.useMarkAllInboxNotificationsAsRead; exports.useMarkInboxNotificationAsRead = _chunk4LHU3NIYjs.useMarkInboxNotificationAsRead; exports.useMarkThreadAsRead = _chunk4LHU3NIYjs.useMarkThreadAsRead; exports.useMarkThreadAsResolved = _chunk4LHU3NIYjs.useMarkThreadAsResolved; exports.useMarkThreadAsUnresolved = _chunk4LHU3NIYjs.useMarkThreadAsUnresolved; exports.useMutation = _chunk4LHU3NIYjs._useMutation; exports.useMyPresence = _chunk4LHU3NIYjs._useMyPresence; exports.useOther = _chunk4LHU3NIYjs._useOtherSuspense; exports.useOthers = _chunk4LHU3NIYjs._useOthersSuspense; exports.useOthersConnectionIds = _chunk4LHU3NIYjs.useOthersConnectionIdsSuspense; exports.useOthersListener = _chunk4LHU3NIYjs._useOthersListener; exports.useOthersMapped = _chunk4LHU3NIYjs._useOthersMappedSuspense; exports.useRedo = _chunk4LHU3NIYjs.useRedo; exports.useRemoveReaction = _chunk4LHU3NIYjs.useRemoveReaction; exports.useRoom = _chunk4LHU3NIYjs._useRoom; exports.useRoomInfo = _chunk4LHU3NIYjs.useRoomInfoSuspense; exports.useRoomNotificationSettings = _chunk4LHU3NIYjs.useRoomNotificationSettings; exports.useSelf = _chunk4LHU3NIYjs._useSelfSuspense; exports.useStatus = _chunk4LHU3NIYjs.useStatus; exports.useStorage = _chunk4LHU3NIYjs._useStorageSuspense; exports.useStorageRoot = _chunk4LHU3NIYjs._useStorageRoot; exports.useStorageStatus = _chunk4LHU3NIYjs.useStorageStatusSuspense; exports.useThreadSubscription = _chunk4LHU3NIYjs.useThreadSubscription; exports.useThreads = _chunk4LHU3NIYjs._useThreadsSuspense; exports.useUndo = _chunk4LHU3NIYjs.useUndo; exports.useUnreadInboxNotificationsCount = _chunk4LHU3NIYjs.useUnreadInboxNotificationsCountSuspense; exports.useUpdateMyPresence = _chunk4LHU3NIYjs._useUpdateMyPresence; exports.useUpdateRoomNotificationSettings = _chunk4LHU3NIYjs.useUpdateRoomNotificationSettings; exports.useUser = _chunk4LHU3NIYjs._useUserSuspense; exports.useUserThreads_experimental = _chunk4LHU3NIYjs._useUserThreadsSuspense_experimental;
exports.ClientContext = _chunkDW7VXZBGjs.ClientContext; exports.ClientSideSuspense = _chunkDW7VXZBGjs.ClientSideSuspense; exports.LiveblocksProvider = _chunkDW7VXZBGjs.LiveblocksProvider; exports.RoomContext = _chunkDW7VXZBGjs.RoomContext; exports.RoomProvider = _chunkDW7VXZBGjs._RoomProvider; exports.shallow = _client.shallow; exports.useAddReaction = _chunkDW7VXZBGjs._useAddReaction; exports.useAttachmentUrl = _chunkDW7VXZBGjs.useAttachmentUrlSuspense; exports.useBatch = _chunkDW7VXZBGjs.useBatch; exports.useBroadcastEvent = _chunkDW7VXZBGjs._useBroadcastEvent; exports.useCanRedo = _chunkDW7VXZBGjs.useCanRedo; exports.useCanUndo = _chunkDW7VXZBGjs.useCanUndo; exports.useClient = _chunkDW7VXZBGjs.useClient; exports.useCreateComment = _chunkDW7VXZBGjs.useCreateComment; exports.useCreateThread = _chunkDW7VXZBGjs._useCreateThread; exports.useDeleteAllInboxNotifications = _chunkDW7VXZBGjs.useDeleteAllInboxNotifications; exports.useDeleteComment = _chunkDW7VXZBGjs.useDeleteComment; exports.useDeleteInboxNotification = _chunkDW7VXZBGjs.useDeleteInboxNotification; exports.useDeleteThread = _chunkDW7VXZBGjs._useDeleteThread; exports.useEditComment = _chunkDW7VXZBGjs.useEditComment; exports.useEditThreadMetadata = _chunkDW7VXZBGjs._useEditThreadMetadata; exports.useErrorListener = _chunkDW7VXZBGjs.useErrorListener; exports.useEventListener = _chunkDW7VXZBGjs._useEventListener; exports.useHistory = _chunkDW7VXZBGjs.useHistory; exports.useHistoryVersions = _chunkDW7VXZBGjs._useHistoryVersionsSuspense; exports.useInboxNotificationThread = _chunkDW7VXZBGjs._useInboxNotificationThread; exports.useInboxNotifications = _chunkDW7VXZBGjs.useInboxNotificationsSuspense; exports.useIsInsideRoom = _chunkDW7VXZBGjs._useIsInsideRoom; exports.useLostConnectionListener = _chunkDW7VXZBGjs.useLostConnectionListener; exports.useMarkAllInboxNotificationsAsRead = _chunkDW7VXZBGjs.useMarkAllInboxNotificationsAsRead; exports.useMarkInboxNotificationAsRead = _chunkDW7VXZBGjs.useMarkInboxNotificationAsRead; exports.useMarkThreadAsRead = _chunkDW7VXZBGjs.useMarkThreadAsRead; exports.useMarkThreadAsResolved = _chunkDW7VXZBGjs.useMarkThreadAsResolved; exports.useMarkThreadAsUnresolved = _chunkDW7VXZBGjs.useMarkThreadAsUnresolved; exports.useMutation = _chunkDW7VXZBGjs._useMutation; exports.useMyPresence = _chunkDW7VXZBGjs._useMyPresence; exports.useOther = _chunkDW7VXZBGjs._useOtherSuspense; exports.useOthers = _chunkDW7VXZBGjs._useOthersSuspense; exports.useOthersConnectionIds = _chunkDW7VXZBGjs.useOthersConnectionIdsSuspense; exports.useOthersListener = _chunkDW7VXZBGjs._useOthersListener; exports.useOthersMapped = _chunkDW7VXZBGjs._useOthersMappedSuspense; exports.useRedo = _chunkDW7VXZBGjs.useRedo; exports.useRemoveReaction = _chunkDW7VXZBGjs.useRemoveReaction; exports.useRoom = _chunkDW7VXZBGjs._useRoom; exports.useRoomInfo = _chunkDW7VXZBGjs.useRoomInfoSuspense; exports.useRoomNotificationSettings = _chunkDW7VXZBGjs.useRoomNotificationSettings; exports.useSelf = _chunkDW7VXZBGjs._useSelfSuspense; exports.useStatus = _chunkDW7VXZBGjs.useStatus; exports.useStorage = _chunkDW7VXZBGjs._useStorageSuspense; exports.useStorageRoot = _chunkDW7VXZBGjs._useStorageRoot; exports.useStorageStatus = _chunkDW7VXZBGjs.useStorageStatusSuspense; exports.useThreadSubscription = _chunkDW7VXZBGjs.useThreadSubscription; exports.useThreads = _chunkDW7VXZBGjs._useThreadsSuspense; exports.useUndo = _chunkDW7VXZBGjs.useUndo; exports.useUnreadInboxNotificationsCount = _chunkDW7VXZBGjs.useUnreadInboxNotificationsCountSuspense; exports.useUpdateMyPresence = _chunkDW7VXZBGjs._useUpdateMyPresence; exports.useUpdateRoomNotificationSettings = _chunkDW7VXZBGjs.useUpdateRoomNotificationSettings; exports.useUser = _chunkDW7VXZBGjs._useUserSuspense; exports.useUserThreads_experimental = _chunkDW7VXZBGjs._useUserThreadsSuspense_experimental;
//# sourceMappingURL=suspense.js.map
{
"name": "@liveblocks/react",
"version": "2.9.2",
"version": "2.9.3-emails1",
"description": "A set of React hooks and providers to use Liveblocks declaratively. Liveblocks is the all-in-one toolkit to build collaborative products like Figma, Notion, and more.",

@@ -52,4 +52,4 @@ "license": "Apache-2.0",

"dependencies": {
"@liveblocks/client": "2.9.2",
"@liveblocks/core": "2.9.2",
"@liveblocks/client": "2.9.3-emails1",
"@liveblocks/core": "2.9.3-emails1",
"use-sync-external-store": "^1.2.2"

@@ -56,0 +56,0 @@ },

Sorry, the diff of this file is not supported yet

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