@anov/3d 0.0.322 → 0.0.323

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 (78) hide show
  1. package/dist/anov3d.js +8 -64
  2. package/dist/anov3d.js.map +1 -1
  3. package/dist/applicationApi.js +16 -50
  4. package/dist/applicationApi.js.map +1 -1
  5. package/dist/applicationApiType.js.map +1 -1
  6. package/dist/hooksManager.js +35 -43
  7. package/dist/hooksManager.js.map +1 -1
  8. package/dist/index.js +2 -3
  9. package/dist/index.js.map +1 -1
  10. package/dist/module/animation/motion/index.js +4 -2
  11. package/dist/module/animation/motion/index.js.map +1 -1
  12. package/dist/module/camera/index.js.map +1 -1
  13. package/dist/module/entity/area/index.js +3 -3
  14. package/dist/module/entity/area/index.js.map +1 -1
  15. package/dist/module/entity/baseEntity.js +4 -13
  16. package/dist/module/entity/baseEntity.js.map +1 -1
  17. package/dist/module/entity/batch/index.js +10 -12
  18. package/dist/module/entity/batch/index.js.map +1 -1
  19. package/dist/module/entity/flyline/index.js +3 -3
  20. package/dist/module/entity/flyline/index.js.map +1 -1
  21. package/dist/module/entity/group/index.js +4 -18
  22. package/dist/module/entity/group/index.js.map +1 -1
  23. package/dist/module/entity/heatmap/index.js +4 -16
  24. package/dist/module/entity/heatmap/index.js.map +1 -1
  25. package/dist/module/entity/index.js +12 -13
  26. package/dist/module/entity/index.js.map +1 -1
  27. package/dist/module/entity/infoPanel/index.js +2 -2
  28. package/dist/module/entity/infoPanel/index.js.map +1 -1
  29. package/dist/module/entity/light/pointLight/index.js +2 -2
  30. package/dist/module/entity/light/pointLight/index.js.map +1 -1
  31. package/dist/module/entity/mark/index.js +14 -11
  32. package/dist/module/entity/mark/index.js.map +1 -1
  33. package/dist/module/entity/model/index.js +12 -29
  34. package/dist/module/entity/model/index.js.map +1 -1
  35. package/dist/module/entity/model/load/loadFbx.js +1 -1
  36. package/dist/module/entity/model/load/loadFbx.js.map +1 -1
  37. package/dist/module/entity/model/load/loadGlb.js +11 -6
  38. package/dist/module/entity/model/load/loadGlb.js.map +1 -1
  39. package/dist/module/entity/poi/index.js +3 -3
  40. package/dist/module/entity/poi/index.js.map +1 -1
  41. package/dist/module/entity/shape/index.js +14 -16
  42. package/dist/module/entity/shape/index.js.map +1 -1
  43. package/dist/module/entity/spline/index.js +4 -4
  44. package/dist/module/entity/spline/index.js.map +1 -1
  45. package/dist/module/entity/strategy.js.map +1 -1
  46. package/dist/module/entity/traffic/realismTraffic/index.js +5 -17
  47. package/dist/module/entity/traffic/realismTraffic/index.js.map +1 -1
  48. package/dist/module/entity/traffic/streamerTraffic/index.js +4 -16
  49. package/dist/module/entity/traffic/streamerTraffic/index.js.map +1 -1
  50. package/dist/module/entity/videoPanel/index.js +3 -3
  51. package/dist/module/entity/videoPanel/index.js.map +1 -1
  52. package/dist/module/environment/index.js +4 -3
  53. package/dist/module/environment/index.js.map +1 -1
  54. package/dist/module/environment/season/index.js +1 -1
  55. package/dist/module/environment/season/index.js.map +1 -1
  56. package/dist/module/eventBus/index.js +4 -3
  57. package/dist/module/eventBus/index.js.map +1 -1
  58. package/dist/module/material/index.js +6 -5
  59. package/dist/module/material/index.js.map +1 -1
  60. package/dist/module/scene/fileParse.js +16 -21
  61. package/dist/module/scene/fileParse.js.map +1 -1
  62. package/dist/module/scene/index.js +10 -9
  63. package/dist/module/scene/index.js.map +1 -1
  64. package/dist/sdkEntry.js +32 -25
  65. package/dist/sdkEntry.js.map +1 -1
  66. package/dist/utils/messageFn.js +11 -21
  67. package/dist/utils/messageFn.js.map +1 -1
  68. package/package.json +4 -5
  69. package/dist/__mocks__/ability-mock.js +0 -124
  70. package/dist/__mocks__/ability-mock.js.map +0 -1
  71. package/dist/__mocks__/geo-3d-mock.js +0 -10
  72. package/dist/__mocks__/geo-3d-mock.js.map +0 -1
  73. package/dist/module/message/hub.js +0 -178
  74. package/dist/module/message/hub.js.map +0 -1
  75. package/dist/utils/debugTools.js +0 -364
  76. package/dist/utils/debugTools.js.map +0 -1
  77. package/dist/utils/messageTracer.js +0 -369
  78. package/dist/utils/messageTracer.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"names":["messageTracer","DebugTools","_classCallCheck","_createClass","key","value","printTraces","traces","getAllTraces","console","table","map","t","ID","id","Name","name","Status","status","Duration","duration","concat","Timestamp","Date","timestamp","toLocaleTimeString","printFailures","_this","failed","getFailedTraces","length","log","group","forEach","trace","error","params","chain","getMessageChain","i","prefix","repeat","stack","groupEnd","printPending","pending","getPendingTraces","warn","Age","now","report","generateReport","_export","data","export","blob","Blob","type","url","URL","createObjectURL","a","document","createElement","href","download","click","revokeObjectURL","clear","currentId","getTrace","unshift","parentId","find","nameOrId","results","filter","includes","inspect","toLocaleString","result","stats","completed","undefined","durations","total","avgDuration","reduce","b","minDuration","Math","min","apply","_toConsumableArray","maxDuration","max","byName","Map","has","set","get","push","perfData","Array","from","entries","_ref","_ref2","_slicedToArray","Count","Avg","toFixed","Min","Max","enableTracing","enabled","arguments","configure","setLogLevel","level","levels","DEBUG","INFO","WARN","ERROR","NONE","logLevel","slowMessages","threshold","slow","help","window","process","env","NODE_ENV"],"sources":["../../src/utils/debugTools.ts"],"sourcesContent":["/**\n * 开发者调试工具\n * 提供便捷的调试方法,可在浏览器控制台直接使用\n */\n\nimport { messageTracer } from './messageTracer'\nimport { logger } from './logger'\n\nexport class DebugTools {\n /**\n * 打印所有消息追踪记录\n */\n static printTraces() {\n const traces = messageTracer.getAllTraces()\n console.table(traces.map(t => ({\n ID: t.id,\n Name: t.name,\n Status: t.status,\n Duration: t.duration ? `${t.duration}ms` : '-',\n Timestamp: new Date(t.timestamp).toLocaleTimeString(),\n })))\n }\n\n /**\n * 打印失败的消息\n */\n static printFailures() {\n const failed = messageTracer.getFailedTraces()\n \n if (failed.length === 0) {\n console.log('✅ No failed messages')\n return\n }\n\n console.group('❌ Failed Messages')\n failed.forEach((trace) => {\n console.group(`${trace.name} (${trace.id})`)\n console.log('Error:', trace.error)\n console.log('Params:', trace.params)\n console.log('Duration:', `${trace.duration}ms`)\n \n // 打印消息链\n const chain = this.getMessageChain(trace.id)\n if (chain.length > 1) {\n console.log('Message Chain:')\n chain.forEach((t, i) => {\n const prefix = ' '.repeat(i) + '└─'\n console.log(`${prefix} ${t.name} (${t.status})`)\n })\n }\n \n // 打印调用栈\n if (trace.stack) {\n console.log('Call Stack:')\n console.log(trace.stack)\n }\n \n console.groupEnd()\n })\n console.groupEnd()\n }\n\n /**\n * 打印待处理的消息\n */\n static printPending() {\n const pending = messageTracer.getPendingTraces()\n \n if (pending.length === 0) {\n console.log('✅ No pending messages')\n return\n }\n\n console.warn(`⏳ ${pending.length} pending messages:`)\n console.table(pending.map(t => ({\n ID: t.id,\n Name: t.name,\n Age: `${Date.now() - t.timestamp}ms`,\n Timestamp: new Date(t.timestamp).toLocaleTimeString(),\n })))\n }\n\n /**\n * 生成调试报告\n */\n static report() {\n console.log(messageTracer.generateReport())\n }\n\n /**\n * 导出追踪数据\n */\n static export() {\n const data = messageTracer.export()\n const blob = new Blob([data], { type: 'application/json' })\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = `message-traces-${Date.now()}.json`\n a.click()\n URL.revokeObjectURL(url)\n console.log('✅ Traces exported')\n }\n\n /**\n * 清空追踪记录\n */\n static clear() {\n messageTracer.clear()\n console.log('✅ Traces cleared')\n }\n\n /**\n * 获取消息链\n */\n private static getMessageChain(id: string) {\n const chain: any[] = []\n let currentId: string | undefined = id\n\n while (currentId) {\n const trace = messageTracer.getTrace(currentId)\n if (!trace) break\n chain.unshift(trace)\n currentId = trace.parentId\n }\n\n return chain\n }\n\n /**\n * 查找特定消息\n */\n static find(nameOrId: string) {\n const traces = messageTracer.getAllTraces()\n const results = traces.filter(t => \n t.name.includes(nameOrId) || t.id.includes(nameOrId)\n )\n\n if (results.length === 0) {\n console.log('No matching messages found')\n return\n }\n\n console.table(results.map(t => ({\n ID: t.id,\n Name: t.name,\n Status: t.status,\n Duration: t.duration ? `${t.duration}ms` : '-',\n })))\n\n return results\n }\n\n /**\n * 查看消息详情\n */\n static inspect(id: string) {\n const trace = messageTracer.getTrace(id)\n \n if (!trace) {\n console.error(`Message ${id} not found`)\n return\n }\n\n console.group(`📋 Message Details: ${trace.name}`)\n console.log('ID:', trace.id)\n console.log('Status:', trace.status)\n console.log('Duration:', trace.duration ? `${trace.duration}ms` : 'pending')\n console.log('Timestamp:', new Date(trace.timestamp).toLocaleString())\n console.log('Params:', trace.params)\n \n if (trace.result) {\n console.log('Result:', trace.result)\n }\n \n if (trace.error) {\n console.log('Error:', trace.error)\n }\n\n // 消息链\n const chain = this.getMessageChain(id)\n if (chain.length > 1) {\n console.log('Message Chain:')\n chain.forEach((t, i) => {\n const prefix = ' '.repeat(i) + '└─'\n console.log(`${prefix} ${t.name} (${t.status})`)\n })\n }\n\n // 调用栈\n if (trace.stack) {\n console.log('Call Stack:')\n console.log(trace.stack)\n }\n\n console.groupEnd()\n }\n\n /**\n * 性能统计\n */\n static stats() {\n const traces = messageTracer.getAllTraces()\n \n if (traces.length === 0) {\n console.log('No traces available')\n return\n }\n\n const completed = traces.filter(t => t.duration !== undefined)\n const durations = completed.map(t => t.duration!)\n \n const stats = {\n total: traces.length,\n completed: completed.length,\n pending: traces.filter(t => t.status === 'pending').length,\n failed: traces.filter(t => t.status === 'error').length,\n avgDuration: durations.reduce((a, b) => a + b, 0) / durations.length,\n minDuration: Math.min(...durations),\n maxDuration: Math.max(...durations),\n }\n\n console.table(stats)\n\n // 按消息名称分组统计\n const byName = new Map<string, number[]>()\n completed.forEach((t) => {\n if (!byName.has(t.name)) {\n byName.set(t.name, [])\n }\n byName.get(t.name)!.push(t.duration!)\n })\n\n console.log('\\n📊 Performance by Message Type:')\n const perfData = Array.from(byName.entries()).map(([name, durations]) => ({\n Name: name,\n Count: durations.length,\n Avg: `${(durations.reduce((a, b) => a + b, 0) / durations.length).toFixed(2)}ms`,\n Min: `${Math.min(...durations)}ms`,\n Max: `${Math.max(...durations)}ms`,\n }))\n console.table(perfData)\n }\n\n /**\n * 启用/禁用追踪\n */\n static enableTracing(enabled: boolean = true) {\n messageTracer.configure({ enabled })\n console.log(`✅ Message tracing ${enabled ? 'enabled' : 'disabled'}`)\n }\n\n /**\n * 设置日志级别\n */\n static setLogLevel(level: 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'NONE') {\n const levels = {\n DEBUG: 0,\n INFO: 1,\n WARN: 2,\n ERROR: 3,\n NONE: 4,\n }\n messageTracer.configure({ logLevel: levels[level] })\n console.log(`✅ Log level set to ${level}`)\n }\n\n /**\n * 监控慢消息\n */\n static slowMessages(threshold: number = 1000) {\n const traces = messageTracer.getAllTraces()\n const slow = traces.filter(t => t.duration && t.duration > threshold)\n\n if (slow.length === 0) {\n console.log(`✅ No messages slower than ${threshold}ms`)\n return\n }\n\n console.warn(`🐌 ${slow.length} slow messages (>${threshold}ms):`)\n console.table(slow.map(t => ({\n Name: t.name,\n Duration: `${t.duration}ms`,\n ID: t.id,\n })))\n }\n\n /**\n * 显示帮助信息\n */\n static help() {\n console.log(`\n🛠️ Anov3D Debug Tools\n\nAvailable Commands:\n DebugTools.printTraces() - 打印所有消息追踪记录\n DebugTools.printFailures() - 打印失败的消息\n DebugTools.printPending() - 打印待处理的消息\n DebugTools.report() - 生成调试报告\n DebugTools.export() - 导出追踪数据\n DebugTools.clear() - 清空追踪记录\n DebugTools.find(nameOrId) - 查找特定消息\n DebugTools.inspect(id) - 查看消息详情\n DebugTools.stats() - 性能统计\n DebugTools.slowMessages(ms) - 查找慢消息\n DebugTools.enableTracing(bool) - 启用/禁用追踪\n DebugTools.setLogLevel(level) - 设置日志级别\n DebugTools.help() - 显示此帮助信息\n\nExamples:\n DebugTools.find('entity.create')\n DebugTools.inspect('message-id-123')\n DebugTools.slowMessages(500)\n DebugTools.setLogLevel('DEBUG')\n `)\n }\n}\n\n// 在开发环境自动暴露到全局\nif (typeof window !== 'undefined' && process.env.NODE_ENV !== 'production') {\n // @ts-ignore\n window.DebugTools = DebugTools\n console.log('🛠️ Debug tools available. Type DebugTools.help() for usage.')\n}\n"],"mappings":"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"}
