prisma-generator-express 1.54.0 → 1.56.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 (44) hide show
  1. package/README.md +186 -11
  2. package/dist/constants.d.ts +2 -0
  3. package/dist/generators/generateFastifyHandler.js +3 -1
  4. package/dist/generators/generateFastifyHandler.js.map +1 -1
  5. package/dist/generators/generateHonoHandler.js +3 -1
  6. package/dist/generators/generateHonoHandler.js.map +1 -1
  7. package/dist/generators/generateOperationCore.d.ts +3 -0
  8. package/dist/generators/generateOperationCore.js +68 -39
  9. package/dist/generators/generateOperationCore.js.map +1 -1
  10. package/dist/generators/generateRouteConfigType.js +4 -1
  11. package/dist/generators/generateRouteConfigType.js.map +1 -1
  12. package/dist/generators/generateRouter.d.ts +4 -1
  13. package/dist/generators/generateRouter.js +20 -7
  14. package/dist/generators/generateRouter.js.map +1 -1
  15. package/dist/generators/generateRouterFastify.d.ts +4 -1
  16. package/dist/generators/generateRouterFastify.js +23 -9
  17. package/dist/generators/generateRouterFastify.js.map +1 -1
  18. package/dist/generators/generateRouterHono.d.ts +4 -1
  19. package/dist/generators/generateRouterHono.js +29 -16
  20. package/dist/generators/generateRouterHono.js.map +1 -1
  21. package/dist/generators/generateUnifiedScalarUI.d.ts +2 -1
  22. package/dist/generators/generateUnifiedScalarUI.js +13 -10
  23. package/dist/generators/generateUnifiedScalarUI.js.map +1 -1
  24. package/dist/index.js +42 -3
  25. package/dist/index.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/constants.ts +5 -1
  28. package/src/copy/autoIncludeRuntime.ts +60 -35
  29. package/src/copy/buildModelOpenApi.ts +144 -23
  30. package/src/copy/docsRenderer.ts +125 -98
  31. package/src/copy/operationRuntime.ts +94 -9
  32. package/src/copy/routeConfig.express.ts +8 -0
  33. package/src/copy/routeConfig.fastify.ts +8 -0
  34. package/src/copy/routeConfig.hono.ts +9 -1
  35. package/src/copy/routeConfig.ts +23 -5
  36. package/src/generators/generateFastifyHandler.ts +3 -1
  37. package/src/generators/generateHonoHandler.ts +3 -1
  38. package/src/generators/generateOperationCore.ts +84 -39
  39. package/src/generators/generateRouteConfigType.ts +5 -2
  40. package/src/generators/generateRouter.ts +24 -6
  41. package/src/generators/generateRouterFastify.ts +27 -8
  42. package/src/generators/generateRouterHono.ts +33 -15
  43. package/src/generators/generateUnifiedScalarUI.ts +15 -11
  44. package/src/index.ts +49 -7
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateRouterFunction = generateRouterFunction;
4
4
  const generateRouteConfigType_1 = require("./generateRouteConfigType");
5
5
  const importExt_1 = require("../utils/importExt");
