@anov/3d 0.0.323 → 0.0.324

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/__mocks__/ability-mock.js +124 -0
  2. package/dist/__mocks__/ability-mock.js.map +1 -0
  3. package/dist/__mocks__/geo-3d-mock.js +10 -0
  4. package/dist/__mocks__/geo-3d-mock.js.map +1 -0
  5. package/dist/anov3d.js +64 -8
  6. package/dist/anov3d.js.map +1 -1
  7. package/dist/applicationApi.js +50 -16
  8. package/dist/applicationApi.js.map +1 -1
  9. package/dist/applicationApiType.js.map +1 -1
  10. package/dist/hooksManager.js +43 -35
  11. package/dist/hooksManager.js.map +1 -1
  12. package/dist/index.js +3 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/module/animation/motion/index.js +2 -4
  15. package/dist/module/animation/motion/index.js.map +1 -1
  16. package/dist/module/camera/index.js.map +1 -1
  17. package/dist/module/entity/area/index.js +3 -3
  18. package/dist/module/entity/area/index.js.map +1 -1
  19. package/dist/module/entity/baseEntity.js +13 -4
  20. package/dist/module/entity/baseEntity.js.map +1 -1
  21. package/dist/module/entity/batch/index.js +12 -10
  22. package/dist/module/entity/batch/index.js.map +1 -1
  23. package/dist/module/entity/flyline/index.js +3 -3
  24. package/dist/module/entity/flyline/index.js.map +1 -1
  25. package/dist/module/entity/group/index.js +18 -4
  26. package/dist/module/entity/group/index.js.map +1 -1
  27. package/dist/module/entity/heatmap/index.js +16 -4
  28. package/dist/module/entity/heatmap/index.js.map +1 -1
  29. package/dist/module/entity/index.js +13 -12
  30. package/dist/module/entity/index.js.map +1 -1
  31. package/dist/module/entity/infoPanel/index.js +2 -2
  32. package/dist/module/entity/infoPanel/index.js.map +1 -1
  33. package/dist/module/entity/light/pointLight/index.js +2 -2
  34. package/dist/module/entity/light/pointLight/index.js.map +1 -1
  35. package/dist/module/entity/mark/index.js +11 -14
  36. package/dist/module/entity/mark/index.js.map +1 -1
  37. package/dist/module/entity/model/index.js +29 -12
  38. package/dist/module/entity/model/index.js.map +1 -1
  39. package/dist/module/entity/model/load/loadFbx.js +1 -1
  40. package/dist/module/entity/model/load/loadFbx.js.map +1 -1
  41. package/dist/module/entity/model/load/loadGlb.js +7 -7
  42. package/dist/module/entity/model/load/loadGlb.js.map +1 -1
  43. package/dist/module/entity/poi/index.js +3 -3
  44. package/dist/module/entity/poi/index.js.map +1 -1
  45. package/dist/module/entity/shape/index.js +16 -14
  46. package/dist/module/entity/shape/index.js.map +1 -1
  47. package/dist/module/entity/spline/index.js +4 -4
  48. package/dist/module/entity/spline/index.js.map +1 -1
  49. package/dist/module/entity/strategy.js.map +1 -1
  50. package/dist/module/entity/traffic/realismTraffic/index.js +17 -5
  51. package/dist/module/entity/traffic/realismTraffic/index.js.map +1 -1
  52. package/dist/module/entity/traffic/streamerTraffic/index.js +16 -4
  53. package/dist/module/entity/traffic/streamerTraffic/index.js.map +1 -1
  54. package/dist/module/entity/videoPanel/index.js +3 -3
  55. package/dist/module/entity/videoPanel/index.js.map +1 -1
  56. package/dist/module/environment/index.js +3 -4
  57. package/dist/module/environment/index.js.map +1 -1
  58. package/dist/module/environment/season/index.js +1 -1
  59. package/dist/module/environment/season/index.js.map +1 -1
  60. package/dist/module/eventBus/index.js +3 -4
  61. package/dist/module/eventBus/index.js.map +1 -1
  62. package/dist/module/material/index.js +5 -6
  63. package/dist/module/material/index.js.map +1 -1
  64. package/dist/module/message/hub.js +178 -0
  65. package/dist/module/message/hub.js.map +1 -0
  66. package/dist/module/scene/fileParse.js +21 -16
  67. package/dist/module/scene/fileParse.js.map +1 -1
  68. package/dist/module/scene/index.js +9 -10
  69. package/dist/module/scene/index.js.map +1 -1
  70. package/dist/sdkEntry.js +25 -32
  71. package/dist/sdkEntry.js.map +1 -1
  72. package/dist/utils/debugTools.js +364 -0
  73. package/dist/utils/debugTools.js.map +1 -0
  74. package/dist/utils/messageFn.js +21 -11
  75. package/dist/utils/messageFn.js.map +1 -1
  76. package/dist/utils/messageTracer.js +369 -0
  77. package/dist/utils/messageTracer.js.map +1 -0
  78. package/package.json +5 -4
@@ -0,0 +1,369 @@
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
@@ -0,0 +1 @@
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d",
3
- "version": "0.0.323",
3
+ "version": "0.0.324",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -25,12 +25,13 @@
25
25
  "javascript-state-machine": "^3.1.0",
26
26
  "localforage": "^1.10.0",
27
27
  "lodash": "^4.17.21",
28
+ "message-nexus": "^1.1.3",
28
29
  "resize-observer-polyfill": "^1.5.1",
29
30
  "rxjs": "7.8.1",
30
31
  "three-mesh-bvh": "^0.9.0",
31
32
  "uuid": "^9.0.1",
32
- "@anov/3d-ability": "^0.0.168",
33
- "@anov/3d-core": "^0.0.105"
33
+ "@anov/3d-core": "^0.0.106",
34
+ "@anov/3d-ability": "^0.0.169"
34
35
  },
35
36
  "devDependencies": {
36
37
  "@types/uuid": "^9.0.7",
@@ -40,6 +41,6 @@
40
41
  "build": "father build",
41
42
  "build:deps": "father prebundle",
42
43
  "build:r": "rm -rf .rollup.cache && rollup -c",
43
- "test": "jest --maxWorkers 2"
44
+ "test": "vitest"
44
45
  }
45
46
  }