prisma-generator-express 1.64.1 → 1.64.3

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.
@@ -90,9 +90,10 @@ function generateRouteConfigType(modelName, hookHandlerType, guardShapesImport,
90
90
  ` before?: ${beforeRef}[]\n` +
91
91
  ` after?: ${afterRef}[]\n` +
92
92
  ` }>`;
93
+ const allowDefault = ` allowDefaultVariant?: boolean`;
93
94
  return (` ${routerOp}?: (${commonConfig} & (\n` +
94
95
  ` | { shape?: ${m}${c}ShapeInput<TCtx>; variants?: never }\n` +
95
- ` | { shape?: never; variants: ${variantsConfig} }\n` +
96
+ ` | { shape?: never; variants: ${variantsConfig}\n${allowDefault} }\n` +
96
97
  ` )) | false`);
97
98
  }).join('\n');
98
99
  const omitKeys = ROUTER_OPERATIONS.map((k) => `'${k}'`).join('\n | ');
@@ -1 +1 @@
1
- {"version":3,"file":"generateRouteConfigType.js","sourceRoot":"","sources":["../../src/generators/generateRouteConfigType.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateRouteConfigType.js","sourceRoot":"","sources":["../../src/generators/generateRouteConfigType.ts"],"names":[],"mappings":"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"}
@@ -108,6 +108,8 @@ import { buildModelOpenApi } from '../buildModelOpenApi${ext}'
108
108
  import {
109
109
  normalizeOperation,
110
110
  resolveOperationVariantKey,
111
+ resolveGuardPolicy,
112
+ resolveGuardShapeOnce,
111
113
  validateCountSourceWhere,
112
114
  validateOperationConfig,
113
115
  validateUpdateEachConfig,
@@ -124,7 +126,10 @@ import { MODEL_FIELDS, MODEL_ENUMS } from './${modelName}Metadata${ext}'
124
126
  ${(0, generateRouteConfigType_1.generateRouteConfigType)(modelName, 'HonoBeforeHook', guardShapesImport, importStyle, 'hono')}
125
127
  const _env = getEnv()
126
128
 
127
- const DROP_GUARD = ${dropGuard} || _env.E2E === 'true'
129
+ // Fixed at generation time. The \`allowE2EGuardBypass\` control decides whether the
130
+ // environment can additionally drop the guard at runtime; it defaults to true,
131
+ // which is upstream behaviour. See generateRouterHono.ts.
132
+ const DROP_GUARD = ${dropGuard}
128
133
 
129
134
  type JsonLike =
130
135
  | string
@@ -182,28 +187,28 @@ async function parseBodyAsQueryMiddleware(c: HandlerContext): Promise<void> {
182
187
  c.set('parsedQuery', sanitizeKeys(body as Record<string, unknown>))
183
188
  }
184
189
 
185
- async function parseWriteBodyMiddleware(c: HandlerContext): Promise<void> {
190
+ async function parseUpdateEachBodyMiddleware(c: HandlerContext): Promise<void> {
186
191
  let body: unknown
187
192
  try {
188
193
  body = await c.req.json()
189
194
  } catch {
190
- throw new HTTPException(400, { message: 'Request body must be a JSON object' })
195
+ throw new HTTPException(400, { message: 'updateEach body must be an array of { where, data } items' })
191
196
  }
192
- if (!body || typeof body !== 'object' || Array.isArray(body)) {
193
- throw new HTTPException(400, { message: 'Request body must be a JSON object' })
197
+ if (!Array.isArray(body)) {
198
+ throw new HTTPException(400, { message: 'updateEach body must be an array of { where, data } items' })
194
199
  }
195
200
  c.set('body', body)
196
201
  }
197
202
 
198
- async function parseUpdateEachBodyMiddleware(c: HandlerContext): Promise<void> {
203
+ async function parseWriteBodyMiddleware(c: HandlerContext): Promise<void> {
199
204
  let body: unknown
200
205
  try {
201
206
  body = await c.req.json()
202
207
  } catch {
203
- throw new HTTPException(400, { message: 'updateEach body must be an array of { where, data } items' })
208
+ throw new HTTPException(400, { message: 'Request body must be a JSON object' })
204
209
  }
205
- if (!Array.isArray(body)) {
206
- throw new HTTPException(400, { message: 'updateEach body must be an array of { where, data } items' })
210
+ if (!body || typeof body !== 'object' || Array.isArray(body)) {
211
+ throw new HTTPException(400, { message: 'Request body must be a JSON object' })
207
212
  }
208
213
  c.set('body', body)
209
214
  }
@@ -213,6 +218,17 @@ function makeShapeMiddleware<TCtx, TPrisma, TEnv extends HonoEnvBase>(
213
218
  opConfig: NormalizedOp<TEnv>,
214
219
  opKind: OpKind,
215
220
  ) {
221
+ const policy = resolveGuardPolicy(config)
222
+
223
+ /**
224
+ * The environment bypass, honoured unless the consumer turned it off.
225
+ *
226
+ * \`E2E=true\` downgrading enforcement in a deployed environment is a real
227
+ * hazard, and it is also upstream behaviour — so it is a control, not a
228
+ * decision made here.
229
+ */
230
+ const dropGuard = DROP_GUARD || (policy.allowE2EGuardBypass && _env.E2E === 'true')
231
+
216
232
  return async (c: Context<GeneratedHonoEnv<TEnv>>): Promise<void> => {
217
233
  const merged = mergePaginationConfig(config.pagination, opConfig.pagination)
218
234
  if (merged) c.set('routeConfig', { pagination: merged })
@@ -235,15 +251,35 @@ function makeShapeMiddleware<TCtx, TPrisma, TEnv extends HonoEnvBase>(
235
251
  if (resolvedKey !== undefined) c.set('guardVariantKey', resolvedKey)
236
252
 
237
253
  if (opConfig.guardShape) {
238
- if (!DROP_GUARD) {
239
- c.set('guardShape', opConfig.guardShape)
240
- } else {
241
- const resolveCtx = typeof config.resolveContext === 'function'
242
- ? () => (config.resolveContext as (ctx: Context<GeneratedHonoEnv<TEnv>>) => unknown | Promise<unknown>)(c)
243
- : undefined
254
+ const resolveCtx = typeof config.resolveContext === 'function'
255
+ ? () => (config.resolveContext as (ctx: Context<GeneratedHonoEnv<TEnv>>) => unknown | Promise<unknown>)(c)
256
+ : undefined
257
+
258
+ /**
259
+ * With \`validateResolvedShapes\`, resolved ONCE here and the validated value
260
+ * is what travels onward — see resolveGuardShapeOnce. Passing the function
261
+ * on would let it return a different shape when it is enforced than when it
262
+ * was checked.
263
+ *
264
+ * Without it the raw shape is passed through untouched, which is upstream
265
+ * behaviour: it is resolved at the point of use, and a function returning
266
+ * something unusable is not this router's business to refuse.
267
+ */
268
+ let effectiveShape: unknown = opConfig.guardShape
269
+ if (policy.validateResolvedShapes) {
270
+ const resolution = await resolveGuardShapeOnce(opConfig.guardShape, resolvedKey, resolveCtx)
271
+ if (!resolution.ok) {
272
+ c.set('guardShapeFailure', resolution.problem)
273
+ return
274
+ }
275
+ effectiveShape = resolution.shape
276
+ }
244
277
 
278
+ if (!dropGuard) {
279
+ c.set('guardShape', effectiveShape)
280
+ } else {
245
281
  await applyDroppedGuard(
246
- opConfig.guardShape,
282
+ effectiveShape,
247
283
  resolvedKey,
248
284
  resolveCtx,
249
285
  opKind,
@@ -385,6 +421,38 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any, TEnv extend
385
421
  })
386
422
  }
387
423
 
424
+ const POLICY = resolveGuardPolicy(config)
425
+ const SETTLE_BEFORE_HOOKS = POLICY.guardResolutionOrder === 'before-hooks'
426
+
427
+ /**
428
+ * The guard-resolution failures, raised in one place so both handlers and both
429
+ * orderings share exactly one definition of what a failure is.
430
+ *
431
+ * WHERE it is called is the behavioural difference, and it is the
432
+ * \`guardResolutionOrder\` control. \`'before-hooks'\` runs it before any operation
433
+ * hook, because a hook that returns a Response — an auth gate, a cache, a
434
+ * short-circuit for a known caller — would otherwise answer a request whose
435
+ * guard was never established. \`'after-hooks'\` is upstream behaviour.
436
+ *
437
+ * \`guardShapeFailure\` is only ever set when \`validateResolvedShapes\` is on, so
438
+ * that branch is inert rather than merely unreached when it is off.
439
+ */
440
+ const settleGuard = (c: Context<GeneratedHonoEnv<TEnv>>): void => {
441
+ const failure = c.get('guardVariantFailure')
442
+ if (failure) {
443
+ throw new HTTPException(400, {
444
+ message: formatGuardVariantResolutionError(failure),
445
+ })
446
+ }
447
+
448
+ const shapeFailure = c.get('guardShapeFailure')
449
+ if (shapeFailure) {
450
+ throw new HTTPException(500, {
451
+ message: 'guard shape could not be resolved: ' + shapeFailure,
452
+ })
453
+ }
454
+ }
455
+
388
456
  const handleRead = (
389
457
  opConfig: NormalizedOp<TEnv>,
390
458
  handlerFn: (c: HandlerContext) => Promise<void>,
@@ -394,15 +462,15 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any, TEnv extend
394
462
  try {
395
463
  await parseFn(c as unknown as HandlerContext)
396
464
  await makeShapeMiddleware<TCtx, TPrisma, TEnv>(config, opConfig, opKind)(c)
465
+
466
+ // Settled BEFORE any hook can answer the request, when asked for.
467
+ if (SETTLE_BEFORE_HOOKS) settleGuard(c)
468
+
397
469
  const operationBefore = await runBeforeHooks<TEnv>(opConfig.operationBefore, c)
398
470
  if (operationBefore) return operationBefore
399
471
 
400
- const failure = c.get('guardVariantFailure')
401
- if (failure) {
402
- throw new HTTPException(400, {
403
- message: formatGuardVariantResolutionError(failure),
404
- })
405
- }
472
+ // Upstream order: hooks first, guard failure after.
473
+ if (!SETTLE_BEFORE_HOOKS) settleGuard(c)
406
474
 
407
475
  const key = c.get('guardVariantKey')
408
476
  const variantHooks =
@@ -429,15 +497,15 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any, TEnv extend
429
497
  try {
430
498
  await parseWriteBodyMiddleware(c as unknown as HandlerContext)
431
499
  await makeShapeMiddleware<TCtx, TPrisma, TEnv>(config, opConfig, opKind)(c)
500
+
501
+ // Settled BEFORE any hook can answer the request, when asked for.
502
+ if (SETTLE_BEFORE_HOOKS) settleGuard(c)
503
+
432
504
  const operationBefore = await runBeforeHooks<TEnv>(opConfig.operationBefore, c)
433
505
  if (operationBefore) return operationBefore
434
506
 
435
- const failure = c.get('guardVariantFailure')
436
- if (failure) {
437
- throw new HTTPException(400, {
438
- message: formatGuardVariantResolutionError(failure),
439
- })
440
- }
507
+ // Upstream order: hooks first, guard failure after.
508
+ if (!SETTLE_BEFORE_HOOKS) settleGuard(c)
441
509
 
442
510
  const key = c.get('guardVariantKey')
443
511
  const variantHooks =
@@ -460,7 +528,7 @@ export function ${routerFunctionName}<TCtx = unknown, TPrisma = any, TEnv extend
460
528
  key: K,
461
529
  ): NormalizedOp<TEnv> => {
462
530
  const raw = config[key] as unknown as OperationConfigLike<TEnv> | undefined
463
- validateOperationConfig(raw, '${modelName}.' + String(key))
531
+ validateOperationConfig(raw, '${modelName}.' + String(key), POLICY)
464
532
  return normalizeHonoOperation(raw)
465
533
  }
466
534
 
@@ -469,6 +537,25 @@ ${readOpBlocks}
469
537
  ${writeOpBlocks}
470
538
 
471
539
  if (config.updateEach) {
540
+ /**
541
+ * Refused only when \`enableUpdateEach\` is false. It bypasses guard shapes by design — the
542
+ * endpoint is a batch of { where, data } applied directly — and the only thing
543
+ * between it and an unguarded mass mutation is a console.warn suppressed in
544
+ * production. A warning is not a security boundary.
545
+ *
546
+ * Removing the route outright was a breaking change to a published package,
547
+ * so by default it registers exactly as it did, warning and all.
548
+ */
549
+ if (!POLICY.enableUpdateEach) {
550
+ throw new Error(
551
+ '${modelName}.updateEach: enableUpdateEach is false, so this router ' +
552
+ 'does not register updateEach. It bypasses guard shapes entirely, so ' +
553
+ 'there is no configuration that makes it safe to expose. Perform batch ' +
554
+ 'updates through a guarded operation, or behind your own authenticated ' +
555
+ 'route outside the generated router.',
556
+ )
557
+ }
558
+
472
559
  const rawUpdateEach = config.updateEach as unknown as OperationConfigLike<TEnv>
473
560
  validateUpdateEachConfig(rawUpdateEach, '${modelName}.updateEach')
474
561
  const opConfig = normalizeHonoOperation(rawUpdateEach)
@@ -1 +1 @@
1
- {"version":3,"file":"generateRouterHono.js","sourceRoot":"","sources":["../../src/generators/generateRouterHono.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateRouterHono.js","sourceRoot":"","sources":["../../src/generators/generateRouterHono.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ export type GuardResolutionOrder = 'after-hooks' | 'before-hooks';
2
+ export type GuardPolicy = {
3
+ requireGuardShape: boolean;
4
+ validateGuardShapes: boolean;
5
+ requireDefaultVariantOptIn: boolean;
6
+ enableUpdateEach: boolean;
7
+ guardResolutionOrder: GuardResolutionOrder;
8
+ allowE2EGuardBypass: boolean;
9
+ validateResolvedShapes: boolean;
10
+ };
11
+ export declare const UPSTREAM_GUARD_DEFAULTS: Readonly<GuardPolicy>;
12
+ export declare const HARDENED_GUARD_PROFILE: Readonly<GuardPolicy>;
13
+ export type GuardOptionMetadata = {
14
+ name: keyof GuardPolicy;
15
+ type: 'boolean' | 'enum';
16
+ values?: readonly string[];
17
+ default: boolean | string;
18
+ hardened: boolean | string;
19
+ label: string;
20
+ description: string;
21
+ warning: string;
22
+ target: 'hono';
23
+ };
24
+ export declare const GUARD_OPTION_METADATA: readonly GuardOptionMetadata[];
25
+ export declare const GUARD_METADATA_SCOPE: Readonly<{
26
+ covers: "the seven M8.7 guard controls on the Hono target";
27
+ complete: false;
28
+ notDescribedYet: readonly string[];
29
+ }>;
30
+ export declare function resolveGuardPolicy(config: Partial<GuardPolicy> | undefined): GuardPolicy;
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GUARD_METADATA_SCOPE = exports.GUARD_OPTION_METADATA = exports.HARDENED_GUARD_PROFILE = exports.UPSTREAM_GUARD_DEFAULTS = void 0;
4
+ exports.resolveGuardPolicy = resolveGuardPolicy;
5
+ exports.UPSTREAM_GUARD_DEFAULTS = Object.freeze({
6
+ requireGuardShape: false,
7
+ validateGuardShapes: false,
8
+ requireDefaultVariantOptIn: false,
9
+ enableUpdateEach: true,
10
+ guardResolutionOrder: 'after-hooks',
11
+ allowE2EGuardBypass: true,
12
+ validateResolvedShapes: false,
13
+ });
14
+ exports.HARDENED_GUARD_PROFILE = Object.freeze({
15
+ requireGuardShape: true,
16
+ validateGuardShapes: true,
17
+ requireDefaultVariantOptIn: true,
18
+ enableUpdateEach: false,
19
+ guardResolutionOrder: 'before-hooks',
20
+ allowE2EGuardBypass: false,
21
+ validateResolvedShapes: true,
22
+ });
23
+ exports.GUARD_OPTION_METADATA = Object.freeze([
24
+ {
25
+ name: 'requireGuardShape',
26
+ type: 'boolean',
27
+ default: exports.UPSTREAM_GUARD_DEFAULTS.requireGuardShape,
28
+ hardened: exports.HARDENED_GUARD_PROFILE.requireGuardShape,
29
+ label: 'Require a guard on every enabled operation',
30
+ description: 'Refuses at router construction when an operation defines neither "shape" nor "variants".',
31
+ warning: "Off, an operation nobody configured passes the caller's own where/select/include straight to Prisma.",
32
+ target: 'hono',
33
+ },
34
+ {
35
+ name: 'validateGuardShapes',
36
+ type: 'boolean',
37
+ default: exports.UPSTREAM_GUARD_DEFAULTS.validateGuardShapes,
38
+ hardened: exports.HARDENED_GUARD_PROFILE.validateGuardShapes,
39
+ label: 'Validate guard shapes',
40
+ description: 'Refuses an empty shape, and one mixing guard keys with non-guard keys, at the top level and inside variants.',
41
+ warning: 'Off, "shape: {}" reads as guarded and constrains nothing. On, strict validation may reject existing route configs.',
42
+ target: 'hono',
43
+ },
44
+ {
45
+ name: 'requireDefaultVariantOptIn',
46
+ type: 'boolean',
47
+ default: exports.UPSTREAM_GUARD_DEFAULTS.requireDefaultVariantOptIn,
48
+ hardened: exports.HARDENED_GUARD_PROFILE.requireDefaultVariantOptIn,
49
+ label: 'Require confirmation for a "default" variant',
50
+ description: 'A variant named "default" must set allowDefaultVariant: true to be accepted.',
51
+ warning: 'A "default" variant answers every unrecognised, blank and missing caller.',
52
+ target: 'hono',
53
+ },
54
+ {
55
+ name: 'enableUpdateEach',
56
+ type: 'boolean',
57
+ default: exports.UPSTREAM_GUARD_DEFAULTS.enableUpdateEach,
58
+ hardened: exports.HARDENED_GUARD_PROFILE.enableUpdateEach,
59
+ label: 'Register the updateEach batch route',
60
+ description: 'Mounts POST <base>/each. Set false to refuse it at router construction.',
61
+ warning: 'updateEach bypasses guard shapes entirely; only a development-only warning stands between it and an unguarded mass update.',
62
+ target: 'hono',
63
+ },
64
+ {
65
+ name: 'guardResolutionOrder',
66
+ type: 'enum',
67
+ values: Object.freeze(['after-hooks', 'before-hooks']),
68
+ default: exports.UPSTREAM_GUARD_DEFAULTS.guardResolutionOrder,
69
+ hardened: exports.HARDENED_GUARD_PROFILE.guardResolutionOrder,
70
+ label: 'When guard failures are raised',
71
+ description: 'after-hooks is the upstream behaviour; before-hooks settles variant and shape resolution before any operation hook runs.',
72
+ warning: 'With after-hooks, a hook that returns a Response can answer a request whose guard was never established.',
73
+ target: 'hono',
74
+ },
75
+ {
76
+ name: 'allowE2EGuardBypass',
77
+ type: 'boolean',
78
+ default: exports.UPSTREAM_GUARD_DEFAULTS.allowE2EGuardBypass,
79
+ hardened: exports.HARDENED_GUARD_PROFILE.allowE2EGuardBypass,
80
+ label: 'Honour the E2E environment guard bypass',
81
+ description: 'Treats E2E=true in the environment as a request to drop the guard.',
82
+ warning: 'A runtime variable can weaken a deployed artifact after generation. On an edge runtime this is an ordinary config var.',
83
+ target: 'hono',
84
+ },
85
+ {
86
+ name: 'validateResolvedShapes',
87
+ type: 'boolean',
88
+ default: exports.UPSTREAM_GUARD_DEFAULTS.validateResolvedShapes,
89
+ hardened: exports.HARDENED_GUARD_PROFILE.validateResolvedShapes,
90
+ label: 'Validate what a shape function returns',
91
+ description: 'Checks a dynamically resolved shape before use and fails the request with 500 if it is unusable. Also resolves it exactly once.',
92
+ warning: 'Off, a shape function returning {} or undefined runs the operation unguarded, once per request.',
93
+ target: 'hono',
94
+ },
95
+ ]);
96
+ exports.GUARD_METADATA_SCOPE = Object.freeze({
97
+ covers: 'the seven M8.7 guard controls on the Hono target',
98
+ complete: false,
99
+ notDescribedYet: Object.freeze([
100
+ 'dropGuard',
101
+ 'target',
102
+ 'writeStrategy',
103
+ 'findManyPaginated / pagination mode',
104
+ 'pagination.countSource',
105
+ 'addModelPrefix / customUrlPrefix / specBasePath',
106
+ 'disableOpenApi and the OpenAPI metadata options',
107
+ 'disablePostReads',
108
+ 'queryBuilder',
109
+ 'guard.resolveVariant / guard.variantHeader',
110
+ ]),
111
+ });
112
+ function resolveGuardPolicy(config) {
113
+ return {
114
+ requireGuardShape: config?.requireGuardShape ?? exports.UPSTREAM_GUARD_DEFAULTS.requireGuardShape,
115
+ validateGuardShapes: config?.validateGuardShapes ?? exports.UPSTREAM_GUARD_DEFAULTS.validateGuardShapes,
116
+ requireDefaultVariantOptIn: config?.requireDefaultVariantOptIn ?? exports.UPSTREAM_GUARD_DEFAULTS.requireDefaultVariantOptIn,
117
+ enableUpdateEach: config?.enableUpdateEach ?? exports.UPSTREAM_GUARD_DEFAULTS.enableUpdateEach,
118
+ guardResolutionOrder: config?.guardResolutionOrder ?? exports.UPSTREAM_GUARD_DEFAULTS.guardResolutionOrder,
119
+ allowE2EGuardBypass: config?.allowE2EGuardBypass ?? exports.UPSTREAM_GUARD_DEFAULTS.allowE2EGuardBypass,
120
+ validateResolvedShapes: config?.validateResolvedShapes ?? exports.UPSTREAM_GUARD_DEFAULTS.validateResolvedShapes,
121
+ };
122
+ }
123
+ //# sourceMappingURL=guardOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guardOptions.js","sourceRoot":"","sources":["../src/guardOptions.ts"],"names":[],"mappings":";;;AAkNA,gDAeC;AA/KY,QAAA,uBAAuB,GAA0B,MAAM,CAAC,MAAM,CAAC;IAC1E,iBAAiB,EAAE,KAAK;IACxB,mBAAmB,EAAE,KAAK;IAC1B,0BAA0B,EAAE,KAAK;IACjC,gBAAgB,EAAE,IAAI;IACtB,oBAAoB,EAAE,aAAa;IACnC,mBAAmB,EAAE,IAAI;IACzB,sBAAsB,EAAE,KAAK;CAC9B,CAAC,CAAA;AAUW,QAAA,sBAAsB,GAA0B,MAAM,CAAC,MAAM,CAAC;IACzE,iBAAiB,EAAE,IAAI;IACvB,mBAAmB,EAAE,IAAI;IACzB,0BAA0B,EAAE,IAAI;IAChC,gBAAgB,EAAE,KAAK;IACvB,oBAAoB,EAAE,cAAc;IACpC,mBAAmB,EAAE,KAAK;IAC1B,sBAAsB,EAAE,IAAI;CAC7B,CAAC,CAAA;AAwBW,QAAA,qBAAqB,GAAmC,MAAM,CAAC,MAAM,CAAC;IACjF;QACE,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,+BAAuB,CAAC,iBAAiB;QAClD,QAAQ,EAAE,8BAAsB,CAAC,iBAAiB;QAClD,KAAK,EAAE,4CAA4C;QACnD,WAAW,EACT,0FAA0F;QAC5F,OAAO,EACL,sGAAsG;QACxG,MAAM,EAAE,MAAM;KACf;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,+BAAuB,CAAC,mBAAmB;QACpD,QAAQ,EAAE,8BAAsB,CAAC,mBAAmB;QACpD,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,8GAA8G;QAChH,OAAO,EACL,oHAAoH;QACtH,MAAM,EAAE,MAAM;KACf;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,+BAAuB,CAAC,0BAA0B;QAC3D,QAAQ,EAAE,8BAAsB,CAAC,0BAA0B;QAC3D,KAAK,EAAE,8CAA8C;QACrD,WAAW,EACT,8EAA8E;QAChF,OAAO,EAAE,2EAA2E;QACpF,MAAM,EAAE,MAAM;KACf;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,+BAAuB,CAAC,gBAAgB;QACjD,QAAQ,EAAE,8BAAsB,CAAC,gBAAgB;QACjD,KAAK,EAAE,qCAAqC;QAC5C,WAAW,EAAE,yEAAyE;QACtF,OAAO,EACL,4HAA4H;QAC9H,MAAM,EAAE,MAAM;KACf;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;QACtD,OAAO,EAAE,+BAAuB,CAAC,oBAAoB;QACrD,QAAQ,EAAE,8BAAsB,CAAC,oBAAoB;QACrD,KAAK,EAAE,gCAAgC;QACvC,WAAW,EACT,0HAA0H;QAC5H,OAAO,EACL,0GAA0G;QAC5G,MAAM,EAAE,MAAM;KACf;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,+BAAuB,CAAC,mBAAmB;QACpD,QAAQ,EAAE,8BAAsB,CAAC,mBAAmB;QACpD,KAAK,EAAE,yCAAyC;QAChD,WAAW,EAAE,oEAAoE;QACjF,OAAO,EACL,wHAAwH;QAC1H,MAAM,EAAE,MAAM;KACf;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,+BAAuB,CAAC,sBAAsB;QACvD,QAAQ,EAAE,8BAAsB,CAAC,sBAAsB;QACvD,KAAK,EAAE,wCAAwC;QAC/C,WAAW,EACT,iIAAiI;QACnI,OAAO,EACL,iGAAiG;QACnG,MAAM,EAAE,MAAM;KACf;CACF,CAAC,CAAA;AASW,QAAA,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,MAAM,EAAE,kDAAkD;IAC1D,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC;QAC7B,WAAW;QACX,QAAQ;QACR,eAAe;QACf,qCAAqC;QACrC,wBAAwB;QACxB,iDAAiD;QACjD,iDAAiD;QACjD,kBAAkB;QAClB,cAAc;QACd,4CAA4C;KAC7C,CAAC;CACH,CAAC,CAAA;AAGF,SAAgB,kBAAkB,CAAC,MAAwC;IACzE,OAAO;QACL,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,IAAI,+BAAuB,CAAC,iBAAiB;QACzF,mBAAmB,EACjB,MAAM,EAAE,mBAAmB,IAAI,+BAAuB,CAAC,mBAAmB;QAC5E,0BAA0B,EACxB,MAAM,EAAE,0BAA0B,IAAI,+BAAuB,CAAC,0BAA0B;QAC1F,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,IAAI,+BAAuB,CAAC,gBAAgB;QACtF,oBAAoB,EAClB,MAAM,EAAE,oBAAoB,IAAI,+BAAuB,CAAC,oBAAoB;QAC9E,mBAAmB,EACjB,MAAM,EAAE,mBAAmB,IAAI,+BAAuB,CAAC,mBAAmB;QAC5E,sBAAsB,EACpB,MAAM,EAAE,sBAAsB,IAAI,+BAAuB,CAAC,sBAAsB;KACnF,CAAA;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1 +1,2 @@
1
- export {};
1
+ export { GUARD_OPTION_METADATA, GUARD_METADATA_SCOPE, UPSTREAM_GUARD_DEFAULTS, HARDENED_GUARD_PROFILE, resolveGuardPolicy, } from './guardOptions';
2
+ export type { GuardPolicy, GuardOptionMetadata, GuardResolutionOrder } from './guardOptions';
package/dist/index.js CHANGED
@@ -3,6 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveGuardPolicy = exports.HARDENED_GUARD_PROFILE = exports.UPSTREAM_GUARD_DEFAULTS = exports.GUARD_METADATA_SCOPE = exports.GUARD_OPTION_METADATA = void 0;
7
+ var guardOptions_1 = require("./guardOptions");
8
+ Object.defineProperty(exports, "GUARD_OPTION_METADATA", { enumerable: true, get: function () { return guardOptions_1.GUARD_OPTION_METADATA; } });
9
+ Object.defineProperty(exports, "GUARD_METADATA_SCOPE", { enumerable: true, get: function () { return guardOptions_1.GUARD_METADATA_SCOPE; } });
10
+ Object.defineProperty(exports, "UPSTREAM_GUARD_DEFAULTS", { enumerable: true, get: function () { return guardOptions_1.UPSTREAM_GUARD_DEFAULTS; } });
11
+ Object.defineProperty(exports, "HARDENED_GUARD_PROFILE", { enumerable: true, get: function () { return guardOptions_1.HARDENED_GUARD_PROFILE; } });
12
+ Object.defineProperty(exports, "resolveGuardPolicy", { enumerable: true, get: function () { return guardOptions_1.resolveGuardPolicy; } });
6
13
  const generator_helper_1 = require("@prisma/generator-helper");
7
14
  const path_1 = __importDefault(require("path"));
8
15
  const generateUnifiedHandler_1 = require("./generators/generateUnifiedHandler");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.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.64.1",
4
+ "version": "1.64.3",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "license": "MIT",
@@ -86,7 +86,12 @@ async function callShapeFn(
86
86
  return result
87
87
  }
88
88
 
89
- async function resolveShape(
89
+ /**
90
+ * Exported so the router can resolve a function shape and CHECK it before use.
91
+ * A shape that is only resolved at the point it is applied is a shape nobody
92
+ * validated.
93
+ */
94
+ export async function resolveShape(
90
95
  input: unknown,
91
96
  resolvedKey: string | undefined,
92
97
  resolveContext: ContextResolver | undefined,
@@ -107,6 +107,91 @@ export type RouteConfig<
107
107
  >,
108
108
  HonoOpKeys
109
109
  > & {
110
+ /**
111
+ * SEVEN INDEPENDENT GUARD CONTROLS. Every default reproduces the public
112
+ * package's pre-1.64.2 behaviour exactly.
113
+ *
114
+ * 1.64.2 shipped these behaviours ON by default, which was a breaking change
115
+ * to a published package. The first correction put all seven behind one
116
+ * `requireGuard` switch, which was also wrong: they are unrelated decisions,
117
+ * and bundling them means a consumer who wants a missing-guard refusal is also
118
+ * forced into a hook-ordering change and the removal of a route they may use.
119
+ *
120
+ * So each is its own option. An unset option means the upstream default — never
121
+ * an opinionated value chosen on the consumer's behalf. `HARDENED_GUARD_PROFILE`
122
+ * selects all seven together for those who want them, but it is a set of values
123
+ * to spread, not a mode: what gets stored is the individual settings.
124
+ *
125
+ * `GUARD_OPTION_METADATA` describes these machine-readably, so a UI can render
126
+ * them without a hand-maintained second copy of the defaults.
127
+ */
128
+
129
+ /**
130
+ * Refuse an operation that configures no guard at all. **Default `false`.**
131
+ *
132
+ * With it off — the upstream default — an unconfigured operation is emitted and
133
+ * passes the caller's own where/select/include straight to Prisma. On, router
134
+ * construction throws, which on a Worker is boot.
135
+ */
136
+ requireGuardShape?: boolean
137
+
138
+ /**
139
+ * Validate that a shape constrains something. **Default `false`.**
140
+ *
141
+ * On, `shape: {}` and a shape mixing guard keys with non-guard keys (usually a
142
+ * typo: `wheer`, `iclude`) are refused, at the top level and inside variants.
143
+ */
144
+ validateGuardShapes?: boolean
145
+
146
+ /**
147
+ * Require `allowDefaultVariant: true` on an operation carrying a variant named
148
+ * `default`. **Default `false`.**
149
+ *
150
+ * A `default` variant answers every unrecognised, blank and missing caller.
151
+ * That is safe when it is the most restrictive variant and dangerous when it is
152
+ * the most permissive, and nothing can tell which from the shape.
153
+ */
154
+ requireDefaultVariantOptIn?: boolean
155
+
156
+ /**
157
+ * Register the `updateEach` batch route. **Default `true`.**
158
+ *
159
+ * It bypasses guard shapes by design — a batch of `{ where, data }` applied
160
+ * directly — and is protected only by a development-only warning. Set `false`
161
+ * to refuse it at router construction.
162
+ */
163
+ enableUpdateEach?: boolean
164
+
165
+ /**
166
+ * When guard failures are raised relative to operation `before` hooks.
167
+ * **Default `'after-hooks'`.**
168
+ *
169
+ * `'after-hooks'` is upstream behaviour: a hook may answer the request before
170
+ * variant resolution is settled. `'before-hooks'` settles the guard first, so a
171
+ * hook cannot answer a request whose guard was never established.
172
+ */
173
+ guardResolutionOrder?: 'after-hooks' | 'before-hooks'
174
+
175
+ /**
176
+ * Honour `E2E=true` in the environment as a guard bypass. **Default `true`.**
177
+ *
178
+ * Upstream behaviour, and a real hazard on an edge runtime where that variable
179
+ * is an ordinary config var — set on staging, copied forward, flagged as
180
+ * security-relevant nowhere. `false` makes guard behaviour a property of the
181
+ * artifact alone.
182
+ */
183
+ allowE2EGuardBypass?: boolean
184
+
185
+ /**
186
+ * Check what a shape FUNCTION returned before using it. **Default `false`.**
187
+ *
188
+ * A function shape is opaque at construction time. On, a resolved value that is
189
+ * empty, not an object, or carrying non-guard keys fails the request with 500 —
190
+ * a deployment fault, not a caller fault — instead of running unguarded. It
191
+ * also resolves the function exactly once and passes the validated value on.
192
+ */
193
+ validateResolvedShapes?: boolean
194
+
110
195
  findUnique?: OperationConfig<TShape, TEnv> | false
111
196
  findUniqueOrThrow?: OperationConfig<TShape, TEnv> | false
112
197
  findFirst?: OperationConfig<TShape, TEnv> | false