@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.
@@ -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 generateSignature;
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
  }
@@ -67,7 +67,7 @@ export declare const ERROR_MESSAGES: {
67
67
  */
68
68
  export declare const API_PATHS: {
69
69
  /** 基础 API 路径模板 */
70
- readonly BASE: "/api/{appCode}/{datasetId}";
70
+ readonly BASE: "/api/{appCode}/{datasetCode}";
71
71
  /** 列表查询路径 */
72
72
  readonly LIST: "";
73
73
  /** 单条记录路径 */
@@ -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
- datasetId: string;
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
- /** 数据集 ID */
51
- datasetId: string;
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', datasetId: 'user-dataset-id' },
62
- * Posts: { tableName: 'posts', datasetId: 'post-dataset-id' }
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
- datasetId: string;
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: string;
266
- /** API 密钥,用于计算签名 */
267
- secretKey: string;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovrabet/sdk",
3
- "version": "1.1.5",
3
+ "version": "1.1.6",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,8 +0,0 @@
1
- import type { UserAuthConfig, AuthHeaders } from '../types';
2
- export declare class UserAuth {
3
- private config;
4
- constructor(config: UserAuthConfig);
5
- getAuthHeaders(): Promise<AuthHeaders>;
6
- getToken(): string;
7
- setToken(token: string): void;
8
- }