shellx-ai 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +162 -586
- package/dist/automation/element-finder.d.ts +0 -8
- package/dist/automation/element-finder.js +0 -7
- package/dist/automation/element-finder.js.map +1 -1
- package/dist/automation/ui-action-handler.d.ts +1 -1
- package/dist/automation/ui-action-handler.js +58 -31
- package/dist/automation/ui-action-handler.js.map +1 -1
- package/dist/cbor-compat.js +9 -11
- package/dist/cbor-compat.js.map +1 -1
- package/dist/data/index.d.ts +9 -0
- package/dist/data/index.js +11 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/types.d.ts +351 -0
- package/dist/data/types.js +8 -0
- package/dist/data/types.js.map +1 -0
- package/dist/domain-manager.js +15 -13
- package/dist/domain-manager.js.map +1 -1
- package/dist/error-handler.js +5 -2
- package/dist/error-handler.js.map +1 -1
- package/dist/errors.js +4 -2
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +36 -26
- package/dist/index.js +197 -86
- package/dist/index.js.map +1 -1
- package/dist/protocol.d.ts +27 -5
- package/dist/shellx.d.ts +139 -56
- package/dist/shellx.js +201 -88
- package/dist/shellx.js.map +1 -1
- package/dist/types.d.ts +38 -1
- package/dist/utils/retry-helper.js +5 -2
- package/dist/utils/retry-helper.js.map +1 -1
- package/dist/utils.js +6 -3
- package/dist/utils.js.map +1 -1
- package/package.json +25 -4
- package/dist/shell/output-buffer.d.ts +0 -152
- package/dist/shell/output-buffer.js +0 -163
- package/dist/shell/output-buffer.js.map +0 -1
- package/dist/shell/shell-command-executor.d.ts +0 -182
- package/dist/shell/shell-command-executor.js +0 -348
- package/dist/shell/shell-command-executor.js.map +0 -1
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data Module Types
|
|
3
|
+
*
|
|
4
|
+
* 类型定义用于 ShellX SDK 的 data 模块
|
|
5
|
+
* 提供对 Android 系统数据的访问接口
|
|
6
|
+
*/
|
|
7
|
+
export interface AddAlarmRequest {
|
|
8
|
+
hour: number;
|
|
9
|
+
minute: number;
|
|
10
|
+
repeatDays?: number[];
|
|
11
|
+
label?: string;
|
|
12
|
+
enabled?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface AddAlarmResponse {
|
|
15
|
+
success: boolean;
|
|
16
|
+
timestamp: number;
|
|
17
|
+
errorMessage?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface DeleteAlarmRequest {
|
|
20
|
+
hour: number;
|
|
21
|
+
minute: number;
|
|
22
|
+
}
|
|
23
|
+
export interface DeleteAlarmResponse {
|
|
24
|
+
success: boolean;
|
|
25
|
+
timestamp: number;
|
|
26
|
+
errorMessage?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface GetAlarmListRequest {
|
|
29
|
+
includeDisabled?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface AlarmInfo {
|
|
32
|
+
hour: number;
|
|
33
|
+
minute: number;
|
|
34
|
+
repeatDays: number[];
|
|
35
|
+
label: string;
|
|
36
|
+
enabled: boolean;
|
|
37
|
+
nextTriggerTime: number;
|
|
38
|
+
}
|
|
39
|
+
export interface GetAlarmListResponse {
|
|
40
|
+
success: boolean;
|
|
41
|
+
total: number;
|
|
42
|
+
alarms: AlarmInfo[];
|
|
43
|
+
timestamp: number;
|
|
44
|
+
errorMessage?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface LaunchAppRequest {
|
|
47
|
+
packageName: string;
|
|
48
|
+
launchDuration?: number;
|
|
49
|
+
}
|
|
50
|
+
export interface LaunchAppResponse {
|
|
51
|
+
success: boolean;
|
|
52
|
+
packageName: string;
|
|
53
|
+
launchDuration: number;
|
|
54
|
+
timestamp: number;
|
|
55
|
+
errorMessage?: string;
|
|
56
|
+
}
|
|
57
|
+
export interface ExitAppRequest {
|
|
58
|
+
packageName: string;
|
|
59
|
+
}
|
|
60
|
+
export interface ExitAppResponse {
|
|
61
|
+
success: boolean;
|
|
62
|
+
packageName: string;
|
|
63
|
+
timestamp: number;
|
|
64
|
+
errorMessage?: string;
|
|
65
|
+
}
|
|
66
|
+
export interface InstallAppRequest {
|
|
67
|
+
appName: string;
|
|
68
|
+
packageName?: string;
|
|
69
|
+
downloadUrl?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface InstallAppResponse {
|
|
72
|
+
success: boolean;
|
|
73
|
+
appName: string;
|
|
74
|
+
packageName?: string;
|
|
75
|
+
message?: string;
|
|
76
|
+
timestamp: number;
|
|
77
|
+
errorMessage?: string;
|
|
78
|
+
}
|
|
79
|
+
export interface UninstallAppRequest {
|
|
80
|
+
packageName: string;
|
|
81
|
+
}
|
|
82
|
+
export interface UninstallAppResponse {
|
|
83
|
+
success: boolean;
|
|
84
|
+
packageName: string;
|
|
85
|
+
timestamp: number;
|
|
86
|
+
errorMessage?: string;
|
|
87
|
+
}
|
|
88
|
+
export interface GetAppInfoRequest {
|
|
89
|
+
packageName: string;
|
|
90
|
+
}
|
|
91
|
+
export interface GetAppInfoResponse {
|
|
92
|
+
success: boolean;
|
|
93
|
+
packageName: string;
|
|
94
|
+
appName?: string;
|
|
95
|
+
versionName?: string;
|
|
96
|
+
versionCode?: number;
|
|
97
|
+
activities?: string[];
|
|
98
|
+
permissions?: string[];
|
|
99
|
+
isSystemApp?: boolean;
|
|
100
|
+
isRunning?: boolean;
|
|
101
|
+
foregroundActivity?: string;
|
|
102
|
+
timestamp: number;
|
|
103
|
+
errorMessage?: string;
|
|
104
|
+
}
|
|
105
|
+
export interface GetAppListRequest {
|
|
106
|
+
includeSystemApps?: boolean;
|
|
107
|
+
includeRunningOnly?: boolean;
|
|
108
|
+
limit?: number;
|
|
109
|
+
offset?: number;
|
|
110
|
+
}
|
|
111
|
+
export interface AppListInfo {
|
|
112
|
+
packageName: string;
|
|
113
|
+
appName: string;
|
|
114
|
+
versionName: string;
|
|
115
|
+
versionCode: number;
|
|
116
|
+
isSystemApp: boolean;
|
|
117
|
+
isRunning: boolean;
|
|
118
|
+
}
|
|
119
|
+
export interface GetAppListResponse {
|
|
120
|
+
success: boolean;
|
|
121
|
+
total: number;
|
|
122
|
+
apps: AppListInfo[];
|
|
123
|
+
timestamp: number;
|
|
124
|
+
errorMessage?: string;
|
|
125
|
+
}
|
|
126
|
+
export interface GetCalendarListRequest {
|
|
127
|
+
}
|
|
128
|
+
export interface CalendarInfo {
|
|
129
|
+
id: string;
|
|
130
|
+
name: string;
|
|
131
|
+
accountName: string;
|
|
132
|
+
color?: string;
|
|
133
|
+
visible?: boolean;
|
|
134
|
+
syncStatus?: string;
|
|
135
|
+
}
|
|
136
|
+
export interface GetCalendarListResponse {
|
|
137
|
+
success: boolean;
|
|
138
|
+
calendars: CalendarInfo[];
|
|
139
|
+
timestamp: number;
|
|
140
|
+
errorMessage?: string;
|
|
141
|
+
}
|
|
142
|
+
export interface GetCalendarEventRequest {
|
|
143
|
+
calendarId?: string;
|
|
144
|
+
startDate?: number;
|
|
145
|
+
endDate?: number;
|
|
146
|
+
limit?: number;
|
|
147
|
+
}
|
|
148
|
+
export interface CalendarEvent {
|
|
149
|
+
id: string;
|
|
150
|
+
calendarId: string;
|
|
151
|
+
title: string;
|
|
152
|
+
description?: string;
|
|
153
|
+
location?: string;
|
|
154
|
+
startTime: number;
|
|
155
|
+
endTime: number;
|
|
156
|
+
allDay?: boolean;
|
|
157
|
+
}
|
|
158
|
+
export interface GetCalendarEventResponse {
|
|
159
|
+
success: boolean;
|
|
160
|
+
events: CalendarEvent[];
|
|
161
|
+
timestamp: number;
|
|
162
|
+
errorMessage?: string;
|
|
163
|
+
}
|
|
164
|
+
export interface GetCalendarDetailRequest {
|
|
165
|
+
eventId: string;
|
|
166
|
+
}
|
|
167
|
+
export interface GetCalendarDetailResponse {
|
|
168
|
+
success: boolean;
|
|
169
|
+
event?: CalendarEvent;
|
|
170
|
+
timestamp: number;
|
|
171
|
+
errorMessage?: string;
|
|
172
|
+
}
|
|
173
|
+
export interface AddCalendarEventRequest {
|
|
174
|
+
title: string;
|
|
175
|
+
description?: string;
|
|
176
|
+
location?: string;
|
|
177
|
+
startTime: number;
|
|
178
|
+
endTime: number;
|
|
179
|
+
allDay?: boolean;
|
|
180
|
+
calendarId?: string;
|
|
181
|
+
reminders?: CalendarEventReminder[];
|
|
182
|
+
attendees?: CalendarEventAttendee[];
|
|
183
|
+
recurrence?: string;
|
|
184
|
+
timezone?: string;
|
|
185
|
+
}
|
|
186
|
+
export interface CalendarEventReminder {
|
|
187
|
+
method: number;
|
|
188
|
+
minutes: number;
|
|
189
|
+
}
|
|
190
|
+
export interface CalendarEventAttendee {
|
|
191
|
+
name: string;
|
|
192
|
+
email: string;
|
|
193
|
+
}
|
|
194
|
+
export interface AddCalendarEventResponse {
|
|
195
|
+
success: boolean;
|
|
196
|
+
eventId?: string;
|
|
197
|
+
startTime?: number;
|
|
198
|
+
endTime?: number;
|
|
199
|
+
timestamp: number;
|
|
200
|
+
errorMessage?: string;
|
|
201
|
+
}
|
|
202
|
+
export interface GetCallsRequest {
|
|
203
|
+
limit?: number;
|
|
204
|
+
offset?: number;
|
|
205
|
+
}
|
|
206
|
+
export interface CallRecord {
|
|
207
|
+
id: string;
|
|
208
|
+
number: string;
|
|
209
|
+
name?: string;
|
|
210
|
+
type: string;
|
|
211
|
+
date: number;
|
|
212
|
+
duration: number;
|
|
213
|
+
}
|
|
214
|
+
export interface GetCallsResponse {
|
|
215
|
+
success: boolean;
|
|
216
|
+
total: number;
|
|
217
|
+
calls: CallRecord[];
|
|
218
|
+
timestamp: number;
|
|
219
|
+
errorMessage?: string;
|
|
220
|
+
}
|
|
221
|
+
export interface GetCallsStatRequest {
|
|
222
|
+
}
|
|
223
|
+
export interface CallStat {
|
|
224
|
+
total: number;
|
|
225
|
+
incoming: number;
|
|
226
|
+
outgoing: number;
|
|
227
|
+
missed: number;
|
|
228
|
+
totalDuration: number;
|
|
229
|
+
averageDuration: number;
|
|
230
|
+
}
|
|
231
|
+
export interface GetCallsStatResponse {
|
|
232
|
+
success: boolean;
|
|
233
|
+
stat: CallStat;
|
|
234
|
+
timestamp: number;
|
|
235
|
+
errorMessage?: string;
|
|
236
|
+
}
|
|
237
|
+
export interface SearchContactsRequest {
|
|
238
|
+
query: string;
|
|
239
|
+
limit?: number;
|
|
240
|
+
offset?: number;
|
|
241
|
+
}
|
|
242
|
+
export interface ContactPhoneNumber {
|
|
243
|
+
number: string;
|
|
244
|
+
type: string;
|
|
245
|
+
label: string;
|
|
246
|
+
}
|
|
247
|
+
export interface Contact {
|
|
248
|
+
id: string;
|
|
249
|
+
name: string;
|
|
250
|
+
phoneNumbers: ContactPhoneNumber[];
|
|
251
|
+
photoUri?: string;
|
|
252
|
+
}
|
|
253
|
+
export interface SearchContactsResponse {
|
|
254
|
+
success: boolean;
|
|
255
|
+
total: number;
|
|
256
|
+
contacts: Contact[];
|
|
257
|
+
timestamp: number;
|
|
258
|
+
errorMessage?: string;
|
|
259
|
+
}
|
|
260
|
+
export interface AddContactRequest {
|
|
261
|
+
name: string;
|
|
262
|
+
phoneNumbers: {
|
|
263
|
+
number: string;
|
|
264
|
+
type: number;
|
|
265
|
+
}[];
|
|
266
|
+
email?: string;
|
|
267
|
+
company?: string;
|
|
268
|
+
title?: string;
|
|
269
|
+
}
|
|
270
|
+
export interface AddContactResponse {
|
|
271
|
+
success: boolean;
|
|
272
|
+
contactId?: string;
|
|
273
|
+
timestamp: number;
|
|
274
|
+
errorMessage?: string;
|
|
275
|
+
}
|
|
276
|
+
export interface DeleteContactRequest {
|
|
277
|
+
contactId: string;
|
|
278
|
+
}
|
|
279
|
+
export interface DeleteContactResponse {
|
|
280
|
+
success: boolean;
|
|
281
|
+
timestamp: number;
|
|
282
|
+
errorMessage?: string;
|
|
283
|
+
}
|
|
284
|
+
export interface SetWifiRequest {
|
|
285
|
+
enabled: boolean;
|
|
286
|
+
}
|
|
287
|
+
export interface SetWifiResponse {
|
|
288
|
+
success: boolean;
|
|
289
|
+
enabled?: boolean;
|
|
290
|
+
timestamp: number;
|
|
291
|
+
errorMessage?: string;
|
|
292
|
+
}
|
|
293
|
+
export interface SetMobileDataRequest {
|
|
294
|
+
enabled: boolean;
|
|
295
|
+
}
|
|
296
|
+
export interface SetMobileDataResponse {
|
|
297
|
+
success: boolean;
|
|
298
|
+
enabled?: boolean;
|
|
299
|
+
timestamp: number;
|
|
300
|
+
errorMessage?: string;
|
|
301
|
+
}
|
|
302
|
+
export interface SetFlashlightRequest {
|
|
303
|
+
enabled: boolean;
|
|
304
|
+
}
|
|
305
|
+
export interface SetFlashlightResponse {
|
|
306
|
+
success: boolean;
|
|
307
|
+
enabled?: boolean;
|
|
308
|
+
timestamp: number;
|
|
309
|
+
errorMessage?: string;
|
|
310
|
+
}
|
|
311
|
+
export interface SetVolumeRequest {
|
|
312
|
+
enabled: boolean;
|
|
313
|
+
percentage: number;
|
|
314
|
+
streamType?: string;
|
|
315
|
+
}
|
|
316
|
+
export interface SetVolumeResponse {
|
|
317
|
+
success: boolean;
|
|
318
|
+
enabled?: boolean;
|
|
319
|
+
percentage?: number;
|
|
320
|
+
timestamp: number;
|
|
321
|
+
errorMessage?: string;
|
|
322
|
+
}
|
|
323
|
+
export interface SetBrightnessRequest {
|
|
324
|
+
percentage: number;
|
|
325
|
+
}
|
|
326
|
+
export interface SetBrightnessResponse {
|
|
327
|
+
success: boolean;
|
|
328
|
+
percentage?: number;
|
|
329
|
+
timestamp: number;
|
|
330
|
+
errorMessage?: string;
|
|
331
|
+
}
|
|
332
|
+
export interface SetFontSizeRequest {
|
|
333
|
+
size: string;
|
|
334
|
+
}
|
|
335
|
+
export interface SetFontSizeResponse {
|
|
336
|
+
success: boolean;
|
|
337
|
+
size?: string;
|
|
338
|
+
timestamp: number;
|
|
339
|
+
errorMessage?: string;
|
|
340
|
+
}
|
|
341
|
+
export interface SetBluetoothRequest {
|
|
342
|
+
enabled: boolean;
|
|
343
|
+
}
|
|
344
|
+
export interface SetBluetoothResponse {
|
|
345
|
+
success: boolean;
|
|
346
|
+
enabled?: boolean;
|
|
347
|
+
timestamp: number;
|
|
348
|
+
errorMessage?: string;
|
|
349
|
+
}
|
|
350
|
+
export type DataRequest = AddAlarmRequest | DeleteAlarmRequest | GetAlarmListRequest | LaunchAppRequest | ExitAppRequest | InstallAppRequest | UninstallAppRequest | GetAppInfoRequest | GetAppListRequest | GetCalendarListRequest | GetCalendarEventRequest | GetCalendarDetailRequest | GetCallsRequest | GetCallsStatRequest | SearchContactsRequest | AddContactRequest | DeleteContactRequest | SetWifiRequest | SetMobileDataRequest | SetBluetoothRequest | SetFlashlightRequest | SetVolumeRequest | SetBrightnessRequest | SetFontSizeRequest;
|
|
351
|
+
export type DataResponse = AddAlarmResponse | DeleteAlarmResponse | GetAlarmListResponse | LaunchAppResponse | ExitAppResponse | InstallAppResponse | UninstallAppResponse | GetAppInfoResponse | GetAppListResponse | GetCalendarListResponse | GetCalendarEventResponse | GetCalendarDetailResponse | AddCalendarEventResponse | GetCallsResponse | GetCallsStatResponse | SearchContactsResponse | AddContactResponse | DeleteContactResponse | SetWifiResponse | SetMobileDataResponse | SetBluetoothResponse | SetFlashlightResponse | SetVolumeResponse | SetBrightnessResponse | SetFontSizeResponse;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/dist/domain-manager.js
CHANGED
|
@@ -4,9 +4,12 @@
|
|
|
4
4
|
* Dynamically selects appropriate API domain based on user geographic location
|
|
5
5
|
* Supports both browser and Node.js environments
|
|
6
6
|
*/
|
|
7
|
+
import { createLogger } from "./logger.js";
|
|
8
|
+
// Create logger for DomainManager
|
|
9
|
+
const logger = createLogger("DomainManager");
|
|
7
10
|
const DEFAULT_DOMAIN_CONFIG = {
|
|
8
|
-
international: "shellx.
|
|
9
|
-
china: "
|
|
11
|
+
international: "shellx.cc",
|
|
12
|
+
china: "shellx.cc",
|
|
10
13
|
protocol: "https://",
|
|
11
14
|
};
|
|
12
15
|
/**
|
|
@@ -19,7 +22,7 @@ export function isChineseUser() {
|
|
|
19
22
|
if (typeof Intl !== "undefined" && Intl.DateTimeFormat) {
|
|
20
23
|
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
21
24
|
if (timeZone && timeZone.includes("Asia/Shanghai")) {
|
|
22
|
-
|
|
25
|
+
logger.debug("[DomainManager] Detected Chinese user by timezone:", timeZone);
|
|
23
26
|
return true;
|
|
24
27
|
}
|
|
25
28
|
}
|
|
@@ -28,13 +31,13 @@ export function isChineseUser() {
|
|
|
28
31
|
// Check primary language
|
|
29
32
|
const primaryLang = navigator.language;
|
|
30
33
|
if (primaryLang && primaryLang.toLowerCase().startsWith("zh")) {
|
|
31
|
-
|
|
34
|
+
logger.debug("[DomainManager] Detected Chinese user by primary language:", primaryLang);
|
|
32
35
|
return true;
|
|
33
36
|
}
|
|
34
37
|
// Check all language settings
|
|
35
38
|
for (const lang of navigator.languages) {
|
|
36
39
|
if (lang.toLowerCase().startsWith("zh")) {
|
|
37
|
-
|
|
40
|
+
logger.debug("[DomainManager] Detected Chinese user by language list:", lang);
|
|
38
41
|
return true;
|
|
39
42
|
}
|
|
40
43
|
}
|
|
@@ -44,28 +47,28 @@ export function isChineseUser() {
|
|
|
44
47
|
const ua = navigator.userAgent.toLowerCase();
|
|
45
48
|
// Check if contains Chinese-related identifiers or China region identifiers
|
|
46
49
|
if (ua.includes("zh-cn") || ua.includes("zh_cn") || ua.includes("china")) {
|
|
47
|
-
|
|
50
|
+
logger.debug("[DomainManager] Detected Chinese user by user agent");
|
|
48
51
|
return true;
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
54
|
// 4. Node.js environment detection
|
|
52
|
-
if (typeof process !== "undefined" && process
|
|
55
|
+
if (typeof process !== "undefined" && process?.env) {
|
|
53
56
|
const timezone = process.env["TZ"];
|
|
54
57
|
const lang = process.env["LANG"] || process.env["LANGUAGE"];
|
|
55
58
|
if (timezone && timezone.includes("Asia/Shanghai")) {
|
|
56
|
-
|
|
59
|
+
logger.debug("[DomainManager] Detected Chinese user by Node.js timezone:", timezone);
|
|
57
60
|
return true;
|
|
58
61
|
}
|
|
59
62
|
if (lang && lang.toLowerCase().includes("zh")) {
|
|
60
|
-
|
|
63
|
+
logger.debug("[DomainManager] Detected Chinese user by Node.js language:", lang);
|
|
61
64
|
return true;
|
|
62
65
|
}
|
|
63
66
|
}
|
|
64
|
-
|
|
67
|
+
logger.debug("[DomainManager] Detected international user");
|
|
65
68
|
return false;
|
|
66
69
|
}
|
|
67
70
|
catch (error) {
|
|
68
|
-
|
|
71
|
+
logger.warn("[DomainManager] Error detecting user region, defaulting to international:", error);
|
|
69
72
|
return false;
|
|
70
73
|
}
|
|
71
74
|
}
|
|
@@ -75,8 +78,7 @@ export function isChineseUser() {
|
|
|
75
78
|
* @returns Complete API base URL
|
|
76
79
|
*/
|
|
77
80
|
export function getApiBaseUrl(config = DEFAULT_DOMAIN_CONFIG) {
|
|
78
|
-
|
|
79
|
-
return config.protocol + domain;
|
|
81
|
+
return config.protocol + config.international;
|
|
80
82
|
}
|
|
81
83
|
/**
|
|
82
84
|
* Get WebSocket server URL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain-manager.js","sourceRoot":"","sources":["../src/domain-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"domain-manager.js","sourceRoot":"","sources":["../src/domain-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/error-handler.js
CHANGED
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
* This module provides consistent error handling patterns across the codebase,
|
|
5
5
|
* ensuring all errors are properly formatted, logged, and returned.
|
|
6
6
|
*/
|
|
7
|
+
import { createLogger } from "./logger.js";
|
|
7
8
|
import { OperationError, ValidationError } from "./errors.js";
|
|
9
|
+
// Create logger for ErrorHandler
|
|
10
|
+
const logger = createLogger("ErrorHandler");
|
|
8
11
|
/**
|
|
9
12
|
* Safely extracts error message from unknown error
|
|
10
13
|
* @param error - Unknown error object
|
|
@@ -33,7 +36,7 @@ export function extractErrorMessage(error, defaultMessage = "Unknown error occur
|
|
|
33
36
|
export function createErrorResult(error, startTime, options = {}) {
|
|
34
37
|
const errorMessage = extractErrorMessage(error, options.defaultErrorMessage);
|
|
35
38
|
if (options.logError !== false && options.logPrefix) {
|
|
36
|
-
|
|
39
|
+
logger.error(`${options.logPrefix}`, error);
|
|
37
40
|
}
|
|
38
41
|
return {
|
|
39
42
|
success: false,
|
|
@@ -113,7 +116,7 @@ export async function handleOperationWithRetry(operation, startTime, options = {
|
|
|
113
116
|
catch (error) {
|
|
114
117
|
const isLastAttempt = attempt === maxRetries;
|
|
115
118
|
if (errorOptions.logError !== false) {
|
|
116
|
-
|
|
119
|
+
logger.warn(`${errorOptions.logPrefix || "Operation"} attempt ${attempt}/${maxRetries} failed:`, error);
|
|
117
120
|
}
|
|
118
121
|
if (isLastAttempt) {
|
|
119
122
|
return createErrorResult(error, startTime, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../src/error-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../src/error-handler.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -78,8 +78,10 @@ export class ShellXError extends Error {
|
|
|
78
78
|
this.name = "ShellXError";
|
|
79
79
|
this.code = code;
|
|
80
80
|
this.details = details;
|
|
81
|
-
// Maintains proper stack trace for where our error was thrown
|
|
82
|
-
|
|
81
|
+
// Maintains proper stack trace for where our error was thrown (V8 / Node.js)
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
83
|
+
if (typeof Error.captureStackTrace === "function") {
|
|
84
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
83
85
|
Error.captureStackTrace(this, ShellXError);
|
|
84
86
|
}
|
|
85
87
|
}
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4BH;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,IAAa,EACb,OAAiC;IAEjC,MAAM,QAAQ,GAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IACnD,IAAI,IAAI;QAAE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;IAC/B,IAAI,OAAO;QAAE,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IACxC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAgB,EAChB,QAAgB,EAChB,KAAc;IAEd,MAAM,MAAM,GAAwB,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC1D,IAAI,KAAK;QAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IAChC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,SAiCX;AAjCD,WAAY,SAAS;IACnB,2BAA2B;IAC3B,oDAAuC,CAAA;IACvC,sDAAyC,CAAA;IACzC,4DAA+C,CAAA;IAC/C,kDAAqC,CAAA;IACrC,4DAA+C,CAAA;IAE/C,0BAA0B;IAC1B,kDAAqC,CAAA;IACrC,oDAAuC,CAAA;IACvC,wDAA2C,CAAA;IAE3C,wBAAwB;IACxB,oDAAuC,CAAA;IACvC,wDAA2C,CAAA;IAC3C,4DAA+C,CAAA;IAC/C,kDAAqC,CAAA;IAErC,sBAAsB;IACtB,4CAA+B,CAAA;IAC/B,oDAAuC,CAAA;IACvC,8CAAiC,CAAA;IAEjC,uBAAuB;IACvB,8CAAiC,CAAA;IACjC,gDAAmC,CAAA;IACnC,4CAA+B,CAAA;IAE/B,wBAAwB;IACxB,8CAAiC,CAAA;IACjC,gDAAmC,CAAA;IACnC,oDAAuC,CAAA;AACzC,CAAC,EAjCW,SAAS,KAAT,SAAS,QAiCpB;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,oCAAoC;IACpB,IAAI,CAAS;IAC7B,+BAA+B;IACf,OAAO,CAA2B;IAElD,YAAY,OAAe,EAAE,IAAY,EAAE,OAAiC;QAC1E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,8DAA8D;QAC9D,IAAI,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|