@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,145 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { validateInterfaceImplementations } from "./interface-validator.js";
3
- describe("validateInterfaceImplementations", () => {
4
- it("should detect missing interface field", () => {
5
- const types = [
6
- {
7
- name: "Node",
8
- kind: "Interface",
9
- fields: [
10
- {
11
- name: "id",
12
- type: {
13
- typeName: "ID",
14
- nullable: false,
15
- list: false,
16
- listItemNullable: null,
17
- },
18
- description: null,
19
- deprecated: null,
20
- directives: null,
21
- defaultValue: null,
22
- },
23
- ],
24
- unionMembers: null,
25
- enumValues: null,
26
- isNumericEnum: false,
27
- implementedInterfaces: null,
28
- sourceFile: "src/node.ts",
29
- description: null,
30
- deprecated: null,
31
- directives: null,
32
- },
33
- {
34
- name: "User",
35
- kind: "Object",
36
- fields: [
37
- {
38
- name: "name",
39
- type: {
40
- typeName: "String",
41
- nullable: false,
42
- list: false,
43
- listItemNullable: null,
44
- },
45
- description: null,
46
- deprecated: null,
47
- directives: null,
48
- defaultValue: null,
49
- },
50
- ],
51
- unionMembers: null,
52
- enumValues: null,
53
- isNumericEnum: false,
54
- implementedInterfaces: ["Node"],
55
- sourceFile: "src/user.ts",
56
- description: null,
57
- deprecated: null,
58
- directives: null,
59
- },
60
- ];
61
- const result = validateInterfaceImplementations(types);
62
- expect(result.isValid).toBe(false);
63
- expect(result.diagnostics).toHaveLength(1);
64
- expect(result.diagnostics[0]).toMatchObject({
65
- code: "INTERFACE_MISSING_FIELD",
66
- message: "Type 'User' implements interface 'Node' but is missing field 'id'",
67
- severity: "error",
68
- });
69
- });
70
- it("should pass when all interface fields are implemented", () => {
71
- const types = [
72
- {
73
- name: "Node",
74
- kind: "Interface",
75
- fields: [
76
- {
77
- name: "id",
78
- type: {
79
- typeName: "ID",
80
- nullable: false,
81
- list: false,
82
- listItemNullable: null,
83
- },
84
- description: null,
85
- deprecated: null,
86
- directives: null,
87
- defaultValue: null,
88
- },
89
- ],
90
- unionMembers: null,
91
- enumValues: null,
92
- isNumericEnum: false,
93
- implementedInterfaces: null,
94
- sourceFile: "src/node.ts",
95
- description: null,
96
- deprecated: null,
97
- directives: null,
98
- },
99
- {
100
- name: "User",
101
- kind: "Object",
102
- fields: [
103
- {
104
- name: "id",
105
- type: {
106
- typeName: "ID",
107
- nullable: false,
108
- list: false,
109
- listItemNullable: null,
110
- },
111
- description: null,
112
- deprecated: null,
113
- directives: null,
114
- defaultValue: null,
115
- },
116
- {
117
- name: "name",
118
- type: {
119
- typeName: "String",
120
- nullable: false,
121
- list: false,
122
- listItemNullable: null,
123
- },
124
- description: null,
125
- deprecated: null,
126
- directives: null,
127
- defaultValue: null,
128
- },
129
- ],
130
- unionMembers: null,
131
- enumValues: null,
132
- isNumericEnum: false,
133
- implementedInterfaces: ["Node"],
134
- sourceFile: "src/user.ts",
135
- description: null,
136
- deprecated: null,
137
- directives: null,
138
- },
139
- ];
140
- const result = validateInterfaceImplementations(types);
141
- expect(result.isValid).toBe(true);
142
- expect(result.diagnostics).toHaveLength(0);
143
- });
144
- });
145
- //# sourceMappingURL=interface-validator.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interface-validator.test.js","sourceRoot":"","sources":["../../src/shared/interface-validator.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=typescript.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typescript.test.d.ts","sourceRoot":"","sources":["../../../src/type-extractor/types/typescript.test.ts"],"names":[],"mappings":""}
@@ -1,287 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- describe("TSTypeReference", () => {
3
- describe("inlineObject kind", () => {
4
- it("should support inlineObject kind with inlineObjectProperties", () => {
5
- const inlineObjectRef = {
6
- kind: "inlineObject",
7
- name: null,
8
- elementType: null,
9
- members: null,
10
- nullable: false,
11
- scalarInfo: null,
12
- inlineObjectProperties: [
13
- {
14
- name: "street",
15
- tsType: {
16
- kind: "primitive",
17
- name: "string",
18
- elementType: null,
19
- members: null,
20
- nullable: false,
21
- scalarInfo: null,
22
- inlineObjectProperties: null,
23
- },
24
- optional: false,
25
- description: "Street address",
26
- deprecated: null,
27
- directives: null,
28
- defaultValue: null,
29
- sourceLocation: null,
30
- },
31
- ],
32
- };
33
- expect(inlineObjectRef.kind).toBe("inlineObject");
34
- expect(inlineObjectRef.inlineObjectProperties).toHaveLength(1);
35
- expect(inlineObjectRef.inlineObjectProperties?.[0]?.name).toBe("street");
36
- });
37
- it("should support nested inline objects", () => {
38
- const nestedInlineObject = {
39
- kind: "inlineObject",
40
- name: null,
41
- elementType: null,
42
- members: null,
43
- nullable: false,
44
- scalarInfo: null,
45
- inlineObjectProperties: [
46
- {
47
- name: "address",
48
- tsType: {
49
- kind: "inlineObject",
50
- name: null,
51
- elementType: null,
52
- members: null,
53
- nullable: false,
54
- scalarInfo: null,
55
- inlineObjectProperties: [
56
- {
57
- name: "city",
58
- tsType: {
59
- kind: "primitive",
60
- name: "string",
61
- elementType: null,
62
- members: null,
63
- nullable: false,
64
- scalarInfo: null,
65
- inlineObjectProperties: null,
66
- },
67
- optional: false,
68
- description: null,
69
- deprecated: null,
70
- directives: null,
71
- defaultValue: null,
72
- sourceLocation: null,
73
- },
74
- ],
75
- },
76
- optional: false,
77
- description: null,
78
- deprecated: null,
79
- directives: null,
80
- defaultValue: null,
81
- sourceLocation: null,
82
- },
83
- ],
84
- };
85
- expect(nestedInlineObject.kind).toBe("inlineObject");
86
- const addressProp = nestedInlineObject.inlineObjectProperties?.[0];
87
- expect(addressProp?.tsType.kind).toBe("inlineObject");
88
- expect(addressProp?.tsType.inlineObjectProperties?.[0]?.name).toBe("city");
89
- });
90
- it("should support nullable inline objects", () => {
91
- const nullableInlineObject = {
92
- kind: "inlineObject",
93
- name: null,
94
- elementType: null,
95
- members: null,
96
- nullable: true,
97
- scalarInfo: null,
98
- inlineObjectProperties: [],
99
- };
100
- expect(nullableInlineObject.nullable).toBe(true);
101
- });
102
- });
103
- });
104
- describe("InlineObjectPropertyDef", () => {
105
- it("should have all required properties", () => {
106
- const property = {
107
- name: "profile",
108
- tsType: {
109
- kind: "primitive",
110
- name: "string",
111
- elementType: null,
112
- members: null,
113
- nullable: false,
114
- scalarInfo: null,
115
- inlineObjectProperties: null,
116
- },
117
- optional: true,
118
- description: "User profile",
119
- deprecated: { isDeprecated: true, reason: "Use newProfile instead" },
120
- directives: [
121
- {
122
- name: "deprecated",
123
- args: [
124
- {
125
- name: "reason",
126
- value: { kind: "string", value: "Use newProfile instead" },
127
- },
128
- ],
129
- },
130
- ],
131
- defaultValue: { kind: "string", value: "default" },
132
- sourceLocation: null,
133
- };
134
- expect(property.name).toBe("profile");
135
- expect(property.tsType.kind).toBe("primitive");
136
- expect(property.optional).toBe(true);
137
- expect(property.description).toBe("User profile");
138
- expect(property.deprecated?.reason).toBe("Use newProfile instead");
139
- expect(property.directives).toHaveLength(1);
140
- expect(property.defaultValue).toEqual({ kind: "string", value: "default" });
141
- });
142
- it("should allow null for optional metadata fields", () => {
143
- const minimalProperty = {
144
- name: "id",
145
- tsType: {
146
- kind: "scalar",
147
- name: "ID",
148
- elementType: null,
149
- members: null,
150
- nullable: false,
151
- scalarInfo: {
152
- scalarName: "ID",
153
- typeName: "IDString",
154
- baseType: "string",
155
- isCustom: false,
156
- only: null,
157
- },
158
- inlineObjectProperties: null,
159
- },
160
- optional: false,
161
- description: null,
162
- deprecated: null,
163
- directives: null,
164
- defaultValue: null,
165
- sourceLocation: null,
166
- };
167
- expect(minimalProperty.description).toBeNull();
168
- expect(minimalProperty.deprecated).toBeNull();
169
- expect(minimalProperty.directives).toBeNull();
170
- expect(minimalProperty.defaultValue).toBeNull();
171
- });
172
- });
173
- describe("FieldDefinition with inline object type", () => {
174
- it("should support tsType with inlineObject kind", () => {
175
- const field = {
176
- name: "profile",
177
- tsType: {
178
- kind: "inlineObject",
179
- name: null,
180
- elementType: null,
181
- members: null,
182
- nullable: false,
183
- scalarInfo: null,
184
- inlineObjectProperties: [
185
- {
186
- name: "bio",
187
- tsType: {
188
- kind: "primitive",
189
- name: "string",
190
- elementType: null,
191
- members: null,
192
- nullable: true,
193
- scalarInfo: null,
194
- inlineObjectProperties: null,
195
- },
196
- optional: true,
197
- description: "User biography",
198
- deprecated: null,
199
- directives: null,
200
- defaultValue: null,
201
- sourceLocation: null,
202
- },
203
- ],
204
- },
205
- optional: false,
206
- description: "User profile information",
207
- deprecated: null,
208
- directives: null,
209
- defaultValue: null,
210
- sourceLocation: null,
211
- };
212
- expect(field.tsType.kind).toBe("inlineObject");
213
- expect(field.tsType.inlineObjectProperties).toHaveLength(1);
214
- });
215
- });
216
- describe("Backward compatibility", () => {
217
- it("should support existing kind values with null inlineObjectProperties", () => {
218
- const primitiveRef = {
219
- kind: "primitive",
220
- name: "string",
221
- elementType: null,
222
- members: null,
223
- nullable: false,
224
- scalarInfo: null,
225
- inlineObjectProperties: null,
226
- };
227
- expect(primitiveRef.kind).toBe("primitive");
228
- expect(primitiveRef.inlineObjectProperties).toBeNull();
229
- const referenceRef = {
230
- kind: "reference",
231
- name: "User",
232
- elementType: null,
233
- members: null,
234
- nullable: false,
235
- scalarInfo: null,
236
- inlineObjectProperties: null,
237
- };
238
- expect(referenceRef.kind).toBe("reference");
239
- const arrayRef = {
240
- kind: "array",
241
- name: null,
242
- elementType: primitiveRef,
243
- members: null,
244
- nullable: false,
245
- scalarInfo: null,
246
- inlineObjectProperties: null,
247
- };
248
- expect(arrayRef.kind).toBe("array");
249
- const unionRef = {
250
- kind: "union",
251
- name: null,
252
- elementType: null,
253
- members: [primitiveRef],
254
- nullable: false,
255
- scalarInfo: null,
256
- inlineObjectProperties: null,
257
- };
258
- expect(unionRef.kind).toBe("union");
259
- const literalRef = {
260
- kind: "literal",
261
- name: "active",
262
- elementType: null,
263
- members: null,
264
- nullable: false,
265
- scalarInfo: null,
266
- inlineObjectProperties: null,
267
- };
268
- expect(literalRef.kind).toBe("literal");
269
- const scalarRef = {
270
- kind: "scalar",
271
- name: "DateTime",
272
- elementType: null,
273
- members: null,
274
- nullable: false,
275
- scalarInfo: {
276
- scalarName: "DateTime",
277
- typeName: "DateTime",
278
- baseType: undefined,
279
- isCustom: true,
280
- only: null,
281
- },
282
- inlineObjectProperties: null,
283
- };
284
- expect(scalarRef.kind).toBe("scalar");
285
- });
286
- });
287
- //# sourceMappingURL=typescript.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typescript.test.js","sourceRoot":"","sources":["../../../src/type-extractor/types/typescript.test.ts"],"names":[],"mappings":"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"}