@pothos/plugin-drizzle 0.18.1 → 0.19.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.
Files changed (165) hide show
  1. package/CHANGELOG.md +357 -0
  2. package/README.md +1199 -563
  3. package/dts/connection-helpers.d.ts +18 -8
  4. package/dts/connection-helpers.d.ts.map +1 -1
  5. package/dts/drizzle-field-builder.d.ts +4 -11
  6. package/dts/drizzle-field-builder.d.ts.map +1 -1
  7. package/dts/global-types.d.ts.map +1 -1
  8. package/dts/index.d.ts.map +1 -1
  9. package/dts/model-loader.d.ts +18 -17
  10. package/dts/model-loader.d.ts.map +1 -1
  11. package/dts/types.d.ts +82 -22
  12. package/dts/types.d.ts.map +1 -1
  13. package/dts/utils/adapter.d.ts +39 -0
  14. package/dts/utils/adapter.d.ts.map +1 -0
  15. package/dts/utils/await-selections.d.ts +12 -0
  16. package/dts/utils/await-selections.d.ts.map +1 -0
  17. package/dts/utils/config.d.ts +23 -3
  18. package/dts/utils/config.d.ts.map +1 -1
  19. package/dts/utils/cursors.d.ts +6 -6
  20. package/dts/utils/cursors.d.ts.map +1 -1
  21. package/dts/utils/map-query.d.ts +22 -21
  22. package/dts/utils/map-query.d.ts.map +1 -1
  23. package/dts/utils/path-info.d.ts +13 -0
  24. package/dts/utils/path-info.d.ts.map +1 -0
  25. package/dts/utils/relation-filter.d.ts +48 -0
  26. package/dts/utils/relation-filter.d.ts.map +1 -0
  27. package/dts/utils/selections.d.ts +2 -21
  28. package/dts/utils/selections.d.ts.map +1 -1
  29. package/esm/connection-helpers.d.ts +18 -8
  30. package/esm/connection-helpers.d.ts.map +1 -1
  31. package/esm/connection-helpers.js +52 -19
  32. package/esm/connection-helpers.js.map +1 -1
  33. package/esm/drizzle-field-builder.d.ts +4 -11
  34. package/esm/drizzle-field-builder.d.ts.map +1 -1
  35. package/esm/drizzle-field-builder.js +138 -96
  36. package/esm/drizzle-field-builder.js.map +1 -1
  37. package/esm/field-builder.js +61 -47
  38. package/esm/field-builder.js.map +1 -1
  39. package/esm/global-types.d.ts.map +1 -1
  40. package/esm/index.d.ts.map +1 -1
  41. package/esm/index.js +37 -61
  42. package/esm/index.js.map +1 -1
  43. package/esm/model-loader.d.ts +18 -17
  44. package/esm/model-loader.d.ts.map +1 -1
  45. package/esm/model-loader.js +76 -45
  46. package/esm/model-loader.js.map +1 -1
  47. package/esm/schema-builder.js +40 -149
  48. package/esm/schema-builder.js.map +1 -1
  49. package/esm/types.d.ts +82 -22
  50. package/esm/types.d.ts.map +1 -1
  51. package/esm/types.js.map +1 -1
  52. package/esm/utils/adapter.d.ts +39 -0
  53. package/esm/utils/adapter.d.ts.map +1 -0
  54. package/esm/utils/adapter.js +137 -0
  55. package/esm/utils/adapter.js.map +1 -0
  56. package/esm/utils/await-selections.d.ts +12 -0
  57. package/esm/utils/await-selections.d.ts.map +1 -0
  58. package/esm/utils/await-selections.js +19 -0
  59. package/esm/utils/await-selections.js.map +1 -0
  60. package/esm/utils/config.d.ts +23 -3
  61. package/esm/utils/config.d.ts.map +1 -1
  62. package/esm/utils/config.js +1 -4
  63. package/esm/utils/config.js.map +1 -1
  64. package/esm/utils/cursors.d.ts +6 -6
  65. package/esm/utils/cursors.d.ts.map +1 -1
  66. package/esm/utils/cursors.js +75 -92
  67. package/esm/utils/cursors.js.map +1 -1
  68. package/esm/utils/map-query.d.ts +22 -21
  69. package/esm/utils/map-query.d.ts.map +1 -1
  70. package/esm/utils/map-query.js +40 -354
  71. package/esm/utils/map-query.js.map +1 -1
  72. package/esm/utils/path-info.d.ts +13 -0
  73. package/esm/utils/path-info.d.ts.map +1 -0
  74. package/esm/utils/path-info.js +37 -0
  75. package/esm/utils/path-info.js.map +1 -0
  76. package/esm/utils/relation-filter.d.ts +48 -0
  77. package/esm/utils/relation-filter.d.ts.map +1 -0
  78. package/esm/utils/relation-filter.js +92 -0
  79. package/esm/utils/relation-filter.js.map +1 -0
  80. package/esm/utils/selections.d.ts +2 -21
  81. package/esm/utils/selections.d.ts.map +1 -1
  82. package/esm/utils/selections.js +1 -133
  83. package/esm/utils/selections.js.map +1 -1
  84. package/lib/connection-helpers.js +51 -18
  85. package/lib/connection-helpers.js.map +1 -1
  86. package/lib/drizzle-field-builder.js +136 -94
  87. package/lib/drizzle-field-builder.js.map +1 -1
  88. package/lib/field-builder.js +58 -44
  89. package/lib/field-builder.js.map +1 -1
  90. package/lib/index.js +36 -60
  91. package/lib/index.js.map +1 -1
  92. package/lib/model-loader.js +76 -45
  93. package/lib/model-loader.js.map +1 -1
  94. package/lib/schema-builder.js +40 -149
  95. package/lib/schema-builder.js.map +1 -1
  96. package/lib/types.js.map +1 -1
  97. package/lib/utils/adapter.js +147 -0
  98. package/lib/utils/adapter.js.map +1 -0
  99. package/lib/utils/await-selections.js +20 -0
  100. package/lib/utils/await-selections.js.map +1 -0
  101. package/lib/utils/config.js +1 -4
  102. package/lib/utils/config.js.map +1 -1
  103. package/lib/utils/cursors.js +67 -90
  104. package/lib/utils/cursors.js.map +1 -1
  105. package/lib/utils/map-query.js +28 -359
  106. package/lib/utils/map-query.js.map +1 -1
  107. package/lib/utils/path-info.js +39 -0
  108. package/lib/utils/path-info.js.map +1 -0
  109. package/lib/utils/relation-filter.js +91 -0
  110. package/lib/utils/relation-filter.js.map +1 -0
  111. package/lib/utils/selections.js +3 -158
  112. package/lib/utils/selections.js.map +1 -1
  113. package/package.json +10 -8
  114. package/src/connection-helpers.ts +168 -54
  115. package/src/drizzle-field-builder.ts +296 -176
  116. package/src/field-builder.ts +110 -77
  117. package/src/global-types.ts +0 -32
  118. package/src/index.ts +42 -68
  119. package/src/model-loader.ts +110 -71
  120. package/src/schema-builder.ts +76 -169
  121. package/src/types.ts +178 -46
  122. package/src/utils/adapter.ts +197 -0
  123. package/src/utils/await-selections.ts +31 -0
  124. package/src/utils/config.ts +1 -5
  125. package/src/utils/cursors.ts +84 -83
  126. package/src/utils/map-query.ts +51 -734
  127. package/src/utils/path-info.ts +40 -0
  128. package/src/utils/relation-filter.ts +185 -0
  129. package/src/utils/selections.ts +2 -207
  130. package/dts/utils/deep-equal.d.ts +0 -2
  131. package/dts/utils/deep-equal.d.ts.map +0 -1
  132. package/dts/utils/drizzle-graphql.d.ts +0 -2
  133. package/dts/utils/drizzle-graphql.d.ts.map +0 -1
  134. package/dts/utils/loader-map.d.ts +0 -11
  135. package/dts/utils/loader-map.d.ts.map +0 -1
  136. package/dts/utils/usage.d.ts +0 -5
  137. package/dts/utils/usage.d.ts.map +0 -1
  138. package/esm/utils/deep-equal.d.ts +0 -2
  139. package/esm/utils/deep-equal.d.ts.map +0 -1
  140. package/esm/utils/deep-equal.js +0 -45
  141. package/esm/utils/deep-equal.js.map +0 -1
  142. package/esm/utils/drizzle-graphql.d.ts +0 -2
  143. package/esm/utils/drizzle-graphql.d.ts.map +0 -1
  144. package/esm/utils/drizzle-graphql.js +0 -232
  145. package/esm/utils/drizzle-graphql.js.map +0 -1
  146. package/esm/utils/loader-map.d.ts +0 -11
  147. package/esm/utils/loader-map.d.ts.map +0 -1
  148. package/esm/utils/loader-map.js +0 -35
  149. package/esm/utils/loader-map.js.map +0 -1
  150. package/esm/utils/usage.d.ts +0 -5
  151. package/esm/utils/usage.d.ts.map +0 -1
  152. package/esm/utils/usage.js +0 -59
  153. package/esm/utils/usage.js.map +0 -1
  154. package/lib/utils/deep-equal.js +0 -55
  155. package/lib/utils/deep-equal.js.map +0 -1
  156. package/lib/utils/drizzle-graphql.js +0 -236
  157. package/lib/utils/drizzle-graphql.js.map +0 -1
  158. package/lib/utils/loader-map.js +0 -56
  159. package/lib/utils/loader-map.js.map +0 -1
  160. package/lib/utils/usage.js +0 -83
  161. package/lib/utils/usage.js.map +0 -1
  162. package/src/utils/deep-equal.ts +0 -57
  163. package/src/utils/drizzle-graphql.ts +0 -274
  164. package/src/utils/loader-map.ts +0 -49
  165. package/src/utils/usage.ts +0 -62
