sa2kit 1.6.57 → 1.6.59
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/AliyunOSSProvider-KSYW2IOG.js +15 -0
- package/dist/{AliyunOSSProvider-2FARPAQD.js.map → AliyunOSSProvider-KSYW2IOG.js.map} +1 -1
- package/dist/AliyunOSSProvider-TBK3G7YK.mjs +6 -0
- package/dist/{AliyunOSSProvider-UMVGVBDJ.mjs.map → AliyunOSSProvider-TBK3G7YK.mjs.map} +1 -1
- package/dist/LocalStorageProvider-2DGYRQAB.mjs +6 -0
- package/dist/{LocalStorageProvider-PYOHETJV.mjs.map → LocalStorageProvider-2DGYRQAB.mjs.map} +1 -1
- package/dist/LocalStorageProvider-SSRW3ZJW.js +15 -0
- package/dist/{LocalStorageProvider-JQF5WK5H.js.map → LocalStorageProvider-SSRW3ZJW.js.map} +1 -1
- package/dist/UniversalFileService-336GFY6N.mjs +6 -0
- package/dist/{UniversalFileService-TNYKO6JN.mjs.map → UniversalFileService-336GFY6N.mjs.map} +1 -1
- package/dist/UniversalFileService-J6ET6KZK.js +15 -0
- package/dist/{UniversalFileService-RBV6EN5J.js.map → UniversalFileService-J6ET6KZK.js.map} +1 -1
- package/dist/calendar/index.js +11 -11
- package/dist/calendar/index.mjs +4 -4
- package/dist/chunk-25OFOKNF.js +171 -0
- package/dist/chunk-25OFOKNF.js.map +1 -0
- package/dist/chunk-3DXPQ4YV.mjs +165 -0
- package/dist/chunk-3DXPQ4YV.mjs.map +1 -0
- package/dist/{chunk-4VJQZSPU.mjs → chunk-3NHAT7D4.mjs} +3 -4
- package/dist/chunk-3NHAT7D4.mjs.map +1 -0
- package/dist/{chunk-3JW4X3AC.mjs → chunk-622Y6LTH.mjs} +3 -3
- package/dist/{chunk-3JW4X3AC.mjs.map → chunk-622Y6LTH.mjs.map} +1 -1
- package/dist/{chunk-HYZ5C6FY.mjs → chunk-7CMGQX3S.mjs} +1199 -1995
- package/dist/chunk-7CMGQX3S.mjs.map +1 -0
- package/dist/chunk-CIVO4R6N.mjs +37 -0
- package/dist/chunk-CIVO4R6N.mjs.map +1 -0
- package/dist/{chunk-6BJ76BYC.mjs → chunk-EGJPS7OL.mjs} +3 -3
- package/dist/{chunk-6BJ76BYC.mjs.map → chunk-EGJPS7OL.mjs.map} +1 -1
- package/dist/{chunk-UR5TU4MW.mjs → chunk-FVDPGX6A.mjs} +3 -3
- package/dist/{chunk-UR5TU4MW.mjs.map → chunk-FVDPGX6A.mjs.map} +1 -1
- package/dist/chunk-HDMIOOZY.mjs +546 -0
- package/dist/chunk-HDMIOOZY.mjs.map +1 -0
- package/dist/{chunk-MZKATHB7.js → chunk-HHVDOIPV.js} +4 -4
- package/dist/{chunk-MZKATHB7.js.map → chunk-HHVDOIPV.js.map} +1 -1
- package/dist/chunk-HJ6MH7J7.js +552 -0
- package/dist/chunk-HJ6MH7J7.js.map +1 -0
- package/dist/chunk-KH6RQ4J5.js +28 -0
- package/dist/chunk-KH6RQ4J5.js.map +1 -0
- package/dist/{chunk-53WLQ22S.js → chunk-LJGJPAQ4.js} +6 -6
- package/dist/{chunk-53WLQ22S.js.map → chunk-LJGJPAQ4.js.map} +1 -1
- package/dist/{chunk-35CXIK5Y.js → chunk-NCOXT7SK.js} +11 -11
- package/dist/{chunk-35CXIK5Y.js.map → chunk-NCOXT7SK.js.map} +1 -1
- package/dist/chunk-NZZZUMMX.mjs +784 -0
- package/dist/chunk-NZZZUMMX.mjs.map +1 -0
- package/dist/{chunk-OBIPI4GU.mjs → chunk-OFYBMMWT.mjs} +4 -4
- package/dist/{chunk-OBIPI4GU.mjs.map → chunk-OFYBMMWT.mjs.map} +1 -1
- package/dist/chunk-Q5EDCKQA.js +336 -0
- package/dist/chunk-Q5EDCKQA.js.map +1 -0
- package/dist/{chunk-U7AQC2Z7.js → chunk-SKCMZYSQ.js} +1203 -2001
- package/dist/chunk-SKCMZYSQ.js.map +1 -0
- package/dist/{chunk-6NMIKAE7.mjs → chunk-SNBILYSH.mjs} +5 -5
- package/dist/{chunk-6NMIKAE7.mjs.map → chunk-SNBILYSH.mjs.map} +1 -1
- package/dist/{chunk-IPY26RQH.js → chunk-UVHPCLP6.js} +5 -5
- package/dist/{chunk-IPY26RQH.js.map → chunk-UVHPCLP6.js.map} +1 -1
- package/dist/{chunk-V6BXO6ZS.mjs → chunk-UZB4IO3T.mjs} +835 -38
- package/dist/chunk-UZB4IO3T.mjs.map +1 -0
- package/dist/{chunk-W2NCOORK.js → chunk-WK3HTUID.js} +951 -145
- package/dist/chunk-WK3HTUID.js.map +1 -0
- package/dist/chunk-YMS6BPXS.js +807 -0
- package/dist/chunk-YMS6BPXS.js.map +1 -0
- package/dist/chunk-YOTQG4NP.mjs +314 -0
- package/dist/chunk-YOTQG4NP.mjs.map +1 -0
- package/dist/chunk-ZGVB35L2.mjs +25 -0
- package/dist/chunk-ZGVB35L2.mjs.map +1 -0
- package/dist/chunk-ZRAW3HXA.js +43 -0
- package/dist/chunk-ZRAW3HXA.js.map +1 -0
- package/dist/{chunk-4XXIBWCO.js → chunk-ZRWED7Q6.js} +66 -66
- package/dist/{chunk-4XXIBWCO.js.map → chunk-ZRWED7Q6.js.map} +1 -1
- package/dist/{chunk-DVENFCQY.js → chunk-ZWQJSZEY.js} +4 -5
- package/dist/chunk-ZWQJSZEY.js.map +1 -0
- package/dist/components/index.js +104 -104
- package/dist/components/index.mjs +4 -4
- package/dist/index.js +146 -148
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -11
- package/dist/index.mjs.map +1 -1
- package/dist/logger/index.js +7 -7
- package/dist/logger/index.mjs +1 -4
- package/dist/mikuFusionGame/index.js +4 -4
- package/dist/mikuFusionGame/index.mjs +3 -3
- package/dist/portfolio/index.js +10 -10
- package/dist/portfolio/index.mjs +5 -5
- package/dist/showmasterpiece/db/index.js +42 -42
- package/dist/showmasterpiece/db/index.mjs +1 -1
- package/dist/showmasterpiece/index.js +143 -144
- package/dist/showmasterpiece/index.js.map +1 -1
- package/dist/showmasterpiece/index.mjs +7 -9
- package/dist/showmasterpiece/index.mjs.map +1 -1
- package/dist/showmasterpiece/logic/index.d.mts +10 -1
- package/dist/showmasterpiece/logic/index.d.ts +10 -1
- package/dist/showmasterpiece/logic/index.js +19 -19
- package/dist/showmasterpiece/logic/index.mjs +2 -2
- package/dist/showmasterpiece/server/index.js +42 -42
- package/dist/showmasterpiece/server/index.mjs +1 -1
- package/dist/showmasterpiece/ui/web/index.js +34 -34
- package/dist/showmasterpiece/ui/web/index.mjs +6 -6
- package/dist/universalExport/server/index.js +2 -4
- package/dist/universalExport/server/index.js.map +1 -1
- package/dist/universalExport/server/index.mjs +1 -3
- package/dist/universalExport/server/index.mjs.map +1 -1
- package/dist/universalFile/index.js +6 -9
- package/dist/universalFile/index.js.map +1 -1
- package/dist/universalFile/index.mjs +1 -5
- package/dist/universalFile/index.mjs.map +1 -1
- package/dist/universalFile/server/index.js +31 -64
- package/dist/universalFile/server/index.js.map +1 -1
- package/dist/universalFile/server/index.mjs +7 -42
- package/dist/universalFile/server/index.mjs.map +1 -1
- package/dist/utils/index.js +11 -11
- package/dist/utils/index.mjs +2 -2
- package/package.json +1 -1
- package/dist/AliyunOSSProvider-2FARPAQD.js +0 -15
- package/dist/AliyunOSSProvider-UMVGVBDJ.mjs +0 -9
- package/dist/LocalStorageProvider-JQF5WK5H.js +0 -15
- package/dist/LocalStorageProvider-PYOHETJV.mjs +0 -9
- package/dist/UniversalFileService-RBV6EN5J.js +0 -15
- package/dist/UniversalFileService-TNYKO6JN.mjs +0 -9
- package/dist/chunk-4NFOSCM6.js +0 -34
- package/dist/chunk-4NFOSCM6.js.map +0 -1
- package/dist/chunk-4VJQZSPU.mjs.map +0 -1
- package/dist/chunk-6AHYPPUP.js +0 -344
- package/dist/chunk-6AHYPPUP.js.map +0 -1
- package/dist/chunk-76V7EKBX.mjs +0 -796
- package/dist/chunk-76V7EKBX.mjs.map +0 -1
- package/dist/chunk-ACLOJXXE.js +0 -195
- package/dist/chunk-ACLOJXXE.js.map +0 -1
- package/dist/chunk-AEXPAH7Z.mjs +0 -32
- package/dist/chunk-AEXPAH7Z.mjs.map +0 -1
- package/dist/chunk-CFGX3EKK.js +0 -560
- package/dist/chunk-CFGX3EKK.js.map +0 -1
- package/dist/chunk-D2HXMGXS.js +0 -46
- package/dist/chunk-D2HXMGXS.js.map +0 -1
- package/dist/chunk-DVENFCQY.js.map +0 -1
- package/dist/chunk-HYZ5C6FY.mjs.map +0 -1
- package/dist/chunk-K7WNCB4V.mjs +0 -554
- package/dist/chunk-K7WNCB4V.mjs.map +0 -1
- package/dist/chunk-L4ZYBFB2.mjs +0 -44
- package/dist/chunk-L4ZYBFB2.mjs.map +0 -1
- package/dist/chunk-M4HGHTIC.js +0 -820
- package/dist/chunk-M4HGHTIC.js.map +0 -1
- package/dist/chunk-PXWDQFWV.mjs +0 -192
- package/dist/chunk-PXWDQFWV.mjs.map +0 -1
- package/dist/chunk-U7AQC2Z7.js.map +0 -1
- package/dist/chunk-V6BXO6ZS.mjs.map +0 -1
- package/dist/chunk-VTGPHE4Z.mjs +0 -322
- package/dist/chunk-VTGPHE4Z.mjs.map +0 -1
- package/dist/chunk-W2NCOORK.js.map +0 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkHJ6MH7J7_js = require('./chunk-HJ6MH7J7.js');
|
|
4
|
+
require('./chunk-KH6RQ4J5.js');
|
|
5
|
+
require('./chunk-25OFOKNF.js');
|
|
6
|
+
require('./chunk-Z6ZWNWWR.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Object.defineProperty(exports, "AliyunOSSProvider", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () { return chunkHJ6MH7J7_js.AliyunOSSProvider; }
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=AliyunOSSProvider-KSYW2IOG.js.map
|
|
15
|
+
//# sourceMappingURL=AliyunOSSProvider-KSYW2IOG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"AliyunOSSProvider-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"AliyunOSSProvider-KSYW2IOG.js"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { AliyunOSSProvider } from './chunk-HDMIOOZY.mjs';
|
|
2
|
+
import './chunk-ZGVB35L2.mjs';
|
|
3
|
+
import './chunk-3DXPQ4YV.mjs';
|
|
4
|
+
import './chunk-WMJKH4XE.mjs';
|
|
5
|
+
//# sourceMappingURL=AliyunOSSProvider-TBK3G7YK.mjs.map
|
|
6
|
+
//# sourceMappingURL=AliyunOSSProvider-TBK3G7YK.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"AliyunOSSProvider-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"AliyunOSSProvider-TBK3G7YK.mjs"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { LocalStorageProvider } from './chunk-YOTQG4NP.mjs';
|
|
2
|
+
import './chunk-ZGVB35L2.mjs';
|
|
3
|
+
import './chunk-3DXPQ4YV.mjs';
|
|
4
|
+
import './chunk-WMJKH4XE.mjs';
|
|
5
|
+
//# sourceMappingURL=LocalStorageProvider-2DGYRQAB.mjs.map
|
|
6
|
+
//# sourceMappingURL=LocalStorageProvider-2DGYRQAB.mjs.map
|
package/dist/{LocalStorageProvider-PYOHETJV.mjs.map → LocalStorageProvider-2DGYRQAB.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"LocalStorageProvider-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"LocalStorageProvider-2DGYRQAB.mjs"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkQ5EDCKQA_js = require('./chunk-Q5EDCKQA.js');
|
|
4
|
+
require('./chunk-KH6RQ4J5.js');
|
|
5
|
+
require('./chunk-25OFOKNF.js');
|
|
6
|
+
require('./chunk-Z6ZWNWWR.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Object.defineProperty(exports, "LocalStorageProvider", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () { return chunkQ5EDCKQA_js.LocalStorageProvider; }
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=LocalStorageProvider-SSRW3ZJW.js.map
|
|
15
|
+
//# sourceMappingURL=LocalStorageProvider-SSRW3ZJW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"LocalStorageProvider-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"LocalStorageProvider-SSRW3ZJW.js"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { UniversalFileService } from './chunk-NZZZUMMX.mjs';
|
|
2
|
+
import './chunk-3DXPQ4YV.mjs';
|
|
3
|
+
import './chunk-CIVO4R6N.mjs';
|
|
4
|
+
import './chunk-WMJKH4XE.mjs';
|
|
5
|
+
//# sourceMappingURL=UniversalFileService-336GFY6N.mjs.map
|
|
6
|
+
//# sourceMappingURL=UniversalFileService-336GFY6N.mjs.map
|
package/dist/{UniversalFileService-TNYKO6JN.mjs.map → UniversalFileService-336GFY6N.mjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"UniversalFileService-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"UniversalFileService-336GFY6N.mjs"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkYMS6BPXS_js = require('./chunk-YMS6BPXS.js');
|
|
4
|
+
require('./chunk-25OFOKNF.js');
|
|
5
|
+
require('./chunk-ZRAW3HXA.js');
|
|
6
|
+
require('./chunk-Z6ZWNWWR.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Object.defineProperty(exports, "UniversalFileService", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () { return chunkYMS6BPXS_js.UniversalFileService; }
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=UniversalFileService-J6ET6KZK.js.map
|
|
15
|
+
//# sourceMappingURL=UniversalFileService-J6ET6KZK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"UniversalFileService-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"UniversalFileService-J6ET6KZK.js"}
|
package/dist/calendar/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
5
|
-
require('../chunk-
|
|
3
|
+
var chunkZRWED7Q6_js = require('../chunk-ZRWED7Q6.js');
|
|
4
|
+
require('../chunk-HHVDOIPV.js');
|
|
5
|
+
require('../chunk-ZWQJSZEY.js');
|
|
6
6
|
require('../chunk-KO73EBUT.js');
|
|
7
7
|
require('../chunk-XJ7ZAGC5.js');
|
|
8
|
-
require('../chunk-
|
|
8
|
+
require('../chunk-25OFOKNF.js');
|
|
9
9
|
require('../chunk-Z6ZWNWWR.js');
|
|
10
10
|
var React2 = require('react');
|
|
11
11
|
var clsx = require('clsx');
|
|
@@ -581,7 +581,7 @@ function EventList({
|
|
|
581
581
|
);
|
|
582
582
|
}));
|
|
583
583
|
return /* @__PURE__ */ React2__default.default.createElement("div", { className: clsx.clsx("space-y-6", className) }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "bg-white rounded-lg shadow-sm border border-gray-200 p-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex-1 max-w-md" }, /* @__PURE__ */ React2__default.default.createElement(
|
|
584
|
-
|
|
584
|
+
chunkZRWED7Q6_js.SearchBox,
|
|
585
585
|
{
|
|
586
586
|
searchQuery: config.filter.searchText || "",
|
|
587
587
|
onSearchChange: handleSearchChange,
|
|
@@ -645,7 +645,7 @@ function EventList({
|
|
|
645
645
|
},
|
|
646
646
|
"\u4E0B\u4E00\u9875"
|
|
647
647
|
)))), !loading && paginatedEvents.length === 0 && /* @__PURE__ */ React2__default.default.createElement("div", { className: "text-center py-12" }, /* @__PURE__ */ React2__default.default.createElement("svg", { className: "w-16 h-16 mx-auto mb-4 text-gray-300", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24" }, /* @__PURE__ */ React2__default.default.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" })), /* @__PURE__ */ React2__default.default.createElement("h3", { className: "text-lg font-medium text-gray-900 mb-2" }, "\u6682\u65E0\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-gray-600" }, config.filter.searchText || config.filter.priority || config.filter.color || config.filter.dateRange ? "\u6CA1\u6709\u627E\u5230\u7B26\u5408\u6761\u4EF6\u7684\u4E8B\u4EF6" : "\u8FD8\u6CA1\u6709\u521B\u5EFA\u4EFB\u4F55\u4E8B\u4EF6")), /* @__PURE__ */ React2__default.default.createElement(
|
|
648
|
-
|
|
648
|
+
chunkZRWED7Q6_js.ConfirmModal,
|
|
649
649
|
{
|
|
650
650
|
isOpen: showBatchDeleteConfirm,
|
|
651
651
|
onClose: () => setShowBatchDeleteConfirm(false),
|
|
@@ -1827,7 +1827,7 @@ var ImprovedEventModal = ({
|
|
|
1827
1827
|
placeholder: "\u8F93\u5165\u91CD\u590D\u6B21\u6570"
|
|
1828
1828
|
}
|
|
1829
1829
|
))), /* @__PURE__ */ React2__default.default.createElement("div", { className: "p-3 bg-purple-50 rounded-lg text-sm text-purple-700" }, /* @__PURE__ */ React2__default.default.createElement("strong", null, "\u793A\u4F8B"), '\uFF1A\u9009\u62E9"\u6BCF\u5929\u91CD\u590D3\u6B21"\u5C06\u521B\u5EFA3\u4E2A\u72EC\u7ACB\u7684\u4E8B\u4EF6\u5B9E\u4F8B\uFF0C\u5206\u522B\u5728\u8FDE\u7EED\u76843\u5929\u53D1\u751F\u3002'));
|
|
1830
|
-
return /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement(
|
|
1830
|
+
return /* @__PURE__ */ React2__default.default.createElement(React2__default.default.Fragment, null, /* @__PURE__ */ React2__default.default.createElement(chunkZRWED7Q6_js.Modal, { isOpen, onClose: handleClose, width: "800px", height: "auto" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "relative" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "px-6 py-4 border-b border-gray-200 bg-gradient-to-r from-blue-50 to-indigo-50" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center justify-between" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "flex items-center space-x-3" }, /* @__PURE__ */ React2__default.default.createElement("div", { className: "w-10 h-10 bg-blue-100 rounded-full flex items-center justify-center" }, /* @__PURE__ */ React2__default.default.createElement("span", { className: "text-blue-600 text-lg" }, isEditMode ? "\u270F\uFE0F" : "\u2795")), /* @__PURE__ */ React2__default.default.createElement("div", null, /* @__PURE__ */ React2__default.default.createElement("h2", { className: "text-xl font-semibold text-gray-900" }, isEditMode ? "\u7F16\u8F91\u4E8B\u4EF6" : "\u521B\u5EFA\u65B0\u4E8B\u4EF6"), /* @__PURE__ */ React2__default.default.createElement("p", { className: "text-sm text-gray-600" }, isEditMode ? "\u4FEE\u6539\u4E8B\u4EF6\u4FE1\u606F" : "\u586B\u5199\u4E8B\u4EF6\u8BE6\u7EC6\u4FE1\u606F"))), /* @__PURE__ */ React2__default.default.createElement(
|
|
1831
1831
|
"button",
|
|
1832
1832
|
{
|
|
1833
1833
|
type: "button",
|
|
@@ -1864,7 +1864,7 @@ var ImprovedEventModal = ({
|
|
|
1864
1864
|
/* @__PURE__ */ React2__default.default.createElement("span", { className: "mr-2" }, isEditMode ? "\u{1F4BE}" : "\u2728"),
|
|
1865
1865
|
isLoading ? "\u4FDD\u5B58\u4E2D..." : isEditMode ? "\u66F4\u65B0\u4E8B\u4EF6" : "\u521B\u5EFA\u4E8B\u4EF6"
|
|
1866
1866
|
)))))), /* @__PURE__ */ React2__default.default.createElement(
|
|
1867
|
-
|
|
1867
|
+
chunkZRWED7Q6_js.ConfirmModal,
|
|
1868
1868
|
{
|
|
1869
1869
|
isOpen: showDeleteConfirm,
|
|
1870
1870
|
onClose: () => setShowDeleteConfirm(false),
|
|
@@ -3332,7 +3332,7 @@ var EventModal = ({
|
|
|
3332
3332
|
onClose();
|
|
3333
3333
|
};
|
|
3334
3334
|
return /* @__PURE__ */ React2__default.default.createElement(
|
|
3335
|
-
|
|
3335
|
+
chunkZRWED7Q6_js.Modal,
|
|
3336
3336
|
{
|
|
3337
3337
|
isOpen,
|
|
3338
3338
|
onClose: handleClose,
|
|
@@ -3616,7 +3616,7 @@ var EventModal = ({
|
|
|
3616
3616
|
isLoading ? "\u4FDD\u5B58\u4E2D..." : isEditMode ? "\u66F4\u65B0\u4E8B\u4EF6" : "\u521B\u5EFA\u4E8B\u4EF6"
|
|
3617
3617
|
)))),
|
|
3618
3618
|
/* @__PURE__ */ React2__default.default.createElement(
|
|
3619
|
-
|
|
3619
|
+
chunkZRWED7Q6_js.ConfirmModal,
|
|
3620
3620
|
{
|
|
3621
3621
|
isOpen: showDeleteConfirm,
|
|
3622
3622
|
onClose: () => setShowDeleteConfirm(false),
|
|
@@ -3760,7 +3760,7 @@ var EventDetailPage = ({
|
|
|
3760
3760
|
event
|
|
3761
3761
|
}
|
|
3762
3762
|
), /* @__PURE__ */ React2__default.default.createElement(
|
|
3763
|
-
|
|
3763
|
+
chunkZRWED7Q6_js.ConfirmModal,
|
|
3764
3764
|
{
|
|
3765
3765
|
isOpen: showDeleteConfirm,
|
|
3766
3766
|
onClose: () => setShowDeleteConfirm(false),
|
package/dist/calendar/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { SearchBox, ConfirmModal, Modal } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
import { SearchBox, ConfirmModal, Modal } from '../chunk-622Y6LTH.mjs';
|
|
2
|
+
import '../chunk-EGJPS7OL.mjs';
|
|
3
|
+
import '../chunk-3NHAT7D4.mjs';
|
|
4
4
|
import '../chunk-VVWQTO4Y.mjs';
|
|
5
5
|
import '../chunk-WEEXCPSE.mjs';
|
|
6
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-3DXPQ4YV.mjs';
|
|
7
7
|
import '../chunk-WMJKH4XE.mjs';
|
|
8
8
|
import React2, { useState, useMemo, useCallback, useEffect } from 'react';
|
|
9
9
|
import { clsx } from 'clsx';
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/logger/types.ts
|
|
4
|
+
var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
|
|
5
|
+
LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG";
|
|
6
|
+
LogLevel2[LogLevel2["INFO"] = 1] = "INFO";
|
|
7
|
+
LogLevel2[LogLevel2["WARN"] = 2] = "WARN";
|
|
8
|
+
LogLevel2[LogLevel2["ERROR"] = 3] = "ERROR";
|
|
9
|
+
LogLevel2[LogLevel2["NONE"] = 4] = "NONE";
|
|
10
|
+
return LogLevel2;
|
|
11
|
+
})(LogLevel || {});
|
|
12
|
+
|
|
13
|
+
// src/logger/console-adapter.ts
|
|
14
|
+
var ConsoleLoggerAdapter = class {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.colors = {
|
|
17
|
+
DEBUG: "\x1B[36m",
|
|
18
|
+
// Cyan
|
|
19
|
+
INFO: "\x1B[32m",
|
|
20
|
+
// Green
|
|
21
|
+
WARN: "\x1B[33m",
|
|
22
|
+
// Yellow
|
|
23
|
+
ERROR: "\x1B[31m",
|
|
24
|
+
// Red
|
|
25
|
+
RESET: "\x1B[0m"
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
log(entry) {
|
|
29
|
+
const { level, message, timestamp, data, context, error } = entry;
|
|
30
|
+
let logMessage = "";
|
|
31
|
+
if (timestamp) {
|
|
32
|
+
logMessage += "[" + this.formatTimestamp(timestamp) + "] ";
|
|
33
|
+
}
|
|
34
|
+
const levelName = this.getLevelName(level);
|
|
35
|
+
logMessage += levelName + ": ";
|
|
36
|
+
if (context) {
|
|
37
|
+
logMessage += "[" + context + "] ";
|
|
38
|
+
}
|
|
39
|
+
logMessage += message;
|
|
40
|
+
switch (level) {
|
|
41
|
+
case 0:
|
|
42
|
+
console.debug(this.colorize(logMessage, "DEBUG"), data || "");
|
|
43
|
+
break;
|
|
44
|
+
case 1:
|
|
45
|
+
console.info(this.colorize(logMessage, "INFO"), data || "");
|
|
46
|
+
break;
|
|
47
|
+
case 2:
|
|
48
|
+
console.warn(this.colorize(logMessage, "WARN"), data || "");
|
|
49
|
+
break;
|
|
50
|
+
case 3:
|
|
51
|
+
console.error(this.colorize(logMessage, "ERROR"), data || "");
|
|
52
|
+
if (error) {
|
|
53
|
+
console.error(error);
|
|
54
|
+
}
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
formatTimestamp(date) {
|
|
59
|
+
return date.toISOString();
|
|
60
|
+
}
|
|
61
|
+
getLevelName(level) {
|
|
62
|
+
const names = ["DEBUG", "INFO", "WARN", "ERROR", "NONE"];
|
|
63
|
+
return names[level] || "UNKNOWN";
|
|
64
|
+
}
|
|
65
|
+
colorize(message, level) {
|
|
66
|
+
if (typeof process !== "undefined" && process.stdout?.isTTY) {
|
|
67
|
+
return this.colors[level] + message + this.colors.RESET;
|
|
68
|
+
}
|
|
69
|
+
return message;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
// src/logger/Logger.ts
|
|
74
|
+
var Logger = class _Logger {
|
|
75
|
+
constructor(config, context) {
|
|
76
|
+
const isProduction = typeof process !== "undefined" ? process.env.NODE_ENV === "production" : false;
|
|
77
|
+
this.config = {
|
|
78
|
+
minLevel: config?.minLevel ?? (isProduction ? 1 : 0),
|
|
79
|
+
// INFO in prod, DEBUG in dev
|
|
80
|
+
enableTimestamp: config?.enableTimestamp ?? true,
|
|
81
|
+
enableContext: config?.enableContext ?? true,
|
|
82
|
+
environment: config?.environment ?? (isProduction ? "production" : "development"),
|
|
83
|
+
adapter: config?.adapter ?? new ConsoleLoggerAdapter()
|
|
84
|
+
};
|
|
85
|
+
this.adapter = this.config.adapter;
|
|
86
|
+
this.context = context;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* 创建带上下文的子 Logger
|
|
90
|
+
*/
|
|
91
|
+
createChild(context) {
|
|
92
|
+
return new _Logger(this.config, context);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 调试日志
|
|
96
|
+
*/
|
|
97
|
+
debug(message, data) {
|
|
98
|
+
this.log(0, message, data);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 信息日志
|
|
102
|
+
*/
|
|
103
|
+
info(message, data) {
|
|
104
|
+
this.log(1, message, data);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* 警告日志
|
|
108
|
+
*/
|
|
109
|
+
warn(message, data) {
|
|
110
|
+
this.log(2, message, data);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* 错误日志
|
|
114
|
+
*/
|
|
115
|
+
error(message, error) {
|
|
116
|
+
this.log(
|
|
117
|
+
3,
|
|
118
|
+
// LogLevel.ERROR
|
|
119
|
+
message,
|
|
120
|
+
error instanceof Error ? void 0 : error,
|
|
121
|
+
error instanceof Error ? error : void 0
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* 核心日志方法
|
|
126
|
+
*/
|
|
127
|
+
log(level, message, data, error) {
|
|
128
|
+
if (level < this.config.minLevel) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (typeof window !== "undefined" && typeof localStorage !== "undefined") {
|
|
132
|
+
const loggerDebug = localStorage.getItem("logger-debug");
|
|
133
|
+
if (loggerDebug === "false" && level < 3) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const entry = {
|
|
138
|
+
level,
|
|
139
|
+
message,
|
|
140
|
+
timestamp: this.config.enableTimestamp ? /* @__PURE__ */ new Date() : void 0,
|
|
141
|
+
data,
|
|
142
|
+
context: this.config.enableContext ? this.context : void 0,
|
|
143
|
+
error
|
|
144
|
+
};
|
|
145
|
+
this.adapter.log(entry);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* 设置日志级别
|
|
149
|
+
*/
|
|
150
|
+
setLevel(level) {
|
|
151
|
+
this.config.minLevel = level;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* 获取当前日志级别
|
|
155
|
+
*/
|
|
156
|
+
getLevel() {
|
|
157
|
+
return this.config.minLevel;
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
var logger = new Logger();
|
|
161
|
+
function createLogger(context, config) {
|
|
162
|
+
return new Logger(config, context);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
exports.ConsoleLoggerAdapter = ConsoleLoggerAdapter;
|
|
166
|
+
exports.LogLevel = LogLevel;
|
|
167
|
+
exports.Logger = Logger;
|
|
168
|
+
exports.createLogger = createLogger;
|
|
169
|
+
exports.logger = logger;
|
|
170
|
+
//# sourceMappingURL=chunk-25OFOKNF.js.map
|
|
171
|
+
//# sourceMappingURL=chunk-25OFOKNF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/logger/types.ts","../src/logger/console-adapter.ts","../src/logger/Logger.ts"],"names":["LogLevel"],"mappings":"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","file":"chunk-25OFOKNF.js","sourcesContent":["/**\n * 日志级别\n */\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n NONE = 4, // 禁用所有日志\n}\n\n/**\n * 日志条目\n */\nexport interface LogEntry {\n level: LogLevel;\n message: string;\n timestamp: Date;\n data?: any;\n context?: string;\n error?: Error;\n}\n\n/**\n * 日志适配器接口\n * 不同平台实现不同的日志输出方式\n */\nexport interface LoggerAdapter {\n /**\n * 输出日志\n */\n log(entry: LogEntry): void;\n\n /**\n * 批量输出日志(可选)\n */\n logBatch?(entries: LogEntry[]): void;\n}\n\n/**\n * 日志配置\n */\nexport interface LoggerConfig {\n /**\n * 最小日志级别\n * 只有大于等于此级别的日志才会输出\n */\n minLevel: LogLevel;\n\n /**\n * 是否启用时间戳\n */\n enableTimestamp?: boolean;\n\n /**\n * 是否启用上下文(模块名)\n */\n enableContext?: boolean;\n\n /**\n * 环境(development/production)\n */\n environment?: 'development' | 'production';\n\n /**\n * 自定义适配器\n */\n adapter?: LoggerAdapter;\n}\n\n","import type { LoggerAdapter, LogEntry, LogLevel } from './types';\n\n/**\n * 控制台日志适配器\n * 使用 console.info/warn/error 输出日志\n */\nexport class ConsoleLoggerAdapter implements LoggerAdapter {\n private readonly colors = {\n DEBUG: '\\x1b[36m', // Cyan\n INFO: '\\x1b[32m', // Green\n WARN: '\\x1b[33m', // Yellow\n ERROR: '\\x1b[31m', // Red\n RESET: '\\x1b[0m',\n };\n\n log(entry: LogEntry): void {\n const { level, message, timestamp, data, context, error } = entry;\n\n // 构建日志消息\n let logMessage = '';\n\n // 添加时间戳\n if (timestamp) {\n logMessage += '[' + (this.formatTimestamp(timestamp)) + '] ';\n }\n\n // 添加日志级别\n const levelName = this.getLevelName(level);\n logMessage += (levelName) + ': ';\n\n // 添加上下文\n if (context) {\n logMessage += '[' + (context) + '] ';\n }\n\n // 添加消息\n logMessage += message;\n\n // 根据日志级别选择输出方式\n switch (level) {\n case 0: // DEBUG\n console.debug(this.colorize(logMessage, 'DEBUG'), data || '');\n break;\n case 1: // INFO\n console.info(this.colorize(logMessage, 'INFO'), data || '');\n break;\n case 2: // WARN\n console.warn(this.colorize(logMessage, 'WARN'), data || '');\n break;\n case 3: // ERROR\n console.error(this.colorize(logMessage, 'ERROR'), data || '');\n if (error) {\n console.error(error);\n }\n break;\n }\n }\n\n private formatTimestamp(date: Date): string {\n return date.toISOString();\n }\n\n private getLevelName(level: LogLevel): string {\n const names = ['DEBUG', 'INFO', 'WARN', 'ERROR', 'NONE'];\n return names[level] || 'UNKNOWN';\n }\n\n private colorize(message: string, level: keyof typeof this.colors): string {\n // 只在支持颜色的环境中使用颜色\n if (typeof process !== 'undefined' && process.stdout?.isTTY) {\n return (this.colors[level]) + (message) + (this.colors.RESET);\n }\n return message;\n }\n}\n\n","import type { LogLevel, LogEntry, LoggerConfig, LoggerAdapter } from './types';\nimport { ConsoleLoggerAdapter } from './console-adapter';\n\n/**\n * 统一日志管理类\n */\nexport class Logger {\n private config: Required<LoggerConfig>;\n private adapter: LoggerAdapter;\n private context?: string;\n\n constructor(config?: Partial<LoggerConfig>, context?: string) {\n const isProduction =\n typeof process !== 'undefined' ? process.env.NODE_ENV === 'production' : false;\n\n this.config = {\n minLevel: config?.minLevel ?? (isProduction ? 1 : 0), // INFO in prod, DEBUG in dev\n enableTimestamp: config?.enableTimestamp ?? true,\n enableContext: config?.enableContext ?? true,\n environment: config?.environment ?? (isProduction ? 'production' : 'development'),\n adapter: config?.adapter ?? new ConsoleLoggerAdapter(),\n };\n this.adapter = this.config.adapter;\n this.context = context;\n }\n\n /**\n * 创建带上下文的子 Logger\n */\n createChild(context: string): Logger {\n return new Logger(this.config, context);\n }\n\n /**\n * 调试日志\n */\n debug(message: string, data?: any): void {\n this.log(0, message, data); // LogLevel.DEBUG\n }\n\n /**\n * 信息日志\n */\n info(message: string, data?: any): void {\n this.log(1, message, data); // LogLevel.INFO\n }\n\n /**\n * 警告日志\n */\n warn(message: string, data?: any): void {\n this.log(2, message, data); // LogLevel.WARN\n }\n\n /**\n * 错误日志\n */\n error(message: string, error?: Error | any): void {\n this.log(\n 3, // LogLevel.ERROR\n message,\n error instanceof Error ? undefined : error,\n error instanceof Error ? error : undefined\n );\n }\n\n /**\n * 核心日志方法\n */\n private log(level: LogLevel, message: string, data?: any, error?: Error): void {\n // 检查日志级别\n if (level < this.config.minLevel) {\n return;\n }\n\n // 检查动态调试配置(仅在浏览器环境)\n if (typeof window !== 'undefined' && typeof localStorage !== 'undefined') {\n const loggerDebug = localStorage.getItem('logger-debug');\n // 如果明确设置为 false,则不输出(但 Error 级别始终输出)\n if (loggerDebug === 'false' && level < 3) {\n // level < ERROR\n return;\n }\n }\n\n const entry: LogEntry = {\n level,\n message,\n timestamp: this.config.enableTimestamp ? new Date() : (undefined as any),\n data,\n context: this.config.enableContext ? this.context : undefined,\n error,\n };\n\n this.adapter.log(entry);\n }\n\n /**\n * 设置日志级别\n */\n setLevel(level: LogLevel): void {\n this.config.minLevel = level;\n }\n\n /**\n * 获取当前日志级别\n */\n getLevel(): LogLevel {\n return this.config.minLevel;\n }\n}\n\n/**\n * 默认全局 Logger 实例\n */\nexport const logger = new Logger();\n\n/**\n * 创建带上下文的 Logger\n */\nexport function createLogger(context: string, config?: Partial<LoggerConfig>): Logger {\n return new Logger(config, context);\n}\n\n"]}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
// src/logger/types.ts
|
|
2
|
+
var LogLevel = /* @__PURE__ */ ((LogLevel2) => {
|
|
3
|
+
LogLevel2[LogLevel2["DEBUG"] = 0] = "DEBUG";
|
|
4
|
+
LogLevel2[LogLevel2["INFO"] = 1] = "INFO";
|
|
5
|
+
LogLevel2[LogLevel2["WARN"] = 2] = "WARN";
|
|
6
|
+
LogLevel2[LogLevel2["ERROR"] = 3] = "ERROR";
|
|
7
|
+
LogLevel2[LogLevel2["NONE"] = 4] = "NONE";
|
|
8
|
+
return LogLevel2;
|
|
9
|
+
})(LogLevel || {});
|
|
10
|
+
|
|
11
|
+
// src/logger/console-adapter.ts
|
|
12
|
+
var ConsoleLoggerAdapter = class {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.colors = {
|
|
15
|
+
DEBUG: "\x1B[36m",
|
|
16
|
+
// Cyan
|
|
17
|
+
INFO: "\x1B[32m",
|
|
18
|
+
// Green
|
|
19
|
+
WARN: "\x1B[33m",
|
|
20
|
+
// Yellow
|
|
21
|
+
ERROR: "\x1B[31m",
|
|
22
|
+
// Red
|
|
23
|
+
RESET: "\x1B[0m"
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
log(entry) {
|
|
27
|
+
const { level, message, timestamp, data, context, error } = entry;
|
|
28
|
+
let logMessage = "";
|
|
29
|
+
if (timestamp) {
|
|
30
|
+
logMessage += "[" + this.formatTimestamp(timestamp) + "] ";
|
|
31
|
+
}
|
|
32
|
+
const levelName = this.getLevelName(level);
|
|
33
|
+
logMessage += levelName + ": ";
|
|
34
|
+
if (context) {
|
|
35
|
+
logMessage += "[" + context + "] ";
|
|
36
|
+
}
|
|
37
|
+
logMessage += message;
|
|
38
|
+
switch (level) {
|
|
39
|
+
case 0:
|
|
40
|
+
console.debug(this.colorize(logMessage, "DEBUG"), data || "");
|
|
41
|
+
break;
|
|
42
|
+
case 1:
|
|
43
|
+
console.info(this.colorize(logMessage, "INFO"), data || "");
|
|
44
|
+
break;
|
|
45
|
+
case 2:
|
|
46
|
+
console.warn(this.colorize(logMessage, "WARN"), data || "");
|
|
47
|
+
break;
|
|
48
|
+
case 3:
|
|
49
|
+
console.error(this.colorize(logMessage, "ERROR"), data || "");
|
|
50
|
+
if (error) {
|
|
51
|
+
console.error(error);
|
|
52
|
+
}
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
formatTimestamp(date) {
|
|
57
|
+
return date.toISOString();
|
|
58
|
+
}
|
|
59
|
+
getLevelName(level) {
|
|
60
|
+
const names = ["DEBUG", "INFO", "WARN", "ERROR", "NONE"];
|
|
61
|
+
return names[level] || "UNKNOWN";
|
|
62
|
+
}
|
|
63
|
+
colorize(message, level) {
|
|
64
|
+
if (typeof process !== "undefined" && process.stdout?.isTTY) {
|
|
65
|
+
return this.colors[level] + message + this.colors.RESET;
|
|
66
|
+
}
|
|
67
|
+
return message;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// src/logger/Logger.ts
|
|
72
|
+
var Logger = class _Logger {
|
|
73
|
+
constructor(config, context) {
|
|
74
|
+
const isProduction = typeof process !== "undefined" ? process.env.NODE_ENV === "production" : false;
|
|
75
|
+
this.config = {
|
|
76
|
+
minLevel: config?.minLevel ?? (isProduction ? 1 : 0),
|
|
77
|
+
// INFO in prod, DEBUG in dev
|
|
78
|
+
enableTimestamp: config?.enableTimestamp ?? true,
|
|
79
|
+
enableContext: config?.enableContext ?? true,
|
|
80
|
+
environment: config?.environment ?? (isProduction ? "production" : "development"),
|
|
81
|
+
adapter: config?.adapter ?? new ConsoleLoggerAdapter()
|
|
82
|
+
};
|
|
83
|
+
this.adapter = this.config.adapter;
|
|
84
|
+
this.context = context;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 创建带上下文的子 Logger
|
|
88
|
+
*/
|
|
89
|
+
createChild(context) {
|
|
90
|
+
return new _Logger(this.config, context);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 调试日志
|
|
94
|
+
*/
|
|
95
|
+
debug(message, data) {
|
|
96
|
+
this.log(0, message, data);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 信息日志
|
|
100
|
+
*/
|
|
101
|
+
info(message, data) {
|
|
102
|
+
this.log(1, message, data);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 警告日志
|
|
106
|
+
*/
|
|
107
|
+
warn(message, data) {
|
|
108
|
+
this.log(2, message, data);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* 错误日志
|
|
112
|
+
*/
|
|
113
|
+
error(message, error) {
|
|
114
|
+
this.log(
|
|
115
|
+
3,
|
|
116
|
+
// LogLevel.ERROR
|
|
117
|
+
message,
|
|
118
|
+
error instanceof Error ? void 0 : error,
|
|
119
|
+
error instanceof Error ? error : void 0
|
|
120
|
+
);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* 核心日志方法
|
|
124
|
+
*/
|
|
125
|
+
log(level, message, data, error) {
|
|
126
|
+
if (level < this.config.minLevel) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (typeof window !== "undefined" && typeof localStorage !== "undefined") {
|
|
130
|
+
const loggerDebug = localStorage.getItem("logger-debug");
|
|
131
|
+
if (loggerDebug === "false" && level < 3) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
const entry = {
|
|
136
|
+
level,
|
|
137
|
+
message,
|
|
138
|
+
timestamp: this.config.enableTimestamp ? /* @__PURE__ */ new Date() : void 0,
|
|
139
|
+
data,
|
|
140
|
+
context: this.config.enableContext ? this.context : void 0,
|
|
141
|
+
error
|
|
142
|
+
};
|
|
143
|
+
this.adapter.log(entry);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* 设置日志级别
|
|
147
|
+
*/
|
|
148
|
+
setLevel(level) {
|
|
149
|
+
this.config.minLevel = level;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* 获取当前日志级别
|
|
153
|
+
*/
|
|
154
|
+
getLevel() {
|
|
155
|
+
return this.config.minLevel;
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
var logger = new Logger();
|
|
159
|
+
function createLogger(context, config) {
|
|
160
|
+
return new Logger(config, context);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export { ConsoleLoggerAdapter, LogLevel, Logger, createLogger, logger };
|
|
164
|
+
//# sourceMappingURL=chunk-3DXPQ4YV.mjs.map
|
|
165
|
+
//# sourceMappingURL=chunk-3DXPQ4YV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/logger/types.ts","../src/logger/console-adapter.ts","../src/logger/Logger.ts"],"names":["LogLevel"],"mappings":"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","file":"chunk-3DXPQ4YV.mjs","sourcesContent":["/**\n * 日志级别\n */\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n NONE = 4, // 禁用所有日志\n}\n\n/**\n * 日志条目\n */\nexport interface LogEntry {\n level: LogLevel;\n message: string;\n timestamp: Date;\n data?: any;\n context?: string;\n error?: Error;\n}\n\n/**\n * 日志适配器接口\n * 不同平台实现不同的日志输出方式\n */\nexport interface LoggerAdapter {\n /**\n * 输出日志\n */\n log(entry: LogEntry): void;\n\n /**\n * 批量输出日志(可选)\n */\n logBatch?(entries: LogEntry[]): void;\n}\n\n/**\n * 日志配置\n */\nexport interface LoggerConfig {\n /**\n * 最小日志级别\n * 只有大于等于此级别的日志才会输出\n */\n minLevel: LogLevel;\n\n /**\n * 是否启用时间戳\n */\n enableTimestamp?: boolean;\n\n /**\n * 是否启用上下文(模块名)\n */\n enableContext?: boolean;\n\n /**\n * 环境(development/production)\n */\n environment?: 'development' | 'production';\n\n /**\n * 自定义适配器\n */\n adapter?: LoggerAdapter;\n}\n\n","import type { LoggerAdapter, LogEntry, LogLevel } from './types';\n\n/**\n * 控制台日志适配器\n * 使用 console.info/warn/error 输出日志\n */\nexport class ConsoleLoggerAdapter implements LoggerAdapter {\n private readonly colors = {\n DEBUG: '\\x1b[36m', // Cyan\n INFO: '\\x1b[32m', // Green\n WARN: '\\x1b[33m', // Yellow\n ERROR: '\\x1b[31m', // Red\n RESET: '\\x1b[0m',\n };\n\n log(entry: LogEntry): void {\n const { level, message, timestamp, data, context, error } = entry;\n\n // 构建日志消息\n let logMessage = '';\n\n // 添加时间戳\n if (timestamp) {\n logMessage += '[' + (this.formatTimestamp(timestamp)) + '] ';\n }\n\n // 添加日志级别\n const levelName = this.getLevelName(level);\n logMessage += (levelName) + ': ';\n\n // 添加上下文\n if (context) {\n logMessage += '[' + (context) + '] ';\n }\n\n // 添加消息\n logMessage += message;\n\n // 根据日志级别选择输出方式\n switch (level) {\n case 0: // DEBUG\n console.debug(this.colorize(logMessage, 'DEBUG'), data || '');\n break;\n case 1: // INFO\n console.info(this.colorize(logMessage, 'INFO'), data || '');\n break;\n case 2: // WARN\n console.warn(this.colorize(logMessage, 'WARN'), data || '');\n break;\n case 3: // ERROR\n console.error(this.colorize(logMessage, 'ERROR'), data || '');\n if (error) {\n console.error(error);\n }\n break;\n }\n }\n\n private formatTimestamp(date: Date): string {\n return date.toISOString();\n }\n\n private getLevelName(level: LogLevel): string {\n const names = ['DEBUG', 'INFO', 'WARN', 'ERROR', 'NONE'];\n return names[level] || 'UNKNOWN';\n }\n\n private colorize(message: string, level: keyof typeof this.colors): string {\n // 只在支持颜色的环境中使用颜色\n if (typeof process !== 'undefined' && process.stdout?.isTTY) {\n return (this.colors[level]) + (message) + (this.colors.RESET);\n }\n return message;\n }\n}\n\n","import type { LogLevel, LogEntry, LoggerConfig, LoggerAdapter } from './types';\nimport { ConsoleLoggerAdapter } from './console-adapter';\n\n/**\n * 统一日志管理类\n */\nexport class Logger {\n private config: Required<LoggerConfig>;\n private adapter: LoggerAdapter;\n private context?: string;\n\n constructor(config?: Partial<LoggerConfig>, context?: string) {\n const isProduction =\n typeof process !== 'undefined' ? process.env.NODE_ENV === 'production' : false;\n\n this.config = {\n minLevel: config?.minLevel ?? (isProduction ? 1 : 0), // INFO in prod, DEBUG in dev\n enableTimestamp: config?.enableTimestamp ?? true,\n enableContext: config?.enableContext ?? true,\n environment: config?.environment ?? (isProduction ? 'production' : 'development'),\n adapter: config?.adapter ?? new ConsoleLoggerAdapter(),\n };\n this.adapter = this.config.adapter;\n this.context = context;\n }\n\n /**\n * 创建带上下文的子 Logger\n */\n createChild(context: string): Logger {\n return new Logger(this.config, context);\n }\n\n /**\n * 调试日志\n */\n debug(message: string, data?: any): void {\n this.log(0, message, data); // LogLevel.DEBUG\n }\n\n /**\n * 信息日志\n */\n info(message: string, data?: any): void {\n this.log(1, message, data); // LogLevel.INFO\n }\n\n /**\n * 警告日志\n */\n warn(message: string, data?: any): void {\n this.log(2, message, data); // LogLevel.WARN\n }\n\n /**\n * 错误日志\n */\n error(message: string, error?: Error | any): void {\n this.log(\n 3, // LogLevel.ERROR\n message,\n error instanceof Error ? undefined : error,\n error instanceof Error ? error : undefined\n );\n }\n\n /**\n * 核心日志方法\n */\n private log(level: LogLevel, message: string, data?: any, error?: Error): void {\n // 检查日志级别\n if (level < this.config.minLevel) {\n return;\n }\n\n // 检查动态调试配置(仅在浏览器环境)\n if (typeof window !== 'undefined' && typeof localStorage !== 'undefined') {\n const loggerDebug = localStorage.getItem('logger-debug');\n // 如果明确设置为 false,则不输出(但 Error 级别始终输出)\n if (loggerDebug === 'false' && level < 3) {\n // level < ERROR\n return;\n }\n }\n\n const entry: LogEntry = {\n level,\n message,\n timestamp: this.config.enableTimestamp ? new Date() : (undefined as any),\n data,\n context: this.config.enableContext ? this.context : undefined,\n error,\n };\n\n this.adapter.log(entry);\n }\n\n /**\n * 设置日志级别\n */\n setLevel(level: LogLevel): void {\n this.config.minLevel = level;\n }\n\n /**\n * 获取当前日志级别\n */\n getLevel(): LogLevel {\n return this.config.minLevel;\n }\n}\n\n/**\n * 默认全局 Logger 实例\n */\nexport const logger = new Logger();\n\n/**\n * 创建带上下文的 Logger\n */\nexport function createLogger(context: string, config?: Partial<LoggerConfig>): Logger {\n return new Logger(config, context);\n}\n\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { logger } from './chunk-3DXPQ4YV.mjs';
|
|
2
2
|
import { clsx } from 'clsx';
|
|
3
3
|
import { twMerge } from 'tailwind-merge';
|
|
4
4
|
|
|
@@ -262,7 +262,6 @@ var stringUtils = {
|
|
|
262
262
|
};
|
|
263
263
|
|
|
264
264
|
// src/utils/debug.ts
|
|
265
|
-
init_logger();
|
|
266
265
|
var debugUtils = {
|
|
267
266
|
/**
|
|
268
267
|
* 安全的 JSON 序列化
|
|
@@ -358,5 +357,5 @@ function cn(...inputs) {
|
|
|
358
357
|
}
|
|
359
358
|
|
|
360
359
|
export { arrayUtils, cn, debugUtils, errorUtils, fileUtils, formatTime, japaneseUtils, stringUtils, validators };
|
|
361
|
-
//# sourceMappingURL=chunk-
|
|
362
|
-
//# sourceMappingURL=chunk-
|
|
360
|
+
//# sourceMappingURL=chunk-3NHAT7D4.mjs.map
|
|
361
|
+
//# sourceMappingURL=chunk-3NHAT7D4.mjs.map
|