@generazioneai/genquery 0.5.0 → 0.7.1
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/dist/adapters/prisma/adapter.d.ts.map +1 -1
- package/dist/adapters/prisma/adapter.js +25 -0
- package/dist/adapters/prisma/adapter.js.map +1 -1
- package/dist/engine.d.ts +1 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +3 -1
- package/dist/engine.js.map +1 -1
- package/dist/paginate/cursor.d.ts +18 -0
- package/dist/paginate/cursor.d.ts.map +1 -0
- package/dist/paginate/cursor.js +53 -0
- package/dist/paginate/cursor.js.map +1 -0
- package/dist/paginate/in-memory.d.ts +13 -0
- package/dist/paginate/in-memory.d.ts.map +1 -0
- package/dist/paginate/in-memory.js +21 -0
- package/dist/paginate/in-memory.js.map +1 -0
- package/dist/paginate/index.d.ts +27 -0
- package/dist/paginate/index.d.ts.map +1 -0
- package/dist/paginate/index.js +33 -0
- package/dist/paginate/index.js.map +1 -0
- package/dist/paginate/model.d.ts +16 -0
- package/dist/paginate/model.d.ts.map +1 -0
- package/dist/paginate/model.js +3 -0
- package/dist/paginate/model.js.map +1 -0
- package/dist/paginate/offset.d.ts +25 -0
- package/dist/paginate/offset.d.ts.map +1 -0
- package/dist/paginate/offset.js +74 -0
- package/dist/paginate/offset.js.map +1 -0
- package/dist/paginate/pagination.d.ts +18 -0
- package/dist/paginate/pagination.d.ts.map +1 -0
- package/dist/paginate/pagination.js +47 -0
- package/dist/paginate/pagination.js.map +1 -0
- package/dist/paginate/transform.d.ts +15 -0
- package/dist/paginate/transform.d.ts.map +1 -0
- package/dist/paginate/transform.js +43 -0
- package/dist/paginate/transform.js.map +1 -0
- package/dist/paginate/types.d.ts +93 -0
- package/dist/paginate/types.d.ts.map +1 -0
- package/dist/paginate/types.js +10 -0
- package/dist/paginate/types.js.map +1 -0
- package/dist/parsed.d.ts +14 -0
- package/dist/parsed.d.ts.map +1 -1
- package/package.json +24 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,aACX,YAAW,OAAO,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;IAE3D,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;gBAEnC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB;IAK9D,KAAK,CACH,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,GACjB,kBAAkB;IAIrB;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,kBAAkB;IAI3C,OAAO,CACX,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAyBpC,OAAO,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/prisma/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,aACX,YAAW,OAAO,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;IAE3D,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;gBAEnC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB;IAK9D,KAAK,CACH,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,WAAW,GACjB,kBAAkB;IAIrB;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,kBAAkB;IAI3C,OAAO,CACX,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAyBpC,OAAO,CAAC,KAAK;CAoDd"}
|
|
@@ -67,6 +67,31 @@ class PrismaAdapter {
|
|
|
67
67
|
}
|
|
68
68
|
applyPagination(args, query.pagination);
|
|
69
69
|
(0, select_1.applySelectAndInclude)(args, query, this.schema);
|
|
70
|
+
// Merge server-side raw base args (native Prisma filters/includes the DSL
|
|
71
|
+
// doesn't model). where → AND-merged; orderBy/include/select → used when the
|
|
72
|
+
// parsed query didn't set them.
|
|
73
|
+
const base = query.baseArgs;
|
|
74
|
+
if (base) {
|
|
75
|
+
if (base.where !== undefined && base.where !== null) {
|
|
76
|
+
args.where =
|
|
77
|
+
args.where !== undefined
|
|
78
|
+
? { AND: [base.where, args.where] }
|
|
79
|
+
: base.where;
|
|
80
|
+
}
|
|
81
|
+
if (base.orderBy !== undefined && args.orderBy === undefined) {
|
|
82
|
+
args.orderBy = base.orderBy;
|
|
83
|
+
}
|
|
84
|
+
if (base.include !== undefined &&
|
|
85
|
+
args.include === undefined &&
|
|
86
|
+
args.select === undefined) {
|
|
87
|
+
args.include = base.include;
|
|
88
|
+
}
|
|
89
|
+
if (base.select !== undefined &&
|
|
90
|
+
args.select === undefined &&
|
|
91
|
+
args.include === undefined) {
|
|
92
|
+
args.select = base.select;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
70
95
|
return args;
|
|
71
96
|
}
|
|
72
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/prisma/adapter.ts"],"names":[],"mappings":";;;AAGA,qCAAiD;AAMjD,mCAAqC;AAWrC;;;;;;;;;;;;GAYG;AACH,MAAa,aAAa;IAOxB,YAAY,MAAc,EAAE,UAAgC,EAAE;QAJrD,SAAI,GAAG,QAAQ,CAAC;QAKvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CACH,SAA8B,EAC9B,KAAkB;QAElB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,KAAkB;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAA6B,EAC7B,KAAkB;QAElB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;QAEpD,MAAM,WAAW,GACf,IAAI,KAAK,OAAO;YACd,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC5D,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,KAAyB,CAAC;QAC9B,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACtC,WAAW;gBACX,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;aACtC,CAAC,CAAC;YACH,KAAK,GAAG,KAAK,CAAC;YACd,OAAO,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;QAC/B,IAAI,SAAS;YAAE,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,KAAkB;QAC9B,MAAM,IAAI,GAAuB,EAAE,CAAC;QAEpC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,KAAK,GAAgB,IAAA,kBAAU,EACnC,KAAK,CAAC,QAAQ,EACd,IAAI,CAAC,MAAM,EACX,KAAK,CAAC,UAAU,CACjB,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACxD,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG;gBACb,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;aAC3C,CAAC;QACJ,CAAC;QAED,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACxC,IAAA,8BAAqB,EAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/prisma/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
CHANGED
|
@@ -55,6 +55,7 @@ export declare class GenQueryEngine<TTarget, TResult> {
|
|
|
55
55
|
*/
|
|
56
56
|
run<X extends TTarget>(input: GenQueryInput<InferEntityFromTarget<X>>, target: X): Promise<PaginatedResult<InferEntityFromTarget<X>>>;
|
|
57
57
|
run<X extends TTarget>(input: GenQueryInput<InferEntityFromTarget<X>>, rootEntity: string, target: X): Promise<PaginatedResult<InferEntityFromTarget<X>>>;
|
|
58
|
+
run<X extends TTarget>(input: GenQueryInput<InferEntityFromTarget<X>>, rootEntity: string, target: X, base: ParsedQuery["baseArgs"]): Promise<PaginatedResult<InferEntityFromTarget<X>>>;
|
|
58
59
|
/**
|
|
59
60
|
* Apply a previously parsed query and return the adapter's raw target
|
|
60
61
|
* (mutated query builder, args object, …) without executing. Use this when
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,qBAAqB,CAAC,OAAO,EAAE,OAAO;IACrD,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CACpC;AAID,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;AAE/C,8EAA8E;AAC9E,KAAK,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,GACzC,IAAI,GACJ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAC/B,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAC/B,IAAI,GACJ,KAAK,GACP,KAAK,CAAC;AAEZ;;;;;GAKG;AACH,KAAK,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS;IACxC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;CAC7B,GACG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACnB,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,GAC3B,OAAO,GACP,CAAC,GACH,OAAO,GACT,CAAC,SAAS;IACN,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;CACxC,GACD,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACnB,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,GAC3B,OAAO,GACP,CAAC,GACH,OAAO,GACT,OAAO,CAAC;AAEd;;;;;;GAMG;AACH,qBAAa,cAAc,CAAC,OAAO,EAAE,OAAO;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAEhC,OAAO,EAAE,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC;IAK5D;;;;;OAKG;IACH,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW;IAI5E;;;;;;;;;;;;;;;OAeG;IACH,GAAG,CAAC,CAAC,SAAS,OAAO,EACnB,KAAK,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAC9C,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,GAAG,CAAC,CAAC,SAAS,OAAO,EACnB,KAAK,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAC9C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.js
CHANGED
|
@@ -23,7 +23,7 @@ class GenQueryEngine {
|
|
|
23
23
|
parse(input, rootEntity) {
|
|
24
24
|
return (0, parser_1.parseQuery)(input, this.schema, rootEntity);
|
|
25
25
|
}
|
|
26
|
-
async run(input, arg2, arg3) {
|
|
26
|
+
async run(input, arg2, arg3, arg4) {
|
|
27
27
|
if (!this.adapter.execute) {
|
|
28
28
|
throw new Error(`GenQueryEngine.run: adapter '${this.adapter.name}' does not implement execute(). ` +
|
|
29
29
|
"Use engine.parse + engine.runParsed instead.");
|
|
@@ -45,6 +45,8 @@ class GenQueryEngine {
|
|
|
45
45
|
rootEntity = derived;
|
|
46
46
|
}
|
|
47
47
|
const parsed = (0, parser_1.parseQuery)(input, this.schema, rootEntity);
|
|
48
|
+
if (arg4)
|
|
49
|
+
parsed.baseArgs = arg4;
|
|
48
50
|
return this.adapter.execute(target, parsed);
|
|
49
51
|
}
|
|
50
52
|
/**
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":";;;AACA,qCAAsC;AA8CtC;;;;;;GAMG;AACH,MAAa,cAAc;IAIzB,YAAY,OAAgD;QAC1D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAc,KAAuB,EAAE,UAAkB;QAC5D,OAAO,IAAA,mBAAU,EAAC,KAAsB,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":";;;AACA,qCAAsC;AA8CtC;;;;;;GAMG;AACH,MAAa,cAAc;IAIzB,YAAY,OAAgD;QAC1D,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAc,KAAuB,EAAE,UAAkB;QAC5D,OAAO,IAAA,mBAAU,EAAC,KAAsB,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;IAiCD,KAAK,CAAC,GAAG,CACP,KAAoB,EACpB,IAAsB,EACtB,IAAc,EACd,IAA8B;QAE9B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,CAAC,OAAO,CAAC,IAAI,kCAAkC;gBACjF,8CAA8C,CACjD,CAAC;QACJ,CAAC;QACD,IAAI,UAAkB,CAAC;QACvB,IAAI,MAAe,CAAC;QACpB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,UAAU,GAAG,IAAI,CAAC;YAClB,MAAM,GAAG,IAAe,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,IAAI,CAAC;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,8DAA8D;oBAC5D,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,0CAA0C;oBAChE,oEAAoE,CACvE,CAAC;YACJ,CAAC;YACD,UAAU,GAAG,OAAO,CAAC;QACvB,CAAC;QACD,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,IAAI;YAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,MAAmB,EAAE,MAAe;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;CACF;AA5FD,wCA4FC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { PrismaModelDelegate } from "./model";
|
|
2
|
+
import type { CursorPaginateOptions, CursorPaginatedResult } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Cursor-paginate a Prisma model — O(1) deep pagination (no growing OFFSET),
|
|
5
|
+
* the efficient choice for infinite-scroll / large datasets.
|
|
6
|
+
*
|
|
7
|
+
* let res = await paginateCursor(prisma.post, { where }, { perPage: 20 });
|
|
8
|
+
* // next page:
|
|
9
|
+
* res = await paginateCursor(prisma.post, { where }, { perPage: 20, cursor: res.meta.nextCursor });
|
|
10
|
+
*
|
|
11
|
+
* `cursorField` must be unique & sequential (default `"id"`). The field is
|
|
12
|
+
* appended to the caller's `orderBy` so ordering is deterministic. No COUNT is
|
|
13
|
+
* ever issued. `direction: "backward"` sorts the cursor field descending.
|
|
14
|
+
*
|
|
15
|
+
* The `model` may be an authz-scoped delegate; scoping is preserved.
|
|
16
|
+
*/
|
|
17
|
+
export declare function paginateCursor<T = any>(model: PrismaModelDelegate, args?: Record<string, any>, options?: CursorPaginateOptions<T>): Promise<CursorPaginatedResult<T>>;
|
|
18
|
+
//# sourceMappingURL=cursor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/paginate/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAG5E;;;;;;;;;;;;;GAaG;AACH,wBAAsB,cAAc,CAAC,CAAC,GAAG,GAAG,EAC1C,KAAK,EAAE,mBAAmB,EAC1B,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAC9B,OAAO,GAAE,qBAAqB,CAAC,CAAC,CAAM,GACrC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAqCnC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.paginateCursor = paginateCursor;
|
|
4
|
+
const transform_1 = require("./transform");
|
|
5
|
+
/**
|
|
6
|
+
* Cursor-paginate a Prisma model — O(1) deep pagination (no growing OFFSET),
|
|
7
|
+
* the efficient choice for infinite-scroll / large datasets.
|
|
8
|
+
*
|
|
9
|
+
* let res = await paginateCursor(prisma.post, { where }, { perPage: 20 });
|
|
10
|
+
* // next page:
|
|
11
|
+
* res = await paginateCursor(prisma.post, { where }, { perPage: 20, cursor: res.meta.nextCursor });
|
|
12
|
+
*
|
|
13
|
+
* `cursorField` must be unique & sequential (default `"id"`). The field is
|
|
14
|
+
* appended to the caller's `orderBy` so ordering is deterministic. No COUNT is
|
|
15
|
+
* ever issued. `direction: "backward"` sorts the cursor field descending.
|
|
16
|
+
*
|
|
17
|
+
* The `model` may be an authz-scoped delegate; scoping is preserved.
|
|
18
|
+
*/
|
|
19
|
+
async function paginateCursor(model, args = {}, options = {}) {
|
|
20
|
+
const perPage = Number(options.perPage) || 10;
|
|
21
|
+
const field = options.cursorField ?? "id";
|
|
22
|
+
const dir = options.direction === "backward" ? "desc" : "asc";
|
|
23
|
+
const baseOrder = args.orderBy
|
|
24
|
+
? Array.isArray(args.orderBy)
|
|
25
|
+
? args.orderBy
|
|
26
|
+
: [args.orderBy]
|
|
27
|
+
: [];
|
|
28
|
+
const findArgs = {
|
|
29
|
+
...args,
|
|
30
|
+
orderBy: [...baseOrder, { [field]: dir }],
|
|
31
|
+
take: perPage + 1,
|
|
32
|
+
};
|
|
33
|
+
const hasCursor = options.cursor !== undefined && options.cursor !== null;
|
|
34
|
+
if (hasCursor) {
|
|
35
|
+
findArgs.cursor = { [field]: options.cursor };
|
|
36
|
+
findArgs.skip = 1; // skip the cursor row itself
|
|
37
|
+
}
|
|
38
|
+
const rows = await model.findMany(findArgs);
|
|
39
|
+
const hasNext = rows.length > perPage;
|
|
40
|
+
const pageRows = hasNext ? rows.slice(0, perPage) : rows;
|
|
41
|
+
const last = pageRows[pageRows.length - 1];
|
|
42
|
+
return {
|
|
43
|
+
data: (0, transform_1.applyTransform)(pageRows, options),
|
|
44
|
+
meta: {
|
|
45
|
+
perPage,
|
|
46
|
+
nextCursor: hasNext && last ? String(last[field]) : null,
|
|
47
|
+
prevCursor: hasCursor ? String(options.cursor) : null,
|
|
48
|
+
hasNext,
|
|
49
|
+
hasPrev: hasCursor,
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/paginate/cursor.ts"],"names":[],"mappings":";;AAkBA,wCAyCC;AAzDD,2CAA6C;AAE7C;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,cAAc,CAClC,KAA0B,EAC1B,OAA4B,EAAE,EAC9B,UAAoC,EAAE;IAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAE9D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO;QAC5B,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3B,CAAC,CAAC,IAAI,CAAC,OAAO;YACd,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAClB,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,QAAQ,GAAwB;QACpC,GAAG,IAAI;QACP,OAAO,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;QACzC,IAAI,EAAE,OAAO,GAAG,CAAC;KAClB,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC;IAC1E,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAC9C,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,6BAA6B;IAClD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE3C,OAAO;QACL,IAAI,EAAE,IAAA,0BAAc,EAAI,QAAQ,EAAE,OAAO,CAAC;QAC1C,IAAI,EAAE;YACJ,OAAO;YACP,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACxD,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YACrD,OAAO;YACP,OAAO,EAAE,SAAS;SACnB;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { PaginatedResult, Pagination } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Paginate an in-memory array (when you already hold the full result set, e.g.
|
|
4
|
+
* after an aggregation that can't be paged in SQL). Slices `data` to the page
|
|
5
|
+
* window and builds meta. Pass `count` if the true total differs from
|
|
6
|
+
* `data.length` (e.g. `data` is already a page).
|
|
7
|
+
*/
|
|
8
|
+
export declare function getPaginatedResult<T>({ data, pagination, count, }: {
|
|
9
|
+
data: T[];
|
|
10
|
+
pagination: Pagination;
|
|
11
|
+
count?: string | number;
|
|
12
|
+
}): PaginatedResult<T>;
|
|
13
|
+
//# sourceMappingURL=in-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory.d.ts","sourceRoot":"","sources":["../../src/paginate/in-memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG3D;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,EACpC,IAAI,EACJ,UAAU,EACV,KAAK,GACN,EAAE;IACD,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB,GAAG,eAAe,CAAC,CAAC,CAAC,CAWrB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPaginatedResult = getPaginatedResult;
|
|
4
|
+
const pagination_1 = require("./pagination");
|
|
5
|
+
/**
|
|
6
|
+
* Paginate an in-memory array (when you already hold the full result set, e.g.
|
|
7
|
+
* after an aggregation that can't be paged in SQL). Slices `data` to the page
|
|
8
|
+
* window and builds meta. Pass `count` if the true total differs from
|
|
9
|
+
* `data.length` (e.g. `data` is already a page).
|
|
10
|
+
*/
|
|
11
|
+
function getPaginatedResult({ data, pagination, count, }) {
|
|
12
|
+
const { page, perPage } = pagination;
|
|
13
|
+
const total = Number(count ?? data.length) || 0;
|
|
14
|
+
const start = page > 1 ? (page - 1) * perPage : 0;
|
|
15
|
+
const slicedData = data.slice(start, start + perPage);
|
|
16
|
+
return {
|
|
17
|
+
data: slicedData,
|
|
18
|
+
meta: (0, pagination_1.buildMeta)({ page, perPage, total }),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=in-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"in-memory.js","sourceRoot":"","sources":["../../src/paginate/in-memory.ts"],"names":[],"mappings":";;AASA,gDAmBC;AA3BD,6CAAyC;AAEzC;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAI,EACpC,IAAI,EACJ,UAAU,EACV,KAAK,GAKN;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;IAEtD,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,IAAA,sBAAS,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export * from "./types";
|
|
2
|
+
export * from "./model";
|
|
3
|
+
export { paginate, paginator } from "./offset";
|
|
4
|
+
export { paginateCursor } from "./cursor";
|
|
5
|
+
export { getPagination, buildMeta } from "./pagination";
|
|
6
|
+
export { getPaginatedResult } from "./in-memory";
|
|
7
|
+
export { transformWithClass, applyTransform } from "./transform";
|
|
8
|
+
import type * as T from "./types";
|
|
9
|
+
/**
|
|
10
|
+
* Back-compat namespace mirroring the legacy `utils/paginator` export, so
|
|
11
|
+
* existing code only needs to change the import specifier:
|
|
12
|
+
*
|
|
13
|
+
* - import { PaginatorTypes } from "src/utilities/utils/paginator";
|
|
14
|
+
* + import { PaginatorTypes } from "@generazioneai/paginator";
|
|
15
|
+
*
|
|
16
|
+
* Prefer the top-level type exports (`PaginatedResult`, `Pagination`, …) in new code.
|
|
17
|
+
*/
|
|
18
|
+
export declare namespace PaginatorTypes {
|
|
19
|
+
type PaginatedResult<X> = T.PaginatedResult<X>;
|
|
20
|
+
type PaginationMeta = T.PaginationMeta;
|
|
21
|
+
type Pagination = T.Pagination;
|
|
22
|
+
type PaginateOptions<X = any> = T.OffsetPaginateOptions<X>;
|
|
23
|
+
type CursorPaginateOptions<X = any> = T.CursorPaginateOptions<X>;
|
|
24
|
+
type CursorPaginatedResult<X> = T.CursorPaginatedResult<X>;
|
|
25
|
+
type CursorMeta = T.CursorMeta;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/paginate/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS,CAAC;AAElC;;;;;;;;GAQG;AACH,yBAAiB,cAAc,CAAC;IAC9B,KAAY,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACtD,KAAY,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;IAC9C,KAAY,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;IACtC,KAAY,eAAe,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAClE,KAAY,qBAAqB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACxE,KAAY,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAClE,KAAY,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;CACvC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.applyTransform = exports.transformWithClass = exports.getPaginatedResult = exports.buildMeta = exports.getPagination = exports.paginateCursor = exports.paginator = exports.paginate = void 0;
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
19
|
+
__exportStar(require("./model"), exports);
|
|
20
|
+
var offset_1 = require("./offset");
|
|
21
|
+
Object.defineProperty(exports, "paginate", { enumerable: true, get: function () { return offset_1.paginate; } });
|
|
22
|
+
Object.defineProperty(exports, "paginator", { enumerable: true, get: function () { return offset_1.paginator; } });
|
|
23
|
+
var cursor_1 = require("./cursor");
|
|
24
|
+
Object.defineProperty(exports, "paginateCursor", { enumerable: true, get: function () { return cursor_1.paginateCursor; } });
|
|
25
|
+
var pagination_1 = require("./pagination");
|
|
26
|
+
Object.defineProperty(exports, "getPagination", { enumerable: true, get: function () { return pagination_1.getPagination; } });
|
|
27
|
+
Object.defineProperty(exports, "buildMeta", { enumerable: true, get: function () { return pagination_1.buildMeta; } });
|
|
28
|
+
var in_memory_1 = require("./in-memory");
|
|
29
|
+
Object.defineProperty(exports, "getPaginatedResult", { enumerable: true, get: function () { return in_memory_1.getPaginatedResult; } });
|
|
30
|
+
var transform_1 = require("./transform");
|
|
31
|
+
Object.defineProperty(exports, "transformWithClass", { enumerable: true, get: function () { return transform_1.transformWithClass; } });
|
|
32
|
+
Object.defineProperty(exports, "applyTransform", { enumerable: true, get: function () { return transform_1.applyTransform; } });
|
|
33
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/paginate/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0CAAwB;AACxB,mCAA+C;AAAtC,kGAAA,QAAQ,OAAA;AAAE,mGAAA,SAAS,OAAA;AAC5B,mCAA0C;AAAjC,wGAAA,cAAc,OAAA;AACvB,2CAAwD;AAA/C,2GAAA,aAAa,OAAA;AAAE,uGAAA,SAAS,OAAA;AACjC,yCAAiD;AAAxC,+GAAA,kBAAkB,OAAA;AAC3B,yCAAiE;AAAxD,+GAAA,kBAAkB,OAAA;AAAE,2GAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural contract for a Prisma model delegate (e.g. `prisma.user`).
|
|
3
|
+
*
|
|
4
|
+
* Declared structurally so the library does not depend on a specific Prisma
|
|
5
|
+
* version or on `@prisma/client` at all — pass any object exposing `count`
|
|
6
|
+
* and `findMany`. Crucially, this is satisfied by an authz-SCOPED delegate too
|
|
7
|
+
* (the extended client returned by the authz Prisma extension), so pagination
|
|
8
|
+
* automatically respects row-level scoping.
|
|
9
|
+
*/
|
|
10
|
+
export interface PrismaModelDelegate {
|
|
11
|
+
count(args?: {
|
|
12
|
+
where?: unknown;
|
|
13
|
+
}): Promise<number>;
|
|
14
|
+
findMany(args?: Record<string, any>): Promise<any[]>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/paginate/model.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;CACtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/paginate/model.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PrismaModelDelegate } from "./model";
|
|
2
|
+
import type { OffsetPaginateOptions, PaginatedResult } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Offset-paginate a Prisma model.
|
|
5
|
+
*
|
|
6
|
+
* const res = await paginate(prisma.user, { where, orderBy }, { page, perPage });
|
|
7
|
+
* // → { data, meta: { total, lastPage, currentPage, perPage, prev, next, hasPrev, hasNext } }
|
|
8
|
+
*
|
|
9
|
+
* Efficiency:
|
|
10
|
+
* - COUNT and findMany run in parallel.
|
|
11
|
+
* - `withTotal: false` SKIPS the COUNT entirely (fetches `perPage + 1` to know
|
|
12
|
+
* `hasNext`) — much cheaper on large tables.
|
|
13
|
+
* - `page <= 0` returns ALL rows (no LIMIT, no meta) — back-compat with the
|
|
14
|
+
* legacy paginator's "page 0 = everything" behavior.
|
|
15
|
+
*
|
|
16
|
+
* The `model` may be an authz-scoped delegate; scoping is preserved.
|
|
17
|
+
*/
|
|
18
|
+
export declare function paginate<T = any>(model: PrismaModelDelegate, args?: Record<string, any>, options?: OffsetPaginateOptions<T>): Promise<PaginatedResult<T>>;
|
|
19
|
+
/**
|
|
20
|
+
* Legacy-compatible factory: `paginator(options)(model, args)`. Equivalent to
|
|
21
|
+
* `(model, args) => paginate(model, args, options)`. Drop-in replacement for
|
|
22
|
+
* the old `utils/paginator` `paginator(...)` export.
|
|
23
|
+
*/
|
|
24
|
+
export declare function paginator<T = any>(options?: OffsetPaginateOptions<T>): (model: PrismaModelDelegate, args?: Record<string, any>) => Promise<PaginatedResult<T>>;
|
|
25
|
+
//# sourceMappingURL=offset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offset.d.ts","sourceRoot":"","sources":["../../src/paginate/offset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAetE;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,GAAG,EACpC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAC9B,OAAO,GAAE,qBAAqB,CAAC,CAAC,CAAM,GACrC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAwC7B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,GAAE,qBAAqB,CAAC,CAAC,CAAM,IAErE,OAAO,mBAAmB,EAC1B,OAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,KAC7B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAC/B"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.paginate = paginate;
|
|
4
|
+
exports.paginator = paginator;
|
|
5
|
+
const transform_1 = require("./transform");
|
|
6
|
+
const pagination_1 = require("./pagination");
|
|
7
|
+
/** Append tie-breaker field(s) (`asc`) to the caller's orderBy for stable paging. */
|
|
8
|
+
function withTieBreaker(orderBy, tieBreaker) {
|
|
9
|
+
if (!tieBreaker || orderBy === undefined)
|
|
10
|
+
return orderBy;
|
|
11
|
+
const fields = Array.isArray(tieBreaker) ? tieBreaker : [tieBreaker];
|
|
12
|
+
const base = Array.isArray(orderBy) ? orderBy : [orderBy];
|
|
13
|
+
return [...base, ...fields.map((f) => ({ [f]: "asc" }))];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Offset-paginate a Prisma model.
|
|
17
|
+
*
|
|
18
|
+
* const res = await paginate(prisma.user, { where, orderBy }, { page, perPage });
|
|
19
|
+
* // → { data, meta: { total, lastPage, currentPage, perPage, prev, next, hasPrev, hasNext } }
|
|
20
|
+
*
|
|
21
|
+
* Efficiency:
|
|
22
|
+
* - COUNT and findMany run in parallel.
|
|
23
|
+
* - `withTotal: false` SKIPS the COUNT entirely (fetches `perPage + 1` to know
|
|
24
|
+
* `hasNext`) — much cheaper on large tables.
|
|
25
|
+
* - `page <= 0` returns ALL rows (no LIMIT, no meta) — back-compat with the
|
|
26
|
+
* legacy paginator's "page 0 = everything" behavior.
|
|
27
|
+
*
|
|
28
|
+
* The `model` may be an authz-scoped delegate; scoping is preserved.
|
|
29
|
+
*/
|
|
30
|
+
async function paginate(model, args = {}, options = {}) {
|
|
31
|
+
const page = Number(options.page) || 0;
|
|
32
|
+
const perPage = Number(options.perPage) || 10;
|
|
33
|
+
const tieBreaker = options.orderByTieBreaker ?? options.orderByTieBreakerPropertyName;
|
|
34
|
+
const orderBy = withTieBreaker(args.orderBy, tieBreaker);
|
|
35
|
+
const withTotal = options.withTotal !== false;
|
|
36
|
+
// page <= 0 → return everything (no pagination, no meta).
|
|
37
|
+
if (page <= 0) {
|
|
38
|
+
const rows = await model.findMany({ ...args, orderBy });
|
|
39
|
+
return { data: (0, transform_1.applyTransform)(rows, options) };
|
|
40
|
+
}
|
|
41
|
+
const skip = perPage * (page - 1);
|
|
42
|
+
if (withTotal) {
|
|
43
|
+
const [total, rows] = await Promise.all([
|
|
44
|
+
model.count({ where: args.where }),
|
|
45
|
+
model.findMany({ ...args, orderBy, take: perPage, skip }),
|
|
46
|
+
]);
|
|
47
|
+
return {
|
|
48
|
+
data: (0, transform_1.applyTransform)(rows, options),
|
|
49
|
+
meta: (0, pagination_1.buildMeta)({ page, perPage, total }),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Count-less: fetch one extra row to determine hasNext without a COUNT query.
|
|
53
|
+
const rows = await model.findMany({
|
|
54
|
+
...args,
|
|
55
|
+
orderBy,
|
|
56
|
+
take: perPage + 1,
|
|
57
|
+
skip,
|
|
58
|
+
});
|
|
59
|
+
const hasNext = rows.length > perPage;
|
|
60
|
+
const pageRows = hasNext ? rows.slice(0, perPage) : rows;
|
|
61
|
+
return {
|
|
62
|
+
data: (0, transform_1.applyTransform)(pageRows, options),
|
|
63
|
+
meta: (0, pagination_1.buildMeta)({ page, perPage, hasNext }),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Legacy-compatible factory: `paginator(options)(model, args)`. Equivalent to
|
|
68
|
+
* `(model, args) => paginate(model, args, options)`. Drop-in replacement for
|
|
69
|
+
* the old `utils/paginator` `paginator(...)` export.
|
|
70
|
+
*/
|
|
71
|
+
function paginator(options = {}) {
|
|
72
|
+
return (model, args = {}) => paginate(model, args, options);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=offset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offset.js","sourceRoot":"","sources":["../../src/paginate/offset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Pagination, PaginationMeta } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Normalize raw page/perPage (possibly strings, possibly missing) into a
|
|
4
|
+
* `{ page, perPage, skip }` triple. Page defaults to 1, perPage to 10.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getPagination(rawPage?: number | string, rawPerPage?: number | string): Pagination;
|
|
7
|
+
/**
|
|
8
|
+
* Build offset pagination meta. Pass `total` for full meta (lastPage/next from
|
|
9
|
+
* the count), or omit it (with `hasNext`) for the count-less mode.
|
|
10
|
+
*/
|
|
11
|
+
export declare function buildMeta(args: {
|
|
12
|
+
page: number;
|
|
13
|
+
perPage: number;
|
|
14
|
+
total?: number;
|
|
15
|
+
/** Used only when `total` is undefined (count-less mode). */
|
|
16
|
+
hasNext?: boolean;
|
|
17
|
+
}): PaginationMeta;
|
|
18
|
+
//# sourceMappingURL=pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/paginate/pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE1D;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EACzB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAC3B,UAAU,CAKZ;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,cAAc,CA6BjB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPagination = getPagination;
|
|
4
|
+
exports.buildMeta = buildMeta;
|
|
5
|
+
/**
|
|
6
|
+
* Normalize raw page/perPage (possibly strings, possibly missing) into a
|
|
7
|
+
* `{ page, perPage, skip }` triple. Page defaults to 1, perPage to 10.
|
|
8
|
+
*/
|
|
9
|
+
function getPagination(rawPage, rawPerPage) {
|
|
10
|
+
const page = Number(rawPage ?? 1) || 1;
|
|
11
|
+
const perPage = Number(rawPerPage ?? 10) || 10;
|
|
12
|
+
const skip = page > 0 ? perPage * (page - 1) : 0;
|
|
13
|
+
return { page, perPage, skip };
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Build offset pagination meta. Pass `total` for full meta (lastPage/next from
|
|
17
|
+
* the count), or omit it (with `hasNext`) for the count-less mode.
|
|
18
|
+
*/
|
|
19
|
+
function buildMeta(args) {
|
|
20
|
+
const { page, perPage } = args;
|
|
21
|
+
const hasPrev = page > 1;
|
|
22
|
+
if (args.total === undefined) {
|
|
23
|
+
const hasNext = !!args.hasNext;
|
|
24
|
+
return {
|
|
25
|
+
currentPage: page,
|
|
26
|
+
perPage,
|
|
27
|
+
prev: hasPrev ? page - 1 : null,
|
|
28
|
+
next: hasNext ? page + 1 : null,
|
|
29
|
+
hasPrev,
|
|
30
|
+
hasNext,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const total = args.total;
|
|
34
|
+
const lastPage = Math.max(1, Math.ceil(total / perPage));
|
|
35
|
+
const hasNext = page < lastPage;
|
|
36
|
+
return {
|
|
37
|
+
total,
|
|
38
|
+
lastPage,
|
|
39
|
+
currentPage: page,
|
|
40
|
+
perPage,
|
|
41
|
+
prev: hasPrev ? page - 1 : null,
|
|
42
|
+
next: hasNext ? page + 1 : null,
|
|
43
|
+
hasPrev,
|
|
44
|
+
hasNext,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/paginate/pagination.ts"],"names":[],"mappings":";;AAMA,sCAQC;AAMD,8BAmCC;AArDD;;;GAGG;AACH,SAAgB,aAAa,CAC3B,OAAyB,EACzB,UAA4B;IAE5B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,IAMzB;IACC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC;IAEzB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/B,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,OAAO;YACP,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;YAC/B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;YAC/B,OAAO;YACP,OAAO;SACR,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;IAChC,OAAO;QACL,KAAK;QACL,QAAQ;QACR,WAAW,EAAE,IAAI;QACjB,OAAO;QACP,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;QAC/B,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;QAC/B,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optional class-transformer integration. `class-transformer` is an OPTIONAL
|
|
3
|
+
* peer dependency: it is required lazily, only when the `type` option is used,
|
|
4
|
+
* so consumers that pass `transform` (or nothing) never need it installed.
|
|
5
|
+
*/
|
|
6
|
+
import type { BasePaginateOptions, Ctor } from "./types";
|
|
7
|
+
/**
|
|
8
|
+
* Map raw rows through an entity class: `plainToInstance` (drop unknown props,
|
|
9
|
+
* coerce types) then `instanceToPlain` (serialize, keeping unset fields). This
|
|
10
|
+
* mirrors the classic `transformResponse` helper used across the services.
|
|
11
|
+
*/
|
|
12
|
+
export declare function transformWithClass<T>(cls: Ctor<T>, rows: any[]): T[];
|
|
13
|
+
/** Resolve the row mapper: `transform` wins over `type`; otherwise identity. */
|
|
14
|
+
export declare function applyTransform<T>(rows: any[], options: BasePaginateOptions<T>): T[];
|
|
15
|
+
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/paginate/transform.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAqBzD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAOpE;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,CAAC,EAC9B,IAAI,EAAE,GAAG,EAAE,EACX,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC9B,CAAC,EAAE,CAIL"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformWithClass = transformWithClass;
|
|
4
|
+
exports.applyTransform = applyTransform;
|
|
5
|
+
let cached;
|
|
6
|
+
function classTransformer() {
|
|
7
|
+
if (cached === undefined) {
|
|
8
|
+
try {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
10
|
+
cached = require("class-transformer");
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
cached = null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (!cached) {
|
|
17
|
+
throw new Error("@generazioneai/paginator: the `type` option requires the optional peer " +
|
|
18
|
+
"dependency `class-transformer`. Install it, or use the `transform` option instead.");
|
|
19
|
+
}
|
|
20
|
+
return cached;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Map raw rows through an entity class: `plainToInstance` (drop unknown props,
|
|
24
|
+
* coerce types) then `instanceToPlain` (serialize, keeping unset fields). This
|
|
25
|
+
* mirrors the classic `transformResponse` helper used across the services.
|
|
26
|
+
*/
|
|
27
|
+
function transformWithClass(cls, rows) {
|
|
28
|
+
const { plainToInstance, instanceToPlain } = classTransformer();
|
|
29
|
+
const instances = plainToInstance(cls, rows, {
|
|
30
|
+
excludeExtraneousValues: true,
|
|
31
|
+
enableImplicitConversion: true,
|
|
32
|
+
});
|
|
33
|
+
return instanceToPlain(instances, { exposeUnsetFields: true });
|
|
34
|
+
}
|
|
35
|
+
/** Resolve the row mapper: `transform` wins over `type`; otherwise identity. */
|
|
36
|
+
function applyTransform(rows, options) {
|
|
37
|
+
if (options.transform)
|
|
38
|
+
return options.transform(rows);
|
|
39
|
+
if (options.type)
|
|
40
|
+
return transformWithClass(options.type, rows);
|
|
41
|
+
return rows;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/paginate/transform.ts"],"names":[],"mappings":";;AA+BA,gDAOC;AAGD,wCAOC;AAzCD,IAAI,MAAW,CAAC;AAChB,SAAS,gBAAgB;IACvB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,8DAA8D;YAC9D,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,yEAAyE;YACvE,oFAAoF,CACvF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAgB,kBAAkB,CAAI,GAAY,EAAE,IAAW;IAC7D,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAChE,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE;QAC3C,uBAAuB,EAAE,IAAI;QAC7B,wBAAwB,EAAE,IAAI;KAC/B,CAAC,CAAC;IACH,OAAO,eAAe,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAQ,CAAC;AACxE,CAAC;AAED,gFAAgF;AAChF,SAAgB,cAAc,CAC5B,IAAW,EACX,OAA+B;IAE/B,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,kBAAkB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChE,OAAO,IAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public types for @generazioneai/paginator.
|
|
3
|
+
*
|
|
4
|
+
* The library is framework-agnostic: it knows nothing about NestJS, your DI
|
|
5
|
+
* container, or your entity classes. It only needs a Prisma-style model
|
|
6
|
+
* delegate (see ./model) and, optionally, a `class-transformer` entity class.
|
|
7
|
+
*/
|
|
8
|
+
/** A class constructor usable as a class-transformer target. */
|
|
9
|
+
export type Ctor<T> = new (...args: any[]) => T;
|
|
10
|
+
/** A custom row mapper. Takes the raw rows, returns the shaped output. */
|
|
11
|
+
export type TransformFn<T> = (rows: any[]) => T[];
|
|
12
|
+
/** Resolved offset pagination triple. */
|
|
13
|
+
export interface Pagination {
|
|
14
|
+
page: number;
|
|
15
|
+
perPage: number;
|
|
16
|
+
skip: number;
|
|
17
|
+
}
|
|
18
|
+
/** Meta attached to an offset-paginated result. */
|
|
19
|
+
export interface PaginationMeta {
|
|
20
|
+
/** Total rows matching the query (omitted when `withTotal: false`). */
|
|
21
|
+
total?: number;
|
|
22
|
+
/** Last page number (omitted when `withTotal: false`). */
|
|
23
|
+
lastPage?: number;
|
|
24
|
+
currentPage: number;
|
|
25
|
+
perPage: number;
|
|
26
|
+
/** Previous page number, or null on the first page. */
|
|
27
|
+
prev: number | null;
|
|
28
|
+
/** Next page number, or null when there is no next page. */
|
|
29
|
+
next: number | null;
|
|
30
|
+
hasPrev: boolean;
|
|
31
|
+
hasNext: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface PaginatedResult<T> {
|
|
34
|
+
data: T[];
|
|
35
|
+
/** Absent when `page <= 0` (the "return everything" mode). */
|
|
36
|
+
meta?: PaginationMeta;
|
|
37
|
+
}
|
|
38
|
+
/** Options shared by every paginate function. */
|
|
39
|
+
export interface BasePaginateOptions<T> {
|
|
40
|
+
/**
|
|
41
|
+
* class-transformer target class. When set, rows are mapped through
|
|
42
|
+
* `plainToInstance(cls, rows, { excludeExtraneousValues, enableImplicitConversion })`
|
|
43
|
+
* then `instanceToPlain(..., { exposeUnsetFields: true })`. Requires the
|
|
44
|
+
* optional peer dependency `class-transformer`.
|
|
45
|
+
*/
|
|
46
|
+
type?: Ctor<T>;
|
|
47
|
+
/** Custom row mapper. Takes precedence over `type`. */
|
|
48
|
+
transform?: TransformFn<T>;
|
|
49
|
+
}
|
|
50
|
+
export interface OffsetPaginateOptions<T = any> extends BasePaginateOptions<T> {
|
|
51
|
+
/** 1-based page. `0`/undefined ⇒ return ALL rows (no pagination, no meta). */
|
|
52
|
+
page?: number | string;
|
|
53
|
+
/** Rows per page. Default `10`. */
|
|
54
|
+
perPage?: number | string;
|
|
55
|
+
/**
|
|
56
|
+
* When `false`, the COUNT query is SKIPPED — the paginator fetches `perPage + 1`
|
|
57
|
+
* rows and derives `hasNext` from that. `total`/`lastPage` are then omitted.
|
|
58
|
+
* Big win on large tables when the frontend only needs next/prev. Default `true`.
|
|
59
|
+
*/
|
|
60
|
+
withTotal?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Field name(s) appended `asc` to `orderBy` so ordering is deterministic
|
|
63
|
+
* across pages (avoids row drift / duplicates when the sort key has ties).
|
|
64
|
+
*/
|
|
65
|
+
orderByTieBreaker?: string | string[];
|
|
66
|
+
/** @deprecated Back-compat alias of `orderByTieBreaker`. */
|
|
67
|
+
orderByTieBreakerPropertyName?: string;
|
|
68
|
+
}
|
|
69
|
+
/** Meta attached to a cursor-paginated result. */
|
|
70
|
+
export interface CursorMeta {
|
|
71
|
+
perPage: number;
|
|
72
|
+
/** Cursor to pass back to fetch the next page, or null when exhausted. */
|
|
73
|
+
nextCursor: string | null;
|
|
74
|
+
/** The cursor this page was fetched from, or null on the first page. */
|
|
75
|
+
prevCursor: string | null;
|
|
76
|
+
hasNext: boolean;
|
|
77
|
+
hasPrev: boolean;
|
|
78
|
+
}
|
|
79
|
+
export interface CursorPaginatedResult<T> {
|
|
80
|
+
data: T[];
|
|
81
|
+
meta: CursorMeta;
|
|
82
|
+
}
|
|
83
|
+
export interface CursorPaginateOptions<T = any> extends BasePaginateOptions<T> {
|
|
84
|
+
/** Rows per page. Default `10`. */
|
|
85
|
+
perPage?: number | string;
|
|
86
|
+
/** The cursor value (the `cursorField` of the last row of the previous page). */
|
|
87
|
+
cursor?: string | number | null;
|
|
88
|
+
/** Unique, sequential field used as the cursor. Default `"id"`. */
|
|
89
|
+
cursorField?: string;
|
|
90
|
+
/** Sort direction along the cursor field. Default `"forward"` (asc). */
|
|
91
|
+
direction?: "forward" | "backward";
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/paginate/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gEAAgE;AAChE,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEhD,0EAA0E;AAC1E,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;AAElD,yCAAyC;AACzC,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,8DAA8D;IAC9D,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED,iDAAiD;AACjD,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACf,uDAAuD;IACvD,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAC5E,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtC,4DAA4D;IAC5D,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACxC;AAED,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,wEAAwE;IACxE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAC5E,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAChC,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;CACpC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Public types for @generazioneai/paginator.
|
|
4
|
+
*
|
|
5
|
+
* The library is framework-agnostic: it knows nothing about NestJS, your DI
|
|
6
|
+
* container, or your entity classes. It only needs a Prisma-style model
|
|
7
|
+
* delegate (see ./model) and, optionally, a `class-transformer` entity class.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/paginate/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
|
package/dist/parsed.d.ts
CHANGED
|
@@ -153,5 +153,19 @@ export interface ParsedQuery {
|
|
|
153
153
|
include: ParsedInclude;
|
|
154
154
|
select: ParsedSelect;
|
|
155
155
|
pagination: ParsedPagination;
|
|
156
|
+
/**
|
|
157
|
+
* Server-side raw adapter args, merged by the adapter into the final query.
|
|
158
|
+
* NOT from the wire — set by the backend (e.g. a repository) to run native
|
|
159
|
+
* ORM filters/includes the DSL doesn't model, while still paginating through
|
|
160
|
+
* the engine. For Prisma: `{ where, orderBy, include, select }`. `where` is
|
|
161
|
+
* AND-merged with the parsed where; `orderBy`/`include`/`select` are used when
|
|
162
|
+
* the parsed query doesn't set them.
|
|
163
|
+
*/
|
|
164
|
+
baseArgs?: {
|
|
165
|
+
where?: unknown;
|
|
166
|
+
orderBy?: unknown;
|
|
167
|
+
include?: unknown;
|
|
168
|
+
select?: unknown;
|
|
169
|
+
};
|
|
156
170
|
}
|
|
157
171
|
//# sourceMappingURL=parsed.d.ts.map
|
package/dist/parsed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsed.d.ts","sourceRoot":"","sources":["../src/parsed.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"parsed.d.ts","sourceRoot":"","sources":["../src/parsed.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.7.1",
|
|
7
7
|
"description": "ORM-agnostic JSON query language with pluggable adapters (TypeORM, Prisma)",
|
|
8
8
|
"license": "BSD-3-Clause",
|
|
9
9
|
"repository": {
|
|
@@ -42,6 +42,11 @@
|
|
|
42
42
|
"types": "./dist/adapters/prisma/index.d.ts",
|
|
43
43
|
"import": "./dist/adapters/prisma/index.js",
|
|
44
44
|
"require": "./dist/adapters/prisma/index.js"
|
|
45
|
+
},
|
|
46
|
+
"./paginate": {
|
|
47
|
+
"types": "./dist/paginate/index.d.ts",
|
|
48
|
+
"import": "./dist/paginate/index.js",
|
|
49
|
+
"require": "./dist/paginate/index.js"
|
|
45
50
|
}
|
|
46
51
|
},
|
|
47
52
|
"files": [
|
|
@@ -59,7 +64,8 @@
|
|
|
59
64
|
},
|
|
60
65
|
"peerDependencies": {
|
|
61
66
|
"typeorm": ">=0.3.0",
|
|
62
|
-
"@prisma/client": ">=5.0.0"
|
|
67
|
+
"@prisma/client": ">=5.0.0",
|
|
68
|
+
"class-transformer": ">=0.5.0"
|
|
63
69
|
},
|
|
64
70
|
"peerDependenciesMeta": {
|
|
65
71
|
"typeorm": {
|
|
@@ -67,6 +73,9 @@
|
|
|
67
73
|
},
|
|
68
74
|
"@prisma/client": {
|
|
69
75
|
"optional": true
|
|
76
|
+
},
|
|
77
|
+
"class-transformer": {
|
|
78
|
+
"optional": true
|
|
70
79
|
}
|
|
71
80
|
},
|
|
72
81
|
"devDependencies": {
|
|
@@ -75,5 +84,18 @@
|
|
|
75
84
|
"sqlite3": "^5.1.7",
|
|
76
85
|
"typeorm": "^0.3.20",
|
|
77
86
|
"typescript": "^5.4.0"
|
|
87
|
+
},
|
|
88
|
+
"typesVersions": {
|
|
89
|
+
"*": {
|
|
90
|
+
"paginate": [
|
|
91
|
+
"dist/paginate/index.d.ts"
|
|
92
|
+
],
|
|
93
|
+
"prisma": [
|
|
94
|
+
"dist/adapters/prisma/index.d.ts"
|
|
95
|
+
],
|
|
96
|
+
"typeorm": [
|
|
97
|
+
"dist/adapters/typeorm/index.d.ts"
|
|
98
|
+
]
|
|
99
|
+
}
|
|
78
100
|
}
|
|
79
101
|
}
|