@nsnanocat/util 0.0.0-preview-2c5e49e

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.
Files changed (53) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1 -0
  3. package/dist/env.d.cjs +6 -0
  4. package/dist/env.d.js +0 -0
  5. package/dist/getStorage.cjs +110 -0
  6. package/dist/getStorage.d.ts +8 -0
  7. package/dist/getStorage.js +62 -0
  8. package/dist/index.cjs +155 -0
  9. package/dist/index.d.ts +11 -0
  10. package/dist/index.js +11 -0
  11. package/dist/lib/app.cjs +48 -0
  12. package/dist/lib/app.d.ts +4 -0
  13. package/dist/lib/app.js +12 -0
  14. package/dist/lib/done.cjs +125 -0
  15. package/dist/lib/done.d.ts +17 -0
  16. package/dist/lib/done.js +76 -0
  17. package/dist/lib/environment.cjs +70 -0
  18. package/dist/lib/environment.d.ts +8 -0
  19. package/dist/lib/environment.js +36 -0
  20. package/dist/lib/index.cjs +101 -0
  21. package/dist/lib/index.d.ts +5 -0
  22. package/dist/lib/index.js +5 -0
  23. package/dist/lib/notification.cjs +135 -0
  24. package/dist/lib/notification.d.ts +20 -0
  25. package/dist/lib/notification.js +101 -0
  26. package/dist/lib/runScript.cjs +67 -0
  27. package/dist/lib/runScript.d.ts +3 -0
  28. package/dist/lib/runScript.js +33 -0
  29. package/dist/lib/time.cjs +54 -0
  30. package/dist/lib/time.d.ts +13 -0
  31. package/dist/lib/time.js +18 -0
  32. package/dist/lib/wait.cjs +40 -0
  33. package/dist/lib/wait.d.ts +4 -0
  34. package/dist/lib/wait.js +4 -0
  35. package/dist/polyfill/Console.cjs +250 -0
  36. package/dist/polyfill/Console.d.ts +21 -0
  37. package/dist/polyfill/Console.js +216 -0
  38. package/dist/polyfill/Lodash.cjs +74 -0
  39. package/dist/polyfill/Lodash.d.ts +41 -0
  40. package/dist/polyfill/Lodash.js +19 -0
  41. package/dist/polyfill/StatusTexts.cjs +99 -0
  42. package/dist/polyfill/StatusTexts.d.ts +62 -0
  43. package/dist/polyfill/StatusTexts.js +63 -0
  44. package/dist/polyfill/Storage.cjs +221 -0
  45. package/dist/polyfill/Storage.d.ts +12 -0
  46. package/dist/polyfill/Storage.js +173 -0
  47. package/dist/polyfill/fetch.cjs +214 -0
  48. package/dist/polyfill/fetch.d.ts +25 -0
  49. package/dist/polyfill/fetch.js +149 -0
  50. package/dist/polyfill/index.cjs +101 -0
  51. package/dist/polyfill/index.d.ts +5 -0
  52. package/dist/polyfill/index.js +5 -0
  53. package/package.json +73 -0
