@lark-apaas/client-toolkit-lite 1.1.7-alpha.2 → 1.1.7-alpha.21
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.cjs +1272 -176
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +71 -4
- package/dist/index.d.ts +71 -4
- package/dist/index.js +1252 -160
- package/dist/index.js.map +1 -1
- package/package.json +8 -3
package/dist/index.d.cts
CHANGED
|
@@ -5,6 +5,7 @@ import { NavLinkProps } from 'react-router-dom';
|
|
|
5
5
|
import { ClassValue } from 'clsx';
|
|
6
6
|
import { AxiosInstance } from 'axios';
|
|
7
7
|
import * as _lark_apaas_dataloom from '@lark-apaas/dataloom';
|
|
8
|
+
import * as _lark_apaas_client_capability from '@lark-apaas/client-capability';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Inject minimal __REACT_DEVTOOLS_GLOBAL_HOOK__ before React loads.
|
|
@@ -26,6 +27,49 @@ declare global {
|
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Logger 类型定义。
|
|
32
|
+
*
|
|
33
|
+
* 跟老 toolkit 相比,lite 砍掉了 zod schema 校验,改成纯 TS 类型——
|
|
34
|
+
* intercept-global-error 不再走 levelSchema.safeParse 那条分支,
|
|
35
|
+
* 而是直接用 LOG_LEVELS 字面量数组 includes 判断。
|
|
36
|
+
*/
|
|
37
|
+
declare const LOG_LEVELS: readonly ["debug", "info", "warn", "error", "success"];
|
|
38
|
+
type LogLevel = (typeof LOG_LEVELS)[number];
|
|
39
|
+
interface LogStackFrame {
|
|
40
|
+
functionName: string;
|
|
41
|
+
fileName: string;
|
|
42
|
+
lineNumber: number;
|
|
43
|
+
columnNumber: number;
|
|
44
|
+
}
|
|
45
|
+
interface LogMeta {
|
|
46
|
+
stacktrace?: LogStackFrame[];
|
|
47
|
+
logTraceID?: string;
|
|
48
|
+
skipFrame?: number;
|
|
49
|
+
noStacktrace?: boolean;
|
|
50
|
+
repairMessage?: string;
|
|
51
|
+
/** 预留字段,用于分类日志 */
|
|
52
|
+
type?: string;
|
|
53
|
+
/** 日志去重相关字段 */
|
|
54
|
+
isDuplicate?: boolean;
|
|
55
|
+
duplicateCount?: number;
|
|
56
|
+
duplicateOfId?: string;
|
|
57
|
+
}
|
|
58
|
+
interface LogWithMeta {
|
|
59
|
+
level: LogLevel;
|
|
60
|
+
args: unknown[];
|
|
61
|
+
meta?: LogMeta;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
declare let logger: {
|
|
65
|
+
debug(message: unknown, ...args: unknown[]): void;
|
|
66
|
+
info(message: unknown, ...args: unknown[]): void;
|
|
67
|
+
warn(message: unknown, ...args: unknown[]): void;
|
|
68
|
+
error(message: unknown, ...args: unknown[]): void;
|
|
69
|
+
success(message: unknown, ...args: unknown[]): void;
|
|
70
|
+
log({ level, args }: LogWithMeta): void;
|
|
71
|
+
};
|
|
72
|
+
|
|
29
73
|
/**
|
|
30
74
|
* Client Toolkit Lite Runtime
|
|
31
75
|
*
|
|
@@ -33,10 +77,11 @@ declare global {
|
|
|
33
77
|
*
|
|
34
78
|
* 执行顺序:
|
|
35
79
|
* 1. React DevTools Hook(必须在 React 加载之前)
|
|
36
|
-
* 2.
|
|
37
|
-
* 3.
|
|
80
|
+
* 2. Axios 配置(仅 CSRF token 注入)
|
|
81
|
+
* 3. Logger 模块 side-effect(dev 下注册 interceptErrors)
|
|
82
|
+
* 4. Iframe Bridge(仅 dev + iframe 嵌入)
|
|
38
83
|
*
|
|
39
|
-
*
|
|
84
|
+
* 不包含 server-log SSE:jsPage 是纯前端,没有"业务后端日志"概念。
|
|
40
85
|
*/
|
|
41
86
|
|
|
42
87
|
declare global {
|
|
@@ -66,6 +111,26 @@ declare const PagePlaceholder: React__default.FC<{
|
|
|
66
111
|
description?: string;
|
|
67
112
|
}>;
|
|
68
113
|
|
|
114
|
+
/**
|
|
115
|
+
* ErrorBoundary fallback 组件。
|
|
116
|
+
*
|
|
117
|
+
* 链路:业务代码 throw → react-error-boundary 捕获 → 渲染本组件
|
|
118
|
+
* → submitPostMessage({ type: 'RenderError' }) 通知妙搭外壳
|
|
119
|
+
* → logger.log meta.repairMessage 让外壳 sandbox-console 弹「一键修复」
|
|
120
|
+
*
|
|
121
|
+
* HMR 恢复策略按构建工具区分:
|
|
122
|
+
* - **vite**: ErrorBoundary 状态下 React Refresh family map 找不到 fiber,
|
|
123
|
+
* resetErrorBoundary 让 children 重新 mount 时 import 仍是旧引用 → 死循环。
|
|
124
|
+
* vite 模式(检测到 window.__VITE_HMR__)必须 `window.location.reload()`
|
|
125
|
+
* 才能让模块图完整重载(这是 vite 官方对 ErrorBoundary 场景的 recommended fallback)。
|
|
126
|
+
* - **webpack/rspack**: 模块 cache 可被 HMR 直接替换,resetErrorBoundary 让 children
|
|
127
|
+
* 重新 mount 时 import 拿到新版本 → 正常恢复,不需要 reload。
|
|
128
|
+
*/
|
|
129
|
+
declare const ErrorRender: React__default.FC<{
|
|
130
|
+
error: unknown;
|
|
131
|
+
resetErrorBoundary?: (...args: unknown[]) => void;
|
|
132
|
+
}>;
|
|
133
|
+
|
|
69
134
|
interface ActiveLinkProps extends Omit<NavLinkProps, 'to'> {
|
|
70
135
|
to: string;
|
|
71
136
|
}
|
|
@@ -265,6 +330,8 @@ declare const createDataLoomClient: (url?: string, pat?: string) => _lark_apaas_
|
|
|
265
330
|
/** 获取dataloom实例 */
|
|
266
331
|
declare function getDataloom(): Promise<ReturnType<typeof createDataLoomClient>>;
|
|
267
332
|
|
|
333
|
+
declare const capabilityClient: _lark_apaas_client_capability.CapabilityClient;
|
|
334
|
+
|
|
268
335
|
interface TrackParams {
|
|
269
336
|
trackKey: TrackKey;
|
|
270
337
|
trackParams?: Record<string, unknown>;
|
|
@@ -432,4 +499,4 @@ declare namespace cover {
|
|
|
432
499
|
export { cover_abstractArt3dRenderingCoverImg1 as abstractArt3dRenderingCoverImg1, cover_abstractArt3dRenderingCoverImg2 as abstractArt3dRenderingCoverImg2, cover_abstractArt3dRenderingCoverImg3 as abstractArt3dRenderingCoverImg3, cover_abstractArt3dRenderingCoverImg4 as abstractArt3dRenderingCoverImg4, cover_abstractArt3dRenderingCoverImg5 as abstractArt3dRenderingCoverImg5, cover_abstractArt3dRenderingCoverImg6 as abstractArt3dRenderingCoverImg6, cover_appealClothingCoverImg1 as appealClothingCoverImg1, cover_appealClothingCoverImg2 as appealClothingCoverImg2, cover_appealClothingCoverImg3 as appealClothingCoverImg3, cover_appealClothingCoverImg4 as appealClothingCoverImg4, cover_appealClothingCoverImg5 as appealClothingCoverImg5, cover_appealClothingCoverImg6 as appealClothingCoverImg6, cover_architectureCoverImg1 as architectureCoverImg1, cover_architectureCoverImg2 as architectureCoverImg2, cover_architectureCoverImg3 as architectureCoverImg3, cover_architectureCoverImg4 as architectureCoverImg4, cover_architectureCoverImg5 as architectureCoverImg5, cover_architectureCoverImg6 as architectureCoverImg6, cover_officeCoverImg1 as officeCoverImg1, cover_officeCoverImg2 as officeCoverImg2, cover_officeCoverImg3 as officeCoverImg3, cover_officeCoverImg4 as officeCoverImg4, cover_officeCoverImg5 as officeCoverImg5, cover_officeCoverImg6 as officeCoverImg6, cover_sceneryCoverImg1 as sceneryCoverImg1, cover_sceneryCoverImg2 as sceneryCoverImg2, cover_sceneryCoverImg3 as sceneryCoverImg3, cover_sceneryCoverImg4 as sceneryCoverImg4, cover_sceneryCoverImg5 as sceneryCoverImg5, cover_sceneryCoverImg6 as sceneryCoverImg6, cover_technologyInternetCoverImg1 as technologyInternetCoverImg1, cover_technologyInternetCoverImg2 as technologyInternetCoverImg2, cover_technologyInternetCoverImg3 as technologyInternetCoverImg3, cover_technologyInternetCoverImg4 as technologyInternetCoverImg4, cover_technologyInternetCoverImg5 as technologyInternetCoverImg5, cover_technologyInternetCoverImg6 as technologyInternetCoverImg6 };
|
|
433
500
|
}
|
|
434
501
|
|
|
435
|
-
export { ActiveLink, AppContainer, type AppInfoPayload, type IFileAttachment, type IJson, type IUserProfile, NavLink, PagePlaceholder, QueryProvider, TrackKey, type TrackParams, UniversalLink, Welcome, avatar as avatarImages, axiosForBackend, banner as bannerImages, clsxWithTw, copyToClipboard, cover as coverImages, getAppId, getAppInfo, getAxiosForBackend, getCsrfToken, getCurrentUserProfile, getDataloom, getEnvPath, getWsPath, initAxiosConfig, isIOS, isIpad, isMobile, isPreview, normalizeBasePath, reportTeaEvent, resolveAppUrl, safeStringify, scopedStorage, useAppInfo, useCurrentUserProfile, useIsMobile, useLogout };
|
|
502
|
+
export { ActiveLink, AppContainer, type AppInfoPayload, ErrorRender, type IFileAttachment, type IJson, type IUserProfile, type LogLevel, type LogWithMeta, NavLink, PagePlaceholder, QueryProvider, TrackKey, type TrackParams, UniversalLink, Welcome, avatar as avatarImages, axiosForBackend, banner as bannerImages, capabilityClient, clsxWithTw, copyToClipboard, cover as coverImages, getAppId, getAppInfo, getAxiosForBackend, getCsrfToken, getCurrentUserProfile, getDataloom, getEnvPath, getWsPath, initAxiosConfig, isIOS, isIpad, isMobile, isPreview, logger, normalizeBasePath, reportTeaEvent, resolveAppUrl, safeStringify, scopedStorage, useAppInfo, useCurrentUserProfile, useIsMobile, useLogout };
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { NavLinkProps } from 'react-router-dom';
|
|
|
5
5
|
import { ClassValue } from 'clsx';
|
|
6
6
|
import { AxiosInstance } from 'axios';
|
|
7
7
|
import * as _lark_apaas_dataloom from '@lark-apaas/dataloom';
|
|
8
|
+
import * as _lark_apaas_client_capability from '@lark-apaas/client-capability';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Inject minimal __REACT_DEVTOOLS_GLOBAL_HOOK__ before React loads.
|
|
@@ -26,6 +27,49 @@ declare global {
|
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Logger 类型定义。
|
|
32
|
+
*
|
|
33
|
+
* 跟老 toolkit 相比,lite 砍掉了 zod schema 校验,改成纯 TS 类型——
|
|
34
|
+
* intercept-global-error 不再走 levelSchema.safeParse 那条分支,
|
|
35
|
+
* 而是直接用 LOG_LEVELS 字面量数组 includes 判断。
|
|
36
|
+
*/
|
|
37
|
+
declare const LOG_LEVELS: readonly ["debug", "info", "warn", "error", "success"];
|
|
38
|
+
type LogLevel = (typeof LOG_LEVELS)[number];
|
|
39
|
+
interface LogStackFrame {
|
|
40
|
+
functionName: string;
|
|
41
|
+
fileName: string;
|
|
42
|
+
lineNumber: number;
|
|
43
|
+
columnNumber: number;
|
|
44
|
+
}
|
|
45
|
+
interface LogMeta {
|
|
46
|
+
stacktrace?: LogStackFrame[];
|
|
47
|
+
logTraceID?: string;
|
|
48
|
+
skipFrame?: number;
|
|
49
|
+
noStacktrace?: boolean;
|
|
50
|
+
repairMessage?: string;
|
|
51
|
+
/** 预留字段,用于分类日志 */
|
|
52
|
+
type?: string;
|
|
53
|
+
/** 日志去重相关字段 */
|
|
54
|
+
isDuplicate?: boolean;
|
|
55
|
+
duplicateCount?: number;
|
|
56
|
+
duplicateOfId?: string;
|
|
57
|
+
}
|
|
58
|
+
interface LogWithMeta {
|
|
59
|
+
level: LogLevel;
|
|
60
|
+
args: unknown[];
|
|
61
|
+
meta?: LogMeta;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
declare let logger: {
|
|
65
|
+
debug(message: unknown, ...args: unknown[]): void;
|
|
66
|
+
info(message: unknown, ...args: unknown[]): void;
|
|
67
|
+
warn(message: unknown, ...args: unknown[]): void;
|
|
68
|
+
error(message: unknown, ...args: unknown[]): void;
|
|
69
|
+
success(message: unknown, ...args: unknown[]): void;
|
|
70
|
+
log({ level, args }: LogWithMeta): void;
|
|
71
|
+
};
|
|
72
|
+
|
|
29
73
|
/**
|
|
30
74
|
* Client Toolkit Lite Runtime
|
|
31
75
|
*
|
|
@@ -33,10 +77,11 @@ declare global {
|
|
|
33
77
|
*
|
|
34
78
|
* 执行顺序:
|
|
35
79
|
* 1. React DevTools Hook(必须在 React 加载之前)
|
|
36
|
-
* 2.
|
|
37
|
-
* 3.
|
|
80
|
+
* 2. Axios 配置(仅 CSRF token 注入)
|
|
81
|
+
* 3. Logger 模块 side-effect(dev 下注册 interceptErrors)
|
|
82
|
+
* 4. Iframe Bridge(仅 dev + iframe 嵌入)
|
|
38
83
|
*
|
|
39
|
-
*
|
|
84
|
+
* 不包含 server-log SSE:jsPage 是纯前端,没有"业务后端日志"概念。
|
|
40
85
|
*/
|
|
41
86
|
|
|
42
87
|
declare global {
|
|
@@ -66,6 +111,26 @@ declare const PagePlaceholder: React__default.FC<{
|
|
|
66
111
|
description?: string;
|
|
67
112
|
}>;
|
|
68
113
|
|
|
114
|
+
/**
|
|
115
|
+
* ErrorBoundary fallback 组件。
|
|
116
|
+
*
|
|
117
|
+
* 链路:业务代码 throw → react-error-boundary 捕获 → 渲染本组件
|
|
118
|
+
* → submitPostMessage({ type: 'RenderError' }) 通知妙搭外壳
|
|
119
|
+
* → logger.log meta.repairMessage 让外壳 sandbox-console 弹「一键修复」
|
|
120
|
+
*
|
|
121
|
+
* HMR 恢复策略按构建工具区分:
|
|
122
|
+
* - **vite**: ErrorBoundary 状态下 React Refresh family map 找不到 fiber,
|
|
123
|
+
* resetErrorBoundary 让 children 重新 mount 时 import 仍是旧引用 → 死循环。
|
|
124
|
+
* vite 模式(检测到 window.__VITE_HMR__)必须 `window.location.reload()`
|
|
125
|
+
* 才能让模块图完整重载(这是 vite 官方对 ErrorBoundary 场景的 recommended fallback)。
|
|
126
|
+
* - **webpack/rspack**: 模块 cache 可被 HMR 直接替换,resetErrorBoundary 让 children
|
|
127
|
+
* 重新 mount 时 import 拿到新版本 → 正常恢复,不需要 reload。
|
|
128
|
+
*/
|
|
129
|
+
declare const ErrorRender: React__default.FC<{
|
|
130
|
+
error: unknown;
|
|
131
|
+
resetErrorBoundary?: (...args: unknown[]) => void;
|
|
132
|
+
}>;
|
|
133
|
+
|
|
69
134
|
interface ActiveLinkProps extends Omit<NavLinkProps, 'to'> {
|
|
70
135
|
to: string;
|
|
71
136
|
}
|
|
@@ -265,6 +330,8 @@ declare const createDataLoomClient: (url?: string, pat?: string) => _lark_apaas_
|
|
|
265
330
|
/** 获取dataloom实例 */
|
|
266
331
|
declare function getDataloom(): Promise<ReturnType<typeof createDataLoomClient>>;
|
|
267
332
|
|
|
333
|
+
declare const capabilityClient: _lark_apaas_client_capability.CapabilityClient;
|
|
334
|
+
|
|
268
335
|
interface TrackParams {
|
|
269
336
|
trackKey: TrackKey;
|
|
270
337
|
trackParams?: Record<string, unknown>;
|
|
@@ -432,4 +499,4 @@ declare namespace cover {
|
|
|
432
499
|
export { cover_abstractArt3dRenderingCoverImg1 as abstractArt3dRenderingCoverImg1, cover_abstractArt3dRenderingCoverImg2 as abstractArt3dRenderingCoverImg2, cover_abstractArt3dRenderingCoverImg3 as abstractArt3dRenderingCoverImg3, cover_abstractArt3dRenderingCoverImg4 as abstractArt3dRenderingCoverImg4, cover_abstractArt3dRenderingCoverImg5 as abstractArt3dRenderingCoverImg5, cover_abstractArt3dRenderingCoverImg6 as abstractArt3dRenderingCoverImg6, cover_appealClothingCoverImg1 as appealClothingCoverImg1, cover_appealClothingCoverImg2 as appealClothingCoverImg2, cover_appealClothingCoverImg3 as appealClothingCoverImg3, cover_appealClothingCoverImg4 as appealClothingCoverImg4, cover_appealClothingCoverImg5 as appealClothingCoverImg5, cover_appealClothingCoverImg6 as appealClothingCoverImg6, cover_architectureCoverImg1 as architectureCoverImg1, cover_architectureCoverImg2 as architectureCoverImg2, cover_architectureCoverImg3 as architectureCoverImg3, cover_architectureCoverImg4 as architectureCoverImg4, cover_architectureCoverImg5 as architectureCoverImg5, cover_architectureCoverImg6 as architectureCoverImg6, cover_officeCoverImg1 as officeCoverImg1, cover_officeCoverImg2 as officeCoverImg2, cover_officeCoverImg3 as officeCoverImg3, cover_officeCoverImg4 as officeCoverImg4, cover_officeCoverImg5 as officeCoverImg5, cover_officeCoverImg6 as officeCoverImg6, cover_sceneryCoverImg1 as sceneryCoverImg1, cover_sceneryCoverImg2 as sceneryCoverImg2, cover_sceneryCoverImg3 as sceneryCoverImg3, cover_sceneryCoverImg4 as sceneryCoverImg4, cover_sceneryCoverImg5 as sceneryCoverImg5, cover_sceneryCoverImg6 as sceneryCoverImg6, cover_technologyInternetCoverImg1 as technologyInternetCoverImg1, cover_technologyInternetCoverImg2 as technologyInternetCoverImg2, cover_technologyInternetCoverImg3 as technologyInternetCoverImg3, cover_technologyInternetCoverImg4 as technologyInternetCoverImg4, cover_technologyInternetCoverImg5 as technologyInternetCoverImg5, cover_technologyInternetCoverImg6 as technologyInternetCoverImg6 };
|
|
433
500
|
}
|
|
434
501
|
|
|
435
|
-
export { ActiveLink, AppContainer, type AppInfoPayload, type IFileAttachment, type IJson, type IUserProfile, NavLink, PagePlaceholder, QueryProvider, TrackKey, type TrackParams, UniversalLink, Welcome, avatar as avatarImages, axiosForBackend, banner as bannerImages, clsxWithTw, copyToClipboard, cover as coverImages, getAppId, getAppInfo, getAxiosForBackend, getCsrfToken, getCurrentUserProfile, getDataloom, getEnvPath, getWsPath, initAxiosConfig, isIOS, isIpad, isMobile, isPreview, normalizeBasePath, reportTeaEvent, resolveAppUrl, safeStringify, scopedStorage, useAppInfo, useCurrentUserProfile, useIsMobile, useLogout };
|
|
502
|
+
export { ActiveLink, AppContainer, type AppInfoPayload, ErrorRender, type IFileAttachment, type IJson, type IUserProfile, type LogLevel, type LogWithMeta, NavLink, PagePlaceholder, QueryProvider, TrackKey, type TrackParams, UniversalLink, Welcome, avatar as avatarImages, axiosForBackend, banner as bannerImages, capabilityClient, clsxWithTw, copyToClipboard, cover as coverImages, getAppId, getAppInfo, getAxiosForBackend, getCsrfToken, getCurrentUserProfile, getDataloom, getEnvPath, getWsPath, initAxiosConfig, isIOS, isIpad, isMobile, isPreview, logger, normalizeBasePath, reportTeaEvent, resolveAppUrl, safeStringify, scopedStorage, useAppInfo, useCurrentUserProfile, useIsMobile, useLogout };
|