@longzai-intelligence/pagination 0.0.2 → 0.0.3

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.
Files changed (91) hide show
  1. package/README.md +36 -207
  2. package/dist/hono.cjs +1 -0
  3. package/dist/hono.d.cts +15 -0
  4. package/dist/hono.d.mts +15 -0
  5. package/dist/hono.mjs +1 -0
  6. package/dist/{index-C8FaNzej.d.mts → index-C4IwIpFc.d.mts} +55 -1
  7. package/dist/{index-CMiyhlfm.d.cts → index-DpbbjAwO.d.cts} +55 -1
  8. package/dist/index.cjs +1 -33
  9. package/dist/index.d.cts +80 -2
  10. package/dist/index.d.mts +80 -2
  11. package/dist/index.mjs +1 -1
  12. package/dist/typeorm.cjs +1 -129
  13. package/dist/typeorm.d.cts +1 -1
  14. package/dist/typeorm.d.mts +1 -1
  15. package/dist/typeorm.mjs +1 -1
  16. package/dist/utils-B200OLT-.cjs +1 -0
  17. package/dist/utils-DsM7-PZL.mjs +1 -0
  18. package/package.json +19 -7
  19. package/.turbo/turbo-build.log +0 -22
  20. package/.turbo/turbo-lint.log +0 -1
  21. package/.turbo/turbo-test$colon$coverage.log +0 -36
  22. package/.turbo/turbo-test.log +0 -14
  23. package/.turbo/turbo-typecheck.log +0 -4
  24. package/CHANGELOG.md +0 -18
  25. package/coverage/base.css +0 -224
  26. package/coverage/block-navigation.js +0 -87
  27. package/coverage/coverage-final.json +0 -16
  28. package/coverage/favicon.png +0 -0
  29. package/coverage/index.html +0 -176
  30. package/coverage/prettify.css +0 -1
  31. package/coverage/prettify.js +0 -2
  32. package/coverage/sort-arrow-sprite.png +0 -0
  33. package/coverage/sorter.js +0 -210
  34. package/coverage/src/adapters/index.html +0 -116
  35. package/coverage/src/adapters/typeorm.adapter.ts.html +0 -940
  36. package/coverage/src/index.html +0 -131
  37. package/coverage/src/index.ts.html +0 -280
  38. package/coverage/src/schemas/index.html +0 -161
  39. package/coverage/src/schemas/index.ts.html +0 -169
  40. package/coverage/src/schemas/pagination.schemas.ts.html +0 -343
  41. package/coverage/src/schemas/result.schemas.ts.html +0 -724
  42. package/coverage/src/schemas/sort.schemas.ts.html +0 -544
  43. package/coverage/src/typeorm.ts.html +0 -154
  44. package/coverage/src/types/index.html +0 -176
  45. package/coverage/src/types/index.ts.html +0 -199
  46. package/coverage/src/types/pagination.types.ts.html +0 -169
  47. package/coverage/src/types/result.types.ts.html +0 -127
  48. package/coverage/src/types/sort.types.ts.html +0 -142
  49. package/coverage/src/types/typeorm.d.ts.html +0 -196
  50. package/coverage/src/utils/index.html +0 -146
  51. package/coverage/src/utils/index.ts.html +0 -178
  52. package/coverage/src/utils/pagination.util.ts.html +0 -703
  53. package/coverage/src/utils/validation.util.ts.html +0 -535
  54. package/dist/utils-CV6Ovku6.mjs +0 -1
  55. package/dist/utils-D_qD2YAX.cjs +0 -1
  56. package/docs/specs/spec-20260413-typeorm-subpath-export/checklist.md +0 -33
  57. package/docs/specs/spec-20260413-typeorm-subpath-export/spec.md +0 -104
  58. package/docs/specs/spec-20260413-typeorm-subpath-export/tasks.md +0 -48
  59. package/eslint.config.ts +0 -3
  60. package/src/__tests__/index.test.ts +0 -72
  61. package/src/__tests__/pagination.util.test.ts +0 -251
  62. package/src/__tests__/result.schemas.test.ts +0 -142
  63. package/src/__tests__/sort.schemas.test.ts +0 -157
  64. package/src/__tests__/typeorm.adapter.test.ts +0 -212
  65. package/src/__tests__/validation.util.test.ts +0 -120
  66. package/src/adapters/typeorm/adapter.ts +0 -203
  67. package/src/adapters/typeorm/index.ts +0 -23
  68. package/src/adapters/typeorm/typeorm.d.ts +0 -37
  69. package/src/adapters/typeorm/types.ts +0 -95
  70. package/src/index.ts +0 -65
  71. package/src/schemas/index.ts +0 -28
  72. package/src/schemas/pagination.schemas.ts +0 -86
  73. package/src/schemas/result.schemas.ts +0 -213
  74. package/src/schemas/sort.schemas.ts +0 -153
  75. package/src/typeorm.ts +0 -23
  76. package/src/types/index.ts +0 -38
  77. package/src/types/pagination.types.ts +0 -28
  78. package/src/types/result.types.ts +0 -14
  79. package/src/types/sort.types.ts +0 -19
  80. package/src/utils/index.ts +0 -31
  81. package/src/utils/pagination.util.ts +0 -206
  82. package/src/utils/validation.util.ts +0 -150
  83. package/tsconfig/.cache/app.tsbuildinfo +0 -1
  84. package/tsconfig/.cache/node.tsbuildinfo +0 -1
  85. package/tsconfig/.cache/test.tsbuildinfo +0 -1
  86. package/tsconfig/app.json +0 -15
  87. package/tsconfig/node.json +0 -11
  88. package/tsconfig/test.json +0 -14
  89. package/tsconfig.json +0 -9
  90. package/tsdown.config.ts +0 -13
  91. package/vitest.config.ts +0 -3
