hsu-utils 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/dist/hsu-utils.js +138 -0
- package/dist/hsu-utils.min.js +2 -0
- package/dist/hsu-utils.min.js.LICENSE.txt +29 -0
- package/es/ConsoleTable/index.d.ts +2 -0
- package/es/ConsoleTable/index.js +90 -0
- package/es/DeepCopy/index.d.ts +1 -0
- package/es/DeepCopy/index.js +40 -0
- package/es/Equal/index.d.ts +9 -0
- package/es/Equal/index.js +66 -0
- package/es/Typeof/index.d.ts +3 -0
- package/es/Typeof/index.js +6 -0
- package/es/index.d.ts +6 -0
- package/es/index.js +5 -0
- package/lib/ConsoleTable/index.d.ts +2 -0
- package/lib/ConsoleTable/index.js +96 -0
- package/lib/DeepCopy/index.d.ts +1 -0
- package/lib/DeepCopy/index.js +43 -0
- package/lib/Equal/index.d.ts +9 -0
- package/lib/Equal/index.js +72 -0
- package/lib/Typeof/index.d.ts +3 -0
- package/lib/Typeof/index.js +9 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.js +14 -0
- package/package.json +55 -0
package/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2023 LazyCat
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# some front-end utils
|
@@ -0,0 +1,138 @@
|
|
1
|
+
/*!
|
2
|
+
*
|
3
|
+
* hsu-utils v0.0.0
|
4
|
+
*
|
5
|
+
* some front-end uilts
|
6
|
+
*
|
7
|
+
* MIT License
|
8
|
+
*
|
9
|
+
* Copyright (c) 2023 LazyCat
|
10
|
+
*
|
11
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
12
|
+
* of this software and associated documentation files (the "Software"), to deal
|
13
|
+
* in the Software without restriction, including without limitation the rights
|
14
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
15
|
+
* copies of the Software, and to permit persons to whom the Software is
|
16
|
+
* furnished to do so, subject to the following conditions:
|
17
|
+
*
|
18
|
+
* The above copyright notice and this permission notice shall be included in all
|
19
|
+
* copies or substantial portions of the Software.
|
20
|
+
*
|
21
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
22
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
23
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
24
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
25
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
26
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
27
|
+
* SOFTWARE.
|
28
|
+
*
|
29
|
+
*/
|
30
|
+
/*
|
31
|
+
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
|
32
|
+
* This devtool is neither made for production nor for readable output files.
|
33
|
+
* It uses "eval()" calls to create a separate source file in the browser devtools.
|
34
|
+
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
35
|
+
* or disable the default devtool with "devtool: false".
|
36
|
+
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
37
|
+
*/
|
38
|
+
(function webpackUniversalModuleDefinition(root, factory) {
|
39
|
+
if(typeof exports === 'object' && typeof module === 'object')
|
40
|
+
module.exports = factory();
|
41
|
+
else if(typeof define === 'function' && define.amd)
|
42
|
+
define([], factory);
|
43
|
+
else if(typeof exports === 'object')
|
44
|
+
exports["hsu-utils"] = factory();
|
45
|
+
else
|
46
|
+
root["hsu-utils"] = factory();
|
47
|
+
})(this, () => {
|
48
|
+
return /******/ (() => { // webpackBootstrap
|
49
|
+
/******/ "use strict";
|
50
|
+
/******/ var __webpack_modules__ = ({
|
51
|
+
|
52
|
+
/***/ "./tools/ConsoleTable/index.ts":
|
53
|
+
/*!*************************************!*\
|
54
|
+
!*** ./tools/ConsoleTable/index.ts ***!
|
55
|
+
\*************************************/
|
56
|
+
/***/ ((__unused_webpack_module, exports) => {
|
57
|
+
|
58
|
+
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar NODE = '+';\nvar EDGE = '-';\nvar HIGH = '|';\nvar SPACE = ' ';\nvar EMPTY = '';\nfunction get_string_width(str) {\n var width = 0;\n for (var _i = 0, str_1 = str; _i < str_1.length; _i++) {\n var char = str_1[_i];\n width += char.charCodeAt(0) < 128 && char.charCodeAt(0) >= 0 ? 1 : 2;\n }\n return width;\n}\nfunction get_egde(width) {\n var edge = '';\n for (var i = 0; i <= width; i++) {\n edge += EDGE;\n }\n return edge;\n}\nfunction get_edge(widths, no_line_break) {\n if (no_line_break === void 0) { no_line_break = false; }\n var col_num = widths.length;\n var border = '';\n widths.forEach(function (width, col) {\n border += NODE + get_egde(width + 1);\n if (col === col_num - 1) {\n border += NODE + (no_line_break ? EMPTY : '\\n');\n }\n else {\n border += EMPTY;\n }\n });\n return border;\n}\nfunction get_space(width) {\n var space = '';\n for (var i = 0; i <= width; i++) {\n space += SPACE;\n }\n return space;\n}\nfunction wirte_data(widths, data) {\n var col_num = widths.length;\n var content = '';\n widths.forEach(function (width, col) {\n var col_data = data[col];\n var _content = '';\n if (!isNaN(+col_data)) {\n _content += get_space(width - get_string_width(col_data.toString())) + col_data + SPACE;\n }\n else {\n _content += SPACE + (col_data !== null && col_data !== void 0 ? col_data : '') + get_space(width - get_string_width((col_data !== null && col_data !== void 0 ? col_data : '').toString()));\n }\n content += HIGH + _content;\n if (col === col_num - 1) {\n content += HIGH + '\\n';\n }\n else {\n content += EMPTY;\n }\n });\n return content;\n}\nfunction get_max_widths(data) {\n var max_widths = Object.keys(data[0]).map(function (v) { return +v; });\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var row_data = data_1[_i];\n row_data.forEach(function (col_data, idx) {\n var width = get_string_width(col_data.toString());\n max_widths[idx] = Math.max(width, max_widths[idx]);\n });\n }\n return max_widths;\n}\nfunction console_table(data, callBack) {\n var row_num = data.length;\n var max_widths = get_max_widths(data);\n var table = '';\n data.forEach(function (row_data, row) {\n if (row <= 1) {\n table += get_edge(max_widths);\n }\n table += wirte_data(max_widths, row_data);\n if (row === row_num - 1) {\n table += get_edge(max_widths, true);\n }\n });\n console.log(table);\n if (callBack) {\n callBack(table);\n }\n}\nexports[\"default\"] = console_table;\n\n\n//# sourceURL=webpack://hsu-utils/./tools/ConsoleTable/index.ts?");
|
59
|
+
|
60
|
+
/***/ }),
|
61
|
+
|
62
|
+
/***/ "./tools/DeepCopy/index.ts":
|
63
|
+
/*!*********************************!*\
|
64
|
+
!*** ./tools/DeepCopy/index.ts ***!
|
65
|
+
\*********************************/
|
66
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
67
|
+
|
68
|
+
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nvar __1 = __webpack_require__(/*! .. */ \"./tools/index.ts\");\nfunction deepCopy(data) {\n if ((0, __1.Typeof)(data) === 'date') {\n return new Date(data.toISOString());\n }\n else if ((0, __1.Typeof)(data) === 'formdata') {\n var _data = data;\n var _formData_1 = new FormData();\n _data.forEach(function (value, key) {\n _formData_1.append(key, value);\n });\n return _formData_1;\n }\n else if (Array.isArray(data)) {\n var newData = data.map(function (item) {\n if (typeof item === 'object') {\n return deepCopy(item);\n }\n else {\n return item;\n }\n });\n return newData;\n }\n else if (data && (0, __1.Typeof)(data) === 'object') {\n var _data_1 = data;\n var newData_1 = {};\n Object.keys(_data_1).forEach(function (key) {\n var _item = _data_1[key];\n if (typeof _item === 'object') {\n newData_1[key] = deepCopy(_item);\n }\n else {\n newData_1[key] = _item;\n }\n });\n return newData_1;\n }\n return data;\n}\nexports[\"default\"] = deepCopy;\n\n\n//# sourceURL=webpack://hsu-utils/./tools/DeepCopy/index.ts?");
|
69
|
+
|
70
|
+
/***/ }),
|
71
|
+
|
72
|
+
/***/ "./tools/Equal/index.ts":
|
73
|
+
/*!******************************!*\
|
74
|
+
!*** ./tools/Equal/index.ts ***!
|
75
|
+
\******************************/
|
76
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
77
|
+
|
78
|
+
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ObjEqual = exports.ValEqual = exports.TypeEqual = void 0;\nvar __1 = __webpack_require__(/*! .. */ \"./tools/index.ts\");\nfunction TypeEqual(obj1, obj2) {\n var isEqual = false;\n if ((0, __1.Typeof)(obj1) !== (0, __1.Typeof)(obj2)) {\n isEqual = false;\n }\n else {\n isEqual = true;\n }\n return isEqual;\n}\nexports.TypeEqual = TypeEqual;\nfunction ValEqual(obj1, obj2) {\n var isEqual = false;\n if ((obj1 === null && obj2 === undefined) || (obj1 === undefined && obj2 === null)) {\n isEqual = true;\n }\n else {\n if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n isEqual = ObjEqual(obj1, obj2);\n }\n else if (typeof obj1 === 'function' && typeof obj2 === 'function') {\n isEqual = JSON.stringify(obj1) === JSON.stringify(obj2);\n }\n else {\n isEqual = obj1 === obj2;\n }\n }\n return isEqual;\n}\nexports.ValEqual = ValEqual;\nfunction ObjEqual(obj1, obj2) {\n var isEqual = false;\n if (obj1 !== null && obj2 !== null) {\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n obj1.sort();\n obj2.sort();\n if (obj1.length !== obj2.length) {\n isEqual = false;\n }\n else {\n for (var i = 0; i < obj1.length; i++) {\n isEqual = ValEqual(obj1[i], obj2[i]);\n if (!isEqual)\n break;\n }\n }\n }\n else if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n if (Object.keys(obj1).length !== Object.keys(obj2).length) {\n isEqual = false;\n }\n else {\n for (var key in obj1) {\n isEqual = ValEqual(obj1[key], obj2[key]);\n if (!isEqual)\n break;\n }\n }\n }\n }\n else if (obj1 === null && obj2 === null) {\n isEqual = true;\n }\n return isEqual;\n}\nexports.ObjEqual = ObjEqual;\nvar Equal = { ObjEqual: ObjEqual, ValEqual: ValEqual, TypeEqual: TypeEqual };\nexports[\"default\"] = Equal;\n\n\n//# sourceURL=webpack://hsu-utils/./tools/Equal/index.ts?");
|
79
|
+
|
80
|
+
/***/ }),
|
81
|
+
|
82
|
+
/***/ "./tools/Typeof/index.ts":
|
83
|
+
/*!*******************************!*\
|
84
|
+
!*** ./tools/Typeof/index.ts ***!
|
85
|
+
\*******************************/
|
86
|
+
/***/ ((__unused_webpack_module, exports) => {
|
87
|
+
|
88
|
+
eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nfunction Typeof(value) {\n var object_type = Object.prototype.toString.call(value);\n var reg = new RegExp(' (.+?)]');\n var type = object_type.match(reg)[1];\n return type.toLowerCase();\n}\nexports[\"default\"] = Typeof;\n\n\n//# sourceURL=webpack://hsu-utils/./tools/Typeof/index.ts?");
|
89
|
+
|
90
|
+
/***/ }),
|
91
|
+
|
92
|
+
/***/ "./tools/index.ts":
|
93
|
+
/*!************************!*\
|
94
|
+
!*** ./tools/index.ts ***!
|
95
|
+
\************************/
|
96
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
97
|
+
|
98
|
+
eval("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Typeof = exports.Equal = exports.deepCopy = exports.console_table = void 0;\nvar ConsoleTable_1 = __importDefault(__webpack_require__(/*! ./ConsoleTable */ \"./tools/ConsoleTable/index.ts\"));\nexports.console_table = ConsoleTable_1.default;\nvar DeepCopy_1 = __importDefault(__webpack_require__(/*! ./DeepCopy */ \"./tools/DeepCopy/index.ts\"));\nexports.deepCopy = DeepCopy_1.default;\nvar Equal_1 = __importDefault(__webpack_require__(/*! ./Equal */ \"./tools/Equal/index.ts\"));\nexports.Equal = Equal_1.default;\nvar Typeof_1 = __importDefault(__webpack_require__(/*! ./Typeof */ \"./tools/Typeof/index.ts\"));\nexports.Typeof = Typeof_1.default;\n\n\n//# sourceURL=webpack://hsu-utils/./tools/index.ts?");
|
99
|
+
|
100
|
+
/***/ })
|
101
|
+
|
102
|
+
/******/ });
|
103
|
+
/************************************************************************/
|
104
|
+
/******/ // The module cache
|
105
|
+
/******/ var __webpack_module_cache__ = {};
|
106
|
+
/******/
|
107
|
+
/******/ // The require function
|
108
|
+
/******/ function __webpack_require__(moduleId) {
|
109
|
+
/******/ // Check if module is in cache
|
110
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
111
|
+
/******/ if (cachedModule !== undefined) {
|
112
|
+
/******/ return cachedModule.exports;
|
113
|
+
/******/ }
|
114
|
+
/******/ // Create a new module (and put it into the cache)
|
115
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
116
|
+
/******/ // no module.id needed
|
117
|
+
/******/ // no module.loaded needed
|
118
|
+
/******/ exports: {}
|
119
|
+
/******/ };
|
120
|
+
/******/
|
121
|
+
/******/ // Execute the module function
|
122
|
+
/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
123
|
+
/******/
|
124
|
+
/******/ // Return the exports of the module
|
125
|
+
/******/ return module.exports;
|
126
|
+
/******/ }
|
127
|
+
/******/
|
128
|
+
/************************************************************************/
|
129
|
+
/******/
|
130
|
+
/******/ // startup
|
131
|
+
/******/ // Load entry module and return exports
|
132
|
+
/******/ // This entry module is referenced by other modules so it can't be inlined
|
133
|
+
/******/ var __webpack_exports__ = __webpack_require__("./tools/index.ts");
|
134
|
+
/******/
|
135
|
+
/******/ return __webpack_exports__;
|
136
|
+
/******/ })()
|
137
|
+
;
|
138
|
+
});
|
@@ -0,0 +1,2 @@
|
|
1
|
+
/*! For license information please see hsu-utils.min.js.LICENSE.txt */
|
2
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["hsu-utils"]=t():e["hsu-utils"]=t()}(this,(()=>(()=>{"use strict";var e={442:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0});var r="+",o="-",n="|",u=" ",a="";function f(e){for(var t=0,r=0,o=e;r<o.length;r++){var n=o[r];t+=n.charCodeAt(0)<128&&n.charCodeAt(0)>=0?1:2}return t}function l(e,t){void 0===t&&(t=!1);var n=e.length,u="";return e.forEach((function(e,f){u+=r+function(e){for(var t="",r=0;r<=e;r++)t+=o;return t}(e+1),u+=f===n-1?r+(t?a:"\n"):a})),u}function i(e){for(var t="",r=0;r<=e;r++)t+=u;return t}t.default=function(e,t){var r=e.length,o=function(e){for(var t=Object.keys(e[0]).map((function(e){return+e})),r=0,o=e;r<o.length;r++)o[r].forEach((function(e,r){var o=f(e.toString());t[r]=Math.max(o,t[r])}));return t}(e),c="";e.forEach((function(e,t){t<=1&&(c+=l(o)),c+=function(e,t){var r=e.length,o="";return e.forEach((function(e,l){var c=t[l],p="";isNaN(+c)?p+=u+(null!=c?c:"")+i(e-f((null!=c?c:"").toString())):p+=i(e-f(c.toString()))+c+u,o+=n+p,o+=l===r-1?n+"\n":a})),o}(o,e),t===r-1&&(c+=l(o,!0))})),console.log(c),t&&t(c)}},819:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0});var o=r(243);t.default=function e(t){if("date"===(0,o.Typeof)(t))return new Date(t.toISOString());if("formdata"===(0,o.Typeof)(t)){var r=t,n=new FormData;return r.forEach((function(e,t){n.append(t,e)})),n}if(Array.isArray(t))return t.map((function(t){return"object"==typeof t?e(t):t}));if(t&&"object"===(0,o.Typeof)(t)){var u=t,a={};return Object.keys(u).forEach((function(t){var r=u[t];a[t]="object"==typeof r?e(r):r})),a}return t}},962:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ObjEqual=t.ValEqual=t.TypeEqual=void 0;var o=r(243);function n(e,t){return(0,o.Typeof)(e)===(0,o.Typeof)(t)}function u(e,t){return null===e&&void 0===t||void 0===e&&null===t||("object"==typeof e&&"object"==typeof t?a(e,t):"function"==typeof e&&"function"==typeof t?JSON.stringify(e)===JSON.stringify(t):e===t)}function a(e,t){var r=!1;if(null!==e&&null!==t){if(Array.isArray(e)&&Array.isArray(t))if(e.sort(),t.sort(),e.length!==t.length)r=!1;else for(var o=0;o<e.length&&(r=u(e[o],t[o]));o++);else if("object"==typeof e&&"object"==typeof t)if(Object.keys(e).length!==Object.keys(t).length)r=!1;else for(var n in e)if(!(r=u(e[n],t[n])))break}else null===e&&null===t&&(r=!0);return r}t.TypeEqual=n,t.ValEqual=u,t.ObjEqual=a;var f={ObjEqual:a,ValEqual:u,TypeEqual:n};t.default=f},332:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=Object.prototype.toString.call(e),r=new RegExp(" (.+?)]");return t.match(r)[1].toLowerCase()}},243:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Typeof=t.Equal=t.deepCopy=t.console_table=void 0;var n=o(r(442));t.console_table=n.default;var u=o(r(819));t.deepCopy=u.default;var a=o(r(962));t.Equal=a.default;var f=o(r(332));t.Typeof=f.default}},t={};var r=function r(o){var n=t[o];if(void 0!==n)return n.exports;var u=t[o]={exports:{}};return e[o].call(u.exports,u,u.exports,r),u.exports}(243);return r})()));
|
@@ -0,0 +1,29 @@
|
|
1
|
+
/*!
|
2
|
+
*
|
3
|
+
* hsu-utils v0.0.0
|
4
|
+
*
|
5
|
+
* some front-end uilts
|
6
|
+
*
|
7
|
+
* MIT License
|
8
|
+
*
|
9
|
+
* Copyright (c) 2023 LazyCat
|
10
|
+
*
|
11
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
12
|
+
* of this software and associated documentation files (the "Software"), to deal
|
13
|
+
* in the Software without restriction, including without limitation the rights
|
14
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
15
|
+
* copies of the Software, and to permit persons to whom the Software is
|
16
|
+
* furnished to do so, subject to the following conditions:
|
17
|
+
*
|
18
|
+
* The above copyright notice and this permission notice shall be included in all
|
19
|
+
* copies or substantial portions of the Software.
|
20
|
+
*
|
21
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
22
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
23
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
24
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
25
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
26
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
27
|
+
* SOFTWARE.
|
28
|
+
*
|
29
|
+
*/
|
@@ -0,0 +1,90 @@
|
|
1
|
+
const NODE = '+';
|
2
|
+
const EDGE = '-';
|
3
|
+
const HIGH = '|';
|
4
|
+
const SPACE = ' ';
|
5
|
+
const EMPTY = '';
|
6
|
+
function get_string_width(str) {
|
7
|
+
let width = 0;
|
8
|
+
for (const char of str) {
|
9
|
+
width += char.charCodeAt(0) < 128 && char.charCodeAt(0) >= 0 ? 1 : 2;
|
10
|
+
}
|
11
|
+
return width;
|
12
|
+
}
|
13
|
+
function get_egde(width) {
|
14
|
+
let edge = '';
|
15
|
+
for (let i = 0; i <= width; i++) {
|
16
|
+
edge += EDGE;
|
17
|
+
}
|
18
|
+
return edge;
|
19
|
+
}
|
20
|
+
function get_edge(widths, no_line_break = false) {
|
21
|
+
const col_num = widths.length;
|
22
|
+
let border = '';
|
23
|
+
widths.forEach((width, col) => {
|
24
|
+
border += NODE + get_egde(width + 1);
|
25
|
+
if (col === col_num - 1) {
|
26
|
+
border += NODE + (no_line_break ? EMPTY : '\n');
|
27
|
+
}
|
28
|
+
else {
|
29
|
+
border += EMPTY;
|
30
|
+
}
|
31
|
+
});
|
32
|
+
return border;
|
33
|
+
}
|
34
|
+
function get_space(width) {
|
35
|
+
let space = '';
|
36
|
+
for (let i = 0; i <= width; i++) {
|
37
|
+
space += SPACE;
|
38
|
+
}
|
39
|
+
return space;
|
40
|
+
}
|
41
|
+
function wirte_data(widths, data) {
|
42
|
+
const col_num = widths.length;
|
43
|
+
let content = '';
|
44
|
+
widths.forEach((width, col) => {
|
45
|
+
const col_data = data[col];
|
46
|
+
let _content = '';
|
47
|
+
if (!isNaN(+col_data)) {
|
48
|
+
_content += get_space(width - get_string_width(col_data.toString())) + col_data + SPACE;
|
49
|
+
}
|
50
|
+
else {
|
51
|
+
_content += SPACE + (col_data !== null && col_data !== void 0 ? col_data : '') + get_space(width - get_string_width((col_data !== null && col_data !== void 0 ? col_data : '').toString()));
|
52
|
+
}
|
53
|
+
content += HIGH + _content;
|
54
|
+
if (col === col_num - 1) {
|
55
|
+
content += HIGH + '\n';
|
56
|
+
}
|
57
|
+
else {
|
58
|
+
content += EMPTY;
|
59
|
+
}
|
60
|
+
});
|
61
|
+
return content;
|
62
|
+
}
|
63
|
+
function get_max_widths(data) {
|
64
|
+
let max_widths = Object.keys(data[0]).map((v) => +v);
|
65
|
+
for (const row_data of data) {
|
66
|
+
row_data.forEach((col_data, idx) => {
|
67
|
+
const width = get_string_width(col_data.toString());
|
68
|
+
max_widths[idx] = Math.max(width, max_widths[idx]);
|
69
|
+
});
|
70
|
+
}
|
71
|
+
return max_widths;
|
72
|
+
}
|
73
|
+
export default function console_table(data, callBack) {
|
74
|
+
const row_num = data.length;
|
75
|
+
const max_widths = get_max_widths(data);
|
76
|
+
let table = '';
|
77
|
+
data.forEach((row_data, row) => {
|
78
|
+
if (row <= 1) {
|
79
|
+
table += get_edge(max_widths);
|
80
|
+
}
|
81
|
+
table += wirte_data(max_widths, row_data);
|
82
|
+
if (row === row_num - 1) {
|
83
|
+
table += get_edge(max_widths, true);
|
84
|
+
}
|
85
|
+
});
|
86
|
+
console.log(table);
|
87
|
+
if (callBack) {
|
88
|
+
callBack(table);
|
89
|
+
}
|
90
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export default function deepCopy<T = unknown>(data: T): T;
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { Typeof } from '..';
|
2
|
+
export default function deepCopy(data) {
|
3
|
+
if (Typeof(data) === 'date') {
|
4
|
+
return new Date(data.toISOString());
|
5
|
+
}
|
6
|
+
else if (Typeof(data) === 'formdata') {
|
7
|
+
const _data = data;
|
8
|
+
const _formData = new FormData();
|
9
|
+
_data.forEach((value, key) => {
|
10
|
+
_formData.append(key, value);
|
11
|
+
});
|
12
|
+
return _formData;
|
13
|
+
}
|
14
|
+
else if (Array.isArray(data)) {
|
15
|
+
const newData = data.map((item) => {
|
16
|
+
if (typeof item === 'object') {
|
17
|
+
return deepCopy(item);
|
18
|
+
}
|
19
|
+
else {
|
20
|
+
return item;
|
21
|
+
}
|
22
|
+
});
|
23
|
+
return newData;
|
24
|
+
}
|
25
|
+
else if (data && Typeof(data) === 'object') {
|
26
|
+
const _data = data;
|
27
|
+
const newData = {};
|
28
|
+
Object.keys(_data).forEach((key) => {
|
29
|
+
const _item = _data[key];
|
30
|
+
if (typeof _item === 'object') {
|
31
|
+
newData[key] = deepCopy(_item);
|
32
|
+
}
|
33
|
+
else {
|
34
|
+
newData[key] = _item;
|
35
|
+
}
|
36
|
+
});
|
37
|
+
return newData;
|
38
|
+
}
|
39
|
+
return data;
|
40
|
+
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
export declare function TypeEqual<T = unknown>(obj1: T, obj2: T): boolean;
|
2
|
+
export declare function ValEqual<T = unknown>(obj1: T, obj2: T): boolean;
|
3
|
+
export declare function ObjEqual<T = object>(obj1: T, obj2: T): boolean;
|
4
|
+
declare const Equal: {
|
5
|
+
ObjEqual: typeof ObjEqual;
|
6
|
+
ValEqual: typeof ValEqual;
|
7
|
+
TypeEqual: typeof TypeEqual;
|
8
|
+
};
|
9
|
+
export default Equal;
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import { Typeof } from '..';
|
2
|
+
export function TypeEqual(obj1, obj2) {
|
3
|
+
let isEqual = false;
|
4
|
+
if (Typeof(obj1) !== Typeof(obj2)) {
|
5
|
+
isEqual = false;
|
6
|
+
}
|
7
|
+
else {
|
8
|
+
isEqual = true;
|
9
|
+
}
|
10
|
+
return isEqual;
|
11
|
+
}
|
12
|
+
export function ValEqual(obj1, obj2) {
|
13
|
+
let isEqual = false;
|
14
|
+
if ((obj1 === null && obj2 === undefined) || (obj1 === undefined && obj2 === null)) {
|
15
|
+
isEqual = true;
|
16
|
+
}
|
17
|
+
else {
|
18
|
+
if (typeof obj1 === 'object' && typeof obj2 === 'object') {
|
19
|
+
isEqual = ObjEqual(obj1, obj2);
|
20
|
+
}
|
21
|
+
else if (typeof obj1 === 'function' && typeof obj2 === 'function') {
|
22
|
+
isEqual = JSON.stringify(obj1) === JSON.stringify(obj2);
|
23
|
+
}
|
24
|
+
else {
|
25
|
+
isEqual = obj1 === obj2;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
return isEqual;
|
29
|
+
}
|
30
|
+
export function ObjEqual(obj1, obj2) {
|
31
|
+
let isEqual = false;
|
32
|
+
if (obj1 !== null && obj2 !== null) {
|
33
|
+
if (Array.isArray(obj1) && Array.isArray(obj2)) {
|
34
|
+
obj1.sort();
|
35
|
+
obj2.sort();
|
36
|
+
if (obj1.length !== obj2.length) {
|
37
|
+
isEqual = false;
|
38
|
+
}
|
39
|
+
else {
|
40
|
+
for (let i = 0; i < obj1.length; i++) {
|
41
|
+
isEqual = ValEqual(obj1[i], obj2[i]);
|
42
|
+
if (!isEqual)
|
43
|
+
break;
|
44
|
+
}
|
45
|
+
}
|
46
|
+
}
|
47
|
+
else if (typeof obj1 === 'object' && typeof obj2 === 'object') {
|
48
|
+
if (Object.keys(obj1).length !== Object.keys(obj2).length) {
|
49
|
+
isEqual = false;
|
50
|
+
}
|
51
|
+
else {
|
52
|
+
for (const key in obj1) {
|
53
|
+
isEqual = ValEqual(obj1[key], obj2[key]);
|
54
|
+
if (!isEqual)
|
55
|
+
break;
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
60
|
+
else if (obj1 === null && obj2 === null) {
|
61
|
+
isEqual = true;
|
62
|
+
}
|
63
|
+
return isEqual;
|
64
|
+
}
|
65
|
+
const Equal = { ObjEqual, ValEqual, TypeEqual };
|
66
|
+
export default Equal;
|
package/es/index.d.ts
ADDED
package/es/index.js
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
var NODE = '+';
|
4
|
+
var EDGE = '-';
|
5
|
+
var HIGH = '|';
|
6
|
+
var SPACE = ' ';
|
7
|
+
var EMPTY = '';
|
8
|
+
function get_string_width(str) {
|
9
|
+
var width = 0;
|
10
|
+
for (var _i = 0, str_1 = str; _i < str_1.length; _i++) {
|
11
|
+
var char = str_1[_i];
|
12
|
+
width += char.charCodeAt(0) < 128 && char.charCodeAt(0) >= 0 ? 1 : 2;
|
13
|
+
}
|
14
|
+
return width;
|
15
|
+
}
|
16
|
+
function get_egde(width) {
|
17
|
+
var edge = '';
|
18
|
+
for (var i = 0; i <= width; i++) {
|
19
|
+
edge += EDGE;
|
20
|
+
}
|
21
|
+
return edge;
|
22
|
+
}
|
23
|
+
function get_edge(widths, no_line_break) {
|
24
|
+
if (no_line_break === void 0) { no_line_break = false; }
|
25
|
+
var col_num = widths.length;
|
26
|
+
var border = '';
|
27
|
+
widths.forEach(function (width, col) {
|
28
|
+
border += NODE + get_egde(width + 1);
|
29
|
+
if (col === col_num - 1) {
|
30
|
+
border += NODE + (no_line_break ? EMPTY : '\n');
|
31
|
+
}
|
32
|
+
else {
|
33
|
+
border += EMPTY;
|
34
|
+
}
|
35
|
+
});
|
36
|
+
return border;
|
37
|
+
}
|
38
|
+
function get_space(width) {
|
39
|
+
var space = '';
|
40
|
+
for (var i = 0; i <= width; i++) {
|
41
|
+
space += SPACE;
|
42
|
+
}
|
43
|
+
return space;
|
44
|
+
}
|
45
|
+
function wirte_data(widths, data) {
|
46
|
+
var col_num = widths.length;
|
47
|
+
var content = '';
|
48
|
+
widths.forEach(function (width, col) {
|
49
|
+
var col_data = data[col];
|
50
|
+
var _content = '';
|
51
|
+
if (!isNaN(+col_data)) {
|
52
|
+
_content += get_space(width - get_string_width(col_data.toString())) + col_data + SPACE;
|
53
|
+
}
|
54
|
+
else {
|
55
|
+
_content += SPACE + (col_data !== null && col_data !== void 0 ? col_data : '') + get_space(width - get_string_width((col_data !== null && col_data !== void 0 ? col_data : '').toString()));
|
56
|
+
}
|
57
|
+
content += HIGH + _content;
|
58
|
+
if (col === col_num - 1) {
|
59
|
+
content += HIGH + '\n';
|
60
|
+
}
|
61
|
+
else {
|
62
|
+
content += EMPTY;
|
63
|
+
}
|
64
|
+
});
|
65
|
+
return content;
|
66
|
+
}
|
67
|
+
function get_max_widths(data) {
|
68
|
+
var max_widths = Object.keys(data[0]).map(function (v) { return +v; });
|
69
|
+
for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
|
70
|
+
var row_data = data_1[_i];
|
71
|
+
row_data.forEach(function (col_data, idx) {
|
72
|
+
var width = get_string_width(col_data.toString());
|
73
|
+
max_widths[idx] = Math.max(width, max_widths[idx]);
|
74
|
+
});
|
75
|
+
}
|
76
|
+
return max_widths;
|
77
|
+
}
|
78
|
+
function console_table(data, callBack) {
|
79
|
+
var row_num = data.length;
|
80
|
+
var max_widths = get_max_widths(data);
|
81
|
+
var table = '';
|
82
|
+
data.forEach(function (row_data, row) {
|
83
|
+
if (row <= 1) {
|
84
|
+
table += get_edge(max_widths);
|
85
|
+
}
|
86
|
+
table += wirte_data(max_widths, row_data);
|
87
|
+
if (row === row_num - 1) {
|
88
|
+
table += get_edge(max_widths, true);
|
89
|
+
}
|
90
|
+
});
|
91
|
+
console.log(table);
|
92
|
+
if (callBack) {
|
93
|
+
callBack(table);
|
94
|
+
}
|
95
|
+
}
|
96
|
+
exports.default = console_table;
|
@@ -0,0 +1 @@
|
|
1
|
+
export default function deepCopy<T = unknown>(data: T): T;
|
@@ -0,0 +1,43 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
var __1 = require("..");
|
4
|
+
function deepCopy(data) {
|
5
|
+
if ((0, __1.Typeof)(data) === 'date') {
|
6
|
+
return new Date(data.toISOString());
|
7
|
+
}
|
8
|
+
else if ((0, __1.Typeof)(data) === 'formdata') {
|
9
|
+
var _data = data;
|
10
|
+
var _formData_1 = new FormData();
|
11
|
+
_data.forEach(function (value, key) {
|
12
|
+
_formData_1.append(key, value);
|
13
|
+
});
|
14
|
+
return _formData_1;
|
15
|
+
}
|
16
|
+
else if (Array.isArray(data)) {
|
17
|
+
var newData = data.map(function (item) {
|
18
|
+
if (typeof item === 'object') {
|
19
|
+
return deepCopy(item);
|
20
|
+
}
|
21
|
+
else {
|
22
|
+
return item;
|
23
|
+
}
|
24
|
+
});
|
25
|
+
return newData;
|
26
|
+
}
|
27
|
+
else if (data && (0, __1.Typeof)(data) === 'object') {
|
28
|
+
var _data_1 = data;
|
29
|
+
var newData_1 = {};
|
30
|
+
Object.keys(_data_1).forEach(function (key) {
|
31
|
+
var _item = _data_1[key];
|
32
|
+
if (typeof _item === 'object') {
|
33
|
+
newData_1[key] = deepCopy(_item);
|
34
|
+
}
|
35
|
+
else {
|
36
|
+
newData_1[key] = _item;
|
37
|
+
}
|
38
|
+
});
|
39
|
+
return newData_1;
|
40
|
+
}
|
41
|
+
return data;
|
42
|
+
}
|
43
|
+
exports.default = deepCopy;
|
@@ -0,0 +1,9 @@
|
|
1
|
+
export declare function TypeEqual<T = unknown>(obj1: T, obj2: T): boolean;
|
2
|
+
export declare function ValEqual<T = unknown>(obj1: T, obj2: T): boolean;
|
3
|
+
export declare function ObjEqual<T = object>(obj1: T, obj2: T): boolean;
|
4
|
+
declare const Equal: {
|
5
|
+
ObjEqual: typeof ObjEqual;
|
6
|
+
ValEqual: typeof ValEqual;
|
7
|
+
TypeEqual: typeof TypeEqual;
|
8
|
+
};
|
9
|
+
export default Equal;
|
@@ -0,0 +1,72 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ObjEqual = exports.ValEqual = exports.TypeEqual = void 0;
|
4
|
+
var __1 = require("..");
|
5
|
+
function TypeEqual(obj1, obj2) {
|
6
|
+
var isEqual = false;
|
7
|
+
if ((0, __1.Typeof)(obj1) !== (0, __1.Typeof)(obj2)) {
|
8
|
+
isEqual = false;
|
9
|
+
}
|
10
|
+
else {
|
11
|
+
isEqual = true;
|
12
|
+
}
|
13
|
+
return isEqual;
|
14
|
+
}
|
15
|
+
exports.TypeEqual = TypeEqual;
|
16
|
+
function ValEqual(obj1, obj2) {
|
17
|
+
var isEqual = false;
|
18
|
+
if ((obj1 === null && obj2 === undefined) || (obj1 === undefined && obj2 === null)) {
|
19
|
+
isEqual = true;
|
20
|
+
}
|
21
|
+
else {
|
22
|
+
if (typeof obj1 === 'object' && typeof obj2 === 'object') {
|
23
|
+
isEqual = ObjEqual(obj1, obj2);
|
24
|
+
}
|
25
|
+
else if (typeof obj1 === 'function' && typeof obj2 === 'function') {
|
26
|
+
isEqual = JSON.stringify(obj1) === JSON.stringify(obj2);
|
27
|
+
}
|
28
|
+
else {
|
29
|
+
isEqual = obj1 === obj2;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
return isEqual;
|
33
|
+
}
|
34
|
+
exports.ValEqual = ValEqual;
|
35
|
+
function ObjEqual(obj1, obj2) {
|
36
|
+
var isEqual = false;
|
37
|
+
if (obj1 !== null && obj2 !== null) {
|
38
|
+
if (Array.isArray(obj1) && Array.isArray(obj2)) {
|
39
|
+
obj1.sort();
|
40
|
+
obj2.sort();
|
41
|
+
if (obj1.length !== obj2.length) {
|
42
|
+
isEqual = false;
|
43
|
+
}
|
44
|
+
else {
|
45
|
+
for (var i = 0; i < obj1.length; i++) {
|
46
|
+
isEqual = ValEqual(obj1[i], obj2[i]);
|
47
|
+
if (!isEqual)
|
48
|
+
break;
|
49
|
+
}
|
50
|
+
}
|
51
|
+
}
|
52
|
+
else if (typeof obj1 === 'object' && typeof obj2 === 'object') {
|
53
|
+
if (Object.keys(obj1).length !== Object.keys(obj2).length) {
|
54
|
+
isEqual = false;
|
55
|
+
}
|
56
|
+
else {
|
57
|
+
for (var key in obj1) {
|
58
|
+
isEqual = ValEqual(obj1[key], obj2[key]);
|
59
|
+
if (!isEqual)
|
60
|
+
break;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
|
+
else if (obj1 === null && obj2 === null) {
|
66
|
+
isEqual = true;
|
67
|
+
}
|
68
|
+
return isEqual;
|
69
|
+
}
|
70
|
+
exports.ObjEqual = ObjEqual;
|
71
|
+
var Equal = { ObjEqual: ObjEqual, ValEqual: ValEqual, TypeEqual: TypeEqual };
|
72
|
+
exports.default = Equal;
|
@@ -0,0 +1,9 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
function Typeof(value) {
|
4
|
+
var object_type = Object.prototype.toString.call(value);
|
5
|
+
var reg = new RegExp(' (.+?)]');
|
6
|
+
var type = object_type.match(reg)[1];
|
7
|
+
return type.toLowerCase();
|
8
|
+
}
|
9
|
+
exports.default = Typeof;
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.Typeof = exports.Equal = exports.deepCopy = exports.console_table = void 0;
|
7
|
+
var ConsoleTable_1 = __importDefault(require("./ConsoleTable"));
|
8
|
+
exports.console_table = ConsoleTable_1.default;
|
9
|
+
var DeepCopy_1 = __importDefault(require("./DeepCopy"));
|
10
|
+
exports.deepCopy = DeepCopy_1.default;
|
11
|
+
var Equal_1 = __importDefault(require("./Equal"));
|
12
|
+
exports.Equal = Equal_1.default;
|
13
|
+
var Typeof_1 = __importDefault(require("./Typeof"));
|
14
|
+
exports.Typeof = Typeof_1.default;
|
package/package.json
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
{
|
2
|
+
"name": "hsu-utils",
|
3
|
+
"version": "0.0.1",
|
4
|
+
"description": "some front-end uilts",
|
5
|
+
"repository": "git@github.com:VitaTsui/hsu-utils.git",
|
6
|
+
"author": "VitaHsu <vitahsu7@gmail.com>",
|
7
|
+
"license": "MIT",
|
8
|
+
"main": "lib/index.js",
|
9
|
+
"module": "es/index.js",
|
10
|
+
"unpkg": "dist/hsu-utils.min.js",
|
11
|
+
"files": [
|
12
|
+
"es",
|
13
|
+
"lib",
|
14
|
+
"dist",
|
15
|
+
"package.json",
|
16
|
+
"README.md",
|
17
|
+
"LICENSE"
|
18
|
+
],
|
19
|
+
"sideEffects": [
|
20
|
+
"es/*",
|
21
|
+
"lib/*",
|
22
|
+
"dist/*"
|
23
|
+
],
|
24
|
+
"scripts": {
|
25
|
+
"build": "yarn build:es && yarn build:cjs && rimraf dist && yarn build:umd",
|
26
|
+
"build:es": "rimraf es && tsc -p build/tsconfig.es.json",
|
27
|
+
"build:cjs": "rimraf lib && tsc -p build/tsconfig.cjs.json",
|
28
|
+
"build:umd": "rimraf dist && yarn build:dev && yarn build:prod",
|
29
|
+
"build:dev": "cross-env NODE_ENV=development webpack --config build/webpack.config.js",
|
30
|
+
"build:prod": "cross-env NODE_ENV=production webpack --config build/webpack.config.js",
|
31
|
+
"clear": "rimraf lib && rimraf es && rimraf dist",
|
32
|
+
"test": "jest",
|
33
|
+
"publish:patch": "yarn build && yarn publish --new-version patch",
|
34
|
+
"publish:minor": "yarn build && yarn publish --new-version minor",
|
35
|
+
"publish:major": "yarn build && yarn publish --new-version major"
|
36
|
+
},
|
37
|
+
"devDependencies": {
|
38
|
+
"@jest/globals": "^29.5.0",
|
39
|
+
"@testing-library/react-hooks": "^8.0.1",
|
40
|
+
"@types/jest": "^29.5.2",
|
41
|
+
"cross-env": "^7.0.3",
|
42
|
+
"jest": "^29.5.0",
|
43
|
+
"jest-environment-jsdom": "^29.5.0",
|
44
|
+
"jsdom": "^22.1.0",
|
45
|
+
"rimraf": "^5.0.1",
|
46
|
+
"terser-webpack-plugin": "^5.3.0",
|
47
|
+
"ts-jest": "^29.1.0",
|
48
|
+
"ts-loader": "^9.2.6",
|
49
|
+
"ts-node": "^10.9.1",
|
50
|
+
"typescript": "^5.1.3",
|
51
|
+
"webpack": "^5.65.0",
|
52
|
+
"webpack-cli": "^4.9.1"
|
53
|
+
},
|
54
|
+
"dependencies": {}
|
55
|
+
}
|