@anov/3d 0.0.319 → 0.0.321

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 +67 -11
  6. package/dist/anov3d.js.map +1 -1
  7. package/dist/applicationApi.js +59 -22
  8. package/dist/applicationApi.js.map +1 -1
  9. package/dist/hooksManager.js +22 -17
  10. package/dist/hooksManager.js.map +1 -1
  11. package/dist/index.js +3 -2
  12. package/dist/index.js.map +1 -1
  13. package/dist/module/animation/motion/index.js +2 -4
  14. package/dist/module/animation/motion/index.js.map +1 -1
  15. package/dist/module/camera/index.js +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 +47 -44
  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 +2 -2
  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 +1 -5
  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/scene/fileParse.js +22 -17
  65. package/dist/module/scene/fileParse.js.map +1 -1
  66. package/dist/module/scene/index.js +10 -11
  67. package/dist/module/scene/index.js.map +1 -1
  68. package/dist/sdkEntry.js +25 -32
  69. package/dist/sdkEntry.js.map +1 -1
  70. package/dist/utils/debugTools.js +364 -0
  71. package/dist/utils/debugTools.js.map +1 -0
  72. package/dist/utils/index.js +1 -1
  73. package/dist/utils/index.js.map +1 -1
  74. package/dist/utils/messageFn.js +20 -6
  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 +4 -4