@@ -1,21 +1,21 @@
1
- import { type MaybePromise, type SchemaTypes } from '@pothos/core';
1
+ import { encodeCursorChunk, type MaybePromise, type SchemaTypes } from '@pothos/core';
2
2
  import { type Column, type SQL, type Table, type TableRelationalConfig } from 'drizzle-orm';
3
- import type { GraphQLResolveInfo } from 'graphql';
4
3
  import type { ConnectionOrderBy, QueryForDrizzleConnection } from '../types.js';
4
+ import type { DrizzlePlan } from './adapter.js';
5
5
  import type { PothosDrizzleSchemaConfig } from './config.js';
6
6
  import { type SelectionMap } from './selections.js';
7
- export declare function formatCursorChunk(value: unknown): string | null;
7
+ export declare const formatCursorChunk: typeof encodeCursorChunk;
8
8
  export declare function formatDrizzleCursor(record: Record<string, unknown>, fields: Column[], config: PothosDrizzleSchemaConfig): string;
9
9
  export declare function formatIDChunk(value: unknown): string;
10
10
  export declare function getIDSerializer(fields: Column[], config: PothosDrizzleSchemaConfig): (value: Record<string, unknown>) => string;
11
11
  export type CursorField = Column | string;
12
12
  export declare function cursorFieldKey(field: CursorField, config: PothosDrizzleSchemaConfig): string;
