@pegasusheavy/nestjs-prisma-graphql 1.4.3 → 1.6.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 (210) hide show
  1. package/README.md +18 -7
  2. package/dist/benchmark/analysis.d.ts +7 -0
  3. package/dist/benchmark/analysis.d.ts.map +1 -0
  4. package/dist/benchmark/analysis.js +265 -0
  5. package/dist/benchmark/analysis.js.map +1 -0
  6. package/dist/benchmark/index.d.ts +7 -0
  7. package/dist/benchmark/index.d.ts.map +1 -0
  8. package/dist/benchmark/index.js +272 -0
  9. package/dist/benchmark/index.js.map +1 -0
  10. package/dist/event-names.d.ts +2 -0
  11. package/dist/event-names.d.ts.map +1 -0
  12. package/dist/event-names.js +2 -0
  13. package/dist/event-names.js.map +1 -0
  14. package/dist/generate.d.ts +4 -140
  15. package/dist/generate.d.ts.map +1 -0
  16. package/dist/generate.js +199 -2826
  17. package/dist/generate.js.map +1 -1
  18. package/dist/handlers/args-type.d.ts +7 -0
  19. package/dist/handlers/args-type.d.ts.map +1 -0
  20. package/dist/handlers/args-type.js +68 -0
  21. package/dist/handlers/args-type.js.map +1 -0
  22. package/dist/handlers/combine-scalar-filters.d.ts +6 -0
  23. package/dist/handlers/combine-scalar-filters.d.ts.map +1 -0
  24. package/dist/handlers/combine-scalar-filters.js +110 -0
  25. package/dist/handlers/combine-scalar-filters.js.map +1 -0
  26. package/dist/handlers/create-aggregate-input.d.ts +10 -0
  27. package/dist/handlers/create-aggregate-input.d.ts.map +1 -0
  28. package/dist/handlers/create-aggregate-input.js +33 -0
  29. package/dist/handlers/create-aggregate-input.js.map +1 -0
  30. package/dist/handlers/decimal-helpers.d.ts +10 -0
  31. package/dist/handlers/decimal-helpers.d.ts.map +1 -0
  32. package/dist/handlers/decimal-helpers.js +73 -0
  33. package/dist/handlers/decimal-helpers.js.map +1 -0
  34. package/dist/handlers/emit-single.d.ts +3 -0
  35. package/dist/handlers/emit-single.d.ts.map +1 -0
  36. package/dist/handlers/emit-single.js +14 -0
  37. package/dist/handlers/emit-single.js.map +1 -0
  38. package/dist/handlers/generate-barrel-exports.d.ts +13 -0
  39. package/dist/handlers/generate-barrel-exports.d.ts.map +1 -0
  40. package/dist/handlers/generate-barrel-exports.js +69 -0
  41. package/dist/handlers/generate-barrel-exports.js.map +1 -0
  42. package/dist/handlers/generate-files.d.ts +3 -0
  43. package/dist/handlers/generate-files.d.ts.map +1 -0
  44. package/dist/handlers/generate-files.js +133 -0
  45. package/dist/handlers/generate-files.js.map +1 -0
  46. package/dist/handlers/input-type.d.ts +7 -0
  47. package/dist/handlers/input-type.d.ts.map +1 -0
  48. package/dist/handlers/input-type.js +297 -0
  49. package/dist/handlers/input-type.js.map +1 -0
  50. package/dist/handlers/model-data.d.ts +3 -0
  51. package/dist/handlers/model-data.d.ts.map +1 -0
  52. package/dist/handlers/model-data.js +27 -0
  53. package/dist/handlers/model-data.js.map +1 -0
  54. package/dist/handlers/model-output-type.d.ts +3 -0
  55. package/dist/handlers/model-output-type.d.ts.map +1 -0
  56. package/dist/handlers/model-output-type.js +283 -0
  57. package/dist/handlers/model-output-type.js.map +1 -0
  58. package/dist/handlers/no-atomic-operations.d.ts +3 -0
  59. package/dist/handlers/no-atomic-operations.d.ts.map +1 -0
  60. package/dist/handlers/no-atomic-operations.js +41 -0
  61. package/dist/handlers/no-atomic-operations.js.map +1 -0
  62. package/dist/handlers/output-type.d.ts +3 -0
  63. package/dist/handlers/output-type.d.ts.map +1 -0
  64. package/dist/handlers/output-type.js +179 -0
  65. package/dist/handlers/output-type.js.map +1 -0
  66. package/dist/handlers/patch-type-registry.d.ts +16 -0
  67. package/dist/handlers/patch-type-registry.d.ts.map +1 -0
  68. package/dist/handlers/patch-type-registry.js +47 -0
  69. package/dist/handlers/patch-type-registry.js.map +1 -0
  70. package/dist/handlers/post-process-imports.d.ts +11 -0
  71. package/dist/handlers/post-process-imports.d.ts.map +1 -0
  72. package/dist/handlers/post-process-imports.js +44 -0
  73. package/dist/handlers/post-process-imports.js.map +1 -0
  74. package/dist/handlers/prisma-enum-doc.d.ts +11 -0
  75. package/dist/handlers/prisma-enum-doc.d.ts.map +1 -0
  76. package/dist/handlers/prisma-enum-doc.js +16 -0
  77. package/dist/handlers/prisma-enum-doc.js.map +1 -0
  78. package/dist/handlers/purge-output.d.ts +3 -0
  79. package/dist/handlers/purge-output.d.ts.map +1 -0
  80. package/dist/handlers/purge-output.js +34 -0
  81. package/dist/handlers/purge-output.js.map +1 -0
  82. package/dist/handlers/re-export.d.ts +9 -0
  83. package/dist/handlers/re-export.d.ts.map +1 -0
  84. package/dist/handlers/re-export.js +101 -0
  85. package/dist/handlers/re-export.js.map +1 -0
  86. package/dist/handlers/register-all-types.d.ts +13 -0
  87. package/dist/handlers/register-all-types.d.ts.map +1 -0
  88. package/dist/handlers/register-all-types.js +99 -0
  89. package/dist/handlers/register-all-types.js.map +1 -0
  90. package/dist/handlers/register-enum.d.ts +3 -0
  91. package/dist/handlers/register-enum.d.ts.map +1 -0
  92. package/dist/handlers/register-enum.js +65 -0
  93. package/dist/handlers/register-enum.js.map +1 -0
  94. package/dist/handlers/require-single-fields-in-whereunique-input.d.ts +3 -0
  95. package/dist/handlers/require-single-fields-in-whereunique-input.d.ts.map +1 -0
  96. package/dist/handlers/require-single-fields-in-whereunique-input.js +15 -0
  97. package/dist/handlers/require-single-fields-in-whereunique-input.js.map +1 -0
  98. package/dist/handlers/type-registry.d.ts +14 -0
  99. package/dist/handlers/type-registry.d.ts.map +1 -0
  100. package/dist/handlers/type-registry.js +151 -0
  101. package/dist/handlers/type-registry.js.map +1 -0
  102. package/dist/handlers/warning.d.ts +2 -0
  103. package/dist/handlers/warning.d.ts.map +1 -0
  104. package/dist/handlers/warning.js +14 -0
  105. package/dist/handlers/warning.js.map +1 -0
  106. package/dist/helpers/create-comment.d.ts +3 -0
  107. package/dist/helpers/create-comment.d.ts.map +1 -0
  108. package/dist/helpers/create-comment.js +23 -0
  109. package/dist/helpers/create-comment.js.map +1 -0
  110. package/dist/helpers/create-config.d.ts +51 -0
  111. package/dist/helpers/create-config.d.ts.map +1 -0
  112. package/dist/helpers/create-config.js +165 -0
  113. package/dist/helpers/create-config.js.map +1 -0
  114. package/dist/helpers/create-emit-blocks.d.ts +5 -0
  115. package/dist/helpers/create-emit-blocks.d.ts.map +1 -0
  116. package/dist/helpers/create-emit-blocks.js +37 -0
  117. package/dist/helpers/create-emit-blocks.js.map +1 -0
  118. package/dist/helpers/detect-circular-deps.d.ts +28 -0
  119. package/dist/helpers/detect-circular-deps.d.ts.map +1 -0
  120. package/dist/helpers/detect-circular-deps.js +92 -0
  121. package/dist/helpers/detect-circular-deps.js.map +1 -0
  122. package/dist/helpers/factory-get-source-file.d.ts +13 -0
  123. package/dist/helpers/factory-get-source-file.d.ts.map +1 -0
  124. package/dist/helpers/factory-get-source-file.js +17 -0
  125. package/dist/helpers/factory-get-source-file.js.map +1 -0
  126. package/dist/helpers/file-type-by-location.d.ts +3 -0
  127. package/dist/helpers/file-type-by-location.d.ts.map +1 -0
  128. package/dist/helpers/file-type-by-location.js +19 -0
  129. package/dist/helpers/file-type-by-location.js.map +1 -0
  130. package/dist/helpers/generate-file-name.d.ts +7 -0
  131. package/dist/helpers/generate-file-name.d.ts.map +1 -0
  132. package/dist/helpers/generate-file-name.js +35 -0
  133. package/dist/helpers/generate-file-name.js.map +1 -0
  134. package/dist/helpers/get-enum-name.d.ts +2 -0
  135. package/dist/helpers/get-enum-name.d.ts.map +1 -0
  136. package/dist/helpers/get-enum-name.js +5 -0
  137. package/dist/helpers/get-enum-name.js.map +1 -0
  138. package/dist/helpers/get-graphql-import.d.ts +19 -0
  139. package/dist/helpers/get-graphql-import.d.ts.map +1 -0
  140. package/dist/helpers/get-graphql-import.js +52 -0
  141. package/dist/helpers/get-graphql-import.js.map +1 -0
  142. package/dist/helpers/get-graphql-input-type.d.ts +6 -0
  143. package/dist/helpers/get-graphql-input-type.d.ts.map +1 -0
  144. package/dist/helpers/get-graphql-input-type.js +64 -0
  145. package/dist/helpers/get-graphql-input-type.js.map +1 -0
  146. package/dist/helpers/get-model-name.d.ts +2 -0
  147. package/dist/helpers/get-model-name.d.ts.map +1 -0
  148. package/dist/helpers/get-model-name.js +130 -0
  149. package/dist/helpers/get-model-name.js.map +1 -0
  150. package/dist/helpers/get-output-type-name.d.ts +2 -0
  151. package/dist/helpers/get-output-type-name.d.ts.map +1 -0
  152. package/dist/helpers/get-output-type-name.js +4 -0
  153. package/dist/helpers/get-output-type-name.js.map +1 -0
  154. package/dist/helpers/get-property-type.d.ts +9 -0
  155. package/dist/helpers/get-property-type.d.ts.map +1 -0
  156. package/dist/helpers/get-property-type.js +48 -0
  157. package/dist/helpers/get-property-type.js.map +1 -0
  158. package/dist/helpers/get-where-unique-at-least-keys.d.ts +3 -0
  159. package/dist/helpers/get-where-unique-at-least-keys.d.ts.map +1 -0
  160. package/dist/helpers/get-where-unique-at-least-keys.js +17 -0
  161. package/dist/helpers/get-where-unique-at-least-keys.js.map +1 -0
  162. package/dist/helpers/import-declaration-map.d.ts +19 -0
  163. package/dist/helpers/import-declaration-map.d.ts.map +1 -0
  164. package/dist/helpers/import-declaration-map.js +69 -0
  165. package/dist/helpers/import-declaration-map.js.map +1 -0
  166. package/dist/helpers/is-many-and-return.d.ts +2 -0
  167. package/dist/helpers/is-many-and-return.d.ts.map +1 -0
  168. package/dist/helpers/is-many-and-return.js +9 -0
  169. package/dist/helpers/is-many-and-return.js.map +1 -0
  170. package/dist/helpers/is-where-unique-input-type.d.ts +2 -0
  171. package/dist/helpers/is-where-unique-input-type.d.ts.map +1 -0
  172. package/dist/helpers/is-where-unique-input-type.js +4 -0
  173. package/dist/helpers/is-where-unique-input-type.js.map +1 -0
  174. package/dist/helpers/object-settings.d.ts +39 -0
  175. package/dist/helpers/object-settings.d.ts.map +1 -0
  176. package/dist/helpers/object-settings.js +297 -0
  177. package/dist/helpers/object-settings.js.map +1 -0
  178. package/dist/helpers/pascal-case.d.ts +2 -0
  179. package/dist/helpers/pascal-case.d.ts.map +1 -0
  180. package/dist/helpers/pascal-case.js +5 -0
  181. package/dist/helpers/pascal-case.js.map +1 -0
  182. package/dist/helpers/property-structure.d.ts +13 -0
  183. package/dist/helpers/property-structure.d.ts.map +1 -0
  184. package/dist/helpers/property-structure.js +20 -0
  185. package/dist/helpers/property-structure.js.map +1 -0
  186. package/dist/helpers/relative-path.d.ts +2 -0
  187. package/dist/helpers/relative-path.d.ts.map +1 -0
  188. package/dist/helpers/relative-path.js +20 -0
  189. package/dist/helpers/relative-path.js.map +1 -0
  190. package/dist/helpers/type-safe-assert.d.ts +7 -0
  191. package/dist/helpers/type-safe-assert.d.ts.map +1 -0
  192. package/dist/helpers/type-safe-assert.js +10 -0
  193. package/dist/helpers/type-safe-assert.js.map +1 -0
  194. package/dist/helpers/update-object-property.d.ts +7 -0
  195. package/dist/helpers/update-object-property.d.ts.map +1 -0
  196. package/dist/helpers/update-object-property.js +21 -0
  197. package/dist/helpers/update-object-property.js.map +1 -0
  198. package/dist/index.d.ts +4 -6
  199. package/dist/index.d.ts.map +1 -0
  200. package/dist/index.js +135 -2956
  201. package/dist/index.js.map +1 -1
  202. package/dist/test/test-utils.d.ts +4 -0
  203. package/dist/test/test-utils.d.ts.map +1 -0
  204. package/dist/test/test-utils.js +14 -0
  205. package/dist/test/test-utils.js.map +1 -0
  206. package/dist/types.d.ts +73 -0
  207. package/dist/types.d.ts.map +1 -0
  208. package/dist/types.js +2 -0
  209. package/dist/types.js.map +1 -0
  210. package/package.json +3 -3
