@lovrabet/sdk 1.1.5 → 1.1.6
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 +7 -7
- package/dist/index.js +1 -1
- package/dist/src/auth/auth-manager.d.ts +1 -2
- package/dist/src/auth/openapi-auth.d.ts +3 -2
- package/dist/src/client/client.d.ts +9 -0
- package/dist/src/config/constants.d.ts +1 -1
- package/dist/src/models/base-model.d.ts +2 -0
- package/dist/src/models/model-manager.d.ts +1 -1
- package/dist/src/types/index.d.ts +31 -19
- package/package.json +1 -1
- package/dist/src/auth/user-auth.d.ts +0 -8
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import type { ClientConfig, AuthHeaders, AuthManager as IAuthManager } from '../types';
|
|
2
2
|
export declare class AuthManager implements IAuthManager {
|
|
3
3
|
private config;
|
|
4
|
-
private userAuth?;
|
|
5
4
|
private openApiAuth?;
|
|
6
5
|
private cookieAuth?;
|
|
7
6
|
constructor(config: ClientConfig);
|
|
8
7
|
private initAuthMethods;
|
|
9
|
-
getAuthHeaders(): Promise<AuthHeaders>;
|
|
8
|
+
getAuthHeaders(appCode?: string, datasetCode?: string): Promise<AuthHeaders>;
|
|
10
9
|
validateAuth(): Promise<boolean>;
|
|
11
10
|
/**
|
|
12
11
|
* Check if we're using cookie-based authentication
|
|
@@ -2,6 +2,7 @@ import type { OpenApiAuthConfig, AuthHeaders } from '../types';
|
|
|
2
2
|
export declare class OpenApiAuth {
|
|
3
3
|
private config;
|
|
4
4
|
constructor(config: OpenApiAuthConfig);
|
|
5
|
-
getAuthHeaders(): Promise<AuthHeaders>;
|
|
6
|
-
private
|
|
5
|
+
getAuthHeaders(appCode: string, datasetCode: string): Promise<AuthHeaders>;
|
|
6
|
+
private generateToken;
|
|
7
|
+
private hmacSha256;
|
|
7
8
|
}
|
|
@@ -74,4 +74,13 @@ export declare class LovrabetClient implements ILovrabetClient {
|
|
|
74
74
|
* 3. 作为 models.xxx 语法糖的底层实现
|
|
75
75
|
*/
|
|
76
76
|
getModel(indexOrName: number | string): import("../models/base-model").BaseModel;
|
|
77
|
+
/**
|
|
78
|
+
* 检查当前是否为 OpenAPI 模式
|
|
79
|
+
* 为什么提供这个方法:
|
|
80
|
+
* 1. 让用户能够了解当前使用的认证和API模式
|
|
81
|
+
* 2. 支持根据模式执行不同的业务逻辑
|
|
82
|
+
* 3. 便于调试和排查问题
|
|
83
|
+
* 4. 与 BaseModel 的逻辑保持一致
|
|
84
|
+
*/
|
|
85
|
+
isOpenApiMode(): boolean;
|
|
77
86
|
}
|
|
@@ -5,8 +5,10 @@ export declare class BaseModel implements BaseModelMethods {
|
|
|
5
5
|
private httpClient;
|
|
6
6
|
private config;
|
|
7
7
|
private appCode;
|
|
8
|
+
private globalConfig;
|
|
8
9
|
constructor(modelName: string, httpClient: HttpClient, globalConfig: ClientConfig);
|
|
9
10
|
private resolveModelConfig;
|
|
11
|
+
private isOpenApiMode;
|
|
10
12
|
private getApiPath;
|
|
11
13
|
getList<T = any>(params?: ListParams): Promise<ListResponse<T>>;
|
|
12
14
|
getOne<T = any>(id: string | number): Promise<T>;
|
|
@@ -11,7 +11,7 @@ export declare class ModelManager implements IModelManager {
|
|
|
11
11
|
clearCache(): void;
|
|
12
12
|
addModel(modelName: string, config: {
|
|
13
13
|
tableName: string;
|
|
14
|
-
|
|
14
|
+
datasetCode: string;
|
|
15
15
|
}): void;
|
|
16
16
|
list(): string[];
|
|
17
17
|
get(indexOrName: number | string): BaseModel;
|
|
@@ -47,8 +47,8 @@ export interface ListResponse<T> {
|
|
|
47
47
|
export interface ModelConfig {
|
|
48
48
|
/** 数据表名称 */
|
|
49
49
|
tableName: string;
|
|
50
|
-
/**
|
|
51
|
-
|
|
50
|
+
/** 数据集代码 */
|
|
51
|
+
datasetCode: string;
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
54
|
* 模型配置集合接口
|
|
@@ -58,8 +58,8 @@ export interface ModelConfig {
|
|
|
58
58
|
* const config: ModelsConfig = {
|
|
59
59
|
* appCode: 'my-app',
|
|
60
60
|
* models: {
|
|
61
|
-
* Users: { tableName: 'users',
|
|
62
|
-
* Posts: { tableName: 'posts',
|
|
61
|
+
* Users: { tableName: 'users', datasetCode: 'user-dataset-code' },
|
|
62
|
+
* Posts: { tableName: 'posts', datasetCode: 'post-dataset-code' }
|
|
63
63
|
* }
|
|
64
64
|
* };
|
|
65
65
|
* ```
|
|
@@ -206,7 +206,7 @@ export interface ModelManager {
|
|
|
206
206
|
*/
|
|
207
207
|
addModel(modelName: string, config: {
|
|
208
208
|
tableName: string;
|
|
209
|
-
|
|
209
|
+
datasetCode: string;
|
|
210
210
|
}): void;
|
|
211
211
|
/**
|
|
212
212
|
* 获取所有可用模型列表
|
|
@@ -248,23 +248,19 @@ export interface AuthHeaders {
|
|
|
248
248
|
/** 请求头键值对 */
|
|
249
249
|
[key: string]: string;
|
|
250
250
|
}
|
|
251
|
-
/**
|
|
252
|
-
* 用户 Token 认证配置
|
|
253
|
-
* @description 用于 Bearer Token 认证方式
|
|
254
|
-
*/
|
|
255
|
-
export interface UserAuthConfig {
|
|
256
|
-
/** 用户认证 Token */
|
|
257
|
-
token: string;
|
|
258
|
-
}
|
|
259
251
|
/**
|
|
260
252
|
* OpenAPI 密钥认证配置
|
|
261
|
-
* @description
|
|
253
|
+
* @description 用于签名认证方式,支持两种模式:
|
|
254
|
+
* 1. Server 端:传入 accessKey,内部生成 token
|
|
255
|
+
* 2. Client 端:直接传入预计算的 token
|
|
262
256
|
*/
|
|
263
257
|
export interface OpenApiAuthConfig {
|
|
264
|
-
/** API
|
|
265
|
-
accessKey
|
|
266
|
-
/** API
|
|
267
|
-
secretKey
|
|
258
|
+
/** API 访问密钥(Server 端使用) */
|
|
259
|
+
accessKey?: string;
|
|
260
|
+
/** API 密钥,用于计算签名(可选,有默认值) */
|
|
261
|
+
secretKey?: string;
|
|
262
|
+
/** 预计算的 token(Client 端使用,避免在浏览器暴露 accessKey) */
|
|
263
|
+
token?: string;
|
|
268
264
|
}
|
|
269
265
|
/**
|
|
270
266
|
* 认证管理器接口
|
|
@@ -284,9 +280,11 @@ export interface AuthManager {
|
|
|
284
280
|
/**
|
|
285
281
|
* 获取认证请求头
|
|
286
282
|
* @description 根据当前配置的认证方式生成对应的请求头
|
|
283
|
+
* @param appCode 应用代码(OpenAPI 认证时必需)
|
|
284
|
+
* @param datasetCode 数据集代码(OpenAPI 认证时必需)
|
|
287
285
|
* @returns 包含认证信息的请求头对象
|
|
288
286
|
*/
|
|
289
|
-
getAuthHeaders(): Promise<AuthHeaders>;
|
|
287
|
+
getAuthHeaders(appCode?: string, datasetCode?: string): Promise<AuthHeaders>;
|
|
290
288
|
/**
|
|
291
289
|
* 验证当前认证是否有效
|
|
292
290
|
* @returns 认证是否有效
|
|
@@ -390,4 +388,18 @@ export interface LovrabetClient {
|
|
|
390
388
|
* ```
|
|
391
389
|
*/
|
|
392
390
|
getModel(indexOrName: number | string): BaseModelMethods;
|
|
391
|
+
/**
|
|
392
|
+
* 检查当前是否为 OpenAPI 模式
|
|
393
|
+
* @returns 如果配置了 accessKey 或 token 则返回 true,否则返回 false
|
|
394
|
+
* @description OpenAPI 模式会使用不同的 URL 路径和认证方式
|
|
395
|
+
* @example
|
|
396
|
+
* ```typescript
|
|
397
|
+
* const client = createClient({ accessKey: 'ak-xxx' });
|
|
398
|
+
* console.log(client.isOpenApiMode()); // true
|
|
399
|
+
*
|
|
400
|
+
* const cookieClient = createClient({});
|
|
401
|
+
* console.log(cookieClient.isOpenApiMode()); // false
|
|
402
|
+
* ```
|
|
403
|
+
*/
|
|
404
|
+
isOpenApiMode(): boolean;
|
|
393
405
|
}
|
package/package.json
CHANGED