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
@@ -8,23 +8,55 @@ function generateHonoHandler(options) {
8
8
  const modelName = options.model.name;
9
9
  const readOps = operationDefinitions_1.OPERATION_METADATA.filter((m) => m.kind === 'read');
10
10
  const writeOps = operationDefinitions_1.OPERATION_METADATA.filter((m) => (m.kind === 'write' || m.kind === 'batch') && m.name !== 'updateEach');
11
- const readHandlers = readOps.map((meta) => {
11
+ const readHandlers = readOps
12
+ .map((meta) => {
12
13
  const exportName = `${modelName}${meta.name.charAt(0).toUpperCase() + meta.name.slice(1)}`;
13
14
  return `
14
15
  export async function ${exportName}(c: HandlerContext): Promise<void> {
15
- const data = await core.${meta.coreName}(buildContext(c))
16
+ const data = await executeOperation(
17
+ { variantKey: c.get('guardVariantKey'), caller: c.get('guardCaller') },
18
+ { guardShape: c.get('guardShape') },
19
+ {
20
+ core: core.${meta.coreName},
21
+ args: queryChannel(c),
22
+ body: c.get('body'),
23
+ prisma: requirePrisma(c.get('prisma')),
24
+ postgres: c.get('postgres'),
25
+ sqlite: c.get('sqlite'),
26
+ pagination: c.get('routeConfig')?.pagination,
27
+ override: c.get('operationOverride'),
28
+ getContext: c.get('getContext'),
29
+ },
30
+ )
16
31
  c.set('resultData', data)
17
32
  }`;
18
- }).join('\n');
19
- const writeHandlers = writeOps.map((meta) => {
33
+ })
34
+ .join('\n');
35
+ const writeHandlers = writeOps
36
+ .map((meta) => {
20
37
  const exportName = `${modelName}${meta.name.charAt(0).toUpperCase() + meta.name.slice(1)}`;
21
38
  return `
22
39
  export async function ${exportName}(c: HandlerContext): Promise<void> {
23
- const data = await core.${meta.coreName}(buildContext(c))
40
+ const data = await executeOperation(
41
+ { variantKey: c.get('guardVariantKey'), caller: c.get('guardCaller') },
42
+ { guardShape: c.get('guardShape') },
43
+ {
44
+ core: core.${meta.coreName},
45
+ args: queryChannel(c),
46
+ body: c.get('body'),
47
+ prisma: requirePrisma(c.get('prisma')),
48
+ postgres: c.get('postgres'),
49
+ sqlite: c.get('sqlite'),
50
+ pagination: c.get('routeConfig')?.pagination,
51
+ override: c.get('operationOverride'),
52
+ getContext: c.get('getContext'),
53
+ },
54
+ )
24
55
  c.set('resultData', data)
25
56
  c.set('resultStatus', ${meta.successStatus})
26
57
  }`;
27
- }).join('\n');
58
+ })
59
+ .join('\n');
28
60
  const updateEachExportName = `${modelName}UpdateEach`;
29
61
  const updateEachHandler = `
30
62
  export async function ${updateEachExportName}(c: HandlerContext): Promise<void> {
@@ -35,12 +67,26 @@ export async function ${updateEachExportName}(c: HandlerContext): Promise<void>
35
67
  return `import type { Context } from 'hono'
36
68
  import * as core from './${modelName}Core${ext}'
37
69
  import type { OperationContext } from '../operationRuntime${ext}'
70
+ import {
71
+ executeOperation,
72
+ requirePrisma,
73
+ type ArgsChannel,
74
+ } from '../operationPipeline${ext}'
38
75
  import type { HonoInternalVariables } from '../routeConfig.target${ext}'
39
76
 
40
77
  type HandlerContext = Context<{ Variables: HonoInternalVariables }>
41
78
 
79
+ function queryChannel(c: HandlerContext): ArgsChannel {
80
+ return {
81
+ read: () => c.get('parsedQuery'),
82
+ write: (next) => c.set('parsedQuery', next),
83
+ }
84
+ }
85
+
42
86
  function buildContext(c: HandlerContext): OperationContext {
43
87
  return {
88
+ operationOverride: c.get('operationOverride'),
89
+ resolveOperationContext: c.get('getContext'),
44
90
  prisma: c.get('prisma'),
45
91
  postgres: c.get('postgres'),
46
92
  sqlite: c.get('sqlite'),
@@ -48,6 +94,7 @@ function buildContext(c: HandlerContext): OperationContext {
48
94
  body: c.get('body'),
49
95
  guardShape: c.get('guardShape'),
50
96
  guardCaller: c.get('guardCaller'),
97
+ guardVariantKey: c.get('guardVariantKey'),
51
98
  paginationConfig: c.get('routeConfig')?.pagination,
52
99
  }
53
100
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generateHonoHandler.js","sourceRoot":"","sources":["../../src/generators/generateHonoHandler.ts"],"names":[],"mappings":";;AAKA,kDA8DC;AAjED,kDAA8C;AAC9C,uEAAiE;AAEjE,SAAgB,mBAAmB,CAAC,OAGnC;IACC,MAAM,GAAG,GAAG,IAAA,qBAAS,EAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA;IAEpC,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,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAC7E,CAAA;IAED,MAAM,YAAY,GAAG,OAAO,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;QAC1F,OAAO;wBACa,UAAU;4BACN,IAAI,CAAC,QAAQ;;EAEvC,CAAA;IACA,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1C,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;QAC1F,OAAO;wBACa,UAAU;4BACN,IAAI,CAAC,QAAQ;;0BAEf,IAAI,CAAC,aAAa;EAC1C,CAAA;IACA,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,oBAAoB,GAAG,GAAG,SAAS,YAAY,CAAA;IACrD,MAAM,iBAAiB,GAAG;wBACJ,oBAAoB;;;;EAI1C,CAAA;IAEA,OAAO;2BACkB,SAAS,OAAO,GAAG;4DACc,GAAG;mEACI,GAAG;;;;;;;;;;;;;;;;EAgBpE,YAAY;EACZ,aAAa;EACb,iBAAiB;CAClB,CAAA;AACD,CAAC"}
1
+ {"version":3,"file":"generateHonoHandler.js","sourceRoot":"","sources":["../../src/generators/generateHonoHandler.ts"],"names":[],"mappings":";;AAKA,kDA8GC;AAjHD,kDAA8C;AAC9C,uEAAiE;AAEjE,SAAgB,mBAAmB,CAAC,OAGnC;IACC,MAAM,GAAG,GAAG,IAAA,qBAAS,EAAC,OAAO,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA;IAEpC,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,CACxC,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CACxE,CAAA;IAED,MAAM,YAAY,GAAG,OAAO;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;QAC1F,OAAO;wBACW,UAAU;;;;;mBAKf,IAAI,CAAC,QAAQ;;;;;;;;;;;;EAY9B,CAAA;IACE,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,aAAa,GAAG,QAAQ;SAC3B,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;QAC1F,OAAO;wBACW,UAAU;;;;;mBAKf,IAAI,CAAC,QAAQ;;;;;;;;;;;;0BAYN,IAAI,CAAC,aAAa;EAC1C,CAAA;IACE,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,MAAM,oBAAoB,GAAG,GAAG,SAAS,YAAY,CAAA;IACrD,MAAM,iBAAiB,GAAG;wBACJ,oBAAoB;;;;EAI1C,CAAA;IAEA,OAAO;2BACkB,SAAS,OAAO,GAAG;4DACc,GAAG;;;;;8BAKjC,GAAG;mEACkC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BpE,YAAY;EACZ,aAAa;EACb,iBAAiB;CAClB,CAAA;AACD,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { DMMF } from '@prisma/generator-helper';
2
+ import type { ImportStyle } from '../utils/resolveImportStyle';
3
+ import type { WriteStrategy } from '../constants';
4
+ import { type PathCase } from '../utils/pathCasing';
5
+ export declare function generateHonoOpenApiRoutes({ model, enums, guardShapesImport, clientImport, importStyle, writeStrategy, pathCase, }: {
6
+ model: DMMF.Model;
7
+ enums: DMMF.DatamodelEnum[];
8
+ guardShapesImport: string | null;
9
+ clientImport?: string;
10
+ importStyle: ImportStyle;
11
+ writeStrategy: WriteStrategy;
12
+ pathCase: PathCase;
13
+ }): string;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateHonoOpenApiRoutes = generateHonoOpenApiRoutes;
4
+ const generateRouteConfigType_1 = require("./generateRouteConfigType");
5
+ const importExt_1 = require("../utils/importExt");
6
+ const pathCasing_1 = require("../utils/pathCasing");
7
+ function generateHonoOpenApiRoutes({ model, enums, guardShapesImport, clientImport, importStyle, writeStrategy, pathCase, }) {
8
+ const ext = (0, importExt_1.importExt)(importStyle);
9
+ const modelName = model.name;
10
+ const modelSegment = (0, pathCasing_1.modelPathSegment)(modelName, pathCase);
11
+ const lower = modelName.charAt(0).toLowerCase() + modelName.slice(1);
12
+ return `import { Hono } from 'hono'
13
+ import type {
14
+ RouteConfig,
15
+ HonoEnvBase,
16
+ GeneratedHonoEnv,
17
+ PrismaClientLike,
18
+ } from '../routeConfig.target${ext}'
19
+ import { normalizePrefix, getEnv } from '../misc${ext}'
20
+ import { registerOpenApiRoutes } from '../routerParts${ext}'
21
+ import { buildModelOpenApi } from '../buildModelOpenApi${ext}'
22
+ import { MODEL_FIELDS, MODEL_ENUMS } from './${modelName}Metadata${ext}'
23
+
24
+ ${(0, generateRouteConfigType_1.generateRouteConfigType)(modelName, 'HonoBeforeHook', guardShapesImport, importStyle, 'hono', clientImport)}
25
+
26
+ export function ${lower}OpenApi<TCtx = unknown, TPrisma extends PrismaClientLike = PrismaClientLike, TEnv extends HonoEnvBase = HonoEnvBase>(config: ${modelName}RouteConfig<TCtx, TPrisma, TEnv> = {}): Hono<GeneratedHonoEnv<TEnv>> {
27
+ const _env = getEnv()
28
+ const customPrefix = normalizePrefix(config.customUrlPrefix || '')
29
+ const modelPrefix = config.addModelPrefix !== false ? '/${modelSegment}' : ''
30
+ const basePath = customPrefix + modelPrefix
31
+
32
+ const openApiDisabled = config.disableOpenApi === true
33
+ || (config.disableOpenApi !== false && (
34
+ _env.NODE_ENV === 'production'
35
+ || _env.DISABLE_OPENAPI === 'true'
36
+ ))
37
+
38
+ const app = new Hono<GeneratedHonoEnv<TEnv>>()
39
+ if (!openApiDisabled) {
40
+ let jsonCache: unknown = undefined
41
+ let yamlCache: string | undefined = undefined
42
+ registerOpenApiRoutes(app, basePath, () => {
43
+ if (jsonCache === undefined) {
44
+ jsonCache = buildModelOpenApi(
45
+ '${modelName}',
46
+ MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
47
+ MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
48
+ config as unknown as Parameters<typeof buildModelOpenApi>[3],
49
+ { format: 'json', writeStrategy: '${writeStrategy}', pathSegment: '${modelSegment}' },
50
+ )
51
+ }
52
+ return jsonCache
53
+ }, () => {
54
+ if (yamlCache === undefined) {
55
+ yamlCache = buildModelOpenApi(
56
+ '${modelName}',
57
+ MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
58
+ MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
59
+ config as unknown as Parameters<typeof buildModelOpenApi>[3],
60
+ { format: 'yaml', writeStrategy: '${writeStrategy}', pathSegment: '${modelSegment}' },
61
+ ) as string
62
+ }
63
+ return yamlCache
64
+ })
65
+ }
66
+ return app
67
+ }
68
+ `;
69
+ }
70
+ //# sourceMappingURL=generateHonoOpenApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateHonoOpenApi.js","sourceRoot":"","sources":["../../src/generators/generateHonoOpenApi.ts"],"names":[],"mappings":";;AAaA,8DA+EC;AA3FD,uEAAmE;AAEnE,kDAA8C;AAE9C,oDAAqE;AAQrE,SAAgB,yBAAyB,CAAC,EACxC,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,QAAQ,GAST;IACC,MAAM,GAAG,GAAG,IAAA,qBAAS,EAAC,WAAW,CAAC,CAAA;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;IAC5B,MAAM,YAAY,GAAG,IAAA,6BAAgB,EAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAEpE,OAAO;;;;;;+BAMsB,GAAG;kDACgB,GAAG;uDACE,GAAG;yDACD,GAAG;+CACb,SAAS,WAAW,GAAG;;EAEpE,IAAA,iDAAuB,EAAC,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC;;kBAE1F,KAAK,gIAAgI,SAAS;;;4DAGpG,YAAY;;;;;;;;;;;;;;;;aAgB3D,SAAS;;;;8CAIwB,aAAa,oBAAoB,YAAY;;;;;;;aAO9E,SAAS;;;;8CAIwB,aAAa,oBAAoB,YAAY;;;;;;;;CAQ1F,CAAA;AACD,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import { GeneratorOptions } from '@prisma/generator-helper';
2
2
  export declare function getRelativeClientPath(generatorOptions: GeneratorOptions, modelName: string): string;
3
3
  export declare function getGuardShapesImport(options: GeneratorOptions, modelName: string): string | null;
4
+ export declare function getRelativeClientTypeImport(options: GeneratorOptions, modelName: string): string;
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getRelativeClientPath = getRelativeClientPath;
7
7
  exports.getGuardShapesImport = getGuardShapesImport;
8
+ exports.getRelativeClientTypeImport = getRelativeClientTypeImport;
8
9
  const path_1 = __importDefault(require("path"));
9
10
  function findClientGenerator(options) {
10
11
  const byName = options.otherGenerators.find((gen) => gen.name === 'client');
@@ -58,4 +59,9 @@ function getGuardShapesImport(options, modelName) {
58
59
  const shapesPath = path_1.default.join(guard.output.value, 'shapes');
59
60
  return getRelativeImportPath(fromDir, shapesPath);
60
61
  }
62
+ function getRelativeClientTypeImport(options, modelName) {
63
+ const client = findClientGenerator(options);
64
+ const entry = client?.provider.value === 'prisma-client' ? 'client' : 'index';
65
+ return getRelativeClientPath(options, modelName) + '/' + entry;
66
+ }
61
67
  //# sourceMappingURL=generateImportPrismaStatement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateImportPrismaStatement.js","sourceRoot":"","sources":["../../src/generators/generateImportPrismaStatement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateImportPrismaStatement.js","sourceRoot":"","sources":["../../src/generators/generateImportPrismaStatement.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ImportStyle } from '../utils/resolveImportStyle';
2
+ export declare function generateMcpApp({ serverName, serverVersion, importStyle, }: {
3
+ serverName: string;
4
+ serverVersion: string;
5
+ importStyle: ImportStyle;
6
+ }): string;
7
+ export declare function generateMcpMount({ target, importStyle, }: {
8
+ target: 'express' | 'fastify' | 'hono';
9
+ importStyle: ImportStyle;
10
+ }): string;
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateMcpApp = generateMcpApp;
4
+ exports.generateMcpMount = generateMcpMount;
5
+ function generateMcpApp({ serverName, serverVersion, importStyle, }) {
6
+ return `import type { McpServer } from '@modelcontextprotocol/server'
7
+ import { registerMcpTools } from './mcpRuntime'
8
+ import type { McpSharedOptions, McpToolContribution } from './mcpRuntime'
9
+
10
+ export const MCP_SERVER_INFO = { name: ${JSON.stringify(serverName)}, version: ${JSON.stringify(serverVersion)} } as const
11
+
12
+ export type McpRegisterOptions = McpSharedOptions & {
13
+ /** Explicit allowlist: only these model-operation tools are registered. */
14
+ tools: readonly McpToolContribution[]
15
+ }
16
+
17
+ /**
18
+ * Register the allowed MCP tools on a server instance. Call from the
19
+ * per-request server factory so \`authInfo\` is the verified principal for THIS
20
+ * request. Throws before registering anything when required options are
21
+ * missing, limits are invalid, or the guard is dropped in this environment.
22
+ */
23
+ export function registerMcpToolsOnServer(
24
+ server: McpServer,
25
+ options: McpRegisterOptions,
26
+ ): void {
27
+ registerMcpTools(server, options)
28
+ }
29
+ `;
30
+ }
31
+ function generateMcpMount({ target, importStyle, }) {
32
+ if (target === 'express') {
33
+ return `import type { RequestHandler } from 'express'
34
+ import type { McpServer, AuthInfo } from '@modelcontextprotocol/server'
35
+ import { createMcpHandler } from '@modelcontextprotocol/server'
36
+ import { toNodeHandler } from '@modelcontextprotocol/node'
37
+
38
+ /**
39
+ * Build the /mcp handler for Express. Authentication is YOUR middleware: put a
40
+ * verified AuthInfo on req.auth (e.g. requireBearerAuth from
41
+ * @modelcontextprotocol/express) before this handler runs. Without req.auth
42
+ * the request fails closed — registration refuses to run without a verified
43
+ * principal.
44
+ */
45
+ export function createMcpExpressHandler(
46
+ getServer: (authInfo: AuthInfo) => McpServer,
47
+ ): RequestHandler {
48
+ const handler = createMcpHandler((ctx) => getServer(ctx.authInfo as AuthInfo))
49
+ const node = toNodeHandler(handler)
50
+ return (req, res) => void node(req, res, req.body)
51
+ }
52
+ `;
53
+ }
54
+ if (target === 'fastify') {
55
+ return `import type { FastifyRequest, FastifyReply } from 'fastify'
56
+ import type { McpServer, AuthInfo } from '@modelcontextprotocol/server'
57
+ import { createMcpHandler } from '@modelcontextprotocol/server'
58
+ import { toNodeHandler } from '@modelcontextprotocol/node'
59
+
60
+ /**
61
+ * Build the /mcp handler for Fastify. Authentication is YOUR hook: attach the
62
+ * verified AuthInfo to request.raw.auth (onRequest) before this handler runs.
63
+ * Without it the request fails closed — registration refuses to run without a
64
+ * verified principal.
65
+ */
66
+ export function createMcpFastifyHandler(
67
+ getServer: (authInfo: AuthInfo) => McpServer,
68
+ ): (request: FastifyRequest, reply: FastifyReply) => Promise<void> {
69
+ const handler = createMcpHandler((ctx) => getServer(ctx.authInfo as AuthInfo))
70
+ const node = toNodeHandler(handler)
71
+ return async (request, reply) => {
72
+ // The Node handler writes the response itself; without hijacking,
73
+ // Fastify would continue its own reply lifecycle after we return.
74
+ reply.hijack()
75
+ await node(request.raw, reply.raw, request.body)
76
+ }
77
+ }
78
+ `;
79
+ }
80
+ return `import type { Context, Next } from 'hono'
81
+ import type { McpServer, AuthInfo } from '@modelcontextprotocol/server'
82
+ import { createMcpHandler } from '@modelcontextprotocol/server'
83
+
84
+ /**
85
+ * Build the /mcp handler for Hono (web-standard). Authentication is YOUR
86
+ * middleware: verify the request and set c.set('authInfo', verified) before
87
+ * this handler runs — or use the web-standard requireBearerAuth gate from
88
+ * @modelcontextprotocol/server and pass its AuthInfo to fetch explicitly.
89
+ */
90
+ export function createMcpHonoHandler(
91
+ getServer: (authInfo: AuthInfo) => McpServer,
92
+ ): (c: Context) => Promise<Response> {
93
+ const handler = createMcpHandler((ctx) => getServer(ctx.authInfo as AuthInfo))
94
+ return async (c: Context) => {
95
+ let parsedBody: unknown
96
+ try {
97
+ parsedBody = await c.req.json()
98
+ } catch {
99
+ parsedBody = undefined
100
+ }
101
+ const authInfo = c.get('authInfo') as AuthInfo | undefined
102
+ if (!authInfo) {
103
+ return Response.json(
104
+ { message: 'unauthenticated: a verified principal is required' },
105
+ { status: 401 },
106
+ )
107
+ }
108
+ return handler.fetch(c.req.raw, { parsedBody, authInfo })
109
+ }
110
+ }
111
+ `;
112
+ }
113
+ //# sourceMappingURL=generateMcpApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateMcpApp.js","sourceRoot":"","sources":["../../src/generators/generateMcpApp.ts"],"names":[],"mappings":";;AAMA,wCAiCC;AAMD,4CAuFC;AA9HD,SAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,aAAa,EACb,WAAW,GAKZ;IACC,OAAO;;;;yCAIgC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;;;;;;;;;;;;;;;;;;;CAmB7G,CAAA;AACD,CAAC;AAMD,SAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,WAAW,GAIZ;IACC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;;;;;;;;;;;;;;;;;;;CAmBV,CAAA;IACC,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;;;;;;;;;;;;;;;;;;;;;;;CAuBV,CAAA;IACC,CAAC;IACD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BR,CAAA;AACD,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { DMMF } from '@prisma/generator-helper';
2
+ import type { ImportStyle } from '../utils/resolveImportStyle';
3
+ import type { WriteStrategy } from '../constants';
4
+ export declare function generateModelMcp({ model, allModels, importStyle, writeStrategy, }: {
5
+ model: DMMF.Model;
6
+ allModels: readonly DMMF.Model[];
7
+ importStyle: ImportStyle;
8
+ writeStrategy: WriteStrategy;
9
+ }): string;
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateModelMcp = generateModelMcp;
4
+ const importExt_1 = require("../utils/importExt");
5
+ const operationDefinitions_1 = require("../copy/operationDefinitions");
6
+ const MCP_OPS = [
7
+ { name: 'findMany', coreName: 'findMany' },
8
+ { name: 'findUnique', coreName: 'findUnique' },
9
+ { name: 'findFirst', coreName: 'findFirst' },
10
+ { name: 'count', coreName: 'count' },
11
+ { name: 'findManyPaginated', coreName: 'findManyPaginated' },
12
+ ];
13
+ const MCP_WRITE_OPS = operationDefinitions_1.OPERATION_METADATA.filter((m) => (m.kind === 'write' || m.kind === 'batch') && m.name !== 'updateEach').map((m) => ({ name: m.name, coreName: m.coreName }));
14
+ const MAX_PROJECTION_DEPTH = 4;
15
+ function transitiveRelations(model, allModels) {
16
+ const byName = new Map(allModels.map((m) => [m.name, m]));
17
+ const involved = new Set([model.name]);
18
+ let frontier = [model.name];
19
+ for (let depth = 0; depth < MAX_PROJECTION_DEPTH; depth++) {
20
+ const next = [];
21
+ for (const name of frontier) {
22
+ const m = byName.get(name);
23
+ if (!m)
24
+ continue;
25
+ for (const field of m.fields) {
26
+ if (field.kind === 'object' &&
27
+ byName.has(field.type) &&
28
+ !involved.has(field.type)) {
29
+ involved.add(field.type);
30
+ next.push(field.type);
31
+ }
32
+ }
33
+ }
34
+ if (next.length === 0)
35
+ break;
36
+ frontier = next;
37
+ }
38
+ return [...involved].filter((n) => n !== model.name);
39
+ }
40
+ function generateModelMcp({ model, allModels, importStyle, writeStrategy, }) {
41
+ const ext = (0, importExt_1.importExt)(importStyle);
42
+ const modelName = model.name;
43
+ const lower = modelName.charAt(0).toLowerCase() + modelName.slice(1);
44
+ const cap = (s) => s.charAt(0).toUpperCase() + s.slice(1);
45
+ const related = transitiveRelations(model, allModels);
46
+ const relatedImports = related
47
+ .map((t) => `import { MODEL_FIELDS as ${t}Fields, MODEL_ENUMS as ${t}Enums, COMPOUND_ID as ${t}CompoundId, COMPOUND_UNIQUES as ${t}CompoundUniques } from '../${t}/${t}Metadata${ext}'`)
48
+ .join('\n');
49
+ const enumSets = [modelName, ...related]
50
+ .map((t) => `for (const e of ${t === modelName ? 'MODEL_ENUMS' : t + 'Enums'}) {
51
+ enums.set(e.name, e.values.map((v) => v.name))
52
+ }`)
53
+ .join('\n');
54
+ const coreEntries = [modelName, ...related]
55
+ .map((t) => {
56
+ const fields = t === modelName ? 'MODEL_FIELDS' : t + 'Fields';
57
+ const compound = t === modelName
58
+ ? 'compoundUniques'
59
+ : `(() => {
60
+ const list: Array<{ selector: string; fields: string[] }> = []
61
+ if (${t}CompoundId) {
62
+ list.push({ selector: ${t}CompoundId.selector, fields: [...${t}CompoundId.fields] })
63
+ }
64
+ for (const cu of ${t}CompoundUniques) {
65
+ list.push({ selector: cu.selector, fields: [...cu.fields] })
66
+ }
67
+ return list
68
+ })()`;
69
+ return ` ['${t}', {
70
+ name: '${t}',
71
+ fields: ${fields},
72
+ enums,
73
+ uniqueFields: ${fields}.filter((f) => f.isId || f.isUnique).map((f) => f.name),
74
+ compoundUniques: ${compound},
75
+ }]`;
76
+ })
77
+ .join(',\n');
78
+ const writeNames = new Set(MCP_WRITE_OPS.map((op) => op.name));
79
+ const factories = [...MCP_OPS, ...MCP_WRITE_OPS]
80
+ .map((op) => `
81
+ export function ${lower}${cap(op.name)}Tool<TCtx = unknown, TPrisma extends PrismaClientLike = PrismaClientLike>(options: {
82
+ config: ${modelName}RouteConfig<TCtx, TPrisma>
83
+ }): McpToolContribution {
84
+ return ${writeNames.has(op.name) ? 'createMcpWriteTool' : 'createMcpReadTool'}({
85
+ model: '${modelName}',
86
+ operation: '${op.name}',
87
+ config: options.config as unknown as Record<string, unknown>,
88
+ core: core.${op.coreName},
89
+ fields: MODEL_FIELDS,
90
+ enums: enums,
91
+ uniqueFields: MODEL_FIELDS.filter((f) => f.isId || f.isUnique).map(
92
+ (f) => f.name,
93
+ ),
94
+ compoundUniques: compoundUniques,
95
+ modelIndex: modelIndex,${writeNames.has(op.name)
96
+ ? `
97
+ writeStrategy: '${writeStrategy}',`
98
+ : ''}
99
+ })
100
+ }
101
+ `)
102
+ .join('\n');
103
+ return `import * as core from './${modelName}Core${ext}'
104
+ import type { ${modelName}RouteConfig } from './${modelName}Router${ext}'
105
+ import type { PrismaClientLike } from '../routeConfig.target${ext}'
106
+ import {
107
+ createMcpReadTool,
108
+ createMcpWriteTool,
109
+ type McpToolContribution,
110
+ type SchemaModelMeta,
111
+ } from '../mcpRuntime${ext}'
112
+ import {
113
+ MODEL_FIELDS,
114
+ MODEL_ENUMS,
115
+ COMPOUND_ID,
116
+ COMPOUND_UNIQUES,
117
+ } from './${modelName}Metadata${ext}'
118
+ ${relatedImports ? '\n' + relatedImports + '\n' : ''}
119
+ // transitive relation metadata: narrowing recurses through these FULL model
120
+ // metas — compound unique constraints (@@id / @@unique) ride along so nested
121
+ // cursors and nested findUnique surfaces keep their unique selectors.
122
+ const compoundUniques: Array<{ selector: string; fields: string[] }> = []
123
+ if (COMPOUND_ID) {
124
+ compoundUniques.push({ selector: COMPOUND_ID.selector, fields: COMPOUND_ID.fields })
125
+ }
126
+ for (const cu of COMPOUND_UNIQUES) {
127
+ compoundUniques.push({ selector: cu.selector, fields: cu.fields })
128
+ }
129
+
130
+ const enums = new Map<string, readonly string[]>()
131
+ ${enumSets}
132
+
133
+ // one shared, self-referential metadata index: every related model keeps
134
+ // its full meta (compound uniques included) at every recursion depth
135
+ const modelIndex = new Map<string, SchemaModelMeta>()
136
+ const coreMetas: Array<[string, Omit<SchemaModelMeta, 'modelIndex'>]> = [
137
+ ${coreEntries},
138
+ ]
139
+ for (const [name, core] of coreMetas) {
140
+ modelIndex.set(name, { ...core, modelIndex })
141
+ }
142
+ ${factories}
143
+ `;
144
+ }
145
+ //# sourceMappingURL=generateModelMcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateModelMcp.js","sourceRoot":"","sources":["../../src/generators/generateModelMcp.ts"],"names":[],"mappings":"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"}
@@ -4,16 +4,26 @@ exports.generateModelMetadata = generateModelMetadata;
4
4
  const importExt_1 = require("../utils/importExt");
5
5
  function exampleValueForType(fieldType) {
6
6
  switch (fieldType) {
7
- case 'String': return 'example';
8
- case 'Int': return 1;
9
- case 'BigInt': return '1';
10
- case 'Float': return 1.0;
11
- case 'Decimal': return '1.0';
12
- case 'Boolean': return true;
13
- case 'DateTime': return '2025-01-01T00:00:00.000Z';
14
- case 'Json': return {};
15
- case 'Bytes': return 'base64data';
16
- default: return 'example';
7
+ case 'String':
8
+ return 'example';
9
+ case 'Int':
10
+ return 1;
11
+ case 'BigInt':
12
+ return '1';
13
+ case 'Float':
14
+ return 1.0;
15
+ case 'Decimal':
16
+ return '1.0';
17
+ case 'Boolean':
18
+ return true;
19
+ case 'DateTime':
20
+ return '2025-01-01T00:00:00.000Z';
21
+ case 'Json':
22
+ return {};
23
+ case 'Bytes':
24
+ return 'base64data';
25
+ default:
26
+ return 'example';
17
27
  }
18
28
  }
19
29
  function generateModelMetadata(options) {
@@ -53,13 +63,17 @@ function generateModelMetadata(options) {
53
63
  }
54
64
  }
55
65
  const compoundId = model.primaryKey && model.primaryKey.fields.length > 1
56
- ? { fields: model.primaryKey.fields }
66
+ ? {
67
+ selector: model.primaryKey.name || model.primaryKey.fields.join('_'),
68
+ fields: [...model.primaryKey.fields],
69
+ }
57
70
  : null;
58
- const compoundUniques = (model.uniqueIndexes || [])
71
+ const compoundUniques = (model.uniqueIndexes ?? [])
59
72
  .filter((idx) => idx.fields && idx.fields.length > 1)
60
73
  .map((idx) => ({
61
74
  name: idx.name || idx.fields.join('_'),
62
- fields: idx.fields,
75
+ selector: idx.name || idx.fields.join('_'),
76
+ fields: [...idx.fields],
63
77
  }));
64
78
  return `import type { FieldMeta, EnumMeta } from '../docsRenderer${ext}'
65
79
 
@@ -67,9 +81,9 @@ export const MODEL_FIELDS: FieldMeta[] = ${JSON.stringify(fieldsMeta, null, 2)}
67
81
 
68
82
  export const MODEL_ENUMS: EnumMeta[] = ${JSON.stringify(enumsMeta, null, 2)}
69
83
 
70
- export const COMPOUND_ID: { fields: string[] } | null = ${JSON.stringify(compoundId)}
84
+ export const COMPOUND_ID: { selector: string; fields: string[] } | null = ${JSON.stringify(compoundId)}
71
85
 
72
- export const COMPOUND_UNIQUES: { name: string; fields: string[] }[] = ${JSON.stringify(compoundUniques)}
86
+ export const COMPOUND_UNIQUES: { name: string; selector: string; fields: string[] }[] = ${JSON.stringify(compoundUniques)}
73
87
 
74
88
  export const EXAMPLE_VALUES: Record<string, unknown> = ${JSON.stringify(exampleValues, null, 2)}
75
89
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"generateModelMetadata.js","sourceRoot":"","sources":["../../src/generators/generateModelMetadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateModelMetadata.js","sourceRoot":"","sources":["../../src/generators/generateModelMetadata.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { DMMF } from '@prisma/generator-helper';
2
- import { ImportStyle } from '../utils/resolveImportStyle';
3
- import { WriteStrategy, FindManyPaginatedMode } from '../constants';
1
+ import type { DMMF } from '@prisma/generator-helper';
2
+ import type { ImportStyle } from '../utils/resolveImportStyle';
3
+ import type { WriteStrategy, FindManyPaginatedMode } from '../constants';
4
4
  export interface ModelCoreOptions {
5
5
  model: DMMF.Model;
6
6
  importStyle: ImportStyle;