prisma-generator-express 1.62.3 → 1.63.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.
@@ -56,7 +56,7 @@ function emitReadOp(meta, modelName) {
56
56
  : ` if (postReadsEnabled) instance.post(path, handleRead(opConfig, ${handlerName}, parseBodyAsQueryHook, '${opKind}'))`
57
57
  : '';
58
58
  return ` if (isEnabled(config.${meta.configKey})) {
59
- const opConfig: OperationConfigLike = (config.${meta.configKey} as OperationConfigLike | undefined) ?? defaultOpConfig
59
+ const opConfig = opFor('${meta.configKey}')
60
60
  const path = ${pathValue}
61
61
  instance.get(path, handleRead(opConfig, ${handlerName}, parseQueryHook, '${opKind}'))
62
62
  ${postReadLine}
@@ -68,7 +68,7 @@ function emitWriteOp(meta, modelName) {
68
68
  const pathValue = pathExpr(meta.pathSuffix);
69
69
  const opKind = opKindFor(meta.name);
70
70
  return ` if (isEnabled(config.${meta.configKey})) {
71
- const opConfig: OperationConfigLike = (config.${meta.configKey} as OperationConfigLike | undefined) ?? defaultOpConfig
71
+ const opConfig = opFor('${meta.configKey}')
72
72
  const path = ${pathValue}
73
73
  instance.${meta.method}(path, handleWrite(opConfig, ${handlerName}, '${opKind}'))
74
74
  }`;
@@ -100,10 +100,19 @@ import type {
100
100
  import { parseQueryParams } from '../parseQueryParams${ext}'
101
101
  import { sanitizeKeys, normalizePrefix, getEnv, isPlainObject } from '../misc${ext}'
102
102
  import { buildModelOpenApi } from '../buildModelOpenApi${ext}'
103
- import { validateCountSourceWhere } from '../routeConfig${ext}'
103
+ import {
104
+ normalizeOperation,
105
+ resolveOperationVariantKey,
106
+ validateCountSourceWhere,
107
+ validateOperationConfig,
108
+ validateUpdateEachConfig,
109
+ } from '../routeConfig${ext}'
110
+ import type { NormalizedOperationConfig } from '../routeConfig${ext}'
104
111
  import type { OperationContext } from '../operationRuntime${ext}'
105
112
  import { transformResult } from '../operationRuntime${ext}'
106
113
  import { HttpError, mapError } from '../errorMapper${ext}'
114
+ import { formatGuardVariantResolutionError } from '../guardVariantError${ext}'
115
+ import type { GuardVariantResolution } from '../guardVariantRouting${ext}'
107
116
  import { mergePaginationConfig } from '../pagination${ext}'
108
117
  import { applyDroppedGuard } from '../projectionDefaults${ext}'
109
118
  import type { OpKind } from '../projectionDefaults${ext}'
@@ -118,10 +127,23 @@ const DROP_GUARD = ${dropGuard} || _env.E2E === 'true'
118
127
  type OperationConfigLike = {
119
128
  before?: FastifyHookHandler[]
120
129
  after?: FastifyHookHandler[]
121
- shape?: Record<string, unknown>
130
+ shape?: unknown
131
+ variants?: Record<
132
+ string,
133
+ {
134
+ shape?: unknown
135
+ before?: FastifyHookHandler[]
136
+ after?: FastifyHookHandler[]
137
+ }
138
+ >
122
139
  pagination?: Partial<PaginationConfig>
123
140
  }
124
141
 
142
+ type NormalizedOp = NormalizedOperationConfig<
143
+ FastifyHookHandler,
144
+ FastifyHookHandler
145
+ >
146
+
125
147
  type FastifyExtended = FastifyRequest & {
126
148
  prisma?: unknown
127
149
  postgres?: unknown
@@ -130,14 +152,17 @@ type FastifyExtended = FastifyRequest & {
130
152
  routeConfig?: { pagination?: PaginationConfig }
131
153
  guardShape?: Record<string, unknown>
132
154
  guardCaller?: string
155
+ guardVariantKey?: string
156
+ guardVariantFailure?: Extract<GuardVariantResolution, { ok: false }>
133
157
  resultData?: unknown
134
158
  resultStatus?: number
135
159
  }
136
160
 
137
- const defaultOpConfig: OperationConfigLike = Object.freeze({
138
- before: Object.freeze([]) as unknown as FastifyHookHandler[],
139
- after: Object.freeze([]) as unknown as FastifyHookHandler[],
140
- })
161
+ function normalizeFastifyOperation(
162
+ config: OperationConfigLike | undefined,
163
+ ): NormalizedOp {
164
+ return normalizeOperation<FastifyHookHandler, FastifyHookHandler>(config)
165
+ }
141
166
 
142
167
  function isQueryBuilderEnabled(config: RouteConfig): boolean {
143
168
  if (config.queryBuilder === false) return false
@@ -177,7 +202,7 @@ function buildResolveContext(
177
202
 
178
203
  function makeShapeHook(
179
204
  config: ${modelName}RouteConfig,
180
- opConfig: OperationConfigLike,
205
+ opConfig: NormalizedOp,
181
206
  opKind: OpKind,
182
207
  ): (request: FastifyRequest) => Promise<void> {
183
208
  return async (request: FastifyRequest) => {
@@ -190,15 +215,27 @@ function makeShapeHook(
190
215
  const caller = config.guard?.resolveVariant?.(request)
191
216
  ?? (Array.isArray(headerValue) ? headerValue[0] : headerValue)
192
217
  ?? undefined
193
- if (caller) fx.guardCaller = caller
218
+ if (typeof caller === 'string') fx.guardCaller = caller
219
+
220
+ const resolution = resolveOperationVariantKey(opConfig.guardRouting, caller)
221
+ if (!resolution.ok) {
222
+ fx.guardVariantFailure = resolution
223
+ return
224
+ }
225
+
226
+ const resolvedKey =
227
+ opConfig.guardRouting.kind === 'named'
228
+ ? resolution.key
229
+ : undefined
230
+ if (resolvedKey !== undefined) fx.guardVariantKey = resolvedKey
194
231
 
195
- if (opConfig.shape) {
232
+ if (opConfig.guardShape) {
196
233
  if (!DROP_GUARD) {
197
- fx.guardShape = opConfig.shape
234
+ fx.guardShape = opConfig.guardShape
198
235
  } else {
199
236
  await applyDroppedGuard(
200
- opConfig.shape,
201
- caller,
237
+ opConfig.guardShape,
238
+ resolvedKey,
202
239
  buildResolveContext(config, request),
203
240
  opKind,
204
241
  {
@@ -224,7 +261,7 @@ function makeShapeHook(
224
261
  }
225
262
 
226
263
  async function runHooks(
227
- hooks: FastifyHookHandler[],
264
+ hooks: readonly FastifyHookHandler[],
228
265
  request: FastifyRequest,
229
266
  reply: FastifyReply,
230
267
  ): Promise<boolean> {
@@ -265,6 +302,12 @@ export async function ${routerFunctionName}<TCtx = unknown, TPrisma = any>(
265
302
  await fastify.register(async (instance) => {
266
303
  const isEnabled = (value: unknown): boolean => value !== false && !!(config.enableAll || value)
267
304
 
305
+ const opFor = (key: string): NormalizedOp => {
306
+ const raw = (config as unknown as Record<string, unknown>)[key] as OperationConfigLike | undefined
307
+ validateOperationConfig(raw, '${modelName}.' + key)
308
+ return normalizeFastifyOperation(raw)
309
+ }
310
+
268
311
  const customPrefix = normalizePrefix(config.customUrlPrefix || '')
269
312
  const modelPrefix = config.addModelPrefix !== false ? '/${modelNameLower}' : ''
270
313
  const basePath = customPrefix + modelPrefix
@@ -342,7 +385,7 @@ export async function ${routerFunctionName}<TCtx = unknown, TPrisma = any>(
342
385
  }
343
386
 
344
387
  const handleRead = (
345
- opConfig: OperationConfigLike,
388
+ opConfig: NormalizedOp,
346
389
  handlerFn: (req: FastifyRequest, reply: FastifyReply) => Promise<void>,
347
390
  parseFn: (req: FastifyRequest) => void,
348
391
  opKind: OpKind,
@@ -350,10 +393,24 @@ export async function ${routerFunctionName}<TCtx = unknown, TPrisma = any>(
350
393
  try {
351
394
  parseFn(request)
352
395
  await makeShapeHook(config, opConfig, opKind)(request)
353
- const { before = [], after = [] } = opConfig
354
- if (await runHooks(before, request, reply)) return
396
+ if (await runHooks(opConfig.operationBefore, request, reply)) return
397
+
398
+ const fx = request as FastifyExtended
399
+ if (fx.guardVariantFailure) {
400
+ throw new HttpError(
401
+ 400,
402
+ formatGuardVariantResolutionError(fx.guardVariantFailure),
403
+ )
404
+ }
405
+
406
+ const key = fx.guardVariantKey
407
+ const variantHooks =
408
+ key !== undefined ? opConfig.variantHooks[key] : undefined
409
+
410
+ if (await runHooks(variantHooks?.before ?? [], request, reply)) return
355
411
  await handlerFn(request, reply)
356
- if (await runHooks(after, request, reply)) return
412
+ if (await runHooks(variantHooks?.after ?? [], request, reply)) return
413
+ if (await runHooks(opConfig.operationAfter, request, reply)) return
357
414
  sendResult(request, reply)
358
415
  } catch (error: unknown) {
359
416
  sendError(reply, error)
@@ -361,16 +418,30 @@ export async function ${routerFunctionName}<TCtx = unknown, TPrisma = any>(
361
418
  }
362
419
 
363
420
  const handleWrite = (
364
- opConfig: OperationConfigLike,
421
+ opConfig: NormalizedOp,
365
422
  handlerFn: (req: FastifyRequest, reply: FastifyReply) => Promise<void>,
366
423
  opKind: OpKind,
367
424
  ) => async (request: FastifyRequest, reply: FastifyReply) => {
368
425
  try {
369
426
  await makeShapeHook(config, opConfig, opKind)(request)
370
- const { before = [], after = [] } = opConfig
371
- if (await runHooks(before, request, reply)) return
427
+ if (await runHooks(opConfig.operationBefore, request, reply)) return
428
+
429
+ const fx = request as FastifyExtended
430
+ if (fx.guardVariantFailure) {
431
+ throw new HttpError(
432
+ 400,
433
+ formatGuardVariantResolutionError(fx.guardVariantFailure),
434
+ )
435
+ }
436
+
437
+ const key = fx.guardVariantKey
438
+ const variantHooks =
439
+ key !== undefined ? opConfig.variantHooks[key] : undefined
440
+
441
+ if (await runHooks(variantHooks?.before ?? [], request, reply)) return
372
442
  await handlerFn(request, reply)
373
- if (await runHooks(after, request, reply)) return
443
+ if (await runHooks(variantHooks?.after ?? [], request, reply)) return
444
+ if (await runHooks(opConfig.operationAfter, request, reply)) return
374
445
  sendResult(request, reply)
375
446
  } catch (error: unknown) {
376
447
  sendError(reply, error)
@@ -382,8 +453,10 @@ ${readOpBlocks}
382
453
  ${writeOpBlocks}
383
454
 
384
455
  if (config.updateEach) {
385
- const opConfig: OperationConfigLike = (config.updateEach as OperationConfigLike | undefined) ?? defaultOpConfig
386
- if ((!opConfig.before || opConfig.before.length === 0) && _env.NODE_ENV !== 'production') {
456
+ const rawUpdateEach = config.updateEach as unknown as OperationConfigLike
457
+ validateUpdateEachConfig(rawUpdateEach, '${modelName}.updateEach')
458
+ const opConfig = normalizeFastifyOperation(rawUpdateEach)
459
+ if (opConfig.operationBefore.length === 0 && _env.NODE_ENV !== 'production') {
387
460
  console.warn(
388
461
  '[${modelName}Router] updateEach is enabled without a before hook. ' +
389
462
  'This endpoint bypasses guard shapes and should be protected by authentication middleware.',
@@ -396,10 +469,9 @@ ${writeOpBlocks}
396
469
  throw new HttpError(400, 'updateEach body must be an array of { where, data } items')
397
470
  }
398
471
  await makeShapeHook(config, opConfig, 'noop')(request)
399
- const { before = [], after = [] } = opConfig
400
- if (await runHooks(before, request, reply)) return
472
+ if (await runHooks(opConfig.operationBefore, request, reply)) return
401
473
  await ${modelName}UpdateEach(request, reply)
402
- if (await runHooks(after, request, reply)) return
474
+ if (await runHooks(opConfig.operationAfter, request, reply)) return
403
475
  sendResult(request, reply)
404
476
  } catch (error: unknown) {
405
477
  sendError(reply, error)
@@ -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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"}
@@ -105,9 +105,17 @@ import type {
105
105
  import { parseQueryParams } from '../parseQueryParams${ext}'
106
106
  import { normalizePrefix, getEnv, sanitizeKeys, isPlainObject } from '../misc${ext}'
107
107
  import { buildModelOpenApi } from '../buildModelOpenApi${ext}'
108
- import { validateCountSourceWhere } from '../routeConfig${ext}'
108
+ import {
109
+ normalizeOperation,
110
+ resolveOperationVariantKey,
111
+ validateCountSourceWhere,
112
+ validateOperationConfig,
113
+ validateUpdateEachConfig,
114
+ } from '../routeConfig${ext}'
115
+ import type { NormalizedOperationConfig } from '../routeConfig${ext}'
109
116
  import { transformResult } from '../operationRuntime${ext}'
110
117
  import { mapError } from '../errorMapper${ext}'
118
+ import { formatGuardVariantResolutionError } from '../guardVariantError${ext}'
111
119
  import { mergePaginationConfig } from '../pagination${ext}'
112
120
  import { applyDroppedGuard } from '../projectionDefaults${ext}'
113
121
  import type { OpKind } from '../projectionDefaults${ext}'
@@ -129,14 +137,28 @@ type JsonLike =
129
137
  type OperationConfigLike<TEnv extends HonoEnvBase> = {
130
138
  before?: HonoBeforeHook<TEnv>[]
131
139
  after?: HonoAfterHook<TEnv>[]
132
- shape?: Record<string, unknown>
140
+ shape?: unknown
141
+ variants?: Record<
142
+ string,
143
+ {
144
+ shape?: unknown
145
+ before?: HonoBeforeHook<TEnv>[]
146
+ after?: HonoAfterHook<TEnv>[]
147
+ }
148
+ >
133
149
  pagination?: Partial<PaginationConfig>
134
150
  }
135
151
 
136
- const defaultOpConfig = Object.freeze({
137
- before: Object.freeze([]),
138
- after: Object.freeze([]),
139
- }) as unknown as OperationConfigLike<HonoEnvBase>
152
+ type NormalizedOp<TEnv extends HonoEnvBase> = NormalizedOperationConfig<
153
+ HonoBeforeHook<TEnv>,
154
+ HonoAfterHook<TEnv>
155
+ >
156
+
157
+ function normalizeHonoOperation<TEnv extends HonoEnvBase>(
158
+ config: OperationConfigLike<TEnv> | undefined,
159
+ ): NormalizedOp<TEnv> {
160
+ return normalizeOperation<HonoBeforeHook<TEnv>, HonoAfterHook<TEnv>>(config)
161
+ }
140
162
 
141
163
  type HandlerContext = Context<{ Variables: HonoInternalVariables }>
142
164
 
@@ -188,7 +210,7 @@ async function parseUpdateEachBodyMiddleware(c: HandlerContext): Promise<void> {
188
210
 
189
211
  function makeShapeMiddleware<TCtx, TPrisma, TEnv extends HonoEnvBase>(
190
212
  config: ${modelName}RouteConfig<TCtx, TPrisma, TEnv>,
191
- opConfig: OperationConfigLike<TEnv>,
213
+ opConfig: NormalizedOp<TEnv>,
192
214
  opKind: OpKind,
193
215
  ) {
194
216
  return async (c: Context<GeneratedHonoEnv<TEnv>>): Promise<void> => {
@@ -198,19 +220,31 @@ function makeShapeMiddleware<TCtx, TPrisma, TEnv extends HonoEnvBase>(
198
220
  const headerName = config.guard?.variantHeader || 'x-api-variant'
199
221
  const headerValue = c.req.header(headerName)
200
222
  const caller = config.guard?.resolveVariant?.(c) ?? headerValue ?? undefined
201
- if (caller) c.set('guardCaller', caller)
223
+ if (typeof caller === 'string') c.set('guardCaller', caller)
224
+
225
+ const resolution = resolveOperationVariantKey(opConfig.guardRouting, caller)
226
+ if (!resolution.ok) {
227
+ c.set('guardVariantFailure', resolution)
228
+ return
229
+ }
230
+
231
+ const resolvedKey =
232
+ opConfig.guardRouting.kind === 'named'
233
+ ? resolution.key
234
+ : undefined
235
+ if (resolvedKey !== undefined) c.set('guardVariantKey', resolvedKey)
202
236
 
203
- if (opConfig.shape) {
237
+ if (opConfig.guardShape) {
204
238
  if (!DROP_GUARD) {
205
- c.set('guardShape', opConfig.shape)
239
+ c.set('guardShape', opConfig.guardShape)
206
240
  } else {
207
241
  const resolveCtx = typeof config.resolveContext === 'function'
208
242
  ? () => (config.resolveContext as (ctx: Context<GeneratedHonoEnv<TEnv>>) => unknown | Promise<unknown>)(c)
209
243
  : undefined
210
244
 
211
245
  await applyDroppedGuard(
212
- opConfig.shape,
213
- caller,
246
+ opConfig.guardShape,
247
+ resolvedKey,
214
248
  resolveCtx,
215
249
  opKind,
216
250
  {
@@ -242,7 +276,7 @@ function makeShapeMiddleware<TCtx, TPrisma, TEnv extends HonoEnvBase>(
242
276
  }
243
277
 
244
278
  async function runBeforeHooks<TEnv extends HonoEnvBase>(
245
- hooks: HonoBeforeHook<TEnv>[],
279
+ hooks: readonly HonoBeforeHook<TEnv>[],
246
280
  c: Context<GeneratedHonoEnv<TEnv>>,
247
281
  ): Promise<Response | undefined> {
248
282
  for (const hook of hooks) {
@@ -253,7 +287,7 @@ async function runBeforeHooks<TEnv extends HonoEnvBase>(
253
287
  }
254
288
 
255
289
  async function runAfterHooks<TEnv extends HonoEnvBase>(
256
- hooks: HonoAfterHook<TEnv>[],
290
+ hooks: readonly HonoAfterHook<TEnv>[],
257
291
  c: Context<GeneratedHonoEnv<TEnv>>,
258
292
  ): Promise<Response | undefined> {
259
293
  for (const hook of hooks) {
@@ -352,7 +386,7 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any, TEnv extend
352
386
  }
353
387
 
354
388
  const handleRead = (
355
- opConfig: OperationConfigLike<TEnv>,
389
+ opConfig: NormalizedOp<TEnv>,
356
390
  handlerFn: (c: HandlerContext) => Promise<void>,
357
391
  parseFn: (c: HandlerContext) => Promise<void>,
358
392
  opKind: OpKind,
@@ -360,12 +394,27 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any, TEnv extend
360
394
  try {
361
395
  await parseFn(c as unknown as HandlerContext)
362
396
  await makeShapeMiddleware<TCtx, TPrisma, TEnv>(config, opConfig, opKind)(c)
363
- const { before = [], after = [] } = opConfig
364
- const beforeResp = await runBeforeHooks<TEnv>(before, c)
365
- if (beforeResp) return beforeResp
397
+ const operationBefore = await runBeforeHooks<TEnv>(opConfig.operationBefore, c)
398
+ if (operationBefore) return operationBefore
399
+
400
+ const failure = c.get('guardVariantFailure')
401
+ if (failure) {
402
+ throw new HTTPException(400, {
403
+ message: formatGuardVariantResolutionError(failure),
404
+ })
405
+ }
406
+
407
+ const key = c.get('guardVariantKey')
408
+ const variantHooks =
409
+ key !== undefined ? opConfig.variantHooks[key] : undefined
410
+
411
+ const variantBefore = await runBeforeHooks<TEnv>(variantHooks?.before ?? [], c)
412
+ if (variantBefore) return variantBefore
366
413
  await handlerFn(c as unknown as HandlerContext)
367
- const afterResp = await runAfterHooks<TEnv>(after, c)
368
- if (afterResp) return afterResp
414
+ const variantAfter = await runAfterHooks<TEnv>(variantHooks?.after ?? [], c)
415
+ if (variantAfter) return variantAfter
416
+ const operationAfter = await runAfterHooks<TEnv>(opConfig.operationAfter, c)
417
+ if (operationAfter) return operationAfter
369
418
  return sendResult(c as unknown as HandlerContext)
370
419
  } catch (error: unknown) {
371
420
  return sendError(c as unknown as HandlerContext, error)
@@ -373,28 +422,46 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any, TEnv extend
373
422
  }
374
423
 
375
424
  const handleWrite = (
376
- opConfig: OperationConfigLike<TEnv>,
425
+ opConfig: NormalizedOp<TEnv>,
377
426
  handlerFn: (c: HandlerContext) => Promise<void>,
378
427
  opKind: OpKind,
379
428
  ) => async (c: Context<GeneratedHonoEnv<TEnv>>): Promise<Response> => {
380
429
  try {
381
430
  await parseWriteBodyMiddleware(c as unknown as HandlerContext)
382
431
  await makeShapeMiddleware<TCtx, TPrisma, TEnv>(config, opConfig, opKind)(c)
383
- const { before = [], after = [] } = opConfig
384
- const beforeResp = await runBeforeHooks<TEnv>(before, c)
385
- if (beforeResp) return beforeResp
432
+ const operationBefore = await runBeforeHooks<TEnv>(opConfig.operationBefore, c)
433
+ if (operationBefore) return operationBefore
434
+
435
+ const failure = c.get('guardVariantFailure')
436
+ if (failure) {
437
+ throw new HTTPException(400, {
438
+ message: formatGuardVariantResolutionError(failure),
439
+ })
440
+ }
441
+
442
+ const key = c.get('guardVariantKey')
443
+ const variantHooks =
444
+ key !== undefined ? opConfig.variantHooks[key] : undefined
445
+
446
+ const variantBefore = await runBeforeHooks<TEnv>(variantHooks?.before ?? [], c)
447
+ if (variantBefore) return variantBefore
386
448
  await handlerFn(c as unknown as HandlerContext)
387
- const afterResp = await runAfterHooks<TEnv>(after, c)
388
- if (afterResp) return afterResp
449
+ const variantAfter = await runAfterHooks<TEnv>(variantHooks?.after ?? [], c)
450
+ if (variantAfter) return variantAfter
451
+ const operationAfter = await runAfterHooks<TEnv>(opConfig.operationAfter, c)
452
+ if (operationAfter) return operationAfter
389
453
  return sendResult(c as unknown as HandlerContext)
390
454
  } catch (error: unknown) {
391
455
  return sendError(c as unknown as HandlerContext, error)
392
456
  }
393
457
  }
394
458
 
395
- const opFor = <K extends keyof ${modelName}RouteConfig<TCtx, TPrisma, TEnv>>(key: K): OperationConfigLike<TEnv> => {
396
- return (config[key] as unknown as OperationConfigLike<TEnv> | undefined)
397
- ?? (defaultOpConfig as OperationConfigLike<TEnv>)
459
+ const opFor = <K extends keyof ${modelName}RouteConfig<TCtx, TPrisma, TEnv>>(
460
+ key: K,
461
+ ): NormalizedOp<TEnv> => {
462
+ const raw = config[key] as unknown as OperationConfigLike<TEnv> | undefined
463
+ validateOperationConfig(raw, '${modelName}.' + String(key))
464
+ return normalizeHonoOperation(raw)
398
465
  }
399
466
 
400
467
  ${readOpBlocks}
@@ -402,8 +469,10 @@ ${readOpBlocks}
402
469
  ${writeOpBlocks}
403
470
 
404
471
  if (config.updateEach) {
405
- const opConfig = (config.updateEach as unknown as OperationConfigLike<TEnv> | undefined) ?? (defaultOpConfig as OperationConfigLike<TEnv>)
406
- if ((!opConfig.before || opConfig.before.length === 0) && _env.NODE_ENV !== 'production') {
472
+ const rawUpdateEach = config.updateEach as unknown as OperationConfigLike<TEnv>
473
+ validateUpdateEachConfig(rawUpdateEach, '${modelName}.updateEach')
474
+ const opConfig = normalizeHonoOperation(rawUpdateEach)
475
+ if (opConfig.operationBefore.length === 0 && _env.NODE_ENV !== 'production') {
407
476
  console.warn(
408
477
  '[${modelName}Router] updateEach is enabled without a before hook. ' +
409
478
  'This endpoint bypasses guard shapes and should be protected by authentication middleware.',
@@ -414,12 +483,11 @@ ${writeOpBlocks}
414
483
  try {
415
484
  await parseUpdateEachBodyMiddleware(c as unknown as HandlerContext)
416
485
  await makeShapeMiddleware<TCtx, TPrisma, TEnv>(config, opConfig, 'noop')(c)
417
- const { before = [], after = [] } = opConfig
418
- const beforeResp = await runBeforeHooks<TEnv>(before, c)
419
- if (beforeResp) return beforeResp
486
+ const beforeResponse = await runBeforeHooks<TEnv>(opConfig.operationBefore, c)
487
+ if (beforeResponse) return beforeResponse
420
488
  await ${modelName}UpdateEach(c as unknown as HandlerContext)
421
- const afterResp = await runAfterHooks<TEnv>(after, c)
422
- if (afterResp) return afterResp
489
+ const afterResponse = await runAfterHooks<TEnv>(opConfig.operationAfter, c)
490
+ if (afterResponse) return afterResponse
423
491
  return sendResult(c as unknown as HandlerContext)
424
492
  } catch (error: unknown) {
425
493
  return sendError(c as unknown as HandlerContext, error)
@@ -1 +1 @@
1
- {"version":3,"file":"generateRouterHono.js","sourceRoot":"","sources":["../../src/generators/generateRouterHono.ts"],"names":[],"mappings":";;AAkFA,gEAuXC;AAxcD,uEAAmE;AAEnE,kDAA8C;AAE9C,uEAAiE;AAEjE,SAAS,QAAQ,CAAC,MAAc;IAC9B,IAAI,CAAC,MAAM;QAAE,OAAO,iBAAiB,CAAA;IACrC,OAAO,iBAAiB,MAAM,IAAI,CAAA;AACpC,CAAC;AAED,SAAS,SAAS,CAAC,MAAc;IAC/B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY,CAAC;QAClB,KAAK,mBAAmB;YACtB,OAAO,YAAY,CAAA;QACrB,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,kBAAkB,CAAC;QACxB,KAAK,mBAAmB,CAAC;QACzB,KAAK,OAAO,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAA;QACf,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QACjB,KAAK,YAAY,CAAC;QAClB,KAAK,qBAAqB;YACxB,OAAO,YAAY,CAAA;QACrB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QACjB,KAAK,YAAY,CAAC;QAClB,KAAK,qBAAqB;YACxB,OAAO,YAAY,CAAA;QACrB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QACjB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QACjB,KAAK,YAAY;YACf,OAAO,YAAY,CAAA;QACrB;YACE,OAAO,MAAM,CAAA;IACjB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAyC,EAAE,SAAiB;IAC9E,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,WAAW,GAAG,GAAG,SAAS,GAAG,CAAC,EAAE,CAAA;IACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEnC,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB;QACxC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU;YACxB,CAAC,CAAC;;gDAEwC,WAAW,kCAAkC,MAAM;MAC7F;YACA,CAAC,CAAC,iEAAiE,WAAW,kCAAkC,MAAM,KAAK;QAC7H,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO,0BAA0B,IAAI,CAAC,SAAS;8BACnB,IAAI,CAAC,SAAS;mBACzB,SAAS;yCACa,WAAW,4BAA4B,MAAM;EACpF,YAAY;IACV,CAAA;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,IAAyC,EAAE,SAAiB;IAC/E,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,WAAW,GAAG,GAAG,SAAS,GAAG,CAAC,EAAE,CAAA;IACtC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEnC,OAAO,0BAA0B,IAAI,CAAC,SAAS;8BACnB,IAAI,CAAC,SAAS;mBACzB,SAAS;UAClB,IAAI,CAAC,MAAM,gCAAgC,WAAW,MAAM,MAAM;IACxE,CAAA;AACJ,CAAC;AAED,SAAgB,0BAA0B,CAAC,EACzC,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,SAAS,GAQV;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,cAAc,GAAG,yCAAkB;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;SAChF,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,OAAO,GAAG,yCAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;IACnE,MAAM,QAAQ,GAAG,yCAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;SACxF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;IAEzC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC9E,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEjF,OAAO;;;;;EAKP,cAAc;YACJ,SAAS,WAAW,GAAG;;;;;;;;;+BASJ,GAAG;uDACqB,GAAG;+EACqB,GAAG;yDACzB,GAAG;0DACF,GAAG;sDACP,GAAG;0CACf,GAAG;sDACS,GAAG;0DACC,GAAG;oDACT,GAAG;+CACR,SAAS,WAAW,GAAG;;EAEpE,IAAA,iDAAuB,EAAC,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,CAAC;;;qBAGzE,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAuElB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBA6FH,kBAAkB,mFAAmF,SAAS;8DAClE,SAAS;;;OAGhE,SAAS;;;;;;;;4DAQ4C,cAAc;;;;;;;;;;;;;;;WAe/D,SAAS;;;;4CAIwB,aAAa;;;;;;;;;WAS9C,SAAS;;;;4CAIwB,aAAa;;;;;;;;UAQ/C,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCA4DgB,SAAS;;;;;EAK1C,YAAY;;EAEZ,aAAa;;;;;;YAMH,SAAS;;;;;;;;;;;;gBAYL,SAAS;;;;;;;;;;;;CAYxB,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"generateRouterHono.js","sourceRoot":"","sources":["../../src/generators/generateRouterHono.ts"],"names":[],"mappings":"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"}
@@ -53,6 +53,8 @@ const SHARED_FILES = [
53
53
  'scalarTypes.ts',
54
54
  'concurrency.ts',
55
55
  'projectionDefaults.ts',
56
+ 'guardVariantRouting.ts',
57
+ 'guardVariantError.ts',
56
58
  ];
57
59
  const EXPRESS_ONLY_FILES = [
58
60
  'autoIncludePlanner.ts',
@@ -1 +1 @@
1
- {"version":3,"file":"copyFiles.js","sourceRoot":"","sources":["../../src/utils/copyFiles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkHA,8BAmDC;AApKD,uCAAwB;AACxB,2CAA4B;AAG5B,2CAAuC;AAEvC,MAAM,YAAY,GAAG;IACnB,qBAAqB;IACrB,sBAAsB;IACtB,yBAAyB;IACzB,SAAS;IACT,gBAAgB;IAChB,iBAAiB;IACjB,qBAAqB;IACrB,gBAAgB;IAChB,QAAQ;IACR,eAAe;IACf,sBAAsB;IACtB,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,uBAAuB;CACxB,CAAA;AAED,MAAM,kBAAkB,GAAG;IACzB,uBAAuB;IACvB,8BAA8B;IAC9B,uBAAuB;IACvB,8BAA8B;IAC9B,uBAAuB;CACxB,CAAA;AAQD,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;IAChE,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAA;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACpD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC5C,MAAM,IAAI,KAAK,CACb,sBAAsB,GAAG,OAAO,GAAG,iCAAiC;QACpE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAC9D,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,kBAAkB,GACtB,mGAAmG,CAAA;AAErG,MAAM,iBAAiB,GAAG,sDAAsD,CAAA;AAEhF,SAAS,cAAc,CAAC,OAAe,EAAE,KAAkB;IACzD,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,OAAO,CAAA;IACpC,MAAM,GAAG,GAAG,IAAA,qBAAS,EAAC,KAAK,CAAC,CAAA;IAC5B,IAAI,CAAC,GAAG;QAAE,OAAO,OAAO,CAAA;IACxB,OAAO,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACzE,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAA;QACtE,OAAO,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAA;IAC5C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,MAAc,EACd,OAAe,EACf,QAAgB,EAChB,WAAwB,EACxB,OAAyB;IAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3C,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,QAAQ,CAAA;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IAEjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,IAAI,OAAO,EAAE,QAAQ;YAAE,OAAO,2BAA2B,GAAG,OAAO,CAAA;QACnE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE/E,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAE/C,IAAI,OAAO,EAAE,cAAc,EAAE,CAAC;QAC5B,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE;gBAAE,SAAQ;YACzC,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,IAAI,MAAM,CAAC,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,EACnE,QAAQ,GAAG,OAAO,CAAC,EAAE,GAAG,GAAG,CAC5B,CAAA;QACH,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GACV,OAAO;QACP,iDAAiD;QACjD,2BAA2B;QAC3B,SAAS,CAAA;IAEX,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;IAE1D,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAE9C,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACnC,OAAO,IAAI,CAAA;AACb,CAAC;AAEM,KAAK,UAAU,SAAS,CAC7B,OAAyB,EACzB,MAAc,EACd,WAAwB;IAExB,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAA;IAClD,IAAI,CAAC,UAAU;QAAE,OAAM;IAEvB,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,GAAG,GAAG,CAAC,CAAA;IAEtF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QACrF,IAAI,GAAG;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;YACrF,IAAI,GAAG;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,cAAc,GAAG,MAAM,GAAG,KAAK,CAAA;IACxD,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,EAAE;QAC5E,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,uBAAuB;KACtC,CAAC,CAAA;IACF,IAAI,GAAG;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE3E,MAAM,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACjD,MAAM,SAAS,GAAG,YAAY,CAAC,YAAY,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE;QAC3F,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;KAC1D,CAAC,CAAA;IACF,IAAI,SAAS;QAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAErC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,iBAAiB,GAAG,MAAM,CAAC,MAAM,GAAG,sBAAsB;YAC1D,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACxC,gBAAgB,GAAG,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAC5D,CAAA;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAA;AACtD,CAAC"}
1
+ {"version":3,"file":"copyFiles.js","sourceRoot":"","sources":["../../src/utils/copyFiles.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "prisma-generator-express",
3
3
  "description": "Prisma generator for Express, Fastify, and Hono CRUD APIs with OpenAPI documentation",
4
- "version": "1.62.3",
4
+ "version": "1.63.0",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "MIT",
@@ -1109,6 +1109,7 @@ export function renderDocs(
1109
1109
  escapeHtml(guardVariantHeader) +
1110
1110
  '</span> header or a custom resolver function.',
1111
1111
  'Forced values (literals instead of true) are injected server-side and cannot be overridden by the client.',
1112
+ 'Operation hooks run before variant hooks. After the handler, variant hooks run before operation hooks. A terminal response or error stops the remaining hooks in that phase; operation after-hooks are not guaranteed cleanup handlers.',
1112
1113
  ]
1113
1114
 
1114
1115
  const writeStrategyNotes =
@@ -0,0 +1,28 @@
1
+ import type { GuardVariantResolution } from './guardVariantRouting'
2
+
3
+ export function formatGuardVariantResolutionError(
4
+ resolution: Extract<GuardVariantResolution, { ok: false }>,
5
+ ): string {
6
+ const keys = resolution.keys.map((key) => `"${key}"`).join(', ')
7
+
8
+ if (resolution.code === 'reserved-key') {
9
+ return `Caller key "${resolution.key}" collides with reserved guard shape key. Rename the caller path.`
10
+ }
11
+
12
+ if (resolution.code === 'missing-caller') {
13
+ return (
14
+ `Missing caller. This guard uses named shape routing with keys: ${keys}. ` +
15
+ 'Provide caller via guard(input, caller).'
16
+ )
17
+ }
18
+
19
+ if (resolution.code === 'ambiguous-caller') {
20
+ const matches = (resolution.matches ?? [])
21
+ .map((pattern) => `"${pattern}"`)
22
+ .join(', ')
23
+
24
+ return `Ambiguous caller "${resolution.caller}" matches multiple patterns: ${matches}`
25
+ }
26
+
27
+ return `Unknown caller: "${resolution.caller}". Allowed: ${keys}`
28
+ }