prisma-generator-express 1.42.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.
Files changed (53) hide show
  1. package/dist/generators/generateFastifyHandler.d.ts +2 -0
  2. package/dist/generators/generateFastifyHandler.js +21 -6
  3. package/dist/generators/generateFastifyHandler.js.map +1 -1
  4. package/dist/generators/generateHonoHandler.d.ts +2 -0
  5. package/dist/generators/generateHonoHandler.js +8 -6
  6. package/dist/generators/generateHonoHandler.js.map +1 -1
  7. package/dist/generators/generateOperationCore.d.ts +0 -1
  8. package/dist/generators/generateOperationCore.js +34 -546
  9. package/dist/generators/generateOperationCore.js.map +1 -1
  10. package/dist/generators/generateRelationMeta.d.ts +13 -0
  11. package/dist/generators/generateRelationMeta.js +110 -0
  12. package/dist/generators/generateRelationMeta.js.map +1 -0
  13. package/dist/generators/generateRouteConfigType.js +13 -5
  14. package/dist/generators/generateRouteConfigType.js.map +1 -1
  15. package/dist/generators/generateRouter.js +83 -19
  16. package/dist/generators/generateRouter.js.map +1 -1
  17. package/dist/generators/generateRouterFastify.js +127 -384
  18. package/dist/generators/generateRouterFastify.js.map +1 -1
  19. package/dist/generators/generateRouterHono.js +48 -36
  20. package/dist/generators/generateRouterHono.js.map +1 -1
  21. package/dist/generators/generateUnifiedHandler.d.ts +2 -0
  22. package/dist/generators/generateUnifiedHandler.js +28 -10
  23. package/dist/generators/generateUnifiedHandler.js.map +1 -1
  24. package/dist/generators/generateUnifiedScalarUI.d.ts +2 -0
  25. package/dist/generators/generateUnifiedScalarUI.js +19 -16
  26. package/dist/generators/generateUnifiedScalarUI.js.map +1 -1
  27. package/dist/index.js +21 -5
  28. package/dist/index.js.map +1 -1
  29. package/dist/utils/copyFiles.js +12 -0
  30. package/dist/utils/copyFiles.js.map +1 -1
  31. package/dist/utils/writeFileSafely.js +2 -2
  32. package/dist/utils/writeFileSafely.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/copy/autoIncludePlanner.ts +354 -0
  35. package/src/copy/autoIncludeRuntime.ts +362 -0
  36. package/src/copy/operationRuntime.ts +614 -0
  37. package/src/copy/routeConfig.express.ts +5 -3
  38. package/src/copy/routeConfig.fastify.ts +2 -2
  39. package/src/copy/routeConfig.hono.ts +3 -3
  40. package/src/copy/routeConfig.ts +20 -9
  41. package/src/generators/generateFastifyHandler.ts +23 -6
  42. package/src/generators/generateHonoHandler.ts +10 -6
  43. package/src/generators/generateOperationCore.ts +34 -546
  44. package/src/generators/generateRelationMeta.ts +160 -0
  45. package/src/generators/generateRouteConfigType.ts +13 -6
  46. package/src/generators/generateRouter.ts +83 -19
  47. package/src/generators/generateRouterFastify.ts +127 -384
  48. package/src/generators/generateRouterHono.ts +48 -36
  49. package/src/generators/generateUnifiedHandler.ts +30 -10
  50. package/src/generators/generateUnifiedScalarUI.ts +21 -16
  51. package/src/index.ts +31 -13
  52. package/src/utils/copyFiles.ts +13 -0
  53. package/src/utils/writeFileSafely.ts +2 -2
@@ -36,26 +36,37 @@ export type ProgressiveStageResult<T = unknown> =
36
36
  | ProgressivePatch[]
37
37
  | ProgressiveStopResult<T>
38
38
 
