@lovrabet/sdk 1.1.15 → 1.1.16

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 CHANGED
@@ -72,7 +72,7 @@ export async function GET() {
72
72
  import { createClient } from "@lovrabet/sdk";
73
73
 
74
74
  // 获取 token
75
- const { token, timestamp } = await fetch('/api/token').then(r => r.json());
75
+ const { token, timestamp } = await fetch("/api/token").then((r) => r.json());
76
76
 
77
77
  // 创建客户端
78
78
  const client = createClient({
@@ -124,8 +124,8 @@ const result = await generateOpenApiToken({
124
124
  accessKey: process.env.LOVRABET_ACCESS_KEY!,
125
125
  });
126
126
 
127
- console.log(result.token); // 生成的 token
128
- console.log(result.timestamp); // 时间戳
127
+ console.log(result.token); // 生成的 token
128
+ console.log(result.timestamp); // 时间戳
129
129
  console.log(result.expiresAt); // 过期时间
130
130
  ```
131
131
 
@@ -195,15 +195,25 @@ const users = await client.models.users.getList();
195
195
  import { registerModels, createClient } from "@lovrabet/sdk";
196
196
 
197
197
  // 注册不同环境的配置
198
- registerModels({
199
- appCode: "prod-app",
200
- models: { /* ... */ },
201
- }, "prod");
202
-
203
- registerModels({
204
- appCode: "dev-app",
205
- models: { /* ... */ },
206
- }, "dev");
198
+ registerModels(
199
+ {
200
+ appCode: "prod-app",
201
+ models: {
202
+ /* ... */
203
+ },
204
+ },
205
+ "prod"
206
+ );
207
+
208
+ registerModels(
209
+ {
210
+ appCode: "dev-app",
211
+ models: {
212
+ /* ... */
213
+ },
214
+ },
215
+ "dev"
216
+ );
207
217
 
208
218
  // 创建不同环境的客户端
209
219
  const prodClient = createClient("prod");
@@ -216,7 +226,9 @@ const devClient = createClient("dev");
216
226
  // 创建客户端
217
227
  const client = createClient({
218
228
  appCode: "your-app-code",
219
- models: { /* ... */ },
229
+ models: {
230
+ /* ... */
231
+ },
220
232
  });
221
233
 
222
234
  // 后续更新 token
@@ -260,6 +272,10 @@ import {
260
272
  type TokenResult,
261
273
  type ListResponse,
262
274
  type ListParams,
275
+ type SortList,
276
+
277
+ // 枚举
278
+ SortOrder,
263
279
  } from "@lovrabet/sdk";
264
280
  ```
265
281
 
@@ -267,13 +283,13 @@ import {
267
283
 
268
284
  ```typescript
269
285
  interface ClientConfig {
270
- appCode?: string; // 应用代码
271
- accessKey?: string; // OpenAPI 密钥(服务端)
272
- secretKey?: string; // 密钥(可选)
273
- token?: string; // 预生成 token(浏览器)
274
- timestamp?: number; // token 时间戳
275
- env?: 'online' | 'daily'; // 环境
276
- models?: ModelsConfig; // 模型配置
286
+ appCode?: string; // 应用代码
287
+ accessKey?: string; // OpenAPI 密钥(服务端)
288
+ secretKey?: string; // 密钥(可选)
289
+ token?: string; // 预生成 token(浏览器)
290
+ timestamp?: number; // token 时间戳
291
+ env?: "online" | "daily"; // 环境
292
+ models?: ModelsConfig; // 模型配置
277
293
  }
278
294
  ```
279
295
 
@@ -287,6 +303,17 @@ const response = await client.models.users.getList({
287
303
  // 其他查询参数
288
304
  });
289
305
 
306
+ // 查询列表(带排序)
307
+ import { SortOrder } from "@lovrabet/sdk";
308
+
309
+ const sortedUsers = await client.models.users.getList(
310
+ { currentPage: 1, pageSize: 20 },
311
+ [
312
+ { createTime: SortOrder.DESC }, // 按创建时间降序
313
+ { name: SortOrder.ASC }, // 再按名称升序
314
+ ]
315
+ );
316
+
290
317
  // 获取单条记录
291
318
  const user = await client.models.users.getOne("user-id");
292
319
 
@@ -331,17 +358,17 @@ const client = createClient({
331
358
 
332
359
  ```typescript
333
360
  // 使用服务端生成的 token
334
- const { token } = await fetch('/api/token').then(r => r.json());
361
+ const { token } = await fetch("/api/token").then((r) => r.json());
335
362
  const client = createClient({ token });
336
363
  ```
337
364
 
338
365
  ## 🎯 选择正确的认证模式
339
366
 
340
- | 环境 | 认证方式 | 使用场景 |
341
- |------|---------|---------|
342
- | **Node.js 服务端** | `accessKey` | SSR、API 路由、后端服务 |
343
- | **浏览器(未登录)** | `token` | 公开数据访问、匿名用户 |
344
- | **浏览器(已登录)** | Cookie | 已认证用户、私有数据 |
367
+ | 环境 | 认证方式 | 使用场景 |
368
+ | -------------------- | ----------- | ----------------------- |
369
+ | **Node.js 服务端** | `accessKey` | SSR、API 路由、后端服务 |
370
+ | **浏览器(未登录)** | `token` | 公开数据访问、匿名用户 |
371
+ | **浏览器(已登录)** | Cookie | 已认证用户、私有数据 |
345
372
 
346
373
  ## 📚 文档
347
374
 
@@ -353,11 +380,46 @@ const client = createClient({ token });
353
380
 
354
381
  ## 📝 What's New
355
382
 
383
+ ### v1.1.16 (2025-10-15)
384
+
385
+ **新增功能 (New Features):**
386
+
387
+ - ✨ **列表排序支持** - `getList` 方法现在支持多字段排序功能
388
+
389
+ ```typescript
390
+ import { SortOrder } from "@lovrabet/sdk";
391
+
392
+ // 单字段排序
393
+ const users = await client.models.users.getList(
394
+ { currentPage: 1, pageSize: 20 },
395
+ [{ createTime: SortOrder.DESC }]
396
+ );
397
+
398
+ // 多字段排序
399
+ const products = await client.models.products.getList(
400
+ { currentPage: 1, pageSize: 20 },
401
+ [
402
+ { priority: SortOrder.DESC }, // 优先级降序
403
+ { createTime: SortOrder.DESC }, // 创建时间降序
404
+ { name: SortOrder.ASC }, // 名称升序
405
+ ]
406
+ );
407
+ ```
408
+
409
+ - 使用简洁的 key-value 格式:`{ "字段名": SortOrder.ASC/DESC }`
410
+ - 支持多字段组合排序
411
+ - 同时支持 OpenAPI 和 WebAPI 两种模式
412
+ - 向后兼容,sortList 参数可选
413
+ - 导出 `SortOrder` 枚举和 `SortList` 类型供开发者使用
414
+
415
+ ---
416
+
356
417
  ### v1.1.14 (2025-10-11)
357
418
 
358
419
  **新增功能 (New Features):**
359
420
 
360
421
  - ✨ **OpenAPI Create/Update 支持** - OpenAPI 模式现已支持完整的 CRUD 操作
422
+
361
423
  ```typescript
362
424
  // 创建记录
363
425
  const newUser = await client.models.users.create({
@@ -370,6 +432,7 @@ const client = createClient({ token });
370
432
  name: "Jane Doe",
371
433
  });
372
434
  ```
435
+
373
436
  - 认证信息自动添加到请求头(X-Token、X-Time-Stamp)
374
437
  - 请求体只包含业务数据(`appCode`、`datasetCode`、`paramMap`)
375
438
  - 与查询接口保持一致的架构设计
@@ -401,6 +464,7 @@ const client = createClient({ token });
401
464
  **新增功能 (New Features):**
402
465
 
403
466
  - ✨ **后端 Token 生成器** - 新增 `generateOpenApiToken()` 函数,支持服务端生成 Token
467
+
404
468
  ```typescript
405
469
  import { generateOpenApiToken } from "@lovrabet/sdk";
406
470
 
@@ -427,7 +491,6 @@ const client = createClient({ token });
427
491
 
428
492
  ---
429
493
 
430
-
431
494
  ### v1.1.5 (2025-09-27)
432
495
 
433
496
  **重大变更 (Breaking Changes):**
@@ -441,7 +504,6 @@ const client = createClient({ token });
441
504
 
442
505
  ---
443
506
 
444
-
445
507
  ## 🤝 反馈
446
508
 
447
509
  如遇到问题或有功能建议,欢迎提交 Issue!
@@ -451,6 +513,7 @@ const client = createClient({ token });
451
513
  **专有软件(Proprietary)** - 详见 [LICENSE](./LICENSE) 文件
452
514
 
453
515
  本 SDK 为 Lovrabet 开放平台的专有组件:
516
+
454
517
  - ✅ **允许使用** - 可以安装并在项目中集成本 SDK
455
518
  - ✅ **应用分发** - 可以分发包含本 SDK 的应用程序
456
519
  - ✅ **商业使用** - 可用于个人和商业项目
@@ -458,4 +521,4 @@ const client = createClient({ token });
458
521
  - ❌ **不得单独分发** - 不得单独复制或分发本 SDK
459
522
  - ❌ **源代码不公开** - 本 SDK 为闭源软件
460
523
 
461
- 如需商业授权或有疑问,请访问 [lovrabet.com](https://www.lovrabet.com)
524
+ 如需商业授权或有疑问,请访问 [lovrabet.com](https://www.lovrabet.com)
package/dist/index.d.ts CHANGED
@@ -7,4 +7,5 @@ export { AbstractBaseModel, OpenApiModel, WebApiModel, ModelFactory, } from "./s
7
7
  export { AuthManager, } from "./src/auth/index";
8
8
  export { generateOpenApiToken, TokenGenerator, isTokenExpiring, getTokenRemainingTime, type GenerateTokenParams, type TokenResult } from "./src/auth/index";
9
9
  export type { ClientConfig, LovrabetClient, ModelConfig, ModelsConfig, } from "./src/types/index";
10
- export type { ListParams, ListResponse, Environment, BaseModelMethods, } from "./src/types/index";
10
+ export type { ListParams, ListResponse, Environment, BaseModelMethods, SortList, } from "./src/types/index";
11
+ export { SortOrder, } from "./src/types/index";