@@ -0,0 +1,101 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE__polyfill_Console_js__ from "../polyfill/Console.js";
2
+ import * as __WEBPACK_EXTERNAL_MODULE__app_js__ from "./app.js";
3
+ function notification(title = `ℹ️ ${__WEBPACK_EXTERNAL_MODULE__app_js__.$app} 通知`, subtitle = '', body = '', content = {}) {
4
+ const mutableContent = getMutableContent(content);
5
+ switch(__WEBPACK_EXTERNAL_MODULE__app_js__.$app){
6
+ case 'Quantumult X':
7
+ $notify(title, subtitle, body, mutableContent);
8
+ break;
9
+ case 'Node.js':
10
+ break;
11
+ default:
12
+ $notification.post(title, subtitle, body, mutableContent);
13
+ break;
14
+ }
15
+ __WEBPACK_EXTERNAL_MODULE__polyfill_Console_js__.Console.group('📣 系统通知');
16
+ __WEBPACK_EXTERNAL_MODULE__polyfill_Console_js__.Console.log(title, subtitle, body, JSON.stringify(mutableContent, null, 2));
17
+ __WEBPACK_EXTERNAL_MODULE__polyfill_Console_js__.Console.groupEnd();
18
+ }
19
+ function getMutableContent(content) {
20
+ const mutableContent = {};
21
+ switch(typeof content){
22
+ case 'string':
23
+ case 'number':
24
+ case 'boolean':
25
+ assignSimpleContent(mutableContent, content);
26
+ break;
27
+ case 'object':
28
+ if (content) assignObjectContent(mutableContent, content);
29
+ break;
30
+ default:
31
+ __WEBPACK_EXTERNAL_MODULE__polyfill_Console_js__.Console.error(`不支持的通知参数类型: ${typeof content}`);
32
+ break;
33
+ }
34
+ return mutableContent;
35
+ }
36
+ function assignSimpleContent(mutableContent, content) {
37
+ switch(__WEBPACK_EXTERNAL_MODULE__app_js__.$app){
38
+ case 'Quantumult X':
39
+ mutableContent['open-url'] = content;
40
+ break;
41
+ case 'Loon':
42
+ case 'Shadowrocket':
43
+ mutableContent.openUrl = content;
44
+ break;
45
+ default:
46
+ mutableContent.url = content;
47
+ break;
48
+ }
49
+ }
50
+ function assignObjectContent(mutableContent, content) {
51
+ const openUrl = content.open || content['open-url'] || content.url || content.openUrl;
52
+ const copyUrl = content.copy || content['update-pasteboard'] || content.updatePasteboard;
53
+ const mediaUrl = content.media || content['media-url'] || content.mediaUrl;
54
+ switch(__WEBPACK_EXTERNAL_MODULE__app_js__.$app){
55
+ case 'Quantumult X':
56
+ if (openUrl) mutableContent['open-url'] = openUrl;
57
+ if (null == mediaUrl ? void 0 : mediaUrl.startsWith('http')) mutableContent['media-url'] = mediaUrl;
58
+ if (copyUrl) mutableContent['update-pasteboard'] = copyUrl;
59
+ break;
60
+ case 'Loon':
61
+ if (openUrl) mutableContent.openUrl = openUrl;
62
+ if (null == mediaUrl ? void 0 : mediaUrl.startsWith('http')) mutableContent.mediaUrl = mediaUrl;
63
+ break;
64
+ default:
65
+ if (openUrl) {
66
+ mutableContent.action = 'open-url';
67
+ mutableContent.url = openUrl;
68
+ }
69
+ if (copyUrl) {
70
+ mutableContent.action = 'clipboard';
71
+ mutableContent.text = copyUrl;
72
+ }
73
+ if (mediaUrl) handleMediaContent(mutableContent, mediaUrl, content.mime);
74
+ if (content['auto-dismiss']) mutableContent['auto-dismiss'] = content['auto-dismiss'];
75
+ if (content.sound) mutableContent.sound = content.sound;
76
+ break;
77
+ }
78
+ }
79
+ function handleMediaContent(mutableContent, mediaUrl, mime) {
80
+ if (mediaUrl.startsWith('http')) mutableContent['media-url'] = mediaUrl;
81
+ else if (mediaUrl.startsWith('data:')) {
82
+ const base64RegExp = /^data:(?<MIME>\w+\/\w+);base64,(?<Base64>.+)/;
83
+ const match = mediaUrl.match(base64RegExp);
84
+ if (null == match ? void 0 : match.groups) {
85
+ mutableContent['media-base64'] = match.groups.Base64;
86
+ mutableContent['media-base64-mime'] = mime || match.groups.MIME;
87
+ }
88
+ } else {
89
+ mutableContent['media-base64'] = mediaUrl;
90
+ mutableContent['media-base64-mime'] = detectMimeType(mediaUrl);
91
+ }
92
+ }
93
+ function detectMimeType(base64) {
94
+ if (base64.startsWith('JVBERi0')) return 'application/pdf';
95
+ if (base64.startsWith('R0lGODdh') || base64.startsWith('R0lGODlh')) return 'image/gif';
96
+ if (base64.startsWith('iVBORw0KGgo')) return 'image/png';
97
+ if (base64.startsWith('/9j/')) return 'image/jpeg';
98
+ if (base64.startsWith('Qk02U')) return 'image/bmp';
99
+ return 'application/octet-stream';
100
+ }
101
+ export { notification };
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = function(exports1, definition) {
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = function(obj, prop) {
13
+ return Object.prototype.hasOwnProperty.call(obj, prop);
14
+ };
15
+ })();
16
+ (()=>{
17
+ __webpack_require__.r = function(exports1) {
18
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
19
+ value: 'Module'
20
+ });
21
+ Object.defineProperty(exports1, '__esModule', {
22
+ value: true
23
+ });
24
+ };
25
+ })();
26
+ var __webpack_exports__ = {};
27
+ __webpack_require__.r(__webpack_exports__);
28
+ __webpack_require__.d(__webpack_exports__, {
29
+ runScript: ()=>runScript
30
+ });
31
+ const Console_cjs_namespaceObject = require("../polyfill/Console.cjs");
32
+ const Storage_cjs_namespaceObject = require("../polyfill/Storage.cjs");
33
+ const fetch_cjs_namespaceObject = require("../polyfill/fetch.cjs");
34
+ async function runScript(script, runOpts = {}) {
35
+ try {
36
+ var _Storage_getItem_replace, _Storage_getItem;
37
+ const httpapi = null === (_Storage_getItem = Storage_cjs_namespaceObject.Storage.getItem('@chavy_boxjs_userCfgs.httpapi')) || void 0 === _Storage_getItem ? void 0 : null === (_Storage_getItem_replace = _Storage_getItem.replace(/\n/g, '')) || void 0 === _Storage_getItem_replace ? void 0 : _Storage_getItem_replace.trim();
38
+ if (!httpapi) throw new Error('httpapi 配置未找到,请检查配置项!');
39
+ const httpapiTimeoutFromConfig = Number.parseInt(Storage_cjs_namespaceObject.Storage.getItem('@chavy_boxjs_userCfgs.httpapi_timeout') || '20', 10);
40
+ const timeout = runOpts.timeout ?? httpapiTimeoutFromConfig;
41
+ const [password, address] = httpapi.split('@');
42
+ if (!password || !address) throw new Error('httpapi 配置格式错误,应为 password@address 格式!');
43
+ const request = {
44
+ url: `http://${address}/v1/scripting/evaluate`,
45
+ body: JSON.stringify({
46
+ script_text: script,
47
+ mock_type: 'cron',
48
+ timeout
49
+ }),
50
+ headers: {
51
+ 'X-Key': password,
52
+ Accept: '*/*'
53
+ },
54
+ timeout
55
+ };
56
+ const response = await (0, fetch_cjs_namespaceObject.fetch)(request);
57
+ return response.body;
58
+ } catch (error) {
59
+ Console_cjs_namespaceObject.Console.error('运行脚本时发生错误:', error.message);
60
+ throw error;
61
+ }
62
+ }
63
+ var __webpack_export_target__ = exports;
64
+ for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
65
+ if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
66
+ value: true
67
+ });
@@ -0,0 +1,3 @@
1
+ export declare function runScript(script: string, runOpts?: {
2
+ timeout?: number;
3
+ }): Promise<unknown>;
@@ -0,0 +1,33 @@
1
+ import * as __WEBPACK_EXTERNAL_MODULE__polyfill_Console_js__ from "../polyfill/Console.js";
2
+ import * as __WEBPACK_EXTERNAL_MODULE__polyfill_Storage_js__ from "../polyfill/Storage.js";
3
+ import * as __WEBPACK_EXTERNAL_MODULE__polyfill_fetch_js__ from "../polyfill/fetch.js";
4
+ async function runScript(script, runOpts = {}) {
5
+ try {
6
+ var _Storage_getItem_replace, _Storage_getItem;
7
+ const httpapi = null === (_Storage_getItem = __WEBPACK_EXTERNAL_MODULE__polyfill_Storage_js__.Storage.getItem('@chavy_boxjs_userCfgs.httpapi')) || void 0 === _Storage_getItem ? void 0 : null === (_Storage_getItem_replace = _Storage_getItem.replace(/\n/g, '')) || void 0 === _Storage_getItem_replace ? void 0 : _Storage_getItem_replace.trim();
8
+ if (!httpapi) throw new Error('httpapi 配置未找到,请检查配置项!');
9
+ const httpapiTimeoutFromConfig = Number.parseInt(__WEBPACK_EXTERNAL_MODULE__polyfill_Storage_js__.Storage.getItem('@chavy_boxjs_userCfgs.httpapi_timeout') || '20', 10);
10
+ const timeout = runOpts.timeout ?? httpapiTimeoutFromConfig;
11
+ const [password, address] = httpapi.split('@');
12
+ if (!password || !address) throw new Error('httpapi 配置格式错误,应为 password@address 格式!');
13
+ const request = {
14
+ url: `http://${address}/v1/scripting/evaluate`,
15
+ body: JSON.stringify({
16
+ script_text: script,
17
+ mock_type: 'cron',
18
+ timeout
19
+ }),
20
+ headers: {
21
+ 'X-Key': password,
22
+ Accept: '*/*'
23
+ },
24
+ timeout
25
+ };
26
+ const response = await (0, __WEBPACK_EXTERNAL_MODULE__polyfill_fetch_js__.fetch)(request);
27
+ return response.body;
28
+ } catch (error) {
29
+ __WEBPACK_EXTERNAL_MODULE__polyfill_Console_js__.Console.error('运行脚本时发生错误:', error.message);
30
+ throw error;
31
+ }
32
+ }
33
+ export { runScript };
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = function(exports1, definition) {
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = function(obj, prop) {
13
+ return Object.prototype.hasOwnProperty.call(obj, prop);
14
+ };
15
+ })();
16
+ (()=>{
17
+ __webpack_require__.r = function(exports1) {
18
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
19
+ value: 'Module'
20
+ });
21
+ Object.defineProperty(exports1, '__esModule', {
22
+ value: true
23
+ });
24
+ };
25
+ })();
26
+ var __webpack_exports__ = {};
27
+ __webpack_require__.r(__webpack_exports__);
28
+ __webpack_require__.d(__webpack_exports__, {
29
+ time: function() {
30
+ return time;
31
+ }
32
+ });
33
+ function time(format, ts) {
34
+ const date = ts ? new Date(ts) : new Date();
35
+ const Time = {
36
+ YY: date.getFullYear().toString().substring(3),
37
+ yyyy: date.getFullYear().toString(),
38
+ MM: (date.getMonth() + 1).toString().padStart(2, '0'),
39
+ dd: date.getDate().toString().padStart(2, '0'),
40
+ HH: date.getHours().toString().padStart(2, '0'),
41
+ mm: date.getMinutes().toString().padStart(2, '0'),
42
+ sss: date.getMilliseconds().toString().padStart(3, '0'),
43
+ ss: date.getSeconds().toString().padStart(2, '0'),
44
+ S: `${Math.floor(date.getMonth() / 3) + 1}`
45
+ };
46
+ let result = format;
47
+ for (const [key, value] of Object.entries(Time))result = result.replace(key, value);
48
+ return result;
49
+ }
50
+ var __webpack_export_target__ = exports;
51
+ for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
52
+ if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
53
+ value: true
54
+ });
@@ -0,0 +1,13 @@
1
+ /**
2
+ * time
3
+ * 时间格式化
4
+ * [version of ISO8601]{@link https://262.ecma-international.org/5.1/#sec-15.9.1.15}
5
+ * 示例:time("yyyy-MM-dd qq HH:mm:ss.S") YYYY-MM-DDTHH:mm:ss.sssZ
6
+ * :time("yyyyMMddHHmmssS")
7
+ * YY:年 MM:月 dd:日 S:季 HH:时 m:分 ss:秒 sss:毫秒 Z:时区
8
+ * 其中y可选0-4位占位符、S可选0-1位占位符,其余可选0-2位占位符
9
+ * @param {string} format 格式化参数
10
+ * @param {number} ts 可选: 根据指定时间戳返回格式化日期
11
+ *
12
+ */
13
+ export declare function time(format: string, ts: number): string;
@@ -0,0 +1,18 @@
1
+ function time(format, ts) {
2
+ const date = ts ? new Date(ts) : new Date();
3
+ const Time = {
4
+ YY: date.getFullYear().toString().substring(3),
5
+ yyyy: date.getFullYear().toString(),
6
+ MM: (date.getMonth() + 1).toString().padStart(2, '0'),
7
+ dd: date.getDate().toString().padStart(2, '0'),
8
+ HH: date.getHours().toString().padStart(2, '0'),
9
+ mm: date.getMinutes().toString().padStart(2, '0'),
10
+ sss: date.getMilliseconds().toString().padStart(3, '0'),
11
+ ss: date.getSeconds().toString().padStart(2, '0'),
12
+ S: `${Math.floor(date.getMonth() / 3) + 1}`
13
+ };
14
+ let result = format;
15
+ for (const [key, value] of Object.entries(Time))result = result.replace(key, value);
16
+ return result;
17
+ }
18
+ export { time };
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = function(exports1, definition) {
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = function(obj, prop) {
13
+ return Object.prototype.hasOwnProperty.call(obj, prop);
14
+ };
15
+ })();
16
+ (()=>{
17
+ __webpack_require__.r = function(exports1) {
18
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
19
+ value: 'Module'
20
+ });
21
+ Object.defineProperty(exports1, '__esModule', {
22
+ value: true
23
+ });
24
+ };
25
+ })();
26
+ var __webpack_exports__ = {};
27
+ __webpack_require__.r(__webpack_exports__);
28
+ __webpack_require__.d(__webpack_exports__, {
29
+ wait: function() {
30
+ return wait;
31
+ }
32
+ });
33
+ function wait(delay = 1000) {
34
+ return new Promise((resolve)=>setTimeout(resolve, delay));
35
+ }
36
+ var __webpack_export_target__ = exports;
37
+ for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
38
+ if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
39
+ value: true
40
+ });
@@ -0,0 +1,4 @@
1
+ /**
2
+ * wait
3
+ */
4
+ export declare function wait(delay?: number): Promise<void>;
@@ -0,0 +1,4 @@
1
+ function wait(delay = 1000) {
2
+ return new Promise((resolve)=>setTimeout(resolve, delay));
3
+ }
4
+ export { wait };
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = function(exports1, definition) {
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = function(obj, prop) {
13
+ return Object.prototype.hasOwnProperty.call(obj, prop);
14
+ };
15
+ })();
16
+ (()=>{
17
+ __webpack_require__.r = function(exports1) {
18
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
19
+ value: 'Module'
20
+ });
21
+ Object.defineProperty(exports1, '__esModule', {
22
+ value: true
23
+ });
24
+ };
25
+ })();
26
+ var __webpack_exports__ = {};
27
+ __webpack_require__.r(__webpack_exports__);
28
+ __webpack_require__.d(__webpack_exports__, {
29
+ Console: ()=>Console
30
+ });
31
+ const app_cjs_namespaceObject = require("../lib/app.cjs");
32
+ function _check_private_redeclaration(obj, privateCollection) {
33
+ if (privateCollection.has(obj)) throw new TypeError("Cannot initialize the same private elements twice on an object");
34
+ }
35
+ function _class_apply_descriptor_get(receiver, descriptor) {
36
+ if (descriptor.get) return descriptor.get.call(receiver);
37
+ return descriptor.value;
38
+ }
39
+ function _class_apply_descriptor_set(receiver, descriptor, value) {
40
+ if (descriptor.set) descriptor.set.call(receiver, value);
41
+ else {
42
+ if (!descriptor.writable) throw new TypeError("attempted to set read only private field");
43
+ descriptor.value = value;
44
+ }
45
+ }
46
+ function _class_extract_field_descriptor(receiver, privateMap, action) {
47
+ if (!privateMap.has(receiver)) throw new TypeError("attempted to " + action + " private field on non-instance");
48
+ return privateMap.get(receiver);
49
+ }
50
+ function _class_private_field_get(receiver, privateMap) {
51
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "get");
52
+ return _class_apply_descriptor_get(receiver, descriptor);
53
+ }
54
+ function _class_private_field_init(obj, privateMap, value) {
55
+ _check_private_redeclaration(obj, privateMap);
56
+ privateMap.set(obj, value);
57
+ }
58
+ function _class_private_field_set(receiver, privateMap, value) {
59
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "set");
60
+ _class_apply_descriptor_set(receiver, descriptor, value);
61
+ return value;
62
+ }
63
+ function _define_property(obj, key, value) {
64
+ if (key in obj) Object.defineProperty(obj, key, {
65
+ value: value,
66
+ enumerable: true,
67
+ configurable: true,
68
+ writable: true
69
+ });
70
+ else obj[key] = value;
71
+ return obj;
72
+ }
73
+ var _counts = /*#__PURE__*/ new WeakMap(), _groups = /*#__PURE__*/ new WeakMap(), _times = /*#__PURE__*/ new WeakMap(), _level = /*#__PURE__*/ new WeakMap();
74
+ class ConsoleFactory {
75
+ error(...msg) {
76
+ if (_class_private_field_get(this, _level) < 1) return;
77
+ switch(app_cjs_namespaceObject.$app){
78
+ case 'Surge':
79
+ case 'Loon':
80
+ case 'Stash':
81
+ case 'Egern':
82
+ case 'Shadowrocket':
83
+ case 'Quantumult X':
84
+ case 'Node.js':
85
+ this.log(...msg.map((m)=>{
86
+ if (m instanceof Error) return `❌ ${m.stack}`;
87
+ return `❌ ${m}`;
88
+ }));
89
+ break;
90
+ default:
91
+ this.log(...msg.map((m)=>`❌ ${m}`));
92
+ break;
93
+ }
94
+ }
95
+ info(...msg) {
96
+ if (_class_private_field_get(this, _level) < 3) return;
97
+ this.log(...msg.map((m)=>`ℹ️ ${m}`));
98
+ }
99
+ get logLevel() {
100
+ switch(_class_private_field_get(this, _level)){
101
+ case 0:
102
+ return 'OFF';
103
+ case 1:
104
+ return 'ERROR';
105
+ case 2:
106
+ return 'WARN';
107
+ case 4:
108
+ return 'DEBUG';
109
+ case 5:
110
+ return 'ALL';
111
+ case 3:
112
+ default:
113
+ return 'INFO';
114
+ }
115
+ }
116
+ set logLevel(_level1) {
117
+ let level = _level1;
118
+ switch(typeof level){
119
+ case 'string':
120
+ level = level.toLowerCase();
121
+ break;
122
+ case 'number':
123
+ break;
124
+ case 'undefined':
125
+ default:
126
+ level = 'warn';
127
+ break;
128
+ }
129
+ switch(level){
130
+ case 0:
131
+ case 'off':
132
+ _class_private_field_set(this, _level, 0);
133
+ break;
134
+ case 1:
135
+ case 'error':
136
+ _class_private_field_set(this, _level, 1);
137
+ break;
138
+ case 3:
139
+ case 'info':
140
+ _class_private_field_set(this, _level, 3);
141
+ break;
142
+ case 4:
143
+ case 'debug':
144
+ _class_private_field_set(this, _level, 4);
145
+ break;
146
+ case 5:
147
+ case 'all':
148
+ _class_private_field_set(this, _level, 5);
149
+ break;
150
+ case 2:
151
+ case 'warn':
152
+ case 'warning':
153
+ default:
154
+ _class_private_field_set(this, _level, 2);
155
+ break;
156
+ }
157
+ }
158
+ warn(...args) {
159
+ if (_class_private_field_get(this, _level) < 2) return;
160
+ let msg = args;
161
+ msg = msg.map((m)=>`⚠️ ${m}`);
162
+ this.log(...msg);
163
+ }
164
+ constructor(){
165
+ _class_private_field_init(this, _counts, {
166
+ writable: true,
167
+ value: new Map([])
168
+ });
169
+ _class_private_field_init(this, _groups, {
170
+ writable: true,
171
+ value: []
172
+ });
173
+ _class_private_field_init(this, _times, {
174
+ writable: true,
175
+ value: new Map([])
176
+ });
177
+ _define_property(this, "clear", ()=>{});
178
+ _define_property(this, "count", (label = 'default')=>{
179
+ if (_class_private_field_get(this, _counts).has(label)) _class_private_field_get(this, _counts).set(label, _class_private_field_get(this, _counts).get(label) ?? 1);
180
+ else _class_private_field_get(this, _counts).set(label, 0);
181
+ this.log(`${label}: ${_class_private_field_get(this, _counts).get(label)}`);
182
+ });
183
+ _define_property(this, "countReset", (label = 'default')=>{
184
+ switch(_class_private_field_get(this, _counts).has(label)){
185
+ case true:
186
+ _class_private_field_get(this, _counts).set(label, 0);
187
+ this.log(`${label}: ${_class_private_field_get(this, _counts).get(label)}`);
188
+ break;
189
+ case false:
190
+ this.warn(`Counter "${label}" doesn’t exist`);
191
+ break;
192
+ }
193
+ });
194
+ _define_property(this, "debug", (...args)=>{
195
+ if (_class_private_field_get(this, _level) < 4) return;
196
+ this.log(...args.map((m)=>`🅱️ ${m}`));
197
+ });
198
+ _define_property(this, "exception", (...msg)=>this.error(...msg));
199
+ _define_property(this, "group", (label)=>_class_private_field_get(this, _groups).unshift(label));
200
+ _define_property(this, "groupEnd", ()=>_class_private_field_get(this, _groups).shift());
201
+ _class_private_field_init(this, _level, {
202
+ writable: true,
203
+ value: 3
204
+ });
205
+ _define_property(this, "log", (...args)=>{
206
+ if (0 === _class_private_field_get(this, _level)) return;
207
+ let msg = args;
208
+ msg = msg.map((item)=>{
209
+ let log = item;
210
+ switch(typeof log){
211
+ case 'object':
212
+ log = JSON.stringify(log);
213
+ break;
214
+ case 'bigint':
215
+ case 'number':
216
+ case 'boolean':
217
+ case 'string':
218
+ log = log.toString();
219
+ break;
220
+ case 'undefined':
221
+ default:
222
+ break;
223
+ }
224
+ return log;
225
+ });
226
+ _class_private_field_get(this, _groups).forEach((group)=>{
227
+ msg = msg.map((log)=>` ${log}`);
228
+ msg.unshift(`▼ ${group}:`);
229
+ });
230
+ msg = [
231
+ '',
232
+ ...msg
233
+ ];
234
+ console.log(msg.join('\n'));
235
+ });
236
+ _define_property(this, "time", (label = 'default')=>_class_private_field_get(this, _times).set(label, Date.now()));
237
+ _define_property(this, "timeEnd", (label = 'default')=>_class_private_field_get(this, _times).delete(label));
238
+ _define_property(this, "timeLog", (label = 'default')=>{
239
+ const time = _class_private_field_get(this, _times).get(label);
240
+ if (time) this.log(`${label}: ${Date.now() - time}ms`);
241
+ else this.warn(`Timer "${label}" doesn’t exist`);
242
+ });
243
+ }
244
+ }
245
+ const Console = new ConsoleFactory();
246
+ var __webpack_export_target__ = exports;
247
+ for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
248
+ if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
249
+ value: true
250
+ });
@@ -0,0 +1,21 @@
1
+ declare class ConsoleFactory {
2
+ #private;
3
+ clear: () => void;
4
+ count: (label?: string) => void;
5
+ countReset: (label?: string) => void;
6
+ debug: (...args: any[]) => void;
7
+ error(...msg: any[]): void;
8
+ exception: (...msg: any[]) => void;
9
+ group: (label: string) => number;
10
+ groupEnd: () => string | undefined;
11
+ info(...msg: any[]): void;
12
+ get logLevel(): string | number;
13
+ set logLevel(_level: string | number);
14
+ log: (...args: any[]) => void;
15
+ time: (label?: string) => Map<string, number>;
16
+ timeEnd: (label?: string) => boolean;
17
+ timeLog: (label?: string) => void;
18
+ warn(...args: any[]): void;
19
+ }
20
+ export declare const Console: ConsoleFactory;
21
+ export {};