mcp-server-wom-call 0.0.6 → 0.0.8

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esb.service.d.ts","sourceRoot":"","sources":["../../src/services/esb.service.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE;QACT,WAAW,CAAC,EAAE;YACZ,OAAO,EAAE,OAAO,CAAA;YAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SACnB,CAAA;QACD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;IACD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,OAAO,EAAE,IAAI,CAAA;IACb,IAAI,EAAE,WAAW,CAAA;CAClB;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,OAAO,EAAE,KAAK,CAAA;IACd,KAAK,EAAE,KAAK,CAAA;CACb;AAED;;GAEG;AACH,KAAK,UAAU,GAAG,iBAAiB,GAAG,iBAAiB,CAAA;AAEvD;;GAEG;AACH,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GACxB,KAAK,MAAM,EACX,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EACrC,aAAY,MAAU,EACtB,SAAS,WAAW,KACnB,OAAO,CAAC,UAAU,CA0CpB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ESBProtocolBuilder.d.ts","sourceRoot":"","sources":["../../src/utils/ESBProtocolBuilder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,UAAU,QAAQ;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,UAAU,UAAU;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,UAAU,EAAE,CAAA;CAC7B;AAED,UAAU,WAAW;IACnB,QAAQ,EAAE;QACR,IAAI,EAAE,aAAa,CAAA;KACpB,CAAA;IACD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,UAAU;IAClB,OAAO,EAAE;QACP,SAAS,EAAE,QAAQ,CAAA;QACnB,YAAY,EAAE,WAAW,CAAA;KAC1B,CAAA;CACF;AAID,cAAM,kBAAkB;IACtB,OAAO,CAAC,OAAO,CAAY;;IAgC3B;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,kBAAkB;IAQzD;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB;IAK3C;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB;IAK/C;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IAKjD;;;;OAIG;IACH,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,kBAAkB;IAK3D;;;OAGG;IACH,qBAAqB,IAAI,kBAAkB;IAM3C;;;;OAIG;IACH,gBAAgB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,kBAAkB;IAM5D;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IAKjD;;;;OAIG;IACH,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,kBAAkB;IAM7D;;;;OAIG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB;IAKvD;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB;IAK/C;;;;OAIG;IACH,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,kBAAkB;IAM7C;;;;;OAKG;IACH,aAAa,CACX,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,GACrB,kBAAkB;IAWrB;;;;OAIG;IACH,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,kBAAkB;IAO7D;;;;OAIG;IACH,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,kBAAkB;IAK7D;;;OAGG;IACH,gBAAgB,IAAI,kBAAkB;IAKtC;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB;IAMnD;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,kBAAkB;IAK9D;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,kBAAkB;IAK5D;;;;OAIG;IACH,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,kBAAkB;IAQlE;;;OAGG;IACH,KAAK,IAAI,UAAU;IAenB;;;;OAIG;IACH,SAAS,CAAC,MAAM,GAAE,OAAe,GAAG,MAAM;IAI1C;;;OAGG;IACH,KAAK,IAAI,kBAAkB;IAM3B;;;OAGG;IACH,OAAO,IAAI,UAAU;IAIrB;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAQrB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;CAYpB;AAGD,eAAe,kBAAkB,CAAA;AAGjC,OAAO,EAAE,kBAAkB,EAAE,CAAA;AAE7B,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/utils/http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,KAAG,OAAO,CAAC,IAAI,CACI,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,KAAK,MAAM,EACX,SAAS,WAAW,YAAK,EACzB,SAAS,MAAM,KACd,OAAO,CAAC,QAAQ,CAelB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-server-wom-call",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "MCP Server for Work Order Management System Integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -13,8 +13,8 @@
13
13
  "LICENSE"
14
14
  ],
15
15
  "scripts": {
16
- "build": "tsc && node scripts/postbuild.js",
17
- "dev": "tsc --watch",
16
+ "build": "rollup -c",
17
+ "dev": "rollup -c -w",
18
18
  "start": "node dist/index.js",
19
19
  "prepublishOnly": "npm run build",
20
20
  "test:local": "node dist/index.js"
@@ -28,14 +28,24 @@
28
28
  "esb",
29
29
  "model-context-protocol"
30
30
  ],
