@pothos/plugin-prisma 3.22.0 → 3.23.0

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.
@@ -23,6 +23,7 @@ _export(exports, {
23
23
  getCursorFormatter: ()=>getCursorFormatter,
24
24
  getCursorParser: ()=>getCursorParser
25
25
  });
26
+ const _core = require("@pothos/core");
26
27
  const _datamodel = require("./datamodel");
27
28
  const DEFAULT_MAX_SIZE = 100;
28
29
  const DEFAULT_SIZE = 20;
@@ -44,9 +45,9 @@ function formatCursorChunk(value) {
44
45
  function formatCursor(fields) {
45
46
  return (value)=>{
46
47
  if (typeof fields === 'string') {
47
- return Buffer.from(`GPC:${formatCursorChunk(value[fields])}`).toString('base64');
48
+ return (0, _core.encodeBase64)(`GPC:${formatCursorChunk(value[fields])}`);
48
49
  }
49
- return Buffer.from(`GPC:J:${JSON.stringify(fields.map((name)=>value[name]))}`).toString('base64');
50
+ return (0, _core.encodeBase64)(`GPC:J:${JSON.stringify(fields.map((name)=>value[name]))}`);
50
51
  };
51
52
  }
52
53
  function parseRawCursor(cursor) {
@@ -54,7 +55,7 @@ function parseRawCursor(cursor) {
54
55
  throw new TypeError('Cursor must be a string');
55
56
  }
56
57
  try {
57
- const decoded = Buffer.from(cursor, 'base64').toString();
58
+ const decoded = (0, _core.decodeBase64)(cursor);
58
59
  const [, type, value] = decoded.match(/^GPC:(\w):(.*)/);
59
60
  switch(type){
60
61
  case 'S':
@@ -179,7 +180,8 @@ function parseCompositeCursor(fields) {
179
180
  return record;
180
181
  };
181
182
  }
182
- function prismaCursorConnectionQuery({ args: { before , after , first , last } , maxSize =DEFAULT_MAX_SIZE , defaultSize =DEFAULT_SIZE , parseCursor }) {
183
+ function prismaCursorConnectionQuery({ args , ctx , maxSize =DEFAULT_MAX_SIZE , defaultSize =DEFAULT_SIZE , parseCursor }) {
184
+ const { before , after , first , last } = args;
183
185
  if (first != null && first < 0) {
184
186
  throw new TypeError('Argument "first" must be a non-negative integer');
185
187
  }
@@ -189,9 +191,6 @@ function prismaCursorConnectionQuery({ args: { before , after , first , last }
189
191
  if (before && after) {
190
192
  throw new Error('Arguments "before" and "after" are not supported at the same time');
191
193
  }
192
- if (before != null && last == null) {
193
- throw new Error('Argument "last" must be provided when using "before"');
194
- }
195
194
  if (before != null && first != null) {
196
195
  throw new Error('Arguments "before" and "first" are not supported at the same time');
197
196
  }
@@ -199,8 +198,10 @@ function prismaCursorConnectionQuery({ args: { before , after , first , last }
199
198
  throw new Error('Arguments "after" and "last" are not supported at the same time');
200
199
  }
201
200
  const cursor = before !== null && before !== void 0 ? before : after;
201
+ const maxSizeForConnection = typeof maxSize === 'function' ? maxSize(args, ctx) : maxSize;
202
+ const defaultSizeForConnection = typeof defaultSize === 'function' ? defaultSize(args, ctx) : defaultSize;
202
203
  var ref;
203
- let take = Math.min((ref = first !== null && first !== void 0 ? first : last) !== null && ref !== void 0 ? ref : defaultSize, maxSize) + 1;
204
+ let take = Math.min((ref = first !== null && first !== void 0 ? first : last) !== null && ref !== void 0 ? ref : defaultSizeForConnection, maxSizeForConnection) + 1;
204
205
  if (before) {
205
206
  take = -take;
206
207
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/util/cursors.ts"],"names":["formatCursorChunk","formatCursor","parseRawCursor","parseID","getDefaultIDSerializer","getDefaultIDParser","serializeID","parseCompositeCursor","prismaCursorConnectionQuery","wrapConnectionResult","resolvePrismaCursorConnection","getCursorFormatter","getCursorParser","DEFAULT_MAX_SIZE","DEFAULT_SIZE","value","Date","String","Number","TypeError","fields","Buffer","from","toString","JSON","stringify","map","name","cursor","decoded","type","match","parseInt","parse","BigInt","Error","id","dataType","parseFloat","modelName","fieldName","builder","model","getModel","field","find","f","parent","primaryKey","join","n","kind","idx","index","uniqueIndexes","parts","Array","isArray","result","i","length","parsed","record","forEach","args","before","after","first","last","maxSize","defaultSize","parseCursor","take","Math","min","skip","results","totalCount","edges","gotFullResults","abs","hasNextPage","hasPreviousPage","nodes","slice","node","pageInfo","startCursor","endCursor","options","resolve","query","modelData","uniqueIndex","parser","rawCursor"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/util/cursors.ts"],"names":["formatCursorChunk","formatCursor","parseRawCursor","parseID","getDefaultIDSerializer","getDefaultIDParser","serializeID","parseCompositeCursor","prismaCursorConnectionQuery","wrapConnectionResult","resolvePrismaCursorConnection","getCursorFormatter","getCursorParser","DEFAULT_MAX_SIZE","DEFAULT_SIZE","value","Date","String","Number","TypeError","fields","encodeBase64","JSON","stringify","map","name","cursor","decoded","decodeBase64","type","match","parseInt","parse","BigInt","Error","id","dataType","parseFloat","Buffer","from","modelName","fieldName","builder","model","getModel","field","find","f","parent","primaryKey","join","n","kind","idx","index","uniqueIndexes","parts","Array","isArray","result","i","length","toString","parsed","record","forEach","args","ctx","maxSize","defaultSize","parseCursor","before","after","first","last","maxSizeForConnection","defaultSizeForConnection","take","Math","min","skip","results","totalCount","edges","gotFullResults","abs","hasNextPage","hasPreviousPage","nodes","slice","node","pageInfo","startCursor","endCursor","options","resolve","query","modelData","uniqueIndex","parser","rawCursor"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pothos/plugin-prisma",
3
- "version": "3.22.0",
3
+ "version": "3.23.0",
4
4
  "description": "A Pothos plugin for more efficient integration with prisma",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./dts/index.d.ts",
@@ -49,10 +49,10 @@
49
49
  "typescript": ">=4.7.2"
50
50
  },
51
51
  "devDependencies": {
52
- "@pothos/core": "3.14.0",
53
- "@pothos/plugin-complexity": "3.6.0",
52
+ "@pothos/core": "3.15.0",
53
+ "@pothos/plugin-complexity": "3.6.1",
54
54
  "@pothos/plugin-errors": "3.6.0",
55
- "@pothos/plugin-relay": "3.20.0",
55
+ "@pothos/plugin-relay": "3.21.0",
56
56
  "@pothos/plugin-simple-objects": "3.4.0",
57
57
  "@pothos/test-utils": "1.3.0",
58
58
  "@prisma/client": "^4.1.1",
@@ -95,6 +95,7 @@ fieldBuilderProto.prismaConnection = function prismaConnection<
95
95
  resolvePrismaCursorConnection(
96
96
  {
97
97
  query: queryFromInfo(ctx, info, undefined, { select: cursorSelection as {} }),
98
+ ctx,
98
99
  parseCursor,
99
100
  maxSize,
100
101
  defaultSize,
@@ -144,8 +144,8 @@ export class PrismaObjectFieldBuilder<
144
144
  }: {
145
145
  type?: ObjectRef<unknown, unknown>;
146
146
  totalCount?: boolean;
147
- maxSize?: number;
148
- defaultSize?: number;
147
+ maxSize?: number | ((args: {}, ctx: {}) => number);
148
+ defaultSize?: number | ((args: {}, ctx: {}) => number);
149
149
  cursor: string;
150
150
  extensions: {};
151
151
  description?: string;
@@ -166,6 +166,7 @@ export class PrismaObjectFieldBuilder<
166
166
  ...((typeof query === 'function' ? query(args, ctx) : query) as {}),
167
167
  ...prismaCursorConnectionQuery({
168
168
  parseCursor,
169
+ ctx,
169
170
  maxSize,
170
171
  defaultSize,
171
172
  args,
package/src/types.ts CHANGED
@@ -495,30 +495,34 @@ export type PrismaConnectionFieldOptions<
495
495
  ResolveReturnShape
496
496
  >,
497
497
  'args' | 'resolve' | 'type'
498
- > & {
499
- type: Type;
500
- cursor: string & keyof Model['Where'];
501
- defaultSize?: number;
502
- maxSize?: number;
503
- resolve: (
504
- query: {
505
- include?: Model['Include'];
506
- cursor?: {};
507
- take: number;
508
- skip: number;
509
- },
510
- parent: ParentShape,
511
- args: InputShapeFromFields<Args> & PothosSchemaTypes.DefaultConnectionArguments,
512
- context: Types['Context'],
513
- info: GraphQLResolveInfo,
514
- ) => MaybePromise<Model['Shape'][]>;
515
- totalCount?: (
516
- parent: ParentShape,
517
- args: InputShapeFromFields<Args> & PothosSchemaTypes.DefaultConnectionArguments,
518
- context: Types['Context'],
519
- info: GraphQLResolveInfo,
520
- ) => MaybePromise<number>;
521
- };
498
+ > &
499
+ (InputShapeFromFields<Args> &
500
+ PothosSchemaTypes.DefaultConnectionArguments extends infer ConnectionArgs
501
+ ? {
502
+ type: Type;
503
+ cursor: string & keyof Model['Where'];
504
+ defaultSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
505
+ maxSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
506
+ resolve: (
507
+ query: {
508
+ include?: Model['Include'];
509
+ cursor?: {};
510
+ take: number;
511
+ skip: number;
512
+ },
513
+ parent: ParentShape,
514
+ args: ConnectionArgs,
515
+ context: Types['Context'],
516
+ info: GraphQLResolveInfo,
517
+ ) => MaybePromise<Model['Shape'][]>;
518
+ totalCount?: (
519
+ parent: ParentShape,
520
+ args: ConnectionArgs,
521
+ context: Types['Context'],
522
+ info: GraphQLResolveInfo,
523
+ ) => MaybePromise<number>;
524
+ }
525
+ : never);
522
526
 
523
527
  export type RelatedConnectionOptions<
524
528
  Types extends SchemaTypes,
@@ -551,43 +555,47 @@ export type RelatedConnectionOptions<
551
555
  unknown
552
556
  >,
553
557
  'resolve' | 'type'
554
- > & {
555
- description?: string | false;
556
- query?: QueryForField<Types, Args, Model['Include'][Field & keyof Model['Include']]>;
557
- type?: PrismaObjectRef<Model['Relations'][Field]['Types']>;
558
- cursor: CursorFromRelation<Model, Field>;
559
- defaultSize?: number;
560
- maxSize?: number;
561
- totalCount?: NeedsResolve extends false ? boolean : false;
562
- } & (NeedsResolve extends false
558
+ > &
559
+ (InputShapeFromFields<Args> &
560
+ PothosSchemaTypes.DefaultConnectionArguments extends infer ConnectionArgs
563
561
  ? {
564
- resolve?: (
565
- query: {
566
- include?: Model['Include'];
567
- cursor?: {};
568
- take: number;
569
- skip: number;
570
- },
571
- parent: Model['Shape'],
572
- args: InputShapeFromFields<Args>,
573
- context: Types['Context'],
574
- info: GraphQLResolveInfo,
575
- ) => MaybePromise<Model['Relations'][Field & keyof Model['Relations']]['Shape']>;
576
- }
577
- : {
578
- resolve: (
579
- query: {
580
- include?: Model['Include'];
581
- cursor?: {};
582
- take: number;
583
- skip: number;
584
- },
585
- parent: Model['Shape'],
586
- args: InputShapeFromFields<Args>,
587
- context: Types['Context'],
588
- info: GraphQLResolveInfo,
589
- ) => MaybePromise<Model['Relations'][Field & keyof Model['Relations']]['Shape']>;
590
- });
562
+ description?: string | false;
563
+ query?: QueryForField<Types, Args, Model['Include'][Field & keyof Model['Include']]>;
564
+ type?: PrismaObjectRef<Model['Relations'][Field]['Types']>;
565
+ cursor: CursorFromRelation<Model, Field>;
566
+ defaultSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
567
+ maxSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
568
+ totalCount?: NeedsResolve extends false ? boolean : false;
569
+ } & (NeedsResolve extends false
570
+ ? {
571
+ resolve?: (
572
+ query: {
573
+ include?: Model['Include'];
574
+ cursor?: {};
575
+ take: number;
576
+ skip: number;
577
+ },
578
+ parent: Model['Shape'],
579
+ args: ConnectionArgs,
580
+ context: Types['Context'],
581
+ info: GraphQLResolveInfo,
582
+ ) => MaybePromise<Model['Relations'][Field & keyof Model['Relations']]['Shape']>;
583
+ }
584
+ : {
585
+ resolve: (
586
+ query: {
587
+ include?: Model['Include'];
588
+ cursor?: {};
589
+ take: number;
590
+ skip: number;
591
+ },
592
+ parent: Model['Shape'],
593
+ args: ConnectionArgs,
594
+ context: Types['Context'],
595
+ info: GraphQLResolveInfo,
596
+ ) => MaybePromise<Model['Relations'][Field & keyof Model['Relations']]['Shape']>;
597
+ })
598
+ : never);
591
599
 
592
600
  export type WithBrand<T> = T & { [typeBrandKey]: string };
593
601
 
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-nested-ternary */
2
- import { MaybePromise, SchemaTypes } from '@pothos/core';
2
+ import { decodeBase64, encodeBase64, MaybePromise, SchemaTypes } from '@pothos/core';
3
3
  import { getModel } from './datamodel';
4
4
  import { DMMFField } from './get-client';
5
5
 
@@ -26,12 +26,10 @@ export function formatCursorChunk(value: unknown) {
26
26
  export function formatCursor(fields: string | string[]) {
27
27
  return (value: Record<string, unknown>) => {
28
28
  if (typeof fields === 'string') {
29
- return Buffer.from(`GPC:${formatCursorChunk(value[fields])}`).toString('base64');
29
+ return encodeBase64(`GPC:${formatCursorChunk(value[fields])}`);
30
30
  }
31
31
 
32
- return Buffer.from(`GPC:J:${JSON.stringify(fields.map((name) => value[name]))}`).toString(
33
- 'base64',
34
- );
32
+ return encodeBase64(`GPC:J:${JSON.stringify(fields.map((name) => value[name]))}`);
35
33
  };
36
34
  }
37
35
 
@@ -41,7 +39,7 @@ export function parseRawCursor(cursor: unknown) {
41
39
  }
42
40
 
43
41
  try {
44
- const decoded = Buffer.from(cursor, 'base64').toString();
42
+ const decoded = decodeBase64(cursor);
45
43
  const [, type, value] = decoded.match(/^GPC:(\w):(.*)/) as [string, string, string];
46
44
 
47
45
  switch (type) {
@@ -198,8 +196,9 @@ export function parseCompositeCursor(fields: string[]) {
198
196
 
199
197
  export interface PrismaCursorConnectionQueryOptions {
200
198
  args: PothosSchemaTypes.DefaultConnectionArguments;
201
- defaultSize?: number;
202
- maxSize?: number;
199
+ ctx: {};
200
+ defaultSize?: number | ((args: {}, ctx: {}) => number);
201
+ maxSize?: number | ((args: {}, ctx: {}) => number);
203
202
  parseCursor: (cursor: string) => Record<string, unknown>;
204
203
  }
205
204
 
@@ -209,11 +208,13 @@ interface ResolvePrismaCursorConnectionOptions extends PrismaCursorConnectionQue
209
208
  }
210
209
 
211
210
  export function prismaCursorConnectionQuery({
212
- args: { before, after, first, last },
211
+ args,
212
+ ctx,
213
213
  maxSize = DEFAULT_MAX_SIZE,
214
214
  defaultSize = DEFAULT_SIZE,
215
215
  parseCursor,
216
216
  }: PrismaCursorConnectionQueryOptions) {
217
+ const { before, after, first, last } = args;
217
218
  if (first != null && first < 0) {
218
219
  throw new TypeError('Argument "first" must be a non-negative integer');
219
220
  }
@@ -226,10 +227,6 @@ export function prismaCursorConnectionQuery({
226
227
  throw new Error('Arguments "before" and "after" are not supported at the same time');
227
228
  }
228
229
 
229
- if (before != null && last == null) {
230
- throw new Error('Argument "last" must be provided when using "before"');
231
- }
232
-
233
230
  if (before != null && first != null) {
234
231
  throw new Error('Arguments "before" and "first" are not supported at the same time');
235
232
  }
@@ -240,7 +237,11 @@ export function prismaCursorConnectionQuery({
240
237
 
241
238
  const cursor = before ?? after;
242
239
 
243
- let take = Math.min(first ?? last ?? defaultSize, maxSize) + 1;
240
+ const maxSizeForConnection = typeof maxSize === 'function' ? maxSize(args, ctx) : maxSize;
241
+ const defaultSizeForConnection =
242
+ typeof defaultSize === 'function' ? defaultSize(args, ctx) : defaultSize;
243
+
244
+ let take = Math.min(first ?? last ?? defaultSizeForConnection, maxSizeForConnection) + 1;
244
245
 
245
246
  if (before) {
246
247
  take = -take;