@gqlkit-ts/cli 0.1.0 → 0.2.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 (234) hide show
  1. package/dist/auto-type-generator/auto-type-generator.d.ts +19 -3
  2. package/dist/auto-type-generator/auto-type-generator.d.ts.map +1 -1
  3. package/dist/auto-type-generator/auto-type-generator.js +236 -49
  4. package/dist/auto-type-generator/auto-type-generator.js.map +1 -1
  5. package/dist/auto-type-generator/index.d.ts +1 -1
  6. package/dist/auto-type-generator/index.d.ts.map +1 -1
  7. package/dist/auto-type-generator/index.js.map +1 -1
  8. package/dist/auto-type-generator/inline-enum-collector.d.ts +31 -0
  9. package/dist/auto-type-generator/inline-enum-collector.d.ts.map +1 -0
  10. package/dist/auto-type-generator/inline-enum-collector.js +157 -0
  11. package/dist/auto-type-generator/inline-enum-collector.js.map +1 -0
  12. package/dist/auto-type-generator/naming-convention.d.ts +4 -0
  13. package/dist/auto-type-generator/naming-convention.d.ts.map +1 -1
  14. package/dist/auto-type-generator/naming-convention.js +8 -0
  15. package/dist/auto-type-generator/naming-convention.js.map +1 -1
  16. package/dist/gen-orchestrator/orchestrator.d.ts.map +1 -1
  17. package/dist/gen-orchestrator/orchestrator.js +106 -8
  18. package/dist/gen-orchestrator/orchestrator.js.map +1 -1
  19. package/dist/resolver-extractor/extract-resolvers.d.ts +10 -1
  20. package/dist/resolver-extractor/extract-resolvers.d.ts.map +1 -1
  21. package/dist/resolver-extractor/extractor/define-api-extractor.d.ts +11 -1
  22. package/dist/resolver-extractor/extractor/define-api-extractor.d.ts.map +1 -1
  23. package/dist/resolver-extractor/extractor/define-api-extractor.js +88 -264
  24. package/dist/resolver-extractor/extractor/define-api-extractor.js.map +1 -1
  25. package/dist/schema-generator/emitter/code-emitter.d.ts +10 -2
  26. package/dist/schema-generator/emitter/code-emitter.d.ts.map +1 -1
  27. package/dist/schema-generator/emitter/code-emitter.js +19 -4
  28. package/dist/schema-generator/emitter/code-emitter.js.map +1 -1
  29. package/dist/schema-generator/generate-schema.d.ts.map +1 -1
  30. package/dist/schema-generator/generate-schema.js +18 -1
  31. package/dist/schema-generator/generate-schema.js.map +1 -1
  32. package/dist/schema-generator/integrator/result-integrator.d.ts +20 -0
  33. package/dist/schema-generator/integrator/result-integrator.d.ts.map +1 -1
  34. package/dist/schema-generator/integrator/result-integrator.js +42 -0
  35. package/dist/schema-generator/integrator/result-integrator.js.map +1 -1
  36. package/dist/shared/constants.d.ts +0 -16
  37. package/dist/shared/constants.d.ts.map +1 -1
  38. package/dist/shared/constants.js +0 -19
  39. package/dist/shared/constants.js.map +1 -1
  40. package/dist/shared/directive-detector.d.ts.map +1 -1
  41. package/dist/shared/directive-detector.js +8 -15
  42. package/dist/shared/directive-detector.js.map +1 -1
  43. package/dist/shared/file-scanner.d.ts.map +1 -1
  44. package/dist/shared/file-scanner.js +5 -3
  45. package/dist/shared/file-scanner.js.map +1 -1
  46. package/dist/shared/index.d.ts +1 -1
  47. package/dist/shared/index.d.ts.map +1 -1
  48. package/dist/shared/index.js +1 -3
  49. package/dist/shared/index.js.map +1 -1
  50. package/dist/shared/interface-detector.d.ts +3 -2
  51. package/dist/shared/interface-detector.d.ts.map +1 -1
  52. package/dist/shared/interface-detector.js +54 -11
  53. package/dist/shared/interface-detector.js.map +1 -1
  54. package/dist/shared/path-utils.d.ts +2 -0
  55. package/dist/shared/path-utils.d.ts.map +1 -0
  56. package/dist/shared/path-utils.js +4 -0
  57. package/dist/shared/path-utils.js.map +1 -0
  58. package/dist/shared/type-converter.d.ts.map +1 -1
  59. package/dist/shared/type-converter.js +11 -0
  60. package/dist/shared/type-converter.js.map +1 -1
  61. package/dist/shared/typescript-utils.d.ts +34 -7
  62. package/dist/shared/typescript-utils.d.ts.map +1 -1
  63. package/dist/shared/typescript-utils.js +72 -24
  64. package/dist/shared/typescript-utils.js.map +1 -1
  65. package/dist/type-extractor/collector/scalar-collector.d.ts.map +1 -1
  66. package/dist/type-extractor/collector/scalar-collector.js +4 -14
  67. package/dist/type-extractor/collector/scalar-collector.js.map +1 -1
  68. package/dist/type-extractor/converter/graphql-converter.d.ts.map +1 -1
  69. package/dist/type-extractor/converter/graphql-converter.js +42 -3
  70. package/dist/type-extractor/converter/graphql-converter.js.map +1 -1
  71. package/dist/type-extractor/extractor/field-type-resolver.d.ts +28 -0
  72. package/dist/type-extractor/extractor/field-type-resolver.d.ts.map +1 -0
  73. package/dist/type-extractor/extractor/field-type-resolver.js +394 -0
  74. package/dist/type-extractor/extractor/field-type-resolver.js.map +1 -0
  75. package/dist/type-extractor/extractor/type-extractor.d.ts +12 -3
  76. package/dist/type-extractor/extractor/type-extractor.d.ts.map +1 -1
  77. package/dist/type-extractor/extractor/type-extractor.js +176 -210
  78. package/dist/type-extractor/extractor/type-extractor.js.map +1 -1
  79. package/dist/type-extractor/extractor/type-name-collector.d.ts +24 -0
  80. package/dist/type-extractor/extractor/type-name-collector.d.ts.map +1 -0
  81. package/dist/type-extractor/extractor/type-name-collector.js +102 -0
  82. package/dist/type-extractor/extractor/type-name-collector.js.map +1 -0
  83. package/dist/type-extractor/mapper/scalar-base-type-mapper.d.ts +89 -0
  84. package/dist/type-extractor/mapper/scalar-base-type-mapper.d.ts.map +1 -0
  85. package/dist/type-extractor/mapper/scalar-base-type-mapper.js +158 -0
  86. package/dist/type-extractor/mapper/scalar-base-type-mapper.js.map +1 -0
  87. package/dist/type-extractor/types/diagnostics.d.ts +1 -1
  88. package/dist/type-extractor/types/diagnostics.d.ts.map +1 -1
  89. package/dist/type-extractor/types/graphql.d.ts +2 -0
  90. package/dist/type-extractor/types/graphql.d.ts.map +1 -1
  91. package/dist/type-extractor/types/index.d.ts +2 -1
  92. package/dist/type-extractor/types/index.d.ts.map +1 -1
  93. package/dist/type-extractor/types/index.js +1 -1
  94. package/dist/type-extractor/types/index.js.map +1 -1
  95. package/dist/type-extractor/types/ts-type-reference-factory.d.ts +39 -0
  96. package/dist/type-extractor/types/ts-type-reference-factory.d.ts.map +1 -0
  97. package/dist/type-extractor/types/ts-type-reference-factory.js +69 -0
  98. package/dist/type-extractor/types/ts-type-reference-factory.js.map +1 -0
  99. package/dist/type-extractor/types/typescript.d.ts +21 -1
  100. package/dist/type-extractor/types/typescript.d.ts.map +1 -1
  101. package/dist/type-extractor/validator/type-validator.js +1 -1
  102. package/dist/type-extractor/validator/type-validator.js.map +1 -1
  103. package/docs/index.md +1 -0
  104. package/docs/integration/drizzle.md +191 -0
  105. package/docs/schema/enums.md +208 -0
  106. package/docs/schema/fields.md +2 -0
  107. package/docs/schema/inputs.md +2 -0
  108. package/docs/schema/objects.md +2 -0
  109. package/docs/schema/queries-mutations.md +2 -0
  110. package/package.json +10 -3
  111. package/src/auto-type-generator/auto-type-generator.ts +925 -0
  112. package/src/auto-type-generator/index.ts +21 -0
  113. package/src/auto-type-generator/inline-enum-collector.ts +290 -0
  114. package/src/auto-type-generator/name-collision-validator.ts +119 -0
  115. package/src/auto-type-generator/naming-convention.ts +126 -0
  116. package/src/cli.ts +11 -0
  117. package/src/commands/gen.ts +141 -0
  118. package/src/commands/main.ts +5 -0
  119. package/src/config/define-config.ts +28 -0
  120. package/src/config/index.ts +7 -0
  121. package/src/config/types.ts +144 -0
  122. package/src/config-loader/index.ts +14 -0
  123. package/src/config-loader/loader.ts +143 -0
  124. package/src/config-loader/validator.ts +672 -0
  125. package/src/gen-orchestrator/hook-executor/hook-executor.ts +117 -0
  126. package/src/gen-orchestrator/orchestrator.ts +784 -0
  127. package/src/gen-orchestrator/reporter/diagnostic-reporter.ts +44 -0
  128. package/src/gen-orchestrator/reporter/progress-reporter.ts +61 -0
  129. package/src/gen-orchestrator/writer/file-writer.ts +38 -0
  130. package/src/index.ts +2 -0
  131. package/src/resolver-extractor/extract-resolvers.ts +63 -0
  132. package/src/resolver-extractor/extractor/define-api-extractor.ts +806 -0
  133. package/src/resolver-extractor/index.ts +19 -0
  134. package/src/resolver-extractor/validator/abstract-resolver-validator.ts +251 -0
  135. package/src/resolver-extractor/validator/only-validator.ts +158 -0
  136. package/src/schema-generator/builder/ast-builder.ts +706 -0
  137. package/src/schema-generator/emitter/code-emitter.ts +351 -0
  138. package/src/schema-generator/emitter/sdl-emitter.ts +13 -0
  139. package/src/schema-generator/generate-schema.ts +170 -0
  140. package/src/schema-generator/index.ts +19 -0
  141. package/src/schema-generator/integrator/result-integrator.ts +690 -0
  142. package/src/schema-generator/pruner/schema-pruner.ts +112 -0
  143. package/src/schema-generator/resolver-collector/resolver-collector.ts +123 -0
  144. package/src/shared/constants.ts +122 -0
  145. package/src/shared/default-value-detector.ts +172 -0
  146. package/src/shared/diagnostics.ts +35 -0
  147. package/src/shared/directive-definition-extractor.ts +564 -0
  148. package/src/shared/directive-detector.ts +556 -0
  149. package/src/shared/file-scanner.ts +170 -0
  150. package/src/shared/index.ts +32 -0
  151. package/src/shared/inline-object-extractor.ts +102 -0
  152. package/src/shared/inline-object-utils.ts +23 -0
  153. package/src/shared/interface-detector.ts +176 -0
  154. package/src/shared/interface-validator.ts +211 -0
  155. package/src/shared/metadata-detector.ts +443 -0
  156. package/src/shared/path-utils.ts +3 -0
  157. package/src/shared/program-factory.ts +51 -0
  158. package/src/shared/source-location.ts +27 -0
  159. package/src/shared/tsconfig-loader.ts +126 -0
  160. package/src/shared/tsdoc-parser.ts +155 -0
  161. package/src/shared/type-converter.ts +99 -0
  162. package/src/shared/typescript-utils.ts +246 -0
  163. package/src/type-extractor/collector/result-collector.ts +57 -0
  164. package/src/type-extractor/collector/scalar-collector.ts +254 -0
  165. package/src/type-extractor/converter/field-eligibility.ts +112 -0
  166. package/src/type-extractor/converter/graphql-converter.ts +459 -0
  167. package/src/type-extractor/extract-types.ts +1 -0
  168. package/src/type-extractor/extractor/field-type-resolver.ts +569 -0
  169. package/src/type-extractor/extractor/type-extractor.ts +1567 -0
  170. package/src/type-extractor/extractor/type-name-collector.ts +130 -0
  171. package/src/type-extractor/index.ts +20 -0
  172. package/src/type-extractor/mapper/scalar-base-type-mapper.ts +265 -0
  173. package/src/type-extractor/types/diagnostics.ts +99 -0
  174. package/src/type-extractor/types/graphql.ts +55 -0
  175. package/src/type-extractor/types/index.ts +37 -0
  176. package/src/type-extractor/types/ts-type-reference-factory.ts +137 -0
  177. package/src/type-extractor/types/typescript.ts +133 -0
  178. package/src/type-extractor/validator/type-validator.ts +77 -0
  179. package/dist/auto-type-generator/auto-type-generator.test.d.ts +0 -2
  180. package/dist/auto-type-generator/auto-type-generator.test.d.ts.map +0 -1
  181. package/dist/auto-type-generator/auto-type-generator.test.js +0 -613
  182. package/dist/auto-type-generator/auto-type-generator.test.js.map +0 -1
  183. package/dist/auto-type-generator/name-collision-validator.test.d.ts +0 -2
  184. package/dist/auto-type-generator/name-collision-validator.test.d.ts.map +0 -1
  185. package/dist/auto-type-generator/name-collision-validator.test.js +0 -358
  186. package/dist/auto-type-generator/name-collision-validator.test.js.map +0 -1
  187. package/dist/auto-type-generator/naming-convention.test.d.ts +0 -2
  188. package/dist/auto-type-generator/naming-convention.test.d.ts.map +0 -1
  189. package/dist/auto-type-generator/naming-convention.test.js +0 -132
  190. package/dist/auto-type-generator/naming-convention.test.js.map +0 -1
  191. package/dist/commands/gen.test.d.ts +0 -2
  192. package/dist/commands/gen.test.d.ts.map +0 -1
  193. package/dist/commands/gen.test.js +0 -226
  194. package/dist/commands/gen.test.js.map +0 -1
  195. package/dist/config-loader/loader.test.d.ts +0 -2
  196. package/dist/config-loader/loader.test.d.ts.map +0 -1
  197. package/dist/config-loader/loader.test.js +0 -123
  198. package/dist/config-loader/loader.test.js.map +0 -1
  199. package/dist/config-loader/validator.test.d.ts +0 -2
  200. package/dist/config-loader/validator.test.d.ts.map +0 -1
  201. package/dist/config-loader/validator.test.js +0 -846
  202. package/dist/config-loader/validator.test.js.map +0 -1
  203. package/dist/gen-orchestrator/golden.test.d.ts +0 -2
  204. package/dist/gen-orchestrator/golden.test.d.ts.map +0 -1
  205. package/dist/gen-orchestrator/golden.test.js +0 -102
  206. package/dist/gen-orchestrator/golden.test.js.map +0 -1
  207. package/dist/gen-orchestrator/hook-executor/hook-executor.test.d.ts +0 -2
  208. package/dist/gen-orchestrator/hook-executor/hook-executor.test.d.ts.map +0 -1
  209. package/dist/gen-orchestrator/hook-executor/hook-executor.test.js +0 -167
  210. package/dist/gen-orchestrator/hook-executor/hook-executor.test.js.map +0 -1
  211. package/dist/gen-orchestrator/reporter/progress-reporter.test.d.ts +0 -2
  212. package/dist/gen-orchestrator/reporter/progress-reporter.test.d.ts.map +0 -1
  213. package/dist/gen-orchestrator/reporter/progress-reporter.test.js +0 -74
  214. package/dist/gen-orchestrator/reporter/progress-reporter.test.js.map +0 -1
  215. package/dist/resolver-extractor/validator/only-validator.test.d.ts +0 -8
  216. package/dist/resolver-extractor/validator/only-validator.test.d.ts.map +0 -1
  217. package/dist/resolver-extractor/validator/only-validator.test.js +0 -352
  218. package/dist/resolver-extractor/validator/only-validator.test.js.map +0 -1
  219. package/dist/schema-generator/builder/ast-builder.test.d.ts +0 -2
  220. package/dist/schema-generator/builder/ast-builder.test.d.ts.map +0 -1
  221. package/dist/schema-generator/builder/ast-builder.test.js +0 -469
  222. package/dist/schema-generator/builder/ast-builder.test.js.map +0 -1
  223. package/dist/shared/file-scanner.test.d.ts +0 -2
  224. package/dist/shared/file-scanner.test.d.ts.map +0 -1
  225. package/dist/shared/file-scanner.test.js +0 -138
  226. package/dist/shared/file-scanner.test.js.map +0 -1
  227. package/dist/shared/interface-validator.test.d.ts +0 -2
  228. package/dist/shared/interface-validator.test.d.ts.map +0 -1
  229. package/dist/shared/interface-validator.test.js +0 -145
  230. package/dist/shared/interface-validator.test.js.map +0 -1
  231. package/dist/type-extractor/types/typescript.test.d.ts +0 -2
  232. package/dist/type-extractor/types/typescript.test.d.ts.map +0 -1
  233. package/dist/type-extractor/types/typescript.test.js +0 -287
  234. package/dist/type-extractor/types/typescript.test.js.map +0 -1
