prisma-generator-express 1.43.0 → 1.44.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.
- package/dist/generators/generateFastifyHandler.d.ts +2 -0
- package/dist/generators/generateFastifyHandler.js +4 -2
- package/dist/generators/generateFastifyHandler.js.map +1 -1
- package/dist/generators/generateHonoHandler.d.ts +2 -0
- package/dist/generators/generateHonoHandler.js +4 -2
- package/dist/generators/generateHonoHandler.js.map +1 -1
- package/dist/generators/generateRelationMeta.js +7 -3
- package/dist/generators/generateRelationMeta.js.map +1 -1
- package/dist/generators/generateRouteConfigType.js +9 -1
- package/dist/generators/generateRouteConfigType.js.map +1 -1
- package/dist/generators/generateRouter.js +44 -18
- package/dist/generators/generateRouter.js.map +1 -1
- package/dist/generators/generateUnifiedHandler.d.ts +2 -0
- package/dist/generators/generateUnifiedHandler.js +4 -2
- package/dist/generators/generateUnifiedHandler.js.map +1 -1
- package/dist/generators/generateUnifiedScalarUI.d.ts +2 -0
- package/dist/generators/generateUnifiedScalarUI.js +19 -16
- package/dist/generators/generateUnifiedScalarUI.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/writeFileSafely.js +0 -3
- package/dist/utils/writeFileSafely.js.map +1 -1
- package/package.json +1 -1
- package/src/copy/autoIncludePlanner.ts +64 -9
- package/src/copy/autoIncludeRuntime.ts +91 -36
- package/src/copy/operationRuntime.ts +12 -1
- package/src/generators/generateFastifyHandler.ts +6 -2
- package/src/generators/generateHonoHandler.ts +6 -2
- package/src/generators/generateRelationMeta.ts +8 -2
- package/src/generators/generateRouteConfigType.ts +8 -1
- package/src/generators/generateRouter.ts +44 -18
- package/src/generators/generateUnifiedHandler.ts +6 -2
- package/src/generators/generateUnifiedScalarUI.ts +21 -16
- package/src/index.ts +6 -6
- package/src/utils/writeFileSafely.ts +0 -3
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { DMMF } from '@prisma/generator-helper'
|
|
2
2
|
import { Target } from '../constants'
|
|
3
|
+
import { ImportStyle } from '../utils/resolveImportStyle'
|
|
4
|
+
import { importExt } from '../utils/importExt'
|
|
3
5
|
|
|
4
6
|
function exampleValueForType(fieldType: string): unknown {
|
|
5
7
|
switch (fieldType) {
|
|
@@ -46,8 +48,8 @@ function generateExpressDocsExport(modelName: string): string {
|
|
|
46
48
|
if (ui === 'yaml') {
|
|
47
49
|
const yaml = buildModelOpenApi(
|
|
48
50
|
'${modelName}',
|
|
49
|
-
MODEL_FIELDS as
|
|
50
|
-
MODEL_ENUMS as
|
|
51
|
+
MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
|
|
52
|
+
MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
|
|
51
53
|
config,
|
|
52
54
|
{ format: 'yaml' }
|
|
53
55
|
)
|
|
@@ -56,8 +58,8 @@ function generateExpressDocsExport(modelName: string): string {
|
|
|
56
58
|
|
|
57
59
|
const spec = buildModelOpenApi(
|
|
58
60
|
'${modelName}',
|
|
59
|
-
MODEL_FIELDS as
|
|
60
|
-
MODEL_ENUMS as
|
|
61
|
+
MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
|
|
62
|
+
MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
|
|
61
63
|
config,
|
|
62
64
|
{ format: 'json' }
|
|
63
65
|
)
|
|
@@ -82,7 +84,8 @@ function generateFastifyDocsExport(modelName: string): string {
|
|
|
82
84
|
const disabled = isOpenApiDisabled(config.disableOpenApi)
|
|
83
85
|
if (disabled) { reply.code(404).send('OpenAPI documentation is disabled in production'); return }
|
|
84
86
|
|
|
85
|
-
const
|
|
87
|
+
const queryParams = request.query as { ui?: string } | undefined
|
|
88
|
+
const rawUi = queryParams?.ui || config.docsUi || 'docs'
|
|
86
89
|
const validUis: DocsUI[] = ['docs', 'scalar', 'json', 'yaml', 'playground']
|
|
87
90
|
const ui: DocsUI = validUis.includes(rawUi as DocsUI) ? (rawUi as DocsUI) : 'docs'
|
|
88
91
|
|
|
@@ -96,8 +99,8 @@ function generateFastifyDocsExport(modelName: string): string {
|
|
|
96
99
|
if (ui === 'yaml') {
|
|
97
100
|
const yaml = buildModelOpenApi(
|
|
98
101
|
'${modelName}',
|
|
99
|
-
MODEL_FIELDS as
|
|
100
|
-
MODEL_ENUMS as
|
|
102
|
+
MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
|
|
103
|
+
MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
|
|
101
104
|
config,
|
|
102
105
|
{ format: 'yaml' }
|
|
103
106
|
)
|
|
@@ -106,8 +109,8 @@ function generateFastifyDocsExport(modelName: string): string {
|
|
|
106
109
|
|
|
107
110
|
const spec = buildModelOpenApi(
|
|
108
111
|
'${modelName}',
|
|
109
|
-
MODEL_FIELDS as
|
|
110
|
-
MODEL_ENUMS as
|
|
112
|
+
MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
|
|
113
|
+
MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
|
|
111
114
|
config,
|
|
112
115
|
{ format: 'json' }
|
|
113
116
|
)
|
|
@@ -146,8 +149,8 @@ function generateHonoDocsExport(modelName: string): string {
|
|
|
146
149
|
if (ui === 'yaml') {
|
|
147
150
|
const yaml = buildModelOpenApi(
|
|
148
151
|
'${modelName}',
|
|
149
|
-
MODEL_FIELDS as
|
|
150
|
-
MODEL_ENUMS as
|
|
152
|
+
MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
|
|
153
|
+
MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
|
|
151
154
|
config,
|
|
152
155
|
{ format: 'yaml' }
|
|
153
156
|
) as string
|
|
@@ -156,13 +159,13 @@ function generateHonoDocsExport(modelName: string): string {
|
|
|
156
159
|
|
|
157
160
|
const spec = buildModelOpenApi(
|
|
158
161
|
'${modelName}',
|
|
159
|
-
MODEL_FIELDS as
|
|
160
|
-
MODEL_ENUMS as
|
|
162
|
+
MODEL_FIELDS as unknown as Parameters<typeof buildModelOpenApi>[1],
|
|
163
|
+
MODEL_ENUMS as unknown as Parameters<typeof buildModelOpenApi>[2],
|
|
161
164
|
config,
|
|
162
165
|
{ format: 'json' }
|
|
163
166
|
)
|
|
164
167
|
|
|
165
|
-
if (ui === 'json') return c.json(spec as
|
|
168
|
+
if (ui === 'json') return c.json(spec as Record<string, unknown>)
|
|
166
169
|
|
|
167
170
|
const pageTitle = config.docsTitle || \`${modelName} API\`
|
|
168
171
|
|
|
@@ -180,9 +183,11 @@ export function generateScalarUIHandler(options: {
|
|
|
180
183
|
model: DMMF.Model
|
|
181
184
|
enums: DMMF.DatamodelEnum[]
|
|
182
185
|
target?: Target
|
|
186
|
+
importStyle: ImportStyle
|
|
183
187
|
}): string {
|
|
184
188
|
const { model, enums } = options
|
|
185
189
|
const target = options.target || 'express'
|
|
190
|
+
const ext = importExt(options.importStyle)
|
|
186
191
|
const modelName = model.name
|
|
187
192
|
|
|
188
193
|
const fieldsMeta = model.fields.map((f: any) => ({
|
|
@@ -254,7 +259,7 @@ export function generateScalarUIHandler(options: {
|
|
|
254
259
|
: generateExpressDocsExport(modelName)
|
|
255
260
|
|
|
256
261
|
return `${frameworkImport}
|
|
257
|
-
import { buildModelOpenApi } from '../buildModelOpenApi'
|
|
262
|
+
import { buildModelOpenApi } from '../buildModelOpenApi${ext}'
|
|
258
263
|
import {
|
|
259
264
|
renderDocs,
|
|
260
265
|
renderScalar,
|
|
@@ -266,7 +271,7 @@ import {
|
|
|
266
271
|
type DocsUI,
|
|
267
272
|
type DocsConfig,
|
|
268
273
|
type DocsModelContext,
|
|
269
|
-
} from '../docsRenderer'
|
|
274
|
+
} from '../docsRenderer${ext}'
|
|
270
275
|
|
|
271
276
|
export const MODEL_FIELDS: FieldMeta[] = ${JSON.stringify(fieldsMeta, null, 2)}
|
|
272
277
|
|
package/src/index.ts
CHANGED
|
@@ -14,7 +14,7 @@ import { generateRelationMeta, generateRelationModelsIndex } from './generators/
|
|
|
14
14
|
import { getRelativeClientPath, getGuardShapesImport } from './generators/generateImportPrismaStatement'
|
|
15
15
|
import { writeFileSafely } from './utils/writeFileSafely'
|
|
16
16
|
import { copyFiles } from './utils/copyFiles'
|
|
17
|
-
import { resolveImportStyle } from './utils/resolveImportStyle'
|
|
17
|
+
import { resolveImportStyle, ImportStyle } from './utils/resolveImportStyle'
|
|
18
18
|
import { GENERATOR_NAME, Target } from './constants'
|
|
19
19
|
|
|
20
20
|
function getTarget(options: GeneratorOptions): Target {
|
|
@@ -53,7 +53,7 @@ generatorHandler({
|
|
|
53
53
|
await copyFiles(options, target, importStyle)
|
|
54
54
|
|
|
55
55
|
const modelNames: string[] = []
|
|
56
|
-
const generateHandler =
|
|
56
|
+
const generateHandler: (opts: { model: DMMF.Model; importStyle: ImportStyle }) => string =
|
|
57
57
|
target === 'fastify' ? generateFastifyHandler :
|
|
58
58
|
target === 'hono' ? generateHonoHandler :
|
|
59
59
|
generateUnifiedHandler
|
|
@@ -78,7 +78,7 @@ generatorHandler({
|
|
|
78
78
|
})
|
|
79
79
|
|
|
80
80
|
await writeFileSafely({
|
|
81
|
-
content: generateHandler({ model: model as DMMF.Model, importStyle }
|
|
81
|
+
content: generateHandler({ model: model as DMMF.Model, importStyle }),
|
|
82
82
|
options,
|
|
83
83
|
model: model as DMMF.Model,
|
|
84
84
|
operation: 'Handlers',
|
|
@@ -91,14 +91,14 @@ generatorHandler({
|
|
|
91
91
|
enums: options.dmmf.datamodel.enums as DMMF.DatamodelEnum[],
|
|
92
92
|
guardShapesImport,
|
|
93
93
|
importStyle,
|
|
94
|
-
}
|
|
94
|
+
})
|
|
95
95
|
: target === 'hono'
|
|
96
96
|
? generateHonoRouterFunction({
|
|
97
97
|
model: model as DMMF.Model,
|
|
98
98
|
enums: options.dmmf.datamodel.enums as DMMF.DatamodelEnum[],
|
|
99
99
|
guardShapesImport,
|
|
100
100
|
importStyle,
|
|
101
|
-
}
|
|
101
|
+
})
|
|
102
102
|
: generateRouterFunction({
|
|
103
103
|
model: model as DMMF.Model,
|
|
104
104
|
enums: options.dmmf.datamodel.enums as DMMF.DatamodelEnum[],
|
|
@@ -120,7 +120,7 @@ generatorHandler({
|
|
|
120
120
|
enums: options.dmmf.datamodel.enums as DMMF.DatamodelEnum[],
|
|
121
121
|
target,
|
|
122
122
|
importStyle,
|
|
123
|
-
}
|
|
123
|
+
}),
|
|
124
124
|
options,
|
|
125
125
|
model: model as DMMF.Model,
|
|
126
126
|
operation: 'Docs',
|
|
@@ -36,9 +36,6 @@ export async function writeFileSafely({
|
|
|
36
36
|
case 'queryBuilder':
|
|
37
37
|
filePath = path.join(outputPath, 'queryBuilder.ts')
|
|
38
38
|
break
|
|
39
|
-
case 'operationRuntime':
|
|
40
|
-
filePath = path.join(outputPath, 'operationRuntime.ts')
|
|
41
|
-
break
|
|
42
39
|
case 'relationModelsIndex':
|
|
43
40
|
filePath = path.join(outputPath, 'relationModels.ts')
|
|
44
41
|
break
|