prisma-generator-express 1.66.0 → 1.68.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 (130) hide show
  1. package/README.md +188 -3432
  2. package/dist/client/encodeQueryParams.js +3 -1
  3. package/dist/client/encodeQueryParams.js.map +1 -1
  4. package/dist/copy/misc.d.ts +1 -0
  5. package/dist/copy/misc.js +14 -0
  6. package/dist/copy/misc.js.map +1 -1
  7. package/dist/copy/operationDefinitions.d.ts +4 -1
  8. package/dist/copy/operationDefinitions.js +133 -9
  9. package/dist/copy/operationDefinitions.js.map +1 -1
  10. package/dist/generators/generateFastifyHandler.d.ts +2 -2
  11. package/dist/generators/generateFastifyHandler.js +68 -12
  12. package/dist/generators/generateFastifyHandler.js.map +1 -1
  13. package/dist/generators/generateHonoHandler.d.ts +2 -2
  14. package/dist/generators/generateHonoHandler.js +53 -6
  15. package/dist/generators/generateHonoHandler.js.map +1 -1
  16. package/dist/generators/generateHonoOpenApi.d.ts +13 -0
  17. package/dist/generators/generateHonoOpenApi.js +70 -0
  18. package/dist/generators/generateHonoOpenApi.js.map +1 -0
  19. package/dist/generators/generateImportPrismaStatement.d.ts +1 -0
  20. package/dist/generators/generateImportPrismaStatement.js +6 -0
  21. package/dist/generators/generateImportPrismaStatement.js.map +1 -1
  22. package/dist/generators/generateMcpApp.d.ts +10 -0
  23. package/dist/generators/generateMcpApp.js +113 -0
  24. package/dist/generators/generateMcpApp.js.map +1 -0
  25. package/dist/generators/generateModelMcp.d.ts +9 -0
  26. package/dist/generators/generateModelMcp.js +145 -0
  27. package/dist/generators/generateModelMcp.js.map +1 -0
  28. package/dist/generators/generateModelMetadata.js +29 -15
  29. package/dist/generators/generateModelMetadata.js.map +1 -1
  30. package/dist/generators/generateOperationCore.d.ts +3 -3
  31. package/dist/generators/generateOperationCore.js +51 -16
  32. package/dist/generators/generateOperationCore.js.map +1 -1
  33. package/dist/generators/generateRelationMeta.js +2 -2
  34. package/dist/generators/generateRelationMeta.js.map +1 -1
  35. package/dist/generators/generateRouteConfigType.d.ts +2 -2
  36. package/dist/generators/generateRouteConfigType.js +29 -11
  37. package/dist/generators/generateRouteConfigType.js.map +1 -1
  38. package/dist/generators/generateRouter.d.ts +7 -4
  39. package/dist/generators/generateRouter.js +164 -65
  40. package/dist/generators/generateRouter.js.map +1 -1
  41. package/dist/generators/generateRouterFastify.d.ts +7 -4
  42. package/dist/generators/generateRouterFastify.js +106 -86
  43. package/dist/generators/generateRouterFastify.js.map +1 -1
  44. package/dist/generators/generateRouterHono.d.ts +7 -4
  45. package/dist/generators/generateRouterHono.js +59 -414
  46. package/dist/generators/generateRouterHono.js.map +1 -1
  47. package/dist/generators/generateRouterPartsHono.d.ts +14 -0
  48. package/dist/generators/generateRouterPartsHono.js +180 -0
  49. package/dist/generators/generateRouterPartsHono.js.map +1 -0
  50. package/dist/generators/generateUnifiedDocs.d.ts +1 -1
  51. package/dist/generators/generateUnifiedDocs.js +15 -8
  52. package/dist/generators/generateUnifiedDocs.js.map +1 -1
  53. package/dist/generators/generateUnifiedHandler.d.ts +2 -2
  54. package/dist/generators/generateUnifiedHandler.js +42 -18
  55. package/dist/generators/generateUnifiedHandler.js.map +1 -1
  56. package/dist/guardOptions.js +12 -7
  57. package/dist/guardOptions.js.map +1 -1
  58. package/dist/index.d.ts +3 -1
  59. package/dist/index.js +123 -4
  60. package/dist/index.js.map +1 -1
  61. package/dist/utils/copyFiles.d.ts +1 -1
  62. package/dist/utils/copyFiles.js +42 -7
  63. package/dist/utils/copyFiles.js.map +1 -1
  64. package/dist/utils/importExt.d.ts +1 -1
  65. package/dist/utils/mcpGate.d.ts +10 -0
  66. package/dist/utils/mcpGate.js +118 -0
  67. package/dist/utils/mcpGate.js.map +1 -0
  68. package/dist/utils/pathCasing.d.ts +4 -0
  69. package/dist/utils/pathCasing.js +40 -0
  70. package/dist/utils/pathCasing.js.map +1 -0
  71. package/dist/utils/resolveImportStyle.js +13 -5
  72. package/dist/utils/resolveImportStyle.js.map +1 -1
  73. package/dist/utils/writeFileSafely.js +6 -0
  74. package/dist/utils/writeFileSafely.js.map +1 -1
  75. package/package.json +22 -5
  76. package/src/bin.ts +1 -1
  77. package/src/client/encodeQueryParams.ts +39 -35
  78. package/src/constants.ts +1 -1
  79. package/src/copy/autoIncludePlanner.ts +93 -27
  80. package/src/copy/autoIncludePlannerGuarded.ts +171 -48
  81. package/src/copy/autoIncludeRuntimeGuarded.ts +25 -7
  82. package/src/copy/buildModelOpenApi.ts +229 -176
  83. package/src/copy/concurrency.ts +10 -8
  84. package/src/copy/docsRenderer.ts +14 -15
  85. package/src/copy/errorMapper.ts +68 -19
  86. package/src/copy/guardHelpers.ts +30 -9
  87. package/src/copy/materializedCount.ts +17 -5
  88. package/src/copy/mcpRuntime.ts +1017 -0
  89. package/src/copy/misc.ts +88 -68
  90. package/src/copy/ndjson.ts +72 -0
  91. package/src/copy/operationDefinitions.ts +177 -25
  92. package/src/copy/operationPipeline.ts +267 -0
  93. package/src/copy/operationRuntime.ts +124 -26
  94. package/src/copy/operationSchemas.ts +2773 -0
  95. package/src/copy/pagination.ts +35 -13
  96. package/src/copy/parseQueryParams.ts +47 -48
  97. package/src/copy/projectionDefaults.ts +6 -4
  98. package/src/copy/routeConfig.express.ts +16 -4
  99. package/src/copy/routeConfig.fastify.ts +16 -2
  100. package/src/copy/routeConfig.hono.ts +46 -14
  101. package/src/copy/routeConfig.ts +175 -40
  102. package/src/copy/routerParts.ts +524 -0
  103. package/src/copy/scalarTypes.ts +7 -2
  104. package/src/copy/sse.ts +72 -19
  105. package/src/generators/generateFastifyHandler.ts +77 -20
  106. package/src/generators/generateHonoHandler.ts +62 -14
  107. package/src/generators/generateHonoOpenApi.ts +93 -0
  108. package/src/generators/generateImportPrismaStatement.ts +93 -81
  109. package/src/generators/generateMcpApp.ts +133 -0
  110. package/src/generators/generateModelMcp.ts +208 -0
  111. package/src/generators/generateModelMetadata.ts +40 -22
  112. package/src/generators/generateOperationCore.ts +81 -33
  113. package/src/generators/generateRelationMeta.ts +23 -11
  114. package/src/generators/generateRouteConfigType.ts +39 -13
  115. package/src/generators/generateRouter.ts +171 -68
  116. package/src/generators/generateRouterFastify.ts +117 -89
  117. package/src/generators/generateRouterHono.ts +84 -464
  118. package/src/generators/generateRouterPartsHono.ts +220 -0
  119. package/src/generators/generateUnifiedDocs.ts +29 -8
  120. package/src/generators/generateUnifiedHandler.ts +47 -24
  121. package/src/generators/generateUnifiedScalarUI.ts +1 -1
  122. package/src/guardOptions.ts +105 -92
  123. package/src/index.ts +161 -6
  124. package/src/utils/copyFiles.ts +235 -168
  125. package/src/utils/importExt.ts +2 -2
  126. package/src/utils/mcpGate.ts +157 -0
  127. package/src/utils/pathCasing.ts +42 -0
  128. package/src/utils/resolveImportStyle.ts +37 -15
  129. package/src/utils/strings.ts +2 -2
  130. package/src/utils/writeFileSafely.ts +12 -2
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateHonoRouterParts = generateHonoRouterParts;
4
+ const generateRouteConfigType_1 = require("./generateRouteConfigType");
5
+ const importExt_1 = require("../utils/importExt");
6
+ const pathCasing_1 = require("../utils/pathCasing");
7
+ const operationDefinitions_1 = require("../copy/operationDefinitions");
8
+ function opKindFor(opName) {
9
+ switch (opName) {
10
+ case 'findUnique':
11
+ case 'findUniqueOrThrow':
12
+ return 'readUnique';
13
+ case 'findMany':
14
+ case 'findFirst':
15
+ case 'findFirstOrThrow':
16
+ case 'findManyPaginated':
17
+ case 'count':
18
+ case 'aggregate':
19
+ case 'groupBy':
20
+ return 'read';
21
+ case 'create':
22
+ return 'create';
23
+ case 'createMany':
24
+ case 'createManyAndReturn':
25
+ return 'createMany';
26
+ case 'update':
27
+ return 'update';
28
+ case 'updateMany':
29
+ case 'updateManyAndReturn':
30
+ return 'updateMany';
31
+ case 'upsert':
32
+ return 'upsert';
33
+ case 'delete':
34
+ return 'delete';
35
+ case 'deleteMany':
36
+ return 'deleteMany';
37
+ default:
38
+ return 'noop';
39
+ }
40
+ }
41
+ function generateHonoRouterParts({ model, enums, guardShapesImport, clientImport, importStyle, writeStrategy, dropGuard, pathCase, }) {
42
+ const ext = (0, importExt_1.importExt)(importStyle);
43
+ const modelName = model.name;
44
+ const modelSegment = (0, pathCasing_1.modelPathSegment)(modelName, pathCase);
45
+ const lower = modelName.charAt(0).toLowerCase() + modelName.slice(1);
46
+ const cap = (s) => s.charAt(0).toUpperCase() + s.slice(1);
47
+ const handlerImports = operationDefinitions_1.OPERATION_METADATA.map((m) => ` ${modelName}${cap(m.name)},`).join('\n');
48
+ const readOps = operationDefinitions_1.OPERATION_METADATA.filter((m) => m.kind === 'read');
49
+ const writeOps = operationDefinitions_1.OPERATION_METADATA.filter((m) => m.kind === 'write' || m.kind === 'batch').filter((m) => m.name !== 'updateEach');
50
+ const pathExpr = (suffix) => !suffix ? `setup.basePath || '/'` : `\`\${setup.basePath}${suffix}\``;
51
+ const readFactories = readOps
52
+ .map((meta) => {
53
+ const fn = `${lower}${cap(meta.name)}`;
54
+ const handler = `${modelName}${cap(meta.name)}`;
55
+ const opKind = opKindFor(meta.name);
56
+ const pathValue = pathExpr(meta.pathSuffix);
57
+ const postPathValue = meta.name === 'findMany'
58
+ ? `setup.basePath ? \`\${setup.basePath}/read\` : '/read'`
59
+ : pathExpr(meta.pathSuffix);
60
+ return `
61
+ export function ${fn}<TCtx = unknown, TPrisma extends PrismaClientLike = PrismaClientLike, TEnv extends HonoEnvBase = HonoEnvBase>(config: ${modelName}RouteConfig<TCtx, TPrisma, TEnv> = {}): Hono<GeneratedHonoEnv<TEnv>> {
62
+ const setup = ${lower}PartsSetup(config)
63
+ const opConfig = setup.opFor('${meta.configKey}')
64
+ const app = new Hono<GeneratedHonoEnv<TEnv>>()
65
+ app.get(${pathValue}, createReadRoute<TCtx, TPrisma, TEnv>({ config, opConfig, opKind: '${opKind}', handler: ${handler}, parse: 'query', dropGuard: setup.dropGuard, settleBeforeHooks: setup.settleBeforeHooks }))
66
+ return app
67
+ }
68
+
69
+ export function ${fn}PostRead<TCtx = unknown, TPrisma extends PrismaClientLike = PrismaClientLike, TEnv extends HonoEnvBase = HonoEnvBase>(config: ${modelName}RouteConfig<TCtx, TPrisma, TEnv> = {}): Hono<GeneratedHonoEnv<TEnv>> {
70
+ const setup = ${lower}PartsSetup(config)
71
+ const opConfig = setup.opFor('${meta.configKey}')
72
+ const app = new Hono<GeneratedHonoEnv<TEnv>>()
73
+ app.post(${postPathValue}, createReadRoute<TCtx, TPrisma, TEnv>({ config, opConfig, opKind: '${opKind}', handler: ${handler}, parse: 'body', dropGuard: setup.dropGuard, settleBeforeHooks: setup.settleBeforeHooks }))
74
+ return app
75
+ }
76
+ `;
77
+ })
78
+ .join('\n');
79
+ const writeFactories = writeOps
80
+ .map((meta) => {
81
+ const fn = `${lower}${cap(meta.name)}`;
82
+ const handler = `${modelName}${cap(meta.name)}`;
83
+ const opKind = opKindFor(meta.name);
84
+ const pathValue = pathExpr(meta.pathSuffix);
85
+ return `
86
+ export function ${fn}<TCtx = unknown, TPrisma extends PrismaClientLike = PrismaClientLike, TEnv extends HonoEnvBase = HonoEnvBase>(config: ${modelName}RouteConfig<TCtx, TPrisma, TEnv> = {}): Hono<GeneratedHonoEnv<TEnv>> {
87
+ const setup = ${lower}PartsSetup(config)
88
+ const opConfig = setup.opFor('${meta.configKey}')
89
+ const app = new Hono<GeneratedHonoEnv<TEnv>>()
90
+ app.${meta.method}(${pathValue}, createWriteRoute<TCtx, TPrisma, TEnv>({ config, opConfig, opKind: '${opKind}', handler: ${handler}, dropGuard: setup.dropGuard, settleBeforeHooks: setup.settleBeforeHooks }))
91
+ return app
92
+ }
93
+ `;
94
+ })
95
+ .join('\n');
96
+ return `import { Hono } from 'hono'
97
+ import {
98
+ ${handlerImports}
99
+ } from './${modelName}Handlers${ext}'
100
+ import type {
101
+ RouteConfig,
102
+ HonoEnvBase,
103
+ GeneratedHonoEnv,
104
+ PrismaClientLike,
105
+ } from '../routeConfig.target${ext}'
106
+ import { normalizePrefix, getEnv, resolveDropGuardEnv } from '../misc${ext}'
107
+ import {
108
+ resolveGuardPolicy,
109
+ validateCountSourceWhere,
110
+ warnIfUnguardedRoutes,
111
+ } from '../routeConfig${ext}'
112
+ import {
113
+ createReadRoute,
114
+ createWriteRoute,
115
+ createUpdateEachRoute,
116
+ opConfigFor,
117
+ normalizeHonoOperation,
118
+ type HonoOpConfig,
119
+ } from '../routerParts${ext}'
120
+ import { MODEL_FIELDS, MODEL_ENUMS } from './${modelName}Metadata${ext}'
121
+
122
+ ${(0, generateRouteConfigType_1.generateRouteConfigType)(modelName, 'HonoBeforeHook', guardShapesImport, importStyle, 'hono', clientImport)}
123
+
124
+ // Fixed at generation time, identical to the legacy router factory.
125
+ const DROP_GUARD = ${dropGuard}
126
+
127
+ // No module-level side effects: this file must be tree-shakeable, so unused
128
+ // per-op exports — and everything only they reference, down to the OpenAPI
129
+ // renderer and yaml — drop out of a bundler's output. The environment is read
130
+ // inside the functions that need it.
131
+
132
+ function ${lower}PartsSetup<TCtx = unknown, TPrisma extends PrismaClientLike = PrismaClientLike, TEnv extends HonoEnvBase = HonoEnvBase>(config: ${modelName}RouteConfig<TCtx, TPrisma, TEnv>) {
133
+ validateCountSourceWhere(config.pagination?.countSource, '${modelName} pagination')
134
+ validateCountSourceWhere(
135
+ (config.findManyPaginated && typeof config.findManyPaginated === 'object' ? config.findManyPaginated : undefined)?.pagination?.countSource,
136
+ '${modelName} findManyPaginated pagination',
137
+ )
138
+
139
+ const isEnabled = (value: unknown): boolean => value !== false && !!(config.enableAll || value)
140
+ warnIfUnguardedRoutes('${modelName}', ['findMany', 'findUnique', 'findUniqueOrThrow', 'findFirst', 'findFirstOrThrow', 'findManyPaginated', 'count', 'aggregate', 'groupBy', 'create', 'createMany', 'createManyAndReturn', 'update', 'updateMany', 'updateManyAndReturn', 'upsert', 'delete', 'deleteMany'], config, isEnabled)
141
+
142
+ const customPrefix = normalizePrefix(config.customUrlPrefix || '')
143
+ const modelPrefix = config.addModelPrefix !== false ? '/${modelSegment}' : ''
144
+ const basePath = customPrefix + modelPrefix
145
+
146
+ const POLICY = resolveGuardPolicy(config)
147
+ const dropGuard =
148
+ DROP_GUARD || (POLICY.allowE2EGuardBypass && resolveDropGuardEnv(getEnv()))
149
+ const settleBeforeHooks = POLICY.guardResolutionOrder === 'before-hooks'
150
+
151
+ const opFor = <K extends keyof ${modelName}RouteConfig<TCtx, TPrisma, TEnv>>(
152
+ key: K,
153
+ ): HonoOpConfig<TEnv> => {
154
+ const raw = config[key] as unknown as Parameters<typeof normalizeHonoOperation<TEnv>>[0]
155
+ return opConfigFor<TEnv>(raw, '${modelName}.' + String(key), POLICY)
156
+ }
157
+
158
+ return { basePath, POLICY, dropGuard, settleBeforeHooks, opFor }
159
+ }
160
+ ${readFactories}
161
+ ${writeFactories}
162
+ export function ${lower}UpdateEach<TCtx = unknown, TPrisma extends PrismaClientLike = PrismaClientLike, TEnv extends HonoEnvBase = HonoEnvBase>(config: ${modelName}RouteConfig<TCtx, TPrisma, TEnv> = {}): Hono<GeneratedHonoEnv<TEnv>> {
163
+ const setup = ${lower}PartsSetup(config)
164
+ if (!setup.POLICY.enableUpdateEach) {
165
+ throw new Error(
166
+ '${modelName}.updateEach: enableUpdateEach is false, so this part ' +
167
+ 'is not available. It bypasses guard shapes entirely, so there is no ' +
168
+ 'configuration that makes it safe to expose.',
169
+ )
170
+ }
171
+ const raw = config.updateEach as unknown as Parameters<typeof normalizeHonoOperation<TEnv>>[0]
172
+ const opConfig = normalizeHonoOperation<TEnv>(raw)
173
+ const app = new Hono<GeneratedHonoEnv<TEnv>>()
174
+ app.post(setup.basePath ? \`\${setup.basePath}/each\` : '/each', createUpdateEachRoute<TCtx, TPrisma, TEnv>({ config, opConfig, handler: ${modelName}UpdateEach, dropGuard: setup.dropGuard }))
175
+ return app
176
+ }
177
+
178
+ `;
179
+ }
180
+ //# sourceMappingURL=generateRouterPartsHono.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateRouterPartsHono.js","sourceRoot":"","sources":["../../src/generators/generateRouterPartsHono.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { ImportStyle } from '../utils/resolveImportStyle';
2
2
  import type { Target } from '../constants';
