@pothos/plugin-drizzle 0.18.1 → 0.19.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.
Files changed (165) hide show
  1. package/CHANGELOG.md +345 -0
  2. package/README.md +784 -221
  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 +80 -20
  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 +80 -20
  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 +55 -90
  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 +47 -88
  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 +8 -6
  114. package/src/connection-helpers.ts +167 -53
  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 +175 -44
  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 +53 -81
  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":"AAAA,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,MAAM,EAQX,KAAK,GAAG,EAER,KAAK,KAAK,EACV,KAAK,qBAAqB,EAC3B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKvE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,iBAmB/C;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,yBAAyB,UAGlC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,UAa3C;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,yBAAyB,WAKlE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAQvC;AAKD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,yBAAyB,UAEnF;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,MAAM,EAAE,yBAAyB,WAMlB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,mBAWvC;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,MAAM,EAAE,yBAAyB,WAQlB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAGvC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,WAejD;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA+BpE;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CA8B1E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,WAKpC,MAAM,6BAmCtB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,WAKxC,OAAO,6BA2BvB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,YAKrC,OAAO,6BA+BxB;AAED,MAAM,WAAW,mCAAmC;IAClD,IAAI,EAAE,iBAAiB,CAAC,0BAA0B,CAAC;IACnD,GAAG,EAAE,EAAE,CAAC;IACR,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,MAAM,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,MAAM,CAAC,CAAC;IACnD,OAAO,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAAC;IACvD,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,yBAAyB,CAAC;IAClC,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,MAAM,iBAAiB,GAAG,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,KAAK,GAAG,CAAC,CAAC;AAiNhF,wBAAgB,4BAA4B,CAAC,EAC3C,IAAI,EACJ,GAAG,EACH,OAA0B,EAC1B,WAA0B,EAC1B,OAAO,EACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,KAAK,GACN,EAAE,mCAAmC;;;;;aA1E1B,KAAK;;;EA8HhB;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,EAAE,EAC/C,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,IAAI,EAAE,iBAAiB,CAAC,0BAA0B,EAClD,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC3B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,EACxD,MAAM,CAAC,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI;;;gCAA5B,YAAY,CAAC,MAAM,CAAC;WAWlC,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC,EAAE;;qBAElC,MAAM,GAAG,IAAI;mBACf,MAAM,GAAG,IAAI;;;;EAgCrC;AAED,wBAAsB,8BAA8B,CAAC,CAAC,SAAS,EAAE,EAC/D,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,yBAAyB,EACjC,OAAO,EAAE,IAAI,CAAC,mCAAmC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,GAAG;IACnF,UAAU,CAAC,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;CACzC,EACD,OAAO,EAAE,CACP,OAAO,EAAE,CAAC,KAAK,EAAE,yBAAyB,CAAC,WAAW,EAAE,qBAAqB,CAAC,KAAK,YAAY,KAC5F,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,EAC/B,MAAM,EAAE,OAAO;;;gCA3Dc,YAAY,CAAC,MAAM,CAAC;;gBAWvB,MAAM;cAAQ,OAAO;;;qBAEtB,MAAM,GAAG,IAAI;mBACf,MAAM,GAAG,IAAI;;;;GAqHrC"}
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
  }
@@ -44,7 +29,6 @@ export function getIDSerializer(fields, config) {
44
29
  }