13
- export declare function getColumnSerializer(fields: readonly CursorField[], config: PothosDrizzleSchemaConfig): (value: Record<string, unknown>) => string | null;
13
+ export declare function getColumnSerializer(fields: readonly CursorField[], config: PothosDrizzleSchemaConfig): (value: Record<string, unknown>) => string;
14
14
  export declare function getCursorFormatter(fields: readonly CursorField[], config: PothosDrizzleSchemaConfig): (value: Record<string, unknown>) => string;
15
15
  export declare function parseDrizzleCursor(cursor: unknown): unknown;
16
16
  export declare function parseSerializedDrizzleColumn(value: unknown): unknown;
17
17
  export declare function parseSerializedIDColumn(id: string, field: Column): unknown;
18
- export declare function getIDParser(fields: readonly Column[]): (value: string) => Record<string, unknown>;
18
+ export declare function getIDParser(fields: readonly Column[], config: PothosDrizzleSchemaConfig): (value: string) => Record<string, unknown>;
19
19
  export declare function getColumnParser(fields: readonly Column[]): (value: unknown) => Record<string, unknown>;
20
20
  export declare function getCursorParser(keys: readonly string[]): (cursor: unknown) => Record<string, unknown>;
21
21
  export interface DrizzleCursorConnectionQueryOptions {
@@ -54,7 +54,7 @@ export declare function wrapConnectionResult<T extends {}>(results: readonly T[]
54
54
  hasNextPage: boolean;
55
55
  };
56
56
  };