3
- export declare function generateUnifiedDocs(modelNames: string[], target: Target, importStyle: ImportStyle): string;
3
+ export declare function generateUnifiedDocs(modelNames: string[], pathSegments: Record<string, string>, target: Target, importStyle: ImportStyle): string;
@@ -2,17 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateUnifiedDocs = generateUnifiedDocs;
4
4
  const importExt_1 = require("../utils/importExt");
5
- function generateUnifiedDocs(modelNames, target, importStyle) {
5
+ function generateUnifiedDocs(modelNames, pathSegments, target, importStyle) {
6
6
  const ext = (0, importExt_1.importExt)(importStyle);
7
7
  if (target === 'fastify')
8
- return generateFastify(modelNames, ext);
8
+ return generateFastify(modelNames, pathSegments, ext);
9
9
  if (target === 'hono')
10
- return generateHono(modelNames, ext);
11
- return generateExpress(modelNames, ext);
10
+ return generateHono(modelNames, pathSegments, ext);
11
+ return generateExpress(modelNames, pathSegments, ext);
12
12
  }
13
13
  const renderIndexFn = `function renderIndex(title: string, modelNames: string[], basePath: string): string {
14
+ const segments = MODEL_PATH_SEGMENTS as Record<string, string>
14
15
  const links = modelNames
15
- .map((n) => '<li><a href="' + basePath + '/' + n.toLowerCase() + '">' + n + '</a></li>')
16
+ .map((n) => '<li><a href="' + basePath + '/' + (segments[n] ?? n.toLowerCase()) + '">' + n + '</a></li>')
16
17
  .join('')
17
18
 
18
19
  return '<!DOCTYPE html><html><head><meta charset="utf-8" /><title>' + title +
@@ -23,7 +24,7 @@ const renderIndexFn = `function renderIndex(title: string, modelNames: string[],
23
24
  '<ul class="mt-4 list-disc pl-6 text-sm">' + links + '</ul>' +
24
25
  '</div></body></html>'
25
26
  }`;
26
- function generateExpress(modelNames, ext) {
27
+ function generateExpress(modelNames, pathSegments, ext) {
27
28
  return `import type { Router } from 'express'
28
29
  import { getEnv, removeTrailingSlash } from './misc${ext}'
29
30
 
@@ -31,6 +32,8 @@ const _env = getEnv()
31
32
 
32
33
  const MODELS = ${JSON.stringify(modelNames)} as const
33
34
 
35
+ const MODEL_PATH_SEGMENTS = ${JSON.stringify(pathSegments)} as const
36
+
34
37
  interface UnifiedDocsConfig {
35
38
  title?: string
36
39
  basePath?: string
@@ -57,7 +60,7 @@ ${renderIndexFn}
57
60
  export default registerUnifiedDocs
58
61
  `;
59
62
  }
60
- function generateFastify(modelNames, ext) {
63
+ function generateFastify(modelNames, pathSegments, ext) {
61
64
  return `import type { FastifyInstance } from 'fastify'
62
65
  import { getEnv, removeTrailingSlash } from './misc${ext}'
63
66
 
@@ -65,6 +68,8 @@ const _env = getEnv()
65
68
 
66
69
  const MODELS = ${JSON.stringify(modelNames)} as const
67
70
 
71
+ const MODEL_PATH_SEGMENTS = ${JSON.stringify(pathSegments)} as const
72
+
68
73
  interface UnifiedDocsConfig {
69
74
  title?: string
70
75
  basePath?: string
@@ -94,7 +99,7 @@ ${renderIndexFn}
94
99
  export default registerUnifiedDocs
95
100
  `;
96
101
  }
97
- function generateHono(modelNames, ext) {
102
+ function generateHono(modelNames, pathSegments, ext) {
98
103
  return `import type { Hono } from 'hono'
99
104
  import { getEnv, removeTrailingSlash } from './misc${ext}'
100
105
 
@@ -102,6 +107,8 @@ const _env = getEnv()
102
107
 
103
108
  const MODELS = ${JSON.stringify(modelNames)} as const
104
109
 
110
+ const MODEL_PATH_SEGMENTS = ${JSON.stringify(pathSegments)} as const
111
+
105
112
  interface UnifiedDocsConfig {
106
113
  title?: string
107
114
  basePath?: string
@@ -1 +1 @@
1
- {"version":3,"file":"generateUnifiedDocs.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedDocs.ts"],"names":[],"mappings":";;AAIA,kDASC;AAZD,kDAA8C;AAG9C,SAAgB,mBAAmB,CACjC,UAAoB,EACpB,MAAc,EACd,WAAwB;IAExB,MAAM,GAAG,GAAG,IAAA,qBAAS,EAAC,WAAW,CAAC,CAAA;IAClC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IACjE,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;IAC3D,OAAO,eAAe,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,aAAa,GAAG;;;;;;;;;;;;EAYpB,CAAA;AAEF,SAAS,eAAe,CAAC,UAAoB,EAAE,GAAW;IACxD,OAAO;qDAC4C,GAAG;;;;iBAIvC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;EAuBzC,aAAa;;;CAGd,CAAA;AACD,CAAC;AAED,SAAS,eAAe,CAAC,UAAoB,EAAE,GAAW;IACxD,OAAO;qDAC4C,GAAG;;;;iBAIvC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BzC,aAAa;;;CAGd,CAAA;AACD,CAAC;AAED,SAAS,YAAY,CAAC,UAAoB,EAAE,GAAW;IACrD,OAAO;qDAC4C,GAAG;;;;iBAIvC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;EAuBzC,aAAa;;;CAGd,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"generateUnifiedDocs.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedDocs.ts"],"names":[],"mappings":";;AAIA,kDAWC;AAdD,kDAA8C;AAG9C,SAAgB,mBAAmB,CACjC,UAAoB,EACpB,YAAoC,EACpC,MAAc,EACd,WAAwB;IAExB,MAAM,GAAG,GAAG,IAAA,qBAAS,EAAC,WAAW,CAAC,CAAA;IAClC,IAAI,MAAM,KAAK,SAAS;QACtB,OAAO,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,CAAC,CAAA;IACvD,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,CAAC,CAAA;IACzE,OAAO,eAAe,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,CAAC,CAAA;AACvD,CAAC;AAED,MAAM,aAAa,GAAG;;;;;;;;;;;;;EAapB,CAAA;AAEF,SAAS,eAAe,CACtB,UAAoB,EACpB,YAAoC,EACpC,GAAW;IAEX,OAAO;qDAC4C,GAAG;;;;iBAIvC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;8BAEb,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;EAuBxD,aAAa;;;CAGd,CAAA;AACD,CAAC;AAED,SAAS,eAAe,CACtB,UAAoB,EACpB,YAAoC,EACpC,GAAW;IAEX,OAAO;qDAC4C,GAAG;;;;iBAIvC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;8BAEb,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BxD,aAAa;;;CAGd,CAAA;AACD,CAAC;AAED,SAAS,YAAY,CACnB,UAAoB,EACpB,YAAoC,EACpC,GAAW;IAEX,OAAO;qDAC4C,GAAG;;;;iBAIvC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;;8BAEb,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;EAuBxD,aAAa;;;CAGd,CAAA;AACD,CAAC"}
@@ -1,5 +1,5 @@
1
- import { DMMF } from '@prisma/generator-helper';
2
- import { ImportStyle } from '../utils/resolveImportStyle';
1
+ import type { DMMF } from '@prisma/generator-helper';
2
+ import type { ImportStyle } from '../utils/resolveImportStyle';
3
3
  export interface UnifiedHandlerOptions {
4
4
  model: DMMF.Model;
5
5
  importStyle: ImportStyle;
@@ -7,7 +7,8 @@ function generateUnifiedHandler(options) {
7
7
  const ext = (0, importExt_1.importExt)(options.importStyle);
8
8
  const modelName = options.model.name;
9
9
  const dispatchOps = operationDefinitions_1.OPERATION_METADATA.filter((m) => m.name !== 'updateEach');
10
- const handlers = dispatchOps.map((meta) => {
10
+ const handlers = dispatchOps
11
+ .map((meta) => {
11
12
  const exportName = `${modelName}${meta.name.charAt(0).toUpperCase() + meta.name.slice(1)}`;
12
13
  return `
13
14
  export async function ${exportName}(
@@ -16,17 +17,39 @@ export async function ${exportName}(
16
17
  next: NextFunction,
17
18
  ) {
18
19
  try {
19
- ;(res.locals as LocalsBag).data = await core.${meta.coreName}(buildContext(req, res))
20
+ const locals = readLocals(res)
21
+ ;locals.data = await executeOperation(
22
+ { variantKey: locals.guardVariantKey, caller: locals.guardCaller },
23
+ { guardShape: locals.guardShape },
24
+ {
25
+ core: core.${meta.coreName},
26
+ args: queryChannel(res),
27
+ body: req.body,
28
+ prisma: requirePrisma((req as ExtendedRequest).prisma),
29
+ postgres: (req as ExtendedRequest).postgres,
30
+ sqlite: (req as ExtendedRequest).sqlite,
31
+ pagination: locals.routeConfig?.pagination,
32
+ override: locals.operationOverride,
33
+ getContext: locals.getContext,
34
+ },
35
+ )
20
36
  next()
21
37
  } catch (error: unknown) {
22
- next(mapError(error))
38
+ next(classifyError(error))
23
39
  }
24
40
  }`;
25
- }).join('\n');
41
+ })
42
+ .join('\n');
26
43
  return `import type { Request, Response, NextFunction } from 'express'
27
44
  import * as core from './${modelName}Core${ext}'
28
- import { OperationContext } from '../operationRuntime${ext}'
29
- import { mapError } from '../errorMapper${ext}'
45
+ import type { RuntimeOperationOverride } from '../operationRuntime${ext}'
46
+ import type { PaginationConfig } from '../routeConfig${ext}'
47
+ import {
48
+ executeOperation,
49
+ classifyError,
50
+ requirePrisma,
51
+ type ArgsChannel,
52
+ } from '../operationPipeline${ext}'
30
53
 
31
54
  type ExtendedRequest = Request & {
32
55
  prisma?: unknown
@@ -36,24 +59,25 @@ type ExtendedRequest = Request & {
36
59
 
37
60
  type LocalsBag = {
38
61
  parsedQuery?: Record<string, unknown>
39
- routeConfig?: { pagination?: unknown }
62
+ routeConfig?: { pagination?: PaginationConfig }
40
63
  guardShape?: Record<string, unknown>
41
64
  guardCaller?: string
65
+ guardVariantKey?: string
66
+ operationOverride?: RuntimeOperationOverride
67
+ getContext?: () => Promise<unknown>
42
68
  data?: unknown
43
69
  }
44
70
 
45
- function buildContext(req: Request, res: Response): OperationContext {
46
- const extReq = req as ExtendedRequest
47
- const locals = res.locals as LocalsBag
71
+ function readLocals(res: Response): LocalsBag {
72
+ return res.locals as LocalsBag
73
+ }
74
+
75
+ function queryChannel(res: Response): ArgsChannel {
48
76
  return {
49
- prisma: extReq.prisma,
50
- postgres: extReq.postgres,
51
- sqlite: extReq.sqlite,
52
- parsedQuery: locals.parsedQuery,
53
- body: req.body,
54
- guardShape: locals.guardShape,
55
- guardCaller: locals.guardCaller,
56
- paginationConfig: (locals.routeConfig?.pagination) as OperationContext['paginationConfig'],
77
+ read: () => readLocals(res).parsedQuery,
78
+ write: (next) => {
79
+ readLocals(res).parsedQuery = next
80
+ },
57
81
  }
58
82
  }
59
83
  ${handlers}
@@ -1 +1 @@
1
- {"version":3,"file":"generateUnifiedHandler.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedHandler.ts"],"names":[],"mappings":";;AAUA,wDA2DC;AAnED,kDAA8C;AAC9C,uEAAiE;AAOjE,SAAgB,sBAAsB,CAAC,OAA8B;IACnE,MAAM,GAAG,GAAG,IAAA,qBAAS,EAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA;IAEpC,MAAM,WAAW,GAAG,yCAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;IAE7E,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,UAAU,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAE1F,OAAO;wBACa,UAAU;;;;;;mDAMiB,IAAI,CAAC,QAAQ;;;;;EAK9D,CAAA;IACA,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO;2BACkB,SAAS,OAAO,GAAG;uDACS,GAAG;0CAChB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B3C,QAAQ;CACT,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"generateUnifiedHandler.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedHandler.ts"],"names":[],"mappings":";;AAUA,wDAkFC;AA1FD,kDAA8C;AAC9C,uEAAiE;AAOjE,SAAgB,sBAAsB,CAAC,OAA8B;IACnE,MAAM,GAAG,GAAG,IAAA,qBAAS,EAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA;IACpC,MAAM,WAAW,GAAG,yCAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;IAE7E,MAAM,QAAQ,GAAG,WAAW;SACzB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,UAAU,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAE1F,OAAO;wBACW,UAAU;;;;;;;;;;;qBAWb,IAAI,CAAC,QAAQ;;;;;;;;;;;;;;;EAehC,CAAA;IACE,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,OAAO;2BACkB,SAAS,OAAO,GAAG;oEACsB,GAAG;uDAChB,GAAG;;;;;;8BAM5B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B/B,QAAQ;CACT,CAAA;AACD,CAAC"}
@@ -77,8 +77,8 @@ exports.GUARD_OPTION_METADATA = Object.freeze([
77
77
  type: 'boolean',
78
78
  default: exports.UPSTREAM_GUARD_DEFAULTS.allowE2EGuardBypass,
79
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.',
80
+ label: 'Honour the PGE_DROP_GUARD environment guard bypass',
81
+ description: 'Treats PGE_DROP_GUARD=true in the environment as a request to drop the guard. Deprecated alias: E2E=true.',
82
82
  warning: 'A runtime variable can weaken a deployed artifact after generation. On an edge runtime this is an ordinary config var.',
83
83
  target: 'hono',
84
84
  },
@@ -112,12 +112,17 @@ exports.GUARD_METADATA_SCOPE = Object.freeze({
112
112
  function resolveGuardPolicy(config) {
113
113
  return {
114
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,
115
+ validateGuardShapes: config?.validateGuardShapes ??
116
+ exports.UPSTREAM_GUARD_DEFAULTS.validateGuardShapes,
117
+ requireDefaultVariantOptIn: config?.requireDefaultVariantOptIn ??
118
+ exports.UPSTREAM_GUARD_DEFAULTS.requireDefaultVariantOptIn,
117
119
  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,
120
+ guardResolutionOrder: config?.guardResolutionOrder ??
121
+ exports.UPSTREAM_GUARD_DEFAULTS.guardResolutionOrder,
122
+ allowE2EGuardBypass: config?.allowE2EGuardBypass ??
123
+ exports.UPSTREAM_GUARD_DEFAULTS.allowE2EGuardBypass,
124
+ validateResolvedShapes: config?.validateResolvedShapes ??
125
+ exports.UPSTREAM_GUARD_DEFAULTS.validateResolvedShapes,
121
126
  };
122
127
  }
123
128
  //# sourceMappingURL=guardOptions.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"guardOptions.js","sourceRoot":"","sources":["../src/guardOptions.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
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';
2
+ export type { GuardPolicy, GuardOptionMetadata, GuardResolutionOrder, } from './guardOptions';
3
+ import { GeneratorOptions } from '@prisma/generator-helper';
4
+ export declare function runGenerate(options: GeneratorOptions): Promise<void>;