@@ -1,358 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { validateNameCollisions, } from "./name-collision-validator.js";
3
- function createMockAutoGeneratedType(name, generatedFrom, sourceFile = "src/gqlkit/schema/types.ts", line = 1) {
4
- return {
5
- name,
6
- kind: "Object",
7
- fields: [],
8
- sourceLocation: { file: sourceFile, line, column: 1 },
9
- generatedFrom,
10
- description: null,
11
- };
12
- }
13
- describe("validateNameCollisions", () => {
14
- describe("user-defined type collision detection", () => {
15
- it("detects collision between auto-generated type and user-defined type", () => {
16
- const input = {
17
- userDefinedTypes: [
18
- {
19
- name: "UserProfile",
20
- sourceLocation: {
21
- file: "src/gqlkit/schema/user.ts",
22
- line: 10,
23
- column: 1,
24
- },
25
- },
26
- ],
27
- autoGeneratedTypes: [
28
- createMockAutoGeneratedType("UserProfile", {
29
- parentTypeName: "User",
30
- fieldPath: ["profile"],
31
- context: "typeField",
32
- }, "src/gqlkit/schema/types.ts", 5),
33
- ],
34
- sourceRoot: null,
35
- };
36
- const result = validateNameCollisions(input);
37
- expect(result.hasCollisions).toBe(true);
38
- expect(result.diagnostics).toHaveLength(1);
39
- expect(result.diagnostics[0]).toMatchObject({
40
- code: "AUTO_TYPE_NAME_COLLISION_USER",
41
- severity: "error",
42
- });
43
- expect(result.diagnostics[0]?.message).toContain("UserProfile");
44
- expect(result.diagnostics[0]?.message).toContain("user-defined type");
45
- });
46
- it("includes source locations in diagnostic message", () => {
47
- const input = {
48
- userDefinedTypes: [
49
- {
50
- name: "UserProfile",
51
- sourceLocation: {
52
- file: "src/gqlkit/schema/user.ts",
53
- line: 10,
54
- column: 1,
55
- },
56
- },
57
- ],
58
- autoGeneratedTypes: [
59
- createMockAutoGeneratedType("UserProfile", {
60
- parentTypeName: "User",
61
- fieldPath: ["profile"],
62
- context: "typeField",
63
- }, "src/gqlkit/schema/types.ts", 5),
64
- ],
65
- sourceRoot: null,
66
- };
67
- const result = validateNameCollisions(input);
68
- expect(result.diagnostics[0]?.message).toContain("src/gqlkit/schema/user.ts");
69
- });
70
- it("includes recommended resolution in diagnostic message", () => {
71
- const input = {
72
- userDefinedTypes: [
73
- {
74
- name: "UserProfile",
75
- sourceLocation: {
76
- file: "src/gqlkit/schema/user.ts",
77
- line: 10,
78
- column: 1,
79
- },
80
- },
81
- ],
82
- autoGeneratedTypes: [
83
- createMockAutoGeneratedType("UserProfile", {
84
- parentTypeName: "User",
85
- fieldPath: ["profile"],
86
- context: "typeField",
87
- }),
88
- ],
89
- sourceRoot: null,
90
- };
91
- const result = validateNameCollisions(input);
92
- const message = result.diagnostics[0]?.message ?? "";
93
- expect(message.includes("renaming") || message.includes("explicit type")).toBe(true);
94
- });
95
- it("returns no collisions when types do not conflict", () => {
96
- const input = {
97
- userDefinedTypes: [
98
- {
99
- name: "User",
100
- sourceLocation: {
101
- file: "src/gqlkit/schema/user.ts",
102
- line: 10,
103
- column: 1,
104
- },
105
- },
106
- ],
107
- autoGeneratedTypes: [
108
- createMockAutoGeneratedType("UserProfile", {
109
- parentTypeName: "User",
110
- fieldPath: ["profile"],
111
- context: "typeField",
112
- }),
113
- ],
114
- sourceRoot: null,
115
- };
116
- const result = validateNameCollisions(input);
117
- expect(result.hasCollisions).toBe(false);
118
- expect(result.diagnostics).toHaveLength(0);
119
- });
120
- it("detects multiple user-defined type collisions", () => {
121
- const input = {
122
- userDefinedTypes: [
123
- {
124
- name: "UserProfile",
125
- sourceLocation: {
126
- file: "src/gqlkit/schema/user.ts",
127
- line: 10,
128
- column: 1,
129
- },
130
- },
131
- {
132
- name: "UserAddress",
133
- sourceLocation: {
134
- file: "src/gqlkit/schema/user.ts",
135
- line: 20,
136
- column: 1,
137
- },
138
- },
139
- ],
140
- autoGeneratedTypes: [
141
- createMockAutoGeneratedType("UserProfile", {
142
- parentTypeName: "User",
143
- fieldPath: ["profile"],
144
- context: "typeField",
145
- }),
146
- createMockAutoGeneratedType("UserAddress", {
147
- parentTypeName: "User",
148
- fieldPath: ["address"],
149
- context: "typeField",
150
- }),
151
- ],
152
- sourceRoot: null,
153
- };
154
- const result = validateNameCollisions(input);
155
- expect(result.hasCollisions).toBe(true);
156
- expect(result.diagnostics).toHaveLength(2);
157
- expect(result.diagnostics.every((d) => d.code === "AUTO_TYPE_NAME_COLLISION_USER")).toBe(true);
158
- });
159
- });
160
- describe("auto-generated type collision detection", () => {
161
- it("detects collision between multiple auto-generated types with same name", () => {
162
- const input = {
163
- userDefinedTypes: [],
164
- autoGeneratedTypes: [
165
- createMockAutoGeneratedType("UpdateDataInput", {
166
- parentTypeName: null,
167
- fieldPath: ["data"],
168
- context: "resolverArg",
169
- }, "src/gqlkit/schema/mutation.ts", 5),
170
- createMockAutoGeneratedType("UpdateDataInput", {
171
- parentTypeName: null,
172
- fieldPath: ["data"],
173
- context: "resolverArg",
174
- }, "src/gqlkit/schema/query.ts", 10),
175
- ],
176
- sourceRoot: null,
177
- };
178
- const result = validateNameCollisions(input);
179
- expect(result.hasCollisions).toBe(true);
180
- expect(result.diagnostics).toHaveLength(1);
181
- expect(result.diagnostics[0]).toMatchObject({
182
- code: "AUTO_TYPE_NAME_COLLISION_AUTO",
183
- severity: "error",
184
- });
185
- });
186
- it("lists all collision source locations in diagnostic message", () => {
187
- const input = {
188
- userDefinedTypes: [],
189
- autoGeneratedTypes: [
190
- createMockAutoGeneratedType("UpdateDataInput", {
191
- parentTypeName: null,
192
- fieldPath: ["data"],
193
- context: "resolverArg",
194
- }, "src/gqlkit/schema/mutation.ts", 5),
195
- createMockAutoGeneratedType("UpdateDataInput", {
196
- parentTypeName: null,
197
- fieldPath: ["data"],
198
- context: "resolverArg",
199
- }, "src/gqlkit/schema/query.ts", 10),
200
- ],
201
- sourceRoot: null,
202
- };
203
- const result = validateNameCollisions(input);
204
- const message = result.diagnostics[0]?.message ?? "";
205
- expect(message).toContain("src/gqlkit/schema/mutation.ts");
206
- expect(message).toContain("src/gqlkit/schema/query.ts");
207
- });
208
- it("includes recommended resolution in auto-collision diagnostic", () => {
209
- const input = {
210
- userDefinedTypes: [],
211
- autoGeneratedTypes: [
212
- createMockAutoGeneratedType("UpdateDataInput", {
213
- parentTypeName: null,
214
- fieldPath: ["data"],
215
- context: "resolverArg",
216
- }, "src/gqlkit/schema/mutation.ts", 5),
217
- createMockAutoGeneratedType("UpdateDataInput", {
218
- parentTypeName: null,
219
- fieldPath: ["data"],
220
- context: "resolverArg",
221
- }, "src/gqlkit/schema/query.ts", 10),
222
- ],
223
- sourceRoot: null,
224
- };
225
- const result = validateNameCollisions(input);
226
- const message = result.diagnostics[0]?.message ?? "";
227
- expect(message.includes("explicit type")).toBe(true);
228
- });
229
- it("returns no collisions when auto-generated types have unique names", () => {
230
- const input = {
231
- userDefinedTypes: [],
232
- autoGeneratedTypes: [
233
- createMockAutoGeneratedType("UserProfile", {
234
- parentTypeName: "User",
235
- fieldPath: ["profile"],
236
- context: "typeField",
237
- }),
238
- createMockAutoGeneratedType("UserAddress", {
239
- parentTypeName: "User",
240
- fieldPath: ["address"],
241
- context: "typeField",
242
- }),
243
- ],
244
- sourceRoot: null,
245
- };
246
- const result = validateNameCollisions(input);
247
- expect(result.hasCollisions).toBe(false);
248
- expect(result.diagnostics).toHaveLength(0);
249
- });
250
- it("handles three or more auto-generated types with same name", () => {
251
- const input = {
252
- userDefinedTypes: [],
253
- autoGeneratedTypes: [
254
- createMockAutoGeneratedType("DataInput", {
255
- parentTypeName: null,
256
- fieldPath: [],
257
- context: "resolverArg",
258
- }, "src/gqlkit/schema/a.ts", 1),
259
- createMockAutoGeneratedType("DataInput", {
260
- parentTypeName: null,
261
- fieldPath: [],
262
- context: "resolverArg",
263
- }, "src/gqlkit/schema/b.ts", 2),
264
- createMockAutoGeneratedType("DataInput", {
265
- parentTypeName: null,
266
- fieldPath: [],
267
- context: "resolverArg",
268
- }, "src/gqlkit/schema/c.ts", 3),
269
- ],
270
- sourceRoot: null,
271
- };
272
- const result = validateNameCollisions(input);
273
- expect(result.hasCollisions).toBe(true);
274
- expect(result.diagnostics).toHaveLength(1);
275
- const message = result.diagnostics[0]?.message ?? "";
276
- expect(message).toContain("src/gqlkit/schema/a.ts");
277
- expect(message).toContain("src/gqlkit/schema/b.ts");
278
- expect(message).toContain("src/gqlkit/schema/c.ts");
279
- });
280
- });
281
- describe("combined collision scenarios", () => {
282
- it("detects both user-defined and auto-generated collisions", () => {
283
- const input = {
284
- userDefinedTypes: [
285
- {
286
- name: "UserProfile",
287
- sourceLocation: {
288
- file: "src/gqlkit/schema/user.ts",
289
- line: 10,
290
- column: 1,
291
- },
292
- },
293
- ],
294
- autoGeneratedTypes: [
295
- createMockAutoGeneratedType("UserProfile", {
296
- parentTypeName: "User",
297
- fieldPath: ["profile"],
298
- context: "typeField",
299
- }),
300
- createMockAutoGeneratedType("DataInput", {
301
- parentTypeName: null,
302
- fieldPath: [],
303
- context: "resolverArg",
304
- }, "src/gqlkit/schema/a.ts", 1),
305
- createMockAutoGeneratedType("DataInput", {
306
- parentTypeName: null,
307
- fieldPath: [],
308
- context: "resolverArg",
309
- }, "src/gqlkit/schema/b.ts", 2),
310
- ],
311
- sourceRoot: null,
312
- };
313
- const result = validateNameCollisions(input);
314
- expect(result.hasCollisions).toBe(true);
315
- expect(result.diagnostics).toHaveLength(2);
316
- expect(result.diagnostics.some((d) => d.code === "AUTO_TYPE_NAME_COLLISION_USER")).toBe(true);
317
- expect(result.diagnostics.some((d) => d.code === "AUTO_TYPE_NAME_COLLISION_AUTO")).toBe(true);
318
- });
319
- });
320
- describe("edge cases", () => {
321
- it("handles empty inputs", () => {
322
- const input = {
323
- userDefinedTypes: [],
324
- autoGeneratedTypes: [],
325
- sourceRoot: null,
326
- };
327
- const result = validateNameCollisions(input);
328
- expect(result.hasCollisions).toBe(false);
329
- expect(result.diagnostics).toHaveLength(0);
330
- });
331
- it("is case-sensitive for type names", () => {
332
- const input = {
333
- userDefinedTypes: [
334
- {
335
- name: "UserProfile",
336
- sourceLocation: {
337
- file: "src/gqlkit/schema/user.ts",
338
- line: 10,
339
- column: 1,
340
- },
341
- },
342
- ],
343
- autoGeneratedTypes: [
344
- createMockAutoGeneratedType("Userprofile", {
345
- parentTypeName: "User",
346
- fieldPath: ["profile"],
347
- context: "typeField",
348
- }),
349
- ],
350
- sourceRoot: null,
351
- };
352
- const result = validateNameCollisions(input);
353
- expect(result.hasCollisions).toBe(false);
354
- expect(result.diagnostics).toHaveLength(0);
355
- });
356
- });
357
- });
358
- //# sourceMappingURL=name-collision-validator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"name-collision-validator.test.js","sourceRoot":"","sources":["../../src/auto-type-generator/name-collision-validator.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=naming-convention.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"naming-convention.test.d.ts","sourceRoot":"","sources":["../../src/auto-type-generator/naming-convention.test.ts"],"names":[],"mappings":""}
@@ -1,132 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { generateAutoTypeName, } from "./naming-convention.js";
3
- describe("generateAutoTypeName", () => {
4
- describe("Object type field naming", () => {
5
- it("generates {ParentTypeName}{PascalCaseFieldName} for object type fields", () => {
6
- const context = {
7
- kind: "objectField",
8
- parentTypeName: "User",
9
- fieldPath: ["profile"],
10
- };
11
- expect(generateAutoTypeName(context)).toBe("UserProfile");
12
- });
13
- it("handles nested object fields by accumulating path", () => {
14
- const context = {
15
- kind: "objectField",
16
- parentTypeName: "User",
17
- fieldPath: ["profile", "address"],
18
- };
19
- expect(generateAutoTypeName(context)).toBe("UserProfileAddress");
20
- });
21
- it("handles deeply nested object fields", () => {
22
- const context = {
23
- kind: "objectField",
24
- parentTypeName: "User",
25
- fieldPath: ["profile", "address", "location"],
26
- };
27
- expect(generateAutoTypeName(context)).toBe("UserProfileAddressLocation");
28
- });
29
- it("converts camelCase field names to PascalCase", () => {
30
- const context = {
31
- kind: "objectField",
32
- parentTypeName: "User",
33
- fieldPath: ["socialLinks"],
34
- };
35
- expect(generateAutoTypeName(context)).toBe("UserSocialLinks");
36
- });
37
- it("converts snake_case field names to PascalCase", () => {
38
- const context = {
39
- kind: "objectField",
40
- parentTypeName: "User",
41
- fieldPath: ["social_links"],
42
- };
43
- expect(generateAutoTypeName(context)).toBe("UserSocialLinks");
44
- });
45
- });
46
- describe("Input type field naming", () => {
47
- it("generates {ParentTypeNameWithoutInputSuffix}{PascalCaseFieldName}Input for input type fields", () => {
48
- const context = {
49
- kind: "inputField",
50
- parentTypeName: "CreateUserInput",
51
- fieldPath: ["profile"],
52
- };
53
- expect(generateAutoTypeName(context)).toBe("CreateUserProfileInput");
54
- });
55
- it("handles nested input fields by accumulating path", () => {
56
- const context = {
57
- kind: "inputField",
58
- parentTypeName: "CreateUserInput",
59
- fieldPath: ["profile", "address"],
60
- };
61
- expect(generateAutoTypeName(context)).toBe("CreateUserProfileAddressInput");
62
- });
63
- it("handles parent type without Input suffix (uses parent name as-is)", () => {
64
- const context = {
65
- kind: "inputField",
66
- parentTypeName: "UserData",
67
- fieldPath: ["profile"],
68
- };
69
- expect(generateAutoTypeName(context)).toBe("UserDataProfileInput");
70
- });
71
- });
72
- describe("Query/Mutation resolver argument naming", () => {
73
- it("generates {PascalCaseFieldName}Input for args named 'input' (avoids InputInput duplication)", () => {
74
- const context = {
75
- kind: "resolverArg",
76
- resolverType: "query",
77
- fieldName: "createUser",
78
- argName: "input",
79
- parentTypeName: null,
80
- fieldPath: [],
81
- };
82
- expect(generateAutoTypeName(context)).toBe("CreateUserInput");
83
- });
84
- it("generates {PascalCaseFieldName}{PascalCaseArgName}Input for mutation args", () => {
85
- const context = {
86
- kind: "resolverArg",
87
- resolverType: "mutation",
88
- fieldName: "updateUser",
89
- argName: "data",
90
- parentTypeName: null,
91
- fieldPath: [],
92
- };
93
- expect(generateAutoTypeName(context)).toBe("UpdateUserDataInput");
94
- });
95
- it("handles nested args by accumulating path", () => {
96
- const context = {
97
- kind: "resolverArg",
98
- resolverType: "mutation",
99
- fieldName: "updateSettings",
100
- argName: "settings",
101
- parentTypeName: null,
102
- fieldPath: ["notifications"],
103
- };
104
- expect(generateAutoTypeName(context)).toBe("UpdateSettingsSettingsNotificationsInput");
105
- });
106
- });
107
- describe("Field resolver argument naming", () => {
108
- it("generates {ParentTypeName}{PascalCaseFieldName}{PascalCaseArgName}Input for field resolver args", () => {
109
- const context = {
110
- kind: "resolverArg",
111
- resolverType: "field",
112
- fieldName: "posts",
113
- argName: "filter",
114
- parentTypeName: "User",
115
- fieldPath: [],
116
- };
117
- expect(generateAutoTypeName(context)).toBe("UserPostsFilterInput");
118
- });
119
- it("handles nested field resolver args", () => {
120
- const context = {
121
- kind: "resolverArg",
122
- resolverType: "field",
123
- fieldName: "posts",
124
- argName: "filter",
125
- parentTypeName: "User",
126
- fieldPath: ["options"],
127
- };
128
- expect(generateAutoTypeName(context)).toBe("UserPostsFilterOptionsInput");
129
- });
130
- });
131
- });
132
- //# sourceMappingURL=naming-convention.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"naming-convention.test.js","sourceRoot":"","sources":["../../src/auto-type-generator/naming-convention.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=gen.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gen.test.d.ts","sourceRoot":"","sources":["../../src/commands/gen.test.ts"],"names":[],"mappings":""}