@zqagent/shared 0.0.0-stage → 0.1.0
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/LICENSE +190 -0
- package/README.md +21 -2
- package/dist/approval-view.cjs +99 -0
- package/dist/approval-view.cjs.map +1 -0
- package/dist/approval-view.d.cts +39 -0
- package/dist/approval-view.d.ts +39 -0
- package/dist/approval-view.js +69 -0
- package/dist/approval-view.js.map +1 -0
- package/dist/fleet.cjs +263 -0
- package/dist/fleet.cjs.map +1 -0
- package/dist/fleet.d.cts +284 -0
- package/dist/fleet.d.ts +284 -0
- package/dist/fleet.js +214 -0
- package/dist/fleet.js.map +1 -0
- package/dist/hub-api.cjs +901 -0
- package/dist/hub-api.cjs.map +1 -0
- package/dist/hub-api.d.cts +1677 -0
- package/dist/hub-api.d.ts +1677 -0
- package/dist/hub-api.js +776 -0
- package/dist/hub-api.js.map +1 -0
- package/dist/index-DokiNlGJ.d.cts +182 -0
- package/dist/index-DokiNlGJ.d.ts +182 -0
- package/dist/index.cjs +861 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +779 -0
- package/dist/index.js.map +1 -0
- package/dist/llm-presets.cjs +92 -0
- package/dist/llm-presets.cjs.map +1 -0
- package/dist/llm-presets.d.cts +28 -0
- package/dist/llm-presets.d.ts +28 -0
- package/dist/llm-presets.js +66 -0
- package/dist/llm-presets.js.map +1 -0
- package/dist/media.cjs +111 -0
- package/dist/media.cjs.map +1 -0
- package/dist/media.d.cts +59 -0
- package/dist/media.d.ts +59 -0
- package/dist/media.js +79 -0
- package/dist/media.js.map +1 -0
- package/dist/messages-CiXjdR1Z.d.cts +257 -0
- package/dist/messages-CiXjdR1Z.d.ts +257 -0
- package/dist/model-capabilities.cjs +105 -0
- package/dist/model-capabilities.cjs.map +1 -0
- package/dist/model-capabilities.d.cts +46 -0
- package/dist/model-capabilities.d.ts +46 -0
- package/dist/model-capabilities.js +74 -0
- package/dist/model-capabilities.js.map +1 -0
- package/dist/notify/index.cjs +375 -0
- package/dist/notify/index.cjs.map +1 -0
- package/dist/notify/index.d.cts +2 -0
- package/dist/notify/index.d.ts +2 -0
- package/dist/notify/index.js +330 -0
- package/dist/notify/index.js.map +1 -0
- package/dist/secrets.cjs +121 -0
- package/dist/secrets.cjs.map +1 -0
- package/dist/secrets.d.cts +25 -0
- package/dist/secrets.d.ts +25 -0
- package/dist/secrets.js +82 -0
- package/dist/secrets.js.map +1 -0
- package/dist/wire/index.cjs +1163 -0
- package/dist/wire/index.cjs.map +1 -0
- package/dist/wire/index.d.cts +166 -0
- package/dist/wire/index.d.ts +166 -0
- package/dist/wire/index.js +1081 -0
- package/dist/wire/index.js.map +1 -0
- package/dist/wire/node.cjs +224 -0
- package/dist/wire/node.cjs.map +1 -0
- package/dist/wire/node.d.cts +14 -0
- package/dist/wire/node.d.ts +14 -0
- package/dist/wire/node.js +195 -0
- package/dist/wire/node.js.map +1 -0
- package/package.json +99 -3
package/dist/hub-api.cjs
ADDED
|
@@ -0,0 +1,901 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/hub-api.ts
|
|
21
|
+
var hub_api_exports = {};
|
|
22
|
+
__export(hub_api_exports, {
|
|
23
|
+
activityKey: () => activityKey,
|
|
24
|
+
compareByActivity: () => compareByActivity,
|
|
25
|
+
hubAdminAddSocialQr: () => hubAdminAddSocialQr,
|
|
26
|
+
hubAdminAudit: () => hubAdminAudit,
|
|
27
|
+
hubAdminBillingReport: () => hubAdminBillingReport,
|
|
28
|
+
hubAdminClearCommunity: () => hubAdminClearCommunity,
|
|
29
|
+
hubAdminCommunity: () => hubAdminCommunity,
|
|
30
|
+
hubAdminDeleteFleet: () => hubAdminDeleteFleet,
|
|
31
|
+
hubAdminDeleteNode: () => hubAdminDeleteNode,
|
|
32
|
+
hubAdminDeleteUser: () => hubAdminDeleteUser,
|
|
33
|
+
hubAdminDisableUser: () => hubAdminDisableUser,
|
|
34
|
+
hubAdminEnableUser: () => hubAdminEnableUser,
|
|
35
|
+
hubAdminLinkZqai: () => hubAdminLinkZqai,
|
|
36
|
+
hubAdminMarkOrder: () => hubAdminMarkOrder,
|
|
37
|
+
hubAdminNodeBilling: () => hubAdminNodeBilling,
|
|
38
|
+
hubAdminNotifyUser: () => hubAdminNotifyUser,
|
|
39
|
+
hubAdminOrders: () => hubAdminOrders,
|
|
40
|
+
hubAdminOverview: () => hubAdminOverview,
|
|
41
|
+
hubAdminRefund: () => hubAdminRefund,
|
|
42
|
+
hubAdminRegisterAttempts: () => hubAdminRegisterAttempts,
|
|
43
|
+
hubAdminRemoveSocialQr: () => hubAdminRemoveSocialQr,
|
|
44
|
+
hubAdminSetRole: () => hubAdminSetRole,
|
|
45
|
+
hubAdminSocialQrs: () => hubAdminSocialQrs,
|
|
46
|
+
hubAdminTopup: () => hubAdminTopup,
|
|
47
|
+
hubAdminUpdateCommunity: () => hubAdminUpdateCommunity,
|
|
48
|
+
hubAdminUpdateNodeBilling: () => hubAdminUpdateNodeBilling,
|
|
49
|
+
hubAdminUpdateSocialQr: () => hubAdminUpdateSocialQr,
|
|
50
|
+
hubAdminUpdateUser: () => hubAdminUpdateUser,
|
|
51
|
+
hubAdminUserDetail: () => hubAdminUserDetail,
|
|
52
|
+
hubAdminUsers: () => hubAdminUsers,
|
|
53
|
+
hubAdminWallet: () => hubAdminWallet,
|
|
54
|
+
hubApiService: () => hubApiService,
|
|
55
|
+
hubApiTopup: () => hubApiTopup,
|
|
56
|
+
hubBillingExportUrl: () => hubBillingExportUrl,
|
|
57
|
+
hubCaptcha: () => hubCaptcha,
|
|
58
|
+
hubChangePassword: () => hubChangePassword,
|
|
59
|
+
hubChannels: () => hubChannels,
|
|
60
|
+
hubClearSmtpSettings: () => hubClearSmtpSettings,
|
|
61
|
+
hubCreateEnrollment: () => hubCreateEnrollment,
|
|
62
|
+
hubCreateFleet: () => hubCreateFleet,
|
|
63
|
+
hubCreateNodeGrant: () => hubCreateNodeGrant,
|
|
64
|
+
hubDeleteFleet: () => hubDeleteFleet,
|
|
65
|
+
hubDeleteNode: () => hubDeleteNode,
|
|
66
|
+
hubEnrollByAccount: () => hubEnrollByAccount,
|
|
67
|
+
hubEnrollByCode: () => hubEnrollByCode,
|
|
68
|
+
hubEnrollByToken: () => hubEnrollByToken,
|
|
69
|
+
hubEnrollNode: () => hubEnrollNode,
|
|
70
|
+
hubFleetPairing: () => hubFleetPairing,
|
|
71
|
+
hubGetNode: () => hubGetNode,
|
|
72
|
+
hubGetNodeById: () => hubGetNodeById,
|
|
73
|
+
hubGetUsage: () => hubGetUsage,
|
|
74
|
+
hubLeaveSharedNode: () => hubLeaveSharedNode,
|
|
75
|
+
hubListFleets: () => hubListFleets,
|
|
76
|
+
hubListNodeGrants: () => hubListNodeGrants,
|
|
77
|
+
hubListNodes: () => hubListNodes,
|
|
78
|
+
hubListProjects: () => hubListProjects,
|
|
79
|
+
hubListTasks: () => hubListTasks,
|
|
80
|
+
hubLogin: () => hubLogin,
|
|
81
|
+
hubLoginAccount: () => hubLoginAccount,
|
|
82
|
+
hubMarkNotificationsRead: () => hubMarkNotificationsRead,
|
|
83
|
+
hubMe: () => hubMe,
|
|
84
|
+
hubMoveNode: () => hubMoveNode,
|
|
85
|
+
hubNodeActivity: () => hubNodeActivity,
|
|
86
|
+
hubNodeUsageReport: () => hubNodeUsageReport,
|
|
87
|
+
hubNotificationStream: () => hubNotificationStream,
|
|
88
|
+
hubNotifications: () => hubNotifications,
|
|
89
|
+
hubNotifyEvents: () => hubNotifyEvents,
|
|
90
|
+
hubNotifyPreview: () => hubNotifyPreview,
|
|
91
|
+
hubNotifySettings: () => hubNotifySettings,
|
|
92
|
+
hubOrders: () => hubOrders,
|
|
93
|
+
hubOutgoingGrants: () => hubOutgoingGrants,
|
|
94
|
+
hubPins: () => hubPins,
|
|
95
|
+
hubPlans: () => hubPlans,
|
|
96
|
+
hubRealtimeCredential: () => hubRealtimeCredential,
|
|
97
|
+
hubRegister: () => hubRegister,
|
|
98
|
+
hubRegisterAccount: () => hubRegisterAccount,
|
|
99
|
+
hubRequestApiService: () => hubRequestApiService,
|
|
100
|
+
hubResetPassword: () => hubResetPassword,
|
|
101
|
+
hubRevokeNodeGrant: () => hubRevokeNodeGrant,
|
|
102
|
+
hubRotateApiKey: () => hubRotateApiKey,
|
|
103
|
+
hubSaveNotifySettings: () => hubSaveNotifySettings,
|
|
104
|
+
hubSavePins: () => hubSavePins,
|
|
105
|
+
hubSaveSmtpSettings: () => hubSaveSmtpSettings,
|
|
106
|
+
hubSendCodeStatus: () => hubSendCodeStatus,
|
|
107
|
+
hubSendEmailCode: () => hubSendEmailCode,
|
|
108
|
+
hubSendSms: () => hubSendSms,
|
|
109
|
+
hubSharedNodes: () => hubSharedNodes,
|
|
110
|
+
hubSmsStatus: () => hubSmsStatus,
|
|
111
|
+
hubSmtpSettings: () => hubSmtpSettings,
|
|
112
|
+
hubStatement: () => hubStatement,
|
|
113
|
+
hubSubscription: () => hubSubscription,
|
|
114
|
+
hubSyncOrder: () => hubSyncOrder,
|
|
115
|
+
hubTerminalCredential: () => hubTerminalCredential,
|
|
116
|
+
hubTestNotify: () => hubTestNotify,
|
|
117
|
+
hubUpdateFleet: () => hubUpdateFleet,
|
|
118
|
+
hubUpdateNode: () => hubUpdateNode,
|
|
119
|
+
hubUpdateNodeLabelSelf: () => hubUpdateNodeLabelSelf,
|
|
120
|
+
hubUpdateProfile: () => hubUpdateProfile,
|
|
121
|
+
hubWallet: () => hubWallet,
|
|
122
|
+
hubWalletTopup: () => hubWalletTopup,
|
|
123
|
+
setHubBaseResolver: () => setHubBaseResolver
|
|
124
|
+
});
|
|
125
|
+
module.exports = __toCommonJS(hub_api_exports);
|
|
126
|
+
function activityKey(o) {
|
|
127
|
+
return o.lastStartedAt ?? o.lastCompletedAt ?? "";
|
|
128
|
+
}
|
|
129
|
+
function compareByActivity(a, b, tieBreak) {
|
|
130
|
+
const ak = activityKey(a);
|
|
131
|
+
const bk = activityKey(b);
|
|
132
|
+
if (ak !== bk) return bk.localeCompare(ak);
|
|
133
|
+
return tieBreak ? tieBreak(a, b) : 0;
|
|
134
|
+
}
|
|
135
|
+
var baseUrlResolver = null;
|
|
136
|
+
function setHubBaseResolver(fn) {
|
|
137
|
+
baseUrlResolver = fn;
|
|
138
|
+
}
|
|
139
|
+
function resolveBase(baseUrl) {
|
|
140
|
+
return baseUrlResolver ? baseUrlResolver(baseUrl) : baseUrl;
|
|
141
|
+
}
|
|
142
|
+
var HUB_REQUEST_TIMEOUT_MS = 3e4;
|
|
143
|
+
async function req(baseUrl, token, path, init = {}) {
|
|
144
|
+
const headers = {
|
|
145
|
+
...init.body ? { "Content-Type": "application/json" } : {},
|
|
146
|
+
...init.headers ?? {}
|
|
147
|
+
};
|
|
148
|
+
if (token) headers.Authorization = `Bearer ${token}`;
|
|
149
|
+
const url = `${resolveBase(baseUrl).replace(/\/$/, "")}${path}`;
|
|
150
|
+
const method = (init.method ?? "GET").toUpperCase();
|
|
151
|
+
const attempts = method === "GET" ? 3 : 1;
|
|
152
|
+
const newTimeoutSignal = () => typeof AbortSignal.timeout === "function" ? AbortSignal.timeout(HUB_REQUEST_TIMEOUT_MS) : void 0;
|
|
153
|
+
let lastError;
|
|
154
|
+
for (let i = 0; i < attempts; i++) {
|
|
155
|
+
try {
|
|
156
|
+
const res = await fetch(url, {
|
|
157
|
+
...init,
|
|
158
|
+
headers,
|
|
159
|
+
// 每次重试都要新的 signal:超时后的 signal 已 aborted,复用会立刻失败
|
|
160
|
+
signal: init.signal ?? newTimeoutSignal()
|
|
161
|
+
});
|
|
162
|
+
const text = await res.text();
|
|
163
|
+
let payload = null;
|
|
164
|
+
try {
|
|
165
|
+
payload = text ? JSON.parse(text) : null;
|
|
166
|
+
} catch {
|
|
167
|
+
throw new Error(`Hub \u54CD\u5E94\u975E\u6CD5\uFF08HTTP ${res.status}\uFF09`);
|
|
168
|
+
}
|
|
169
|
+
if (!res.ok) {
|
|
170
|
+
const err = payload?.error;
|
|
171
|
+
const e = new Error(err?.message ?? `HTTP ${res.status}`);
|
|
172
|
+
e.code = err?.code;
|
|
173
|
+
e.status = res.status;
|
|
174
|
+
throw e;
|
|
175
|
+
}
|
|
176
|
+
return payload?.data;
|
|
177
|
+
} catch (e) {
|
|
178
|
+
lastError = e;
|
|
179
|
+
const status = e.status;
|
|
180
|
+
const retryable = status === void 0 || status >= 500;
|
|
181
|
+
if (i + 1 >= attempts || !retryable) throw e;
|
|
182
|
+
await new Promise((r) => setTimeout(r, 300 * 2 ** i + Math.random() * 200));
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
throw lastError;
|
|
186
|
+
}
|
|
187
|
+
async function hubRegister(baseUrl, email, password) {
|
|
188
|
+
return hubRegisterAccount(baseUrl, { email, password });
|
|
189
|
+
}
|
|
190
|
+
async function hubRegisterAccount(baseUrl, input) {
|
|
191
|
+
return await req(baseUrl, null, "/api/hub/auth/register", {
|
|
192
|
+
method: "POST",
|
|
193
|
+
body: JSON.stringify(input)
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
async function hubLogin(baseUrl, email, password) {
|
|
197
|
+
return hubLoginAccount(baseUrl, { email, password });
|
|
198
|
+
}
|
|
199
|
+
async function hubLoginAccount(baseUrl, input) {
|
|
200
|
+
return await req(baseUrl, null, "/api/hub/auth/login", {
|
|
201
|
+
method: "POST",
|
|
202
|
+
body: JSON.stringify(input)
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
async function hubCaptcha(baseUrl) {
|
|
206
|
+
return await req(baseUrl, null, "/api/hub/auth/captcha");
|
|
207
|
+
}
|
|
208
|
+
async function hubSendSms(baseUrl, input) {
|
|
209
|
+
return await req(baseUrl, null, "/api/hub/auth/sms/send", {
|
|
210
|
+
method: "POST",
|
|
211
|
+
body: JSON.stringify(input)
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
async function hubSendCodeStatus(baseUrl, clientId) {
|
|
215
|
+
const qs = clientId ? `?clientId=${encodeURIComponent(clientId)}` : "";
|
|
216
|
+
return await req(baseUrl, null, `/api/hub/auth/code/status${qs}`);
|
|
217
|
+
}
|
|
218
|
+
async function hubSmsStatus(baseUrl, phone, clientId) {
|
|
219
|
+
const qs = new URLSearchParams({ phone });
|
|
220
|
+
if (clientId) qs.set("clientId", clientId);
|
|
221
|
+
return await req(
|
|
222
|
+
baseUrl,
|
|
223
|
+
null,
|
|
224
|
+
`/api/hub/auth/sms/status?${qs.toString()}`
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
async function hubSendEmailCode(baseUrl, input) {
|
|
228
|
+
return await req(baseUrl, null, "/api/hub/auth/email/send", {
|
|
229
|
+
method: "POST",
|
|
230
|
+
body: JSON.stringify(input)
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
async function hubResetPassword(baseUrl, input) {
|
|
234
|
+
return await req(baseUrl, null, "/api/hub/auth/password/reset", {
|
|
235
|
+
method: "POST",
|
|
236
|
+
body: JSON.stringify(input)
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
async function hubMe(baseUrl, token) {
|
|
240
|
+
return await req(baseUrl, token, "/api/hub/me");
|
|
241
|
+
}
|
|
242
|
+
async function hubUpdateProfile(baseUrl, token, input) {
|
|
243
|
+
return await req(baseUrl, token, "/api/hub/me", {
|
|
244
|
+
method: "PATCH",
|
|
245
|
+
body: JSON.stringify(input)
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
async function hubTerminalCredential(baseUrl, token, fleetId, nodeId, client = "web") {
|
|
249
|
+
return await req(
|
|
250
|
+
baseUrl,
|
|
251
|
+
token,
|
|
252
|
+
`/api/hub/fleets/${fleetId}/nodes/${encodeURIComponent(nodeId)}/terminal-credential`,
|
|
253
|
+
{ method: "POST", body: JSON.stringify({ client }) }
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
async function hubRealtimeCredential(baseUrl, token, client = "web") {
|
|
257
|
+
return await req(
|
|
258
|
+
baseUrl,
|
|
259
|
+
token,
|
|
260
|
+
`/api/hub/realtime-credential?client=${encodeURIComponent(client)}`
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
async function hubChangePassword(baseUrl, token, input) {
|
|
264
|
+
return await req(baseUrl, token, "/api/hub/auth/password", {
|
|
265
|
+
method: "POST",
|
|
266
|
+
body: JSON.stringify(input)
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
async function hubListFleets(baseUrl, token) {
|
|
270
|
+
return await req(baseUrl, token, "/api/hub/fleets");
|
|
271
|
+
}
|
|
272
|
+
async function hubCreateFleet(baseUrl, token, name) {
|
|
273
|
+
return await req(baseUrl, token, "/api/hub/fleets", {
|
|
274
|
+
method: "POST",
|
|
275
|
+
body: JSON.stringify({ name })
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
async function hubDeleteFleet(baseUrl, token, fleetId) {
|
|
279
|
+
await req(baseUrl, token, `/api/hub/fleets/${fleetId}`, { method: "DELETE" });
|
|
280
|
+
}
|
|
281
|
+
async function hubUpdateFleet(baseUrl, token, fleetId, name) {
|
|
282
|
+
return await req(baseUrl, token, `/api/hub/fleets/${fleetId}`, {
|
|
283
|
+
method: "PATCH",
|
|
284
|
+
body: JSON.stringify({ name })
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
async function hubFleetPairing(baseUrl, token, fleetId) {
|
|
288
|
+
return await req(baseUrl, token, `/api/hub/fleets/${fleetId}/pairing`);
|
|
289
|
+
}
|
|
290
|
+
async function hubCreateEnrollment(baseUrl, token, fleetId) {
|
|
291
|
+
return await req(baseUrl, token, `/api/hub/fleets/${fleetId}/enrollment`, {
|
|
292
|
+
method: "POST"
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
async function hubListNodes(baseUrl, token, fleetId) {
|
|
296
|
+
return await req(baseUrl, token, `/api/hub/fleets/${fleetId}/nodes`);
|
|
297
|
+
}
|
|
298
|
+
async function hubListProjects(baseUrl, token, opts = {}) {
|
|
299
|
+
const limit = Math.min(Math.max(Math.trunc(opts.limit ?? 20), 1), 200);
|
|
300
|
+
const offset = Math.max(Math.trunc(opts.offset ?? 0), 0);
|
|
301
|
+
const q = (opts.q ?? "").trim();
|
|
302
|
+
return await req(
|
|
303
|
+
baseUrl,
|
|
304
|
+
token,
|
|
305
|
+
`/api/hub/projects?limit=${limit}&offset=${offset}${q ? `&q=${encodeURIComponent(q)}` : ""}`
|
|
306
|
+
);
|
|
307
|
+
}
|
|
308
|
+
async function hubListTasks(baseUrl, token, opts = {}) {
|
|
309
|
+
const limit = Math.min(Math.max(Math.trunc(opts.limit ?? 50), 1), 500);
|
|
310
|
+
const offset = Math.max(Math.trunc(opts.offset ?? 0), 0);
|
|
311
|
+
const status = opts.status ?? "all";
|
|
312
|
+
const q = (opts.q ?? "").trim();
|
|
313
|
+
return await req(
|
|
314
|
+
baseUrl,
|
|
315
|
+
token,
|
|
316
|
+
`/api/hub/tasks?limit=${limit}&offset=${offset}&status=${encodeURIComponent(status)}` + (q ? `&q=${encodeURIComponent(q)}` : "")
|
|
317
|
+
);
|
|
318
|
+
}
|
|
319
|
+
async function hubGetNode(baseUrl, token, fleetId, nodeId) {
|
|
320
|
+
return await req(
|
|
321
|
+
baseUrl,
|
|
322
|
+
token,
|
|
323
|
+
`/api/hub/fleets/${fleetId}/nodes/${encodeURIComponent(nodeId)}`
|
|
324
|
+
);
|
|
325
|
+
}
|
|
326
|
+
async function hubGetNodeById(baseUrl, token, nodeId) {
|
|
327
|
+
return await req(baseUrl, token, `/api/hub/nodes/${encodeURIComponent(nodeId)}`);
|
|
328
|
+
}
|
|
329
|
+
async function hubSharedNodes(baseUrl, token) {
|
|
330
|
+
return await req(baseUrl, token, "/api/hub/shared/nodes");
|
|
331
|
+
}
|
|
332
|
+
async function hubOutgoingGrants(baseUrl, token) {
|
|
333
|
+
return await req(baseUrl, token, "/api/hub/shared/outgoing");
|
|
334
|
+
}
|
|
335
|
+
async function hubListNodeGrants(baseUrl, token, fleetId, nodeId) {
|
|
336
|
+
return await req(
|
|
337
|
+
baseUrl,
|
|
338
|
+
token,
|
|
339
|
+
`/api/hub/fleets/${fleetId}/nodes/${encodeURIComponent(nodeId)}/grants`
|
|
340
|
+
);
|
|
341
|
+
}
|
|
342
|
+
async function hubCreateNodeGrant(baseUrl, token, fleetId, nodeId, input) {
|
|
343
|
+
return await req(
|
|
344
|
+
baseUrl,
|
|
345
|
+
token,
|
|
346
|
+
`/api/hub/fleets/${fleetId}/nodes/${encodeURIComponent(nodeId)}/grants`,
|
|
347
|
+
{ method: "POST", body: JSON.stringify(input) }
|
|
348
|
+
);
|
|
349
|
+
}
|
|
350
|
+
async function hubRevokeNodeGrant(baseUrl, token, fleetId, nodeId, grantId) {
|
|
351
|
+
return await req(
|
|
352
|
+
baseUrl,
|
|
353
|
+
token,
|
|
354
|
+
`/api/hub/fleets/${fleetId}/nodes/${encodeURIComponent(nodeId)}/grants/${grantId}`,
|
|
355
|
+
{ method: "DELETE" }
|
|
356
|
+
);
|
|
357
|
+
}
|
|
358
|
+
async function hubLeaveSharedNode(baseUrl, token, nodeId) {
|
|
359
|
+
return await req(baseUrl, token, `/api/hub/shared/nodes/${encodeURIComponent(nodeId)}/leave`, {
|
|
360
|
+
method: "POST"
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
async function hubNodeActivity(baseUrl, token, nodeId, opts = {}) {
|
|
364
|
+
const limit = Math.min(Math.max(Math.trunc(opts.limit ?? 50), 1), 200);
|
|
365
|
+
const offset = Math.max(Math.trunc(opts.offset ?? 0), 0);
|
|
366
|
+
return await req(
|
|
367
|
+
baseUrl,
|
|
368
|
+
token,
|
|
369
|
+
`/api/hub/nodes/${encodeURIComponent(nodeId)}/activity?limit=${limit}&offset=${offset}`
|
|
370
|
+
);
|
|
371
|
+
}
|
|
372
|
+
async function hubEnrollNode(baseUrl, token, fleetId, nodeId, label) {
|
|
373
|
+
await req(baseUrl, token, `/api/hub/fleets/${fleetId}/nodes`, {
|
|
374
|
+
method: "POST",
|
|
375
|
+
body: JSON.stringify({ nodeId, label })
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
async function hubEnrollByCode(baseUrl, input) {
|
|
379
|
+
const data = await req(baseUrl, null, "/api/hub/enroll", {
|
|
380
|
+
method: "POST",
|
|
381
|
+
body: JSON.stringify(input)
|
|
382
|
+
});
|
|
383
|
+
return { hubUrl: baseUrl.replace(/\/$/, ""), ...data };
|
|
384
|
+
}
|
|
385
|
+
async function hubEnrollByAccount(baseUrl, input) {
|
|
386
|
+
const data = await req(baseUrl, null, "/api/hub/enroll/account", {
|
|
387
|
+
method: "POST",
|
|
388
|
+
body: JSON.stringify(input)
|
|
389
|
+
});
|
|
390
|
+
return { hubUrl: baseUrl.replace(/\/$/, ""), ...data };
|
|
391
|
+
}
|
|
392
|
+
async function hubEnrollByToken(baseUrl, token, input) {
|
|
393
|
+
const data = await req(baseUrl, token, "/api/hub/enroll/token", {
|
|
394
|
+
method: "POST",
|
|
395
|
+
body: JSON.stringify(input)
|
|
396
|
+
});
|
|
397
|
+
return { hubUrl: baseUrl.replace(/\/$/, ""), ...data };
|
|
398
|
+
}
|
|
399
|
+
async function hubDeleteNode(baseUrl, token, fleetId, nodeId) {
|
|
400
|
+
await req(baseUrl, token, `/api/hub/fleets/${fleetId}/nodes/${nodeId}`, { method: "DELETE" });
|
|
401
|
+
}
|
|
402
|
+
async function hubUpdateNode(baseUrl, token, fleetId, nodeId, label) {
|
|
403
|
+
return await req(
|
|
404
|
+
baseUrl,
|
|
405
|
+
token,
|
|
406
|
+
`/api/hub/fleets/${fleetId}/nodes/${encodeURIComponent(nodeId)}`,
|
|
407
|
+
{ method: "PATCH", body: JSON.stringify({ label }) }
|
|
408
|
+
);
|
|
409
|
+
}
|
|
410
|
+
async function hubUpdateNodeLabelSelf(baseUrl, fleetToken, input) {
|
|
411
|
+
return await req(baseUrl, fleetToken, "/api/hub/nodes/self/label", {
|
|
412
|
+
method: "POST",
|
|
413
|
+
body: JSON.stringify(input)
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
async function hubMoveNode(baseUrl, token, fleetId, nodeId, targetFleetId) {
|
|
417
|
+
return await req(
|
|
418
|
+
baseUrl,
|
|
419
|
+
token,
|
|
420
|
+
`/api/hub/fleets/${fleetId}/nodes/${encodeURIComponent(nodeId)}`,
|
|
421
|
+
{ method: "PATCH", body: JSON.stringify({ fleetId: targetFleetId }) }
|
|
422
|
+
);
|
|
423
|
+
}
|
|
424
|
+
async function hubPlans(baseUrl) {
|
|
425
|
+
return await req(baseUrl, null, "/api/hub/plans");
|
|
426
|
+
}
|
|
427
|
+
async function hubSubscription(baseUrl, token) {
|
|
428
|
+
return await req(baseUrl, token, "/api/hub/subscription");
|
|
429
|
+
}
|
|
430
|
+
async function hubChannels(baseUrl, token) {
|
|
431
|
+
return await req(baseUrl, token, "/api/hub/billing/channels");
|
|
432
|
+
}
|
|
433
|
+
async function hubOrders(baseUrl, token) {
|
|
434
|
+
return await req(baseUrl, token, "/api/hub/orders");
|
|
435
|
+
}
|
|
436
|
+
async function hubSyncOrder(baseUrl, token, orderId) {
|
|
437
|
+
return await req(
|
|
438
|
+
baseUrl,
|
|
439
|
+
token,
|
|
440
|
+
`/api/hub/orders/${encodeURIComponent(orderId)}/sync`
|
|
441
|
+
);
|
|
442
|
+
}
|
|
443
|
+
async function hubNotifications(baseUrl, token, limit = 50) {
|
|
444
|
+
return await req(baseUrl, token, `/api/hub/notifications?limit=${limit}`);
|
|
445
|
+
}
|
|
446
|
+
async function hubMarkNotificationsRead(baseUrl, token, input) {
|
|
447
|
+
return await req(baseUrl, token, "/api/hub/notifications/read", {
|
|
448
|
+
method: "POST",
|
|
449
|
+
body: JSON.stringify(input)
|
|
450
|
+
});
|
|
451
|
+
}
|
|
452
|
+
async function hubGetUsage(baseUrl, token, params = {}) {
|
|
453
|
+
const q = new URLSearchParams();
|
|
454
|
+
if (params.from) q.set("from", params.from);
|
|
455
|
+
if (params.to) q.set("to", params.to);
|
|
456
|
+
if (params.groupBy) q.set("groupBy", params.groupBy);
|
|
457
|
+
const qs = q.toString();
|
|
458
|
+
return await req(baseUrl, token, `/api/hub/usage${qs ? `?${qs}` : ""}`);
|
|
459
|
+
}
|
|
460
|
+
async function hubNodeUsageReport(baseUrl, token, nodeId, payload) {
|
|
461
|
+
await req(baseUrl, token, `/api/hub/nodes/${nodeId}/usage`, {
|
|
462
|
+
method: "POST",
|
|
463
|
+
body: JSON.stringify(payload)
|
|
464
|
+
});
|
|
465
|
+
}
|
|
466
|
+
function adminQuery(params) {
|
|
467
|
+
const q = new URLSearchParams();
|
|
468
|
+
for (const [k, v] of Object.entries(params)) {
|
|
469
|
+
if (v === void 0 || v === "") continue;
|
|
470
|
+
q.set(k, String(v));
|
|
471
|
+
}
|
|
472
|
+
const qs = q.toString();
|
|
473
|
+
return qs ? `?${qs}` : "";
|
|
474
|
+
}
|
|
475
|
+
async function hubAdminOverview(baseUrl, token) {
|
|
476
|
+
return await req(baseUrl, token, "/api/hub/admin/overview");
|
|
477
|
+
}
|
|
478
|
+
async function hubAdminUsers(baseUrl, token, params = {}) {
|
|
479
|
+
const qs = adminQuery({
|
|
480
|
+
q: params.q,
|
|
481
|
+
status: params.status,
|
|
482
|
+
role: params.role,
|
|
483
|
+
plan: params.plan,
|
|
484
|
+
withUsage: params.withUsage ? 1 : void 0,
|
|
485
|
+
limit: params.limit,
|
|
486
|
+
offset: params.offset
|
|
487
|
+
});
|
|
488
|
+
return await req(baseUrl, token, `/api/hub/admin/users${qs}`);
|
|
489
|
+
}
|
|
490
|
+
async function hubAdminUserDetail(baseUrl, token, userId) {
|
|
491
|
+
return await req(
|
|
492
|
+
baseUrl,
|
|
493
|
+
token,
|
|
494
|
+
`/api/hub/admin/users/${encodeURIComponent(userId)}`
|
|
495
|
+
);
|
|
496
|
+
}
|
|
497
|
+
async function hubAdminUpdateUser(baseUrl, token, userId, patch) {
|
|
498
|
+
return await req(baseUrl, token, `/api/hub/admin/users/${encodeURIComponent(userId)}`, {
|
|
499
|
+
method: "PATCH",
|
|
500
|
+
body: JSON.stringify(patch)
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
async function hubAdminDisableUser(baseUrl, token, userId) {
|
|
504
|
+
return await req(
|
|
505
|
+
baseUrl,
|
|
506
|
+
token,
|
|
507
|
+
`/api/hub/admin/users/${encodeURIComponent(userId)}/disable`,
|
|
508
|
+
{ method: "POST" }
|
|
509
|
+
);
|
|
510
|
+
}
|
|
511
|
+
async function hubAdminEnableUser(baseUrl, token, userId) {
|
|
512
|
+
return await req(
|
|
513
|
+
baseUrl,
|
|
514
|
+
token,
|
|
515
|
+
`/api/hub/admin/users/${encodeURIComponent(userId)}/enable`,
|
|
516
|
+
{ method: "POST" }
|
|
517
|
+
);
|
|
518
|
+
}
|
|
519
|
+
async function hubAdminDeleteUser(baseUrl, token, userId) {
|
|
520
|
+
return await req(baseUrl, token, `/api/hub/admin/users/${encodeURIComponent(userId)}`, {
|
|
521
|
+
method: "DELETE"
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
async function hubAdminSetRole(baseUrl, token, userId, role) {
|
|
525
|
+
return await req(
|
|
526
|
+
baseUrl,
|
|
527
|
+
token,
|
|
528
|
+
`/api/hub/admin/users/${encodeURIComponent(userId)}/role`,
|
|
529
|
+
{ method: "PATCH", body: JSON.stringify({ role }) }
|
|
530
|
+
);
|
|
531
|
+
}
|
|
532
|
+
async function hubAdminNotifyUser(baseUrl, token, userId, input) {
|
|
533
|
+
return await req(
|
|
534
|
+
baseUrl,
|
|
535
|
+
token,
|
|
536
|
+
`/api/hub/admin/users/${encodeURIComponent(userId)}/notify`,
|
|
537
|
+
{ method: "POST", body: JSON.stringify(input) }
|
|
538
|
+
);
|
|
539
|
+
}
|
|
540
|
+
async function hubAdminDeleteFleet(baseUrl, token, fleetId) {
|
|
541
|
+
return await req(baseUrl, token, `/api/hub/admin/fleets/${encodeURIComponent(fleetId)}`, {
|
|
542
|
+
method: "DELETE"
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
async function hubAdminDeleteNode(baseUrl, token, nodeId) {
|
|
546
|
+
return await req(baseUrl, token, `/api/hub/admin/nodes/${encodeURIComponent(nodeId)}`, {
|
|
547
|
+
method: "DELETE"
|
|
548
|
+
});
|
|
549
|
+
}
|
|
550
|
+
async function hubAdminOrders(baseUrl, token, params = {}) {
|
|
551
|
+
const qs = adminQuery({
|
|
552
|
+
status: params.status,
|
|
553
|
+
provider: params.provider,
|
|
554
|
+
q: params.q,
|
|
555
|
+
from: params.from,
|
|
556
|
+
to: params.to,
|
|
557
|
+
limit: params.limit,
|
|
558
|
+
offset: params.offset
|
|
559
|
+
});
|
|
560
|
+
return await req(baseUrl, token, `/api/hub/admin/orders${qs}`);
|
|
561
|
+
}
|
|
562
|
+
async function hubAdminMarkOrder(baseUrl, token, orderId, input) {
|
|
563
|
+
return await req(baseUrl, token, `/api/hub/admin/orders/${encodeURIComponent(orderId)}/mark`, {
|
|
564
|
+
method: "POST",
|
|
565
|
+
body: JSON.stringify(input)
|
|
566
|
+
});
|
|
567
|
+
}
|
|
568
|
+
async function hubAdminAudit(baseUrl, token, params = {}) {
|
|
569
|
+
const qs = adminQuery({
|
|
570
|
+
userId: params.userId,
|
|
571
|
+
action: params.action,
|
|
572
|
+
limit: params.limit,
|
|
573
|
+
offset: params.offset
|
|
574
|
+
});
|
|
575
|
+
return await req(baseUrl, token, `/api/hub/admin/audit${qs}`);
|
|
576
|
+
}
|
|
577
|
+
async function hubAdminRegisterAttempts(baseUrl, token, params = {}) {
|
|
578
|
+
const qs = adminQuery({
|
|
579
|
+
q: params.q,
|
|
580
|
+
success: params.success === void 0 ? void 0 : params.success ? 1 : 0,
|
|
581
|
+
limit: params.limit,
|
|
582
|
+
offset: params.offset
|
|
583
|
+
});
|
|
584
|
+
return await req(baseUrl, token, `/api/hub/admin/register-attempts${qs}`);
|
|
585
|
+
}
|
|
586
|
+
function hubNotificationStream(baseUrl, token, onNotification, onClosed, onActivity) {
|
|
587
|
+
const controller = new AbortController();
|
|
588
|
+
let cancelled = false;
|
|
589
|
+
const url = `${resolveBase(baseUrl).replace(/\/$/, "")}/api/hub/notifications/stream`;
|
|
590
|
+
(async () => {
|
|
591
|
+
try {
|
|
592
|
+
const res = await fetch(url, {
|
|
593
|
+
signal: controller.signal,
|
|
594
|
+
headers: { Accept: "text/event-stream", Authorization: `Bearer ${token}` }
|
|
595
|
+
});
|
|
596
|
+
if (!res.ok || !res.body) {
|
|
597
|
+
onClosed?.();
|
|
598
|
+
return;
|
|
599
|
+
}
|
|
600
|
+
const reader = res.body.getReader();
|
|
601
|
+
const decoder = new TextDecoder();
|
|
602
|
+
let buf = "";
|
|
603
|
+
for (; ; ) {
|
|
604
|
+
const { done, value } = await reader.read();
|
|
605
|
+
if (done) break;
|
|
606
|
+
onActivity?.();
|
|
607
|
+
buf += decoder.decode(value, { stream: true });
|
|
608
|
+
let idx;
|
|
609
|
+
while ((idx = buf.indexOf("\n\n")) >= 0) {
|
|
610
|
+
const frame = buf.slice(0, idx);
|
|
611
|
+
buf = buf.slice(idx + 2);
|
|
612
|
+
const data = frame.split("\n").filter((l) => l.startsWith("data:")).map((l) => l.slice(5).trim()).join("\n");
|
|
613
|
+
if (!data) continue;
|
|
614
|
+
try {
|
|
615
|
+
onNotification(JSON.parse(data));
|
|
616
|
+
} catch {
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
} catch {
|
|
621
|
+
} finally {
|
|
622
|
+
if (!cancelled) onClosed?.();
|
|
623
|
+
}
|
|
624
|
+
})();
|
|
625
|
+
return () => {
|
|
626
|
+
cancelled = true;
|
|
627
|
+
controller.abort();
|
|
628
|
+
};
|
|
629
|
+
}
|
|
630
|
+
async function hubNotifySettings(baseUrl, token) {
|
|
631
|
+
return await req(baseUrl, token, "/api/hub/notify/settings");
|
|
632
|
+
}
|
|
633
|
+
async function hubSaveNotifySettings(baseUrl, token, settings) {
|
|
634
|
+
return await req(baseUrl, token, "/api/hub/notify/settings", {
|
|
635
|
+
method: "PUT",
|
|
636
|
+
body: JSON.stringify(settings)
|
|
637
|
+
});
|
|
638
|
+
}
|
|
639
|
+
async function hubPins(baseUrl, token) {
|
|
640
|
+
return await req(baseUrl, token, "/api/hub/pins");
|
|
641
|
+
}
|
|
642
|
+
async function hubSavePins(baseUrl, token, pins) {
|
|
643
|
+
return await req(baseUrl, token, "/api/hub/pins", {
|
|
644
|
+
method: "PUT",
|
|
645
|
+
body: JSON.stringify(pins)
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
async function hubTestNotify(baseUrl, token) {
|
|
649
|
+
return await req(baseUrl, token, "/api/hub/notify/test", {
|
|
650
|
+
method: "POST"
|
|
651
|
+
});
|
|
652
|
+
}
|
|
653
|
+
async function hubNotifyEvents(baseUrl, token, limit = 50) {
|
|
654
|
+
const qs = `?limit=${encodeURIComponent(String(limit))}`;
|
|
655
|
+
return await req(baseUrl, token, `/api/hub/notify/events${qs}`);
|
|
656
|
+
}
|
|
657
|
+
async function hubSmtpSettings(baseUrl, token) {
|
|
658
|
+
return await req(baseUrl, token, "/api/hub/notify/smtp");
|
|
659
|
+
}
|
|
660
|
+
async function hubSaveSmtpSettings(baseUrl, token, input) {
|
|
661
|
+
return await req(baseUrl, token, "/api/hub/notify/smtp", {
|
|
662
|
+
method: "PUT",
|
|
663
|
+
body: JSON.stringify(input)
|
|
664
|
+
});
|
|
665
|
+
}
|
|
666
|
+
async function hubClearSmtpSettings(baseUrl, token) {
|
|
667
|
+
return await req(baseUrl, token, "/api/hub/notify/smtp", {
|
|
668
|
+
method: "DELETE"
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
async function hubNotifyPreview(baseUrl, token) {
|
|
672
|
+
return await req(baseUrl, token, "/api/hub/notify/preview");
|
|
673
|
+
}
|
|
674
|
+
async function hubApiService(baseUrl, token, opts = {}) {
|
|
675
|
+
const q = new URLSearchParams();
|
|
676
|
+
if (opts.from) q.set("from", opts.from);
|
|
677
|
+
if (opts.to) q.set("to", opts.to);
|
|
678
|
+
if (opts.groupBy) q.set("groupBy", opts.groupBy);
|
|
679
|
+
const suffix = q.toString() ? `?${q}` : "";
|
|
680
|
+
return await req(baseUrl, token, `/api/hub/api-service${suffix}`);
|
|
681
|
+
}
|
|
682
|
+
async function hubRotateApiKey(baseUrl, token) {
|
|
683
|
+
return await req(baseUrl, token, "/api/hub/api-service/key/rotate", {
|
|
684
|
+
method: "POST"
|
|
685
|
+
});
|
|
686
|
+
}
|
|
687
|
+
async function hubRequestApiService(baseUrl, token, input) {
|
|
688
|
+
return await req(baseUrl, token, "/api/hub/api-service/request", {
|
|
689
|
+
method: "POST",
|
|
690
|
+
body: JSON.stringify(input)
|
|
691
|
+
});
|
|
692
|
+
}
|
|
693
|
+
async function hubAdminNodeBilling(baseUrl, token) {
|
|
694
|
+
return await req(baseUrl, token, "/api/hub/admin/node-billing");
|
|
695
|
+
}
|
|
696
|
+
async function hubAdminUpdateNodeBilling(baseUrl, token, pricing) {
|
|
697
|
+
return await req(baseUrl, token, "/api/hub/admin/node-billing", {
|
|
698
|
+
method: "PUT",
|
|
699
|
+
body: JSON.stringify(pricing)
|
|
700
|
+
});
|
|
701
|
+
}
|
|
702
|
+
async function hubAdminWallet(baseUrl, token, userId, opts = {}) {
|
|
703
|
+
const q = new URLSearchParams({ userId });
|
|
704
|
+
if (opts.from) q.set("from", opts.from);
|
|
705
|
+
if (opts.to) q.set("to", opts.to);
|
|
706
|
+
if (opts.groupBy) q.set("groupBy", opts.groupBy);
|
|
707
|
+
return await req(baseUrl, token, `/api/hub/admin/wallets?${q}`);
|
|
708
|
+
}
|
|
709
|
+
async function hubAdminTopup(baseUrl, token, userId, input) {
|
|
710
|
+
return await req(baseUrl, token, `/api/hub/admin/users/${userId}/wallet`, {
|
|
711
|
+
method: "POST",
|
|
712
|
+
body: JSON.stringify({ deltaYuan: input.amountYuan, note: input.note ?? "" })
|
|
713
|
+
});
|
|
714
|
+
}
|
|
715
|
+
async function hubAdminCommunity(baseUrl, token) {
|
|
716
|
+
return await req(baseUrl, token, "/api/hub/admin/community");
|
|
717
|
+
}
|
|
718
|
+
async function hubAdminUpdateCommunity(baseUrl, token, dataUrl) {
|
|
719
|
+
return await req(baseUrl, token, "/api/hub/admin/community", {
|
|
720
|
+
method: "PUT",
|
|
721
|
+
body: JSON.stringify({ dataUrl })
|
|
722
|
+
});
|
|
723
|
+
}
|
|
724
|
+
async function hubAdminClearCommunity(baseUrl, token) {
|
|
725
|
+
return await req(baseUrl, token, "/api/hub/admin/community", {
|
|
726
|
+
method: "DELETE"
|
|
727
|
+
});
|
|
728
|
+
}
|
|
729
|
+
async function hubAdminSocialQrs(baseUrl, token) {
|
|
730
|
+
return await req(baseUrl, token, "/api/hub/admin/community/qrs");
|
|
731
|
+
}
|
|
732
|
+
async function hubAdminAddSocialQr(baseUrl, token, input) {
|
|
733
|
+
return await req(baseUrl, token, "/api/hub/admin/community/qrs", {
|
|
734
|
+
method: "POST",
|
|
735
|
+
body: JSON.stringify(input)
|
|
736
|
+
});
|
|
737
|
+
}
|
|
738
|
+
async function hubAdminUpdateSocialQr(baseUrl, token, id, patch) {
|
|
739
|
+
return await req(baseUrl, token, `/api/hub/admin/community/qrs/${encodeURIComponent(id)}`, {
|
|
740
|
+
method: "PUT",
|
|
741
|
+
body: JSON.stringify(patch)
|
|
742
|
+
});
|
|
743
|
+
}
|
|
744
|
+
async function hubAdminRemoveSocialQr(baseUrl, token, id) {
|
|
745
|
+
return await req(baseUrl, token, `/api/hub/admin/community/qrs/${encodeURIComponent(id)}`, {
|
|
746
|
+
method: "DELETE"
|
|
747
|
+
});
|
|
748
|
+
}
|
|
749
|
+
async function hubAdminLinkZqai(baseUrl, token, userId, input) {
|
|
750
|
+
return await req(baseUrl, token, `/api/hub/admin/users/${encodeURIComponent(userId)}/zqai`, {
|
|
751
|
+
method: "PUT",
|
|
752
|
+
body: JSON.stringify(input)
|
|
753
|
+
});
|
|
754
|
+
}
|
|
755
|
+
async function hubWallet(baseUrl, token) {
|
|
756
|
+
return await req(baseUrl, token, "/api/hub/wallet");
|
|
757
|
+
}
|
|
758
|
+
async function hubWalletTopup(baseUrl, token, input) {
|
|
759
|
+
return await req(baseUrl, token, "/api/hub/wallet/topup", {
|
|
760
|
+
method: "POST",
|
|
761
|
+
body: JSON.stringify(input)
|
|
762
|
+
});
|
|
763
|
+
}
|
|
764
|
+
async function hubApiTopup(baseUrl, token, input) {
|
|
765
|
+
return await req(baseUrl, token, "/api/hub/api-service/topup", {
|
|
766
|
+
method: "POST",
|
|
767
|
+
body: JSON.stringify(input)
|
|
768
|
+
});
|
|
769
|
+
}
|
|
770
|
+
async function hubAdminBillingReport(baseUrl, token, range = {}) {
|
|
771
|
+
const q = new URLSearchParams();
|
|
772
|
+
if (range.from) q.set("from", range.from);
|
|
773
|
+
if (range.to) q.set("to", range.to);
|
|
774
|
+
const suffix = q.toString() ? `?${q}` : "";
|
|
775
|
+
return await req(baseUrl, token, `/api/hub/admin/reports/billing${suffix}`);
|
|
776
|
+
}
|
|
777
|
+
function hubBillingExportUrl(baseUrl, range = {}) {
|
|
778
|
+
const q = new URLSearchParams();
|
|
779
|
+
if (range.from) q.set("from", range.from);
|
|
780
|
+
if (range.to) q.set("to", range.to);
|
|
781
|
+
const suffix = q.toString() ? `?${q}` : "";
|
|
782
|
+
return `${resolveBase(baseUrl).replace(/\/$/, "")}/api/hub/admin/reports/billing/export${suffix}`;
|
|
783
|
+
}
|
|
784
|
+
async function hubAdminRefund(baseUrl, token, userId, input) {
|
|
785
|
+
return await req(baseUrl, token, `/api/hub/admin/users/${encodeURIComponent(userId)}/refund`, {
|
|
786
|
+
method: "POST",
|
|
787
|
+
body: JSON.stringify(input)
|
|
788
|
+
});
|
|
789
|
+
}
|
|
790
|
+
async function hubStatement(baseUrl, token, range = {}) {
|
|
791
|
+
const q = new URLSearchParams();
|
|
792
|
+
if (range.from) q.set("from", range.from);
|
|
793
|
+
if (range.to) q.set("to", range.to);
|
|
794
|
+
const suffix = q.toString() ? `?${q}` : "";
|
|
795
|
+
return await req(baseUrl, token, `/api/hub/statement${suffix}`);
|
|
796
|
+
}
|
|
797
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
798
|
+
0 && (module.exports = {
|
|
799
|
+
activityKey,
|
|
800
|
+
compareByActivity,
|
|
801
|
+
hubAdminAddSocialQr,
|
|
802
|
+
hubAdminAudit,
|
|
803
|
+
hubAdminBillingReport,
|
|
804
|
+
hubAdminClearCommunity,
|
|
805
|
+
hubAdminCommunity,
|
|
806
|
+
hubAdminDeleteFleet,
|
|
807
|
+
hubAdminDeleteNode,
|
|
808
|
+
hubAdminDeleteUser,
|
|
809
|
+
hubAdminDisableUser,
|
|
810
|
+
hubAdminEnableUser,
|
|
811
|
+
hubAdminLinkZqai,
|
|
812
|
+
hubAdminMarkOrder,
|
|
813
|
+
hubAdminNodeBilling,
|
|
814
|
+
hubAdminNotifyUser,
|
|
815
|
+
hubAdminOrders,
|
|
816
|
+
hubAdminOverview,
|
|
817
|
+
hubAdminRefund,
|
|
818
|
+
hubAdminRegisterAttempts,
|
|
819
|
+
hubAdminRemoveSocialQr,
|
|
820
|
+
hubAdminSetRole,
|
|
821
|
+
hubAdminSocialQrs,
|
|
822
|
+
hubAdminTopup,
|
|
823
|
+
hubAdminUpdateCommunity,
|
|
824
|
+
hubAdminUpdateNodeBilling,
|
|
825
|
+
hubAdminUpdateSocialQr,
|
|
826
|
+
hubAdminUpdateUser,
|
|
827
|
+
hubAdminUserDetail,
|
|
828
|
+
hubAdminUsers,
|
|
829
|
+
hubAdminWallet,
|
|
830
|
+
hubApiService,
|
|
831
|
+
hubApiTopup,
|
|
832
|
+
hubBillingExportUrl,
|
|
833
|
+
hubCaptcha,
|
|
834
|
+
hubChangePassword,
|
|
835
|
+
hubChannels,
|
|
836
|
+
hubClearSmtpSettings,
|
|
837
|
+
hubCreateEnrollment,
|
|
838
|
+
hubCreateFleet,
|
|
839
|
+
hubCreateNodeGrant,
|
|
840
|
+
hubDeleteFleet,
|
|
841
|
+
hubDeleteNode,
|
|
842
|
+
hubEnrollByAccount,
|
|
843
|
+
hubEnrollByCode,
|
|
844
|
+
hubEnrollByToken,
|
|
845
|
+
hubEnrollNode,
|
|
846
|
+
hubFleetPairing,
|
|
847
|
+
hubGetNode,
|
|
848
|
+
hubGetNodeById,
|
|
849
|
+
hubGetUsage,
|
|
850
|
+
hubLeaveSharedNode,
|
|
851
|
+
hubListFleets,
|
|
852
|
+
hubListNodeGrants,
|
|
853
|
+
hubListNodes,
|
|
854
|
+
hubListProjects,
|
|
855
|
+
hubListTasks,
|
|
856
|
+
hubLogin,
|
|
857
|
+
hubLoginAccount,
|
|
858
|
+
hubMarkNotificationsRead,
|
|
859
|
+
hubMe,
|
|
860
|
+
hubMoveNode,
|
|
861
|
+
hubNodeActivity,
|
|
862
|
+
hubNodeUsageReport,
|
|
863
|
+
hubNotificationStream,
|
|
864
|
+
hubNotifications,
|
|
865
|
+
hubNotifyEvents,
|
|
866
|
+
hubNotifyPreview,
|
|
867
|
+
hubNotifySettings,
|
|
868
|
+
hubOrders,
|
|
869
|
+
hubOutgoingGrants,
|
|
870
|
+
hubPins,
|
|
871
|
+
hubPlans,
|
|
872
|
+
hubRealtimeCredential,
|
|
873
|
+
hubRegister,
|
|
874
|
+
hubRegisterAccount,
|
|
875
|
+
hubRequestApiService,
|
|
876
|
+
hubResetPassword,
|
|
877
|
+
hubRevokeNodeGrant,
|
|
878
|
+
hubRotateApiKey,
|
|
879
|
+
hubSaveNotifySettings,
|
|
880
|
+
hubSavePins,
|
|
881
|
+
hubSaveSmtpSettings,
|
|
882
|
+
hubSendCodeStatus,
|
|
883
|
+
hubSendEmailCode,
|
|
884
|
+
hubSendSms,
|
|
885
|
+
hubSharedNodes,
|
|
886
|
+
hubSmsStatus,
|
|
887
|
+
hubSmtpSettings,
|
|
888
|
+
hubStatement,
|
|
889
|
+
hubSubscription,
|
|
890
|
+
hubSyncOrder,
|
|
891
|
+
hubTerminalCredential,
|
|
892
|
+
hubTestNotify,
|
|
893
|
+
hubUpdateFleet,
|
|
894
|
+
hubUpdateNode,
|
|
895
|
+
hubUpdateNodeLabelSelf,
|
|
896
|
+
hubUpdateProfile,
|
|
897
|
+
hubWallet,
|
|
898
|
+
hubWalletTopup,
|
|
899
|
+
setHubBaseResolver
|
|
900
|
+
});
|
|
901
|
+
//# sourceMappingURL=hub-api.cjs.map
|