keepwork-sdk 1.0.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/README.md +21 -0
- package/dist-npm/keepwork-sdk.js +37514 -0
- package/dist-npm/keepwork-sdk.js.map +1 -0
- package/dist-npm/md5-CZ0vz1_S.js +240 -0
- package/dist-npm/md5-CZ0vz1_S.js.map +1 -0
- package/dist-npm/types/index.d.ts +42 -0
- package/dist-npm/types/index.d.ts.map +1 -0
- package/dist-npm/types/src/ai-chat/AIChat.core.d.ts +218 -0
- package/dist-npm/types/src/ai-chat/AIChat.core.d.ts.map +1 -0
- package/dist-npm/types/src/ai-chat/AIChat.d.ts +18 -0
- package/dist-npm/types/src/ai-chat/AIChat.d.ts.map +1 -0
- package/dist-npm/types/src/ai-chat/AIChat.session.d.ts +201 -0
- package/dist-npm/types/src/ai-chat/AIChat.session.d.ts.map +1 -0
- package/dist-npm/types/src/ai-chat/AIGenerators.base.d.ts +297 -0
- package/dist-npm/types/src/ai-chat/AIGenerators.base.d.ts.map +1 -0
- package/dist-npm/types/src/ai-chat/AIGenerators.d.ts +15 -0
- package/dist-npm/types/src/ai-chat/AIGenerators.d.ts.map +1 -0
- package/dist-npm/types/src/ai-chat/AIGenerators.media.d.ts +208 -0
- package/dist-npm/types/src/ai-chat/AIGenerators.media.d.ts.map +1 -0
- package/dist-npm/types/src/ai-chat/ChildSessionMixin.d.ts +153 -0
- package/dist-npm/types/src/ai-chat/ChildSessionMixin.d.ts.map +1 -0
- package/dist-npm/types/src/ai-chat/CopilotTools.d.ts +150 -0
- package/dist-npm/types/src/ai-chat/CopilotTools.d.ts.map +1 -0
- package/dist-npm/types/src/ai-chat/MqttManager.d.ts +123 -0
- package/dist-npm/types/src/ai-chat/MqttManager.d.ts.map +1 -0
- package/dist-npm/types/src/ai-chat/SandboxToolEnv.d.ts +210 -0
- package/dist-npm/types/src/ai-chat/SandboxToolEnv.d.ts.map +1 -0
- package/dist-npm/types/src/audio/AudioEngine.d.ts +272 -0
- package/dist-npm/types/src/audio/AudioEngine.d.ts.map +1 -0
- package/dist-npm/types/src/audio/AudioEngine.utils.d.ts +72 -0
- package/dist-npm/types/src/audio/AudioEngine.utils.d.ts.map +1 -0
- package/dist-npm/types/src/audio/Speech.d.ts +247 -0
- package/dist-npm/types/src/audio/Speech.d.ts.map +1 -0
- package/dist-npm/types/src/core/AgentConfig.d.ts +104 -0
- package/dist-npm/types/src/core/AgentConfig.d.ts.map +1 -0
- package/dist-npm/types/src/core/AgentRouter.d.ts +342 -0
- package/dist-npm/types/src/core/AgentRouter.d.ts.map +1 -0
- package/dist-npm/types/src/core/NPL.d.ts +251 -0
- package/dist-npm/types/src/core/NPL.d.ts.map +1 -0
- package/dist-npm/types/src/core/RemoteLog.d.ts +132 -0
- package/dist-npm/types/src/core/RemoteLog.d.ts.map +1 -0
- package/dist-npm/types/src/core/keepworkSDK.core.d.ts +84 -0
- package/dist-npm/types/src/core/keepworkSDK.core.d.ts.map +1 -0
- package/dist-npm/types/src/core/keepworkSDK.d.ts +129 -0
- package/dist-npm/types/src/core/keepworkSDK.d.ts.map +1 -0
- package/dist-npm/types/src/core/keepworkSDK.pages.d.ts +101 -0
- package/dist-npm/types/src/core/keepworkSDK.pages.d.ts.map +1 -0
- package/dist-npm/types/src/core/keepworkSDK.utils.d.ts +40 -0
- package/dist-npm/types/src/core/keepworkSDK.utils.d.ts.map +1 -0
- package/dist-npm/types/src/digital-human/DigitalHuman.d.ts +1316 -0
- package/dist-npm/types/src/digital-human/DigitalHuman.d.ts.map +1 -0
- package/dist-npm/types/src/digital-human/DigitalHumanBridge.d.ts +54 -0
- package/dist-npm/types/src/digital-human/DigitalHumanBridge.d.ts.map +1 -0
- package/dist-npm/types/src/digital-human/DigitalHumanConfig.d.ts +104 -0
- package/dist-npm/types/src/digital-human/DigitalHumanConfig.d.ts.map +1 -0
- package/dist-npm/types/src/digital-human/DigitalHumanFrame.d.ts +390 -0
- package/dist-npm/types/src/digital-human/DigitalHumanFrame.d.ts.map +1 -0
- package/dist-npm/types/src/digital-human/DigitalHumanFrameMessages.d.ts +59 -0
- package/dist-npm/types/src/digital-human/DigitalHumanFrameMessages.d.ts.map +1 -0
- package/dist-npm/types/src/digital-human/DigitalHumanSubtitleOverlay.d.ts +114 -0
- package/dist-npm/types/src/digital-human/DigitalHumanSubtitleOverlay.d.ts.map +1 -0
- package/dist-npm/types/src/digital-human/DigitalHumanUtils.d.ts +53 -0
- package/dist-npm/types/src/digital-human/DigitalHumanUtils.d.ts.map +1 -0
- package/dist-npm/types/src/rtc/AIChatRTC.constants.d.ts +65 -0
- package/dist-npm/types/src/rtc/AIChatRTC.constants.d.ts.map +1 -0
- package/dist-npm/types/src/rtc/AIChatRTC.d.ts +91 -0
- package/dist-npm/types/src/rtc/AIChatRTC.d.ts.map +1 -0
- package/dist-npm/types/src/rtc/AIChatRTC.session.d.ts +268 -0
- package/dist-npm/types/src/rtc/AIChatRTC.session.d.ts.map +1 -0
- package/dist-npm/types/src/rtc/AIChatRTCLocal.backends.d.ts +232 -0
- package/dist-npm/types/src/rtc/AIChatRTCLocal.backends.d.ts.map +1 -0
- package/dist-npm/types/src/rtc/AIChatRTCLocal.core.d.ts +92 -0
- package/dist-npm/types/src/rtc/AIChatRTCLocal.core.d.ts.map +1 -0
- package/dist-npm/types/src/rtc/AIChatRTCLocal.d.ts +15 -0
- package/dist-npm/types/src/rtc/AIChatRTCLocal.d.ts.map +1 -0
- package/dist-npm/types/src/rtc/AIChatRTCLocal.session.d.ts +127 -0
- package/dist-npm/types/src/rtc/AIChatRTCLocal.session.d.ts.map +1 -0
- package/dist-npm/types/src/rtc/LocalRTC.d.ts +91 -0
- package/dist-npm/types/src/rtc/LocalRTC.d.ts.map +1 -0
- package/dist-npm/types/src/rtc/SpeechRTC.d.ts +156 -0
- package/dist-npm/types/src/rtc/SpeechRTC.d.ts.map +1 -0
- package/dist-npm/types/src/rtc/SpeechRTC.transport.d.ts +191 -0
- package/dist-npm/types/src/rtc/SpeechRTC.transport.d.ts.map +1 -0
- package/dist-npm/types/src/store/CloudDrive.d.ts +140 -0
- package/dist-npm/types/src/store/CloudDrive.d.ts.map +1 -0
- package/dist-npm/types/src/store/LocalStorageUtil.d.ts +136 -0
- package/dist-npm/types/src/store/LocalStorageUtil.d.ts.map +1 -0
- package/dist-npm/types/src/store/PersonalPageStore.base.d.ts +267 -0
- package/dist-npm/types/src/store/PersonalPageStore.base.d.ts.map +1 -0
- package/dist-npm/types/src/store/PersonalPageStore.d.ts +13 -0
- package/dist-npm/types/src/store/PersonalPageStore.d.ts.map +1 -0
- package/dist-npm/types/src/store/PersonalPageStore.data.d.ts +198 -0
- package/dist-npm/types/src/store/PersonalPageStore.data.d.ts.map +1 -0
- package/dist-npm/types/src/store/PersonalPageStore.sync.d.ts +171 -0
- package/dist-npm/types/src/store/PersonalPageStore.sync.d.ts.map +1 -0
- package/dist-npm/types/src/store/PersonalPageStore.types.d.ts +92 -0
- package/dist-npm/types/src/store/PersonalPageStore.types.d.ts.map +1 -0
- package/dist-npm/types/src/store/YMLParser.d.ts +96 -0
- package/dist-npm/types/src/store/YMLParser.d.ts.map +1 -0
- package/dist-npm/types/src/tools/AgentTool.d.ts +110 -0
- package/dist-npm/types/src/tools/AgentTool.d.ts.map +1 -0
- package/dist-npm/types/src/tools/AppTools.d.ts +122 -0
- package/dist-npm/types/src/tools/AppTools.d.ts.map +1 -0
- package/dist-npm/types/src/tools/ExecuteTool.d.ts +96 -0
- package/dist-npm/types/src/tools/ExecuteTool.d.ts.map +1 -0
- package/dist-npm/types/src/tools/FileTools.d.ts +77 -0
- package/dist-npm/types/src/tools/FileTools.d.ts.map +1 -0
- package/dist-npm/types/src/tools/MinigameTools.d.ts +234 -0
- package/dist-npm/types/src/tools/MinigameTools.d.ts.map +1 -0
- package/dist-npm/types/src/tools/MqttTool.d.ts +53 -0
- package/dist-npm/types/src/tools/MqttTool.d.ts.map +1 -0
- package/dist-npm/types/src/tools/PersonalPageTool.d.ts +57 -0
- package/dist-npm/types/src/tools/PersonalPageTool.d.ts.map +1 -0
- package/dist-npm/types/src/tools/SummarizeTool.d.ts +279 -0
- package/dist-npm/types/src/tools/SummarizeTool.d.ts.map +1 -0
- package/dist-npm/types/src/tools/WebTool.d.ts +106 -0
- package/dist-npm/types/src/tools/WebTool.d.ts.map +1 -0
- package/dist-npm/types/src/types/common.d.ts +164 -0
- package/dist-npm/types/src/types/common.d.ts.map +1 -0
- package/dist-npm/types/src/ui/LocalAPIKeySettings.d.ts +229 -0
- package/dist-npm/types/src/ui/LocalAPIKeySettings.d.ts.map +1 -0
- package/dist-npm/types/src/ui/LoginWindow.d.ts +163 -0
- package/dist-npm/types/src/ui/LoginWindow.d.ts.map +1 -0
- package/dist-npm/types/src/ui/ProfileWindow.d.ts +75 -0
- package/dist-npm/types/src/ui/ProfileWindow.d.ts.map +1 -0
- package/dist-npm/types/src/ui/VerifyHuman.d.ts +23 -0
- package/dist-npm/types/src/ui/VerifyHuman.d.ts.map +1 -0
- package/dist-npm/types/src/ui/WorkspaceViewer.d.ts +184 -0
- package/dist-npm/types/src/ui/WorkspaceViewer.d.ts.map +1 -0
- package/dist-npm/types/src/user/SocialFriends.d.ts +173 -0
- package/dist-npm/types/src/user/SocialFriends.d.ts.map +1 -0
- package/dist-npm/types/src/user/UserWorks.d.ts +187 -0
- package/dist-npm/types/src/user/UserWorks.d.ts.map +1 -0
- package/dist-npm/types/src/utils/ImageUtils.d.ts +107 -0
- package/dist-npm/types/src/utils/ImageUtils.d.ts.map +1 -0
- package/dist-npm/types/src/utils/SDKLogger.d.ts +111 -0
- package/dist-npm/types/src/utils/SDKLogger.d.ts.map +1 -0
- package/dist-npm/types/src/utils/translation.d.ts +95 -0
- package/dist-npm/types/src/utils/translation.d.ts.map +1 -0
- package/dist-npm/types/src/wechat/WxAuth.d.ts +126 -0
- package/dist-npm/types/src/wechat/WxAuth.d.ts.map +1 -0
- package/dist-npm/types/src/wechat/WxLaunchApp.d.ts +96 -0
- package/dist-npm/types/src/wechat/WxLaunchApp.d.ts.map +1 -0
- package/dist-npm/types/src/wechat/WxUtils.d.ts +145 -0
- package/dist-npm/types/src/wechat/WxUtils.d.ts.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LoginWindow - login modal for KeepworkSDK.
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Username/password login
|
|
6
|
+
* - Registration (username/password)
|
|
7
|
+
* - WeChat QR login on desktop
|
|
8
|
+
* - WeChat OAuth redirect login inside WeChat browser
|
|
9
|
+
* - Google OAuth login (opt-in via googleClientId option)
|
|
10
|
+
* - English / Chinese i18n (auto-detected from system language)
|
|
11
|
+
* - Mobile-responsive
|
|
12
|
+
*
|
|
13
|
+
* All UI, styles, and logic are self-contained in this file.
|
|
14
|
+
*/
|
|
15
|
+
type LoginStrings = Record<string, string>;
|
|
16
|
+
/**
|
|
17
|
+
* 宽松的 DOM 元素类型:登录弹窗内的元素可能是 input/button/div,
|
|
18
|
+
* 这里用交叉类型统一暴露用到的属性(value/disabled/style/focus 等),
|
|
19
|
+
* 避免在每个 querySelector 处分别断言。运行时行为与原 JS 一致。
|
|
20
|
+
*/
|
|
21
|
+
type LWEl = HTMLInputElement & HTMLButtonElement & HTMLElement & HTMLIFrameElement;
|
|
22
|
+
/** LoginWindow 依赖的 SDK 表面 */
|
|
23
|
+
interface LWSdk {
|
|
24
|
+
wxAuth?: unknown;
|
|
25
|
+
login(...args: unknown[]): Promise<Record<string, unknown>>;
|
|
26
|
+
register?(...args: unknown[]): Promise<unknown>;
|
|
27
|
+
request?(...args: unknown[]): Promise<unknown>;
|
|
28
|
+
post(path: string, body?: unknown): Promise<Record<string, unknown>>;
|
|
29
|
+
get(path: string, query?: unknown): Promise<Record<string, unknown>>;
|
|
30
|
+
setToken(token: unknown): void;
|
|
31
|
+
[key: string]: unknown;
|
|
32
|
+
}
|
|
33
|
+
export default class LoginWindow {
|
|
34
|
+
sdk: LWSdk;
|
|
35
|
+
_wxAuthInstance: unknown;
|
|
36
|
+
_overlay: HTMLElement | null;
|
|
37
|
+
_styleEl: HTMLStyleElement | null;
|
|
38
|
+
_wechatPollingTimer: ReturnType<typeof setInterval> | null;
|
|
39
|
+
_resetTimer: ReturnType<typeof setTimeout> | null;
|
|
40
|
+
_processedWechatCodes: Set<string>;
|
|
41
|
+
_googlePopup: Window | null;
|
|
42
|
+
_googlePollingTimer: ReturnType<typeof setInterval> | null;
|
|
43
|
+
_googleCodeHandled: boolean;
|
|
44
|
+
_googleMessageHandler: ((e: MessageEvent) => void) | null;
|
|
45
|
+
_googleSentState: string | null;
|
|
46
|
+
_viewportHandler: (() => void) | null;
|
|
47
|
+
_oauthBindCtx: Record<string, unknown> | null;
|
|
48
|
+
_lang?: string;
|
|
49
|
+
_strings?: LoginStrings;
|
|
50
|
+
_title?: string;
|
|
51
|
+
_platform?: unknown;
|
|
52
|
+
_machineCode?: unknown;
|
|
53
|
+
_resolve?: (v: Record<string, unknown>) => void;
|
|
54
|
+
_reject?: (e: Error) => void;
|
|
55
|
+
_wechatOptions?: Record<string, string>;
|
|
56
|
+
_googleOptions?: Record<string, unknown>;
|
|
57
|
+
[key: string]: unknown;
|
|
58
|
+
constructor(sdk: unknown);
|
|
59
|
+
/**
|
|
60
|
+
* Show the login window.
|
|
61
|
+
* @param {Object} options
|
|
62
|
+
* @param {string} [options.title] - Custom title
|
|
63
|
+
* @param {string} [options.lang] - 'zhCN' | 'enUS' (auto-detected if omitted)
|
|
64
|
+
* @param {boolean} [options.enableRegister=true] - Show register view
|
|
65
|
+
* @param {boolean} [options.enableWechat=true] - Show WeChat login
|
|
66
|
+
* @param {string} [options.wechatAppId] - WeChat QR connect app id
|
|
67
|
+
* @param {string} [options.wechatRedirectUri] - Redirect URI for WeChat QR connect
|
|
68
|
+
* @param {boolean} [options.enableGoogle] - Show Google login button (requires googleClientId)
|
|
69
|
+
* @param {string} [options.googleClientId] - Google OAuth client id (web). Required to enable Google login.
|
|
70
|
+
* @param {string} [options.googleRedirectUri] - Redirect URI registered in Google Cloud Console
|
|
71
|
+
* @param {string} [options.googleScope] - OAuth scope (default: 'openid email profile')
|
|
72
|
+
* @param {string} [options.googleState] - OAuth state (default: 'login')
|
|
73
|
+
* @param {string} [options.platform] - Platform tag forwarded to backend
|
|
74
|
+
* @param {string} [options.machineCode] - Machine code forwarded to backend
|
|
75
|
+
* @returns {Promise<Object>} Resolves with login/register response on success, rejects on cancel
|
|
76
|
+
*/
|
|
77
|
+
show(options?: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
78
|
+
/**
|
|
79
|
+
* Close the login window if open.
|
|
80
|
+
*/
|
|
81
|
+
close(): void;
|
|
82
|
+
_renderWechatQrPanel(t: (k: string) => string): string;
|
|
83
|
+
_renderSocialPanel(t: (k: string) => string, { showGoogle, showWechatRedirect, showPasswordEntry }?: {
|
|
84
|
+
showGoogle?: boolean;
|
|
85
|
+
showWechatRedirect?: boolean;
|
|
86
|
+
showPasswordEntry?: boolean;
|
|
87
|
+
}): string;
|
|
88
|
+
_switchView(overlay: HTMLElement, viewId: string): void;
|
|
89
|
+
_normalizeWechatOptions(options: Record<string, unknown>): Record<string, string>;
|
|
90
|
+
_getDefaultWechatRedirectUri(): string;
|
|
91
|
+
_getWechatAuthUrl(): string;
|
|
92
|
+
_startWechatPolling(overlay: HTMLElement): void;
|
|
93
|
+
_stopWechatPolling(): void;
|
|
94
|
+
_maybeHandleWechatCodeFromCurrentUrl(overlay: HTMLElement): void;
|
|
95
|
+
_handleWechatCode(code: string, state: string | null, overlay: HTMLElement): Promise<void>;
|
|
96
|
+
_isWechatCodeProcessed(code: string): boolean;
|
|
97
|
+
_markWechatCodeProcessed(code: string): void;
|
|
98
|
+
_clearWechatQueryFromCurrentUrl(): void;
|
|
99
|
+
/**
|
|
100
|
+
* Check if the current URL contains a WxAuth OAuth redirect code (wxauth=1).
|
|
101
|
+
* If found, handle the code exchange via WxAuth.codeToToken.
|
|
102
|
+
*/
|
|
103
|
+
_maybeHandleWxAuthRedirectCode(overlay: HTMLElement): void;
|
|
104
|
+
/**
|
|
105
|
+
* Exchange a WxAuth OAuth code for a token using WxAuth.codeToToken.
|
|
106
|
+
*/
|
|
107
|
+
_handleWxAuthRedirectCode(code: string, overlay: HTMLElement): Promise<void>;
|
|
108
|
+
_setWechatLoading(overlay: HTMLElement, isLoading: boolean): void;
|
|
109
|
+
_normalizeGoogleOptions(options: Record<string, unknown>): Record<string, unknown>;
|
|
110
|
+
_getGoogleAuthUrl(): string;
|
|
111
|
+
_buildGoogleState(): string;
|
|
112
|
+
_getGoogleReturnUrl(): string;
|
|
113
|
+
_decodeGoogleState(state: string | null): Record<string, unknown> | null;
|
|
114
|
+
_b64urlEncode(str: string): string;
|
|
115
|
+
_b64urlDecode(b64url: string): string;
|
|
116
|
+
_startGoogleLogin(overlay: HTMLElement): void;
|
|
117
|
+
_startGoogleMessageListener(overlay: HTMLElement): void;
|
|
118
|
+
_stopGoogleMessageListener(): void;
|
|
119
|
+
_openGooglePopup(url: string): Window | null;
|
|
120
|
+
_startGooglePolling(overlay: HTMLElement): void;
|
|
121
|
+
_stopGooglePolling(): void;
|
|
122
|
+
_closeGooglePopup(): void;
|
|
123
|
+
_maybeHandleGoogleCodeFromCurrentUrl(overlay: HTMLElement): void;
|
|
124
|
+
_handleGoogleCode(code: string, state: string | null, overlay: HTMLElement): Promise<void>;
|
|
125
|
+
_clearGoogleQueryFromCurrentUrl(): void;
|
|
126
|
+
_setGoogleError(overlay: HTMLElement, keyOrMessage: string): void;
|
|
127
|
+
_setWechatError(overlay: HTMLElement, keyOrMessage: string): void;
|
|
128
|
+
_bindPasswordReset(overlay: HTMLElement): void;
|
|
129
|
+
_startResetCountdown(btn: LWEl, seconds: number): void;
|
|
130
|
+
_clearResetTimer(): void;
|
|
131
|
+
_validatePhoneOrEmail(value: string): boolean;
|
|
132
|
+
_validateResetPassword(password: string): boolean;
|
|
133
|
+
_extractApiMessage(err: unknown): string;
|
|
134
|
+
_isCaptchaError(err: unknown, message: string): boolean;
|
|
135
|
+
_validateUsername(name: string): boolean;
|
|
136
|
+
/**
|
|
137
|
+
* 第三方登录探测发现未绑定账号时,进入「设置账号」视图:用户名预填后端建议,
|
|
138
|
+
* 密码本地生成一串明文显示,二者均可修改。
|
|
139
|
+
* @param {HTMLElement} overlay
|
|
140
|
+
* @param {Object} data - 探测返回 { ticket, suggestedUsername, provider, ... }
|
|
141
|
+
* @param {string} bindPath - 绑定接口路径
|
|
142
|
+
*/
|
|
143
|
+
_showOauthSetup(overlay: HTMLElement, data: Record<string, unknown>, bindPath: string): void;
|
|
144
|
+
_doOauthBind(overlay: HTMLElement): Promise<void>;
|
|
145
|
+
_generatePassword(len?: number): string;
|
|
146
|
+
_finish(response: Record<string, unknown>): void;
|
|
147
|
+
/**
|
|
148
|
+
* Constrain the overlay to the visual viewport so the on-screen keyboard
|
|
149
|
+
* never hides the lower part of the form (e.g. the third-party login
|
|
150
|
+
* buttons). When the soft keyboard opens, the layout viewport stays the
|
|
151
|
+
* same size but the visual viewport shrinks; by pinning the overlay to the
|
|
152
|
+
* visual viewport the modal stays fully above the keyboard and its content
|
|
153
|
+
* (which has overflow-y: auto) can be scrolled to reach every button.
|
|
154
|
+
*/
|
|
155
|
+
_setupViewportHandling(overlay: HTMLElement): void;
|
|
156
|
+
_teardownViewportHandling(): void;
|
|
157
|
+
_injectStyles(): void;
|
|
158
|
+
_destroy(): void;
|
|
159
|
+
_esc(str: unknown): string;
|
|
160
|
+
_escapeHTML(str: unknown): string;
|
|
161
|
+
}
|
|
162
|
+
export {};
|
|
163
|
+
//# sourceMappingURL=LoginWindow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoginWindow.d.ts","sourceRoot":"","sources":["../../../../src/ui/LoginWindow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ProfileWindow - Self-contained user profile modal for KeepworkSDK.
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Display username, phone (masked), email
|
|
6
|
+
* - Change password (old + new + confirm)
|
|
7
|
+
* - VIP / SVIP status display with expiration dates
|
|
8
|
+
* - Activation code input for VIP redemption
|
|
9
|
+
* - English / Chinese i18n (auto-detected from system language)
|
|
10
|
+
* - Mobile-responsive (full-screen on small viewports)
|
|
11
|
+
*
|
|
12
|
+
* All UI, styles, and logic are self-contained in this file.
|
|
13
|
+
*/
|
|
14
|
+
/** show() 选项 */
|
|
15
|
+
export interface ProfileWindowShowOptions {
|
|
16
|
+
/** 自定义标题 */
|
|
17
|
+
title?: string;
|
|
18
|
+
/** 语言:'zhCN' | 'enUS'(省略时自动检测) */
|
|
19
|
+
lang?: 'zhCN' | 'enUS';
|
|
20
|
+
/** 是否显示修改密码区(默认 true) */
|
|
21
|
+
enablePassword?: boolean;
|
|
22
|
+
/** 是否显示 VIP 区与激活码(默认 true) */
|
|
23
|
+
enableVip?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/** sdk 需提供的最小接口 */
|
|
26
|
+
interface ProfileWindowSdk {
|
|
27
|
+
token?: string;
|
|
28
|
+
getUserProfile(options?: {
|
|
29
|
+
forceRefresh?: boolean;
|
|
30
|
+
}): Promise<Record<string, unknown>>;
|
|
31
|
+
getAuthHeaders(): Record<string, string>;
|
|
32
|
+
extractMainDomain(hostname: string): string;
|
|
33
|
+
put(path: string, body?: unknown): Promise<unknown>;
|
|
34
|
+
logout(): Promise<unknown>;
|
|
35
|
+
[key: string]: unknown;
|
|
36
|
+
}
|
|
37
|
+
export default class ProfileWindow {
|
|
38
|
+
sdk: ProfileWindowSdk;
|
|
39
|
+
private _overlay;
|
|
40
|
+
private _styleEl;
|
|
41
|
+
private _pwOverlay;
|
|
42
|
+
private _lang;
|
|
43
|
+
private _strings;
|
|
44
|
+
private _resolve;
|
|
45
|
+
constructor(sdk: unknown);
|
|
46
|
+
/**
|
|
47
|
+
* Show the profile window.
|
|
48
|
+
* @param {Object} options
|
|
49
|
+
* @param {string} [options.title] - Custom title
|
|
50
|
+
* @param {string} [options.lang] - 'zhCN' | 'enUS' (auto-detected if omitted)
|
|
51
|
+
* @param {boolean} [options.enablePassword=true] - Show change password section
|
|
52
|
+
* @param {boolean} [options.enableVip=true] - Show VIP section with activation code
|
|
53
|
+
* @returns {Promise<void>} Resolves when the window is closed
|
|
54
|
+
*/
|
|
55
|
+
show(options?: ProfileWindowShowOptions): Promise<unknown>;
|
|
56
|
+
/**
|
|
57
|
+
* Close the profile window if open
|
|
58
|
+
*/
|
|
59
|
+
close(): void;
|
|
60
|
+
private _loadProfile;
|
|
61
|
+
private _bindNicknameEdit;
|
|
62
|
+
private _renderVipInfo;
|
|
63
|
+
private _loadTokenUsage;
|
|
64
|
+
private _bindVipActivation;
|
|
65
|
+
private _showPasswordPopup;
|
|
66
|
+
private _maskPhone;
|
|
67
|
+
private _formatNumber;
|
|
68
|
+
private _formatDate;
|
|
69
|
+
private _getTokenPlanUrl;
|
|
70
|
+
private _injectStyles;
|
|
71
|
+
private _destroy;
|
|
72
|
+
private _esc;
|
|
73
|
+
}
|
|
74
|
+
export {};
|
|
75
|
+
//# sourceMappingURL=ProfileWindow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProfileWindow.d.ts","sourceRoot":"","sources":["../../../../src/ui/ProfileWindow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,gBAAgB;AAChB,MAAM,WAAW,wBAAwB;IACvC,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,yBAAyB;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAKD,mBAAmB;AACnB,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvF,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AA0eD,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,GAAG,EAAE,gBAAgB,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAqC;gBAEzC,GAAG,EAAE,OAAO;IAUxB;;;;;;;;OAQG;IACH,IAAI,CAAC,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IAwH9D;;OAEG;IACH,KAAK,IAAI,IAAI;YAOC,YAAY;IAgD1B,OAAO,CAAC,iBAAiB;IAgEzB,OAAO,CAAC,cAAc;YA8BR,eAAe;IA4C7B,OAAO,CAAC,kBAAkB;IAmE1B,OAAO,CAAC,kBAAkB;IA8F1B,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,IAAI;CAKb"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VerifyHuman.ts — 纯客户端滑块验证码("滑动验证",完整 TypeScript 实现)
|
|
3
|
+
*
|
|
4
|
+
* 显示一个滑块拼图,用户需把滑块拖到轨道末端。这是轻量级机器人拦截,
|
|
5
|
+
* **不**替代服务端限流,但能提高自动化表单提交的门槛。
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* const ok = await VerifyHuman.verify({ lang: 'zhCN' });
|
|
9
|
+
* // ok === true → 通过;reject → 用户取消
|
|
10
|
+
*/
|
|
11
|
+
/** verify() 选项 */
|
|
12
|
+
export interface VerifyHumanOptions {
|
|
13
|
+
/** 语言:'zhCN' | 'enUS'(省略时自动检测) */
|
|
14
|
+
lang?: 'zhCN' | 'enUS';
|
|
15
|
+
}
|
|
16
|
+
export default class VerifyHuman {
|
|
17
|
+
/**
|
|
18
|
+
* 显示滑块验证码并返回 Promise。
|
|
19
|
+
* @returns 成功时 resolve(true),用户取消时 reject。
|
|
20
|
+
*/
|
|
21
|
+
static verify(options?: VerifyHumanOptions): Promise<true>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=VerifyHuman.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerifyHuman.d.ts","sourceRoot":"","sources":["../../../../src/ui/VerifyHuman.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,kBAAkB;AAClB,MAAM,WAAW,kBAAkB;IACjC,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAyJD,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;CAyI/D"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkspaceViewer.ts — 工作区文件浏览器 UI 组件(基于 Shadow DOM 的文件树)
|
|
3
|
+
*
|
|
4
|
+
* 支持工作区/挂载文件夹切换、文件预览/编辑、搜索、新建、打开/删除文件、原始视图等。
|
|
5
|
+
*/
|
|
6
|
+
/** WorkspaceViewer 构造选项 */
|
|
7
|
+
export interface WorkspaceViewerOptions {
|
|
8
|
+
/** 挂载容器元素(必填) */
|
|
9
|
+
container?: HTMLElement;
|
|
10
|
+
/** KeepworkSDK 实例(默认 window.keepwork) */
|
|
11
|
+
sdk?: unknown;
|
|
12
|
+
/** 工作区名(默认 'workspace_default') */
|
|
13
|
+
workspace?: string;
|
|
14
|
+
/** 可选挂载文件夹 */
|
|
15
|
+
mountFolder?: string;
|
|
16
|
+
/** 初始打开的文件 */
|
|
17
|
+
file?: string;
|
|
18
|
+
/** 隐藏顶栏 */
|
|
19
|
+
hideTopbar?: boolean;
|
|
20
|
+
/** 隐藏工具栏 */
|
|
21
|
+
hideToolbar?: boolean;
|
|
22
|
+
/** 紧凑布局 */
|
|
23
|
+
compact?: boolean;
|
|
24
|
+
/** 显示名映射 */
|
|
25
|
+
displayNameMap?: Record<string, string>;
|
|
26
|
+
/** 隐藏的页面根 */
|
|
27
|
+
hiddenPageRoots?: string[];
|
|
28
|
+
/** 只读模式 */
|
|
29
|
+
readOnly?: boolean;
|
|
30
|
+
/** 隐藏用户信息 */
|
|
31
|
+
hideUserInfo?: boolean;
|
|
32
|
+
/** 隐藏搜索 */
|
|
33
|
+
hideSearch?: boolean;
|
|
34
|
+
/** 隐藏新建文件 */
|
|
35
|
+
hideNewFile?: boolean;
|
|
36
|
+
/** 隐藏打开文件 */
|
|
37
|
+
hideOpenFile?: boolean;
|
|
38
|
+
/** 隐藏删除 */
|
|
39
|
+
hideDelete?: boolean;
|
|
40
|
+
/** 隐藏原始视图 */
|
|
41
|
+
hideRawView?: boolean;
|
|
42
|
+
/** 允许切换工作区 */
|
|
43
|
+
allowChangeWorkspace?: boolean;
|
|
44
|
+
/** 允许切换挂载文件夹 */
|
|
45
|
+
allowChangeMount?: boolean;
|
|
46
|
+
[key: string]: unknown;
|
|
47
|
+
}
|
|
48
|
+
/** PersonalPageStore(workspace-scoped)结构化接口 */
|
|
49
|
+
interface WVStore {
|
|
50
|
+
mountedFolder?: unknown;
|
|
51
|
+
_remoteTreeCache?: unknown;
|
|
52
|
+
listDir(path: string, recursive?: boolean): Promise<string>;
|
|
53
|
+
readFile(path: string): Promise<string>;
|
|
54
|
+
loadPageData(key: string, sub: string | null, a: boolean, b: boolean): Promise<unknown>;
|
|
55
|
+
savePageData(key: string, sub: string, value: unknown, a: boolean, b: boolean): Promise<unknown>;
|
|
56
|
+
clearPageData(key: string): Promise<unknown>;
|
|
57
|
+
clearLocalDisk(key: string): Promise<unknown>;
|
|
58
|
+
grepSearch(query: string, isRegexp: boolean, fileFilter?: string): Promise<string>;
|
|
59
|
+
_readMountedFile(key: string): Promise<string | null>;
|
|
60
|
+
[key: string]: unknown;
|
|
61
|
+
}
|
|
62
|
+
/** WorkspaceViewer 依赖的 SDK 表面 */
|
|
63
|
+
interface WVSdk {
|
|
64
|
+
token?: unknown;
|
|
65
|
+
personalPageStore: {
|
|
66
|
+
withWorkspace(workspace: string, mountFolder: string | null): WVStore;
|
|
67
|
+
[key: string]: unknown;
|
|
68
|
+
};
|
|
69
|
+
getUserProfile(opts: {
|
|
70
|
+
forceRefresh: boolean;
|
|
71
|
+
}): Promise<Record<string, unknown>>;
|
|
72
|
+
showLoginWindow(opts: {
|
|
73
|
+
title: string;
|
|
74
|
+
}): Promise<{
|
|
75
|
+
token?: unknown;
|
|
76
|
+
} | null>;
|
|
77
|
+
showProfileWindow(): unknown;
|
|
78
|
+
[key: string]: unknown;
|
|
79
|
+
}
|
|
80
|
+
/** 页面数据(含可选 content / _metadata / metadata 及任意字段) */
|
|
81
|
+
type WVPageData = (Record<string, unknown> & {
|
|
82
|
+
content?: unknown;
|
|
83
|
+
_metadata?: unknown;
|
|
84
|
+
metadata?: unknown;
|
|
85
|
+
}) | null | undefined;
|
|
86
|
+
/** 内部状态 */
|
|
87
|
+
interface WVState {
|
|
88
|
+
selectedFile: string | null;
|
|
89
|
+
viewMode: 'content' | 'raw' | 'edit';
|
|
90
|
+
fileItems: string[];
|
|
91
|
+
isMounted: boolean;
|
|
92
|
+
mountedPageSet: Set<string> | null;
|
|
93
|
+
selectedFolder: string | null;
|
|
94
|
+
expandedFolders: Set<string>;
|
|
95
|
+
folderChildren: Record<string, string[]>;
|
|
96
|
+
editPageData: {
|
|
97
|
+
content: string;
|
|
98
|
+
} | null;
|
|
99
|
+
absFiles: string[];
|
|
100
|
+
}
|
|
101
|
+
/** 解析后的选项(构造内部使用) */
|
|
102
|
+
interface WVResolvedOptions {
|
|
103
|
+
workspace: string;
|
|
104
|
+
mountFolder: string;
|
|
105
|
+
file: string;
|
|
106
|
+
hideTopbar: boolean;
|
|
107
|
+
hideToolbar: boolean;
|
|
108
|
+
compact: boolean;
|
|
109
|
+
readOnly: boolean;
|
|
110
|
+
hideUserInfo: boolean;
|
|
111
|
+
hideSearch: boolean;
|
|
112
|
+
hideNewFile: boolean;
|
|
113
|
+
hideOpenFile: boolean;
|
|
114
|
+
hideDelete: boolean;
|
|
115
|
+
hideRawView: boolean;
|
|
116
|
+
allowChangeWorkspace: boolean;
|
|
117
|
+
allowChangeMount: boolean;
|
|
118
|
+
}
|
|
119
|
+
export declare class WorkspaceViewer {
|
|
120
|
+
sdk: WVSdk;
|
|
121
|
+
StorageUtil: unknown;
|
|
122
|
+
options: WVResolvedOptions;
|
|
123
|
+
currentWorkspace: string;
|
|
124
|
+
displayNameMap: Record<string, string>;
|
|
125
|
+
hiddenPageRoots: string[];
|
|
126
|
+
_state: WVState;
|
|
127
|
+
container: HTMLElement;
|
|
128
|
+
shadowRoot: ShadowRoot;
|
|
129
|
+
root: HTMLElement;
|
|
130
|
+
dom: Record<string, HTMLElement & Record<string, unknown>>;
|
|
131
|
+
_handlers: Record<string, EventListener>;
|
|
132
|
+
constructor(options?: WorkspaceViewerOptions);
|
|
133
|
+
_bindDom(): void;
|
|
134
|
+
_bindEvents(): void;
|
|
135
|
+
_applyFeatureFlags(): void;
|
|
136
|
+
_applyLayoutModes(): void;
|
|
137
|
+
_initBadges(): void;
|
|
138
|
+
_updateBadges(): void;
|
|
139
|
+
initLogin(): Promise<void>;
|
|
140
|
+
showUser(profile: Record<string, unknown> | null): void;
|
|
141
|
+
_promptChangeWorkspace(): void;
|
|
142
|
+
_promptChangeMount(): void;
|
|
143
|
+
_promptOpenFile(): Promise<void>;
|
|
144
|
+
switchWorkspace(workspace: string): Promise<void>;
|
|
145
|
+
setMountFolder(mountFolder: string): Promise<void>;
|
|
146
|
+
_getMountedStore(): WVStore;
|
|
147
|
+
_getLocalStore(): WVStore;
|
|
148
|
+
startWorkspace(): Promise<void>;
|
|
149
|
+
loadWorkspace(): Promise<void>;
|
|
150
|
+
renderFileList(): void;
|
|
151
|
+
renderItems(items: string[], container: HTMLElement, depth: number, parentPath: string): void;
|
|
152
|
+
toggleFolder(folderPath: string, el: HTMLElement, depth: number): Promise<void>;
|
|
153
|
+
selectFile(name: string): Promise<void>;
|
|
154
|
+
loadFileData(): Promise<WVPageData>;
|
|
155
|
+
_updateRevisionInfo(data: WVPageData): void;
|
|
156
|
+
renderContent(): Promise<void>;
|
|
157
|
+
renderEditView(): Promise<void>;
|
|
158
|
+
syncViewModeUI(): void;
|
|
159
|
+
setViewMode(mode: 'content' | 'raw' | 'edit'): void;
|
|
160
|
+
addAbsoluteFile(absPath: string): Promise<boolean>;
|
|
161
|
+
saveEdit(): Promise<void>;
|
|
162
|
+
runSearch(): Promise<void>;
|
|
163
|
+
createNewFile(): Promise<void>;
|
|
164
|
+
deleteSelected(): Promise<void>;
|
|
165
|
+
formatValue(v: unknown): string;
|
|
166
|
+
escapeHtml(s: string): string;
|
|
167
|
+
_getDisplayName(name: string, parentPath: string): string;
|
|
168
|
+
_filterVisibleEntries(entries: string[], parentPath: string): string[];
|
|
169
|
+
_isMarkdownFile(filePath: string): boolean;
|
|
170
|
+
_formatMarkdownContent(text: string): string;
|
|
171
|
+
_inlineFormat(text: string): string;
|
|
172
|
+
_isEditableFile(filePath: string | null): boolean;
|
|
173
|
+
_isMountedFile(filePath: string): boolean;
|
|
174
|
+
_getLoadedFileCount(): number;
|
|
175
|
+
_syncToolbar(): void;
|
|
176
|
+
refreshWorkspace(): Promise<void>;
|
|
177
|
+
_toggleFileTreeMobile(): void;
|
|
178
|
+
_collapseFileTreeMobile(): void;
|
|
179
|
+
_expandFileTreeMobile(): void;
|
|
180
|
+
destroy(): void;
|
|
181
|
+
}
|
|
182
|
+
export declare function createWorkspaceViewer(options: WorkspaceViewerOptions): WorkspaceViewer;
|
|
183
|
+
export default WorkspaceViewer;
|
|
184
|
+
//# sourceMappingURL=WorkspaceViewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspaceViewer.d.ts","sourceRoot":"","sources":["../../../../src/ui/WorkspaceViewer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SocialFriends.ts — 好友 / 私聊房间 / 站内信 相关 API(完整 TypeScript 实现)
|
|
3
|
+
*
|
|
4
|
+
* 封装 coreservice 路由:好友申请、好友关系、黑名单、私聊房间创建/举报、
|
|
5
|
+
* 关注/粉丝查询、站内信(含奖励领取)、邮箱验证。内置请求限流与缓存。
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* await keepwork.socialFriends.applyFriend(123, 'I am Alice');
|
|
9
|
+
* await keepwork.socialFriends.acceptApply(456);
|
|
10
|
+
* const friends = await keepwork.socialFriends.list();
|
|
11
|
+
* const room = await keepwork.socialFriends.createChatRoom(123);
|
|
12
|
+
*/
|
|
13
|
+
/** 通用选项对象 */
|
|
14
|
+
export type SocialOptions = Record<string, unknown>;
|
|
15
|
+
/** 好友标识:id 或包含 friendId/targetId/userId/id 的对象 */
|
|
16
|
+
export type FriendRef = string | number | {
|
|
17
|
+
friendId?: string | number;
|
|
18
|
+
targetId?: string | number;
|
|
19
|
+
userId?: string | number;
|
|
20
|
+
id?: string | number;
|
|
21
|
+
[key: string]: unknown;
|
|
22
|
+
};
|
|
23
|
+
/** 限流错误(带额外字段) */
|
|
24
|
+
export interface RateLimitError extends Error {
|
|
25
|
+
code: 'SOCIAL_RATE_LIMITED';
|
|
26
|
+
action: string;
|
|
27
|
+
rateLimitKey: string;
|
|
28
|
+
retryAfter: number;
|
|
29
|
+
retryAfterMs: number;
|
|
30
|
+
}
|
|
31
|
+
/** sdk 需提供的最小接口 */
|
|
32
|
+
interface SocialFriendsSdk {
|
|
33
|
+
baseURL?: string;
|
|
34
|
+
getAuthHeaders(): Record<string, string>;
|
|
35
|
+
request(path: string, options?: {
|
|
36
|
+
method?: string;
|
|
37
|
+
body?: unknown;
|
|
38
|
+
}): Promise<unknown>;
|
|
39
|
+
get(path: string, params?: Record<string, unknown>): Promise<unknown>;
|
|
40
|
+
post(path: string, body?: unknown): Promise<unknown>;
|
|
41
|
+
put(path: string, body?: unknown): Promise<unknown>;
|
|
42
|
+
delete(path: string): Promise<unknown>;
|
|
43
|
+
}
|
|
44
|
+
export default class SocialFriends {
|
|
45
|
+
static DefaultRateLimitMs: number;
|
|
46
|
+
/** 各操作的限流间隔(ms)。 */
|
|
47
|
+
static RateLimitMs: Readonly<Record<string, number>>;
|
|
48
|
+
/** 好友申请状态枚举。 */
|
|
49
|
+
static FriendApplyStatus: Readonly<Record<string, number>>;
|
|
50
|
+
/** 好友关系状态枚举。 */
|
|
51
|
+
static FriendshipStatus: Readonly<Record<string, number>>;
|
|
52
|
+
sdk: SocialFriendsSdk;
|
|
53
|
+
private _rateLimitState;
|
|
54
|
+
private _rateLimitCache;
|
|
55
|
+
private _fixedResponseCache;
|
|
56
|
+
constructor(sdk: unknown);
|
|
57
|
+
private _getRateLimitMs;
|
|
58
|
+
private _getRateLimitKey;
|
|
59
|
+
/** 稳定序列化(键排序),用于生成确定性缓存 key。 */
|
|
60
|
+
private _stableStringify;
|
|
61
|
+
/** 强制限流;超限抛 RateLimitError。返回限流 key。 */
|
|
62
|
+
private _enforceRateLimit;
|
|
63
|
+
/** 限流 + 缓存:超限时若有缓存则返回缓存。 */
|
|
64
|
+
private _cachedRateLimitedRequest;
|
|
65
|
+
/** 固定缓存:命中即返回,否则请求后按 shouldCache 决定是否缓存。 */
|
|
66
|
+
private _fixedCachedRequest;
|
|
67
|
+
private _clearCachedAction;
|
|
68
|
+
/** 清除站内信列表缓存。 */
|
|
69
|
+
clearMailListCache(): void;
|
|
70
|
+
/** 递归判断是否已领取奖励。 */
|
|
71
|
+
private _hasReceivedRewards;
|
|
72
|
+
/** 去除空值参数。 */
|
|
73
|
+
private _compactParams;
|
|
74
|
+
/** 把 core API 基地址改写为指定服务的端点。 */
|
|
75
|
+
private _getServiceEndpoint;
|
|
76
|
+
private _getPushManageEndpoint;
|
|
77
|
+
/** 向指定端点发起请求(相对路径走 sdk.request,绝对 URL 走 fetch)。 */
|
|
78
|
+
private _requestEndpoint;
|
|
79
|
+
private _requireId;
|
|
80
|
+
/** 从 id 或对象中提取好友 id。 */
|
|
81
|
+
private _normalizeFriendId;
|
|
82
|
+
/** 归一化申请状态(数字或枚举名)。 */
|
|
83
|
+
private _normalizeApplyStatus;
|
|
84
|
+
/** 申请添加好友。 */
|
|
85
|
+
applyFriend(friendOrOptions: FriendRef, remark?: string): Promise<unknown>;
|
|
86
|
+
apply(friendOrOptions: FriendRef, remark?: string): Promise<unknown>;
|
|
87
|
+
requestFriend(friendOrOptions: FriendRef, remark?: string): Promise<unknown>;
|
|
88
|
+
addFriend(friendOrOptions: FriendRef, remark?: string): Promise<unknown>;
|
|
89
|
+
/** 处理待处理的好友申请(status: 2/AGREE, 3/REFUSE, 4/BLOCK)。 */
|
|
90
|
+
processApply(applyId: string | number, status: string | number): Promise<unknown>;
|
|
91
|
+
acceptApply(applyId: string | number): Promise<unknown>;
|
|
92
|
+
rejectApply(applyId: string | number): Promise<unknown>;
|
|
93
|
+
refuseApply(applyId: string | number): Promise<unknown>;
|
|
94
|
+
blockApply(applyId: string | number): Promise<unknown>;
|
|
95
|
+
acceptFriendApply(applyId: string | number): Promise<unknown>;
|
|
96
|
+
rejectFriendApply(applyId: string | number): Promise<unknown>;
|
|
97
|
+
/** 列出发给当前用户的好友申请。 */
|
|
98
|
+
listApplies(options?: SocialOptions): Promise<unknown>;
|
|
99
|
+
getApply(options?: SocialOptions): Promise<unknown>;
|
|
100
|
+
getApplies(options?: SocialOptions): Promise<unknown>;
|
|
101
|
+
listApplications(options?: SocialOptions): Promise<unknown>;
|
|
102
|
+
/** 列出当前用户好友关系(含好友信息和在线状态)。 */
|
|
103
|
+
list(options?: SocialOptions): Promise<unknown>;
|
|
104
|
+
getFriendships(options?: SocialOptions): Promise<unknown>;
|
|
105
|
+
listFriends(options?: SocialOptions): Promise<unknown>;
|
|
106
|
+
/** 通过用户名搜索当前用户的 Keepwork 好友(旧 /users/friends 路由)。 */
|
|
107
|
+
searchFriends(options?: SocialOptions | string): Promise<unknown>;
|
|
108
|
+
getFriends(options?: SocialOptions | string): Promise<unknown>;
|
|
109
|
+
removeFriend(friendOrOptions: FriendRef): Promise<unknown>;
|
|
110
|
+
deleteFriend(friendOrOptions: FriendRef): Promise<unknown>;
|
|
111
|
+
delete(friendOrOptions: FriendRef): Promise<unknown>;
|
|
112
|
+
remove(friendOrOptions: FriendRef): Promise<unknown>;
|
|
113
|
+
updateFriend(friendOrOptions: FriendRef, comment?: string): Promise<unknown>;
|
|
114
|
+
updateRemark(friendOrOptions: FriendRef, comment?: string): Promise<unknown>;
|
|
115
|
+
setFriendComment(friendOrOptions: FriendRef, comment?: string): Promise<unknown>;
|
|
116
|
+
addToBlacklist(friendOrOptions: FriendRef): Promise<unknown>;
|
|
117
|
+
blockFriend(friendOrOptions: FriendRef): Promise<unknown>;
|
|
118
|
+
blacklist(friendOrOptions: FriendRef): Promise<unknown>;
|
|
119
|
+
removeFromBlacklist(friendOrOptions: FriendRef): Promise<unknown>;
|
|
120
|
+
unblockFriend(friendOrOptions: FriendRef): Promise<unknown>;
|
|
121
|
+
unblacklist(friendOrOptions: FriendRef): Promise<unknown>;
|
|
122
|
+
listBlacklist(options?: SocialOptions): Promise<unknown>;
|
|
123
|
+
getBlacklist(options?: SocialOptions): Promise<unknown>;
|
|
124
|
+
/** 更新在线状态(需 API-key 权限的内部路由)。 */
|
|
125
|
+
setOnlineStatus(userId: string | number, status: unknown): Promise<unknown>;
|
|
126
|
+
clearAllOnlineStatus(): Promise<unknown>;
|
|
127
|
+
getFollowing(options?: SocialOptions): Promise<unknown>;
|
|
128
|
+
getFollowers(options?: SocialOptions): Promise<unknown>;
|
|
129
|
+
/** 为当前用户和好友创建或获取私聊房间。 */
|
|
130
|
+
createChatRoom(targetOrOptions: FriendRef): Promise<unknown>;
|
|
131
|
+
openPrivateChat(targetOrOptions: FriendRef): Promise<unknown>;
|
|
132
|
+
createP2PChat(targetOrOptions: FriendRef): Promise<unknown>;
|
|
133
|
+
createPrivateChatRoom(targetOrOptions: FriendRef): Promise<unknown>;
|
|
134
|
+
/** 举报私聊违规内容。 */
|
|
135
|
+
reportChat(options?: SocialOptions): Promise<unknown>;
|
|
136
|
+
reportUser(reportUserId: string | number, content?: string): Promise<unknown>;
|
|
137
|
+
reportChatUser(reportUserId: string | number, content?: string): Promise<unknown>;
|
|
138
|
+
/** 通过 push-manage 发送站内信。 */
|
|
139
|
+
sendMail(options?: SocialOptions): Promise<unknown>;
|
|
140
|
+
/** 列出当前用户站内信。 */
|
|
141
|
+
listMails(options?: SocialOptions): Promise<unknown>;
|
|
142
|
+
getMails(options?: SocialOptions): Promise<unknown>;
|
|
143
|
+
listEmails(options?: SocialOptions): Promise<unknown>;
|
|
144
|
+
getEmails(options?: SocialOptions): Promise<unknown>;
|
|
145
|
+
deleteMail(mailOrOptions: SocialOptions | string | number | Array<string | number>): Promise<unknown>;
|
|
146
|
+
delEmail(mailOrOptions: SocialOptions | string | number | Array<string | number>): Promise<unknown>;
|
|
147
|
+
removeMail(mailOrOptions: SocialOptions | string | number | Array<string | number>): Promise<unknown>;
|
|
148
|
+
setMailRead(options?: SocialOptions | string | number | Array<string | number>): Promise<unknown>;
|
|
149
|
+
setEmailReaded(options?: SocialOptions): Promise<unknown>;
|
|
150
|
+
markMailRead(options?: SocialOptions): Promise<unknown>;
|
|
151
|
+
getMailReward(options?: SocialOptions): Promise<unknown>;
|
|
152
|
+
getEmailReward(options?: SocialOptions): Promise<unknown>;
|
|
153
|
+
claimMailReward(options?: SocialOptions): Promise<unknown>;
|
|
154
|
+
readMail(mailOrOptions: SocialOptions | string | number): Promise<unknown>;
|
|
155
|
+
readEmail(mailOrOptions: SocialOptions | string | number): Promise<unknown>;
|
|
156
|
+
openMail(mailOrOptions: SocialOptions | string | number): Promise<unknown>;
|
|
157
|
+
/** 请求 Keepwork 邮箱验证码。 */
|
|
158
|
+
sendEmailCaptcha(emailOrOptions: string | {
|
|
159
|
+
email?: string;
|
|
160
|
+
}): Promise<unknown>;
|
|
161
|
+
requestEmailCaptcha(emailOrOptions: string | {
|
|
162
|
+
email?: string;
|
|
163
|
+
}): Promise<unknown>;
|
|
164
|
+
getEmailCaptcha(emailOrOptions: string | {
|
|
165
|
+
email?: string;
|
|
166
|
+
}): Promise<unknown>;
|
|
167
|
+
/** 验证邮箱验证码并绑定/解绑当前用户邮箱。 */
|
|
168
|
+
verifyEmail(options?: SocialOptions): Promise<unknown>;
|
|
169
|
+
bindEmail(email: string, captcha: string): Promise<unknown>;
|
|
170
|
+
unbindEmail(email: string, captchaOrPassword?: string): Promise<unknown>;
|
|
171
|
+
}
|
|
172
|
+
export {};
|
|
173
|
+
//# sourceMappingURL=SocialFriends.d.ts.map
|