@haluo/util 1.0.1 → 1.0.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,59 +0,0 @@
1
- /**
2
- * @file 过滤器
3
- * @Author: wanghui
4
- * @createBy: @2020.05.28
5
- */
6
- /**
7
- * 示例:注入所有过滤器
8
- * import { filter as filters } from '@haluo/util'
9
- * Object.keys(filters).forEach(key => {
10
- * Vue.filter(key, filters[key])
11
- * })
12
- */
13
- 'use strict';
14
- var dateClass = require('../date');
15
- var numberClass = require('../number');
16
- var toolsClass = require('../tools');
17
- var FilterClass = /** @class */ (function () {
18
- function FilterClass() {
19
- }
20
- /**
21
- * 格式化时间,示例:1586840260500 | format('YYYY-MM-DD HH:mm:ss')
22
- * @param {String|Number} date
23
- * @param {String} fmt 'YYYY-MM-DD HH:mm:ss'
24
- * @return {String} 'YYYY-MM-DD HH:mm:ss'
25
- */
26
- FilterClass.prototype.format = function (date, fmt) {
27
- if (fmt === void 0) { fmt = 'YYYY-MM-DD HH:mm:ss'; }
28
- return dateClass.format(date, fmt);
29
- };
30
- /**
31
- * 格式化金额,示例:123456 | formatMoney
32
- * @param {Number} num
33
- * @return {String} 123,456
34
- */
35
- FilterClass.prototype.formatMoney = function (money) {
36
- return numberClass.formatMoney(money);
37
- };
38
- /**
39
- * 截取数组或字符串,示例:'1234' | slice(3)
40
- * @param {Array|String} target 数组或字符串
41
- * @param {Number} length 截取长度,从0开始
42
- * @return {any}
43
- */
44
- FilterClass.prototype.slice = function (target, length) {
45
- if (target === void 0) { target = ''; }
46
- if (length === void 0) { length = 0; }
47
- return toolsClass.slice(target, length);
48
- };
49
- FilterClass.prototype.install = function (app) {
50
- var _this = this;
51
- var globalProperties = app.config.globalProperties;
52
- globalProperties.$filters = globalProperties.$filters || {};
53
- globalProperties.$filters.format = _this.format;
54
- globalProperties.$filters.formatMoney = _this.formatMoney;
55
- globalProperties.$filters.slice = _this.slice;
56
- };
57
- return FilterClass;
58
- }());
59
- module.exports = new FilterClass();
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var Format = /** @class */ (function () {
3
- function Format() {
4
- }
5
- /**
6
- * @desc 对于对象非数字与布尔值的value,当其为falsy时,转换成separator
7
- * @param {object} obj 传入的对象
8
- * @param {string} separator 替换后的值
9
- * transformObjectNullVal({ a: null, b: 0}, '23') // {a: "23", b: 0}
10
- * @return {object}
11
- */
12
- Format.prototype.transformObjectNullVal = function (obj, separator) {
13
- if (separator === void 0) { separator = '-'; }
14
- return Object.keys(obj).reduce(function (cur, key) {
15
- cur[key] = obj[key] || ((obj[key] === 0 || obj[key] === false) ? obj[key] : separator);
16
- return cur;
17
- }, {});
18
- };
19
- return Format;
20
- }());
21
- module.exports = new Format();
@@ -1,31 +0,0 @@
1
- /**
2
- * @file: tools 常用的工具函数
3
- * @Author: wanghui
4
- */
5
- 'use strict';
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- var MatchClass = /** @class */ (function () {
8
- function MatchClass() {
9
- }
10
- /**
11
- * 根据类型返回正则
12
- * @param {String} str 检测的内容
13
- * @param {String} type 检测类型
14
- * checkType('10.120.33.11', 'ip') // true
15
- * @return {Boolean} true or false
16
- */
17
- MatchClass.prototype.checkType = function (str, type) {
18
- var regexp = {
19
- 'ip': /((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}/.test(str),
20
- 'port': /^(\d|[1-5]\d{4}|6[1-4]\d{3}|65[1-4]\d{2}|655[1-2]\d|6553[1-5])$/.test(str),
21
- 'phone': /^1[3|4|5|6|7|8][0-9]{9}$/.test(str),
22
- 'number': /^[0-9]+$/.test(str),
23
- 'email': /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(str),
24
- 'IDCard': /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/.test(str),
25
- 'url': /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/i.test(str)
26
- };
27
- return regexp[type];
28
- };
29
- return MatchClass;
30
- }());
31
- module.exports = new MatchClass();
@@ -1,102 +0,0 @@
1
- /**
2
- * @file number 格式化
3
- * @Author: wanghui
4
- * @createBy: @2020.05.26
5
- */
6
- 'use strict';
7
- var NumberClass = /** @class */ (function () {
8
- function NumberClass() {
9
- }
10
- /**
11
- * 个位数前面补0
12
- * @param {Number} num 需要格式化的数字
13
- * @return {String} '01'
14
- */
15
- NumberClass.prototype.formatNumber = function (num) {
16
- var res = num.toString();
17
- return res[1] ? res : '0' + res;
18
- };
19
- /**
20
- * 将手机号中间部分替换为星号
21
- * @param {String} phone 手机号码
22
- * @return {String} 131****1111
23
- */
24
- NumberClass.prototype.formatPhone = function (phone) {
25
- return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
26
- };
27
- /**
28
- * 格式化数字 万
29
- * @param {Number} num
30
- * @return {String} 12.3万
31
- */
32
- NumberClass.prototype.convertToWan = function (num) {
33
- var result = '';
34
- if (num < 10000) {
35
- result = num;
36
- }
37
- if (num >= 10000) {
38
- result = (num / 10000).toFixed(1) + '万';
39
- }
40
- return result;
41
- };
42
- /**
43
- * 格式化数字 k
44
- * @param {Number} num
45
- * @return {String} 1.2k
46
- */
47
- NumberClass.prototype.convertToThousand = function (num) {
48
- var result = '';
49
- if (num < 1000) {
50
- result = num;
51
- }
52
- if (num >= 1000) {
53
- result = (num / 1000).toFixed(1) + 'k';
54
- }
55
- return result;
56
- };
57
- /**
58
- * 随机数,指定范围
59
- * @param {Number} min 开始
60
- * @param {Number} max 结束
61
- * @return {Number|Object}
62
- */
63
- NumberClass.prototype.random = function (min, max) {
64
- if (arguments.length === 2) {
65
- return Math.floor(min + Math.random() * ((max + 1) - min));
66
- }
67
- else {
68
- return null;
69
- }
70
- };
71
- /**
72
- * 格式化金额
73
- * @param {Number} num
74
- * @return {String} 123,456
75
- */
76
- NumberClass.prototype.formatMoney = function (money, signal) {
77
- var result = '';
78
- if (money === '') {
79
- return result;
80
- }
81
- money = String(money).replace('.00', '');
82
- money = money.substring(money.length - 2) === '.0' ? money.replace('.0', '') : money;
83
- // 小于3位数,直接返回
84
- if (Number(money) < 1000) {
85
- return result = money;
86
- }
87
- if (money.split('.')[0].length < 3) {
88
- return result = money;
89
- }
90
- signal = signal === '' ? '' : ',';
91
- var price = money.split('.')[0] + '';
92
- var pricePoint = money.split('.')[1];
93
- result = price.length > 6 ?
94
- "" + price.substring(0, price.length - 6) + signal + price.substring(price.length - 6, price.length - 3) + "," + price.substring(price.length - 3, price.length)
95
- :
96
- "" + price.substring(0, price.length - 3) + signal + price.substring(price.length - 3, price.length);
97
- result = pricePoint ? "" + result + signal + pricePoint : result;
98
- return result;
99
- };
100
- return NumberClass;
101
- }());
102
- module.exports = new NumberClass();
@@ -1,81 +0,0 @@
1
- /**
2
- * 异常上报日志监控类
3
- * @Author: wanghui
4
- * 常用配置 option:https://docs.sentry.io/clients/javascript/config/
5
- * 1.自动捕获vue组件内异常
6
- * 2.自动捕获promise内的异常
7
- * 3.自动捕获没有被catch的运行异常
8
- */
9
- 'use strict';
10
- var __importDefault = (this && this.__importDefault) || function (mod) {
11
- return (mod && mod.__esModule) ? mod : { "default": mod };
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- var raven_js_1 = __importDefault(require("raven-js"));
15
- // import RavenVue from 'raven-js/plugins/vue';
16
- var Report = /** @class */ (function () {
17
- function Report(Vue, options) {
18
- if (options === void 0) { options = {}; }
19
- if (process.env.NODE_ENV !== 'development') {
20
- // todo
21
- }
22
- this.vue = Vue;
23
- this.options = options;
24
- }
25
- Report.getInstance = function (Vue, Option) {
26
- if (!(this.instance instanceof this)) {
27
- this.instance = new this(Vue, Option);
28
- this.instance.install();
29
- }
30
- return this.instance;
31
- };
32
- Report.prototype.install = function () {
33
- if (process.env.NODE_ENV !== 'development') {
34
- // Raven.config(this.options.dsn, {
35
- // environment: process.env.NODE_ENV,
36
- // }).addPlugin(RavenVue, this.Vue).install();
37
- // raven内置了vue插件,会通过vue.config.errorHandler来捕获vue组件内错误并上报sentry服务
38
- // 记录用户信息
39
- raven_js_1.default.setUserContext({ user: this.options.user || '' });
40
- // 设置全局tag标签
41
- raven_js_1.default.setTagsContext({ environment: this.options.env || '' });
42
- }
43
- };
44
- /**
45
- * 主动上报
46
- * @param {String} data
47
- * @param {String} type 'info','warning','error'
48
- * @param {Object} options
49
- */
50
- Report.prototype.log = function (data, type, options) {
51
- if (data === void 0) { data = null; }
52
- if (type === void 0) { type = 'error'; }
53
- if (options === void 0) { options = {}; }
54
- // 添加面包屑
55
- raven_js_1.default.captureBreadcrumb({
56
- message: data,
57
- category: 'manual message',
58
- });
59
- // 异常上报
60
- if (data instanceof Error) {
61
- raven_js_1.default.captureException(data, {
62
- level: type,
63
- logger: 'manual exception',
64
- tags: { options: options },
65
- });
66
- }
67
- else {
68
- raven_js_1.default.captureException('error', {
69
- level: type,
70
- logger: 'manual data',
71
- extra: {
72
- data: data,
73
- options: this.options,
74
- date: new Date(),
75
- },
76
- });
77
- }
78
- };
79
- return Report;
80
- }());
81
- exports.default = Report;
@@ -1,393 +0,0 @@
1
- /**
2
- * @file: tools 常用的工具函数
3
- * @Author: wanghui
4
- */
5
- 'use strict';
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- var previous = 0;
8
- var timeout = null;
9
- var ToolsClass = /** @class */ (function () {
10
- function ToolsClass() {
11
- var _this = this;
12
- /**
13
- * 蒙层显示后,html禁止滚动操作
14
- * @param {String} className
15
- * @return {Void}
16
- */
17
- this.stopScroll = function (className) {
18
- if (!(window && window.document)) {
19
- return new Error('仅支持浏览器');
20
- }
21
- var html = document.documentElement;
22
- html.style.overflow = 'hidden';
23
- html.style.height = '100%';
24
- var body = document.body;
25
- body.style.overflow = 'hidden';
26
- body.style.height = '100%';
27
- if (className) {
28
- var dom = document.querySelector("." + className);
29
- dom && dom.addEventListener('touchmove', _this.__setDefault__);
30
- }
31
- };
32
- /**
33
- * 蒙层隐藏后,html开启滚动操作
34
- * @param {String} className
35
- * @return {Void}
36
- */
37
- this.startScroll = function (className) {
38
- if (!(window && window.document)) {
39
- return new Error('仅支持浏览器');
40
- }
41
- var html = document.documentElement;
42
- html.style.overflow = 'visible';
43
- html.style.height = 'auto';
44
- var body = document.body;
45
- body.style.overflow = 'visible';
46
- body.style.height = 'auto';
47
- if (className) {
48
- var dom = document.querySelector("." + className);
49
- dom && dom.removeEventListener('touchmove', _this.__setDefault__);
50
- }
51
- };
52
- /**
53
- * object 对象转 array 数组
54
- * demo:
55
- * objectToArray({a:1,b:2}) 输出:["a=1", "b=2"]
56
- * @param {Object} obj
57
- * @returns {Array} arr
58
- */
59
- this.objectToArray = function (obj) {
60
- var arr = [];
61
- if (typeof obj === 'object') {
62
- for (var key in obj) {
63
- if (obj.hasOwnProperty(key)) {
64
- arr.push([key, obj[key]].join('='));
65
- }
66
- }
67
- }
68
- return arr;
69
- };
70
- /**
71
- * convertEnum
72
- * 枚举键值互换
73
- * @param {Object} obj
74
- * convertKeyValueEnum({a: 1, b: 2}) // {1: "a", 2: "b"}
75
- * @returns {Object} result
76
- */
77
- this.convertKeyValueEnum = function (obj) {
78
- var result = {};
79
- if (typeof obj === 'object') {
80
- for (var key in obj) {
81
- if (obj.hasOwnProperty(key)) {
82
- result[obj[key]] = key;
83
- }
84
- }
85
- }
86
- return result;
87
- };
88
- this.isDefined = function (val) {
89
- return val !== undefined && val !== null;
90
- };
91
- this.__loaded__ = {}; // 已加载的资源
92
- /**
93
- * 阻止事件传递
94
- * @param {Event} e
95
- * @return {Void}
96
- */
97
- this.__setDefault__ = function (e) {
98
- e && e.preventDefault();
99
- };
100
- }
101
- /**
102
- * 深拷贝 Object|Array
103
- * 深拷贝,支持 普通对象、数组,但是未解决Function、Date、RegExp,且1M以上数据性能不好
104
- * @param {String} data
105
- * @return {Object}
106
- */
107
- ToolsClass.prototype.deepCopy = function (data) {
108
- return JSON.parse(JSON.stringify(data));
109
- };
110
- /**
111
- * 深拷贝 Object|Array
112
- * 支持 普通对象、数组和函数的深复制,但是未解决循环引用、Date、RegExp
113
- * @param {Object|Array} data
114
- * @return {Object}
115
- */
116
- ToolsClass.prototype.deepCopy2 = function (obj) {
117
- var _obj = Array.isArray(obj) ? [] : {};
118
- for (var i in obj) {
119
- _obj[i] = typeof obj[i] === 'object' ? this.deepCopy2(obj[i]) : obj[i];
120
- }
121
- return _obj;
122
- };
123
- /**
124
- * 深拷贝 Object|Array
125
- * 注意:需要 yarn add lodash
126
- * @param {Object|Array} data
127
- * @return {Object}
128
- */
129
- ToolsClass.prototype.deepCopy3 = function (obj) {
130
- var deepcopy = require('lodash/cloneDeep');
131
- return deepcopy(obj);
132
- };
133
- /**
134
- * 防抖
135
- * demo:debounce(func, 300)(args)
136
- * @param {Function} func 执行函数
137
- * @param {Number} wait 节流时间,毫秒
138
- * @return {Function} delay
139
- */
140
- ToolsClass.prototype.debounce = function (func, wait) {
141
- var delay = function () {
142
- var args = arguments;
143
- if (timeout)
144
- clearTimeout(timeout);
145
- timeout = setTimeout(function () {
146
- func.apply(delay, args);
147
- }, wait);
148
- };
149
- return delay;
150
- };
151
- /**
152
- * 节流
153
- * demo:throttle(func, 300)(args)
154
- * @param {Object|Array} func 执行函数
155
- * @param {Number} wait 节流时间,毫秒
156
- * @return {Function} delay
157
- */
158
- ToolsClass.prototype.throttle = function (func, wait) {
159
- var delay = function () {
160
- var now = Date.now();
161
- if (now - previous > wait) {
162
- func.apply(delay, arguments);
163
- previous = now;
164
- }
165
- };
166
- return delay;
167
- };
168
- /**
169
- * 获取路径中文件名称
170
- * @param {String} url
171
- * @return {String}
172
- */
173
- ToolsClass.prototype.getUrlName = function (url) {
174
- return (url && url.split('?')[0].split('/').reverse()[0]);
175
- };
176
- /**
177
- * 动态加载脚本
178
- * tip:按需加载时用(多次调用,js不会重复加载)
179
- * @param {String} url
180
- * @return {Promise}
181
- */
182
- ToolsClass.prototype.loadJs = function (url) {
183
- var _this = this;
184
- if (!(window && window.document)) {
185
- return new Error('仅支持浏览器');
186
- }
187
- var name = this.getUrlName(url);
188
- var id = 'js_' + name;
189
- return new Promise(function (resolve, reject) {
190
- if (_this.__loaded__[id]) {
191
- return resolve();
192
- }
193
- var script = document.createElement('script');
194
- script.type = 'text/javascript';
195
- script.async = true;
196
- script.src = url;
197
- script.id = id;
198
- script.onload = function () {
199
- _this.__loaded__[id] = true;
200
- resolve();
201
- };
202
- script.onerror = function (e) {
203
- reject(e);
204
- };
205
- document.body.appendChild(script);
206
- });
207
- };
208
- /**
209
- * 动态加载样式
210
- * @param {String} url
211
- * @return {Promise}
212
- */
213
- ToolsClass.prototype.loadCss = function (url) {
214
- var _this = this;
215
- if (!(window && window.document)) {
216
- return new Error('仅支持浏览器');
217
- }
218
- var name = this.getUrlName(url);
219
- var id = 'css_' + name;
220
- return new Promise(function (resolve, reject) {
221
- if (_this.__loaded__[id]) {
222
- return resolve();
223
- }
224
- var link = document.createElement('link');
225
- link.type = 'text/css';
226
- link.rel = 'stylesheet';
227
- link.href = url;
228
- link.id = id;
229
- link.onload = function () {
230
- _this.__loaded__[id] = true;
231
- resolve();
232
- };
233
- link.onerror = function (e) {
234
- reject(e);
235
- };
236
- document.head.appendChild(link);
237
- });
238
- };
239
- /**
240
- * 字符串复制到剪贴板
241
- * 注意:需要 yarn add clipboard-copy
242
- * @param {String} str
243
- * @return {String}
244
- */
245
- ToolsClass.prototype.clipboard = function (str) {
246
- if (!(window && window.document)) {
247
- return new Error('仅支持浏览器');
248
- }
249
- var copy = require('clipboard-copy');
250
- return copy(str);
251
- };
252
- /**
253
- * 首字母大写
254
- * @param {String} str
255
- * @return {String}
256
- */
257
- ToolsClass.prototype.firstUpperCase = function (str) {
258
- return str.charAt(0).toUpperCase() + str.toString().slice(1);
259
- };
260
- /**
261
- * 截取数组或字符串,示例:slice('1234', 3)
262
- * @param {Array|String} target 数组或字符串
263
- * @param {Number} length 截取长度,从0开始
264
- * @return {any}
265
- */
266
- ToolsClass.prototype.slice = function (target, length) {
267
- if (target === void 0) { target = ''; }
268
- if (length === void 0) { length = 0; }
269
- return target.slice(0, length);
270
- };
271
- /**
272
- * 获取guid
273
- * @return {String}
274
- */
275
- ToolsClass.prototype.guid = function () {
276
- function S4() {
277
- return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
278
- }
279
- return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
280
- };
281
- /**
282
- * 获取文本字节数(含中文)
283
- * @param {String} str
284
- * @return {String}
285
- */
286
- ToolsClass.prototype.getBytesOfText = function (str) {
287
- if (str === void 0) { str = ''; }
288
- return str.replace(/[^\u0000-\u00ff]/g, "aa").length;
289
- };
290
- /**
291
- * 数组去重
292
- * @param {Array} arr
293
- * @returns {Array}
294
- */
295
- ToolsClass.prototype.uniqueArr = function (arr) {
296
- return Array.from(new Set(arr));
297
- };
298
- /**
299
- * 数组元素交换位置
300
- * index1和index2分别是两个数组的索引值,即是两个要交换元素位置的索引值,如1,5就是数组中下标为1和5的两个元素交换位置
301
- * @param {Array<string | number>} array 数组
302
- * @param {number} index1 添加项目的位置
303
- * @param {number} index2 删除项目的位置
304
- * swapArray([1, 2, 3, 4], 2, 3) // [1, 2, 4, 3]
305
- * @returns {Array<string | number>} array
306
- */
307
- ToolsClass.prototype.swapArray = function (array, index1, index2) {
308
- var _a;
309
- _a = [array[index2], array[index1]], array[index1] = _a[0], array[index2] = _a[1];
310
- return array;
311
- };
312
- /**
313
- * 过滤表情符号
314
- * @param {String} str
315
- * @return {String}
316
- */
317
- ToolsClass.prototype.filterEmoji = function (str) {
318
- return str.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/mg, '');
319
- };
320
- /**
321
- * 是否包含表情
322
- * @param {String} str
323
- * @return {boolean}
324
- */
325
- ToolsClass.prototype.containsEmoji = function (str) {
326
- var reg = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/mg;
327
- return reg.test(str);
328
- };
329
- /**
330
- * 是否包含表汉字
331
- * @param {String} str
332
- * @return {boolean}
333
- */
334
- ToolsClass.prototype.containsHanZi = function (str) {
335
- var reg = /[\u4e00-\u9fa5]/mg;
336
- return reg.test(str);
337
- };
338
- ToolsClass.prototype.isEmpty = function (val) {
339
- // null or undefined
340
- if (val == null)
341
- return true;
342
- if (typeof val === 'boolean')
343
- return false;
344
- if (typeof val === 'number')
345
- return !val;
346
- if (val instanceof Error)
347
- return val.message === '';
348
- switch (Object.prototype.toString.call(val)) {
349
- // String or Array
350
- case '[object String]':
351
- case '[object Array]':
352
- return !val.length;
353
- // Map or Set or File
354
- case '[object File]':
355
- case '[object Map]':
356
- case '[object Set]': {
357
- return !val.size;
358
- }
359
- // Plain Object
360
- case '[object Object]': {
361
- return !Object.keys(val).length;
362
- }
363
- }
364
- return false;
365
- };
366
- ;
367
- /**
368
- * 字段脱敏处理
369
- * @param {String} field 未脱敏字段
370
- * @param {Int} before 开头未脱敏字符数
371
- * @param {Int} after 结尾未脱敏字符数
372
- * @return {String} 已脱敏字段
373
- */
374
- ToolsClass.prototype.sensitiveField = function (field, before, after) {
375
- if (before === void 0) { before = 3; }
376
- if (after === void 0) { after = 4; }
377
- if (!field) {
378
- return '';
379
- }
380
- field = String(field);
381
- var sensitiveLen = field.length - before - after;
382
- if (sensitiveLen < 0) {
383
- sensitiveLen = 0;
384
- }
385
- // 匹配中文、英文、数字
386
- var regItem = '[\u4e00-\u9fa5a-zA-Z0-9]';
387
- var regExp = "(" + regItem + "{" + before + "})" + regItem + "*(" + regItem + "{" + after + "})";
388
- var reg = new RegExp(regExp);
389
- return field.replace(reg, "$1" + "*".repeat(sensitiveLen) + "$2");
390
- };
391
- return ToolsClass;
392
- }());
393
- module.exports = new ToolsClass();
package/global.d.ts DELETED
File without changes