@@ -0,0 +1,364 @@
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 _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
3
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
5
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
6
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
7
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
9
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
10
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
11
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
12
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
13
+ 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); } }
14
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
16
+ 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); }
17
+ /**
18
+ * 开发者调试工具
19
+ * 提供便捷的调试方法,可在浏览器控制台直接使用
20
+ */
21
+
22
+ import { messageTracer } from "./messageTracer";
23
+ export var DebugTools = /*#__PURE__*/function () {
24
+ function DebugTools() {
25
+ _classCallCheck(this, DebugTools);
26
+ }
27
+ _createClass(DebugTools, null, [{
28
+ key: "printTraces",
29
+ value:
30
+ /**
31
+ * 打印所有消息追踪记录
32
+ */
33
+ function printTraces() {
34
+ var traces = messageTracer.getAllTraces();
35
+ console.table(traces.map(function (t) {
36
+ return {
37
+ ID: t.id,
38
+ Name: t.name,
39
+ Status: t.status,
40
+ Duration: t.duration ? "".concat(t.duration, "ms") : '-',
41
+ Timestamp: new Date(t.timestamp).toLocaleTimeString()
42
+ };
43
+ }));
44
+ }
45
+
46
+ /**
47
+ * 打印失败的消息
48
+ */
49
+ }, {
50
+ key: "printFailures",
51
+ value: function printFailures() {
52
+ var _this = this;
53
+ var failed = messageTracer.getFailedTraces();
54
+ if (failed.length === 0) {
55
+ console.log('✅ No failed messages');
56
+ return;
57
+ }
58
+ console.group('❌ Failed Messages');
59
+ failed.forEach(function (trace) {
60
+ console.group("".concat(trace.name, " (").concat(trace.id, ")"));
61
+ console.log('Error:', trace.error);
62
+ console.log('Params:', trace.params);
63
+ console.log('Duration:', "".concat(trace.duration, "ms"));
64
+
65
+ // 打印消息链
66
+ var chain = _this.getMessageChain(trace.id);
67
+ if (chain.length > 1) {
68
+ console.log('Message Chain:');
69
+ chain.forEach(function (t, i) {
70
+ var prefix = ' '.repeat(i) + '└─';
71
+ console.log("".concat(prefix, " ").concat(t.name, " (").concat(t.status, ")"));
72
+ });
73
+ }
74
+
75
+ // 打印调用栈
76
+ if (trace.stack) {
77
+ console.log('Call Stack:');
78
+ console.log(trace.stack);
79
+ }
80
+ console.groupEnd();
81
+ });
82
+ console.groupEnd();
83
+ }
84
+
85
+ /**
86
+ * 打印待处理的消息
87
+ */
88
+ }, {
89
+ key: "printPending",
90
+ value: function printPending() {
91
+ var pending = messageTracer.getPendingTraces();
92
+ if (pending.length === 0) {
93
+ console.log('✅ No pending messages');
94
+ return;
95
+ }
96
+ console.warn("\u23F3 ".concat(pending.length, " pending messages:"));
97
+ console.table(pending.map(function (t) {
98
+ return {
99
+ ID: t.id,
100
+ Name: t.name,
101
+ Age: "".concat(Date.now() - t.timestamp, "ms"),
102
+ Timestamp: new Date(t.timestamp).toLocaleTimeString()
103
+ };
104
+ }));
105
+ }
106
+
107
+ /**
108
+ * 生成调试报告
109
+ */
110
+ }, {
111
+ key: "report",
112
+ value: function report() {
113
+ console.log(messageTracer.generateReport());
114
+ }
115
+
116
+ /**
117
+ * 导出追踪数据
118
+ */
119
+ }, {
120
+ key: "export",
121
+ value: function _export() {
122
+ var data = messageTracer.export();
123
+ var blob = new Blob([data], {
124
+ type: 'application/json'
125
+ });
126
+ var url = URL.createObjectURL(blob);
127
+ var a = document.createElement('a');
128
+ a.href = url;
129
+ a.download = "message-traces-".concat(Date.now(), ".json");
130
+ a.click();
131
+ URL.revokeObjectURL(url);
132
+ console.log('✅ Traces exported');
133
+ }
134
+
135
+ /**
136
+ * 清空追踪记录
137
+ */
138
+ }, {
139
+ key: "clear",
140
+ value: function clear() {
141
+ messageTracer.clear();
142
+ console.log('✅ Traces cleared');
143
+ }
144
+
145
+ /**
146
+ * 获取消息链
147
+ */
148
+ }, {
149
+ key: "getMessageChain",
150
+ value: function getMessageChain(id) {
151
+ var chain = [];
152
+ var currentId = id;
153
+ while (currentId) {
154
+ var trace = messageTracer.getTrace(currentId);
155
+ if (!trace) break;
156
+ chain.unshift(trace);
157
+ currentId = trace.parentId;
158
+ }
159
+ return chain;
160
+ }
161
+
162
+ /**
163
+ * 查找特定消息
164
+ */
165
+ }, {
166
+ key: "find",
167
+ value: function find(nameOrId) {
168
+ var traces = messageTracer.getAllTraces();
169
+ var results = traces.filter(function (t) {
170
+ return t.name.includes(nameOrId) || t.id.includes(nameOrId);
171
+ });
172
+ if (results.length === 0) {
173
+ console.log('No matching messages found');
174
+ return;
175
+ }
176
+ console.table(results.map(function (t) {
177
+ return {
178
+ ID: t.id,
179
+ Name: t.name,
180
+ Status: t.status,
181
+ Duration: t.duration ? "".concat(t.duration, "ms") : '-'
182
+ };
183
+ }));
184
+ return results;
185
+ }
186
+
187
+ /**
188
+ * 查看消息详情
189
+ */
190
+ }, {
191
+ key: "inspect",
192
+ value: function inspect(id) {
193
+ var trace = messageTracer.getTrace(id);
194
+ if (!trace) {
195
+ console.error("Message ".concat(id, " not found"));
196
+ return;
197
+ }
198
+ console.group("\uD83D\uDCCB Message Details: ".concat(trace.name));
199
+ console.log('ID:', trace.id);
200
+ console.log('Status:', trace.status);
201
+ console.log('Duration:', trace.duration ? "".concat(trace.duration, "ms") : 'pending');
202
+ console.log('Timestamp:', new Date(trace.timestamp).toLocaleString());
203
+ console.log('Params:', trace.params);
204
+ if (trace.result) {
205
+ console.log('Result:', trace.result);
206
+ }
207
+ if (trace.error) {
208
+ console.log('Error:', trace.error);
209
+ }
210
+
211
+ // 消息链
212
+ var chain = this.getMessageChain(id);
213
+ if (chain.length > 1) {
214
+ console.log('Message Chain:');
215
+ chain.forEach(function (t, i) {
216
+ var prefix = ' '.repeat(i) + '└─';
217
+ console.log("".concat(prefix, " ").concat(t.name, " (").concat(t.status, ")"));
218
+ });
219
+ }
220
+
221
+ // 调用栈
222
+ if (trace.stack) {
223
+ console.log('Call Stack:');
224
+ console.log(trace.stack);
225
+ }
226
+ console.groupEnd();
227
+ }
228
+
229
+ /**
230
+ * 性能统计
231
+ */
232
+ }, {
233
+ key: "stats",
234
+ value: function stats() {
235
+ var traces = messageTracer.getAllTraces();
236
+ if (traces.length === 0) {
237
+ console.log('No traces available');
238
+ return;
239
+ }
240
+ var completed = traces.filter(function (t) {
241
+ return t.duration !== undefined;
242
+ });
243
+ var durations = completed.map(function (t) {
244
+ return t.duration;
245
+ });
246
+ var stats = {
247
+ total: traces.length,
248
+ completed: completed.length,
249
+ pending: traces.filter(function (t) {
250
+ return t.status === 'pending';
251
+ }).length,
252
+ failed: traces.filter(function (t) {
253
+ return t.status === 'error';
254
+ }).length,
255
+ avgDuration: durations.reduce(function (a, b) {
256
+ return a + b;
257
+ }, 0) / durations.length,
258
+ minDuration: Math.min.apply(Math, _toConsumableArray(durations)),
259
+ maxDuration: Math.max.apply(Math, _toConsumableArray(durations))
260
+ };
261
+ console.table(stats);
262
+
263
+ // 按消息名称分组统计
264
+ var byName = new Map();
265
+ completed.forEach(function (t) {
266
+ if (!byName.has(t.name)) {
267
+ byName.set(t.name, []);
268
+ }
269
+ byName.get(t.name).push(t.duration);
270
+ });
271
+ console.log('\n📊 Performance by Message Type:');
272
+ var perfData = Array.from(byName.entries()).map(function (_ref) {
273
+ var _ref2 = _slicedToArray(_ref, 2),
274
+ name = _ref2[0],
275
+ durations = _ref2[1];
276
+ return {
277
+ Name: name,
278
+ Count: durations.length,
279
+ Avg: "".concat((durations.reduce(function (a, b) {
280
+ return a + b;
281
+ }, 0) / durations.length).toFixed(2), "ms"),
282
+ Min: "".concat(Math.min.apply(Math, _toConsumableArray(durations)), "ms"),
283
+ Max: "".concat(Math.max.apply(Math, _toConsumableArray(durations)), "ms")
284
+ };
285
+ });
286
+ console.table(perfData);
287
+ }
288
+
289
+ /**
290
+ * 启用/禁用追踪
291
+ */
292
+ }, {
293
+ key: "enableTracing",
294
+ value: function enableTracing() {
295
+ var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
296
+ messageTracer.configure({
297
+ enabled: enabled
298
+ });
299
+ console.log("\u2705 Message tracing ".concat(enabled ? 'enabled' : 'disabled'));
300
+ }
301
+
302
+ /**
303
+ * 设置日志级别
304
+ */
305
+ }, {
306
+ key: "setLogLevel",
307
+ value: function setLogLevel(level) {
308
+ var levels = {
309
+ DEBUG: 0,
310
+ INFO: 1,
311
+ WARN: 2,
312
+ ERROR: 3,
313
+ NONE: 4
314
+ };
315
+ messageTracer.configure({
316
+ logLevel: levels[level]
317
+ });
318
+ console.log("\u2705 Log level set to ".concat(level));
319
+ }
320
+
321
+ /**
322
+ * 监控慢消息
323
+ */
324
+ }, {
325
+ key: "slowMessages",
326
+ value: function slowMessages() {
327
+ var threshold = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1000;
328
+ var traces = messageTracer.getAllTraces();
329
+ var slow = traces.filter(function (t) {
330
+ return t.duration && t.duration > threshold;
331
+ });
332
+ if (slow.length === 0) {
333
+ console.log("\u2705 No messages slower than ".concat(threshold, "ms"));
334
+ return;
335
+ }
336
+ console.warn("\uD83D\uDC0C ".concat(slow.length, " slow messages (>").concat(threshold, "ms):"));
337
+ console.table(slow.map(function (t) {
338
+ return {
339
+ Name: t.name,
340
+ Duration: "".concat(t.duration, "ms"),
341
+ ID: t.id
342
+ };
343
+ }));
344
+ }
345
+
346
+ /**
347
+ * 显示帮助信息
348
+ */
349
+ }, {
350
+ key: "help",
351
+ value: function help() {
352
+ console.log("\n\uD83D\uDEE0\uFE0F Anov3D Debug Tools\n\nAvailable Commands:\n DebugTools.printTraces() - \u6253\u5370\u6240\u6709\u6D88\u606F\u8FFD\u8E2A\u8BB0\u5F55\n DebugTools.printFailures() - \u6253\u5370\u5931\u8D25\u7684\u6D88\u606F\n DebugTools.printPending() - \u6253\u5370\u5F85\u5904\u7406\u7684\u6D88\u606F\n DebugTools.report() - \u751F\u6210\u8C03\u8BD5\u62A5\u544A\n DebugTools.export() - \u5BFC\u51FA\u8FFD\u8E2A\u6570\u636E\n DebugTools.clear() - \u6E05\u7A7A\u8FFD\u8E2A\u8BB0\u5F55\n DebugTools.find(nameOrId) - \u67E5\u627E\u7279\u5B9A\u6D88\u606F\n DebugTools.inspect(id) - \u67E5\u770B\u6D88\u606F\u8BE6\u60C5\n DebugTools.stats() - \u6027\u80FD\u7EDF\u8BA1\n DebugTools.slowMessages(ms) - \u67E5\u627E\u6162\u6D88\u606F\n DebugTools.enableTracing(bool) - \u542F\u7528/\u7981\u7528\u8FFD\u8E2A\n DebugTools.setLogLevel(level) - \u8BBE\u7F6E\u65E5\u5FD7\u7EA7\u522B\n DebugTools.help() - \u663E\u793A\u6B64\u5E2E\u52A9\u4FE1\u606F\n\nExamples:\n DebugTools.find('entity.create')\n DebugTools.inspect('message-id-123')\n DebugTools.slowMessages(500)\n DebugTools.setLogLevel('DEBUG')\n ");
353
+ }
354
+ }]);
355
+ return DebugTools;
356
+ }();
357
+
358
+ // 在开发环境自动暴露到全局
359
+ if (typeof window !== 'undefined' && process.env.NODE_ENV !== 'production') {
360
+ // @ts-ignore
361
+ window.DebugTools = DebugTools;
362
+ console.log('🛠️ Debug tools available. Type DebugTools.help() for usage.');
363
+ }
364
+ //# sourceMappingURL=debugTools.js.map
@@ -0,0 +1 @@
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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"}
@@ -31,7 +31,7 @@ export var getValueByKey = function getValueByKey(obj, key) {
31
31
  export var getFnByFnkey = function getFnByFnkey(iEngine, fnkey, id) {
32
32
  var handleFunction = getValueByKey(iEngine, fnkey);
33
33
  if (typeof handleFunction !== 'function') {
34
- sendToMessage({
34
+ sendToMessage(iEngine, {
35
35
  messageType: MessageType.Api,
36
36
  messageName: fnkey,
37
37
  status: messageStatus.ModuleNotRegister.code
@@ -1 +1 @@
1
- {"version":3,"names":["Vector3","messageStatus","MessageType","sendToMessage","getValueByKey","obj","key","undefined","keys","split","middleObj","index","length","currentKey","_typeof","getFnByFnkey","iEngine","fnkey","id","handleFunction","messageType","Api","messageName","status","ModuleNotRegister","code","Error","fnkeyArrary","context","slice","join","bind","getSceneInfo","scene","objects","vertices","triangles","i","l","children","object","traverseVisible","isMesh","isPoints","geometry","attributes","position","count","object2Vector3","x","y","z"],"sources":["../../src/utils/index.ts"],"sourcesContent":["import type { Scene } from '@anov/3d-core'\nimport { Vector3 } from '@anov/3d-core'\nimport type Anov3D from '..'\nimport { messageStatus } from '../messageStatus'\nimport { MessageType, sendToMessage } from './messageFn'\n\ninterface ObjectType {\n [key: string]: any\n\n}\n\n/**\n * get value by key\n * notic: to mark proxy, so need take it layer by layer\n * @param obj\n * @param key\n */\nexport const getValueByKey = <T extends ObjectType>(obj: T, key: string) => {\n if (!key)\n return undefined\n\n const keys = key.split('.')\n let middleObj = obj\n\n for (let index = 0; index < keys.length; index++) {\n const currentKey = keys[index]\n\n if (typeof middleObj === 'object') {\n if (!(currentKey in (middleObj)))\n return undefined\n else\n middleObj = middleObj[currentKey]\n }\n else {\n return undefined\n }\n }\n\n return middleObj\n}\n\n/**\n * getFnByFnkey\n * @param iEngine\n * @param fnkey\n */\nexport const getFnByFnkey = (iEngine: Anov3D, fnkey: string, id: string) => {\n const handleFunction = getValueByKey(iEngine, fnkey) as any\n\n if (typeof handleFunction !== 'function') {\n sendToMessage(\n {\n messageType: MessageType.Api,\n messageName: fnkey,\n status: messageStatus.ModuleNotRegister.code,\n },\n {\n id,\n },\n )\n throw new Error('this function is not exist')\n }\n\n const fnkeyArrary = fnkey.split('.')\n\n let context: any = iEngine\n\n if (fnkeyArrary.length > 1)\n context = getValueByKey(iEngine, fnkeyArrary.slice(0, fnkeyArrary.length - 1).join('.'))\n\n return handleFunction.bind(context)\n}\n\n/**\n * get scene object vertice and triangle\n * @param scene\n * @returns\n */\nexport const getSceneInfo = (scene: Scene) => {\n let objects = 0\n let vertices = 0\n let triangles = 0\n\n for (let i = 0, l = scene.children.length; i < l; i++) {\n const object = scene.children[i]\n\n object.traverseVisible((object) => {\n objects++\n\n // @ts-ignore\n if (object.isMesh || object.isPoints) {\n // @ts-ignore\n const geometry = object.geometry\n\n if (geometry && geometry.attributes.position) {\n vertices += geometry.attributes.position.count\n\n // @ts-ignore\n if (object.isMesh) {\n if (geometry.index !== null)\n\n triangles += geometry.index.count / 3\n\n else\n\n triangles += geometry.attributes.position.count / 3\n }\n }\n }\n })\n }\n\n return {\n objects,\n vertices,\n triangles,\n }\n}\n\nexport const object2Vector3 = (obj: { x: number; y: number; z: number }) => {\n return new Vector3(obj.x, obj.y, obj.z)\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Vector3","messageStatus","MessageType","sendToMessage","getValueByKey","obj","key","undefined","keys","split","middleObj","index","length","currentKey","_typeof","getFnByFnkey","iEngine","fnkey","id","handleFunction","messageType","Api","messageName","status","ModuleNotRegister","code","Error","fnkeyArrary","context","slice","join","bind","getSceneInfo","scene","objects","vertices","triangles","i","l","children","object","traverseVisible","isMesh","isPoints","geometry","attributes","position","count","object2Vector3","x","y","z"],"sources":["../../src/utils/index.ts"],"sourcesContent":["import type { Scene } from '@anov/3d-core'\nimport { Vector3 } from '@anov/3d-core'\nimport type Anov3D from '..'\nimport { messageStatus } from '../messageStatus'\nimport { MessageType, sendToMessage } from './messageFn'\n\ninterface ObjectType {\n [key: string]: any\n\n}\n\n/**\n * get value by key\n * notic: to mark proxy, so need take it layer by layer\n * @param obj\n * @param key\n */\nexport const getValueByKey = <T extends ObjectType>(obj: T, key: string) => {\n if (!key)\n return undefined\n\n const keys = key.split('.')\n let middleObj = obj\n\n for (let index = 0; index < keys.length; index++) {\n const currentKey = keys[index]\n\n if (typeof middleObj === 'object') {\n if (!(currentKey in (middleObj)))\n return undefined\n else\n middleObj = middleObj[currentKey]\n }\n else {\n return undefined\n }\n }\n\n return middleObj\n}\n\n/**\n * getFnByFnkey\n * @param iEngine\n * @param fnkey\n */\nexport const getFnByFnkey = (iEngine: Anov3D, fnkey: string, id: string) => {\n const handleFunction = getValueByKey(iEngine, fnkey) as any\n\n if (typeof handleFunction !== 'function') {\n sendToMessage(\n iEngine,\n {\n messageType: MessageType.Api,\n messageName: fnkey,\n status: messageStatus.ModuleNotRegister.code,\n },\n {\n id,\n },\n )\n throw new Error('this function is not exist')\n }\n\n const fnkeyArrary = fnkey.split('.')\n\n let context: any = iEngine\n\n if (fnkeyArrary.length > 1)\n context = getValueByKey(iEngine, fnkeyArrary.slice(0, fnkeyArrary.length - 1).join('.'))\n\n return handleFunction.bind(context)\n}\n\n/**\n * get scene object vertice and triangle\n * @param scene\n * @returns\n */\nexport const getSceneInfo = (scene: Scene) => {\n let objects = 0\n let vertices = 0\n let triangles = 0\n\n for (let i = 0, l = scene.children.length; i < l; i++) {\n const object = scene.children[i]\n\n object.traverseVisible((object) => {\n objects++\n\n // @ts-ignore\n if (object.isMesh || object.isPoints) {\n // @ts-ignore\n const geometry = object.geometry\n\n if (geometry && geometry.attributes.position) {\n vertices += geometry.attributes.position.count\n\n // @ts-ignore\n if (object.isMesh) {\n if (geometry.index !== null)\n\n triangles += geometry.index.count / 3\n\n else\n\n triangles += geometry.attributes.position.count / 3\n }\n }\n }\n })\n }\n\n return {\n objects,\n vertices,\n triangles,\n }\n}\n\nexport const object2Vector3 = (obj: { x: number; y: number; z: number }) => {\n return new Vector3(obj.x, obj.y, obj.z)\n}\n"],"mappings":"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"}
@@ -5,7 +5,7 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
5
5
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
6
6
  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); }
7
7
  import { v4 as uuidv4 } from 'uuid';
8
- import { utils } from '@anov/3d-core';
8
+ import { SceneControl } from '@anov/3d-core';
9
9
  import { EMessageStatus, codeMessageMap } from "../messageStatus";
10
10
  export var MessageType = /*#__PURE__*/function (MessageType) {
11
11
  MessageType[MessageType["Event"] = 0] = "Event";
@@ -20,13 +20,20 @@ var getResponseMsg = function getResponseMsg(status) {
20
20
 
21
21
  /**
22
22
  * sendToMessage
23
+ * fixme 发送消息是一个同步的操作,用户并不知道消息发送后的状态,应该返回一个 Promise, 发送消息的同时提供 next hook 将会是一个不错的设计
24
+ * fixme sendToMessage 代码中的各处,使得调试变得困难,应该将 sendToMessage 的逻辑抽离出来,提供一个更清晰的接口
25
+ * @param app
23
26
  * @param messageName
24
27
  * @param status
25
28
  * @param res
26
29
  * @returns
27
30
  */
28
- export var sendToMessage = function sendToMessage(messageBody, res) {
31
+ export var sendToMessage = function sendToMessage(app, messageBody, res) {
29
32
  var _res$failMessage, _ref;
33
+ if (!app) {
34
+ console.error('app is undefined');
35
+ return;
36
+ }
30
37
  var messageType = messageBody.messageType,
31
38
  messageName = messageBody.messageName,
32
39
  _messageBody$status = messageBody.status,
@@ -44,9 +51,16 @@ export var sendToMessage = function sendToMessage(messageBody, res) {
44
51
  msg: (_res$failMessage = res === null || res === void 0 ? void 0 : res.failMessage) !== null && _res$failMessage !== void 0 ? _res$failMessage : responseMsg,
45
52
  result: _objectSpread({}, (_ref = res) !== null && _ref !== void 0 ? _ref : {})
46
53
  };
47
- if (messageType === MessageType.Api) utils.emitter.emit('message', response);else if (messageType === MessageType.Event) utils.emitter.emit('event', _objectSpread(_objectSpread({}, response), {}, {
48
- name: "".concat(response.name),
49
- global: global
50
- }));
54
+ if (app instanceof SceneControl) {
55
+ if (messageType === MessageType.Api) app.context.emitter.emit('message', response);else if (messageType === MessageType.Event) app.context.emitter.emit('event', _objectSpread(_objectSpread({}, response), {}, {
56
+ name: "".concat(response.name),
57
+ global: global
58
+ }));
59
+ } else {
60
+ if (messageType === MessageType.Api) app.emit('message', response);else if (messageType === MessageType.Event) app.emit('event', _objectSpread(_objectSpread({}, response), {}, {
61
+ name: "".concat(response.name),
62
+ global: global
63
+ }));
64
+ }
51
65
  };
52
66
  //# sourceMappingURL=messageFn.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["v4","uuidv4","utils","EMessageStatus","codeMessageMap","MessageType","getResponseMsg","status","_codeMessageMap$statu","sendToMessage","messageBody","res","_res$failMessage","_ref","messageType","messageName","_messageBody$status","Success","id","_messageBody$global","global","uid","responseMsg","response","name","code","msg","failMessage","result","_objectSpread","Api","emitter","emit","Event","concat"],"sources":["../../src/utils/messageFn.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid'\nimport { utils } from '@anov/3d-core'\nimport { EMessageStatus, codeMessageMap } from '../messageStatus'\n\nexport enum MessageType {\n Event,\n Api,\n}\n\ntype MessageDataType = {\n messageType: MessageType\n messageName: string\n status?: number\n id?: string\n global?: boolean // is global event, default is true, only for event\n}\n\nconst getResponseMsg = (status: number) => {\n // @ts-ignore\n return codeMessageMap[status] ?? '未知错误'\n}\n\n/**\n * sendToMessage\n * @param messageName\n * @param status\n * @param res\n * @returns\n */\nexport const sendToMessage = (messageBody: MessageDataType, res?: unknown) => {\n const { messageType, messageName, status = EMessageStatus.Success, id, global = true } = messageBody\n\n const uid = uuidv4()\n const responseMsg = getResponseMsg(status)\n\n const response = {\n id: id ?? uid,\n name: messageName,\n code: status,\n // @ts-ignore\n msg: res?.failMessage ?? responseMsg,\n result: {\n ...(res as any ?? {}),\n },\n }\n\n if (messageType === MessageType.Api)\n utils.emitter.emit('message', response)\n else if (messageType === MessageType.Event)\n utils.emitter.emit('event', { ...response, name: `${response.name}`, global })\n}"],"mappings":";;;;;;AAAA,SAASA,EAAE,IAAIC,MAAM,QAAQ,MAAM;AACnC,SAASC,KAAK,QAAQ,eAAe;AACrC,SAASC,cAAc,EAAEC,cAAc;AAEvC,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAavB,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,MAAc,EAAK;EAAA,IAAAC,qBAAA;EACzC;EACA,QAAAA,qBAAA,GAAOJ,cAAc,CAACG,MAAM,CAAC,cAAAC,qBAAA,cAAAA,qBAAA,GAAI,MAAM;AACzC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,WAA4B,EAAEC,GAAa,EAAK;EAAA,IAAAC,gBAAA,EAAAC,IAAA;EAC5E,IAAQC,WAAW,GAAsEJ,WAAW,CAA5FI,WAAW;IAAEC,WAAW,GAAyDL,WAAW,CAA/EK,WAAW;IAAAC,mBAAA,GAAyDN,WAAW,CAAlEH,MAAM;IAANA,MAAM,GAAAS,mBAAA,cAAGb,cAAc,CAACc,OAAO,GAAAD,mBAAA;IAAEE,EAAE,GAAoBR,WAAW,CAAjCQ,EAAE;IAAAC,mBAAA,GAAoBT,WAAW,CAA7BU,MAAM;IAANA,MAAM,GAAAD,mBAAA,cAAG,IAAI,GAAAA,mBAAA;EAEpF,IAAME,GAAG,GAAGpB,MAAM,CAAC,CAAC;EACpB,IAAMqB,WAAW,GAAGhB,cAAc,CAACC,MAAM,CAAC;EAE1C,IAAMgB,QAAQ,GAAG;IACfL,EAAE,EAAEA,EAAE,aAAFA,EAAE,cAAFA,EAAE,GAAIG,GAAG;IACbG,IAAI,EAAET,WAAW;IACjBU,IAAI,EAAElB,MAAM;IACZ;IACAmB,GAAG,GAAAd,gBAAA,GAAED,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEgB,WAAW,cAAAf,gBAAA,cAAAA,gBAAA,GAAIU,WAAW;IACpCM,MAAM,EAAAC,aAAA,MAAAhB,IAAA,GACAF,GAAG,cAAAE,IAAA,cAAAA,IAAA,GAAW,CAAC,CAAC;EAExB,CAAC;EAED,IAAIC,WAAW,KAAKT,WAAW,CAACyB,GAAG,EACjC5B,KAAK,CAAC6B,OAAO,CAACC,IAAI,CAAC,SAAS,EAAET,QAAQ,CAAC,MACpC,IAAIT,WAAW,KAAKT,WAAW,CAAC4B,KAAK,EACxC/B,KAAK,CAAC6B,OAAO,CAACC,IAAI,CAAC,OAAO,EAAAH,aAAA,CAAAA,aAAA,KAAON,QAAQ;IAAEC,IAAI,KAAAU,MAAA,CAAKX,QAAQ,CAACC,IAAI,CAAE;IAAEJ,MAAM,EAANA;EAAM,EAAE,CAAC;AAClF,CAAC"}
1
+ {"version":3,"names":["v4","uuidv4","SceneControl","EMessageStatus","codeMessageMap","MessageType","getResponseMsg","status","_codeMessageMap$statu","sendToMessage","app","messageBody","res","_res$failMessage","_ref","console","error","messageType","messageName","_messageBody$status","Success","id","_messageBody$global","global","uid","responseMsg","response","name","code","msg","failMessage","result","_objectSpread","Api","context","emitter","emit","Event","concat"],"sources":["../../src/utils/messageFn.ts"],"sourcesContent":["import { v4 as uuidv4 } from 'uuid'\nimport { SceneControl } from '@anov/3d-core'\nimport type Anov3D from '../sdkEntry'\nimport { EMessageStatus, codeMessageMap } from '../messageStatus'\n\nexport enum MessageType {\n Event,\n Api,\n}\n\ntype MessageDataType = {\n messageType: MessageType\n messageName: string\n status?: number\n id?: string\n global?: boolean // is global event, default is true, only for event\n}\n\nconst getResponseMsg = (status: number) => {\n // @ts-ignore\n return codeMessageMap[status] ?? '未知错误'\n}\n\n/**\n * sendToMessage\n * fixme 发送消息是一个同步的操作,用户并不知道消息发送后的状态,应该返回一个 Promise, 发送消息的同时提供 next hook 将会是一个不错的设计\n * fixme sendToMessage 代码中的各处,使得调试变得困难,应该将 sendToMessage 的逻辑抽离出来,提供一个更清晰的接口\n * @param app\n * @param messageName\n * @param status\n * @param res\n * @returns\n */\nexport const sendToMessage = (app: Anov3D | SceneControl, messageBody: MessageDataType, res?: unknown) => {\n if(!app){\n console.error('app is undefined')\n return\n }\n const { messageType, messageName, status = EMessageStatus.Success, id, global = true } = messageBody\n\n const uid = uuidv4()\n const responseMsg = getResponseMsg(status)\n\n const response = {\n id: id ?? uid,\n name: messageName,\n code: status,\n // @ts-ignore\n msg: res?.failMessage ?? responseMsg,\n result: {\n ...(res as any ?? {}),\n },\n }\n\n if (app instanceof SceneControl) {\n if (messageType === MessageType.Api)\n app.context.emitter.emit('message', response)\n else if (messageType === MessageType.Event)\n app.context.emitter.emit('event', { ...response, name: `${response.name}`, global })\n }\n else {\n if (messageType === MessageType.Api)\n app.emit('message', response)\n else if (messageType === MessageType.Event)\n app.emit('event', { ...response, name: `${response.name}`, global })\n }\n}\n"],"mappings":";;;;;;AAAA,SAASA,EAAE,IAAIC,MAAM,QAAQ,MAAM;AACnC,SAASC,YAAY,QAAQ,eAAe;AAE5C,SAASC,cAAc,EAAEC,cAAc;AAEvC,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAavB,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAIC,MAAc,EAAK;EAAA,IAAAC,qBAAA;EACzC;EACA,QAAAA,qBAAA,GAAOJ,cAAc,CAACG,MAAM,CAAC,cAAAC,qBAAA,cAAAA,qBAAA,GAAI,MAAM;AACzC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,GAA0B,EAAEC,WAA4B,EAAEC,GAAa,EAAK;EAAA,IAAAC,gBAAA,EAAAC,IAAA;EACxG,IAAG,CAACJ,GAAG,EAAC;IACNK,OAAO,CAACC,KAAK,CAAC,kBAAkB,CAAC;IACjC;EACF;EACA,IAAQC,WAAW,GAAsEN,WAAW,CAA5FM,WAAW;IAAEC,WAAW,GAAyDP,WAAW,CAA/EO,WAAW;IAAAC,mBAAA,GAAyDR,WAAW,CAAlEJ,MAAM;IAANA,MAAM,GAAAY,mBAAA,cAAGhB,cAAc,CAACiB,OAAO,GAAAD,mBAAA;IAAEE,EAAE,GAAoBV,WAAW,CAAjCU,EAAE;IAAAC,mBAAA,GAAoBX,WAAW,CAA7BY,MAAM;IAANA,MAAM,GAAAD,mBAAA,cAAG,IAAI,GAAAA,mBAAA;EAEpF,IAAME,GAAG,GAAGvB,MAAM,CAAC,CAAC;EACpB,IAAMwB,WAAW,GAAGnB,cAAc,CAACC,MAAM,CAAC;EAE1C,IAAMmB,QAAQ,GAAG;IACfL,EAAE,EAAEA,EAAE,aAAFA,EAAE,cAAFA,EAAE,GAAIG,GAAG;IACbG,IAAI,EAAET,WAAW;IACjBU,IAAI,EAAErB,MAAM;IACZ;IACAsB,GAAG,GAAAhB,gBAAA,GAAED,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAEkB,WAAW,cAAAjB,gBAAA,cAAAA,gBAAA,GAAIY,WAAW;IACpCM,MAAM,EAAAC,aAAA,MAAAlB,IAAA,GACAF,GAAG,cAAAE,IAAA,cAAAA,IAAA,GAAW,CAAC,CAAC;EAExB,CAAC;EAED,IAAIJ,GAAG,YAAYR,YAAY,EAAE;IAC/B,IAAIe,WAAW,KAAKZ,WAAW,CAAC4B,GAAG,EACjCvB,GAAG,CAACwB,OAAO,CAACC,OAAO,CAACC,IAAI,CAAC,SAAS,EAAEV,QAAQ,CAAC,MAC1C,IAAIT,WAAW,KAAKZ,WAAW,CAACgC,KAAK,EACxC3B,GAAG,CAACwB,OAAO,CAACC,OAAO,CAACC,IAAI,CAAC,OAAO,EAAAJ,aAAA,CAAAA,aAAA,KAAON,QAAQ;MAAEC,IAAI,KAAAW,MAAA,CAAKZ,QAAQ,CAACC,IAAI,CAAE;MAAEJ,MAAM,EAANA;IAAM,EAAE,CAAC;EACxF,CAAC,MACI;IACH,IAAIN,WAAW,KAAKZ,WAAW,CAAC4B,GAAG,EACjCvB,GAAG,CAAC0B,IAAI,CAAC,SAAS,EAAEV,QAAQ,CAAC,MAC1B,IAAIT,WAAW,KAAKZ,WAAW,CAACgC,KAAK,EACxC3B,GAAG,CAAC0B,IAAI,CAAC,OAAO,EAAAJ,aAAA,CAAAA,aAAA,KAAON,QAAQ;MAAEC,IAAI,KAAAW,MAAA,CAAKZ,QAAQ,CAACC,IAAI,CAAE;MAAEJ,MAAM,EAANA;IAAM,EAAE,CAAC;EACxE;AACF,CAAC"}