@@ -1,369 +0,0 @@
1
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
6
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
7
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
9
- function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10
- /**
11
- * 消息追踪系统
12
- * 用于调试消息驱动架构中的消息流转和错误定位
13
- */
14
-
15
- export var LogLevel = /*#__PURE__*/function (LogLevel) {
16
- LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
17
- LogLevel[LogLevel["INFO"] = 1] = "INFO";
18
- LogLevel[LogLevel["WARN"] = 2] = "WARN";
19
- LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
20
- LogLevel[LogLevel["NONE"] = 4] = "NONE";
21
- return LogLevel;
22
- }({});
23
- var MessageTracer = /*#__PURE__*/function () {
24
- function MessageTracer() {
25
- _classCallCheck(this, MessageTracer);
26
- _defineProperty(this, "traces", new Map());
27
- _defineProperty(this, "config", {
28
- enabled: true,
29
- logLevel: LogLevel.INFO,
30
- maxTraces: 1000,
31
- captureStack: true,
32
- logToConsole: true,
33
- persistToStorage: false
34
- });
35
- _defineProperty(this, "currentMessageId", null);
36
- _defineProperty(this, "messageChain", []);
37
- }
38
- _createClass(MessageTracer, [{
39
- key: "configure",
40
- value: function configure(config) {
41
- this.config = _objectSpread(_objectSpread({}, this.config), config);
42
- }
43
-
44
- /**
45
- * 开始追踪一个消息
46
- */
47
- }, {
48
- key: "startTrace",
49
- value: function startTrace(id, name, params) {
50
- console.log("🚀 ~ MessageTracer ~ startTrace ~ id:", id);
51
- if (!this.config.enabled) return;
52
- var trace = {
53
- id: id,
54
- name: name,
55
- params: this.sanitizeParams(params),
56
- timestamp: Date.now(),
57
- stack: this.config.captureStack ? this.captureStack() : '',
58
- parentId: this.currentMessageId || undefined,
59
- status: 'pending'
60
- };
61
- this.traces.set(id, trace);
62
-
63
- // 维护消息链
64
- if (this.currentMessageId) {
65
- this.messageChain.push(this.currentMessageId);
66
- }
67
- this.currentMessageId = id;
68
-
69
- // 限制追踪数量
70
- if (this.traces.size > this.config.maxTraces) {
71
- var firstKey = this.traces.keys().next().value;
72
- this.traces.delete(firstKey);
73
- }
74
- this.log(LogLevel.DEBUG, "\uD83D\uDCE8 Message started: ".concat(name), {
75
- id: id,
76
- params: trace.params,
77
- chain: this.getMessageChain(id)
78
- });
79
- }
80
-
81
- /**
82
- * 标记消息成功完成
83
- */
84
- }, {
85
- key: "endTrace",
86
- value: function endTrace(id, result) {
87
- if (!this.config.enabled) return;
88
- var trace = this.traces.get(id);
89
- if (!trace) return;
90
- trace.status = 'success';
91
- trace.duration = Date.now() - trace.timestamp;
92
- trace.result = this.sanitizeParams(result);
93
- this.log(LogLevel.INFO, "\u2705 Message completed: ".concat(trace.name), {
94
- id: id,
95
- duration: "".concat(trace.duration, "ms"),
96
- result: trace.result
97
- });
98
-
99
- // 恢复消息链
100
- if (this.currentMessageId === id) {
101
- this.currentMessageId = this.messageChain.pop() || null;
102
- }
103
-
104
- // 持久化
105
- if (this.config.persistToStorage) {
106
- this.persistTrace(trace);
107
- }
108
- }
109
-
110
- /**
111
- * 标记消息执行失败
112
- */
113
- }, {
114
- key: "errorTrace",
115
- value: function errorTrace(id, error) {
116
- if (!this.config.enabled) return;
117
- var trace = this.traces.get(id);
118
- if (!trace) return;
119
- trace.status = 'error';
120
- trace.duration = Date.now() - trace.timestamp;
121
- trace.error = {
122
- message: (error === null || error === void 0 ? void 0 : error.message) || String(error),
123
- stack: error === null || error === void 0 ? void 0 : error.stack,
124
- name: error === null || error === void 0 ? void 0 : error.name
125
- };
126
-
127
- // 构建完整的错误上下文
128
- var errorContext = this.buildErrorContext(trace);
129
- this.log(LogLevel.ERROR, "\u274C Message failed: ".concat(trace.name), errorContext);
130
-
131
- // 恢复消息链
132
- if (this.currentMessageId === id) {
133
- this.currentMessageId = this.messageChain.pop() || null;
134
- }
135
-
136
- // 持久化错误
137
- if (this.config.persistToStorage) {
138
- this.persistTrace(trace);
139
- }
140
- }
141
-
142
- /**
143
- * 构建错误上下文,包含完整的消息链信息
144
- */
145
- }, {
146
- key: "buildErrorContext",
147
- value: function buildErrorContext(trace) {
148
- var chain = this.getMessageChain(trace.id);
149
- var context = {
150
- id: trace.id,
151
- name: trace.name,
152
- params: trace.params,
153
- duration: "".concat(trace.duration, "ms"),
154
- error: trace.error,
155
- messageChain: chain.map(function (t) {
156
- return {
157
- name: t.name,
158
- id: t.id,
159
- duration: t.duration ? "".concat(t.duration, "ms") : 'pending'
160
- };
161
- }),
162
- callStack: trace.stack
163
- };
164
- return context;
165
- }
166
-
167
- /**
168
- * 获取消息调用链
169
- * 添加了循环引用检测和深度限制,防止无限递归
170
- */
171
- }, {
172
- key: "getMessageChain",
173
- value: function getMessageChain(id) {
174
- var chain = [];
175
- var visited = new Set();
176
- var currentId = id;
177
- var maxDepth = 100; // 防止无限循环和过深的调用链
178
-
179
- while (currentId && chain.length < maxDepth) {
180
- // 检测循环引用
181
- if (visited.has(currentId)) {
182
- console.warn("[MessageTracer] Circular reference detected in message chain: ".concat(currentId));
183
- break;
184
- }
185
- visited.add(currentId);
186
- var trace = this.traces.get(currentId);
187
- if (!trace) break;
188
- chain.unshift(trace);
189
- currentId = trace.parentId;
190
- }
191
-
192
- // 如果达到最大深度,发出警告
193
- if (chain.length >= maxDepth) {
194
- console.warn("[MessageTracer] Message chain exceeded max depth (".concat(maxDepth, "). Chain may be incomplete."));
195
- }
196
- return chain;
197
- }
198
-
199
- /**
200
- * 捕获调用栈
201
- */
202
- }, {
203
- key: "captureStack",
204
- value: function captureStack() {
205
- var stack = new Error().stack || '';
206
- // 移除 tracer 自身的栈帧
207
- return stack.split('\n').slice(3).join('\n');
208
- }
209
-
210
- /**
211
- * 清理敏感参数
212
- */
213
- }, {
214
- key: "sanitizeParams",
215
- value: function sanitizeParams(params) {
216
- if (!params) return params;
217
-
218
- // 避免循环引用和大对象
219
- try {
220
- return JSON.parse(JSON.stringify(params, function (key, value) {
221
- // 过滤掉可能的敏感信息
222
- if (key.toLowerCase().includes('password') || key.toLowerCase().includes('token')) return '[REDACTED]';
223
-
224
- // 限制字符串长度
225
- if (typeof value === 'string' && value.length > 500) return "".concat(value.substring(0, 500), "... (truncated)");
226
- return value;
227
- }));
228
- } catch (_unused) {
229
- return '[Unable to serialize]';
230
- }
231
- }
232
-
233
- /**
234
- * 分级日志输出
235
- */
236
- }, {
237
- key: "log",
238
- value: function log(level, message, data) {
239
- if (!this.config.logToConsole || level < this.config.logLevel) return;
240
- var timestamp = new Date().toISOString();
241
- var prefix = "[".concat(timestamp, "]");
242
- switch (level) {
243
- case LogLevel.DEBUG:
244
- console.debug(prefix, message, data);
245
- break;
246
- case LogLevel.INFO:
247
- console.info(prefix, message, data);
248
- break;
249
- case LogLevel.WARN:
250
- console.warn(prefix, message, data);
251
- break;
252
- case LogLevel.ERROR:
253
- console.error(prefix, message, data);
254
- break;
255
- }
256
- }
257
-
258
- /**
259
- * 持久化追踪记录
260
- */
261
- }, {
262
- key: "persistTrace",
263
- value: function persistTrace(trace) {
264
- try {
265
- var key = "message_trace_".concat(trace.id);
266
- var data = JSON.stringify(trace);
267
- localStorage.setItem(key, data);
268
- } catch (error) {
269
- console.warn('Failed to persist trace:', error);
270
- }
271
- }
272
-
273
- /**
274
- * 获取所有追踪记录
275
- */
276
- }, {
277
- key: "getAllTraces",
278
- value: function getAllTraces() {
279
- return Array.from(this.traces.values());
280
- }
281
-
282
- /**
283
- * 获取特定消息的追踪记录
284
- */
285
- }, {
286
- key: "getTrace",
287
- value: function getTrace(id) {
288
- return this.traces.get(id);
289
- }
290
-
291
- /**
292
- * 获取失败的消息
293
- */
294
- }, {
295
- key: "getFailedTraces",
296
- value: function getFailedTraces() {
297
- return this.getAllTraces().filter(function (t) {
298
- return t.status === 'error';
299
- });
300
- }
301
-
302
- /**
303
- * 获取待处理的消息
304
- */
305
- }, {
306
- key: "getPendingTraces",
307
- value: function getPendingTraces() {
308
- return this.getAllTraces().filter(function (t) {
309
- return t.status === 'pending';
310
- });
311
- }
312
-
313
- /**
314
- * 清空追踪记录
315
- */
316
- }, {
317
- key: "clear",
318
- value: function clear() {
319
- this.traces.clear();
320
- this.currentMessageId = null;
321
- this.messageChain = [];
322
- }
323
-
324
- /**
325
- * 导出追踪数据(用于调试)
326
- */
327
- }, {
328
- key: "export",
329
- value: function _export() {
330
- return JSON.stringify({
331
- traces: this.getAllTraces(),
332
- config: this.config,
333
- timestamp: Date.now()
334
- }, null, 2);
335
- }
336
-
337
- /**
338
- * 生成调试报告
339
- */
340
- }, {
341
- key: "generateReport",
342
- value: function generateReport() {
343
- var traces = this.getAllTraces();
344
- var failed = this.getFailedTraces();
345
- var pending = this.getPendingTraces();
346
- var avgDuration = traces.filter(function (t) {
347
- return t.duration;
348
- }).reduce(function (sum, t) {
349
- return sum + (t.duration || 0);
350
- }, 0) / traces.length;
351
- return "\n=== Message Tracer Report ===\nTotal Messages: ".concat(traces.length, "\nFailed: ").concat(failed.length, "\nPending: ").concat(pending.length, "\nAverage Duration: ").concat(avgDuration.toFixed(2), "ms\n\nFailed Messages:\n").concat(failed.map(function (t) {
352
- var _t$error;
353
- return " - ".concat(t.name, " (").concat(t.id, "): ").concat((_t$error = t.error) === null || _t$error === void 0 ? void 0 : _t$error.message);
354
- }).join('\n'), "\n\nPending Messages:\n").concat(pending.map(function (t) {
355
- return " - ".concat(t.name, " (").concat(t.id, ")");
356
- }).join('\n'), "\n ").trim();
357
- }
358
- }]);
359
- return MessageTracer;
360
- }(); // 单例实例
361
- export var messageTracer = new MessageTracer();
362
-
363
- // 开发环境自动启用
364
- console.log("🚀 ~ window:", window);
365
- if (typeof window !== 'undefined') {
366
- // @ts-ignore
367
- window.__MESSAGE_TRACER__ = messageTracer;
368
- }
369
- //# sourceMappingURL=messageTracer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["LogLevel","MessageTracer","_classCallCheck","_defineProperty","Map","enabled","logLevel","INFO","maxTraces","captureStack","logToConsole","persistToStorage","_createClass","key","value","configure","config","_objectSpread","startTrace","id","name","params","console","log","trace","sanitizeParams","timestamp","Date","now","stack","parentId","currentMessageId","undefined","status","traces","set","messageChain","push","size","firstKey","keys","next","delete","DEBUG","concat","chain","getMessageChain","endTrace","result","get","duration","pop","persistTrace","errorTrace","error","message","String","errorContext","buildErrorContext","ERROR","context","map","t","callStack","visited","Set","currentId","maxDepth","length","has","warn","add","unshift","Error","split","slice","join","JSON","parse","stringify","toLowerCase","includes","substring","_unused","level","data","toISOString","prefix","debug","info","WARN","localStorage","setItem","getAllTraces","Array","from","values","getTrace","getFailedTraces","filter","getPendingTraces","clear","_export","generateReport","failed","pending","avgDuration","reduce","sum","toFixed","_t$error","trim","messageTracer","window","__MESSAGE_TRACER__"],"sources":["../../src/utils/messageTracer.ts"],"sourcesContent":["/**\n * 消息追踪系统\n * 用于调试消息驱动架构中的消息流转和错误定位\n */\n\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n NONE = 4,\n}\n\nexport interface MessageTrace {\n id: string\n name: string\n params: any\n timestamp: number\n stack: string\n parentId?: string\n status: 'pending' | 'success' | 'error'\n duration?: number\n error?: any\n result?: any\n}\n\nexport interface TracerConfig {\n enabled: boolean\n logLevel: LogLevel\n maxTraces: number\n captureStack: boolean\n logToConsole: boolean\n persistToStorage: boolean\n}\n\nclass MessageTracer {\n private traces: Map<string, MessageTrace> = new Map()\n private config: TracerConfig = {\n enabled: true,\n logLevel: LogLevel.INFO,\n maxTraces: 1000,\n captureStack: true,\n logToConsole: true,\n persistToStorage: false,\n }\n\n private currentMessageId: string | null = null\n private messageChain: string[] = []\n\n configure(config: Partial<TracerConfig>) {\n this.config = { ...this.config, ...config }\n }\n\n /**\n * 开始追踪一个消息\n */\n startTrace(id: string, name: string, params: any): void {\n console.log(\"🚀 ~ MessageTracer ~ startTrace ~ id:\", id)\n if (!this.config.enabled)\n return\n\n const trace: MessageTrace = {\n id,\n name,\n params: this.sanitizeParams(params),\n timestamp: Date.now(),\n stack: this.config.captureStack ? this.captureStack() : '',\n parentId: this.currentMessageId || undefined,\n status: 'pending',\n }\n\n this.traces.set(id, trace)\n\n // 维护消息链\n if (this.currentMessageId) {\n this.messageChain.push(this.currentMessageId)\n }\n this.currentMessageId = id\n\n // 限制追踪数量\n if (this.traces.size > this.config.maxTraces) {\n const firstKey = this.traces.keys().next().value\n this.traces.delete(firstKey)\n }\n\n this.log(LogLevel.DEBUG, `📨 Message started: ${name}`, {\n id,\n params: trace.params,\n chain: this.getMessageChain(id),\n })\n }\n\n /**\n * 标记消息成功完成\n */\n endTrace(id: string, result?: any): void {\n if (!this.config.enabled)\n return\n\n const trace = this.traces.get(id)\n if (!trace)\n return\n\n trace.status = 'success'\n trace.duration = Date.now() - trace.timestamp\n trace.result = this.sanitizeParams(result)\n\n this.log(LogLevel.INFO, `✅ Message completed: ${trace.name}`, {\n id,\n duration: `${trace.duration}ms`,\n result: trace.result,\n })\n\n // 恢复消息链\n if (this.currentMessageId === id) {\n this.currentMessageId = this.messageChain.pop() || null\n }\n\n // 持久化\n if (this.config.persistToStorage) {\n this.persistTrace(trace)\n }\n }\n\n /**\n * 标记消息执行失败\n */\n errorTrace(id: string, error: any): void {\n if (!this.config.enabled)\n return\n\n const trace = this.traces.get(id)\n if (!trace)\n return\n\n trace.status = 'error'\n trace.duration = Date.now() - trace.timestamp\n trace.error = {\n message: error?.message || String(error),\n stack: error?.stack,\n name: error?.name,\n }\n\n // 构建完整的错误上下文\n const errorContext = this.buildErrorContext(trace)\n\n this.log(LogLevel.ERROR, `❌ Message failed: ${trace.name}`, errorContext)\n\n // 恢复消息链\n if (this.currentMessageId === id) {\n this.currentMessageId = this.messageChain.pop() || null\n }\n\n // 持久化错误\n if (this.config.persistToStorage) {\n this.persistTrace(trace)\n }\n }\n\n /**\n * 构建错误上下文,包含完整的消息链信息\n */\n private buildErrorContext(trace: MessageTrace) {\n const chain = this.getMessageChain(trace.id)\n const context = {\n id: trace.id,\n name: trace.name,\n params: trace.params,\n duration: `${trace.duration}ms`,\n error: trace.error,\n messageChain: chain.map(t => ({\n name: t.name,\n id: t.id,\n duration: t.duration ? `${t.duration}ms` : 'pending',\n })),\n callStack: trace.stack,\n }\n\n return context\n }\n\n /**\n * 获取消息调用链\n * 添加了循环引用检测和深度限制,防止无限递归\n */\n private getMessageChain(id: string): MessageTrace[] {\n const chain: MessageTrace[] = []\n const visited = new Set<string>()\n let currentId: string | undefined = id\n const maxDepth = 100 // 防止无限循环和过深的调用链\n\n while (currentId && chain.length < maxDepth) {\n // 检测循环引用\n if (visited.has(currentId)) {\n console.warn(`[MessageTracer] Circular reference detected in message chain: ${currentId}`)\n break\n }\n visited.add(currentId)\n\n const trace = this.traces.get(currentId)\n if (!trace)\n break\n chain.unshift(trace)\n currentId = trace.parentId\n }\n\n // 如果达到最大深度,发出警告\n if (chain.length >= maxDepth) {\n console.warn(`[MessageTracer] Message chain exceeded max depth (${maxDepth}). Chain may be incomplete.`)\n }\n\n return chain\n }\n\n /**\n * 捕获调用栈\n */\n private captureStack(): string {\n const stack = new Error().stack || ''\n // 移除 tracer 自身的栈帧\n return stack.split('\\n').slice(3).join('\\n')\n }\n\n /**\n * 清理敏感参数\n */\n private sanitizeParams(params: any): any {\n if (!params)\n return params\n\n // 避免循环引用和大对象\n try {\n return JSON.parse(JSON.stringify(params, (key, value) => {\n // 过滤掉可能的敏感信息\n if (key.toLowerCase().includes('password') || key.toLowerCase().includes('token'))\n return '[REDACTED]'\n\n // 限制字符串长度\n if (typeof value === 'string' && value.length > 500)\n return `${value.substring(0, 500)}... (truncated)`\n\n return value\n }))\n }\n catch {\n return '[Unable to serialize]'\n }\n }\n\n /**\n * 分级日志输出\n */\n private log(level: LogLevel, message: string, data?: any): void {\n if (!this.config.logToConsole || level < this.config.logLevel)\n return\n\n const timestamp = new Date().toISOString()\n const prefix = `[${timestamp}]`\n\n switch (level) {\n case LogLevel.DEBUG:\n console.debug(prefix, message, data)\n break\n case LogLevel.INFO:\n console.info(prefix, message, data)\n break\n case LogLevel.WARN:\n console.warn(prefix, message, data)\n break\n case LogLevel.ERROR:\n console.error(prefix, message, data)\n break\n }\n }\n\n /**\n * 持久化追踪记录\n */\n private persistTrace(trace: MessageTrace): void {\n try {\n const key = `message_trace_${trace.id}`\n const data = JSON.stringify(trace)\n localStorage.setItem(key, data)\n }\n catch (error) {\n console.warn('Failed to persist trace:', error)\n }\n }\n\n /**\n * 获取所有追踪记录\n */\n getAllTraces(): MessageTrace[] {\n return Array.from(this.traces.values())\n }\n\n /**\n * 获取特定消息的追踪记录\n */\n getTrace(id: string): MessageTrace | undefined {\n return this.traces.get(id)\n }\n\n /**\n * 获取失败的消息\n */\n getFailedTraces(): MessageTrace[] {\n return this.getAllTraces().filter(t => t.status === 'error')\n }\n\n /**\n * 获取待处理的消息\n */\n getPendingTraces(): MessageTrace[] {\n return this.getAllTraces().filter(t => t.status === 'pending')\n }\n\n /**\n * 清空追踪记录\n */\n clear(): void {\n this.traces.clear()\n this.currentMessageId = null\n this.messageChain = []\n }\n\n /**\n * 导出追踪数据(用于调试)\n */\n export(): string {\n return JSON.stringify({\n traces: this.getAllTraces(),\n config: this.config,\n timestamp: Date.now(),\n }, null, 2)\n }\n\n /**\n * 生成调试报告\n */\n generateReport(): string {\n const traces = this.getAllTraces()\n const failed = this.getFailedTraces()\n const pending = this.getPendingTraces()\n\n const avgDuration = traces\n .filter(t => t.duration)\n .reduce((sum, t) => sum + (t.duration || 0), 0) / traces.length\n\n return `\n=== Message Tracer Report ===\nTotal Messages: ${traces.length}\nFailed: ${failed.length}\nPending: ${pending.length}\nAverage Duration: ${avgDuration.toFixed(2)}ms\n\nFailed Messages:\n${failed.map(t => ` - ${t.name} (${t.id}): ${t.error?.message}`).join('\\n')}\n\nPending Messages:\n${pending.map(t => ` - ${t.name} (${t.id})`).join('\\n')}\n `.trim()\n }\n}\n\n// 单例实例\nexport const messageTracer = new MessageTracer()\n\n// 开发环境自动启用\nconsole.log(\"🚀 ~ window:\", window)\nif (typeof window !== 'undefined') {\n // @ts-ignore\n window.__MESSAGE_TRACER__ = messageTracer\n}\n"],"mappings":"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"}