akeyless-client-commons 1.0.62 → 1.0.63
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/helpers/index.d.mts +13 -2
- package/dist/helpers/index.d.ts +13 -2
- package/dist/helpers/index.js +94 -0
- package/dist/helpers/index.mjs +87 -1
- package/package.json +2 -1
package/dist/helpers/index.d.mts
CHANGED
|
@@ -3,7 +3,7 @@ import { FirebaseStorage } from 'firebase/storage';
|
|
|
3
3
|
import { Auth, GoogleAuthProvider, User } from 'firebase/auth';
|
|
4
4
|
import { AppCheck } from 'firebase/app-check';
|
|
5
5
|
import { WhereFilterOp, Unsubscribe, Firestore, Timestamp, DocumentSnapshot, DocumentData, CollectionReference } from 'firebase/firestore';
|
|
6
|
-
import { TObject,
|
|
6
|
+
import { TObject, NxUser, CountryOptions, Client } from 'akeyless-types-commons';
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import { ClassValue } from 'clsx';
|
|
9
9
|
|
|
@@ -131,6 +131,17 @@ declare const cleanNxSites: () => Promise<void>;
|
|
|
131
131
|
declare const getUserByPhone: (phone: string) => Promise<TObject<any>>;
|
|
132
132
|
declare const getUserByEmail: (email: string) => Promise<TObject<any>>;
|
|
133
133
|
declare const getUserByIdentifier: (identifier: string) => Promise<TObject<any>>;
|
|
134
|
+
declare const addLoginAudit: (user: any, app: string) => Promise<void>;
|
|
135
|
+
declare const addAuditRecord: (action: string, entity: string, details: TObject<any>, user?: NxUser | null) => Promise<{
|
|
136
|
+
action: string;
|
|
137
|
+
entity: string;
|
|
138
|
+
details: TObject<any>;
|
|
139
|
+
user: {
|
|
140
|
+
id: string;
|
|
141
|
+
name: string;
|
|
142
|
+
clients: string[];
|
|
143
|
+
};
|
|
144
|
+
}>;
|
|
134
145
|
|
|
135
146
|
declare const calculateBearing: (startLat: any, startLng: any, endLat: any, endLng: any) => number;
|
|
136
147
|
declare const renderOnce: () => boolean;
|
|
@@ -214,4 +225,4 @@ type Method = "GET" | "POST" | "PUT" | "DELETE";
|
|
|
214
225
|
type ServerName = "devices" | "bi" | "call-center";
|
|
215
226
|
declare const nx_api_call: (serverName: ServerName, method: Method, url: string, data?: TObject<any>) => Promise<any>;
|
|
216
227
|
|
|
217
|
-
export { type ValidationType, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterDomain, carsRegex, chartsRegex, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, numbersOnlyRegex, numbersRegex, nx_api_call, parseMultiSelectInput, parsePermissions, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setState, set_document, simpleExtractData, snapshot, snapshotDocument, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat };
|
|
228
|
+
export { type ValidationType, addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterDomain, carsRegex, chartsRegex, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, numbersOnlyRegex, numbersRegex, nx_api_call, parseMultiSelectInput, parsePermissions, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setState, set_document, simpleExtractData, snapshot, snapshotDocument, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat };
|
package/dist/helpers/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { FirebaseStorage } from 'firebase/storage';
|
|
|
3
3
|
import { Auth, GoogleAuthProvider, User } from 'firebase/auth';
|
|
4
4
|
import { AppCheck } from 'firebase/app-check';
|
|
5
5
|
import { WhereFilterOp, Unsubscribe, Firestore, Timestamp, DocumentSnapshot, DocumentData, CollectionReference } from 'firebase/firestore';
|
|
6
|
-
import { TObject,
|
|
6
|
+
import { TObject, NxUser, CountryOptions, Client } from 'akeyless-types-commons';
|
|
7
7
|
import React from 'react';
|
|
8
8
|
import { ClassValue } from 'clsx';
|
|
9
9
|
|
|
@@ -131,6 +131,17 @@ declare const cleanNxSites: () => Promise<void>;
|
|
|
131
131
|
declare const getUserByPhone: (phone: string) => Promise<TObject<any>>;
|
|
132
132
|
declare const getUserByEmail: (email: string) => Promise<TObject<any>>;
|
|
133
133
|
declare const getUserByIdentifier: (identifier: string) => Promise<TObject<any>>;
|
|
134
|
+
declare const addLoginAudit: (user: any, app: string) => Promise<void>;
|
|
135
|
+
declare const addAuditRecord: (action: string, entity: string, details: TObject<any>, user?: NxUser | null) => Promise<{
|
|
136
|
+
action: string;
|
|
137
|
+
entity: string;
|
|
138
|
+
details: TObject<any>;
|
|
139
|
+
user: {
|
|
140
|
+
id: string;
|
|
141
|
+
name: string;
|
|
142
|
+
clients: string[];
|
|
143
|
+
};
|
|
144
|
+
}>;
|
|
134
145
|
|
|
135
146
|
declare const calculateBearing: (startLat: any, startLng: any, endLat: any, endLng: any) => number;
|
|
136
147
|
declare const renderOnce: () => boolean;
|
|
@@ -214,4 +225,4 @@ type Method = "GET" | "POST" | "PUT" | "DELETE";
|
|
|
214
225
|
type ServerName = "devices" | "bi" | "call-center";
|
|
215
226
|
declare const nx_api_call: (serverName: ServerName, method: Method, url: string, data?: TObject<any>) => Promise<any>;
|
|
216
227
|
|
|
217
|
-
export { type ValidationType, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterDomain, carsRegex, chartsRegex, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, numbersOnlyRegex, numbersRegex, nx_api_call, parseMultiSelectInput, parsePermissions, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setState, set_document, simpleExtractData, snapshot, snapshotDocument, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat };
|
|
228
|
+
export { type ValidationType, addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterDomain, carsRegex, chartsRegex, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, numbersOnlyRegex, numbersRegex, nx_api_call, parseMultiSelectInput, parsePermissions, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setState, set_document, simpleExtractData, snapshot, snapshotDocument, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat };
|
package/dist/helpers/index.js
CHANGED
|
@@ -293,6 +293,12 @@ var __toCommonJS = function(mod) {
|
|
|
293
293
|
// src/helpers/index.ts
|
|
294
294
|
var helpers_exports = {};
|
|
295
295
|
__export(helpers_exports, {
|
|
296
|
+
addAuditRecord: function() {
|
|
297
|
+
return addAuditRecord;
|
|
298
|
+
},
|
|
299
|
+
addLoginAudit: function() {
|
|
300
|
+
return addLoginAudit;
|
|
301
|
+
},
|
|
296
302
|
add_document: function() {
|
|
297
303
|
return add_document;
|
|
298
304
|
},
|
|
@@ -1498,6 +1504,92 @@ var getUserByIdentifier = /*#__PURE__*/ function() {
|
|
|
1498
1504
|
return _ref.apply(this, arguments);
|
|
1499
1505
|
};
|
|
1500
1506
|
}();
|
|
1507
|
+
var addLoginAudit = /*#__PURE__*/ function() {
|
|
1508
|
+
var _ref = _async_to_generator(function(user, app2) {
|
|
1509
|
+
var details;
|
|
1510
|
+
return _ts_generator(this, function(_state) {
|
|
1511
|
+
switch(_state.label){
|
|
1512
|
+
case 0:
|
|
1513
|
+
details = {
|
|
1514
|
+
app: app2
|
|
1515
|
+
};
|
|
1516
|
+
return [
|
|
1517
|
+
4,
|
|
1518
|
+
set_document("nx-users", user.id, {
|
|
1519
|
+
last_login: fire_base_TIME_TEMP()
|
|
1520
|
+
})
|
|
1521
|
+
];
|
|
1522
|
+
case 1:
|
|
1523
|
+
_state.sent();
|
|
1524
|
+
return [
|
|
1525
|
+
4,
|
|
1526
|
+
addAuditRecord("login", app2, details, user)
|
|
1527
|
+
];
|
|
1528
|
+
case 2:
|
|
1529
|
+
_state.sent();
|
|
1530
|
+
return [
|
|
1531
|
+
2
|
|
1532
|
+
];
|
|
1533
|
+
}
|
|
1534
|
+
});
|
|
1535
|
+
});
|
|
1536
|
+
return function addLoginAudit(user, app2) {
|
|
1537
|
+
return _ref.apply(this, arguments);
|
|
1538
|
+
};
|
|
1539
|
+
}();
|
|
1540
|
+
var addAuditRecord = /*#__PURE__*/ function() {
|
|
1541
|
+
var _ref = _async_to_generator(function(action, entity, details, user) {
|
|
1542
|
+
var ref, data, error;
|
|
1543
|
+
return _ts_generator(this, function(_state) {
|
|
1544
|
+
switch(_state.label){
|
|
1545
|
+
case 0:
|
|
1546
|
+
_state.trys.push([
|
|
1547
|
+
0,
|
|
1548
|
+
2,
|
|
1549
|
+
,
|
|
1550
|
+
3
|
|
1551
|
+
]);
|
|
1552
|
+
ref = (0, import_firestore.doc)(collections.audit);
|
|
1553
|
+
data = {
|
|
1554
|
+
action: action,
|
|
1555
|
+
entity: entity,
|
|
1556
|
+
details: details,
|
|
1557
|
+
user: user ? {
|
|
1558
|
+
id: user.id,
|
|
1559
|
+
name: "".concat(user.first_name || "", " ").concat(user.last_name || "").trim(),
|
|
1560
|
+
clients: user.clients
|
|
1561
|
+
} : null
|
|
1562
|
+
};
|
|
1563
|
+
return [
|
|
1564
|
+
4,
|
|
1565
|
+
(0, import_firestore.setDoc)(ref, _object_spread_props(_object_spread({}, data), {
|
|
1566
|
+
datetime: fire_base_TIME_TEMP()
|
|
1567
|
+
}))
|
|
1568
|
+
];
|
|
1569
|
+
case 1:
|
|
1570
|
+
_state.sent();
|
|
1571
|
+
return [
|
|
1572
|
+
2,
|
|
1573
|
+
data
|
|
1574
|
+
];
|
|
1575
|
+
case 2:
|
|
1576
|
+
error = _state.sent();
|
|
1577
|
+
console.log(error);
|
|
1578
|
+
return [
|
|
1579
|
+
3,
|
|
1580
|
+
3
|
|
1581
|
+
];
|
|
1582
|
+
case 3:
|
|
1583
|
+
return [
|
|
1584
|
+
2
|
|
1585
|
+
];
|
|
1586
|
+
}
|
|
1587
|
+
});
|
|
1588
|
+
});
|
|
1589
|
+
return function addAuditRecord(action, entity, details, user) {
|
|
1590
|
+
return _ref.apply(this, arguments);
|
|
1591
|
+
};
|
|
1592
|
+
}();
|
|
1501
1593
|
// src/helpers/global.ts
|
|
1502
1594
|
var import_akeyless_types_commons = require("akeyless-types-commons");
|
|
1503
1595
|
var import_axios = __toESM(require("axios"));
|
|
@@ -1929,6 +2021,8 @@ var nx_api_call = /*#__PURE__*/ function() {
|
|
|
1929
2021
|
}();
|
|
1930
2022
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1931
2023
|
0 && (module.exports = {
|
|
2024
|
+
addAuditRecord: addAuditRecord,
|
|
2025
|
+
addLoginAudit: addLoginAudit,
|
|
1932
2026
|
add_document: add_document,
|
|
1933
2027
|
addressRegex: addressRegex,
|
|
1934
2028
|
akeylessOnlineDomain: akeylessOnlineDomain,
|
package/dist/helpers/index.mjs
CHANGED
|
@@ -1189,6 +1189,92 @@ var getUserByIdentifier = /*#__PURE__*/ function() {
|
|
|
1189
1189
|
return _ref.apply(this, arguments);
|
|
1190
1190
|
};
|
|
1191
1191
|
}();
|
|
1192
|
+
var addLoginAudit = /*#__PURE__*/ function() {
|
|
1193
|
+
var _ref = _async_to_generator(function(user, app2) {
|
|
1194
|
+
var details;
|
|
1195
|
+
return _ts_generator(this, function(_state) {
|
|
1196
|
+
switch(_state.label){
|
|
1197
|
+
case 0:
|
|
1198
|
+
details = {
|
|
1199
|
+
app: app2
|
|
1200
|
+
};
|
|
1201
|
+
return [
|
|
1202
|
+
4,
|
|
1203
|
+
set_document("nx-users", user.id, {
|
|
1204
|
+
last_login: fire_base_TIME_TEMP()
|
|
1205
|
+
})
|
|
1206
|
+
];
|
|
1207
|
+
case 1:
|
|
1208
|
+
_state.sent();
|
|
1209
|
+
return [
|
|
1210
|
+
4,
|
|
1211
|
+
addAuditRecord("login", app2, details, user)
|
|
1212
|
+
];
|
|
1213
|
+
case 2:
|
|
1214
|
+
_state.sent();
|
|
1215
|
+
return [
|
|
1216
|
+
2
|
|
1217
|
+
];
|
|
1218
|
+
}
|
|
1219
|
+
});
|
|
1220
|
+
});
|
|
1221
|
+
return function addLoginAudit(user, app2) {
|
|
1222
|
+
return _ref.apply(this, arguments);
|
|
1223
|
+
};
|
|
1224
|
+
}();
|
|
1225
|
+
var addAuditRecord = /*#__PURE__*/ function() {
|
|
1226
|
+
var _ref = _async_to_generator(function(action, entity, details, user) {
|
|
1227
|
+
var ref, data, error;
|
|
1228
|
+
return _ts_generator(this, function(_state) {
|
|
1229
|
+
switch(_state.label){
|
|
1230
|
+
case 0:
|
|
1231
|
+
_state.trys.push([
|
|
1232
|
+
0,
|
|
1233
|
+
2,
|
|
1234
|
+
,
|
|
1235
|
+
3
|
|
1236
|
+
]);
|
|
1237
|
+
ref = doc(collections.audit);
|
|
1238
|
+
data = {
|
|
1239
|
+
action: action,
|
|
1240
|
+
entity: entity,
|
|
1241
|
+
details: details,
|
|
1242
|
+
user: user ? {
|
|
1243
|
+
id: user.id,
|
|
1244
|
+
name: "".concat(user.first_name || "", " ").concat(user.last_name || "").trim(),
|
|
1245
|
+
clients: user.clients
|
|
1246
|
+
} : null
|
|
1247
|
+
};
|
|
1248
|
+
return [
|
|
1249
|
+
4,
|
|
1250
|
+
setDoc(ref, _object_spread_props(_object_spread({}, data), {
|
|
1251
|
+
datetime: fire_base_TIME_TEMP()
|
|
1252
|
+
}))
|
|
1253
|
+
];
|
|
1254
|
+
case 1:
|
|
1255
|
+
_state.sent();
|
|
1256
|
+
return [
|
|
1257
|
+
2,
|
|
1258
|
+
data
|
|
1259
|
+
];
|
|
1260
|
+
case 2:
|
|
1261
|
+
error = _state.sent();
|
|
1262
|
+
console.log(error);
|
|
1263
|
+
return [
|
|
1264
|
+
3,
|
|
1265
|
+
3
|
|
1266
|
+
];
|
|
1267
|
+
case 3:
|
|
1268
|
+
return [
|
|
1269
|
+
2
|
|
1270
|
+
];
|
|
1271
|
+
}
|
|
1272
|
+
});
|
|
1273
|
+
});
|
|
1274
|
+
return function addAuditRecord(action, entity, details, user) {
|
|
1275
|
+
return _ref.apply(this, arguments);
|
|
1276
|
+
};
|
|
1277
|
+
}();
|
|
1192
1278
|
// src/helpers/global.ts
|
|
1193
1279
|
import { CountryOptions } from "akeyless-types-commons";
|
|
1194
1280
|
import axios from "axios";
|
|
@@ -1617,5 +1703,5 @@ var nx_api_call = /*#__PURE__*/ function() {
|
|
|
1617
1703
|
return _ref.apply(this, arguments);
|
|
1618
1704
|
};
|
|
1619
1705
|
}();
|
|
1620
|
-
export { add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterDomain, carsRegex, chartsRegex, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, numbersOnlyRegex, numbersRegex, nx_api_call, parseMultiSelectInput, parsePermissions, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setState, set_document, simpleExtractData, snapshot, snapshotDocument, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat };
|
|
1706
|
+
export { addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterDomain, carsRegex, chartsRegex, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, numbersOnlyRegex, numbersRegex, nx_api_call, parseMultiSelectInput, parsePermissions, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setState, set_document, simpleExtractData, snapshot, snapshotDocument, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat };
|
|
1621
1707
|
//# sourceMappingURL=index.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "akeyless-client-commons",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.63",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build": "tsup",
|
|
6
6
|
"deploy": "npm run build && npm version patch --no-git-tag-version && npm publish",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"assets": "^3.0.1",
|
|
21
21
|
"axios": "^1.7.9",
|
|
22
22
|
"class-variance-authority": "^0.7.0",
|
|
23
|
+
"client": "^0.0.1",
|
|
23
24
|
"clsx": "^2.1.1",
|
|
24
25
|
"cmdk": "^1.0.0",
|
|
25
26
|
"exceljs": "^4.4.0",
|