package/dist/index.d.mts CHANGED
@@ -1,4 +1,6 @@
1
- import { C as PaginationDefaults, E as PaginationParamsSchema, S as OffsetPaginationParamsSchema, T as PaginationParams, _ as createPaginatedResultSchema, a as SortOrder, b as CursorPaginationParamsSchema, c as SortParamsSchema, d as createSortParamsSchema, f as CursorPaginatedResult, g as createOffsetPaginatedResultSchema, h as createCursorPaginatedResultSchema, i as SortItemSchema, l as createMultiSortParamsSchema, m as PaginatedResult, n as MultiSortParamsSchema, o as SortOrderSchema, p as OffsetPaginatedResult, r as SortItem, s as SortParams, t as MultiSortParams, u as createSortItemSchema, v as PAGINATION_DEFAULTS, w as PaginationDefaultsSchema, x as OffsetPaginationParams, y as CursorPaginationParams } from "./index-C8FaNzej.mjs";
1
+ import { A as createPaginationSchema, C as CursorPaginationParamsSchema, D as PaginationDefaultsSchema, E as PaginationDefaults, O as PaginationParams, S as CursorPaginationParams, T as OffsetPaginationParamsSchema, _ as createCursorPaginatedResultSchema, a as SortOrder, b as createResultSchema, c as SortParamsSchema, d as createSortParamsSchema, f as CompactPaginatedResult, g as createCompactPaginatedResultSchema, h as PaginatedResult, i as SortItemSchema, k as PaginationParamsSchema, l as createMultiSortParamsSchema, m as OffsetPaginatedResult, n as MultiSortParamsSchema, o as SortOrderSchema, p as CursorPaginatedResult, r as SortItem, s as SortParams, t as MultiSortParams, u as createSortItemSchema, v as createOffsetPaginatedResultSchema, w as OffsetPaginationParams, x as PAGINATION_DEFAULTS, y as createPaginatedResultSchema } from "./index-C4IwIpFc.mjs";
2
+ import * as _$zod from "zod";
3
+ import { z } from "zod";
2
4
 
3
5
  //#region src/utils/pagination.util.d.ts
