mxroute-cli 1.1.0 → 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.
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
1
|
"use strict";
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.dashboardCommand = dashboardCommand;
|
|
@@ -8,25 +7,21 @@ const ink_1 = require("ink");
|
|
|
8
7
|
const config_1 = require("../utils/config");
|
|
9
8
|
const directadmin_1 = require("../utils/directadmin");
|
|
10
9
|
const dns_1 = require("../utils/dns");
|
|
11
|
-
// StatusBar component
|
|
12
10
|
function StatusBar({ server, profile, diskUsed }) {
|
|
13
|
-
return ((0, jsx_runtime_1.
|
|
11
|
+
return ((0, jsx_runtime_1.jsx)(ink_1.Box, { borderStyle: "single", borderColor: "blue", paddingX: 1, flexDirection: "row", children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { children: [(0, jsx_runtime_1.jsx)(ink_1.Text, { color: "cyan", children: "Server: " }), (0, jsx_runtime_1.jsxs)(ink_1.Text, { bold: true, children: [server, ".mxrouting.net"] }), (0, jsx_runtime_1.jsx)(ink_1.Text, { children: ' ' }), (0, jsx_runtime_1.jsx)(ink_1.Text, { color: "cyan", children: "Profile: " }), (0, jsx_runtime_1.jsx)(ink_1.Text, { bold: true, children: profile }), (0, jsx_runtime_1.jsx)(ink_1.Text, { children: ' ' }), (0, jsx_runtime_1.jsx)(ink_1.Text, { color: "cyan", children: "Disk: " }), (0, jsx_runtime_1.jsx)(ink_1.Text, { bold: true, children: diskUsed })] }) }));
|
|
14
12
|
}
|
|
15
|
-
// DomainTable component
|
|
16
13
|
function DomainTable({ domains }) {
|
|
17
|
-
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", paddingX: 1, children: [(0, jsx_runtime_1.jsxs)(ink_1.
|
|
14
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", paddingX: 1, children: [(0, jsx_runtime_1.jsxs)(ink_1.Text, { bold: true, color: "blue", children: [pad('Domain', 22), pad('MX', 5), pad('SPF', 5), pad('DKIM', 6), pad('DMARC', 7), pad('Accts', 7), 'Fwds'] }), domains.map((d, i) => {
|
|
18
15
|
const mx = d.dns.find((r) => r.type === 'MX');
|
|
19
16
|
const spf = d.dns.find((r) => r.type === 'SPF');
|
|
20
17
|
const dkim = d.dns.find((r) => r.type === 'DKIM');
|
|
21
18
|
const dmarc = d.dns.find((r) => r.type === 'DMARC');
|
|
22
|
-
return ((0, jsx_runtime_1.jsxs)(ink_1.
|
|
19
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Text, { children: [pad(d.name, 22), pad(statusIcon(mx?.status), 5), pad(statusIcon(spf?.status), 5), pad(statusIcon(dkim?.status), 6), pad(statusIcon(dmarc?.status), 7), pad(String(d.accounts), 7), String(d.forwarders)] }, i));
|
|
23
20
|
})] }));
|
|
24
21
|
}
|
|
25
|
-
// BottomBar component
|
|
26
22
|
function BottomBar() {
|
|
27
|
-
return ((0, jsx_runtime_1.jsx)(ink_1.Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, children: (0, jsx_runtime_1.jsx)(ink_1.Text, { color: "gray", children:
|
|
23
|
+
return ((0, jsx_runtime_1.jsx)(ink_1.Box, { borderStyle: "single", borderColor: "gray", paddingX: 1, children: (0, jsx_runtime_1.jsx)(ink_1.Text, { color: "gray", children: '[r]efresh [q]uit' }) }));
|
|
28
24
|
}
|
|
29
|
-
// Helper functions
|
|
30
25
|
function pad(str, width) {
|
|
31
26
|
return str.padEnd(width);
|
|
32
27
|
}
|
|
@@ -42,7 +37,6 @@ function statusIcon(status) {
|
|
|
42
37
|
return '?';
|
|
43
38
|
}
|
|
44
39
|
}
|
|
45
|
-
// Main App
|
|
46
40
|
function App() {
|
|
47
41
|
const { exit } = (0, ink_1.useApp)();
|
|
48
42
|
const [loading, setLoading] = (0, react_1.useState)(true);
|
|
@@ -63,11 +57,7 @@ function App() {
|
|
|
63
57
|
setLoading(false);
|
|
64
58
|
return;
|
|
65
59
|
}
|
|
66
|
-
const creds = {
|
|
67
|
-
server: config.server,
|
|
68
|
-
username: config.daUsername,
|
|
69
|
-
loginKey: config.daLoginKey,
|
|
70
|
-
};
|
|
60
|
+
const creds = { server: config.server, username: config.daUsername, loginKey: config.daLoginKey };
|
|
71
61
|
const [domainNames, usage] = await Promise.all([(0, directadmin_1.listDomains)(creds), (0, directadmin_1.getQuotaUsage)(creds).catch(() => ({}))]);
|
|
72
62
|
setDiskUsed(`${usage.quota || usage.disk || '?'} MB`);
|
|
73
63
|
const domainData = [];
|
|
@@ -77,12 +67,7 @@ function App() {
|
|
|
77
67
|
(0, directadmin_1.listForwarders)(creds, name).catch(() => []),
|
|
78
68
|
(0, dns_1.runFullDnsCheck)(name, config.server).catch(() => []),
|
|
79
69
|
]);
|
|
80
|
-
domainData.push({
|
|
81
|
-
name,
|
|
82
|
-
accounts: accounts.length,
|
|
83
|
-
forwarders: forwarders.length,
|
|
84
|
-
dns,
|
|
85
|
-
});
|
|
70
|
+
domainData.push({ name, accounts: accounts.length, forwarders: forwarders.length, dns });
|
|
86
71
|
}
|
|
87
72
|
setDomains(domainData);
|
|
88
73
|
setLastRefresh(new Date().toLocaleTimeString());
|
|
@@ -98,17 +83,15 @@ function App() {
|
|
|
98
83
|
return () => clearInterval(interval);
|
|
99
84
|
}, []);
|
|
100
85
|
(0, ink_1.useInput)((input, key) => {
|
|
101
|
-
if (input === 'q' || (key.ctrl && input === 'c'))
|
|
86
|
+
if (input === 'q' || (key.ctrl && input === 'c'))
|
|
102
87
|
exit();
|
|
103
|
-
|
|
104
|
-
if (input === 'r') {
|
|
88
|
+
if (input === 'r')
|
|
105
89
|
fetchData();
|
|
106
|
-
}
|
|
107
90
|
});
|
|
108
91
|
if (error) {
|
|
109
|
-
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", padding: 1, children: [(0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "red", bold: true, children: [
|
|
92
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", padding: 1, children: [(0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "red", bold: true, children: ['Error: ', error] }), (0, jsx_runtime_1.jsx)(BottomBar, {})] }));
|
|
110
93
|
}
|
|
111
|
-
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsxs)(ink_1.Box, { paddingX: 1,
|
|
94
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsxs)(ink_1.Box, { paddingX: 1, children: [(0, jsx_runtime_1.jsx)(ink_1.Text, { bold: true, color: "cyan", children: 'MXroute Dashboard' }), lastRefresh ? ((0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "gray", children: [' Last refresh: ', lastRefresh] })) : null] }), (0, jsx_runtime_1.jsx)(StatusBar, { server: server, profile: profile, diskUsed: diskUsed }), loading ? ((0, jsx_runtime_1.jsx)(ink_1.Box, { padding: 1, children: (0, jsx_runtime_1.jsx)(ink_1.Text, { color: "yellow", children: 'Loading...' }) })) : ((0, jsx_runtime_1.jsx)(DomainTable, { domains: domains })), (0, jsx_runtime_1.jsx)(BottomBar, {})] }));
|
|
112
95
|
}
|
|
113
96
|
async function dashboardCommand() {
|
|
114
97
|
const { waitUntilExit } = (0, ink_1.render)((0, jsx_runtime_1.jsx)(App, {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-app.js","sourceRoot":"","sources":["../../src/commands/dashboard-app.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dashboard-app.js","sourceRoot":"","sources":["../../src/commands/dashboard-app.tsx"],"names":[],"mappings":";;AAuLA,4CAGC;;AA1LD,iCAAmD;AACnD,6BAA0D;AAC1D,4CAA4C;AAC5C,sDAAqG;AACrG,sCAA+D;AAS/D,SAAS,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAyD;IACrG,OAAO,CACL,uBAAC,SAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,KAAK,YAC3E,wBAAC,UAAI,eACH,uBAAC,UAAI,IAAC,KAAK,EAAC,MAAM,yBAAgB,EAClC,wBAAC,UAAI,IAAC,IAAI,mBAAE,MAAM,sBAAsB,EACxC,uBAAC,UAAI,cAAE,IAAI,GAAQ,EACnB,uBAAC,UAAI,IAAC,KAAK,EAAC,MAAM,0BAAiB,EACnC,uBAAC,UAAI,IAAC,IAAI,kBAAE,OAAO,GAAQ,EAC3B,uBAAC,UAAI,cAAE,IAAI,GAAQ,EACnB,uBAAC,UAAI,IAAC,KAAK,EAAC,MAAM,uBAAc,EAChC,uBAAC,UAAI,IAAC,IAAI,kBAAE,QAAQ,GAAQ,IACvB,GACH,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,OAAO,EAA6B;IACzD,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACrC,wBAAC,UAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,aACpB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,EACjB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,EACZ,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EACb,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EACd,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EACf,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EACf,MAAM,IACF,EACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBAC9C,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;gBAChD,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;gBAClD,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;gBACpD,OAAO,CACL,wBAAC,UAAI,eACF,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EACf,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAC9B,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAC/B,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EAChC,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,EACjC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAC1B,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,KAPZ,CAAC,CAQL,CACR,CAAC;YACJ,CAAC,CAAC,IACE,CACP,CAAC;AACJ,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CACL,uBAAC,SAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,YACtD,uBAAC,UAAI,IAAC,KAAK,EAAC,MAAM,YAAE,mBAAmB,GAAQ,GAC3C,CACP,CAAC;AACJ,CAAC;AAED,SAAS,GAAG,CAAC,GAAW,EAAE,KAAa;IACrC,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,UAAU,CAAC,MAAe;IACjC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC;QAClB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,GAAG,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,GAAG;IACV,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,YAAM,GAAE,CAAC;IAC1B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAe,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IACzC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAEvC,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC3B,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;YAC3B,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzB,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAEjC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC7C,QAAQ,CAAC,8CAA8C,CAAC,CAAC;gBACzD,UAAU,CAAC,KAAK,CAAC,CAAC;gBAClB,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;YAClG,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAA,yBAAW,EAAC,KAAK,CAAC,EAAE,IAAA,2BAAa,EAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAE7G,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;YAEtD,MAAM,UAAU,GAAiB,EAAE,CAAC;YACpC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBACpD,IAAA,+BAAiB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;oBAC9C,IAAA,4BAAc,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;oBAC3C,IAAA,qBAAe,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;iBACrD,CAAC,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3F,CAAC;YAED,UAAU,CAAC,UAAU,CAAC,CAAC;YACvB,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QACD,UAAU,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,SAAS,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,cAAQ,EAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,CAAC;YAAE,IAAI,EAAE,CAAC;QACzD,IAAI,KAAK,KAAK,GAAG;YAAE,SAAS,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,aACpC,wBAAC,UAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,mBACnB,SAAS,EACT,KAAK,IACD,EACP,uBAAC,SAAS,KAAG,IACT,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,wBAAC,SAAG,IAAC,QAAQ,EAAE,CAAC,aACd,uBAAC,UAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,YACpB,mBAAmB,GACf,EACN,WAAW,CAAC,CAAC,CAAC,CACb,wBAAC,UAAI,IAAC,KAAK,EAAC,MAAM,aACf,kBAAkB,EAClB,WAAW,IACP,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,EACN,uBAAC,SAAS,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAClE,OAAO,CAAC,CAAC,CAAC,CACT,uBAAC,SAAG,IAAC,OAAO,EAAE,CAAC,YACb,uBAAC,UAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,YAAY,GAAQ,GACtC,CACP,CAAC,CAAC,CAAC,CACF,uBAAC,WAAW,IAAC,OAAO,EAAE,OAAO,GAAI,CAClC,EACD,uBAAC,SAAS,KAAG,IACT,CACP,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,gBAAgB;IACpC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,YAAM,EAAC,uBAAC,GAAG,KAAG,CAAC,CAAC;IAC1C,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mxroute-cli",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.2",
|
|
4
4
|
"description": "A powerful CLI for managing MXroute email hosting — send emails, verify DNS, generate records, troubleshoot, and more.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"js-yaml": "^4.1.1",
|
|
82
82
|
"node-fetch": "^2.7.0",
|
|
83
83
|
"ora": "^5.4.1",
|
|
84
|
-
"react": "^
|
|
84
|
+
"react": "^17.0.2",
|
|
85
85
|
"zod": "^4.3.6"
|
|
86
86
|
},
|
|
87
87
|
"devDependencies": {
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"@types/js-yaml": "^4.0.9",
|
|
91
91
|
"@types/node": "^22.15.17",
|
|
92
92
|
"@types/node-fetch": "^2.6.13",
|
|
93
|
-
"@types/react": "^
|
|
93
|
+
"@types/react": "^17.0.91",
|
|
94
94
|
"@typescript-eslint/eslint-plugin": "^8.57.0",
|
|
95
95
|
"@typescript-eslint/parser": "^8.57.0",
|
|
96
96
|
"@vitest/coverage-v8": "^4.1.0",
|