57
- export declare function resolveDrizzleCursorConnection<T extends {}>(tableName: string, info: GraphQLResolveInfo, typeName: string, config: PothosDrizzleSchemaConfig, options: Omit<DrizzleCursorConnectionQueryOptions, 'orderBy' | 'config' | 'table'> & {
57
+ export declare function resolveDrizzleCursorConnection<T extends {}>(tableName: string, plan: DrizzlePlan | undefined, config: PothosDrizzleSchemaConfig, options: Omit<DrizzleCursorConnectionQueryOptions, 'orderBy' | 'config' | 'table'> & {
58
58
  totalCount?: () => MaybePromise<number>;
59
59
  }, resolve: (queryFn: (query: QueryForDrizzleConnection<SchemaTypes, TableRelationalConfig>) => SelectionMap) => MaybePromise<readonly T[]>, parent: unknown): Promise<{
60
60
  parent: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"cursors.d.ts","sourceRoot":"","sources":["../../src/utils/cursors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cursors.d.ts","sourceRoot":"","sources":["../../src/utils/cursors.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,12 @@
1
- import { decodeBase64, encodeBase64, PothosValidationError } from '@pothos/core';
1
+ import { decodeBase64, decodeCursorChunk, encodeBase64, encodeCursorChunk, encodeCursorTuple, getConnectionPageSize, PothosValidationError, validateConnectionArguments } from '@pothos/core';
2
2
  import { asc, desc, eq, getColumns, gt, isNull, lt, sql } from 'drizzle-orm';
3
- import { queryFromInfo } from './map-query.js';
3
+ import { queryFromPlan } from './map-query.js';
4
4
  import { omitUndefinedKeys } from './selections.js';
5
- const DEFAULT_MAX_SIZE = 100;
6
- const DEFAULT_SIZE = 20;
7
- export function formatCursorChunk(value) {
8
- if (value == null) {
9
- return null;
10
- }
11
- if (value instanceof Date) {
12
- return `D:${String(Number(value))}`;
13
- }
14
- switch(typeof value){
15
- case 'number':
16
- return `N:${value}`;
17
- case 'string':
18
- return `S:${value}`;
19
- case 'bigint':
20
- return `I:${value}`;
21
- default:
22
- throw new PothosValidationError(`Unsupported cursor type ${typeof value}`);
23
- }
24
- }
5
+ // The tagging is `@pothos/core`'s `encodeCursorChunk`, shared with the prisma plugins so the
6
+ // three can't drift apart again. A nullish ordering value is a position this plugin compares
7
+ // against with `is null`, and it now writes as a `Z:` chunk: it used to interpolate as the string
8
+ // `null`, which is not a chunk, so the cursor came back out as "Invalid cursor" on the next page.
9
+ export const formatCursorChunk = encodeCursorChunk;
25
10
  export function formatDrizzleCursor(record, fields, config) {
26
11
  return getCursorFormatter(fields, config)(record);
27
12
  }
@@ -38,14 +23,31 @@ export function formatIDChunk(value) {
38
23
  throw new PothosValidationError(`Unsupported ID type ${typeof value}`);
39
24
  }
40
25
  }
26
+ function formatCompoundIDValue(value) {
27
+ if (typeof value === 'bigint') {
28
+ return value.toString();
29
+ }
30
+ if (value instanceof Date) {
31
+ return Number(value);
32
+ }
33
+ return value;
34
+ }
35
+ function parseCompoundIDValue(value, field) {
36
+ if (field.dataType.startsWith('bigint') && (typeof value === 'string' || typeof value === 'number')) {
37
+ return BigInt(value);
38
+ }
39
+ if (field.dataType === 'object date' && typeof value === 'number') {
40
+ return new Date(value);
41
+ }
42
+ return value;
43
+ }
41
44
  export function getIDSerializer(fields, config) {
42
45
  if (fields.length === 0) {
43
46
  throw new PothosValidationError('Column serializer must have at least one field');
44
47
  }
45
48
  return (value)=>{
46
49
  if (fields.length > 1) {
47
- fields.map((field)=>field.keyAsName);
48
- return `${JSON.stringify(fields.map((col)=>value[config.columnToTsName(col)]))}`;
50
+ return `${JSON.stringify(fields.map((col)=>formatCompoundIDValue(value[config.columnToTsName(col)])))}`;
49
51
  }
50
52
  return `${formatIDChunk(value[config.columnToTsName(fields[0])])}`;
51
53
  };
@@ -61,7 +63,7 @@ export function getColumnSerializer(fields, config) {
61
63
  if (fields.length > 1) {
62
64
  // each value carries its own type tag, the same ones a single value gets.
63
65
  // Plain JSON would turn a Date into a string and refuse a bigint outright.
64
- return `T:${JSON.stringify(fields.map((field)=>formatCursorChunk(value[cursorFieldKey(field, config)])))}`;
66
+ return encodeCursorTuple(fields.map((field)=>value[cursorFieldKey(field, config)]));
65
67
  }
66
68
  return formatCursorChunk(value[cursorFieldKey(fields[0], config)]);
67
69
  };
@@ -94,25 +96,9 @@ export function parseSerializedDrizzleColumn(value) {
94
96
  throw new PothosValidationError('value must be a string');
95
97
  }
96
98
  try {
97
- const [, type, rawValue] = value.match(/^(S|N|D|J|I|T):(.*)/);
98
- switch(type){
99
- case 'S':
100
- return rawValue;
101
- case 'N':
102
- return Number.parseInt(rawValue, 10);
103
- case 'D':
104
- return new Date(Number.parseInt(rawValue, 10));
105
- case 'J':
106
- // compound values from before each one carried a tag: whatever JSON
107
- // preserved is the best that can be recovered
108
- return JSON.parse(rawValue);
109
- case 'T':
110
- return JSON.parse(rawValue).map((chunk)=>chunk === null ? null : parseSerializedDrizzleColumn(chunk));
111
- case 'I':
112
- return BigInt(rawValue);
113
- default:
114
- throw new PothosValidationError(`Invalid cursor type ${type}`);
115
- }
99
+ // `@pothos/core`'s `decodeCursorChunk` reads every tag, including the `J:` a compound cursor
100
+ // used before each part carried one -- see `getCursorParser` for what happens to that array.
101
+ return decodeCursorChunk(value);
116
102
  } catch {
117
103
  throw new PothosValidationError(`Invalid serialized data: ${value}`);
118
104
  }
@@ -123,7 +109,7 @@ export function parseSerializedIDColumn(id, field) {
123
109
  }
124
110
  try {
125
111
  if (field.dataType.startsWith('number')) {
126
- return Number.parseInt(id, 10);
112
+ return Number(id);
127
113
  }
128
114
  if (field.dataType.startsWith('bigint')) {
129
115
  return BigInt(id);
@@ -132,7 +118,9 @@ export function parseSerializedIDColumn(id, field) {
132
118
  return id;
133
119
  }
134
120
  if (field.dataType === 'object date') {
135
- return new Date(id);
121
+ // `formatIDChunk` writes the epoch milliseconds; `new Date` of that string is an Invalid
122
+ // Date, since it is not a date format `Date` parses.
123
+ return new Date(Number(id));
136
124
  }
137
125
  throw new PothosValidationError(`Unsupported ID type ${field.dataType}`);
138
126
  } catch (error) {
@@ -142,14 +130,16 @@ export function parseSerializedIDColumn(id, field) {
142
130
  throw new PothosValidationError(`Invalid serialized ID: ${id}`);
143
131
  }
144
132
  }
145
- export function getIDParser(fields) {
133
+ // Keyed by the typescript name, as `getIDSerializer` reads by: the record is a row of the table,
134
+ // and every consumer (the node ref's `parseId`, the model loader) looks columns up that way.
135
+ export function getIDParser(fields, config) {
146
136
  if (fields.length === 0) {
147
137
  throw new PothosValidationError('Column parser must have at least one field');
148
138
  }
149
139
  return (value)=>{
150
140
  if (fields.length === 1) {
151
141
  return {
152
- [fields[0].name]: parseSerializedIDColumn(value, fields[0])
142
+ [config.columnToTsName(fields[0])]: parseSerializedIDColumn(value, fields[0])
153
143
  };
154
144
  }
155
145
  try {
@@ -162,7 +152,7 @@ export function getIDParser(fields) {
162
152
  }
163
153
  const record = {};
164
154
  fields.forEach((field, i)=>{
165
- record[field.name] = parsed[i];
155
+ record[config.columnToTsName(field)] = parseCompoundIDValue(parsed[i], field);
166
156
  });
167
157
  return record;
168
158
  } catch (error) {
@@ -212,6 +202,10 @@ export function getCursorParser(keys) {
212
202
  // the columns that came before it. Those still describe a position, just a
213
203
  // less precise one, so the page is keyed off the prefix the cursor covers
214
204
  // rather than rejected. Cursors returned by that page carry every column.
205
+ //
206
+ // The array is a `T:` chunk's values, each still its own type. A cursor issued before this
207
+ // release decodes from a `J:` chunk instead, whose parts arrive as whatever plain JSON
208
+ // preserved -- see the deprecated `J:` case in `@pothos/core`'s `decodeCursorChunk`.
215
209
  const values = Array.isArray(parsed) ? parsed : [
216
210
  parsed
217
211
  ];
@@ -397,22 +391,21 @@ function keysetFilter(entries, cursor, paging) {
397
391
  OR: parts
398
392
  } : parts[0];
399
393
  }
400
- export function drizzleCursorConnectionQuery({ args, ctx, maxSize = DEFAULT_MAX_SIZE, defaultSize = DEFAULT_SIZE, orderBy, extras, where, config, table }) {
401
- var _ref;
394
+ export function drizzleCursorConnectionQuery({ args, ctx, maxSize, defaultSize, orderBy, extras, where, config, table }) {
402
395
  const { before, after, first, last } = args;
403
- if (first != null && first < 0) {
404
- throw new PothosValidationError('Argument "first" must be a non-negative integer');
405
- }
406
- if (last != null && last < 0) {
407
- throw new PothosValidationError('Argument "last" must be a non-negative integer');
408
- }
396
+ validateConnectionArguments(args);
409
397
  if (first != null && last != null) {
410
398
  throw new PothosValidationError('Arguments "first" and "last" are not supported at the same time');
411
399
  }
412
400
  const maxSizeForConnection = typeof maxSize === 'function' ? maxSize(args, ctx) : maxSize;
413
401
  const defaultSizeForConnection = typeof defaultSize === 'function' ? defaultSize(args, ctx) : defaultSize;
414
- const limit = Math.min((_ref = first !== null && first !== void 0 ? first : last) !== null && _ref !== void 0 ? _ref : defaultSizeForConnection, maxSizeForConnection) + 1;
415
- const inverted = !first && !!last;
402
+ const { limit } = getConnectionPageSize({
403
+ args,
404
+ defaultSize: defaultSizeForConnection,
405
+ maxSize: maxSizeForConnection
406
+ });
407
+ // `last: 0` asks for the last zero rows, so it pages backwards like any other `last`.
408
+ const inverted = first == null && last != null;
416
409
  const parsedOrderBy = parseOrderBy(config, table, orderBy, inverted, extras);
417
410
  const columns = {};
418
411
  for (const column of parsedOrderBy.columns){
@@ -442,8 +435,11 @@ export function wrapConnectionResult(results, args, limit, cursor, resolveNode,
442
435
  var _ref, _ref1;
443
436
  var _edges_, _edges_1;
444
437
  const gotFullResults = results.length === Math.abs(limit);
445
- const hasNextPage = args.before ? true : args.last ? false : gotFullResults;
446
- const hasPreviousPage = args.after ? true : !args.first && !!args.last ? gotFullResults : false;
438
+ // `first`/`last` are compared against null rather than by truthiness, so `last: 0` reports the
439
+ // `pageInfo` of a backward page of zero rows rather than of a forward one.
440
+ const backward = args.first == null && args.last != null;
441
+ const hasNextPage = args.before ? true : args.last != null ? false : gotFullResults;
442
+ const hasPreviousPage = args.after ? true : backward ? gotFullResults : false;
447
443
  const nodes = gotFullResults ? results.slice(0, -1) : results;
448
444
  const connection = {
449
445
  parent,
@@ -467,7 +463,7 @@ export function wrapConnectionResult(results, args, limit, cursor, resolveNode,
467
463
  cursor: cursor(value),
468
464
  node: value
469
465
  });
470
- if (args.last && !args.first) {
466
+ if (backward) {
471
467
  edges.reverse();
472
468
  }
473
469
  connection.edges = edges;
@@ -475,7 +471,8 @@ export function wrapConnectionResult(results, args, limit, cursor, resolveNode,
475
471
  connection.pageInfo.endCursor = (_ref1 = (_edges_1 = edges[edges.length - 1]) === null || _edges_1 === void 0 ? void 0 : _edges_1.cursor) !== null && _ref1 !== void 0 ? _ref1 : null;
476
472
  return connection;
477
473
  }
478
- export async function resolveDrizzleCursorConnection(tableName, info, typeName, config, options, resolve, parent) {
474
+ export async function resolveDrizzleCursorConnection(tableName, // The settled plan of the connection's rows; the builder handed to `resolve` merges into it.
475
+ plan, config, options, resolve, parent) {
479
476
  const table = config.relations[tableName];
480
477
  let query;
481
478
  let formatter;
@@ -489,35 +486,20 @@ export async function resolveDrizzleCursorConnection(tableName, info, typeName,
489
486
  table
490
487
  });
491
488
  formatter = getCursorFormatter(cursorFields, config);
492
- query = queryFromInfo({
493
- context: options.ctx,
494
- info,
495
- select: omitUndefinedKeys({
496
- ...connectionQuery,
497
- extras: q.extras,
498
- columns: {
499
- ...q.columns,
500
- ...connectionQuery.columns
501
- },
502
- where: connectionQuery.where && q.where ? {
503
- AND: [
504
- q.where,
505
- connectionQuery.where
506
- ]
507
- } : q.where || connectionQuery.where
508
- }),
509
- paths: [
510
- [
511
- 'nodes'
512
- ],
513
- [
514
- 'edges',
515
- 'node'
489
+ query = queryFromPlan(plan, omitUndefinedKeys({
490
+ ...connectionQuery,
491
+ extras: q.extras,
492
+ columns: {
493
+ ...q.columns,
494
+ ...connectionQuery.columns
495
+ },
496
+ where: connectionQuery.where && q.where ? {
497
+ AND: [
498
+ q.where,
499
+ connectionQuery.where
516
500
  ]
517
- ],
518
- typeName,
519
- config
520
- });
501
+ } : q.where || connectionQuery.where
502
+ }));
521
503
  return query;
522
504
  });
523
505
  if (!results) {
@@ -538,7 +520,8 @@ export async function resolveDrizzleCursorConnection(tableName, info, typeName,
538
520
  }
539
521
  };
540
522
  }
541
- return wrapConnectionResult(results, options.args, query.limit, formatter, undefined, parent, options.totalCount);
523
+ const { limit } = query;
524
+ return wrapConnectionResult(results, options.args, limit, formatter, undefined, parent, options.totalCount);
542
525
  }
543
526
 
544
527
  //# sourceMappingURL=cursors.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/cursors.ts"],"names":["decodeBase64","encodeBase64","PothosValidationError","asc","desc","eq","getColumns","gt","isNull","lt","sql","queryFromInfo","omitUndefinedKeys","DEFAULT_MAX_SIZE","DEFAULT_SIZE","formatCursorChunk","value","Date","String","Number","formatDrizzleCursor","record","fields","config","getCursorFormatter","formatIDChunk","getIDSerializer","length","map","field","keyAsName","JSON","stringify","col","columnToTsName","cursorFieldKey","getColumnSerializer","serializer","parseDrizzleCursor","cursor","decoded","startsWith","parseSerializedDrizzleColumn","slice","type","rawValue","match","parseInt","parse","chunk","BigInt","parseSerializedIDColumn","id","dataType","error","getIDParser","name","parsed","Array","isArray","forEach","i","getColumnParser","getCursorParser","keys","values","resolveExpression","expression","table","orderTarget","entry","column","key","flipDirection","direction","ordersBy","entries","some","orderIsUnique","getUniqueConstraints","columns","every","notNull","appendTieBreaker","tieBreaker","findTieBreaker","push","parseOrderBy","orderBy","invert","extras","normalized","columnEntry","tableColumns","Object","directionFor","flatMap","cursorFields","t","fromEntries","compareTo","operator","isNullish","undefined","RAW","operators","keysetFilter","paging","parsedCursor","covered","filter","parts","index","ascending","compare","AND","previous","OR","drizzleCursorConnectionQuery","args","ctx","maxSize","defaultSize","where","first","before","after","last","maxSizeForConnection","defaultSizeForConnection","limit","Math","min","inverted","parsedOrderBy","whereClauses","wrapConnectionResult","results","resolveNode","parent","totalCount","edges","gotFullResults","abs","hasNextPage","hasPreviousPage","nodes","connection","pageInfo","startCursor","endCursor","node","reverse","resolveDrizzleCursorConnection","tableName","info","typeName","options","resolve","relations","query","formatter","q","connectionQuery","getPrimaryKey","context","select","paths"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utils/cursors.ts"],"names":["decodeBase64","decodeCursorChunk","encodeBase64","encodeCursorChunk","encodeCursorTuple","getConnectionPageSize","PothosValidationError","validateConnectionArguments","asc","desc","eq","getColumns","gt","isNull","lt","sql","queryFromPlan","omitUndefinedKeys","formatCursorChunk","formatDrizzleCursor","record","fields","config","getCursorFormatter","formatIDChunk","value","Date","String","Number","formatCompoundIDValue","toString","parseCompoundIDValue","field","dataType","startsWith","BigInt","getIDSerializer","length","JSON","stringify","map","col","columnToTsName","cursorFieldKey","getColumnSerializer","serializer","parseDrizzleCursor","cursor","decoded","parseSerializedDrizzleColumn","slice","parseSerializedIDColumn","id","error","getIDParser","parsed","parse","Array","isArray","forEach","i","getColumnParser","name","getCursorParser","keys","values","resolveExpression","expression","table","orderTarget","entry","column","key","flipDirection","direction","ordersBy","entries","some","orderIsUnique","getUniqueConstraints","columns","every","notNull","appendTieBreaker","tieBreaker","findTieBreaker","push","parseOrderBy","orderBy","invert","extras","normalized","columnEntry","tableColumns","Object","directionFor","flatMap","cursorFields","t","fromEntries","compareTo","operator","isNullish","undefined","RAW","operators","keysetFilter","paging","parsedCursor","covered","filter","parts","index","ascending","compare","AND","previous","OR","drizzleCursorConnectionQuery","args","ctx","maxSize","defaultSize","where","before","after","first","last","maxSizeForConnection","defaultSizeForConnection","limit","inverted","parsedOrderBy","whereClauses","wrapConnectionResult","results","resolveNode","parent","totalCount","edges","gotFullResults","Math","abs","backward","hasNextPage","hasPreviousPage","nodes","connection","pageInfo","startCursor","endCursor","node","reverse","resolveDrizzleCursorConnection","tableName","plan","options","resolve","relations","query","formatter","q","connectionQuery","getPrimaryKey"],"mappings":"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"}
@@ -1,30 +1,31 @@
1
- import { type GraphQLNamedType, type GraphQLResolveInfo } from 'graphql';
1
+ import { type PathSegment } from '@pothos/selection-mapper';
2
+ import type { GraphQLResolveInfo } from 'graphql';
3
+ import { type DrizzlePlan } from './adapter.js';
2
4
  import type { PothosDrizzleSchemaConfig } from './config.js';
3
- import { type SelectionMap, type SelectionState } from './selections.js';
4
- export interface IndirectInclude {
5
- getType: () => string;
6
- path?: {
7
- type?: string;
8
- name: string;
9
- }[];
10
- paths?: {
11
- type?: string;
12
- name: string;
13
- }[][];
14
- }
5
+ import type { SelectionMap } from './selections.js';
15
6
  export interface QueryFromInfoOptions<T extends SelectionMap> {
16
7
  config: PothosDrizzleSchemaConfig;
17
8
  context: object;
18
9
  info: GraphQLResolveInfo;
19
10
  typeName?: string;
20
11
  select?: T;
21
- path?: string[];
22
- paths?: string[][];
23
- withUsageCheck?: boolean;
12
+ path?: PathSegment[];
13
+ paths?: PathSegment[][];
24
14
  }
25
- export declare function queryFromInfo<T extends SelectionMap>({ withUsageCheck, ...options }: QueryFromInfoOptions<T>): T;
26
- export declare function stateFromInfo<T extends SelectionMap>({ config, context, info, typeName, select, path, paths, }: QueryFromInfoOptions<T>): SelectionState;
27
- export declare function selectionStateFromInfo(config: PothosDrizzleSchemaConfig, context: object, info: GraphQLResolveInfo, typeName?: string): SelectionState;
28
- export declare function getIndirectType(type: GraphQLNamedType, info: GraphQLResolveInfo): GraphQLNamedType;
29
- export declare function normalizeInclude(path: string[], type: GraphQLNamedType, expectedType?: GraphQLNamedType): IndirectInclude;
15
+ export declare function queryFromInfo<T extends SelectionMap>({ config, select, ...options }: QueryFromInfoOptions<T>): T;
16
+ /**
17
+ * The plan for the field `info` resolves (or `typeName`), nothing recorded: a promise while a
18
+ * select beneath the field is async, undefined when `paths` are given and nothing is selected
19
+ * under them. The model loader's, and the first step of a `drizzleField` resolve, whose
20
+ * merges are recorded so the resolver's `query()` selection can come first.
21
+ */
22
+ export declare function planFromInfo({ config, ...options }: Omit<QueryFromInfoOptions<SelectionMap>, 'select'>): DrizzlePlan | undefined;
23
+ /**
24
+ * The query for a plan `planFromInfo` returned, settled: the caller's `select` first, the walked
25
+ * plan after it, the mappings recorded, and the query serialized. This is how the `query()`
26
+ * builder handed to a `drizzleField` or `drizzleConnection` resolver stays synchronous once a
27
+ * selection beneath the field is async, with the precedence of `queryFromInfo`: a relation the
28
+ * document also plans with other arguments loads on its own.
29
+ */
30
+ export declare function queryFromPlan<T extends SelectionMap>(plan: DrizzlePlan | undefined, select?: T): T;
30
31
  //# sourceMappingURL=map-query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"map-query.d.ts","sourceRoot":"","sources":["../../src/utils/map-query.ts"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,gBAAgB,EAErB,KAAK,kBAAkB,EAUxB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,cAAc,EAGpB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,CAAC;CAC7C;AA+cD,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,YAAY;IAC1D,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,YAAY,EAAE,EACpD,cAAc,EACd,GAAG,OAAO,EACX,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAQ7B;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,YAAY,EAAE,EACpD,MAAM,EACN,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,IAAS,EACT,KAAU,GACX,EAAE,oBAAoB,CAAC,CAAC,CAAC,kBA4FzB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,yBAAyB,EACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,EACxB,QAAQ,CAAC,EAAE,MAAM,kBAelB;AA+BD,wBAAgB,eAAe,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,kBAAkB,oBAU/E;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,gBAAgB,EACtB,YAAY,CAAC,EAAE,gBAAgB,GAC9B,eAAe,CA+BjB"}
1
+ {"version":3,"file":"map-query.d.ts","sourceRoot":"","sources":["../../src/utils/map-query.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAQ,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,YAAY;IAC1D,MAAM,EAAE,yBAAyB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC;CACzB;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,YAAY,EAAE,EACpD,MAAM,EACN,MAAM,EACN,GAAG,OAAO,EACX,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAe7B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,GAAG,OAAO,EACX,EAAE,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,GAAG,WAAW,GAAG,SAAS,CAE9E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,YAAY,EAClD,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,MAAM,CAAC,EAAE,CAAC,GACT,CAAC,CAQH"}