@longzai-intelligence/pagination 0.0.1 → 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.
- package/README.md +36 -203
- package/dist/hono.cjs +1 -0
- package/dist/hono.d.cts +15 -0
- package/dist/hono.d.mts +15 -0
- package/dist/hono.mjs +1 -0
- package/dist/index-C4IwIpFc.d.mts +199 -0
- package/dist/index-DpbbjAwO.d.cts +199 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +79 -80
- package/dist/index.d.mts +79 -80
- package/dist/index.mjs +1 -1
- package/dist/typeorm.cjs +1 -0
- package/dist/typeorm.d.cts +26 -0
- package/dist/typeorm.d.mts +26 -0
- package/dist/typeorm.mjs +1 -0
- package/dist/utils-B200OLT-.cjs +1 -0
- package/dist/utils-DsM7-PZL.mjs +1 -0
- package/package.json +29 -5
- package/.turbo/turbo-build.log +0 -22
- package/.turbo/turbo-lint.log +0 -1
- package/.turbo/turbo-test$colon$coverage.log +0 -36
- package/.turbo/turbo-test.log +0 -14
- package/.turbo/turbo-typecheck.log +0 -4
- package/CHANGELOG.md +0 -11
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/coverage-final.json +0 -12
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -161
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/coverage/src/adapters/index.html +0 -131
- package/coverage/src/adapters/index.ts.html +0 -118
- package/coverage/src/adapters/typeorm.adapter.ts.html +0 -940
- package/coverage/src/index.html +0 -116
- package/coverage/src/index.ts.html +0 -253
- package/coverage/src/types/index.html +0 -176
- package/coverage/src/types/index.ts.html +0 -133
- package/coverage/src/types/pagination.types.ts.html +0 -292
- package/coverage/src/types/result.types.ts.html +0 -415
- package/coverage/src/types/sort.types.ts.html +0 -265
- package/coverage/src/types/typeorm.d.ts.html +0 -196
- package/coverage/src/utils/index.html +0 -146
- package/coverage/src/utils/index.ts.html +0 -178
- package/coverage/src/utils/pagination.util.ts.html +0 -703
- package/coverage/src/utils/validation.util.ts.html +0 -535
- package/eslint.config.ts +0 -3
- package/src/__tests__/index.test.ts +0 -66
- package/src/__tests__/pagination.util.test.ts +0 -253
- package/src/__tests__/typeorm.adapter.test.ts +0 -214
- package/src/__tests__/validation.util.test.ts +0 -122
- package/src/adapters/index.ts +0 -11
- package/src/adapters/typeorm.adapter.ts +0 -285
- package/src/index.ts +0 -56
- package/src/types/index.ts +0 -16
- package/src/types/pagination.types.ts +0 -69
- package/src/types/result.types.ts +0 -110
- package/src/types/sort.types.ts +0 -60
- package/src/types/typeorm.d.ts +0 -37
- package/src/utils/index.ts +0 -31
- package/src/utils/pagination.util.ts +0 -206
- package/src/utils/validation.util.ts +0 -150
- package/tsconfig/.cache/app.tsbuildinfo +0 -1
- package/tsconfig/.cache/build.tsbuildinfo +0 -1
- package/tsconfig/.cache/node.tsbuildinfo +0 -1
- package/tsconfig/.cache/test.tsbuildinfo +0 -1
- package/tsconfig/app.json +0 -12
- package/tsconfig/node.json +0 -11
- package/tsconfig/test.json +0 -14
- package/tsconfig.json +0 -9
- package/tsdown.config.ts +0 -6
- package/vitest.config.ts +0 -3
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e={
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./utils-B200OLT-.cjs`);let t=require(`zod`);function n(e){if(e===void 0)return;let t=Number(e);return Number.isNaN(t)?void 0:t}function r(r){let i=r?.pageSizeField??`pageSize`,a=e.u({pageSize:r?.defaultPageSize,maxPageSize:r?.maxPageSize}),o=e.P({mode:`page`,pageSizeField:i}),s=r?.sortFields?e.C([...r.sortFields]):t.z.object({}),c=o.merge(s).extend(r?.businessFields??{});return{querySchema:c,resultSchema:e.O(t.z.unknown(),{mode:`page`,pageSizeField:i}),defaults:a,normalize(e){return a.normalize({page:e?.page,pageSize:e?.[i]})},parseQuery(e){let t={};if(e.page!==void 0&&(t.page=n(e.page)),e[i]!==void 0&&(t[i]=n(e[i])),e.sortBy!==void 0&&(t.sortBy=e.sortBy),e.sortOrder!==void 0&&(t.sortOrder=e.sortOrder),r?.businessFields)for(let n of Object.keys(r.businessFields))e[n]!==void 0&&(t[n]=e[n]);return c.parse(t)},buildResult(t,n,r,i){return e.l(t,n,r,i)}}}function i(e){if(e===void 0)return;let t=Number(e);return Number.isNaN(t)?void 0:t}function a(n){let r=n?.cursorField??`cursor`,a=e.P({mode:`cursor`,cursorField:r}).extend(n?.businessFields??{});return{querySchema:a,resultSchema:e.O(t.z.unknown(),{mode:`cursor`}),parseQuery(e){let t={};if(e[r]!==void 0&&(t[r]=e[r]),e.limit!==void 0&&(t.limit=i(e.limit)),n?.businessFields)for(let r of Object.keys(n.businessFields))e[r]!==void 0&&(t[r]=e[r]);return a.parse(t)},buildResult(e,t,n){return{items:e,nextCursor:t,previousCursor:null,hasMore:n}}}}function o(e){if(e===void 0)return;let t=Number(e);return Number.isNaN(t)?void 0:t}function s(n){let r=e.P({mode:`offset`,fields:{limit:!0,offset:!1}}).extend(n?.businessFields??{});return{querySchema:r,resultSchema:e.O(t.z.unknown(),{mode:`compact`}),parseQuery(e){let t={};if(e.limit!==void 0&&(t.limit=o(e.limit)),n?.businessFields)for(let r of Object.keys(n.businessFields))e[r]!==void 0&&(t[r]=e[r]);return r.parse(t)},buildResult(e,t,n){return{items:e,total:t,hasMore:n}}}}function c(e){if(e===void 0)return;let t=Number(e);return Number.isNaN(t)?void 0:t}function l(n){let r=n?.mode??`page`,i=n?.pageSizeField??`pageSize`,a=e.P({mode:r,pageSizeField:i}).extend(n?.businessFields??{});return{querySchema:a,resultSchema:e.O(t.z.unknown(),{mode:`compact`}),parseQuery(e){let t={};if(r===`page`?(e.page!==void 0&&(t.page=c(e.page)),e[i]!==void 0&&(t[i]=c(e[i]))):(e.limit!==void 0&&(t.limit=c(e.limit)),e.offset!==void 0&&(t.offset=c(e.offset))),n?.businessFields)for(let r of Object.keys(n.businessFields))e[r]!==void 0&&(t[r]=e[r]);return a.parse(t)},buildResult(e,t,n){return{items:e,total:t,hasMore:n}}}}exports.CursorPaginationParamsSchema=e.A,exports.MultiSortParamsSchema=e._,exports.OffsetPaginationParamsSchema=e.j,exports.PAGINATION_DEFAULTS=e.k,exports.PaginationDefaultsSchema=e.M,exports.PaginationParamsSchema=e.N,exports.SortItemSchema=e.v,exports.SortOrderSchema=e.y,exports.SortParamsSchema=e.b,exports.calculateOffset=e.s,exports.calculateTotalPages=e.c,exports.createCompactListPreset=l,exports.createCompactPaginatedResultSchema=e.w,exports.createCursorPaginatedResultSchema=e.T,exports.createInfiniteScrollPreset=a,exports.createMultiSortParamsSchema=e.x,exports.createOffsetPaginatedResultSchema=e.E,exports.createPaginatedResult=e.l,exports.createPaginatedResultSchema=e.D,exports.createPaginationDefaults=e.u,exports.createPaginationSchema=e.P,exports.createResultSchema=e.O,exports.createSortItemSchema=e.S,exports.createSortParamsSchema=e.C,exports.createTablePreset=r,exports.createTimelinePreset=s,exports.hasNextPage=e.d,exports.hasPreviousPage=e.f,exports.isValidLimit=e.t,exports.isValidOffset=e.n,exports.isValidOffsetPagination=e.r,exports.isValidPage=e.i,exports.isValidPageSize=e.a,exports.isValidPagination=e.o,exports.normalizeOffsetPagination=e.p,exports.normalizePagination=e.m,exports.offsetToPage=e.h,exports.pageToOffset=e.g;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,64 +1,7 @@
|
|
|
1
|
-
import {
|
|
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-DpbbjAwO.cjs";
|
|
2
|
+
import * as _$zod from "zod";
|
|
3
|
+
import { z } from "zod";
|
|
2
4
|
|
|
3
|
-
//#region src/types/pagination.types.d.ts
|
|
4
|
-
type PaginationParams = {
|
|
5
|
-
page?: number;
|
|
6
|
-
pageSize?: number;
|
|
7
|
-
};
|
|
8
|
-
type OffsetPaginationParams = {
|
|
9
|
-
limit?: number;
|
|
10
|
-
offset?: number;
|
|
11
|
-
};
|
|
12
|
-
type CursorPaginationParams = {
|
|
13
|
-
cursor?: string;
|
|
14
|
-
limit?: number;
|
|
15
|
-
};
|
|
16
|
-
declare const PAGINATION_DEFAULTS: {
|
|
17
|
-
readonly page: 1;
|
|
18
|
-
readonly pageSize: 20;
|
|
19
|
-
readonly maxPageSize: 100;
|
|
20
|
-
readonly minPageSize: 1;
|
|
21
|
-
};
|
|
22
|
-
type PaginationDefaults = typeof PAGINATION_DEFAULTS;
|
|
23
|
-
//#endregion
|
|
24
|
-
//#region src/types/result.types.d.ts
|
|
25
|
-
type PaginatedResult<T> = {
|
|
26
|
-
items: T[];
|
|
27
|
-
total: number;
|
|
28
|
-
page: number;
|
|
29
|
-
pageSize: number;
|
|
30
|
-
totalPages: number;
|
|
31
|
-
hasNextPage: boolean;
|
|
32
|
-
hasPreviousPage: boolean;
|
|
33
|
-
};
|
|
34
|
-
type OffsetPaginatedResult<T> = {
|
|
35
|
-
items: T[];
|
|
36
|
-
total: number;
|
|
37
|
-
limit: number;
|
|
38
|
-
offset: number;
|
|
39
|
-
hasMore: boolean;
|
|
40
|
-
};
|
|
41
|
-
type CursorPaginatedResult<T> = {
|
|
42
|
-
items: T[];
|
|
43
|
-
nextCursor: string | null;
|
|
44
|
-
previousCursor: string | null;
|
|
45
|
-
hasMore: boolean;
|
|
46
|
-
};
|
|
47
|
-
//#endregion
|
|
48
|
-
//#region src/types/sort.types.d.ts
|
|
49
|
-
type SortOrder = 'asc' | 'desc';
|
|
50
|
-
type SortParams<T extends string = string> = {
|
|
51
|
-
sortBy?: T;
|
|
52
|
-
sortOrder?: SortOrder;
|
|
53
|
-
};
|
|
54
|
-
type SortItem<T extends string = string> = {
|
|
55
|
-
field: T;
|
|
56
|
-
order: SortOrder;
|
|
57
|
-
};
|
|
58
|
-
type MultiSortParams<T extends string = string> = {
|
|
59
|
-
sort?: SortItem<T>[];
|
|
60
|
-
};
|
|
61
|
-
//#endregion
|
|
62
5
|
//#region src/utils/pagination.util.d.ts
|
|
63
6
|
type OffsetPaginationResult = {
|
|
64
7
|
page: number;
|
|
@@ -77,6 +20,20 @@ declare function hasPreviousPage(page: number): boolean;
|
|
|
77
20
|
declare function offsetToPage(offset: number, limit: number): OffsetPaginationResult;
|
|
78
21
|
declare function pageToOffset(page: number, pageSize: number): PagePaginationResult;
|
|
79
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
|
+
};
|
|
80
37
|
//#endregion
|
|
81
38
|
//#region src/utils/validation.util.d.ts
|
|
82
39
|
type PaginationValidationResult = {
|
|
@@ -94,24 +51,66 @@ declare function isValidLimit(limit: unknown): limit is number;
|
|
|
94
51
|
declare function isValidPagination(params: unknown): params is PaginationValidationResult;
|
|
95
52
|
declare function isValidOffsetPagination(params: unknown): params is OffsetPaginationValidationResult;
|
|
96
53
|
//#endregion
|
|
97
|
-
//#region src/
|
|
98
|
-
type
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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;
|
|
116
115
|
//#endregion
|
|
117
|
-
export { type CursorPaginatedResult, type CursorPaginationParams, type
|
|
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.d.mts
CHANGED
|
@@ -1,64 +1,7 @@
|
|
|
1
|
-
import {
|
|
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
|
-
//#region src/types/pagination.types.d.ts
|
|
4
|
-
type PaginationParams = {
|
|
5
|
-
page?: number;
|
|
6
|
-
pageSize?: number;
|
|
7
|
-
};
|
|
8
|
-
type OffsetPaginationParams = {
|
|
9
|
-
limit?: number;
|
|
10
|
-
offset?: number;
|
|
11
|
-
};
|
|
12
|
-
type CursorPaginationParams = {
|
|
13
|
-
cursor?: string;
|
|
14
|
-
limit?: number;
|
|
15
|
-
};
|
|
16
|
-
declare const PAGINATION_DEFAULTS: {
|
|
17
|
-
readonly page: 1;
|
|
18
|
-
readonly pageSize: 20;
|
|
19
|
-
readonly maxPageSize: 100;
|
|
20
|
-
readonly minPageSize: 1;
|
|
21
|
-
};
|
|
22
|
-
type PaginationDefaults = typeof PAGINATION_DEFAULTS;
|
|
23
|
-
//#endregion
|
|
24
|
-
//#region src/types/result.types.d.ts
|
|
25
|
-
type PaginatedResult<T> = {
|
|
26
|
-
items: T[];
|
|
27
|
-
total: number;
|
|
28
|
-
page: number;
|
|
29
|
-
pageSize: number;
|
|
30
|
-
totalPages: number;
|
|
31
|
-
hasNextPage: boolean;
|
|
32
|
-
hasPreviousPage: boolean;
|
|
33
|
-
};
|
|
34
|
-
type OffsetPaginatedResult<T> = {
|
|
35
|
-
items: T[];
|
|
36
|
-
total: number;
|
|
37
|
-
limit: number;
|
|
38
|
-
offset: number;
|
|
39
|
-
hasMore: boolean;
|
|
40
|
-
};
|
|
41
|
-
type CursorPaginatedResult<T> = {
|
|
42
|
-
items: T[];
|
|
43
|
-
nextCursor: string | null;
|
|
44
|
-
previousCursor: string | null;
|
|
45
|
-
hasMore: boolean;
|
|
46
|
-
};
|
|
47
|
-
//#endregion
|
|
48
|
-
//#region src/types/sort.types.d.ts
|
|
49
|
-
type SortOrder = 'asc' | 'desc';
|
|
50
|
-
type SortParams<T extends string = string> = {
|
|
51
|
-
sortBy?: T;
|
|
52
|
-
sortOrder?: SortOrder;
|
|
53
|
-
};
|
|
54
|
-
type SortItem<T extends string = string> = {
|
|
55
|
-
field: T;
|
|
56
|
-
order: SortOrder;
|
|
57
|
-
};
|
|
58
|
-
type MultiSortParams<T extends string = string> = {
|
|
59
|
-
sort?: SortItem<T>[];
|
|
60
|
-
};
|
|
61
|
-
//#endregion
|
|
62
5
|
//#region src/utils/pagination.util.d.ts
|
|
63
6
|
type OffsetPaginationResult = {
|
|
64
7
|
page: number;
|
|
@@ -77,6 +20,20 @@ declare function hasPreviousPage(page: number): boolean;
|
|
|
77
20
|
declare function offsetToPage(offset: number, limit: number): OffsetPaginationResult;
|
|
78
21
|
declare function pageToOffset(page: number, pageSize: number): PagePaginationResult;
|
|
79
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
|
+
};
|
|
80
37
|
//#endregion
|
|
81
38
|
//#region src/utils/validation.util.d.ts
|
|
82
39
|
type PaginationValidationResult = {
|
|
@@ -94,24 +51,66 @@ declare function isValidLimit(limit: unknown): limit is number;
|
|
|
94
51
|
declare function isValidPagination(params: unknown): params is PaginationValidationResult;
|
|
95
52
|
declare function isValidOffsetPagination(params: unknown): params is OffsetPaginationValidationResult;
|
|
96
53
|
//#endregion
|
|
97
|
-
//#region src/
|
|
98
|
-
type
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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;
|
|
116
115
|
//#endregion
|
|
117
|
-
export { type CursorPaginatedResult, type CursorPaginationParams, type
|
|
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
|
-
|
|
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
ADDED
|
@@ -0,0 +1 @@
|
|
|
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;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { O as PaginationParams, h as PaginatedResult } from "./index-DpbbjAwO.cjs";
|
|
2
|
+
import { FindManyOptions, FindOptionsOrder, ObjectLiteral, Repository, SelectQueryBuilder } from "typeorm";
|
|
3
|
+
|
|
4
|
+
//#region src/adapters/typeorm/types.d.ts
|
|
5
|
+
type EntityMapper<TEntity, TDto> = (entity: TEntity) => TDto | Promise<TDto>;
|
|
6
|
+
type TypeOrmPaginateOptionsWithMapper<TEntity extends ObjectLiteral, TDto> = {
|
|
7
|
+
mapper: EntityMapper<TEntity, TDto>;
|
|
8
|
+
order?: FindOptionsOrder<TEntity>;
|
|
9
|
+
where?: FindManyOptions<TEntity>['where'];
|
|
10
|
+
relations?: FindManyOptions<TEntity>['relations'];
|
|
11
|
+
select?: FindManyOptions<TEntity>['select'];
|
|
12
|
+
};
|
|
13
|
+
type TypeOrmPaginateOptionsNoMapper<TEntity extends ObjectLiteral> = {
|
|
14
|
+
order?: FindOptionsOrder<TEntity>;
|
|
15
|
+
where?: FindManyOptions<TEntity>['where'];
|
|
16
|
+
relations?: FindManyOptions<TEntity>['relations'];
|
|
17
|
+
select?: FindManyOptions<TEntity>['select'];
|
|
18
|
+
};
|
|
19
|
+
type TypeOrmPaginateOptions<TEntity extends ObjectLiteral, TDto = TEntity> = TypeOrmPaginateOptionsWithMapper<TEntity, TDto> | TypeOrmPaginateOptionsNoMapper<TEntity>;
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/adapters/typeorm/adapter.d.ts
|
|
22
|
+
declare function paginateWithRepository<TEntity extends ObjectLiteral, TDto = TEntity>(repository: Repository<TEntity>, params: PaginationParams, options?: TypeOrmPaginateOptions<TEntity, TDto>): Promise<PaginatedResult<TEntity | TDto>>;
|
|
23
|
+
declare function paginateWithQueryBuilder<TEntity extends ObjectLiteral, TDto = TEntity>(queryBuilder: SelectQueryBuilder<TEntity>, params: PaginationParams, mapper?: EntityMapper<TEntity, TDto>): Promise<PaginatedResult<TEntity | TDto>>;
|
|
24
|
+
declare function createPaginationQueryBuilder<TEntity extends ObjectLiteral>(repository: Repository<TEntity>, alias?: string): SelectQueryBuilder<TEntity>;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { type EntityMapper, type TypeOrmPaginateOptions, createPaginationQueryBuilder, paginateWithQueryBuilder, paginateWithRepository };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { O as PaginationParams, h as PaginatedResult } from "./index-C4IwIpFc.mjs";
|
|
2
|
+
import { FindManyOptions, FindOptionsOrder, ObjectLiteral, Repository, SelectQueryBuilder } from "typeorm";
|
|
3
|
+
|
|
4
|
+
//#region src/adapters/typeorm/types.d.ts
|
|
5
|
+
type EntityMapper<TEntity, TDto> = (entity: TEntity) => TDto | Promise<TDto>;
|
|
6
|
+
type TypeOrmPaginateOptionsWithMapper<TEntity extends ObjectLiteral, TDto> = {
|
|
7
|
+
mapper: EntityMapper<TEntity, TDto>;
|
|
8
|
+
order?: FindOptionsOrder<TEntity>;
|
|
9
|
+
where?: FindManyOptions<TEntity>['where'];
|
|
10
|
+
relations?: FindManyOptions<TEntity>['relations'];
|
|
11
|
+
select?: FindManyOptions<TEntity>['select'];
|
|
12
|
+
};
|
|
13
|
+
type TypeOrmPaginateOptionsNoMapper<TEntity extends ObjectLiteral> = {
|
|
14
|
+
order?: FindOptionsOrder<TEntity>;
|
|
15
|
+
where?: FindManyOptions<TEntity>['where'];
|
|
16
|
+
relations?: FindManyOptions<TEntity>['relations'];
|
|
17
|
+
select?: FindManyOptions<TEntity>['select'];
|
|
18
|
+
};
|
|
19
|
+
type TypeOrmPaginateOptions<TEntity extends ObjectLiteral, TDto = TEntity> = TypeOrmPaginateOptionsWithMapper<TEntity, TDto> | TypeOrmPaginateOptionsNoMapper<TEntity>;
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/adapters/typeorm/adapter.d.ts
|
|
22
|
+
declare function paginateWithRepository<TEntity extends ObjectLiteral, TDto = TEntity>(repository: Repository<TEntity>, params: PaginationParams, options?: TypeOrmPaginateOptions<TEntity, TDto>): Promise<PaginatedResult<TEntity | TDto>>;
|
|
23
|
+
declare function paginateWithQueryBuilder<TEntity extends ObjectLiteral, TDto = TEntity>(queryBuilder: SelectQueryBuilder<TEntity>, params: PaginationParams, mapper?: EntityMapper<TEntity, TDto>): Promise<PaginatedResult<TEntity | TDto>>;
|
|
24
|
+
declare function createPaginationQueryBuilder<TEntity extends ObjectLiteral>(repository: Repository<TEntity>, alias?: string): SelectQueryBuilder<TEntity>;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { type EntityMapper, type TypeOrmPaginateOptions, createPaginationQueryBuilder, paginateWithQueryBuilder, paginateWithRepository };
|
package/dist/typeorm.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
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.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"types": "./dist/index.d.mts",
|
|
@@ -12,8 +12,24 @@
|
|
|
12
12
|
},
|
|
13
13
|
"import": "./dist/index.mjs",
|
|
14
14
|
"require": "./dist/index.cjs"
|
|
15
|
+
},
|
|
16
|
+
"./typeorm": {
|
|
17
|
+
"types": "./dist/typeorm.d.mts",
|
|
18
|
+
"import": "./dist/typeorm.mjs",
|
|
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"
|
|
15
28
|
}
|
|
16
29
|
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist"
|
|
32
|
+
],
|
|
17
33
|
"scripts": {
|
|
18
34
|
"build": "tsdown",
|
|
19
35
|
"build:prod": "NODE_ENV=production tsdown",
|
|
@@ -32,22 +48,30 @@
|
|
|
32
48
|
"upgrade-deps": "ncu -u"
|
|
33
49
|
},
|
|
34
50
|
"peerDependencies": {
|
|
35
|
-
"
|
|
51
|
+
"hono": "^4.0.0",
|
|
52
|
+
"typeorm": "^0.3.0",
|
|
53
|
+
"zod": "^4.0.0"
|
|
36
54
|
},
|
|
37
55
|
"peerDependenciesMeta": {
|
|
56
|
+
"hono": {
|
|
57
|
+
"optional": true
|
|
58
|
+
},
|
|
38
59
|
"typeorm": {
|
|
39
60
|
"optional": true
|
|
61
|
+
},
|
|
62
|
+
"zod": {
|
|
63
|
+
"optional": true
|
|
40
64
|
}
|
|
41
65
|
},
|
|
42
66
|
"devDependencies": {
|
|
43
|
-
"@types/bun": "1.3.
|
|
67
|
+
"@types/bun": "1.3.12",
|
|
44
68
|
"@types/node": "^25.6.0",
|
|
45
69
|
"eslint": "^10.2.0",
|
|
46
70
|
"rimraf": "^6.1.3",
|
|
47
71
|
"typescript": "^6.0.2",
|
|
48
72
|
"vitest": "^4.1.4",
|
|
49
|
-
"@longzai-intelligence/eslint-preset-library": "0.0.
|
|
50
|
-
"@longzai-intelligence/vitest-config": "0.0.
|
|
73
|
+
"@longzai-intelligence/eslint-preset-library": "0.0.6",
|
|
74
|
+
"@longzai-intelligence/vitest-config": "0.0.7",
|
|
51
75
|
"@longzai-intelligence/typescript-config": "0.0.3",
|
|
52
76
|
"tsdown": "^0.21.7",
|
|
53
77
|
"@longzai-intelligence/tsdown-config": "0.0.1"
|
package/.turbo/turbo-build.log
DELETED
|
@@ -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:62059) 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 679ms
|
|
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 680ms
|
package/.turbo/turbo-lint.log
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
$ eslint .
|