@howone/sdk 0.2.9 → 0.2.11
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/dist/index.d.mts +0 -10
- package/dist/index.d.ts +0 -10
- package/dist/index.js +86 -141
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +86 -141
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -11,16 +11,6 @@ interface FloatingButtonProps {
|
|
|
11
11
|
}
|
|
12
12
|
declare const FloatingButton: React$1.FC<FloatingButtonProps>;
|
|
13
13
|
|
|
14
|
-
/**
|
|
15
|
-
* 统一认证服务
|
|
16
|
-
*
|
|
17
|
-
* 提供多种认证功能,包括:
|
|
18
|
-
* - Google OAuth 认证
|
|
19
|
-
* - GitHub OAuth 认证
|
|
20
|
-
* - 邮箱验证码认证
|
|
21
|
-
* - Token 验证和管理
|
|
22
|
-
* - 退出登录
|
|
23
|
-
*/
|
|
24
14
|
/**
|
|
25
15
|
* 发送验证码请求接口
|
|
26
16
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -11,16 +11,6 @@ interface FloatingButtonProps {
|
|
|
11
11
|
}
|
|
12
12
|
declare const FloatingButton: React$1.FC<FloatingButtonProps>;
|
|
13
13
|
|
|
14
|
-
/**
|
|
15
|
-
* 统一认证服务
|
|
16
|
-
*
|
|
17
|
-
* 提供多种认证功能,包括:
|
|
18
|
-
* - Google OAuth 认证
|
|
19
|
-
* - GitHub OAuth 认证
|
|
20
|
-
* - 邮箱验证码认证
|
|
21
|
-
* - Token 验证和管理
|
|
22
|
-
* - 退出登录
|
|
23
|
-
*/
|
|
24
14
|
/**
|
|
25
15
|
* 发送验证码请求接口
|
|
26
16
|
*/
|
package/dist/index.js
CHANGED
|
@@ -30,6 +30,77 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
30
30
|
));
|
|
31
31
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
32
32
|
|
|
33
|
+
// src/config.ts
|
|
34
|
+
var config_exports = {};
|
|
35
|
+
__export(config_exports, {
|
|
36
|
+
getDefaultProjectId: () => getDefaultProjectId,
|
|
37
|
+
getEnvironment: () => getEnvironment,
|
|
38
|
+
getEnvs: () => getEnvs,
|
|
39
|
+
getGlobalEnvironment: () => getGlobalEnvironment,
|
|
40
|
+
setDefaultProjectId: () => setDefaultProjectId,
|
|
41
|
+
setEnvironment: () => setEnvironment
|
|
42
|
+
});
|
|
43
|
+
function setEnvironment(e) {
|
|
44
|
+
env = e;
|
|
45
|
+
return envs[env] || envs["dev"];
|
|
46
|
+
}
|
|
47
|
+
function getEnvironment() {
|
|
48
|
+
return env;
|
|
49
|
+
}
|
|
50
|
+
function getEnvs() {
|
|
51
|
+
return envs[env] || envs["dev"];
|
|
52
|
+
}
|
|
53
|
+
function setDefaultProjectId(id) {
|
|
54
|
+
DEFAULT_PROJECT_ID = id;
|
|
55
|
+
}
|
|
56
|
+
function getDefaultProjectId() {
|
|
57
|
+
try {
|
|
58
|
+
if (DEFAULT_PROJECT_ID) return DEFAULT_PROJECT_ID;
|
|
59
|
+
const g = globalThis.__HOWONE_PROJECT_ID__;
|
|
60
|
+
if (typeof g === "string" && g.length > 0) return String(g);
|
|
61
|
+
return null;
|
|
62
|
+
} catch {
|
|
63
|
+
return DEFAULT_PROJECT_ID;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function getGlobalEnvironment() {
|
|
67
|
+
try {
|
|
68
|
+
const g = globalThis.__HOWONE_ENV__;
|
|
69
|
+
if (g === "local" || g === "dev" || g === "prod") return g;
|
|
70
|
+
return null;
|
|
71
|
+
} catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
var DEFAULT_PROJECT_ID, env, localEnv, devEnv, prodEnv, envs;
|
|
76
|
+
var init_config = __esm({
|
|
77
|
+
"src/config.ts"() {
|
|
78
|
+
"use strict";
|
|
79
|
+
DEFAULT_PROJECT_ID = null;
|
|
80
|
+
env = "dev";
|
|
81
|
+
localEnv = {
|
|
82
|
+
AUTH_ROOT_VALUE: "https://howone.dev",
|
|
83
|
+
baseUrl: "http://localhost:3002/api",
|
|
84
|
+
aiBaseUrl: "https://evoagentx-server.fly.dev"
|
|
85
|
+
};
|
|
86
|
+
devEnv = {
|
|
87
|
+
AUTH_ROOT_VALUE: "https://howone.dev",
|
|
88
|
+
baseUrl: "https://api.howone.dev/api",
|
|
89
|
+
aiBaseUrl: "https://evoagentx-server-stable.fly.dev"
|
|
90
|
+
};
|
|
91
|
+
prodEnv = {
|
|
92
|
+
AUTH_ROOT_VALUE: "https://howone.ai",
|
|
93
|
+
baseUrl: "https://api.howone.ai/api",
|
|
94
|
+
aiBaseUrl: "https://evoagentx-server-deploy.fly.dev"
|
|
95
|
+
};
|
|
96
|
+
envs = {
|
|
97
|
+
local: localEnv,
|
|
98
|
+
dev: devEnv,
|
|
99
|
+
prod: prodEnv
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
|
|
33
104
|
// src/auth/index.ts
|
|
34
105
|
var auth_exports = {};
|
|
35
106
|
__export(auth_exports, {
|
|
@@ -179,77 +250,6 @@ var init_auth = __esm({
|
|
|
179
250
|
}
|
|
180
251
|
});
|
|
181
252
|
|
|
182
|
-
// src/config.ts
|
|
183
|
-
var config_exports = {};
|
|
184
|
-
__export(config_exports, {
|
|
185
|
-
getDefaultProjectId: () => getDefaultProjectId,
|
|
186
|
-
getEnvironment: () => getEnvironment,
|
|
187
|
-
getEnvs: () => getEnvs,
|
|
188
|
-
getGlobalEnvironment: () => getGlobalEnvironment,
|
|
189
|
-
setDefaultProjectId: () => setDefaultProjectId,
|
|
190
|
-
setEnvironment: () => setEnvironment
|
|
191
|
-
});
|
|
192
|
-
function setEnvironment(e) {
|
|
193
|
-
env = e;
|
|
194
|
-
return envs[env] || envs["dev"];
|
|
195
|
-
}
|
|
196
|
-
function getEnvironment() {
|
|
197
|
-
return env;
|
|
198
|
-
}
|
|
199
|
-
function getEnvs() {
|
|
200
|
-
return envs[env] || envs["dev"];
|
|
201
|
-
}
|
|
202
|
-
function setDefaultProjectId(id) {
|
|
203
|
-
DEFAULT_PROJECT_ID = id;
|
|
204
|
-
}
|
|
205
|
-
function getDefaultProjectId() {
|
|
206
|
-
try {
|
|
207
|
-
if (DEFAULT_PROJECT_ID) return DEFAULT_PROJECT_ID;
|
|
208
|
-
const g = globalThis.__HOWONE_PROJECT_ID__;
|
|
209
|
-
if (typeof g === "string" && g.length > 0) return String(g);
|
|
210
|
-
return null;
|
|
211
|
-
} catch {
|
|
212
|
-
return DEFAULT_PROJECT_ID;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
function getGlobalEnvironment() {
|
|
216
|
-
try {
|
|
217
|
-
const g = globalThis.__HOWONE_ENV__;
|
|
218
|
-
if (g === "local" || g === "dev" || g === "prod") return g;
|
|
219
|
-
return null;
|
|
220
|
-
} catch {
|
|
221
|
-
return null;
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
var DEFAULT_PROJECT_ID, env, localEnv, devEnv, prodEnv, envs;
|
|
225
|
-
var init_config = __esm({
|
|
226
|
-
"src/config.ts"() {
|
|
227
|
-
"use strict";
|
|
228
|
-
DEFAULT_PROJECT_ID = null;
|
|
229
|
-
env = "dev";
|
|
230
|
-
localEnv = {
|
|
231
|
-
AUTH_ROOT_VALUE: "https://howone.dev",
|
|
232
|
-
baseUrl: "http://localhost:3002/api",
|
|
233
|
-
aiBaseUrl: "https://evoagentx-server.fly.dev"
|
|
234
|
-
};
|
|
235
|
-
devEnv = {
|
|
236
|
-
AUTH_ROOT_VALUE: "https://howone.dev",
|
|
237
|
-
baseUrl: "https://api.howone.dev/api",
|
|
238
|
-
aiBaseUrl: "https://evoagentx-server-stable.fly.dev"
|
|
239
|
-
};
|
|
240
|
-
prodEnv = {
|
|
241
|
-
AUTH_ROOT_VALUE: "https://howone.ai",
|
|
242
|
-
baseUrl: "https://api.howone.ai/api",
|
|
243
|
-
aiBaseUrl: "https://evoagentx-server-deploy.fly.dev"
|
|
244
|
-
};
|
|
245
|
-
envs = {
|
|
246
|
-
local: localEnv,
|
|
247
|
-
dev: devEnv,
|
|
248
|
-
prod: prodEnv
|
|
249
|
-
};
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
|
|
253
253
|
// src/index.ts
|
|
254
254
|
var index_exports = {};
|
|
255
255
|
__export(index_exports, {
|
|
@@ -343,9 +343,19 @@ var FloatingButton = ({
|
|
|
343
343
|
};
|
|
344
344
|
|
|
345
345
|
// src/services/unified-oauth.ts
|
|
346
|
+
init_config();
|
|
347
|
+
var API_BASE_URLS = {
|
|
348
|
+
local: "https://create-x-backend-dev.fly.dev",
|
|
349
|
+
dev: "https://create-x-backend-dev.fly.dev",
|
|
350
|
+
prod: "https://create-x-backend.fly.dev"
|
|
351
|
+
};
|
|
352
|
+
var resolveApiBaseUrl = () => {
|
|
353
|
+
const env2 = getGlobalEnvironment() ?? "dev";
|
|
354
|
+
return API_BASE_URLS[env2] ?? API_BASE_URLS.dev;
|
|
355
|
+
};
|
|
346
356
|
var UnifiedAuthService = class {
|
|
347
357
|
constructor() {
|
|
348
|
-
this.API_BASE_URL =
|
|
358
|
+
this.API_BASE_URL = resolveApiBaseUrl();
|
|
349
359
|
}
|
|
350
360
|
/**
|
|
351
361
|
* 初始化 Google 登录流程
|
|
@@ -3157,7 +3167,6 @@ var ErrorTracking = class {
|
|
|
3157
3167
|
this.setupGlobalErrorListeners();
|
|
3158
3168
|
this.setupConsoleInterception();
|
|
3159
3169
|
this.setupNetworkMonitoring();
|
|
3160
|
-
this.setupResourceLoadMonitoring();
|
|
3161
3170
|
this.initialized = true;
|
|
3162
3171
|
setTimeout(() => {
|
|
3163
3172
|
this.fullyInitialized = true;
|
|
@@ -3168,7 +3177,7 @@ var ErrorTracking = class {
|
|
|
3168
3177
|
*/
|
|
3169
3178
|
setupGlobalErrorListeners() {
|
|
3170
3179
|
window.addEventListener("error", (event) => {
|
|
3171
|
-
|
|
3180
|
+
event.preventDefault();
|
|
3172
3181
|
this.handleError(event.error || new Error(event.message), {
|
|
3173
3182
|
filename: event.filename,
|
|
3174
3183
|
lineno: event.lineno,
|
|
@@ -3178,8 +3187,8 @@ var ErrorTracking = class {
|
|
|
3178
3187
|
});
|
|
3179
3188
|
});
|
|
3180
3189
|
window.addEventListener("unhandledrejection", (event) => {
|
|
3190
|
+
event.preventDefault();
|
|
3181
3191
|
const error = event.reason instanceof Error ? event.reason : new Error(String(event.reason));
|
|
3182
|
-
this.internalLog("warn", "\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u6355\u83B7 unhandledrejection:", error.message);
|
|
3183
3192
|
this.handleError(error, {
|
|
3184
3193
|
type: "promise",
|
|
3185
3194
|
source: "unhandledrejection"
|
|
@@ -3214,12 +3223,7 @@ var ErrorTracking = class {
|
|
|
3214
3223
|
*/
|
|
3215
3224
|
safeForwardConsoleToParent(method, args) {
|
|
3216
3225
|
if (window.parent === window) return;
|
|
3217
|
-
|
|
3218
|
-
const is504Error = argsStr.includes("504") || argsStr.includes("gateway timeout");
|
|
3219
|
-
if (is504Error) {
|
|
3220
|
-
this.internalLog("warn", "\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}[ErrorTracking] \u63A7\u5236\u53F0\u6355\u83B7 504 \u9519\u8BEF:", argsStr.substring(0, 100));
|
|
3221
|
-
}
|
|
3222
|
-
if (!is504Error && !this.fullyInitialized) return;
|
|
3226
|
+
if (!this.fullyInitialized) return;
|
|
3223
3227
|
try {
|
|
3224
3228
|
let stack = null;
|
|
3225
3229
|
if (method === "warn" || method === "error") {
|
|
@@ -3295,43 +3299,6 @@ var ErrorTracking = class {
|
|
|
3295
3299
|
this.internalLog("error", "[ErrorTracking] \u63A7\u5236\u53F0\u8F6C\u53D1\u5931\u8D25:", error);
|
|
3296
3300
|
}
|
|
3297
3301
|
}
|
|
3298
|
-
/**
|
|
3299
|
-
* 设置资源加载监控(使用 PerformanceObserver 监控 504 错误)
|
|
3300
|
-
*/
|
|
3301
|
-
setupResourceLoadMonitoring() {
|
|
3302
|
-
if (!window.PerformanceObserver) {
|
|
3303
|
-
this.internalLog("warn", "\u274C\u274C\u274CPerformanceObserver \u4E0D\u652F\u6301\u274C\u274C\u274C");
|
|
3304
|
-
return;
|
|
3305
|
-
}
|
|
3306
|
-
try {
|
|
3307
|
-
const observer = new PerformanceObserver((list) => {
|
|
3308
|
-
for (const entry of list.getEntries()) {
|
|
3309
|
-
console.log("\u{1F30D}\u{1F30D}entry---------entry\u{1F30D}\u{1F30D}", entry);
|
|
3310
|
-
if (entry.entryType === "resource") {
|
|
3311
|
-
const resourceEntry = entry;
|
|
3312
|
-
if (resourceEntry.transferSize === 0 && !resourceEntry.duration) {
|
|
3313
|
-
const url = resourceEntry.name;
|
|
3314
|
-
console.log("\u{1F30D}\u{1F30D}url--------------url\u{1F30D}\u{1F30D}", url);
|
|
3315
|
-
if (url.includes(".js") || url.includes(".mjs")) {
|
|
3316
|
-
this.internalLog("error", "\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u68C0\u6D4B\u5230\u8D44\u6E90\u52A0\u8F7D\u5931\u8D25\uFF08\u53EF\u80FD\u662F 504\uFF09:", url);
|
|
3317
|
-
this.handleError(new Error(`Resource load failed (possibly 504): ${url}`), {
|
|
3318
|
-
type: "resource",
|
|
3319
|
-
resourceUrl: url,
|
|
3320
|
-
source: "PerformanceObserver",
|
|
3321
|
-
transferSize: resourceEntry.transferSize,
|
|
3322
|
-
duration: resourceEntry.duration
|
|
3323
|
-
});
|
|
3324
|
-
}
|
|
3325
|
-
}
|
|
3326
|
-
}
|
|
3327
|
-
}
|
|
3328
|
-
});
|
|
3329
|
-
observer.observe({ entryTypes: ["resource"] });
|
|
3330
|
-
this.internalLog("log", "\u2705\u2705\u2705\u2705\u2705\u2705\u2705\u2705\u2705\u2705\u5DF2\u542F\u52A8\uFF0C\u76D1\u63A7\u8D44\u6E90\u52A0\u8F7D");
|
|
3331
|
-
} catch (error) {
|
|
3332
|
-
this.internalLog("error", "\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u274CPerformanceObserver \u8BBE\u7F6E\u5931\u8D25:", error);
|
|
3333
|
-
}
|
|
3334
|
-
}
|
|
3335
3302
|
/**
|
|
3336
3303
|
* 设置网络监控
|
|
3337
3304
|
*/
|
|
@@ -3464,34 +3431,12 @@ var ErrorTracking = class {
|
|
|
3464
3431
|
}, 5e3);
|
|
3465
3432
|
return false;
|
|
3466
3433
|
}
|
|
3467
|
-
/**
|
|
3468
|
-
* 判断是否是 504 错误或资源加载失败,需要立即发送
|
|
3469
|
-
*/
|
|
3470
|
-
isCriticalNetworkError(error, details) {
|
|
3471
|
-
const message = error.message?.toLowerCase() || "";
|
|
3472
|
-
console.log("\u5F00\u59CB\u68C0\u6D4B\u2705\u5F00\u59CB\u68C0\u6D4B\u2705\u5F00\u59CB\u68C0\u6D4B\u2705\u5F00\u59CB\u68C0\u6D4B\u2705\u5F00\u59CB\u68C0\u6D4B\u2705", message, details);
|
|
3473
|
-
if (message.includes("504") || message.includes("gateway timeout")) {
|
|
3474
|
-
return true;
|
|
3475
|
-
}
|
|
3476
|
-
if (details.type === "resource" && details.source === "PerformanceObserver") {
|
|
3477
|
-
return true;
|
|
3478
|
-
}
|
|
3479
|
-
return false;
|
|
3480
|
-
}
|
|
3481
3434
|
/**
|
|
3482
3435
|
* 发送统一格式的错误
|
|
3483
3436
|
*/
|
|
3484
3437
|
sendUnifiedError(error, details = {}) {
|
|
3485
3438
|
if (window.parent === window) return;
|
|
3486
|
-
|
|
3487
|
-
console.log("\u53D1\u73B0504\u9519\u8BEF\u4E86\u5417\u2753\u2753\u2753\u2753\u2753\u2753\u2753\u2753", isCriticalError);
|
|
3488
|
-
if (isCriticalError) {
|
|
3489
|
-
this.internalLog("warn", "\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u68C0\u6D4B\u5230 504 \u9519\u8BEF\uFF0C\u7ACB\u5373\u53D1\u9001:", error.message);
|
|
3490
|
-
}
|
|
3491
|
-
console.log("\u7B2C\u4E8C\u4E2A\u5224\u65AD\u662F\u4EC0\u4E48\u2753\u2753\u2753\u2753\u2753\u2753\u2753\u2753", this.fullyInitialized);
|
|
3492
|
-
if (!isCriticalError && !this.fullyInitialized) {
|
|
3493
|
-
return;
|
|
3494
|
-
}
|
|
3439
|
+
if (!this.fullyInitialized) return;
|
|
3495
3440
|
try {
|
|
3496
3441
|
const currentViewInfo = this.viewDetector?.getCurrentViewInfo();
|
|
3497
3442
|
const payload = {
|