akeyless-client-commons 1.1.1 → 1.1.2
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/dist/components/index.js +6 -278
- package/dist/components/index.mjs +6 -278
- package/dist/helpers/index.d.mts +2 -34
- package/dist/helpers/index.d.ts +2 -34
- package/dist/helpers/index.js +0 -295
- package/dist/helpers/index.mjs +1 -292
- package/dist/hooks/index.d.mts +1 -5
- package/dist/hooks/index.d.ts +1 -5
- package/dist/hooks/index.js +1 -374
- package/dist/hooks/index.mjs +1 -370
- package/package.json +2 -4
package/dist/hooks/index.mjs
CHANGED
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
// src/hooks/global.ts
|
|
2
|
-
function _array_like_to_array(arr, len) {
|
|
3
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
4
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
5
|
-
return arr2;
|
|
6
|
-
}
|
|
7
|
-
function _array_with_holes(arr) {
|
|
8
|
-
if (Array.isArray(arr)) return arr;
|
|
9
|
-
}
|
|
10
2
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
11
3
|
try {
|
|
12
4
|
var info = gen[key](arg);
|
|
@@ -36,25 +28,6 @@ function _async_to_generator(fn) {
|
|
|
36
28
|
});
|
|
37
29
|
};
|
|
38
30
|
}
|
|
39
|
-
function _class_call_check(instance, Constructor) {
|
|
40
|
-
if (!(instance instanceof Constructor)) {
|
|
41
|
-
throw new TypeError("Cannot call a class as a function");
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
function _defineProperties(target, props) {
|
|
45
|
-
for(var i = 0; i < props.length; i++){
|
|
46
|
-
var descriptor = props[i];
|
|
47
|
-
descriptor.enumerable = descriptor.enumerable || false;
|
|
48
|
-
descriptor.configurable = true;
|
|
49
|
-
if ("value" in descriptor) descriptor.writable = true;
|
|
50
|
-
Object.defineProperty(target, descriptor.key, descriptor);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
function _create_class(Constructor, protoProps, staticProps) {
|
|
54
|
-
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
55
|
-
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
56
|
-
return Constructor;
|
|
57
|
-
}
|
|
58
31
|
function _define_property(obj, key, value) {
|
|
59
32
|
if (key in obj) {
|
|
60
33
|
Object.defineProperty(obj, key, {
|
|
@@ -68,33 +41,6 @@ function _define_property(obj, key, value) {
|
|
|
68
41
|
}
|
|
69
42
|
return obj;
|
|
70
43
|
}
|
|
71
|
-
function _iterable_to_array_limit(arr, i) {
|
|
72
|
-
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
73
|
-
if (_i == null) return;
|
|
74
|
-
var _arr = [];
|
|
75
|
-
var _n = true;
|
|
76
|
-
var _d = false;
|
|
77
|
-
var _s, _e;
|
|
78
|
-
try {
|
|
79
|
-
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
80
|
-
_arr.push(_s.value);
|
|
81
|
-
if (i && _arr.length === i) break;
|
|
82
|
-
}
|
|
83
|
-
} catch (err) {
|
|
84
|
-
_d = true;
|
|
85
|
-
_e = err;
|
|
86
|
-
} finally{
|
|
87
|
-
try {
|
|
88
|
-
if (!_n && _i["return"] != null) _i["return"]();
|
|
89
|
-
} finally{
|
|
90
|
-
if (_d) throw _e;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
return _arr;
|
|
94
|
-
}
|
|
95
|
-
function _non_iterable_rest() {
|
|
96
|
-
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
97
|
-
}
|
|
98
44
|
function _object_spread(target) {
|
|
99
45
|
for(var i = 1; i < arguments.length; i++){
|
|
100
46
|
var source = arguments[i] != null ? arguments[i] : {};
|
|
@@ -134,17 +80,6 @@ function _object_spread_props(target, source) {
|
|
|
134
80
|
}
|
|
135
81
|
return target;
|
|
136
82
|
}
|
|
137
|
-
function _sliced_to_array(arr, i) {
|
|
138
|
-
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
139
|
-
}
|
|
140
|
-
function _unsupported_iterable_to_array(o, minLen) {
|
|
141
|
-
if (!o) return;
|
|
142
|
-
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
143
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
144
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
145
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
146
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
147
|
-
}
|
|
148
83
|
function _ts_generator(thisArg, body) {
|
|
149
84
|
var f, y, t, g, _ = {
|
|
150
85
|
label: 0,
|
|
@@ -490,278 +425,6 @@ var biDomain = isLocal ? "http://localhost:9002/api/bi" : baseDomain + "/bi";
|
|
|
490
425
|
var notificationsDomain = isLocal ? "http://localhost:9006/api/notifications" : baseDomain + "/notifications";
|
|
491
426
|
var callCenterGeoDomain = isLocal ? "http://localhost:9007/api/call-center/geo" : baseDomain + "/call-center/geo";
|
|
492
427
|
var callCenterEventsDomain = isLocal ? "http://localhost:9008/api/call-center/events" : baseDomain + "/call-center/events";
|
|
493
|
-
// src/helpers/socket.ts
|
|
494
|
-
import { io } from "socket.io-client";
|
|
495
|
-
var SocketService = /*#__PURE__*/ function() {
|
|
496
|
-
"use strict";
|
|
497
|
-
function _SocketService() {
|
|
498
|
-
_class_call_check(this, _SocketService);
|
|
499
|
-
this.socket = null;
|
|
500
|
-
this.connectCallbacks = [];
|
|
501
|
-
this.disconnectCallbacks = [];
|
|
502
|
-
this.initSocket();
|
|
503
|
-
}
|
|
504
|
-
_create_class(_SocketService, [
|
|
505
|
-
{
|
|
506
|
-
/// Initialize the socket connection
|
|
507
|
-
key: "initSocket",
|
|
508
|
-
value: function initSocket() {
|
|
509
|
-
var _this = this;
|
|
510
|
-
if (!this.socket) {
|
|
511
|
-
var SOCKET_SERVER_URL = "http://localhost:9009";
|
|
512
|
-
var SOCKET_PATH = "/api/data-socket/connect";
|
|
513
|
-
this.socket = io(SOCKET_SERVER_URL, {
|
|
514
|
-
path: SOCKET_PATH,
|
|
515
|
-
transports: [
|
|
516
|
-
"websocket"
|
|
517
|
-
]
|
|
518
|
-
});
|
|
519
|
-
this.socket.on("connect", function() {
|
|
520
|
-
var _this_socket;
|
|
521
|
-
console.log("Socket connected:", (_this_socket = _this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.id);
|
|
522
|
-
_this.connectCallbacks.forEach(function(cb) {
|
|
523
|
-
return cb();
|
|
524
|
-
});
|
|
525
|
-
});
|
|
526
|
-
this.socket.on("disconnect", function(reason) {
|
|
527
|
-
console.log("Socket disconnected:", reason);
|
|
528
|
-
_this.disconnectCallbacks.forEach(function(cb) {
|
|
529
|
-
return cb();
|
|
530
|
-
});
|
|
531
|
-
});
|
|
532
|
-
this.socket.on("connect_error", function(error) {
|
|
533
|
-
console.error("Socket connection error:", error);
|
|
534
|
-
});
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
},
|
|
538
|
-
{
|
|
539
|
-
/// get socket instance
|
|
540
|
-
key: "getSocketInstance",
|
|
541
|
-
value: function getSocketInstance() {
|
|
542
|
-
if (!this.socket) {
|
|
543
|
-
this.initSocket();
|
|
544
|
-
}
|
|
545
|
-
if (!this.socket) {
|
|
546
|
-
throw new Error("Socket not initialized");
|
|
547
|
-
}
|
|
548
|
-
if (!this.socket.connected) {
|
|
549
|
-
this.socket.connect();
|
|
550
|
-
}
|
|
551
|
-
return this.socket;
|
|
552
|
-
}
|
|
553
|
-
},
|
|
554
|
-
{
|
|
555
|
-
/// subscribe to collections
|
|
556
|
-
key: "subscribeToCollections",
|
|
557
|
-
value: function subscribeToCollections(config) {
|
|
558
|
-
var s = this.getSocketInstance();
|
|
559
|
-
var collectionsNames = config.map(function(c) {
|
|
560
|
-
return c.collectionName;
|
|
561
|
-
});
|
|
562
|
-
var eventHandlers = [];
|
|
563
|
-
config.forEach(function(configuration) {
|
|
564
|
-
var collectionName = configuration.collectionName, onAdd = configuration.onAdd, onFirstTime = configuration.onFirstTime, onModify = configuration.onModify, onRemove = configuration.onRemove, extraParsers = configuration.extraParsers, conditions = configuration.conditions, orderBy2 = configuration.orderBy;
|
|
565
|
-
s.on("initial:".concat(collectionName), onFirstTime);
|
|
566
|
-
eventHandlers.push({
|
|
567
|
-
eventName: "initial:".concat(collectionName),
|
|
568
|
-
handler: onFirstTime
|
|
569
|
-
});
|
|
570
|
-
s.on("add:".concat(collectionName), onAdd);
|
|
571
|
-
eventHandlers.push({
|
|
572
|
-
eventName: "add:".concat(collectionName),
|
|
573
|
-
handler: onAdd
|
|
574
|
-
});
|
|
575
|
-
s.on("update:".concat(collectionName), onModify);
|
|
576
|
-
eventHandlers.push({
|
|
577
|
-
eventName: "update:".concat(collectionName),
|
|
578
|
-
handler: onModify
|
|
579
|
-
});
|
|
580
|
-
s.on("delete:".concat(collectionName), onRemove);
|
|
581
|
-
eventHandlers.push({
|
|
582
|
-
eventName: "delete:".concat(collectionName),
|
|
583
|
-
handler: onRemove
|
|
584
|
-
});
|
|
585
|
-
extraParsers === null || extraParsers === void 0 ? void 0 : extraParsers.forEach(function(parsers) {
|
|
586
|
-
var extraOnAdd = parsers.onAdd, extraOnFirstTime = parsers.onFirstTime, extraOnModify = parsers.onModify, extraOnRemove = parsers.onRemove;
|
|
587
|
-
s.on("initial:".concat(collectionName), extraOnFirstTime);
|
|
588
|
-
eventHandlers.push({
|
|
589
|
-
eventName: "initial:".concat(collectionName),
|
|
590
|
-
handler: extraOnFirstTime
|
|
591
|
-
});
|
|
592
|
-
s.on("add:".concat(collectionName), extraOnAdd);
|
|
593
|
-
eventHandlers.push({
|
|
594
|
-
eventName: "add:".concat(collectionName),
|
|
595
|
-
handler: extraOnAdd
|
|
596
|
-
});
|
|
597
|
-
s.on("update:".concat(collectionName), extraOnModify);
|
|
598
|
-
eventHandlers.push({
|
|
599
|
-
eventName: "update:".concat(collectionName),
|
|
600
|
-
handler: extraOnModify
|
|
601
|
-
});
|
|
602
|
-
s.on("delete:".concat(collectionName), extraOnRemove);
|
|
603
|
-
eventHandlers.push({
|
|
604
|
-
eventName: "delete:".concat(collectionName),
|
|
605
|
-
handler: extraOnRemove
|
|
606
|
-
});
|
|
607
|
-
});
|
|
608
|
-
});
|
|
609
|
-
s.emit("subscribe_collections", collectionsNames, function(callback) {
|
|
610
|
-
if (callback.success) {
|
|
611
|
-
console.log("Successfully subscribed to: ".concat(collectionsNames.join(", ")));
|
|
612
|
-
} else {
|
|
613
|
-
console.error("Failed to subscribe to ".concat(config.join(", "), ": ").concat(callback.message));
|
|
614
|
-
}
|
|
615
|
-
});
|
|
616
|
-
return function() {
|
|
617
|
-
console.log("Cleaning up subscriptions for: ".concat(collectionsNames.join(", ")));
|
|
618
|
-
s.emit("unsubscribe_collections", collectionsNames);
|
|
619
|
-
eventHandlers.forEach(function(eh) {
|
|
620
|
-
s.off(eh.eventName, eh.handler);
|
|
621
|
-
});
|
|
622
|
-
};
|
|
623
|
-
}
|
|
624
|
-
},
|
|
625
|
-
{
|
|
626
|
-
/// set data
|
|
627
|
-
key: "setData",
|
|
628
|
-
value: function setData(payload) {
|
|
629
|
-
var s = this.getSocketInstance();
|
|
630
|
-
return new Promise(function(resolve, reject) {
|
|
631
|
-
s.emit("set_data", payload, function(callback) {
|
|
632
|
-
if (callback.success) {
|
|
633
|
-
console.log("Data saved successfully:", payload);
|
|
634
|
-
console.log("ack", callback);
|
|
635
|
-
resolve(callback);
|
|
636
|
-
} else {
|
|
637
|
-
reject(new Error(callback.message || "Save operation failed"));
|
|
638
|
-
}
|
|
639
|
-
});
|
|
640
|
-
});
|
|
641
|
-
}
|
|
642
|
-
},
|
|
643
|
-
{
|
|
644
|
-
/// get data
|
|
645
|
-
key: "getCollectionData",
|
|
646
|
-
value: function getCollectionData(payload) {
|
|
647
|
-
var s = this.getSocketInstance();
|
|
648
|
-
s.emit("get_data", {
|
|
649
|
-
collection_name: payload.collection_name
|
|
650
|
-
}, function(socketCallback) {
|
|
651
|
-
if (socketCallback.success && socketCallback.data) {
|
|
652
|
-
payload.callback(socketCallback.data);
|
|
653
|
-
} else {
|
|
654
|
-
payload.callback(payload.defaultValue);
|
|
655
|
-
}
|
|
656
|
-
});
|
|
657
|
-
}
|
|
658
|
-
},
|
|
659
|
-
{
|
|
660
|
-
key: "getDocumentData",
|
|
661
|
-
value: function getDocumentData(payload) {
|
|
662
|
-
var s = this.getSocketInstance();
|
|
663
|
-
s.emit("get_data", {
|
|
664
|
-
collection_name: payload.collection_name,
|
|
665
|
-
key: payload.key
|
|
666
|
-
}, function(socketCallback) {
|
|
667
|
-
if (socketCallback.success && socketCallback.data) {
|
|
668
|
-
payload.callback(socketCallback.data);
|
|
669
|
-
} else {
|
|
670
|
-
payload.callback(payload.defaultValue);
|
|
671
|
-
}
|
|
672
|
-
});
|
|
673
|
-
}
|
|
674
|
-
},
|
|
675
|
-
{
|
|
676
|
-
/// delete data
|
|
677
|
-
key: "deleteData",
|
|
678
|
-
value: function deleteData(payload) {
|
|
679
|
-
var s = this.getSocketInstance();
|
|
680
|
-
return new Promise(function(resolve, reject) {
|
|
681
|
-
s.emit("delete_data", payload, function(callback) {
|
|
682
|
-
if (callback.success) {
|
|
683
|
-
console.log("Data deleted successfully:", payload);
|
|
684
|
-
console.log("delete ack", callback);
|
|
685
|
-
resolve(callback);
|
|
686
|
-
} else {
|
|
687
|
-
reject(new Error(callback.message || "Delete operation failed"));
|
|
688
|
-
}
|
|
689
|
-
});
|
|
690
|
-
});
|
|
691
|
-
}
|
|
692
|
-
},
|
|
693
|
-
{
|
|
694
|
-
key: "clearAllRedisData",
|
|
695
|
-
value: function clearAllRedisData() {
|
|
696
|
-
var s = this.getSocketInstance();
|
|
697
|
-
return new Promise(function(resolve, reject) {
|
|
698
|
-
s.emit("clear_all_redis_data", function(ack) {
|
|
699
|
-
if (ack.success) {
|
|
700
|
-
resolve(ack);
|
|
701
|
-
} else {
|
|
702
|
-
reject(new Error(ack.message || "Clear all Redis data operation failed"));
|
|
703
|
-
}
|
|
704
|
-
});
|
|
705
|
-
});
|
|
706
|
-
}
|
|
707
|
-
},
|
|
708
|
-
{
|
|
709
|
-
/// connection management methods
|
|
710
|
-
key: "onConnect",
|
|
711
|
-
value: function onConnect(callback) {
|
|
712
|
-
var _this_socket;
|
|
713
|
-
this.connectCallbacks.push(callback);
|
|
714
|
-
if ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected) {
|
|
715
|
-
callback();
|
|
716
|
-
}
|
|
717
|
-
}
|
|
718
|
-
},
|
|
719
|
-
{
|
|
720
|
-
key: "offConnect",
|
|
721
|
-
value: function offConnect(callback) {
|
|
722
|
-
this.connectCallbacks = this.connectCallbacks.filter(function(cb) {
|
|
723
|
-
return cb !== callback;
|
|
724
|
-
});
|
|
725
|
-
}
|
|
726
|
-
},
|
|
727
|
-
{
|
|
728
|
-
key: "onDisconnect",
|
|
729
|
-
value: function onDisconnect(callback) {
|
|
730
|
-
this.disconnectCallbacks.push(callback);
|
|
731
|
-
if (this.socket && !this.socket.connected) {
|
|
732
|
-
callback();
|
|
733
|
-
}
|
|
734
|
-
}
|
|
735
|
-
},
|
|
736
|
-
{
|
|
737
|
-
key: "offDisconnect",
|
|
738
|
-
value: function offDisconnect(callback) {
|
|
739
|
-
this.disconnectCallbacks = this.disconnectCallbacks.filter(function(cb) {
|
|
740
|
-
return cb !== callback;
|
|
741
|
-
});
|
|
742
|
-
}
|
|
743
|
-
},
|
|
744
|
-
{
|
|
745
|
-
key: "isConnected",
|
|
746
|
-
value: function isConnected() {
|
|
747
|
-
var _this_socket;
|
|
748
|
-
return ((_this_socket = this.socket) === null || _this_socket === void 0 ? void 0 : _this_socket.connected) || false;
|
|
749
|
-
}
|
|
750
|
-
}
|
|
751
|
-
], [
|
|
752
|
-
{
|
|
753
|
-
key: "getInstance",
|
|
754
|
-
value: function getInstance() {
|
|
755
|
-
if (!_SocketService.instance) {
|
|
756
|
-
_SocketService.instance = new _SocketService();
|
|
757
|
-
}
|
|
758
|
-
return _SocketService.instance;
|
|
759
|
-
}
|
|
760
|
-
}
|
|
761
|
-
]);
|
|
762
|
-
return _SocketService;
|
|
763
|
-
}();
|
|
764
|
-
var socketServiceInstance = SocketService.getInstance();
|
|
765
428
|
// src/hooks/react.ts
|
|
766
429
|
import { isEqual as isEqual2 } from "lodash";
|
|
767
430
|
import { useEffect, useMemo, useRef } from "react";
|
|
@@ -886,37 +549,5 @@ var useSetUserCountry = function(setUserCountry, changLang) {
|
|
|
886
549
|
};
|
|
887
550
|
// src/hooks/WebWorker.ts
|
|
888
551
|
import { useCallback as useCallback2, useEffect as useEffect3, useRef as useRef3 } from "react";
|
|
889
|
-
|
|
890
|
-
import { useEffect as useEffect4, useState } from "react";
|
|
891
|
-
var useSocketSubscription = function(config) {
|
|
892
|
-
var _useState = _sliced_to_array(useState(socketServiceInstance.isConnected()), 2), socketConnected = _useState[0], setSocketConnected = _useState[1];
|
|
893
|
-
useEffect4(function() {
|
|
894
|
-
var cleanupSubscriptions;
|
|
895
|
-
if (socketConnected) {
|
|
896
|
-
cleanupSubscriptions = socketServiceInstance.subscribeToCollections(config);
|
|
897
|
-
}
|
|
898
|
-
var uiOnConnect = function() {
|
|
899
|
-
setSocketConnected(true);
|
|
900
|
-
};
|
|
901
|
-
var uiOnDisconnect = function() {
|
|
902
|
-
cleanupSubscriptions === null || cleanupSubscriptions === void 0 ? void 0 : cleanupSubscriptions();
|
|
903
|
-
setSocketConnected(false);
|
|
904
|
-
};
|
|
905
|
-
socketServiceInstance.onConnect(uiOnConnect);
|
|
906
|
-
socketServiceInstance.onDisconnect(uiOnDisconnect);
|
|
907
|
-
setSocketConnected(socketServiceInstance.isConnected());
|
|
908
|
-
return function() {
|
|
909
|
-
console.log("cleanupSubscriptions");
|
|
910
|
-
cleanupSubscriptions === null || cleanupSubscriptions === void 0 ? void 0 : cleanupSubscriptions();
|
|
911
|
-
socketServiceInstance.offConnect(uiOnConnect);
|
|
912
|
-
socketServiceInstance.offDisconnect(uiOnDisconnect);
|
|
913
|
-
};
|
|
914
|
-
}, [
|
|
915
|
-
socketConnected
|
|
916
|
-
]);
|
|
917
|
-
return {
|
|
918
|
-
socketConnected: socketConnected
|
|
919
|
-
};
|
|
920
|
-
};
|
|
921
|
-
export { useDeepCompareEffect, useDeepCompareMemo, useDocumentTitle, useSafeEffect, useSetUserCountry, useSnapshotBulk, useSocketSubscription };
|
|
552
|
+
export { useDeepCompareEffect, useDeepCompareMemo, useDocumentTitle, useSafeEffect, useSetUserCountry, useSnapshotBulk };
|
|
922
553
|
//# sourceMappingURL=index.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "akeyless-client-commons",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build": "tsup",
|
|
6
6
|
"deploy": "npm run build && npm version patch --no-git-tag-version && npm publish",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"@radix-ui/react-progress": "^1.1.1",
|
|
17
17
|
"@radix-ui/react-slot": "^1.1.2",
|
|
18
18
|
"@types/lodash": "^4.17.13",
|
|
19
|
-
"akeyless-types-commons": "^1.0.
|
|
19
|
+
"akeyless-types-commons": "^1.0.18",
|
|
20
20
|
"assets": "^3.0.1",
|
|
21
21
|
"axios": "^1.7.9",
|
|
22
22
|
"class-variance-authority": "^0.7.0",
|
|
@@ -35,10 +35,8 @@
|
|
|
35
35
|
"react-dom": "^18.3.1",
|
|
36
36
|
"react-phone-number-input": "^3.4.10",
|
|
37
37
|
"react-spinners": "^0.14.1",
|
|
38
|
-
"socket.io-client": "^4.8.1",
|
|
39
38
|
"tailwind-merge": "^2.5.4",
|
|
40
39
|
"tailwindcss-animate": "^1.0.7",
|
|
41
|
-
"types": "^0.1.1",
|
|
42
40
|
"xregexp": "^5.1.1",
|
|
43
41
|
"zustand": "^5.0.0"
|
|
44
42
|
},
|