45
30
  return (value)=>{
46
31
  if (fields.length > 1) {
47
- fields.map((field)=>field.keyAsName);
48
32
  return `${JSON.stringify(fields.map((col)=>value[config.columnToTsName(col)]))}`;
49
33
  }
50
34
  return `${formatIDChunk(value[config.columnToTsName(fields[0])])}`;
@@ -61,7 +45,7 @@ export function getColumnSerializer(fields, config) {
61
45
  if (fields.length > 1) {
62
46
  // each value carries its own type tag, the same ones a single value gets.
63
47
  // 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)])))}`;
48
+ return encodeCursorTuple(fields.map((field)=>value[cursorFieldKey(field, config)]));
65
49
  }
66
50
  return formatCursorChunk(value[cursorFieldKey(fields[0], config)]);
67
51
  };
@@ -94,25 +78,9 @@ export function parseSerializedDrizzleColumn(value) {
94
78
  throw new PothosValidationError('value must be a string');
95
79
  }
96
80
  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
- }
81
+ // `@pothos/core`'s `decodeCursorChunk` reads every tag, including the `J:` a compound cursor
82
+ // used before each part carried one -- see `getCursorParser` for what happens to that array.
83
+ return decodeCursorChunk(value);
116
84
  } catch {
117
85
  throw new PothosValidationError(`Invalid serialized data: ${value}`);
118
86
  }
@@ -132,7 +100,9 @@ export function parseSerializedIDColumn(id, field) {
132
100
  return id;
133
101
  }
134
102
  if (field.dataType === 'object date') {
135
- return new Date(id);
103
+ // `formatIDChunk` writes the epoch milliseconds; `new Date` of that string is an Invalid
104
+ // Date, since it is not a date format `Date` parses.
105
+ return new Date(Number(id));
136
106
  }
137
107
  throw new PothosValidationError(`Unsupported ID type ${field.dataType}`);
138
108
  } catch (error) {
@@ -142,14 +112,16 @@ export function parseSerializedIDColumn(id, field) {
142
112
  throw new PothosValidationError(`Invalid serialized ID: ${id}`);
143
113
  }
144
114
  }