6
- function generateRouterFunction({ model, enums, guardShapesImport, importStyle, }) {
6
+ function generateRouterFunction({ model, enums, guardShapesImport, importStyle, writeStrategy, findManyPaginatedMode, }) {
7
7
  const ext = (0, importExt_1.importExt)(importStyle);
8
8
  const modelName = model.name;
9
9
  const modelNameLower = modelName.toLowerCase();
@@ -51,7 +51,13 @@ import {
51
51
  ${modelName}GroupBy,
52
52
  } from './${modelName}Handlers${ext}'
53
53
  import * as core from './${modelName}Core${ext}'
54
- import type { RouteConfig, QueryBuilderConfig } from '../routeConfig.target${ext}'
54
+ import type {
55
+ RouteConfig,
56
+ QueryBuilderConfig,
57
+ WriteStrategy,
58
+ FindManyPaginatedMode,
59
+ PaginationConfig,
60
+ } from '../routeConfig.target${ext}'
55
61
  import { parseQueryParams } from '../parseQueryParams${ext}'
56
62
  import { sanitizeKeys, normalizePrefix, getEnv } from '../misc${ext}'
57
63
  import { buildModelOpenApi } from '../buildModelOpenApi${ext}'
@@ -63,6 +69,7 @@ import {
63
69
  runSingleResultSSE,
64
70
  emitTerminalSSEError,
65
71
  removeReqCloseListener,
72
+ mergePaginationConfig,
66
73
  mapError,
67
74
  HttpError,
68
75
  } from '../operationRuntime${ext}'
@@ -72,6 +79,9 @@ import { runAutoIncludeProgressive } from '../autoIncludeRuntime${ext}'
72
79
  ${(0, generateRouteConfigType_1.generateRouteConfigType)(modelName, 'RequestHandler', guardShapesImport, importStyle, 'express')}
73
80
  const _env = getEnv()
74
81
 
82
+ const WRITE_STRATEGY: WriteStrategy = '${writeStrategy}'
83
+ const FIND_MANY_PAGINATED_MODE: FindManyPaginatedMode = '${findManyPaginatedMode}'
84
+
75
85
  const MODEL_FIELDS = ${JSON.stringify(fieldsMeta, null, 2)} as const
76
86
  const MODEL_ENUMS = ${JSON.stringify(enumsMeta, null, 2)} as const
77
87
 
@@ -79,6 +89,7 @@ type OperationConfigLike = {
79
89
  before?: RequestHandler[]
80
90
  after?: RequestHandler[]
81
91
  shape?: Record<string, unknown>
92
+ pagination?: Partial<PaginationConfig>
82
93
  progressive?: Record<string, ProgressiveVariantConfig>
83
94
  progressiveStages?: Record<string, ProgressiveStage<unknown>>
84
95
  }
@@ -91,7 +102,7 @@ type ExtendedRequest = Request & {
91
102
 
92
103
  type LocalsBag = {
93
104
  parsedQuery?: Record<string, unknown>
94
- routeConfig?: { pagination?: OperationContext['paginationConfig'] }
105
+ routeConfig?: { pagination?: PaginationConfig }
95
106
  guardShape?: Record<string, unknown>
96
107
  guardCaller?: string
97
108
  data?: unknown
@@ -138,7 +149,7 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any>(config: ${m
138
149
  MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
139
150
  MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
140
151
  config as unknown as Parameters<typeof buildModelOpenApi>[3],
141
- { format: 'json' },
152
+ { format: 'json', writeStrategy: WRITE_STRATEGY },
142
153
  )
143
154
  const openApiYamlSpec = openApiDisabled
144
155
  ? null
@@ -147,7 +158,7 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any>(config: ${m
147
158
  MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
148
159
  MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
149
160
  config as unknown as Parameters<typeof buildModelOpenApi>[3],
150
- { format: 'yaml' },
161
+ { format: 'yaml', writeStrategy: WRITE_STRATEGY },
151
162
  )
152
163
 
153
164
  const qbEnabled = isQueryBuilderEnabled(config)
@@ -174,6 +185,7 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any>(config: ${m
174
185
  guardShape: locals.guardShape,
175
186
  guardCaller: locals.guardCaller,
176
187
  paginationConfig: locals.routeConfig?.pagination,
188
+ findManyPaginatedMode: FIND_MANY_PAGINATED_MODE,
177
189
  }
178
190
  }
179
191
 
@@ -197,8 +209,9 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any>(config: ${m
197
209
  const setShape = (opConfig: OperationConfigLike): RequestHandler => {
198
210
  return (req, res, next) => {
199
211
  const locals = readLocals(res)
200
- if (config.pagination) {
201
- locals.routeConfig = { pagination: config.pagination }
212
+ const merged = mergePaginationConfig(config.pagination, opConfig.pagination)
213
+ if (merged) {
214
+ locals.routeConfig = { pagination: merged }
202
215
  }
203
216
  const headerName = config.guard?.variantHeader || 'x-api-variant'
204
217
  const headerValue = req.get(headerName)
@@ -1 +1 @@
1
- {"version":3,"file":"generateRouter.js","sourceRoot":"","sources":["../../src/generators/generateRouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateRouter.js","sourceRoot":"","sources":["../../src/generators/generateRouter.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  import { DMMF } from '@prisma/generator-helper';
2
2
  import { ImportStyle } from '../utils/resolveImportStyle';
3
- export declare function generateFastifyRouterFunction({ model, enums, guardShapesImport, importStyle, }: {
3
+ import { WriteStrategy, FindManyPaginatedMode } from '../constants';
4
+ export declare function generateFastifyRouterFunction({ model, enums, guardShapesImport, importStyle, writeStrategy, findManyPaginatedMode, }: {
4
5
  model: DMMF.Model;
5
6
  enums: DMMF.DatamodelEnum[];
6
7
  guardShapesImport: string | null;
7
8
  importStyle: ImportStyle;
9
+ writeStrategy: WriteStrategy;
10
+ findManyPaginatedMode: FindManyPaginatedMode;
8
11
  }): string;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateFastifyRouterFunction = generateFastifyRouterFunction;
4
4
  const generateRouteConfigType_1 = require("./generateRouteConfigType");
5
5
  const importExt_1 = require("../utils/importExt");
6
- function generateFastifyRouterFunction({ model, enums, guardShapesImport, importStyle, }) {
6
+ function generateFastifyRouterFunction({ model, enums, guardShapesImport, importStyle, writeStrategy, findManyPaginatedMode, }) {
7
7
  const ext = (0, importExt_1.importExt)(importStyle);
8
8
  const modelName = model.name;
9
9
  const modelNameLower = modelName.toLowerCase();
@@ -48,15 +48,24 @@ import {
48
48
  ${modelName}Count,
49
49
  ${modelName}GroupBy,
50
50
  } from './${modelName}Handlers${ext}'
51
- import type { RouteConfig, FastifyHookHandler } from '../routeConfig.target${ext}'
51
+ import type {
52
+ RouteConfig,
53
+ FastifyHookHandler,
54
+ WriteStrategy,
55
+ FindManyPaginatedMode,
56
+ PaginationConfig,
57
+ } from '../routeConfig.target${ext}'
52
58
  import { parseQueryParams } from '../parseQueryParams${ext}'
53
59
  import { sanitizeKeys, normalizePrefix, getEnv } from '../misc${ext}'
54
60
  import { buildModelOpenApi } from '../buildModelOpenApi${ext}'
55
- import { mapError, transformResult, HttpError, type OperationContext } from '../operationRuntime${ext}'
61
+ import { mapError, transformResult, mergePaginationConfig, HttpError, type OperationContext } from '../operationRuntime${ext}'
56
62
 
57
63
  ${(0, generateRouteConfigType_1.generateRouteConfigType)(modelName, 'FastifyHookHandler', guardShapesImport, importStyle, 'fastify')}
58
64
  const _env = getEnv()
59
65
 
66
+ const WRITE_STRATEGY: WriteStrategy = '${writeStrategy}'
67
+ const FIND_MANY_PAGINATED_MODE: FindManyPaginatedMode = '${findManyPaginatedMode}'
68
+
60
69
  const MODEL_FIELDS = ${JSON.stringify(fieldsMeta, null, 2)} as const
61
70
 
62
71
  const MODEL_ENUMS = ${JSON.stringify(enumsMeta, null, 2)} as const
@@ -65,6 +74,7 @@ type OperationConfigLike = {
65
74
  before?: FastifyHookHandler[]
66
75
  after?: FastifyHookHandler[]
67
76
  shape?: Record<string, unknown>
77
+ pagination?: Partial<PaginationConfig>
68
78
  }
69
79
 
70
80
  type FastifyExtended = FastifyRequest & {
@@ -72,7 +82,7 @@ type FastifyExtended = FastifyRequest & {
72
82
  postgres?: unknown
73
83
  sqlite?: unknown
74
84
  parsedQuery?: Record<string, unknown>
75
- routeConfig?: { pagination?: OperationContext['paginationConfig'] }
85
+ routeConfig?: { pagination?: PaginationConfig }
76
86
  guardShape?: Record<string, unknown>
77
87
  guardCaller?: string
78
88
  resultData?: unknown
@@ -118,9 +128,9 @@ function makeShapeHook(
118
128
  ): (request: FastifyRequest) => void {
119
129
  return (request: FastifyRequest) => {
120
130
  const fx = request as FastifyExtended
121
- const paginationConfig = (config as { pagination?: OperationContext['paginationConfig'] }).pagination
122
- if (paginationConfig) {
123
- fx.routeConfig = { pagination: paginationConfig }
131
+ const merged = mergePaginationConfig(config.pagination, opConfig.pagination)
132
+ if (merged) {
133
+ fx.routeConfig = { pagination: merged }
124
134
  }
125
135
  const headerName = (config.guard?.variantHeader || 'x-api-variant').toLowerCase()
126
136
  const headerValue = request.headers[headerName]
@@ -187,7 +197,7 @@ export async function ${routerFunctionName}<TCtx = unknown, TPrisma = any>(
187
197
  MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
188
198
  MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
189
199
  config,
190
- { format: 'json' },
200
+ { format: 'json', writeStrategy: WRITE_STRATEGY },
191
201
  )
192
202
  const openApiYamlSpec = openApiDisabled
193
203
  ? null
@@ -196,7 +206,7 @@ export async function ${routerFunctionName}<TCtx = unknown, TPrisma = any>(
196
206
  MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
197
207
  MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
198
208
  config,
199
- { format: 'yaml' },
209
+ { format: 'yaml', writeStrategy: WRITE_STRATEGY },
200
210
  )
201
211
 
202
212
  const qbEnabled = isQueryBuilderEnabled(config)
@@ -212,6 +222,10 @@ export async function ${routerFunctionName}<TCtx = unknown, TPrisma = any>(
212
222
  }
213
223
  }
214
224
 
225
+ fastify.addHook('onRequest', async (request: FastifyRequest) => {
226
+ (request as FastifyExtended & { findManyPaginatedMode?: FindManyPaginatedMode }).findManyPaginatedMode = FIND_MANY_PAGINATED_MODE
227
+ })
228
+
215
229
  fastify.setErrorHandler((error: FastifyError, _request: FastifyRequest, reply: FastifyReply) => {
216
230
  const e = error as { status?: number; statusCode?: number; message?: string }
217
231
  const status = e.status ?? e.statusCode ?? 500
@@ -1 +1 @@
1
- {"version":3,"file":"generateRouterFastify.js","sourceRoot":"","sources":["../../src/generators/generateRouterFastify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateRouterFastify.js","sourceRoot":"","sources":["../../src/generators/generateRouterFastify.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,11 @@
1
1
  import { DMMF } from '@prisma/generator-helper';
2
2
  import { ImportStyle } from '../utils/resolveImportStyle';
3
- export declare function generateHonoRouterFunction({ model, enums, guardShapesImport, importStyle, }: {
3
+ import { WriteStrategy, FindManyPaginatedMode } from '../constants';
4
+ export declare function generateHonoRouterFunction({ model, enums, guardShapesImport, importStyle, writeStrategy, findManyPaginatedMode, }: {
4
5
  model: DMMF.Model;
5
6
  enums: DMMF.DatamodelEnum[];
6
7
  guardShapesImport: string | null;
7
8
  importStyle: ImportStyle;
9
+ writeStrategy: WriteStrategy;
10
+ findManyPaginatedMode: FindManyPaginatedMode;
8
11
  }): string;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateHonoRouterFunction = generateHonoRouterFunction;
4
4
  const generateRouteConfigType_1 = require("./generateRouteConfigType");
5
5
  const importExt_1 = require("../utils/importExt");
6
- function generateHonoRouterFunction({ model, enums, guardShapesImport, importStyle, }) {
6
+ function generateHonoRouterFunction({ model, enums, guardShapesImport, importStyle, writeStrategy, findManyPaginatedMode, }) {
7
7
  const ext = (0, importExt_1.importExt)(importStyle);
8
8
  const modelName = model.name;
9
9
  const modelNameLower = modelName.toLowerCase();
@@ -57,15 +57,26 @@ import type {
57
57
  HonoEnvBase,
58
58
  HonoInternalVariables,
59
59
  GeneratedHonoEnv,
60
+ WriteStrategy,
61
+ FindManyPaginatedMode,
62
+ PaginationConfig,
60
63
  } from '../routeConfig.target${ext}'
61
64
  import { parseQueryParams } from '../parseQueryParams${ext}'
62
65
  import { sanitizeKeys, normalizePrefix, getEnv } from '../misc${ext}'
63
66
  import { buildModelOpenApi } from '../buildModelOpenApi${ext}'
64
- import { mapError, transformResult, type OperationContext } from '../operationRuntime${ext}'
67
+ import {
68
+ mapError,
69
+ transformResult,
70
+ mergePaginationConfig,
71
+ type OperationContext,
72
+ } from '../operationRuntime${ext}'
65
73
 
66
74
  ${(0, generateRouteConfigType_1.generateRouteConfigType)(modelName, 'HonoHookHandler', guardShapesImport, importStyle, 'hono')}
67
75
  const _env = getEnv()
68
76
 
77
+ const WRITE_STRATEGY: WriteStrategy = '${writeStrategy}'
78
+ const FIND_MANY_PAGINATED_MODE: FindManyPaginatedMode = '${findManyPaginatedMode}'
79
+
69
80
  const MODEL_FIELDS = ${JSON.stringify(fieldsMeta, null, 2)} as const
70
81
 
71
82
  const MODEL_ENUMS = ${JSON.stringify(enumsMeta, null, 2)} as const
@@ -74,6 +85,7 @@ type OperationConfigLike<TEnv extends HonoEnvBase> = {
74
85
  before?: HonoHookHandler<TEnv>[]
75
86
  after?: HonoHookHandler<TEnv>[]
76
87
  shape?: Record<string, unknown>
88
+ pagination?: Partial<PaginationConfig>
77
89
  }
78
90
 
79
91
  const defaultOpConfig = Object.freeze({
@@ -81,7 +93,7 @@ const defaultOpConfig = Object.freeze({
81
93
  after: Object.freeze([]),
82
94
  }) as unknown as OperationConfigLike<HonoEnvBase>
83
95
 
84
- type HandlerContext = Context<{ Variables: HonoInternalVariables }>
96
+ type HandlerContext = Context<{ Variables: HonoInternalVariables & { findManyPaginatedMode?: FindManyPaginatedMode } }>
85
97
 
86
98
  function isQueryBuilderEnabled(config: RouteConfig): boolean {
87
99
  if (config.queryBuilder === false) return false
@@ -134,10 +146,11 @@ function makeShapeMiddleware<TCtx, TPrisma, TEnv extends HonoEnvBase>(
134
146
  opConfig: OperationConfigLike<TEnv>,
135
147
  ) {
136
148
  return (c: Context<GeneratedHonoEnv<TEnv>>): void => {
137
- const paginationConfig = (config as { pagination?: OperationContext['paginationConfig'] }).pagination
138
- if (paginationConfig) {
139
- c.set('routeConfig', { pagination: paginationConfig })
149
+ const merged = mergePaginationConfig(config.pagination, opConfig.pagination)
150
+ if (merged) {
151
+ c.set('routeConfig', { pagination: merged })
140
152
  }
153
+ ;(c as unknown as HandlerContext).set('findManyPaginatedMode', FIND_MANY_PAGINATED_MODE)
141
154
  const headerName = config.guard?.variantHeader || 'x-api-variant'
142
155
  const headerValue = c.req.header(headerName)
143
156
  const caller = config.guard?.resolveVariant?.(c) ?? headerValue ?? undefined
@@ -208,7 +221,7 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any, TEnv extend
208
221
  MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
209
222
  MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
210
223
  config as RouteConfig,
211
- { format: 'json' },
224
+ { format: 'json', writeStrategy: WRITE_STRATEGY },
212
225
  )
213
226
  const openApiYamlSpec = openApiDisabled
214
227
  ? null
@@ -217,7 +230,7 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any, TEnv extend
217
230
  MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
218
231
  MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
219
232
  config as RouteConfig,
220
- { format: 'yaml' },
233
+ { format: 'yaml', writeStrategy: WRITE_STRATEGY },
221
234
  )
222
235
 
223
236
  if (isQueryBuilderEnabled(config as RouteConfig)) {
@@ -254,17 +267,17 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any, TEnv extend
254
267
  parseFn: (c: HandlerContext) => Promise<void>,
255
268
  ) => async (c: Context<GeneratedHonoEnv<TEnv>>): Promise<Response> => {
256
269
  try {
257
- await parseFn(c)
270
+ await parseFn(c as unknown as HandlerContext)
258
271
  makeShapeMiddleware<TCtx, TPrisma, TEnv>(config, opConfig)(c)
259
272
  const { before = [], after = [] } = opConfig
260
273
  const beforeResp = await runHooks<TEnv>(before, c)
261
274
  if (beforeResp) return beforeResp
262
- await handlerFn(c)
275
+ await handlerFn(c as unknown as HandlerContext)
263
276
  const afterResp = await runHooks<TEnv>(after, c)
264
277
  if (afterResp) return afterResp
265
- return sendResult(c)
278
+ return sendResult(c as unknown as HandlerContext)
266
279
  } catch (error: unknown) {
267
- return sendError(c, error)
280
+ return sendError(c as unknown as HandlerContext, error)
268
281
  }
269
282
  }
270
283
 
@@ -273,17 +286,17 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any, TEnv extend
273
286
  handlerFn: (c: HandlerContext) => Promise<void>,
274
287
  ) => async (c: Context<GeneratedHonoEnv<TEnv>>): Promise<Response> => {
275
288
  try {
276
- await parseWriteBodyMiddleware(c)
289
+ await parseWriteBodyMiddleware(c as unknown as HandlerContext)
277
290
  makeShapeMiddleware<TCtx, TPrisma, TEnv>(config, opConfig)(c)
278
291
  const { before = [], after = [] } = opConfig
279
292
  const beforeResp = await runHooks<TEnv>(before, c)
280
293
  if (beforeResp) return beforeResp
281
- await handlerFn(c)
294
+ await handlerFn(c as unknown as HandlerContext)
282
295
  const afterResp = await runHooks<TEnv>(after, c)
283
296
  if (afterResp) return afterResp
284
- return sendResult(c)
297
+ return sendResult(c as unknown as HandlerContext)
285
298
  } catch (error: unknown) {
286
- return sendError(c, error)
299
+ return sendError(c as unknown as HandlerContext, error)
287
300
  }
288
301
  }
289
302
 
@@ -1 +1 @@
1
- {"version":3,"file":"generateRouterHono.js","sourceRoot":"","sources":["../../src/generators/generateRouterHono.ts"],"names":[],"mappings":";;AAKA,gEA4ZC;AAhaD,uEAAmE;AAEnE,kDAA8C;AAE9C,SAAgB,0BAA0B,CAAC,EACzC,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,WAAW,GAMZ;IACC,MAAM,GAAG,GAAG,IAAA,qBAAS,EAAC,WAAW,CAAC,CAAA;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,CAAA;IAC9C,MAAM,kBAAkB,GAAG,GAAG,SAAS,QAAQ,CAAA;IAE/C,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,eAAe,EAAE,CAAC,CAAC,eAAe;QAClC,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,KAAK;QACnC,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,kBAAkB,EAAE,CAAC,CAAC,kBAAkB;KACzC,CAAC,CAAC,CAAA;IAEH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACjE,CAAA;IAED,MAAM,SAAS,GAAG,KAAK;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC9C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;KAChD,CAAC,CAAC,CAAA;IAEL,OAAO;;;;oDAI2C,GAAG;;IAEnD,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;YACD,SAAS,WAAW,GAAG;;;;;;;+BAOJ,GAAG;uDACqB,GAAG;gEACM,GAAG;yDACV,GAAG;uFAC2B,GAAG;;EAExF,IAAA,iDAAuB,EAAC,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,CAAC;;;uBAGxE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;;sBAEpC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA8D5C,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAwDH,kBAAkB,mFAAmF,SAAS;;;;4DAIpE,cAAc;;;;;;;;;;;;;;WAc/D,SAAS;;;;;;;;;WAST,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA0Ee,SAAS;;;;;;;;yCAQH,SAAS;gEACc,SAAS;;;;;yCAKhC,SAAS;gEACc,SAAS;;;;;yCAKhC,SAAS;gEACc,SAAS;;;;;yCAKhC,SAAS;gEACc,SAAS;;;;;yCAKhC,SAAS;gEACc,SAAS;;;;;yCAKhC,SAAS;gEACc,SAAS;;;;;yCAKhC,SAAS;gEACc,SAAS;;;;;yCAKhC,SAAS;gEACc,SAAS;;;;;yCAKhC,SAAS;;;gDAGF,SAAS;;;;;;;2CAOd,SAAS;;;;;2CAKT,SAAS;;;;;2CAKT,SAAS;;;;;0CAKV,SAAS;;;;;0CAKT,SAAS;;;;;0CAKT,SAAS;;;;;4CAKP,SAAS;;;;;6CAKR,SAAS;;;;;6CAKT,SAAS;;;;;CAKrD,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"generateRouterHono.js","sourceRoot":"","sources":["../../src/generators/generateRouterHono.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { DMMF } from '@prisma/generator-helper';
2
- import { Target } from '../constants';
2
+ import { Target, WriteStrategy } from '../constants';
3
3
  import { ImportStyle } from '../utils/resolveImportStyle';
4
4
  export declare function generateScalarUIHandler(options: {
5
5
  model: DMMF.Model;
6
6
  enums: DMMF.DatamodelEnum[];
7
7
  target?: Target;
8
8
  importStyle: ImportStyle;
9
+ writeStrategy: WriteStrategy;
9
10
  }): string;
@@ -49,7 +49,7 @@ function generateExpressDocsExport(modelName) {
49
49
  MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
50
50
  MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
51
51
  config,
52
- { format: 'yaml' }
52
+ { format: 'yaml', writeStrategy: WRITE_STRATEGY }
53
53
  )
54
54
  return res.type('application/yaml').send(yaml as string)
55
55
  }
@@ -59,7 +59,7 @@ function generateExpressDocsExport(modelName) {
59
59
  MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
60
60
  MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
61
61
  config,
62
- { format: 'json' }
62
+ { format: 'json', writeStrategy: WRITE_STRATEGY }
63
63
  )
64
64
 
65
65
  if (ui === 'json') return res.json(spec)
@@ -70,7 +70,7 @@ function generateExpressDocsExport(modelName) {
70
70
  return res.type('html').send(renderScalar('${modelName}', spec, pageTitle, config.scalarCdnUrl))
71
71
  }
72
72
 
73
- const html = renderDocs('${modelName}', config, MODEL_CONTEXT)
73
+ const html = renderDocs('${modelName}', config, MODEL_CONTEXT, WRITE_STRATEGY)
74
74
  return res.type('html').send(html)
75
75
  }
76
76
  }`;
@@ -99,7 +99,7 @@ function generateFastifyDocsExport(modelName) {
99
99
  MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
100
100
  MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
101
101
  config,
102
- { format: 'yaml' }
102
+ { format: 'yaml', writeStrategy: WRITE_STRATEGY }
103
103
  )
104
104
  reply.type('application/yaml').send(yaml as string); return
105
105
  }
@@ -109,7 +109,7 @@ function generateFastifyDocsExport(modelName) {
109
109
  MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
110
110
  MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
111
111
  config,
112
- { format: 'json' }
112
+ { format: 'json', writeStrategy: WRITE_STRATEGY }
113
113
  )
114
114
 
115
115
  if (ui === 'json') { reply.send(spec); return }
@@ -120,7 +120,7 @@ function generateFastifyDocsExport(modelName) {
120
120
  reply.type('text/html').send(renderScalar('${modelName}', spec, pageTitle, config.scalarCdnUrl)); return
121
121
  }
122
122
 
123
- const html = renderDocs('${modelName}', config, MODEL_CONTEXT)
123
+ const html = renderDocs('${modelName}', config, MODEL_CONTEXT, WRITE_STRATEGY)
124
124
  reply.type('text/html').send(html)
125
125
  }
126
126
  }`;
@@ -148,7 +148,7 @@ function generateHonoDocsExport(modelName) {
148
148
  MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
149
149
  MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
150
150
  config,
151
- { format: 'yaml' }
151
+ { format: 'yaml', writeStrategy: WRITE_STRATEGY }
152
152
  ) as string
153
153
  return c.body(yaml, 200, { 'Content-Type': 'application/yaml' })
154
154
  }
@@ -158,7 +158,7 @@ function generateHonoDocsExport(modelName) {
158
158
  MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
159
159
  MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
160
160
  config,
161
- { format: 'json' }
161
+ { format: 'json', writeStrategy: WRITE_STRATEGY }
162
162
  )
163
163
 
164
164
  if (ui === 'json') return c.json(spec as Record<string, unknown>)
@@ -169,13 +169,13 @@ function generateHonoDocsExport(modelName) {
169
169
  return c.html(renderScalar('${modelName}', spec, pageTitle, config.scalarCdnUrl))
170
170
  }
171
171
 
172
- const html = renderDocs('${modelName}', config, MODEL_CONTEXT)
172
+ const html = renderDocs('${modelName}', config, MODEL_CONTEXT, WRITE_STRATEGY)
173
173
  return c.html(html)
174
174
  }
175
175
  }`;
176
176
  }
177
177
  function generateScalarUIHandler(options) {
178
- const { model, enums } = options;
178
+ const { model, enums, writeStrategy } = options;
179
179
  const target = options.target || 'express';
180
180
  const ext = (0, importExt_1.importExt)(options.importStyle);
181
181
  const modelName = model.name;
@@ -229,6 +229,7 @@ function generateScalarUIHandler(options) {
229
229
  : generateExpressDocsExport(modelName);
230
230
  return `${frameworkImport}
231
231
  import { buildModelOpenApi } from '../buildModelOpenApi${ext}'
232
+ import type { WriteStrategy } from '../routeConfig${ext}'
232
233
  import {
233
234
  renderDocs,
234
235
  renderScalar,
@@ -242,6 +243,8 @@ import {
242
243
  type DocsModelContext,
243
244
  } from '../docsRenderer${ext}'
244
245
 
246
+ const WRITE_STRATEGY: WriteStrategy = '${writeStrategy}'
247
+
245
248
  export const MODEL_FIELDS: FieldMeta[] = ${JSON.stringify(fieldsMeta, null, 2)}
246
249
 
247
250
  export const MODEL_ENUMS: EnumMeta[] = ${JSON.stringify(enumsMeta, null, 2)}
@@ -1 +1 @@
1
- {"version":3,"file":"generateUnifiedScalarUI.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedScalarUI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateUnifiedScalarUI.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedScalarUI.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -28,6 +28,30 @@ function getTarget(options) {
28
28
  return raw;
29
29
  throw new Error(`Invalid target "${raw}". Expected "express", "fastify", or "hono".`);
30
30
  }
31
+ function getWriteStrategy(options) {
32
+ const raw = String(options.generator.config.writeStrategy ?? 'regular');
33
+ const lower = raw.toLowerCase();
34
+ if (lower === 'regular')
35
+ return 'regular';
36
+ if (lower === 'throwonnonreturning')
37
+ return 'throwOnNonReturning';
38
+ if (lower === 'throwonregular') {
39
+ console.warn('[prisma-generator-express] writeStrategy="throwOnRegular" is deprecated. Use "throwOnNonReturning" instead.');
40
+ return 'throwOnNonReturning';
41
+ }
42
+ if (lower === 'forcereturn')
43
+ return 'forceReturn';
44
+ throw new Error(`Invalid writeStrategy "${raw}". Expected "regular", "throwOnNonReturning", or "forceReturn".`);
45
+ }
46
+ function getFindManyPaginatedMode(options) {
47
+ const raw = String(options.generator.config.findManyPaginatedMode ?? 'promiseAll');
48
+ const lower = raw.toLowerCase();
49
+ if (lower === 'transaction')
50
+ return 'transaction';
51
+ if (lower === 'promiseall')
52
+ return 'promiseAll';
53
+ throw new Error(`Invalid findManyPaginatedMode "${raw}". Expected "transaction" or "promiseAll".`);
54
+ }
31
55
  function validateClientGeneratorPresent(options) {
32
56
  (0, generateImportPrismaStatement_1.getRelativeClientPath)(options, options.dmmf.datamodel.models[0]?.name ?? 'Model');
33
57
  }
@@ -41,6 +65,8 @@ function validateClientGeneratorPresent(options) {
41
65
  },
42
66
  async onGenerate(options) {
43
67
  const target = getTarget(options);
68
+ const writeStrategy = getWriteStrategy(options);
69
+ const findManyPaginatedMode = getFindManyPaginatedMode(options);
44
70
  const hasExplicitOutput = !!options.generator.output?.fromEnvVar ||
45
71
  options.generator.config.output !== undefined;
46
72
  if (!hasExplicitOutput) {
@@ -53,6 +79,8 @@ function validateClientGeneratorPresent(options) {
53
79
  console.log(` Target: ${target}`);
54
80
  console.log(` Output: ${options.generator.output?.value}`);
55
81
  console.log(` Import style: ${importStyle}`);
82
+ console.log(` Write strategy: ${writeStrategy}`);
83
+ console.log(` findManyPaginated mode: ${findManyPaginatedMode}`);
56
84
  if (options.dmmf.datamodel.models.length > 0) {
57
85
  validateClientGeneratorPresent(options);
58
86
  }
@@ -65,15 +93,19 @@ function validateClientGeneratorPresent(options) {
65
93
  : generateUnifiedHandler_1.generateUnifiedHandler;
66
94
  const allModels = options.dmmf.datamodel.models;
67
95
  for (const model of options.dmmf.datamodel.models) {
68
- if (model.documentation &&
69
- GENERATOR_OFF_RE.test(model.documentation)) {
96
+ if (model.documentation && GENERATOR_OFF_RE.test(model.documentation)) {
70
97
  console.log(` Skipping: ${model.name} (generator off)`);
71
98
  continue;
72
99
  }
73
100
  modelNames.push(model.name);
74
101
  const guardShapesImport = (0, generateImportPrismaStatement_1.getGuardShapesImport)(options, model.name);
75
102
  await (0, writeFileSafely_1.writeFileSafely)({
76
- content: (0, generateOperationCore_1.generateModelCore)({ model: model, importStyle }),
103
+ content: (0, generateOperationCore_1.generateModelCore)({
104
+ model: model,
105
+ importStyle,
106
+ writeStrategy,
107
+ findManyPaginatedMode,
108
+ }),
77
109
  options,
78
110
  model: model,
79
111
  operation: 'Core',
@@ -90,6 +122,8 @@ function validateClientGeneratorPresent(options) {
90
122
  enums: options.dmmf.datamodel.enums,
91
123
  guardShapesImport,
92
124
  importStyle,
125
+ writeStrategy,
126
+ findManyPaginatedMode,
93
127
  })
94
128
  : target === 'hono'
95
129
  ? (0, generateRouterHono_1.generateHonoRouterFunction)({
@@ -97,12 +131,16 @@ function validateClientGeneratorPresent(options) {
97
131
  enums: options.dmmf.datamodel.enums,
98
132
  guardShapesImport,
99
133
  importStyle,
134
+ writeStrategy,
135
+ findManyPaginatedMode,
100
136
  })
101
137
  : (0, generateRouter_1.generateRouterFunction)({
102
138
  model: model,
103
139
  enums: options.dmmf.datamodel.enums,
104
140
  guardShapesImport,
105
141
  importStyle,
142
+ writeStrategy,
143
+ findManyPaginatedMode,
106
144
  });
107
145
  await (0, writeFileSafely_1.writeFileSafely)({
108
146
  content: routerContent,
@@ -116,6 +154,7 @@ function validateClientGeneratorPresent(options) {
116
154
  enums: options.dmmf.datamodel.enums,
117
155
  target,
118
156
  importStyle,
157
+ writeStrategy,
119
158
  }),
120
159
  options,
121
160
  model: model,