package/README.md CHANGED
@@ -192,7 +192,8 @@ export class UserResolver {
192
192
  |--------|------|---------|-------------|
193
193
  | `output` | `string` | *required* | Output folder relative to the schema file |
194
194
  | `outputFilePattern` | `string` | `{model}/{name}.{type}.ts` | Pattern for generated file paths |
195
- | `esmCompatible` | `boolean` | `true` | Enable ESM circular import resolution |
195
+ | `esmCompatible` | `boolean` | `true` | Enable ESM circular import resolution with type registry |
196
+ | `esmSuppressTypeErrors` | `boolean` | `false` | Add `// @ts-nocheck` to generated files (useful for deep relation filename truncation) |
196
197
  | `prismaClientImport` | `string` | `@prisma/client` | Custom path to Prisma Client |
197
198
  | `tsConfigFilePath` | `string` | - | Path to tsconfig.json for type checking |
198
199
  | `disabled` | `boolean` | `false` | Disable generation (can also use env vars) |
@@ -677,18 +678,28 @@ Enable `esmCompatible` mode to generate code that handles circular dependencies:
677
678
 
678
679
  ```prisma
679
680
  generator nestgraphql {
680
- provider = "nestjs-prisma-graphql"
681
- output = "../src/@generated"
682
- esmCompatible = true
681
+ provider = "nestjs-prisma-graphql"
682
+ output = "../src/@generated"
683
+ esmCompatible = true
684
+ esmSuppressTypeErrors = false # Set true if you hit filename truncation on deep relations
683
685
  }
684
686
  ```
685
687
 
686
688
  ### Type Registry
687
689
 
688
- When `esmCompatible` is enabled, the generator creates:
690
+ When `esmCompatible` is enabled, the generator automatically handles:
691
+
692
+ 1. **Type Registry** — Creates `type-registry.ts` with lazy type resolution helpers
693
+ 2. **Type Registration** — Generates `register-all-types.js` that imports all types
694
+ 3. **ESM Import Resolution** — Adds `.js` extensions to all relative imports
695
+ 4. **Barrel Exports** — Creates `index.ts` files when `reExport = "None"`
696
+ 5. **TypeScript Compatibility** — Patches `getType<T = any>` for `@nestjs/graphql`
697
+
698
+ **No post-processing scripts needed** — the generator handles everything internally when `esmCompatible = true`.
699
+
700
+ #### Generated Files
689
701
 
690
- 1. **`type-registry.ts`** — Central registry with lazy type resolution helpers
691
- 2. **`register-all-types.ts`** — Registers all types at application startup
702
+ The generator creates:
692
703
 
693
704
  #### Available Functions
694
705
 
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Code analysis and improvement recommendations
3
+ *
4
+ * Run with: pnpm tsx src/benchmark/analysis.ts
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/benchmark/analysis.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,265 @@
1
+ /**
2
+ * Code analysis and improvement recommendations
3
+ *
4
+ * Run with: pnpm tsx src/benchmark/analysis.ts
5
+ */
6
+ import { readFileSync, readdirSync, statSync } from 'node:fs';
7
+ import { join } from 'node:path';
8
+ function analyzeFile(filePath) {
9
+ const content = readFileSync(filePath, 'utf-8');
10
+ const lines = content.split('\n');
11
+ const potentialIssues = [];
12
+ const lodashImports = [];
13
+ // Count functions
14
+ const functionMatches = content.match(/function\s+\w+|=>\s*{|=>\s*[^{]/g) || [];
15
+ // Count imports
16
+ const importMatches = content.match(/^import\s/gm) || [];
17
+ // Count async functions
18
+ const asyncMatches = content.match(/async\s+(function|\w+\s*=|\()/g) || [];
19
+ // Find lodash imports
20
+ const lodashMatch = content.match(/from\s+['"]lodash-es['"]/);
21
+ if (lodashMatch) {
22
+ const importLine = lines.find((l) => l.includes('lodash-es'));
23
+ if (importLine) {
24
+ const namedImports = importLine.match(/{\s*([^}]+)\s*}/);
25
+ if (namedImports) {
26
+ lodashImports.push(...namedImports[1].split(',').map((s) => s.trim()));
27
+ }
28
+ }
29
+ }
30
+ // Check for potential issues
31
+ // 1. Large functions (rough estimate by checking function size)
32
+ const functionBlocks = content.match(/function\s+\w+[^{]*{[^}]{500,}/g);
33
+ if (functionBlocks) {
34
+ potentialIssues.push(`${functionBlocks.length} potentially large function(s) detected`);
35
+ }
36
+ // 2. Repeated object spreads in loops
37
+ if (content.includes('for') &&
38
+ (content.includes('...') || content.includes('Object.assign'))) {
39
+ potentialIssues.push('Object spreading in loops may cause memory churn');
40
+ }
41
+ // 3. Synchronous event emission
42
+ if (content.includes('emitSync')) {
43
+ potentialIssues.push('Synchronous event emissions may block');
44
+ }
45
+ // 4. JSON.parse/stringify in hot paths
46
+ const jsonOps = (content.match(/JSON\.(parse|stringify)/g) || []).length;
47
+ if (jsonOps > 2) {
48
+ potentialIssues.push(`${jsonOps} JSON operations - consider alternatives for hot paths`);
49
+ }
50
+ // 5. Repeated Map/Set operations
51
+ const mapSetCreation = (content.match(/new (Map|Set)\(/g) || []).length;
52
+ if (mapSetCreation > 3) {
53
+ potentialIssues.push(`${mapSetCreation} Map/Set creations - consider reusing`);
54
+ }
55
+ // 6. String concatenation in loops
56
+ if ((content.includes('for') || content.includes('.forEach')) &&
57
+ content.includes("+ '") &&
58
+ content.includes("'")) {
59
+ potentialIssues.push('String concatenation in loops - consider array join');
60
+ }
61
+ return {
62
+ path: filePath,
63
+ lines: lines.length,
64
+ functions: functionMatches.length,
65
+ imports: importMatches.length,
66
+ lodashImports,
67
+ asyncFunctions: asyncMatches.length,
68
+ potentialIssues,
69
+ };
70
+ }
71
+ function analyzeDirectory(dir) {
72
+ const results = [];
73
+ function walkDir(currentDir) {
74
+ const entries = readdirSync(currentDir);
75
+ for (const entry of entries) {
76
+ const fullPath = join(currentDir, entry);
77
+ const stat = statSync(fullPath);
78
+ if (stat.isDirectory() && !entry.includes('node_modules') && entry !== 'benchmark') {
79
+ walkDir(fullPath);
80
+ }
81
+ else if (entry.endsWith('.ts') && !entry.endsWith('.spec.ts') && !entry.endsWith('.test.ts')) {
82
+ results.push(analyzeFile(fullPath));
83
+ }
84
+ }
85
+ }
86
+ walkDir(dir);
87
+ return results;
88
+ }
89
+ function generateImprovementSuggestions(analyses) {
90
+ const suggestions = [];
91
+ // Aggregate lodash usage
92
+ const allLodashImports = new Map();
93
+ for (const analysis of analyses) {
94
+ for (const imp of analysis.lodashImports) {
95
+ allLodashImports.set(imp, (allLodashImports.get(imp) || 0) + 1);
96
+ }
97
+ }
98
+ // Check for lodash functions that have native alternatives
99
+ const nativeAlternatives = {
100
+ first: 'array[0] or array.at(0)',
101
+ last: 'array.at(-1)',
102
+ flatten: 'array.flat()',
103
+ flattenDeep: 'array.flat(Infinity)',
104
+ includes: 'array.includes()',
105
+ find: 'array.find()',
106
+ filter: 'array.filter()',
107
+ map: 'array.map()',
108
+ reduce: 'array.reduce()',
109
+ forEach: 'array.forEach()',
110
+ some: 'array.some()',
111
+ every: 'array.every()',
112
+ keys: 'Object.keys()',
113
+ values: 'Object.values()',
114
+ entries: 'Object.entries()',
115
+ assign: 'Object.assign() or spread',
116
+ isArray: 'Array.isArray()',
117
+ isString: "typeof x === 'string'",
118
+ isNumber: "typeof x === 'number'",
119
+ isBoolean: "typeof x === 'boolean'",
120
+ isNull: 'x === null',
121
+ isUndefined: 'x === undefined',
122
+ isNil: 'x == null',
123
+ };
124
+ for (const [fn, count] of allLodashImports) {
125
+ if (nativeAlternatives[fn]) {
126
+ suggestions.push({
127
+ category: 'Dependencies',
128
+ priority: count > 2 ? 'medium' : 'low',
129
+ description: `Replace lodash '${fn}' with native ${nativeAlternatives[fn]}`,
130
+ impact: `Used ${count} times - reduces bundle size and improves performance`,
131
+ });
132
+ }
133
+ }
134
+ // Large file suggestions
135
+ const largeFiles = analyses.filter((a) => a.lines > 200);
136
+ for (const file of largeFiles) {
137
+ suggestions.push({
138
+ category: 'Code Organization',
139
+ priority: file.lines > 350 ? 'high' : 'medium',
140
+ description: `Consider splitting large file (${file.lines} lines)`,
141
+ file: file.path,
142
+ impact: 'Improves maintainability and tree-shaking',
143
+ });
144
+ }
145
+ // Files with potential issues
146
+ for (const analysis of analyses) {
147
+ for (const issue of analysis.potentialIssues) {
148
+ suggestions.push({
149
+ category: 'Performance',
150
+ priority: issue.includes('loop') ? 'high' : 'medium',
151
+ description: issue,
152
+ file: analysis.path,
153
+ impact: 'May affect generation performance',
154
+ });
155
+ }
156
+ }
157
+ // General architecture suggestions
158
+ suggestions.push({
159
+ category: 'Architecture',
160
+ priority: 'high',
161
+ description: 'Consider using a worker pool for parallel file generation',
162
+ impact: 'Could significantly speed up large schema generation',
163
+ }, {
164
+ category: 'Architecture',
165
+ priority: 'medium',
166
+ description: 'Implement incremental generation based on schema changes',
167
+ impact: 'Faster regeneration for small schema updates',
168
+ }, {
169
+ category: 'Memory',
170
+ priority: 'medium',
171
+ description: 'Use streaming writes instead of building full file in memory',
172
+ impact: 'Reduces memory usage for large schemas',
173
+ }, {
174
+ category: 'Caching',
175
+ priority: 'high',
176
+ description: 'Cache ts-morph Project and SourceFile objects between runs',
177
+ impact: 'Significant speedup for watch mode',
178
+ }, {
179
+ category: 'Dependencies',
180
+ priority: 'low',
181
+ description: 'Consider removing await-event-emitter for simpler async handling',
182
+ impact: 'Reduces dependencies and bundle size',
183
+ });
184
+ return suggestions;
185
+ }
186
+ // Run analysis
187
+ console.log('šŸ” Code Analysis for nestjs-prisma-graphql\n');
188
+ console.log('═'.repeat(70));
189
+ const srcDir = new URL('../', import.meta.url).pathname;
190
+ const analyses = analyzeDirectory(srcDir);
191
+ // Summary statistics
192
+ console.log('\nšŸ“Š CODEBASE STATISTICS\n');
193
+ const totalLines = analyses.reduce((sum, a) => sum + a.lines, 0);
194
+ const totalFunctions = analyses.reduce((sum, a) => sum + a.functions, 0);
195
+ const totalImports = analyses.reduce((sum, a) => sum + a.imports, 0);
196
+ const totalAsync = analyses.reduce((sum, a) => sum + a.asyncFunctions, 0);
197
+ console.log(`Files analyzed: ${analyses.length}`);
198
+ console.log(`Total lines: ${totalLines.toLocaleString()}`);
199
+ console.log(`Total functions: ${totalFunctions}`);
200
+ console.log(`Total imports: ${totalImports}`);
201
+ console.log(`Async functions: ${totalAsync}`);
202
+ // Lodash usage
203
+ console.log('\n\nšŸ“¦ LODASH-ES USAGE\n');
204
+ const lodashUsage = new Map();
205
+ for (const analysis of analyses) {
206
+ for (const fn of analysis.lodashImports) {
207
+ lodashUsage.set(fn, (lodashUsage.get(fn) || 0) + 1);
208
+ }
209
+ }
210
+ const sortedLodash = [...lodashUsage.entries()].sort((a, b) => b[1] - a[1]);
211
+ console.log('Function Usage Count');
212
+ console.log('─'.repeat(35));
213
+ for (const [fn, count] of sortedLodash) {
214
+ console.log(`${fn.padEnd(18)} ${count}`);
215
+ }
216
+ // Large files
217
+ console.log('\n\nšŸ“ LARGEST FILES\n');
218
+ const sortedByLines = [...analyses].sort((a, b) => b.lines - a.lines);
219
+ console.log('Lines File');
220
+ console.log('─'.repeat(60));
221
+ for (const file of sortedByLines.slice(0, 10)) {
222
+ const relativePath = file.path.replace(srcDir, '');
223
+ console.log(`${String(file.lines).padStart(5)} ${relativePath}`);
224
+ }
225
+ // Files with issues
226
+ console.log('\n\nāš ļø FILES WITH POTENTIAL ISSUES\n');
227
+ const filesWithIssues = analyses.filter((a) => a.potentialIssues.length > 0);
228
+ for (const file of filesWithIssues) {
229
+ const relativePath = file.path.replace(srcDir, '');
230
+ console.log(`\n${relativePath}:`);
231
+ for (const issue of file.potentialIssues) {
232
+ console.log(` • ${issue}`);
233
+ }
234
+ }
235
+ // Improvement suggestions
236
+ console.log('\n\n' + '═'.repeat(70));
237
+ console.log('šŸ’” IMPROVEMENT SUGGESTIONS\n');
238
+ const suggestions = generateImprovementSuggestions(analyses);
239
+ const byPriority = {
240
+ high: suggestions.filter((s) => s.priority === 'high'),
241
+ medium: suggestions.filter((s) => s.priority === 'medium'),
242
+ low: suggestions.filter((s) => s.priority === 'low'),
243
+ };
244
+ console.log('šŸ”“ HIGH PRIORITY\n');
245
+ for (const s of byPriority.high) {
246
+ console.log(`[${s.category}] ${s.description}`);
247
+ if (s.file)
248
+ console.log(` File: ${s.file.replace(srcDir, '')}`);
249
+ console.log(` Impact: ${s.impact}\n`);
250
+ }
251
+ console.log('\n🟔 MEDIUM PRIORITY\n');
252
+ for (const s of byPriority.medium) {
253
+ console.log(`[${s.category}] ${s.description}`);
254
+ if (s.file)
255
+ console.log(` File: ${s.file.replace(srcDir, '')}`);
256
+ console.log(` Impact: ${s.impact}\n`);
257
+ }
258
+ console.log('\n🟢 LOW PRIORITY\n');
259
+ for (const s of byPriority.low.slice(0, 5)) {
260
+ console.log(`[${s.category}] ${s.description}`);
261
+ console.log(` Impact: ${s.impact}\n`);
262
+ }
263
+ console.log('\n' + '═'.repeat(70));
264
+ console.log('āœ… Analysis complete!\n');
265
+ //# sourceMappingURL=analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/benchmark/analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Benchmark suite for nestjs-prisma-graphql generator
3
+ *
4
+ * Run with: pnpm tsx src/benchmark/index.ts
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/benchmark/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,272 @@
1
+ /**
2
+ * Benchmark suite for nestjs-prisma-graphql generator
3
+ *
4
+ * Run with: pnpm tsx src/benchmark/index.ts
5
+ */
6
+ import { performance } from 'node:perf_hooks';
7
+ import { createConfig } from '../helpers/create-config.js';
8
+ import { createGetModelName } from '../helpers/get-model-name.js';
9
+ import { buildDependencyGraph, detectCircularDependencies, } from '../helpers/detect-circular-deps.js';
10
+ function benchmark(name, fn, iterations = 1000) {
11
+ const times = [];
12
+ // Warmup
13
+ for (let i = 0; i < Math.min(100, iterations / 10); i++) {
14
+ fn();
15
+ }
16
+ // Actual benchmark
17
+ for (let i = 0; i < iterations; i++) {
18
+ const start = performance.now();
19
+ fn();
20
+ const end = performance.now();
21
+ times.push(end - start);
22
+ }
23
+ const totalMs = times.reduce((a, b) => a + b, 0);
24
+ const avgMs = totalMs / iterations;
25
+ const minMs = Math.min(...times);
26
+ const maxMs = Math.max(...times);
27
+ const opsPerSec = 1000 / avgMs;
28
+ return { name, iterations, totalMs, avgMs, minMs, maxMs, opsPerSec };
29
+ }
30
+ function formatResult(result) {
31
+ return [
32
+ `šŸ“Š ${result.name}`,
33
+ ` Iterations: ${result.iterations.toLocaleString()}`,
34
+ ` Total: ${result.totalMs.toFixed(2)}ms`,
35
+ ` Avg: ${result.avgMs.toFixed(4)}ms`,
36
+ ` Min: ${result.minMs.toFixed(4)}ms`,
37
+ ` Max: ${result.maxMs.toFixed(4)}ms`,
38
+ ` Ops/sec: ${result.opsPerSec.toFixed(0).toLocaleString()}`,
39
+ ].join('\n');
40
+ }
41
+ // Generate mock models for benchmarking
42
+ function generateMockModels(count) {
43
+ const models = [];
44
+ for (let i = 0; i < count; i++) {
45
+ const modelName = `Model${i}`;
46
+ const fields = [];
47
+ // Add id field
48
+ fields.push({
49
+ name: 'id',
50
+ kind: 'scalar',
51
+ type: 'String',
52
+ isRequired: true,
53
+ isList: false,
54
+ isUnique: true,
55
+ isId: true,
56
+ hasDefaultValue: true,
57
+ isGenerated: false,
58
+ isUpdatedAt: false,
59
+ });
60
+ // Add some scalar fields
61
+ for (let j = 0; j < 5; j++) {
62
+ fields.push({
63
+ name: `field${j}`,
64
+ kind: 'scalar',
65
+ type: ['String', 'Int', 'DateTime', 'Boolean', 'Float'][j % 5],
66
+ isRequired: j % 2 === 0,
67
+ isList: false,
68
+ isUnique: false,
69
+ isId: false,
70
+ hasDefaultValue: false,
71
+ isGenerated: false,
72
+ isUpdatedAt: false,
73
+ });
74
+ }
75
+ // Add relation fields (to create circular dependencies)
76
+ if (i > 0) {
77
+ fields.push({
78
+ name: 'parent',
79
+ kind: 'object',
80
+ type: `Model${i - 1}`,
81
+ isRequired: false,
82
+ isList: false,
83
+ isUnique: false,
84
+ isId: false,
85
+ hasDefaultValue: false,
86
+ isGenerated: false,
87
+ isUpdatedAt: false,
88
+ relationName: `Model${i}ToModel${i - 1}`,
89
+ });
90
+ }
91
+ if (i < count - 1) {
92
+ fields.push({
93
+ name: 'children',
94
+ kind: 'object',
95
+ type: `Model${i + 1}`,
96
+ isRequired: false,
97
+ isList: true,
98
+ isUnique: false,
99
+ isId: false,
100
+ hasDefaultValue: false,
101
+ isGenerated: false,
102
+ isUpdatedAt: false,
103
+ relationName: `Model${i + 1}ToModel${i}`,
104
+ });
105
+ }
106
+ // Add circular reference every 10 models
107
+ if (i >= 10 && i % 10 === 0) {
108
+ fields.push({
109
+ name: 'circular',
110
+ kind: 'object',
111
+ type: `Model${i - 10}`,
112
+ isRequired: false,
113
+ isList: false,
114
+ isUnique: false,
115
+ isId: false,
116
+ hasDefaultValue: false,
117
+ isGenerated: false,
118
+ isUpdatedAt: false,
119
+ relationName: `CircularRef${i}`,
120
+ });
121
+ }
122
+ models.push({
123
+ name: modelName,
124
+ dbName: modelName.toLowerCase(),
125
+ fields,
126
+ primaryKey: null,
127
+ uniqueFields: [],
128
+ uniqueIndexes: [],
129
+ isGenerated: false,
130
+ });
131
+ }
132
+ return models;
133
+ }
134
+ // Generate mock config data
135
+ function generateMockConfigData() {
136
+ return {
137
+ output: '../src/@generated',
138
+ esmCompatible: 'true',
139
+ fields_Validator_from: 'class-validator',
140
+ fields_Validator_input: 'true',
141
+ combineScalarFilters: 'true',
142
+ noAtomicOperations: 'false',
143
+ reExport: 'All',
144
+ emitSingle: 'false',
145
+ purgeOutput: 'true',
146
+ decorate_1_type: '*CreateInput',
147
+ decorate_1_field: '*',
148
+ decorate_1_name: 'ValidateNested',
149
+ decorate_1_from: 'class-validator',
150
+ decorate_1_arguments: '[]',
151
+ };
152
+ }
153
+ // Run benchmarks
154
+ console.log('šŸš€ NestJS Prisma GraphQL Generator Benchmarks\n');
155
+ console.log('═'.repeat(60));
156
+ // Benchmark 1: Config creation
157
+ console.log('\nšŸ“¦ Config Creation\n');
158
+ const configData = generateMockConfigData();
159
+ const configResult = benchmark('createConfig', () => {
160
+ createConfig(configData);
161
+ }, 5000);
162
+ console.log(formatResult(configResult));
163
+ // Benchmark 2: Model name extraction
164
+ console.log('\n\nšŸ“¦ Model Name Extraction\n');
165
+ const modelNames = Array.from({ length: 100 }, (_, i) => `Model${i}`);
166
+ const getModelName = createGetModelName(modelNames);
167
+ const testNames = [
168
+ 'Model50CreateInput',
169
+ 'Model25WhereUniqueInput',
170
+ 'Model75UpdateManyMutationInput',
171
+ 'Model10AvgAggregate',
172
+ 'FindManyModel30Args',
173
+ 'Model60CountOutputType',
174
+ ];
175
+ const modelNameResult = benchmark('getModelName (memoized)', () => {
176
+ for (const name of testNames) {
177
+ getModelName(name);
178
+ }
179
+ }, 10000);
180
+ console.log(formatResult(modelNameResult));
181
+ // Non-memoized version for comparison
182
+ const modelNameNonMemoResult = benchmark('getModelName (fresh calls)', () => {
183
+ const fresh = createGetModelName(modelNames);
184
+ for (const name of testNames) {
185
+ fresh(name);
186
+ }
187
+ }, 5000);
188
+ console.log('\n' + formatResult(modelNameNonMemoResult));
189
+ // Benchmark 3: Circular dependency detection
190
+ console.log('\n\nšŸ“¦ Circular Dependency Detection\n');
191
+ const smallModels = generateMockModels(10);
192
+ const mediumModels = generateMockModels(50);
193
+ const largeModels = generateMockModels(100);
194
+ const circDepSmallResult = benchmark('detectCircularDeps (10 models)', () => {
195
+ const graph = buildDependencyGraph(smallModels);
196
+ detectCircularDependencies(graph);
197
+ }, 5000);
198
+ console.log(formatResult(circDepSmallResult));
199
+ const circDepMediumResult = benchmark('detectCircularDeps (50 models)', () => {
200
+ const graph = buildDependencyGraph(mediumModels);
201
+ detectCircularDependencies(graph);
202
+ }, 2000);
203
+ console.log('\n' + formatResult(circDepMediumResult));
204
+ const circDepLargeResult = benchmark('detectCircularDeps (100 models)', () => {
205
+ const graph = buildDependencyGraph(largeModels);
206
+ detectCircularDependencies(graph);
207
+ }, 1000);
208
+ console.log('\n' + formatResult(circDepLargeResult));
209
+ // Benchmark 4: Dependency graph building only
210
+ console.log('\n\nšŸ“¦ Dependency Graph Building\n');
211
+ const graphSmallResult = benchmark('buildDependencyGraph (10 models)', () => {
212
+ buildDependencyGraph(smallModels);
213
+ }, 10000);
214
+ console.log(formatResult(graphSmallResult));
215
+ const graphLargeResult = benchmark('buildDependencyGraph (100 models)', () => {
216
+ buildDependencyGraph(largeModels);
217
+ }, 5000);
218
+ console.log('\n' + formatResult(graphLargeResult));
219
+ // Summary
220
+ console.log('\n\n' + '═'.repeat(60));
221
+ console.log('šŸ“‹ PERFORMANCE SUMMARY\n');
222
+ const results = [
223
+ configResult,
224
+ modelNameResult,
225
+ modelNameNonMemoResult,
226
+ circDepSmallResult,
227
+ circDepMediumResult,
228
+ circDepLargeResult,
229
+ graphSmallResult,
230
+ graphLargeResult,
231
+ ];
232
+ console.log('Operation Avg (ms) Ops/sec');
233
+ console.log('─'.repeat(60));
234
+ for (const r of results) {
235
+ const name = r.name.padEnd(38);
236
+ const avg = r.avgMs.toFixed(4).padStart(8);
237
+ const ops = Math.round(r.opsPerSec).toLocaleString().padStart(10);
238
+ console.log(`${name} ${avg} ${ops}`);
239
+ }
240
+ // Identify bottlenecks
241
+ console.log('\n\n' + '═'.repeat(60));
242
+ console.log('āš ļø POTENTIAL BOTTLENECKS\n');
243
+ const sortedByAvg = [...results].sort((a, b) => b.avgMs - a.avgMs);
244
+ for (const r of sortedByAvg.slice(0, 3)) {
245
+ console.log(`• ${r.name}: ${r.avgMs.toFixed(4)}ms avg`);
246
+ }
247
+ console.log('\n\n' + '═'.repeat(60));
248
+ console.log('šŸ’” IMPROVEMENT RECOMMENDATIONS\n');
249
+ console.log(`
250
+ 1. CONFIG CREATION (${configResult.avgMs.toFixed(4)}ms)
251
+ - Consider caching unflatten results
252
+ - Use Map instead of Object.fromEntries for fields
253
+ - Pre-compile regex patterns in filenamify
254
+
255
+ 2. MODEL NAME EXTRACTION
256
+ - Memoization helps: ${((modelNameNonMemoResult.avgMs / modelNameResult.avgMs) * 100 - 100).toFixed(0)}% slower without cache
257
+ - Consider using a trie data structure for keyword matching
258
+ - Pre-sort keywords by frequency of occurrence
259
+
260
+ 3. CIRCULAR DEPENDENCY DETECTION (${circDepLargeResult.avgMs.toFixed(4)}ms for 100 models)
261
+ - Current O(V + E) complexity is optimal
262
+ - Consider caching results between runs
263
+ - For very large schemas, consider incremental detection
264
+
265
+ 4. GENERAL IMPROVEMENTS
266
+ - Use object pooling for frequently created objects
267
+ - Consider parallel processing for independent operations
268
+ - Profile memory allocation patterns
269
+ `);
270
+ console.log('═'.repeat(60));
271
+ console.log('āœ… Benchmark complete!\n');
272
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/benchmark/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const BeforeGenerateField: "BeforeGenerateField";
2
+ //# sourceMappingURL=event-names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-names.d.ts","sourceRoot":"","sources":["../src/event-names.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,EAAG,qBAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const BeforeGenerateField = 'BeforeGenerateField';
2
+ //# sourceMappingURL=event-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-names.js","sourceRoot":"","sources":["../src/event-names.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAA8B,CAAC"}