145
- export function getIDParser(fields) {
115
+ // Keyed by the typescript name, as `getIDSerializer` reads by: the record is a row of the table,
116
+ // and every consumer (the node ref's `parseId`, the model loader) looks columns up that way.
117
+ export function getIDParser(fields, config) {
146
118
  if (fields.length === 0) {
147
119
  throw new PothosValidationError('Column parser must have at least one field');
148
120
  }
149
121
  return (value)=>{
150
122
  if (fields.length === 1) {
151
123
  return {
152
- [fields[0].name]: parseSerializedIDColumn(value, fields[0])
124
+ [config.columnToTsName(fields[0])]: parseSerializedIDColumn(value, fields[0])
153
125
  };
154
126
  }
155
127
  try {
@@ -162,7 +134,7 @@ export function getIDParser(fields) {
162
134
  }
163
135
  const record = {};
164
136
  fields.forEach((field, i)=>{
165
- record[field.name] = parsed[i];
137
+ record[config.columnToTsName(field)] = parsed[i];
166
138
  });
167
139
  return record;
168
140
  } catch (error) {
@@ -212,6 +184,10 @@ export function getCursorParser(keys) {
212
184
  // the columns that came before it. Those still describe a position, just a
213
185
  // less precise one, so the page is keyed off the prefix the cursor covers
214
186
  // rather than rejected. Cursors returned by that page carry every column.
187
+ //
188
+ // The array is a `T:` chunk's values, each still its own type. A cursor issued before this
189
+ // release decodes from a `J:` chunk instead, whose parts arrive as whatever plain JSON
190
+ // preserved -- see the deprecated `J:` case in `@pothos/core`'s `decodeCursorChunk`.
215
191
  const values = Array.isArray(parsed) ? parsed : [
216
192
  parsed
217
193
  ];
@@ -397,22 +373,21 @@ function keysetFilter(entries, cursor, paging) {
397
373
  OR: parts
398
374
  } : parts[0];
399
375
  }
400
- export function drizzleCursorConnectionQuery({ args, ctx, maxSize = DEFAULT_MAX_SIZE, defaultSize = DEFAULT_SIZE, orderBy, extras, where, config, table }) {
401
- var _ref;
376
+ export function drizzleCursorConnectionQuery({ args, ctx, maxSize, defaultSize, orderBy, extras, where, config, table }) {
402
377
  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
- }
378
+ validateConnectionArguments(args);
409
379
  if (first != null && last != null) {
410
380
  throw new PothosValidationError('Arguments "first" and "last" are not supported at the same time');
411
381
  }
412
382
  const maxSizeForConnection = typeof maxSize === 'function' ? maxSize(args, ctx) : maxSize;
413
383
  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;
384
+ const { limit } = getConnectionPageSize({
385
+ args,
386
+ defaultSize: defaultSizeForConnection,
387
+ maxSize: maxSizeForConnection
388
+ });
389
+ // `last: 0` asks for the last zero rows, so it pages backwards like any other `last`.
390
+ const inverted = first == null && last != null;
416
391
  const parsedOrderBy = parseOrderBy(config, table, orderBy, inverted, extras);
417
392
  const columns = {};
418
393
  for (const column of parsedOrderBy.columns){
@@ -442,8 +417,11 @@ export function wrapConnectionResult(results, args, limit, cursor, resolveNode,
442
417
  var _ref, _ref1;
443
418
  var _edges_, _edges_1;
444
419
  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;
420
+ // `first`/`last` are compared against null rather than by truthiness, so `last: 0` reports the
421
+ // `pageInfo` of a backward page of zero rows rather than of a forward one.
422
+ const backward = args.first == null && args.last != null;
423
+ const hasNextPage = args.before ? true : args.last != null ? false : gotFullResults;
424
+ const hasPreviousPage = args.after ? true : backward ? gotFullResults : false;
447
425
  const nodes = gotFullResults ? results.slice(0, -1) : results;
448
426
  const connection = {
449
427
  parent,
@@ -467,7 +445,7 @@ export function wrapConnectionResult(results, args, limit, cursor, resolveNode,
467
445
  cursor: cursor(value),
468
446
  node: value
469
447
  });
470
- if (args.last && !args.first) {
448
+ if (backward) {
471
449
  edges.reverse();
472
450
  }
473
451
  connection.edges = edges;
@@ -475,7 +453,8 @@ export function wrapConnectionResult(results, args, limit, cursor, resolveNode,
475
453
  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
454
  return connection;
477
455
  }
478
- export async function resolveDrizzleCursorConnection(tableName, info, typeName, config, options, resolve, parent) {
456
+ export async function resolveDrizzleCursorConnection(tableName, // The settled plan of the connection's rows; the builder handed to `resolve` merges into it.
457
+ plan, config, options, resolve, parent) {
479
458
  const table = config.relations[tableName];
480
459
  let query;
481
460
  let formatter;
@@ -489,35 +468,20 @@ export async function resolveDrizzleCursorConnection(tableName, info, typeName,
489
468
  table
490
469
  });
491
470
  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'
471
+ query = queryFromPlan(plan, omitUndefinedKeys({
472
+ ...connectionQuery,
473
+ extras: q.extras,
474
+ columns: {
475
+ ...q.columns,
476
+ ...connectionQuery.columns
477
+ },
478
+ where: connectionQuery.where && q.where ? {
479
+ AND: [
480
+ q.where,
481
+ connectionQuery.where
516
482
  ]
517
- ],
518
- typeName,
519
- config
520
- });
483
+ } : q.where || connectionQuery.where
484
+ }));
521
485
  return query;
522
486
  });
523
487
  if (!results) {
@@ -538,7 +502,8 @@ export async function resolveDrizzleCursorConnection(tableName, info, typeName,
538
502
  }
539
503
  };
540
504
  }
541
- return wrapConnectionResult(results, options.args, query.limit, formatter, undefined, parent, options.totalCount);
505
+ const { limit } = query;
506
+ return wrapConnectionResult(results, options.args, limit, formatter, undefined, parent, options.totalCount);
542
507
  }
543
508
 
544
509
  //# 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","getIDSerializer","length","JSON","stringify","map","col","columnToTsName","cursorFieldKey","field","getColumnSerializer","serializer","parseDrizzleCursor","cursor","decoded","startsWith","parseSerializedDrizzleColumn","slice","parseSerializedIDColumn","id","dataType","parseInt","BigInt","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"}