31
- "author": "Your Name",
31
+ "author": "Twyford Ltd.",
32
32
  "license": "MIT",
33
33
  "dependencies": {
34
34
  "@modelcontextprotocol/sdk": "^1.0.1",
35
35
  "dotenv": "^16.0.0"
36
36
  },
37
37
  "devDependencies": {
38
+ "@rollup/plugin-commonjs": "^29.0.0",
39
+ "@rollup/plugin-json": "^6.1.0",
40
+ "@rollup/plugin-node-resolve": "^16.0.3",
41
+ "@rollup/plugin-replace": "^6.0.3",
42
+ "@rollup/plugin-terser": "^0.4.4",
43
+ "@rollup/plugin-typescript": "^12.3.0",
38
44
  "@types/node": "^20.0.0",
45
+ "add": "^2.0.6",
46
+ "rollup": "^4.53.5",
47
+ "rollup-plugin-delete": "^3.0.2",
48
+ "tslib": "^2.8.1",
39
49
  "typescript": "^5.0.0"
40
50
  },
41
51
  "engines": {
@@ -1,39 +0,0 @@
1
- import { fetchWithTimeout, delay } from '@/utils/http';
2
- /**
3
- * 带重试的 HTTP 调用
4
- * @param url 请求地址
5
- * @param payload 请求体(对象或字符串)
6
- * @param retryTimes 重试次数
7
- * @param config 配置对象(包含 retryDelay)
8
- * @returns 调用结果
9
- */
10
- export const callWithRetry = async (url, payload, retryTimes = 1, config) => {
11
- let lastError = new Error('Unknown error');
12
- for (let i = 0; i < retryTimes; i++) {
13
- try {
14
- const bodyContent = typeof payload === 'string' ? payload : JSON.stringify(payload);
15
- const response = await fetchWithTimeout(url, {
16
- method: 'POST',
17
- headers: { 'Content-Type': 'application/json; charset=utf-8' },
18
- body: bodyContent
19
- }, 5000 // 5e3 改为更清晰的 5000
20
- );
21
- if (!response.ok) {
22
- const errorText = await response.text();
23
- throw new Error(`ESB returned status ${response.status}: ${errorText}`);
24
- }
25
- const result = await response.json();
26
- if (!result?.RESPONSE?.RETURN_DATA?.success) {
27
- throw new Error(`ESB business error: ${JSON.stringify(result, null, 2)}`);
28
- }
29
- return { success: true, data: result };
30
- }
31
- catch (error) {
32
- lastError = error instanceof Error ? error : new Error(String(error));
33
- if (i < retryTimes - 1 && config?.retryDelay) {
34
- await delay(config.retryDelay * (i + 1));
35
- }
36
- }
37
- }
38
- return { success: false, error: lastError };
39
- };
@@ -1,9 +0,0 @@
1
- /**
2
- * MCP Server - Work Order Management (WOM) Ticket Creator
3
- * 用于自动化创建运维工单的 MCP 服务器
4
- *
5
- * @author Your Name
6
- * @version <% process.env.version %>
7
- */
8
- import 'dotenv/config';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,eAAe,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"esb.service.d.ts","sourceRoot":"","sources":["../../../src/services/esb.service.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,UAAU,WAAW;IACnB,QAAQ,CAAC,EAAE;QACT,WAAW,CAAC,EAAE;YACZ,OAAO,EAAE,OAAO,CAAA;YAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SACnB,CAAA;QACD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;IACD,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,OAAO,EAAE,IAAI,CAAA;IACb,IAAI,EAAE,WAAW,CAAA;CAClB;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,OAAO,EAAE,KAAK,CAAA;IACd,KAAK,EAAE,KAAK,CAAA;CACb;AAED;;GAEG;AACH,KAAK,UAAU,GAAG,iBAAiB,GAAG,iBAAiB,CAAA;AAEvD;;GAEG;AACH,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GACxB,KAAK,MAAM,EACX,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EACrC,aAAY,MAAU,EACtB,SAAS,WAAW,KACnB,OAAO,CAAC,UAAU,CA0CpB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ESBProtocolBuilder.d.ts","sourceRoot":"","sources":["../../../src/utils/ESBProtocolBuilder.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/utils/http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,KAAK,GAAI,IAAI,MAAM,KAAG,OAAO,CAAC,IAAI,CACI,CAAA;AAEnD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,KAAK,MAAM,EACX,SAAS,WAAW,YAAK,EACzB,SAAS,MAAM,KACd,OAAO,CAAC,QAAQ,CAelB,CAAA"}
@@ -1,319 +0,0 @@
1
- /**
2
- * ESB 协议构造器
3
- * 用于构建符合 ESB 规范的请求数据格式
4
- * Node.js 环境
5
- */
6
- // ============ 主类 ============
7
- class ESBProtocolBuilder {
8
- request;
9
- constructor() {
10
- this.request = {
11
- REQUEST: {
12
- ESB_ATTRS: {
13
- App_ID: 'VOSA',
14
- Target_ID: 'WOMS',
15
- Application_ID: '00020000000002',
16
- Transaction_ID: ''
17
- },
18
- REQUEST_DATA: {
19
- SendData: {
20
- Head: {
21
- jobTitle: '',
22
- businessSystem: '',
23
- proposeUser: '',
24
- jobDesc: '',
25
- fbk13: '',
26
- eventId: '',
27
- attachmentList: []
28
- }
29
- },
30
- SendHead: {},
31
- SendURL: {},
32
- Operation: 'Z_WORK_ORDER_CREATE_NEW',
33
- Type: 'Z_WORK_ORDER_CREATE_NEW'
34
- }
35
- }
36
- };
37
- }
38
- /**
39
- * 设置 ESB 属性
40
- * @param attrs - ESB 属性对象
41
- * @returns {ESBProtocolBuilder}
42
- */
43
- setESBAttrs(attrs) {
44
- this.request.REQUEST.ESB_ATTRS = {
45
- ...this.request.REQUEST.ESB_ATTRS,
46
- ...attrs
47
- };
48
- return this;
49
- }
50
- /**
51
- * 设置 App ID
52
- * @param appId
53
- * @returns {ESBProtocolBuilder}
54
- */
55
- setAppId(appId) {
56
- this.request.REQUEST.ESB_ATTRS.App_ID = appId;
57
- return this;
58
- }
59
- /**
60
- * 设置 Event ID
61
- * @param eventId
62
- * @returns {ESBProtocolBuilder}
63
- */
64
- setEventId(eventId) {
65
- this.request.REQUEST.REQUEST_DATA.SendData.Head.eventId = eventId;
66
- return this;
67
- }
68
- /**
69
- * 设置 Target ID
70
- * @param targetId
71
- * @returns {ESBProtocolBuilder}
72
- */
73
- setTargetId(targetId) {
74
- this.request.REQUEST.ESB_ATTRS.Target_ID = targetId;
75
- return this;
76
- }
77
- /**
78
- * 设置 Application ID
79
- * @param applicationId
80
- * @returns {ESBProtocolBuilder}
81
- */
82
- setApplicationId(applicationId) {
83
- this.request.REQUEST.ESB_ATTRS.Application_ID = applicationId;
84
- return this;
85
- }
86
- /**
87
- * 生成新的 Application ID
88
- * @returns {ESBProtocolBuilder}
89
- */
90
- generateApplicationId() {
91
- this.request.REQUEST.ESB_ATTRS.Application_ID =
92
- this._generateApplicationId();
93
- return this;
94
- }
95
- /**
96
- * 设置或生成 Transaction ID
97
- * @param transactionId - 如果不提供则自动生成
98
- * @returns {ESBProtocolBuilder}
99
- */
100
- setTransactionId(transactionId) {
101
- this.request.REQUEST.ESB_ATTRS.Transaction_ID =
102
- transactionId || this._generateUUID();
103
- return this;
104
- }
105
- /**
106
- * 设置工单标题
107
- * @param jobTitle
108
- * @returns {ESBProtocolBuilder}
109
- */
110
- setJobTitle(jobTitle) {
111
- this.request.REQUEST.REQUEST_DATA.SendData.Head.jobTitle = jobTitle;
112
- return this;
113
- }
114
- /**
115
- * 设置业务系统
116
- * @param businessSystem
117
- * @returns {ESBProtocolBuilder}
118
- */
119
- setBusinessSystem(businessSystem) {
120
- this.request.REQUEST.REQUEST_DATA.SendData.Head.businessSystem =
121
- businessSystem;
122
- return this;
123
- }
124
- /**
125
- * 设置报单人员工号
126
- * @param proposeUser
127
- * @returns {ESBProtocolBuilder}
128
- */
129
- setProposeUser(proposeUser) {
130
- this.request.REQUEST.REQUEST_DATA.SendData.Head.proposeUser = proposeUser;
131
- return this;
132
- }
133
- /**
134
- * 设置工单详细描述
135
- * @param jobDesc
136
- * @returns {ESBProtocolBuilder}
137
- */
138
- setJobDesc(jobDesc) {
139
- this.request.REQUEST.REQUEST_DATA.SendData.Head.jobDesc = jobDesc;
140
- return this;
141
- }
142
- /**
143
- * 设置时间戳(自动格式化为 yyyy-MM-dd HH:mm:ss)
144
- * @param date - 如果不提供则使用当前时间
145
- * @returns {ESBProtocolBuilder}
146
- */
147
- setTimestamp(date) {
148
- const d = date || new Date();
149
- this.request.REQUEST.REQUEST_DATA.SendData.Head.fbk13 = this._formatDate(d);
150
- return this;
151
- }
152
- /**
153
- * 添加单个附件
154
- * @param attachmentName - 文件名称
155
- * @param attachmentDesc - 文件路径
156
- * @returns {ESBProtocolBuilder}
157
- */
158
- addAttachment(attachmentName, attachmentDesc) {
159
- if (!this.request.REQUEST.REQUEST_DATA.SendData.Head.attachmentList) {
160
- this.request.REQUEST.REQUEST_DATA.SendData.Head.attachmentList = [];
161
- }
162
- this.request.REQUEST.REQUEST_DATA.SendData.Head.attachmentList.push({
163
- attachmentName,
164
- attachmentDesc
165
- });
166
- return this;
167
- }
168
- /**
169
- * 批量添加附件
170
- * @param attachments
171
- * @returns {ESBProtocolBuilder}
172
- */
173
- addAttachments(attachments) {
174
- attachments.forEach((att) => {
175
- this.addAttachment(att.attachmentName, att.attachmentDesc);
176
- });
177
- return this;
178
- }
179
- /**
180
- * 设置附件列表(覆盖现有)
181
- * @param attachments
182
- * @returns {ESBProtocolBuilder}
183
- */
184
- setAttachments(attachments) {
185
- this.request.REQUEST.REQUEST_DATA.SendData.Head.attachmentList = attachments;
186
- return this;
187
- }
188
- /**
189
- * 清空附件列表
190
- * @returns {ESBProtocolBuilder}
191
- */
192
- clearAttachments() {
193
- this.request.REQUEST.REQUEST_DATA.SendData.Head.attachmentList = [];
194
- return this;
195
- }
196
- /**
197
- * 设置操作类型
198
- * @param operation
199
- * @returns {ESBProtocolBuilder}
200
- */
201
- setOperation(operation) {
202
- this.request.REQUEST.REQUEST_DATA.Operation = operation;
203
- this.request.REQUEST.REQUEST_DATA.Type = operation;
204
- return this;
205
- }
206
- /**
207
- * 设置 SendHead
208
- * @param sendHead
209
- * @returns {ESBProtocolBuilder}
210
- */
211
- setSendHead(sendHead) {
212
- this.request.REQUEST.REQUEST_DATA.SendHead = sendHead;
213
- return this;
214
- }
215
- /**
216
- * 设置 SendURL
217
- * @param sendURL
218
- * @returns {ESBProtocolBuilder}
219
- */
220
- setSendURL(sendURL) {
221
- this.request.REQUEST.REQUEST_DATA.SendURL = sendURL;
222
- return this;
223
- }
224
- /**
225
- * 设置完整的工单头部信息
226
- * @param head - 工单头部对象
227
- * @returns {ESBProtocolBuilder}
228
- */
229
- setWorkOrderHead(head) {
230
- this.request.REQUEST.REQUEST_DATA.SendData.Head = {
231
- ...this.request.REQUEST.REQUEST_DATA.SendData.Head,
232
- ...head
233
- };
234
- return this;
235
- }
236
- /**
237
- * 构建并返回最终的请求对象
238
- * @returns {ESBRequest}
239
- */
240
- build() {
241
- // 如果没有设置 Transaction_ID,自动生成一个
242
- if (!this.request.REQUEST.ESB_ATTRS.Transaction_ID) {
243
- this.setTransactionId();
244
- }
245
- // 如果没有设置时间戳,自动设置当前时间
246
- if (!this.request.REQUEST.REQUEST_DATA.SendData.Head.fbk13) {
247
- this.setTimestamp();
248
- }
249
- // 深拷贝返回,避免外部修改影响构造器
250
- return JSON.parse(JSON.stringify(this.request));
251
- }
252
- /**
253
- * 构建并返回 JSON 字符串
254
- * @param pretty - 是否格式化输出
255
- * @returns {string}
256
- */
257
- buildJSON(pretty = false) {
258
- return JSON.stringify(this.build(), null, pretty ? 2 : 0);
259
- }
260
- /**
261
- * 重置构造器到初始状态
262
- * @returns {ESBProtocolBuilder}
263
- */
264
- reset() {
265
- const newBuilder = new ESBProtocolBuilder();
266
- this.request = newBuilder.request;
267
- return this;
268
- }
269
- /**
270
- * 获取当前构造的数据
271
- * @returns {ESBRequest}
272
- */
273
- getData() {
274
- return JSON.parse(JSON.stringify(this.request));
275
- }
276
- /**
277
- * 生成 Application ID(日期 + 流水号)
278
- * 格式:YYYYMMDD + 6位随机数字
279
- * 示例:202411180123456
280
- * @private
281
- * @returns {string}
282
- */
283
- _generateApplicationId() {
284
- const now = new Date();
285
- const dateStr = `${now.getFullYear()}${String(now.getMonth() + 1).padStart(2, '0')}${String(now.getDate()).padStart(2, '0')}`;
286
- // 生成流水号
287
- const serialNumber = Math.floor(Math.random() * 1000000)
288
- .toString()
289
- .padStart(6, '0');
290
- return `${dateStr}${serialNumber}`;
291
- }
292
- /**
293
- * 生成 UUID v4
294
- * @private
295
- * @returns {string}
296
- */
297
- _generateUUID() {
298
- return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
299
- const r = (Math.random() * 16) | 0;
300
- const v = c === 'x' ? r : (r & 0x3) | 0x8;
301
- return v.toString(16);
302
- });
303
- }
304
- /**
305
- * 格式化日期为 yyyy-MM-dd HH:mm:ss
306
- * @private
307
- * @param date
308
- * @returns {string}
309
- */
310
- _formatDate(date) {
311
- const pad = (n) => n.toString().padStart(2, '0');
312
- return (`${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ` +
313
- `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`);
314
- }
315
- }
316
- // ============ 导出 ============
317
- export default ESBProtocolBuilder;
318
- // 同时支持命名导出
319
- export { ESBProtocolBuilder };
@@ -1,29 +0,0 @@
1
- /**
2
- * 延迟函数
3
- * @param ms 延迟的毫秒数
4
- * @returns Promise
5
- */
6
- export const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
7
- /**
8
- * 带超时的 fetch
9
- * @param url 请求地址
10
- * @param options fetch 配置项
11
- * @param timeout 超时时间(毫秒)
12
- * @returns Promise<Response>
13
- */
14
- export const fetchWithTimeout = async (url, options = {}, timeout) => {
15
- const controller = new AbortController();
16
- const timeoutId = setTimeout(() => controller.abort(), timeout);
17
- try {
18
- const response = await fetch(url, {
19
- ...options,
20
- signal: controller.signal
21
- });
22
- clearTimeout(timeoutId);
23
- return response;
24
- }
25
- catch (error) {
26
- clearTimeout(timeoutId);
27
- throw error;
28
- }
29
- };
File without changes