39
- export type ProgressiveStageContext<TContext = unknown, TPrisma = any> = {
39
+ export type ProgressiveStageContext<TContext = unknown, TPrisma = unknown> = {
40
40
  ctx: TContext
41
- req: any
42
- res: any
41
+ req: unknown
42
+ res: unknown
43
43
  prisma: TPrisma
44
44
  variant: string
45
45
  accumulated: Record<string, unknown>
46
46
  signal: AbortSignal
47
47
  }
48
48
 
49
- export type ProgressiveStage<TContext = unknown, TPrisma = any, T = unknown> = (
49
+ export type ProgressiveStage<TContext = unknown, TPrisma = unknown, T = unknown> = (
50
50
  context: ProgressiveStageContext<TContext, TPrisma>,
51
51
  ) => Promise<ProgressiveStageResult<T>>
52
52
 
53
- export type ProgressiveVariantConfig = {
53
+ export type ManualProgressiveVariantConfig = {
54
54
  enabled?: boolean
55
+ mode?: 'manual'
55
56
  stages: string[]
56
57
  }
57
58
 
58
- export interface BaseOperationConfig<HookHandler, TShape = Record<string, any>> {
59
+ export type AutoIncludeProgressiveVariantConfig = {
60
+ enabled?: boolean
61
+ mode: 'autoInclude'
62
+ fallback?: 'singleResult' | 'error'
63
+ }
64
+
65
+ export type ProgressiveVariantConfig =
66
+ | ManualProgressiveVariantConfig
67
+ | AutoIncludeProgressiveVariantConfig
68
+
69
+ export interface BaseOperationConfig<HookHandler, TShape = Record<string, unknown>> {
59
70
  before?: HookHandler[]
60
71
  after?: HookHandler[]
61
72
  shape?: TShape
@@ -64,7 +75,7 @@ export interface BaseOperationConfig<HookHandler, TShape = Record<string, any>>
64
75
  export interface BaseRouteConfig<
65
76
  HookHandler,
66
77
  RequestType,
67
- TShape = Record<string, any>,
78
+ TShape = Record<string, unknown>,
68
79
  TCtx = unknown,
69
80
  > {
70
81
  enableAll?: boolean
@@ -111,5 +122,5 @@ export interface BaseRouteConfig<
111
122
  groupBy?: BaseOperationConfig<HookHandler, TShape>
112
123
  }
113
124
 
114
- export type OperationConfig = BaseOperationConfig<any>
115
- export type RouteConfig = BaseRouteConfig<any, any>
125
+ export type OperationConfig = BaseOperationConfig<unknown>
126
+ export type RouteConfig = BaseRouteConfig<unknown, unknown>
@@ -1,5 +1,7 @@
1
1
  import { DMMF } from '@prisma/generator-helper'
2
2
  import { toCamelCase } from '../utils/strings'
3
+ import { ImportStyle } from '../utils/resolveImportStyle'
4
+ import { importExt } from '../utils/importExt'
3
5
 
4
6
  const CORE_NAME_MAP: Record<string, string> = {
5
7
  delete: 'deleteUnique',
@@ -41,7 +43,9 @@ const CREATED_OPS = new Set([
41
43
 
42
44
  export function generateFastifyHandler(options: {
43
45
  model: DMMF.Model
46
+ importStyle: ImportStyle
44
47
  }): string {
48
+ const ext = importExt(options.importStyle)
45
49
  const modelName = options.model.name
46
50
  const prefix = toCamelCase(modelName)
47
51
 
@@ -54,7 +58,7 @@ export async function ${exportName}(
54
58
  _reply: FastifyReply,
55
59
  ): Promise<void> {
56
60
  const data = await core.${coreFnName(op)}(buildContext(request))
57
- ;(request as any).resultData = data
61
+ ;(request as FastifyExtended).resultData = data
58
62
  }`
59
63
  }).join('\n')
60
64
 
@@ -68,17 +72,30 @@ export async function ${exportName}(
68
72
  _reply: FastifyReply,
69
73
  ): Promise<void> {
70
74
  const data = await core.${coreFnName(op)}(buildContext(request))
71
- ;(request as any).resultData = data
72
- ;(request as any).resultStatus = ${statusCode}
75
+ const ext = request as FastifyExtended
76
+ ext.resultData = data
77
+ ext.resultStatus = ${statusCode}
73
78
  }`
74
79
  }).join('\n')
75
80
 
76
81
  return `import type { FastifyRequest, FastifyReply } from 'fastify'
77
- import * as core from './${modelName}Core'
78
- import type { OperationContext } from '../operationRuntime'
82
+ import * as core from './${modelName}Core${ext}'
83
+ import type { OperationContext } from '../operationRuntime${ext}'
84
+
85
+ type FastifyExtended = FastifyRequest & {
86
+ prisma?: unknown
87
+ postgres?: unknown
88
+ sqlite?: unknown
89
+ parsedQuery?: Record<string, unknown>
90
+ routeConfig?: { pagination?: OperationContext['paginationConfig'] }
91
+ guardShape?: Record<string, unknown>
92
+ guardCaller?: string
93
+ resultData?: unknown
94
+ resultStatus?: number
95
+ }
79
96
 
80
97
  function buildContext(request: FastifyRequest): OperationContext {
81
- const req = request as any
98
+ const req = request as FastifyExtended
82
99
  return {
83
100
  prisma: req.prisma,
84
101
  postgres: req.postgres,
@@ -1,5 +1,7 @@
1
1
  import { DMMF } from '@prisma/generator-helper'
2
2
  import { toCamelCase } from '../utils/strings'
3
+ import { ImportStyle } from '../utils/resolveImportStyle'
4
+ import { importExt } from '../utils/importExt'
3
5
 
4
6
  const CORE_NAME_MAP: Record<string, string> = {
5
7
  delete: 'deleteUnique',
@@ -41,7 +43,9 @@ const CREATED_OPS = new Set([
41
43
 
42
44
  export function generateHonoHandler(options: {
43
45
  model: DMMF.Model
46
+ importStyle: ImportStyle
44
47
  }): string {
48
+ const ext = importExt(options.importStyle)
45
49
  const modelName = options.model.name
46
50
  const prefix = toCamelCase(modelName)
47
51
 
@@ -68,16 +72,16 @@ export async function ${exportName}(c: Context<HonoEnv>): Promise<void> {
68
72
  }).join('\n')
69
73
 
70
74
  return `import type { Context } from 'hono'
71
- import * as core from './${modelName}Core'
72
- import type { OperationContext } from '../operationRuntime'
75
+ import * as core from './${modelName}Core${ext}'
76
+ import type { OperationContext } from '../operationRuntime${ext}'
73
77
 
74
78
  type HonoVariables = {
75
- prisma: any
76
- postgres?: any
77
- sqlite?: any
79
+ prisma: unknown
80
+ postgres?: unknown
81
+ sqlite?: unknown
78
82
  parsedQuery?: Record<string, unknown>
79
83
  body?: unknown
80
- routeConfig?: any
84
+ routeConfig?: { pagination?: OperationContext['paginationConfig'] }
81
85
  guardShape?: Record<string, unknown>
82
86
  guardCaller?: string
83
87
  resultData?: unknown