4
6
  type OffsetPaginationResult = {
@@ -18,6 +20,20 @@ declare function hasPreviousPage(page: number): boolean;
18
20
  declare function offsetToPage(offset: number, limit: number): OffsetPaginationResult;
19
21
  declare function pageToOffset(page: number, pageSize: number): PagePaginationResult;
20
22
  declare function createPaginatedResult<T>(items: T[], total: number, page: number, pageSize: number): PaginatedResult<T>;
23
+ type PaginationDefaultsOverrides = {
24
+ page?: number;
25
+ pageSize?: number;
26
+ maxPageSize?: number;
27
+ minPageSize?: number;
28
+ };
29
+ declare function createPaginationDefaults(overrides?: PaginationDefaultsOverrides): {
30
+ normalize(params?: PaginationParams): Required<PaginationParams>;
31
+ normalizeOffset(params?: OffsetPaginationParams): Required<OffsetPaginationParams>;
32
+ page: number;
33
+ pageSize: number;
34
+ maxPageSize: number;
35
+ minPageSize: number;
36
+ };
21
37
  //#endregion
22
38
  //#region src/utils/validation.util.d.ts
23
39
  type PaginationValidationResult = {
@@ -35,4 +51,66 @@ declare function isValidLimit(limit: unknown): limit is number;
35
51
  declare function isValidPagination(params: unknown): params is PaginationValidationResult;
36
52
  declare function isValidOffsetPagination(params: unknown): params is OffsetPaginationValidationResult;
37
53
  //#endregion
38
- export { type CursorPaginatedResult, type CursorPaginationParams, CursorPaginationParamsSchema, type MultiSortParams, MultiSortParamsSchema, type OffsetPaginatedResult, type OffsetPaginationParams, OffsetPaginationParamsSchema, type OffsetPaginationResult, type OffsetPaginationValidationResult, PAGINATION_DEFAULTS, type PagePaginationResult, type PaginatedResult, type PaginationDefaults, PaginationDefaultsSchema, type PaginationParams, PaginationParamsSchema, type PaginationValidationResult, type SortItem, SortItemSchema, type SortOrder, SortOrderSchema, type SortParams, SortParamsSchema, calculateOffset, calculateTotalPages, createCursorPaginatedResultSchema, createMultiSortParamsSchema, createOffsetPaginatedResultSchema, createPaginatedResult, createPaginatedResultSchema, createSortItemSchema, createSortParamsSchema, hasNextPage, hasPreviousPage, isValidLimit, isValidOffset, isValidOffsetPagination, isValidPage, isValidPageSize, isValidPagination, normalizeOffsetPagination, normalizePagination, offsetToPage, pageToOffset };
54
+ //#region src/presets/types.d.ts
55
+ type PaginationPreset<Q, R> = {
56
+ querySchema: _$zod.ZodTypeAny;
57
+ resultSchema: _$zod.ZodTypeAny;
58
+ parseQuery(query: Record<string, string | undefined>): Q;
59
+ buildResult(...args: unknown[]): R;
60
+ };
61
+ type TablePresetConfig = {
62
+ pageSizeField?: 'pageSize' | 'limit';
63
+ defaultPageSize?: number;
64
+ maxPageSize?: number;
65
+ sortFields?: readonly [string, ...string[]];
66
+ businessFields?: Record<string, _$zod.ZodTypeAny>;
67
+ };
68
+ type TablePreset<Q = Record<string, unknown>> = PaginationPreset<Q, PaginatedResult<unknown>> & {
69
+ defaults: ReturnType<typeof createPaginationDefaults>;
70
+ normalize(params?: Record<string, unknown>): {
71
+ page: number;
72
+ pageSize: number;
73
+ };
74
+ };
75
+ type InfiniteScrollPresetConfig = {
76
+ cursorField?: string;
77
+ defaultPageSize?: number;
78
+ businessFields?: Record<string, _$zod.ZodTypeAny>;
79
+ };
80
+ type InfiniteScrollPreset<Q = Record<string, unknown>> = PaginationPreset<Q, CursorPaginatedResult<unknown>>;
81
+ type TimelinePresetConfig = {
82
+ defaultLimit?: number;
83
+ maxLimit?: number;
84
+ businessFields?: Record<string, _$zod.ZodTypeAny>;
85
+ };
86
+ type TimelinePreset<Q = Record<string, unknown>> = PaginationPreset<Q, CompactPaginatedResult<unknown>>;
87
+ type CompactListPresetConfig = {
88
+ mode?: 'page' | 'offset';
89
+ pageSizeField?: string;
90
+ defaultPageSize?: number;
91
+ businessFields?: Record<string, _$zod.ZodTypeAny>;
92
+ };
93
+ type CompactListPreset<Q = Record<string, unknown>> = PaginationPreset<Q, CompactPaginatedResult<unknown>>;
94
+ //#endregion
95
+ //#region src/presets/table.preset.d.ts
96
+ declare function createTablePreset<TSort extends readonly [string, ...string[]], TBusiness extends Record<string, z.ZodTypeAny>>(config?: TablePresetConfig & {
97
+ sortFields?: TSort;
98
+ businessFields?: TBusiness;
99
+ }): TablePreset;
100
+ //#endregion
101
+ //#region src/presets/infinite-scroll.preset.d.ts
102
+ declare function createInfiniteScrollPreset<TBusiness extends Record<string, z.ZodTypeAny>>(config?: InfiniteScrollPresetConfig & {
103
+ businessFields?: TBusiness;
104
+ }): InfiniteScrollPreset;
105
+ //#endregion
106
+ //#region src/presets/timeline.preset.d.ts
107
+ declare function createTimelinePreset<TBusiness extends Record<string, z.ZodTypeAny>>(config?: TimelinePresetConfig & {
108
+ businessFields?: TBusiness;
109
+ }): TimelinePreset;
110
+ //#endregion
111
+ //#region src/presets/compact-list.preset.d.ts
112
+ declare function createCompactListPreset<TBusiness extends Record<string, z.ZodTypeAny>>(config?: CompactListPresetConfig & {
113
+ businessFields?: TBusiness;
114
+ }): CompactListPreset;
115
+ //#endregion
116
+ export { type CompactListPreset, type CompactListPresetConfig, type CompactPaginatedResult, type CursorPaginatedResult, type CursorPaginationParams, CursorPaginationParamsSchema, type InfiniteScrollPreset, type InfiniteScrollPresetConfig, type MultiSortParams, MultiSortParamsSchema, type OffsetPaginatedResult, type OffsetPaginationParams, OffsetPaginationParamsSchema, type OffsetPaginationResult, type OffsetPaginationValidationResult, PAGINATION_DEFAULTS, type PagePaginationResult, type PaginatedResult, type PaginationDefaults, PaginationDefaultsSchema, type PaginationParams, PaginationParamsSchema, type PaginationPreset, type PaginationValidationResult, type SortItem, SortItemSchema, type SortOrder, SortOrderSchema, type SortParams, SortParamsSchema, type TablePreset, type TablePresetConfig, type TimelinePreset, type TimelinePresetConfig, calculateOffset, calculateTotalPages, createCompactListPreset, createCompactPaginatedResultSchema, createCursorPaginatedResultSchema, createInfiniteScrollPreset, createMultiSortParamsSchema, createOffsetPaginatedResultSchema, createPaginatedResult, createPaginatedResultSchema, createPaginationDefaults, createPaginationSchema, createResultSchema, createSortItemSchema, createSortParamsSchema, createTablePreset, createTimelinePreset, hasNextPage, hasPreviousPage, isValidLimit, isValidOffset, isValidOffsetPagination, isValidPage, isValidPageSize, isValidPagination, normalizeOffsetPagination, normalizePagination, offsetToPage, pageToOffset };
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{A as e,C as t,D as n,E as r,O as i,S as a,T as o,_ as s,a as c,b as l,c as u,d,f,g as p,h as m,i as h,k as g,l as _,m as v,n as y,o as b,p as x,r as S,s as C,t as w,u as T,v as E,w as D,x as O,y as k}from"./utils-CV6Ovku6.mjs";export{n as CursorPaginationParamsSchema,p as MultiSortParamsSchema,i as OffsetPaginationParamsSchema,r as PAGINATION_DEFAULTS,g as PaginationDefaultsSchema,e as PaginationParamsSchema,s as SortItemSchema,E as SortOrderSchema,k as SortParamsSchema,C as calculateOffset,u as calculateTotalPages,t as createCursorPaginatedResultSchema,l as createMultiSortParamsSchema,D as createOffsetPaginatedResultSchema,_ as createPaginatedResult,o as createPaginatedResultSchema,O as createSortItemSchema,a as createSortParamsSchema,T as hasNextPage,d as hasPreviousPage,w as isValidLimit,y as isValidOffset,S as isValidOffsetPagination,h as isValidPage,c as isValidPageSize,b as isValidPagination,f as normalizeOffsetPagination,x as normalizePagination,v as offsetToPage,m as pageToOffset};
1
+ import{A as e,C as t,D as n,E as r,M as i,N as a,O as o,P as s,S as c,T as l,_ as u,a as d,b as f,c as p,d as m,f as h,g,h as _,i as v,j as y,k as b,l as x,m as S,n as C,o as w,p as T,r as E,s as D,t as O,u as k,v as A,w as j,x as M,y as N}from"./utils-DsM7-PZL.mjs";import{z as P}from"zod";function F(e){if(e===void 0)return;let t=Number(e);return Number.isNaN(t)?void 0:t}function I(e){let n=e?.pageSizeField??`pageSize`,r=k({pageSize:e?.defaultPageSize,maxPageSize:e?.maxPageSize}),i=s({mode:`page`,pageSizeField:n}),a=e?.sortFields?t([...e.sortFields]):P.object({}),c=i.merge(a).extend(e?.businessFields??{});return{querySchema:c,resultSchema:o(P.unknown(),{mode:`page`,pageSizeField:n}),defaults:r,normalize(e){return r.normalize({page:e?.page,pageSize:e?.[n]})},parseQuery(t){let r={};if(t.page!==void 0&&(r.page=F(t.page)),t[n]!==void 0&&(r[n]=F(t[n])),t.sortBy!==void 0&&(r.sortBy=t.sortBy),t.sortOrder!==void 0&&(r.sortOrder=t.sortOrder),e?.businessFields)for(let n of Object.keys(e.businessFields))t[n]!==void 0&&(r[n]=t[n]);return c.parse(r)},buildResult(e,t,n,r){return x(e,t,n,r)}}}function L(e){if(e===void 0)return;let t=Number(e);return Number.isNaN(t)?void 0:t}function R(e){let t=e?.cursorField??`cursor`,n=s({mode:`cursor`,cursorField:t}).extend(e?.businessFields??{});return{querySchema:n,resultSchema:o(P.unknown(),{mode:`cursor`}),parseQuery(r){let i={};if(r[t]!==void 0&&(i[t]=r[t]),r.limit!==void 0&&(i.limit=L(r.limit)),e?.businessFields)for(let t of Object.keys(e.businessFields))r[t]!==void 0&&(i[t]=r[t]);return n.parse(i)},buildResult(e,t,n){return{items:e,nextCursor:t,previousCursor:null,hasMore:n}}}}function z(e){if(e===void 0)return;let t=Number(e);return Number.isNaN(t)?void 0:t}function B(e){let t=s({mode:`offset`,fields:{limit:!0,offset:!1}}).extend(e?.businessFields??{});return{querySchema:t,resultSchema:o(P.unknown(),{mode:`compact`}),parseQuery(n){let r={};if(n.limit!==void 0&&(r.limit=z(n.limit)),e?.businessFields)for(let t of Object.keys(e.businessFields))n[t]!==void 0&&(r[t]=n[t]);return t.parse(r)},buildResult(e,t,n){return{items:e,total:t,hasMore:n}}}}function V(e){if(e===void 0)return;let t=Number(e);return Number.isNaN(t)?void 0:t}function H(e){let t=e?.mode??`page`,n=e?.pageSizeField??`pageSize`,r=s({mode:t,pageSizeField:n}).extend(e?.businessFields??{});return{querySchema:r,resultSchema:o(P.unknown(),{mode:`compact`}),parseQuery(i){let a={};if(t===`page`?(i.page!==void 0&&(a.page=V(i.page)),i[n]!==void 0&&(a[n]=V(i[n]))):(i.limit!==void 0&&(a.limit=V(i.limit)),i.offset!==void 0&&(a.offset=V(i.offset))),e?.businessFields)for(let t of Object.keys(e.businessFields))i[t]!==void 0&&(a[t]=i[t]);return r.parse(a)},buildResult(e,t,n){return{items:e,total:t,hasMore:n}}}}export{e as CursorPaginationParamsSchema,u as MultiSortParamsSchema,y as OffsetPaginationParamsSchema,b as PAGINATION_DEFAULTS,i as PaginationDefaultsSchema,a as PaginationParamsSchema,A as SortItemSchema,N as SortOrderSchema,f as SortParamsSchema,D as calculateOffset,p as calculateTotalPages,H as createCompactListPreset,j as createCompactPaginatedResultSchema,l as createCursorPaginatedResultSchema,R as createInfiniteScrollPreset,M as createMultiSortParamsSchema,r as createOffsetPaginatedResultSchema,x as createPaginatedResult,n as createPaginatedResultSchema,k as createPaginationDefaults,s as createPaginationSchema,o as createResultSchema,c as createSortItemSchema,t as createSortParamsSchema,I as createTablePreset,B as createTimelinePreset,m as hasNextPage,h as hasPreviousPage,O as isValidLimit,C as isValidOffset,E as isValidOffsetPagination,v as isValidPage,d as isValidPageSize,w as isValidPagination,T as normalizeOffsetPagination,S as normalizePagination,_ as offsetToPage,g as pageToOffset};
package/dist/typeorm.cjs CHANGED
@@ -1,129 +1 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_utils = require('./utils-DazsDMMu.cjs');
3
-
4
- //#region src/adapters/typeorm/adapter.ts
5
- /**
6
- * 类型守卫:检查选项是否包含映射器
7
- *
8
- * @typeParam TEntity - 实体类型
9
- * @typeParam TDto - DTO 类型
10
- * @param options - 查询选项
11
- * @returns 是否包含映射器
12
- */
13
- function hasMapper(options) {
14
- return options !== void 0 && "mapper" in options;
15
- }
16
- /**
17
- * 构建分页结果
18
- *
19
- * 内部辅助函数,构建分页结果对象
20
- *
21
- * @typeParam TDto - DTO 类型
22
- * @param items - 数据项数组
23
- * @param total - 总数
24
- * @param page - 当前页
25
- * @param pageSize - 每页大小
26
- * @returns 分页结果
27
- */
28
- function buildPaginatedResult(items, total, page, pageSize) {
29
- /**
30
- * 计算得到的总页数
31
- */
32
- const totalPages = require_utils.calculateTotalPages(total, pageSize);
33
- return {
34
- items,
35
- total,
36
- page,
37
- pageSize,
38
- totalPages,
39
- hasNextPage: require_utils.hasNextPage(page, totalPages),
40
- hasPreviousPage: require_utils.hasPreviousPage(page)
41
- };
42
- }
43
- /**
44
- * 使用 Repository 进行分页查询
45
- *
46
- * 通过 TypeORM Repository 进行分页查询,支持实体到 DTO 的映射
47
- *
48
- * 当提供 mapper 时返回映射后的 DTO,否则返回原始实体
49
- *
50
- * @typeParam TEntity - 实体类型
51
- * @typeParam TDto - DTO 类型
52
- * @param repository - TypeORM 仓库
53
- * @param params - 分页参数
54
- * @param options - 查询选项
55
- * @returns 分页结果
56
- */
57
- async function paginateWithRepository(repository, params, options) {
58
- /**
59
- * 规范化后的分页参数
60
- */
61
- const { page, pageSize } = require_utils.normalizePagination(params);
62
- /**
63
- * TypeORM 查询选项配置
64
- */
65
- const findOptions = {
66
- skip: require_utils.calculateOffset(page, pageSize),
67
- take: pageSize,
68
- where: options?.where,
69
- relations: options?.relations,
70
- select: options?.select,
71
- order: options?.order ?? { createdAt: "DESC" }
72
- };
73
- /**
74
- * 查询结果:实体数组和总数
75
- */
76
- const [entities, total] = await repository.findAndCount(findOptions);
77
- if (hasMapper(options)) return buildPaginatedResult(await Promise.all(entities.map(options.mapper)), total, page, pageSize);
78
- return buildPaginatedResult(entities, total, page, pageSize);
79
- }
80
- /**
81
- * 使用 QueryBuilder 进行分页查询
82
- *
83
- * 通过 TypeORM QueryBuilder 进行分页查询,支持实体到 DTO 的映射
84
- *
85
- * 当提供 mapper 时返回映射后的 DTO,否则返回原始实体
86
- *
87
- * @typeParam TEntity - 实体类型
88
- * @typeParam TDto - DTO 类型
89
- * @param queryBuilder - TypeORM QueryBuilder
90
- * @param params - 分页参数
91
- * @param mapper - 实体到 DTO 的映射函数(可选)
92
- * @returns 分页结果
93
- */
94
- async function paginateWithQueryBuilder(queryBuilder, params, mapper) {
95
- /**
96
- * 规范化后的分页参数
97
- */
98
- const { page, pageSize } = require_utils.normalizePagination(params);
99
- /**
100
- * 计算得到的偏移量
101
- */
102
- const offset = require_utils.calculateOffset(page, pageSize);
103
- queryBuilder.skip(offset).take(pageSize);
104
- /**
105
- * 查询结果:实体数组和总数
106
- */
107
- const [entities, total] = await queryBuilder.getManyAndCount();
108
- if (mapper) return buildPaginatedResult(await Promise.all(entities.map(mapper)), total, page, pageSize);
109
- return buildPaginatedResult(entities, total, page, pageSize);
110
- }
111
- /**
112
- * 创建分页查询构建器
113
- *
114
- * 创建一个用于分页查询的 TypeORM QueryBuilder
115
- *
116
- * @typeParam TEntity - 实体类型
117
- * @param repository - TypeORM 仓库
118
- * @param alias - 查询别名
119
- * @returns QueryBuilder
120
- */
121
- function createPaginationQueryBuilder(repository, alias) {
122
- return repository.createQueryBuilder(alias ?? repository.metadata.name.toLowerCase());
123
- }
124
-
125
- //#endregion
126
- exports.createPaginationQueryBuilder = createPaginationQueryBuilder;
127
- exports.paginateWithQueryBuilder = paginateWithQueryBuilder;
128
- exports.paginateWithRepository = paginateWithRepository;
129
- //# sourceMappingURL=typeorm.cjs.map
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./utils-B200OLT-.cjs`);function t(e){return e!==void 0&&`mapper`in e}function n(t,n,r,i){let a=e.c(n,i);return{items:t,total:n,page:r,pageSize:i,totalPages:a,hasNextPage:e.d(r,a),hasPreviousPage:e.f(r)}}async function r(r,i,a){let{page:o,pageSize:s}=e.m(i),c={skip:e.s(o,s),take:s,where:a?.where,relations:a?.relations,select:a?.select,order:a?.order??{createdAt:`DESC`}},[l,u]=await r.findAndCount(c);return t(a)?n(await Promise.all(l.map(a.mapper)),u,o,s):n(l,u,o,s)}async function i(t,r,i){let{page:a,pageSize:o}=e.m(r),s=e.s(a,o);t.skip(s).take(o);let[c,l]=await t.getManyAndCount();return n(i?await Promise.all(c.map(i)):c,l,a,o)}function a(e,t){return e.createQueryBuilder(t??e.metadata.name.toLowerCase())}exports.createPaginationQueryBuilder=a,exports.paginateWithQueryBuilder=i,exports.paginateWithRepository=r;
@@ -1,4 +1,4 @@
1
- import { T as PaginationParams, m as PaginatedResult } from "./index-CMiyhlfm.cjs";
1
+ import { O as PaginationParams, h as PaginatedResult } from "./index-DpbbjAwO.cjs";
2
2
  import { FindManyOptions, FindOptionsOrder, ObjectLiteral, Repository, SelectQueryBuilder } from "typeorm";
3
3
 
4
4
  //#region src/adapters/typeorm/types.d.ts
@@ -1,4 +1,4 @@
1
- import { T as PaginationParams, m as PaginatedResult } from "./index-C8FaNzej.mjs";
1
+ import { O as PaginationParams, h as PaginatedResult } from "./index-C4IwIpFc.mjs";
2
2
  import { FindManyOptions, FindOptionsOrder, ObjectLiteral, Repository, SelectQueryBuilder } from "typeorm";
3
3
 
4
4
  //#region src/adapters/typeorm/types.d.ts
package/dist/typeorm.mjs CHANGED
@@ -1 +1 @@
1
- import{c as e,d as t,p as n,s as r,u as i}from"./utils-CV6Ovku6.mjs";function a(e){return e!==void 0&&`mapper`in e}function o(n,r,a,o){let s=e(r,o);return{items:n,total:r,page:a,pageSize:o,totalPages:s,hasNextPage:i(a,s),hasPreviousPage:t(a)}}async function s(e,t,i){let{page:s,pageSize:c}=n(t),l={skip:r(s,c),take:c,where:i?.where,relations:i?.relations,select:i?.select,order:i?.order??{createdAt:`DESC`}},[u,d]=await e.findAndCount(l);return a(i)?o(await Promise.all(u.map(i.mapper)),d,s,c):o(u,d,s,c)}async function c(e,t,i){let{page:a,pageSize:s}=n(t),c=r(a,s);e.skip(c).take(s);let[l,u]=await e.getManyAndCount();return o(i?await Promise.all(l.map(i)):l,u,a,s)}function l(e,t){return e.createQueryBuilder(t??e.metadata.name.toLowerCase())}export{l as createPaginationQueryBuilder,c as paginateWithQueryBuilder,s as paginateWithRepository};
1
+ import{c as e,d as t,f as n,m as r,s as i}from"./utils-DsM7-PZL.mjs";function a(e){return e!==void 0&&`mapper`in e}function o(r,i,a,o){let s=e(i,o);return{items:r,total:i,page:a,pageSize:o,totalPages:s,hasNextPage:t(a,s),hasPreviousPage:n(a)}}async function s(e,t,n){let{page:s,pageSize:c}=r(t),l={skip:i(s,c),take:c,where:n?.where,relations:n?.relations,select:n?.select,order:n?.order??{createdAt:`DESC`}},[u,d]=await e.findAndCount(l);return a(n)?o(await Promise.all(u.map(n.mapper)),d,s,c):o(u,d,s,c)}async function c(e,t,n){let{page:a,pageSize:s}=r(t),c=i(a,s);e.skip(c).take(s);let[l,u]=await e.getManyAndCount();return o(n?await Promise.all(l.map(n)):l,u,a,s)}function l(e,t){return e.createQueryBuilder(t??e.metadata.name.toLowerCase())}export{l as createPaginationQueryBuilder,c as paginateWithQueryBuilder,s as paginateWithRepository};
@@ -0,0 +1 @@
1
+ let e=require(`zod`);const t=e.z.object({page:e.z.literal(1),pageSize:e.z.literal(20),maxPageSize:e.z.literal(100),minPageSize:e.z.literal(1)}),n=e.z.object({page:e.z.number().int().positive().optional(),pageSize:e.z.number().int().positive().optional()}),r=e.z.object({limit:e.z.number().int().positive().optional(),offset:e.z.number().int().nonnegative().optional()}),i=e.z.object({cursor:e.z.string().optional(),limit:e.z.number().int().positive().optional()});function a(t){let{mode:n,pageSizeField:r=`pageSize`,cursorField:i=`cursor`,fields:a}=t;if(n===`page`){let t=a?.page===!1?{}:{page:e.z.number().int().positive().optional()},n=a?.pageSize===!1?{}:{[r]:e.z.number().int().positive().optional()};return e.z.object({...t,...n})}if(n===`offset`){let t=a?.limit===!1?{}:{limit:e.z.number().int().positive().optional()},n=a?.offset===!1?{}:{offset:e.z.number().int().nonnegative().optional()};return e.z.object({...t,...n})}if(n===`cursor`){let t=a?.cursor===!1?{}:{[i]:e.z.string().optional()},n=a?.limit===!1?{}:{limit:e.z.number().int().positive().optional()};return e.z.object({...t,...n})}throw Error(`不支持的分页模式: ${n}`)}const o={page:1,pageSize:20,maxPageSize:100,minPageSize:1};function s(t){return e.z.object({items:e.z.array(t),total:e.z.number().int().nonnegative(),page:e.z.number().int().positive(),pageSize:e.z.number().int().positive(),totalPages:e.z.number().int().nonnegative(),hasNextPage:e.z.boolean(),hasPreviousPage:e.z.boolean()})}function c(t){return e.z.object({items:e.z.array(t),total:e.z.number().int().nonnegative(),limit:e.z.number().int().nonnegative(),offset:e.z.number().int().nonnegative(),hasMore:e.z.boolean()})}function l(t){return e.z.object({items:e.z.array(t),nextCursor:e.z.string().nullable(),previousCursor:e.z.string().nullable(),hasMore:e.z.boolean()})}function u(t){return e.z.object({items:e.z.array(t),total:e.z.number().int().nonnegative(),hasMore:e.z.boolean()})}function d(t,n){let{mode:r,pageSizeField:i=`pageSize`}=n;if(r===`page`)return e.z.object({items:e.z.array(t),total:e.z.number().int().nonnegative(),page:e.z.number().int().positive(),[i]:e.z.number().int().positive(),totalPages:e.z.number().int().nonnegative(),hasNextPage:e.z.boolean(),hasPreviousPage:e.z.boolean()});if(r===`offset`)return e.z.object({items:e.z.array(t),total:e.z.number().int().nonnegative(),limit:e.z.number().int().nonnegative(),offset:e.z.number().int().nonnegative(),hasMore:e.z.boolean()});if(r===`cursor`)return e.z.object({items:e.z.array(t),nextCursor:e.z.string().nullable(),previousCursor:e.z.string().nullable(),hasMore:e.z.boolean()});if(r===`compact`)return e.z.object({items:e.z.array(t),total:e.z.number().int().nonnegative(),hasMore:e.z.boolean()});throw Error(`不支持的结果模式: ${r}`)}const f=e.z.enum([`asc`,`desc`]);function p(t){return e.z.object({sortBy:e.z.enum(t).optional(),sortOrder:f.optional()})}const m=e.z.object({sortBy:e.z.string().optional(),sortOrder:f.optional()});function h(t){return e.z.object({field:e.z.enum(t),order:f})}const g=e.z.object({field:e.z.string(),order:f});function _(t){return e.z.object({sort:e.z.array(h(t)).optional()})}const v=e.z.object({sort:e.z.array(g).optional()});function y(e){return{page:Math.max(1,Math.floor(e?.page??o.page)),pageSize:Math.min(o.maxPageSize,Math.max(o.minPageSize,Math.floor(e?.pageSize??o.pageSize)))}}function b(e){return{limit:Math.min(o.maxPageSize,Math.max(o.minPageSize,Math.floor(e?.limit??o.pageSize))),offset:Math.max(0,Math.floor(e?.offset??0))}}function x(e,t){return(e-1)*t}function S(e,t){return t<=0?0:Math.ceil(e/t)}function C(e,t){return e<t}function w(e){return e>1}function T(e,t){let n=Math.max(1,t);return{page:Math.floor(e/n)+1,pageSize:n}}function E(e,t){let n=Math.max(1,e),r=Math.max(1,t);return{offset:(n-1)*r,limit:r}}function D(e,t,n,r){let i=S(t,r);return{items:e,total:t,page:n,pageSize:r,totalPages:i,hasNextPage:C(n,i),hasPreviousPage:w(n)}}function O(e){let t={page:e?.page??o.page,pageSize:e?.pageSize??o.pageSize,maxPageSize:e?.maxPageSize??o.maxPageSize,minPageSize:e?.minPageSize??o.minPageSize};return{...t,normalize(e){return{page:Math.max(1,Math.floor(e?.page??t.page)),pageSize:Math.min(t.maxPageSize,Math.max(t.minPageSize,Math.floor(e?.pageSize??t.pageSize)))}},normalizeOffset(e){return{limit:Math.min(t.maxPageSize,Math.max(t.minPageSize,Math.floor(e?.limit??t.pageSize))),offset:Math.max(0,Math.floor(e?.offset??0))}}}}function k(e){return typeof e==`object`&&!!e}function A(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1}function j(e){return typeof e==`number`&&Number.isInteger(e)&&e>=o.minPageSize&&e<=o.maxPageSize}function M(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0}function N(e){return typeof e==`number`&&Number.isInteger(e)&&e>=o.minPageSize&&e<=o.maxPageSize}function P(e){if(!k(e))return!1;let t=e.page,n=e.pageSize;return(t===void 0||A(t))&&(n===void 0||j(n))}function F(e){if(!k(e))return!1;let t=e.limit,n=e.offset;return(t===void 0||N(t))&&(n===void 0||M(n))}Object.defineProperty(exports,`A`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`D`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`E`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`M`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`N`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`O`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`P`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`T`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`j`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`k`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`w`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return f}});
@@ -0,0 +1 @@
1
+ import{z as e}from"zod";const t=e.object({page:e.literal(1),pageSize:e.literal(20),maxPageSize:e.literal(100),minPageSize:e.literal(1)}),n=e.object({page:e.number().int().positive().optional(),pageSize:e.number().int().positive().optional()}),r=e.object({limit:e.number().int().positive().optional(),offset:e.number().int().nonnegative().optional()}),i=e.object({cursor:e.string().optional(),limit:e.number().int().positive().optional()});function a(t){let{mode:n,pageSizeField:r=`pageSize`,cursorField:i=`cursor`,fields:a}=t;if(n===`page`){let t=a?.page===!1?{}:{page:e.number().int().positive().optional()},n=a?.pageSize===!1?{}:{[r]:e.number().int().positive().optional()};return e.object({...t,...n})}if(n===`offset`){let t=a?.limit===!1?{}:{limit:e.number().int().positive().optional()},n=a?.offset===!1?{}:{offset:e.number().int().nonnegative().optional()};return e.object({...t,...n})}if(n===`cursor`){let t=a?.cursor===!1?{}:{[i]:e.string().optional()},n=a?.limit===!1?{}:{limit:e.number().int().positive().optional()};return e.object({...t,...n})}throw Error(`不支持的分页模式: ${n}`)}const o={page:1,pageSize:20,maxPageSize:100,minPageSize:1};function s(t){return e.object({items:e.array(t),total:e.number().int().nonnegative(),page:e.number().int().positive(),pageSize:e.number().int().positive(),totalPages:e.number().int().nonnegative(),hasNextPage:e.boolean(),hasPreviousPage:e.boolean()})}function c(t){return e.object({items:e.array(t),total:e.number().int().nonnegative(),limit:e.number().int().nonnegative(),offset:e.number().int().nonnegative(),hasMore:e.boolean()})}function l(t){return e.object({items:e.array(t),nextCursor:e.string().nullable(),previousCursor:e.string().nullable(),hasMore:e.boolean()})}function u(t){return e.object({items:e.array(t),total:e.number().int().nonnegative(),hasMore:e.boolean()})}function d(t,n){let{mode:r,pageSizeField:i=`pageSize`}=n;if(r===`page`)return e.object({items:e.array(t),total:e.number().int().nonnegative(),page:e.number().int().positive(),[i]:e.number().int().positive(),totalPages:e.number().int().nonnegative(),hasNextPage:e.boolean(),hasPreviousPage:e.boolean()});if(r===`offset`)return e.object({items:e.array(t),total:e.number().int().nonnegative(),limit:e.number().int().nonnegative(),offset:e.number().int().nonnegative(),hasMore:e.boolean()});if(r===`cursor`)return e.object({items:e.array(t),nextCursor:e.string().nullable(),previousCursor:e.string().nullable(),hasMore:e.boolean()});if(r===`compact`)return e.object({items:e.array(t),total:e.number().int().nonnegative(),hasMore:e.boolean()});throw Error(`不支持的结果模式: ${r}`)}const f=e.enum([`asc`,`desc`]);function p(t){return e.object({sortBy:e.enum(t).optional(),sortOrder:f.optional()})}const m=e.object({sortBy:e.string().optional(),sortOrder:f.optional()});function h(t){return e.object({field:e.enum(t),order:f})}const g=e.object({field:e.string(),order:f});function _(t){return e.object({sort:e.array(h(t)).optional()})}const v=e.object({sort:e.array(g).optional()});function y(e){return{page:Math.max(1,Math.floor(e?.page??o.page)),pageSize:Math.min(o.maxPageSize,Math.max(o.minPageSize,Math.floor(e?.pageSize??o.pageSize)))}}function b(e){return{limit:Math.min(o.maxPageSize,Math.max(o.minPageSize,Math.floor(e?.limit??o.pageSize))),offset:Math.max(0,Math.floor(e?.offset??0))}}function x(e,t){return(e-1)*t}function S(e,t){return t<=0?0:Math.ceil(e/t)}function C(e,t){return e<t}function w(e){return e>1}function T(e,t){let n=Math.max(1,t);return{page:Math.floor(e/n)+1,pageSize:n}}function E(e,t){let n=Math.max(1,e),r=Math.max(1,t);return{offset:(n-1)*r,limit:r}}function D(e,t,n,r){let i=S(t,r);return{items:e,total:t,page:n,pageSize:r,totalPages:i,hasNextPage:C(n,i),hasPreviousPage:w(n)}}function O(e){let t={page:e?.page??o.page,pageSize:e?.pageSize??o.pageSize,maxPageSize:e?.maxPageSize??o.maxPageSize,minPageSize:e?.minPageSize??o.minPageSize};return{...t,normalize(e){return{page:Math.max(1,Math.floor(e?.page??t.page)),pageSize:Math.min(t.maxPageSize,Math.max(t.minPageSize,Math.floor(e?.pageSize??t.pageSize)))}},normalizeOffset(e){return{limit:Math.min(t.maxPageSize,Math.max(t.minPageSize,Math.floor(e?.limit??t.pageSize))),offset:Math.max(0,Math.floor(e?.offset??0))}}}}function k(e){return typeof e==`object`&&!!e}function A(e){return typeof e==`number`&&Number.isInteger(e)&&e>=1}function j(e){return typeof e==`number`&&Number.isInteger(e)&&e>=o.minPageSize&&e<=o.maxPageSize}function M(e){return typeof e==`number`&&Number.isInteger(e)&&e>=0}function N(e){return typeof e==`number`&&Number.isInteger(e)&&e>=o.minPageSize&&e<=o.maxPageSize}function P(e){if(!k(e))return!1;let t=e.page,n=e.pageSize;return(t===void 0||A(t))&&(n===void 0||j(n))}function F(e){if(!k(e))return!1;let t=e.limit,n=e.offset;return(t===void 0||N(t))&&(n===void 0||M(n))}export{i as A,p as C,s as D,c as E,t as M,n as N,d as O,a as P,h as S,l as T,v as _,j as a,m as b,S as c,C as d,w as f,E as g,T as h,A as i,r as j,o as k,D as l,y as m,M as n,P as o,b as p,F as r,x as s,N as t,O as u,g as v,u as w,_ as x,f as y};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@longzai-intelligence/pagination",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs",
6
6
  "types": "./dist/index.d.mts",
@@ -14,14 +14,22 @@
14
14
  "require": "./dist/index.cjs"
15
15
  },
16
16
  "./typeorm": {
17
- "types": {
18
- "import": "./dist/typeorm.d.mts",
19
- "require": "./dist/typeorm.d.cts"
20
- },
17
+ "types": "./dist/typeorm.d.mts",
21
18
  "import": "./dist/typeorm.mjs",
22
19
  "require": "./dist/typeorm.cjs"
20
+ },
21
+ "./hono": {
22
+ "types": {
23
+ "import": "./dist/hono.d.mts",
24
+ "require": "./dist/hono.d.cts"
25
+ },
26
+ "import": "./dist/hono.mjs",
27
+ "require": "./dist/hono.cjs"
23
28
  }
24
29
  },
30
+ "files": [
31
+ "dist"
32
+ ],
25
33
  "scripts": {
26
34
  "build": "tsdown",
27
35
  "build:prod": "NODE_ENV=production tsdown",
@@ -40,10 +48,14 @@
40
48
  "upgrade-deps": "ncu -u"
41
49
  },
42
50
  "peerDependencies": {
51
+ "hono": "^4.0.0",
43
52
  "typeorm": "^0.3.0",
44
53
  "zod": "^4.0.0"
45
54
  },
46
55
  "peerDependenciesMeta": {
56
+ "hono": {
57
+ "optional": true
58
+ },
47
59
  "typeorm": {
48
60
  "optional": true
49
61
  },
@@ -52,13 +64,13 @@
52
64
  }
53
65
  },
54
66
  "devDependencies": {
55
- "@types/bun": "1.3.11",
67
+ "@types/bun": "1.3.12",
56
68
  "@types/node": "^25.6.0",
57
69
  "eslint": "^10.2.0",
58
70
  "rimraf": "^6.1.3",
59
71
  "typescript": "^6.0.2",
60
72
  "vitest": "^4.1.4",
61
- "@longzai-intelligence/eslint-preset-library": "0.0.5",
73
+ "@longzai-intelligence/eslint-preset-library": "0.0.6",
62
74
  "@longzai-intelligence/vitest-config": "0.0.7",
63
75
  "@longzai-intelligence/typescript-config": "0.0.3",
64
76
  "tsdown": "^0.21.7",
@@ -1,22 +0,0 @@
1
- $ tsdown
2
- ℹ tsdown v0.21.7 powered by rolldown v1.0.0-rc.12
3
- ℹ config file: /Volumes/JZAO/j-projects/workspaces/longzai/longzai-intelligence/longzai-intelligence/packages/pagination/tsdown.config.ts
4
- (node:10081) ExperimentalWarning: Type Stripping is an experimental feature and might change at any time
5
- (Use `node --trace-warnings ...` to show where the warning was created)
6
- ℹ entry: src/index.ts
7
- ℹ tsconfig: tsconfig/app.json
8
- ℹ Build start
9
- ℹ Cleaning 8 files
10
- ℹ [CJS] dist/index.cjs 9.63 kB │ gzip: 2.45 kB
11
- ℹ [CJS] dist/index.cjs.map 19.04 kB │ gzip: 4.55 kB
12
- ℹ [CJS] 2 files, total: 28.66 kB
13
- ℹ [CJS] dist/index.d.cts.map 2.74 kB │ gzip: 0.82 kB
14
- ℹ [CJS] dist/index.d.cts 5.36 kB │ gzip: 1.21 kB
15
- ℹ [CJS] 2 files, total: 8.10 kB
16
- ✔ Build complete in 647ms
17
- ℹ [ESM] dist/index.mjs 9.02 kB │ gzip: 2.33 kB
18
- ℹ [ESM] dist/index.mjs.map 19.04 kB │ gzip: 4.55 kB
19
- ℹ [ESM] dist/index.d.mts.map 2.74 kB │ gzip: 0.82 kB
20
- ℹ [ESM] dist/index.d.mts 5.36 kB │ gzip: 1.21 kB
21
- ℹ [ESM] 4 files, total: 36.16 kB
22
- ✔ Build complete in 648ms
@@ -1 +0,0 @@
1
- $ eslint .
@@ -1,36 +0,0 @@
1
- $ vitest run --coverage
2
-
3
-  RUN  v4.1.4 /Volumes/JZAO/j-projects/workspaces/longzai/longzai-intelligence/longzai-intelligence/packages/pagination
4
- Coverage enabled with v8
5
-
6
- ✓ src/__tests__/validation.util.test.ts (12 tests) 3ms
7
- ✓ src/__tests__/pagination.util.test.ts (41 tests) 5ms
8
- ✓ src/__tests__/index.test.ts (6 tests) 30ms
9
- ✓ src/__tests__/typeorm.adapter.test.ts (9 tests) 7ms
10
-
11
-  Test Files  4 passed (4)
12
-  Tests  68 passed (68)
13
-  Start at  10:06:41
14
-  Duration  196ms (transform 144ms, setup 0ms, import 171ms, tests 46ms, environment 0ms)
15
-
16
-  % Coverage report from v8
17
- -------------------|---------|----------|---------|---------|-------------------
18
- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
19
- -------------------|---------|----------|---------|---------|-------------------
20
- All files | 100 | 100 | 100 | 100 |
21
- src | 0 | 0 | 0 | 0 |
22
- index.ts | 0 | 0 | 0 | 0 |
23
- src/adapters | 100 | 100 | 100 | 100 |
24
- index.ts | 0 | 0 | 0 | 0 |
25
- ...rm.adapter.ts | 100 | 100 | 100 | 100 |
26
- src/types | 100 | 100 | 100 | 100 |
27
- index.ts | 0 | 0 | 0 | 0 |
28
- ...tion.types.ts | 100 | 100 | 100 | 100 |
29
- result.types.ts | 0 | 0 | 0 | 0 |
30
- sort.types.ts | 0 | 0 | 0 | 0 |
31
- typeorm.d.ts | 0 | 0 | 0 | 0 |
32
- src/utils | 100 | 100 | 100 | 100 |
33
- index.ts | 0 | 0 | 0 | 0 |
34
- ...ation.util.ts | 100 | 100 | 100 | 100 |
35
- ...ation.util.ts | 100 | 100 | 100 | 100 |
36
- -------------------|---------|----------|---------|---------|-------------------
@@ -1,14 +0,0 @@
1
- $ vitest run
2
-
3
-  RUN  v4.1.4 /Volumes/JZAO/j-projects/workspaces/longzai/longzai-intelligence/longzai-intelligence/packages/pagination
4
-
5
- ✓ src/__tests__/validation.util.test.ts (12 tests) 3ms
6
- ✓ src/__tests__/pagination.util.test.ts (41 tests) 3ms
7
- ✓ src/__tests__/typeorm.adapter.test.ts (9 tests) 4ms
8
- ✓ src/__tests__/index.test.ts (6 tests) 16ms
9
-
10
-  Test Files  4 passed (4)
11
-  Tests  68 passed (68)
12
-  Start at  10:06:38
13
-  Duration  136ms (transform 101ms, setup 0ms, import 121ms, tests 26ms, environment 0ms)
14
-
@@ -1,4 +0,0 @@
1
- $ bun run typecheck:app && bun run typecheck:node && bun run typecheck:test
2
- $ tsc --noEmit -p tsconfig/app.json
3
- $ tsc --noEmit -p tsconfig/node.json
4
- $ tsc --noEmit -p tsconfig/test.json
package/CHANGELOG.md DELETED
@@ -1,18 +0,0 @@
1
- # Changelog
2
-
3
- ## [0.0.2] - 2026-04-13
4
-
5
- ### 新增功能
6
-
7
- - 添加 Zod schemas 用于分页和排序验证
8
- - 添加 TypeORM 适配器子路径导出
9
-
10
- ## [0.0.1] - 2026-04-10
11
-
12
- ### 功能
13
-
14
- - 分页类型定义:PaginationParams、OffsetPaginationParams、CursorPaginationParams
15
- - 排序类型定义:SortOrder、SortParams、MultiSortParams
16
- - 分页工具函数:normalizePagination、calculateOffset、hasNextPage 等
17
- - 校验工具函数:isValidPage、isValidPageSize、isValidOffset 等
18
- - TypeORM 适配器:paginateWithRepository、paginateWithQueryBuilder、createPaginationQueryBuilder