@graphitation/supermassive 0.1.2 → 0.4.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 (192) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.json +76 -1
  3. package/CHANGELOG.md +34 -2
  4. package/README.md +264 -2
  5. package/bin/supermassive.js +7 -0
  6. package/lib/{src/ast → ast}/TypedAST.d.ts +2 -0
  7. package/lib/ast/TypedAST.d.ts.map +1 -0
  8. package/lib/{src/ast → ast}/addTypesToRequestDocument.d.ts +0 -0
  9. package/lib/ast/addTypesToRequestDocument.d.ts.map +1 -0
  10. package/lib/ast/addTypesToRequestDocument.js +8 -5
  11. package/lib/ast/addTypesToRequestDocument.mjs +12 -6
  12. package/lib/benchmarks/index.d.ts.map +1 -1
  13. package/lib/benchmarks/index.js +127 -0
  14. package/lib/benchmarks/index.mjs +111 -0
  15. package/lib/benchmarks/nice-benchmark.d.ts +1 -1
  16. package/lib/benchmarks/nice-benchmark.d.ts.map +1 -1
  17. package/lib/benchmarks/nice-benchmark.js +72 -0
  18. package/lib/benchmarks/nice-benchmark.mjs +52 -0
  19. package/lib/benchmarks/swapi-schema/index.d.ts +1 -0
  20. package/lib/benchmarks/swapi-schema/index.d.ts.map +1 -1
  21. package/lib/benchmarks/swapi-schema/index.js +39 -0
  22. package/lib/benchmarks/swapi-schema/index.mjs +17 -0
  23. package/lib/benchmarks/swapi-schema/models.d.ts.map +1 -1
  24. package/lib/benchmarks/swapi-schema/models.js +29 -0
  25. package/lib/benchmarks/swapi-schema/models.mjs +7 -0
  26. package/lib/benchmarks/swapi-schema/resolvers.d.ts.map +1 -1
  27. package/lib/benchmarks/swapi-schema/resolvers.js +237 -0
  28. package/lib/benchmarks/swapi-schema/resolvers.mjs +230 -0
  29. package/lib/bin/supermassive.d.ts +3 -0
  30. package/lib/bin/supermassive.d.ts.map +1 -0
  31. package/lib/bin/supermassive.js +83 -0
  32. package/lib/bin/supermassive.mjs +62 -0
  33. package/lib/collectFields.d.ts +17 -0
  34. package/lib/collectFields.d.ts.map +1 -0
  35. package/lib/collectFields.js +83 -0
  36. package/lib/collectFields.mjs +61 -0
  37. package/lib/compiledQuery.d.ts +1 -0
  38. package/lib/compiledQuery.d.ts.map +1 -0
  39. package/lib/compiledQuery.js +0 -0
  40. package/lib/compiledQuery.mjs +0 -0
  41. package/lib/executeWithSchema.d.ts +4 -0
  42. package/lib/executeWithSchema.d.ts.map +1 -0
  43. package/lib/{index.test.js → executeWithSchema.js} +45 -46
  44. package/lib/executeWithSchema.mjs +64 -0
  45. package/lib/executeWithoutSchema.d.ts +99 -0
  46. package/lib/executeWithoutSchema.d.ts.map +1 -0
  47. package/lib/executeWithoutSchema.js +376 -0
  48. package/lib/executeWithoutSchema.mjs +363 -0
  49. package/lib/extractImplicitTypesRuntime.d.ts +4 -0
  50. package/lib/extractImplicitTypesRuntime.d.ts.map +1 -0
  51. package/lib/extractImplicitTypesRuntime.js +103 -0
  52. package/lib/extractImplicitTypesRuntime.mjs +91 -0
  53. package/lib/extractImplicitTypesToTypescript.d.ts +4 -0
  54. package/lib/extractImplicitTypesToTypescript.d.ts.map +1 -0
  55. package/lib/extractImplicitTypesToTypescript.js +169 -0
  56. package/lib/extractImplicitTypesToTypescript.mjs +149 -0
  57. package/lib/index.d.ts +8 -0
  58. package/lib/index.d.ts.map +1 -0
  59. package/lib/index.js +12 -29
  60. package/lib/index.mjs +13 -29
  61. package/lib/jsutils/Maybe.d.ts +3 -0
  62. package/lib/jsutils/Maybe.d.ts.map +1 -0
  63. package/lib/jsutils/Maybe.js +3 -0
  64. package/lib/jsutils/Maybe.mjs +0 -0
  65. package/lib/jsutils/ObjMap.d.ts +13 -0
  66. package/lib/jsutils/ObjMap.d.ts.map +1 -0
  67. package/lib/jsutils/ObjMap.js +3 -0
  68. package/lib/jsutils/ObjMap.mjs +0 -0
  69. package/lib/jsutils/Path.d.ts +15 -0
  70. package/lib/jsutils/Path.d.ts.map +1 -0
  71. package/lib/jsutils/Path.js +23 -0
  72. package/lib/jsutils/Path.mjs +17 -0
  73. package/lib/jsutils/PromiseOrValue.d.ts +2 -0
  74. package/lib/jsutils/PromiseOrValue.d.ts.map +1 -0
  75. package/lib/jsutils/PromiseOrValue.js +3 -0
  76. package/lib/jsutils/PromiseOrValue.mjs +0 -0
  77. package/lib/jsutils/devAssert.d.ts +2 -0
  78. package/lib/jsutils/devAssert.d.ts.map +1 -0
  79. package/lib/jsutils/devAssert.js +16 -0
  80. package/lib/jsutils/devAssert.mjs +10 -0
  81. package/lib/jsutils/didYouMean.d.ts +6 -0
  82. package/lib/jsutils/didYouMean.d.ts.map +1 -0
  83. package/lib/jsutils/didYouMean.js +30 -0
  84. package/lib/jsutils/didYouMean.mjs +24 -0
  85. package/lib/jsutils/identityFunc.d.ts +5 -0
  86. package/lib/jsutils/identityFunc.d.ts.map +1 -0
  87. package/lib/jsutils/identityFunc.js +13 -0
  88. package/lib/jsutils/identityFunc.mjs +7 -0
  89. package/lib/jsutils/inspect.d.ts +5 -0
  90. package/lib/jsutils/inspect.d.ts.map +1 -0
  91. package/lib/jsutils/inspect.js +89 -0
  92. package/lib/jsutils/inspect.mjs +83 -0
  93. package/lib/jsutils/instanceOf.d.ts +14 -0
  94. package/lib/jsutils/instanceOf.d.ts.map +1 -0
  95. package/lib/jsutils/instanceOf.js +55 -0
  96. package/lib/jsutils/instanceOf.mjs +33 -0
  97. package/lib/jsutils/invariant.d.ts +2 -0
  98. package/lib/jsutils/invariant.d.ts.map +1 -0
  99. package/lib/jsutils/invariant.js +16 -0
  100. package/lib/jsutils/invariant.mjs +10 -0
  101. package/lib/jsutils/isAsyncIterable.d.ts +6 -0
  102. package/lib/jsutils/isAsyncIterable.d.ts.map +1 -0
  103. package/lib/jsutils/isAsyncIterable.js +13 -0
  104. package/lib/jsutils/isAsyncIterable.mjs +7 -0
  105. package/lib/jsutils/isIterableObject.d.ts +18 -0
  106. package/lib/jsutils/isIterableObject.d.ts.map +1 -0
  107. package/lib/jsutils/isIterableObject.js +13 -0
  108. package/lib/jsutils/isIterableObject.mjs +7 -0
  109. package/lib/jsutils/isObjectLike.d.ts +8 -0
  110. package/lib/jsutils/isObjectLike.d.ts.map +1 -0
  111. package/lib/jsutils/isObjectLike.js +13 -0
  112. package/lib/jsutils/isObjectLike.mjs +7 -0
  113. package/lib/jsutils/isPromise.d.ts +6 -0
  114. package/lib/jsutils/isPromise.d.ts.map +1 -0
  115. package/lib/jsutils/isPromise.js +13 -0
  116. package/lib/jsutils/isPromise.mjs +7 -0
  117. package/lib/jsutils/keyMap.d.ts +26 -0
  118. package/lib/jsutils/keyMap.d.ts.map +1 -0
  119. package/lib/jsutils/keyMap.js +17 -0
  120. package/lib/jsutils/keyMap.mjs +11 -0
  121. package/lib/jsutils/keyValMap.d.ts +20 -0
  122. package/lib/jsutils/keyValMap.d.ts.map +1 -0
  123. package/lib/jsutils/keyValMap.js +17 -0
  124. package/lib/jsutils/keyValMap.mjs +11 -0
  125. package/lib/jsutils/mapValue.d.ts +7 -0
  126. package/lib/jsutils/mapValue.d.ts.map +1 -0
  127. package/lib/jsutils/mapValue.js +17 -0
  128. package/lib/jsutils/mapValue.mjs +11 -0
  129. package/lib/jsutils/memoize3.d.ts +5 -0
  130. package/lib/jsutils/memoize3.d.ts.map +1 -0
  131. package/lib/jsutils/memoize3.js +34 -0
  132. package/lib/jsutils/memoize3.mjs +28 -0
  133. package/lib/jsutils/naturalCompare.d.ts +9 -0
  134. package/lib/jsutils/naturalCompare.d.ts.map +1 -0
  135. package/lib/jsutils/naturalCompare.js +53 -0
  136. package/lib/jsutils/naturalCompare.mjs +47 -0
  137. package/lib/jsutils/printPathArray.d.ts +5 -0
  138. package/lib/jsutils/printPathArray.d.ts.map +1 -0
  139. package/lib/jsutils/printPathArray.js +13 -0
  140. package/lib/jsutils/printPathArray.mjs +7 -0
  141. package/lib/jsutils/promiseForObject.d.ts +10 -0
  142. package/lib/jsutils/promiseForObject.d.ts.map +1 -0
  143. package/lib/jsutils/promiseForObject.js +19 -0
  144. package/lib/jsutils/promiseForObject.mjs +13 -0
  145. package/lib/jsutils/promiseReduce.d.ts +10 -0
  146. package/lib/jsutils/promiseReduce.d.ts.map +1 -0
  147. package/lib/jsutils/promiseReduce.js +34 -0
  148. package/lib/jsutils/promiseReduce.mjs +12 -0
  149. package/lib/jsutils/suggestionList.d.ts +6 -0
  150. package/lib/jsutils/suggestionList.d.ts.map +1 -0
  151. package/lib/jsutils/suggestionList.js +109 -0
  152. package/lib/jsutils/suggestionList.mjs +87 -0
  153. package/lib/jsutils/toObjMap.d.ts +4 -0
  154. package/lib/jsutils/toObjMap.d.ts.map +1 -0
  155. package/lib/jsutils/toObjMap.js +20 -0
  156. package/lib/jsutils/toObjMap.mjs +14 -0
  157. package/lib/transforms/annotateDocumentGraphQLTransform.d.ts +3 -0
  158. package/lib/transforms/annotateDocumentGraphQLTransform.d.ts.map +1 -0
  159. package/lib/transforms/annotateDocumentGraphQLTransform.js +37 -0
  160. package/lib/transforms/annotateDocumentGraphQLTransform.mjs +17 -0
  161. package/lib/transforms/transformerTestUtils.d.ts +79 -0
  162. package/lib/transforms/transformerTestUtils.d.ts.map +1 -0
  163. package/lib/transforms/transformerTestUtils.js +175 -0
  164. package/lib/transforms/transformerTestUtils.mjs +160 -0
  165. package/lib/types.d.ts +74 -0
  166. package/lib/types.d.ts.map +1 -0
  167. package/lib/types.js +3 -0
  168. package/lib/types.mjs +0 -0
  169. package/lib/utilities/typeNameFromAST.d.ts +3 -0
  170. package/lib/utilities/typeNameFromAST.d.ts.map +1 -0
  171. package/lib/utilities/typeNameFromAST.js +34 -0
  172. package/lib/utilities/typeNameFromAST.mjs +12 -0
  173. package/lib/values.d.ts +64 -0
  174. package/lib/values.d.ts.map +1 -0
  175. package/lib/values.js +145 -0
  176. package/lib/values.mjs +138 -0
  177. package/package.json +21 -6
  178. package/benchmarks/fixtures/query1.graphql +0 -20
  179. package/benchmarks/index.ts +0 -68
  180. package/benchmarks/nice-benchmark.ts +0 -32
  181. package/benchmarks/swapi-schema/index.ts +0 -13
  182. package/benchmarks/swapi-schema/models.ts +0 -4
  183. package/benchmarks/swapi-schema/resolvers.ts +0 -331
  184. package/benchmarks/swapi-schema/schema.graphql +0 -164
  185. package/benchmarks/swapi-schema/starwars.json +0 -5991
  186. package/lib/index.test.mjs +0 -63
  187. package/lib/src/ast/TypedAST.d.ts.map +0 -1
  188. package/lib/src/ast/addTypesToRequestDocument.d.ts.map +0 -1
  189. package/lib/src/index.d.ts +0 -16
  190. package/lib/src/index.d.ts.map +0 -1
  191. package/lib/src/index.test.d.ts +0 -2
  192. package/lib/src/index.test.d.ts.map +0 -1
@@ -0,0 +1,237 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
3
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {enumerable: true, configurable: true, writable: true, value}) : obj[key] = value;
6
+ var __objSpread = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
18
+ var __export = (target, all) => {
19
+ for (var name in all)
20
+ __defProp(target, name, {get: all[name], enumerable: true});
21
+ };
22
+ __markAsModule(exports);
23
+ __export(exports, {
24
+ default: () => resolvers_default
25
+ });
26
+ const films = (parent, args, {models}) => {
27
+ return models.getData("/films").filter(({id}) => parent.films.includes(id));
28
+ };
29
+ const starships = (parent, {id}, {models}) => {
30
+ return models.getData("/starships").filter(({id: id2}) => parent.starships.includes(id2));
31
+ };
32
+ function people(key) {
33
+ return (parent, args, {models}) => {
34
+ return models.getData("/people").filter(({id}) => parent[key].includes(id));
35
+ };
36
+ }
37
+ const vehicles = (parent, args, {models}) => {
38
+ return models.getData("/vehicles").filter(({id}) => parent.vehicles.includes(id));
39
+ };
40
+ const transports = (parent, args, {models}) => {
41
+ return models.getData("/transport").filter(({id}) => parent.starships.includes(id));
42
+ };
43
+ const planets = (parent, args, {models}) => {
44
+ return models.getData("/planets").filter(({id}) => parent.planets.includes(id));
45
+ };
46
+ const species = (parent, args, {models}) => {
47
+ return models.getData("/species").filter(({id}) => parent.species.includes(id));
48
+ };
49
+ const homeworld = (parent, args, {models}) => {
50
+ return models.getData("/planets").find((planet2) => planet2.id === parent.homeworld);
51
+ };
52
+ const person = (parent, {id}, {models}) => {
53
+ return models.getData("/people").find((person2) => person2.id === id);
54
+ };
55
+ const planet = (parent, {id}, {models}) => {
56
+ return models.getData("/planets").find((planet2) => planet2.id === id);
57
+ };
58
+ const film = (parent, {id}, {models}) => {
59
+ return models.getData("/films").find((film2) => film2.id === id);
60
+ };
61
+ const starship = (parent, {id}, {models}) => {
62
+ return models.getData("/starships").find((starship2) => starship2.id === id);
63
+ };
64
+ const transport = (parent, {id}, {models}) => {
65
+ return models.getData("/transport").find((transport2) => transport2.id === id);
66
+ };
67
+ const vehicle = (parent, {id}, {models}) => {
68
+ return models.getData("/vehicles").find((vehicle2) => vehicle2.id === id);
69
+ };
70
+ const searchPeopleByName = (parent, {search}, {models}) => {
71
+ return models.getData("/people").filter((person2) => new RegExp(search, "i").test(person2.name));
72
+ };
73
+ const searchPlanetsByName = (parent, {search}, {models}) => {
74
+ return models.getData("/planets").filter((planet2) => new RegExp(search, "i").test(planet2.name));
75
+ };
76
+ const searchFilmsByTitle = (parent, {search}, {models}) => {
77
+ return models.getData("/films").filter((film2) => new RegExp(search, "i").test(film2.title));
78
+ };
79
+ const searchSpeciesByName = (parent, {search}, {models}) => {
80
+ return models.getData("/species").filter((species2) => new RegExp(search, "i").test(species2.name));
81
+ };
82
+ const searchStarshipsByName = (parent, {search}, {models}) => {
83
+ return models.getData("/starships").filter((starship2) => new RegExp(search, "i").test(starship2.name));
84
+ };
85
+ const searchVehiclesByName = (parent, {search}, {models}) => {
86
+ return models.getData("/vehicles").filter((vehicle2) => new RegExp(search, "i").test(vehicle2.name));
87
+ };
88
+ const searchTransportsByName = (parent, {search}, {models}) => {
89
+ return models.getData("/transport").filter((transport2) => new RegExp(search, "i").test(transport2.name));
90
+ };
91
+ const resolvers = {
92
+ SearchResult: {
93
+ __resolveType(parent) {
94
+ return parent.__typename;
95
+ }
96
+ },
97
+ Query: {
98
+ search(parent, {search}, {models}, info) {
99
+ const result = [
100
+ ...searchFilmsByTitle(parent, {search}, {models}, info).map((r) => (r.__typename = "Film") && r),
101
+ ...searchPeopleByName(parent, {search}, {models}, info).map((r) => (r.__typename = "Person") && r),
102
+ ...searchPlanetsByName(parent, {search}, {models}, info).map((r) => (r.__typename = "Planet") && r),
103
+ ...searchSpeciesByName(parent, {search}, {models}, info).map((r) => (r.__typename = "Species") && r),
104
+ ...searchStarshipsByName(parent, {search}, {models}, info).map((r) => (r.__typename = "Starship") && r),
105
+ ...searchTransportsByName(parent, {search}, {models}, info).map((r) => (r.__typename = "Transport") && r),
106
+ ...searchVehiclesByName(parent, {search}, {models}, info).map((r) => (r.__typename = "Vehicle") && r)
107
+ ];
108
+ return result;
109
+ },
110
+ node(parent, args, context, info) {
111
+ let result;
112
+ switch (args.nodeType) {
113
+ case "Person": {
114
+ result = person(parent, args, context, info);
115
+ break;
116
+ }
117
+ case "Starship": {
118
+ result = starship(parent, args, context, info);
119
+ break;
120
+ }
121
+ case "Transport": {
122
+ result = transport(parent, args, context, info);
123
+ break;
124
+ }
125
+ case "Species": {
126
+ result = species(parent, args, context, info);
127
+ break;
128
+ }
129
+ case "Vehicle": {
130
+ result = vehicle(parent, args, context, info);
131
+ break;
132
+ }
133
+ case "Planet": {
134
+ result = planet(parent, args, context, info);
135
+ break;
136
+ }
137
+ case "Film": {
138
+ result = film(parent, args, context, info);
139
+ break;
140
+ }
141
+ default:
142
+ throw new Error(`Invalid node type ${args.nodeType}`);
143
+ }
144
+ return __objSpread(__objSpread({}, result), {
145
+ __typename: args.nodeType
146
+ });
147
+ },
148
+ person,
149
+ planet,
150
+ film,
151
+ transport,
152
+ starship,
153
+ vehicle,
154
+ searchPeopleByName,
155
+ searchStarshipsByName,
156
+ searchTransportsByName,
157
+ searchSpeciesByName,
158
+ searchVehiclesByName,
159
+ searchPlanetsByName,
160
+ searchFilmsByTitle,
161
+ allStarships(parent, args, {models}) {
162
+ return models.getData("/starships");
163
+ },
164
+ allFilms(parent, args, {models}) {
165
+ return models.getData("/films");
166
+ },
167
+ allPeople(parent, args, {models}) {
168
+ return models.getData("/people");
169
+ },
170
+ allPlanets(parent, args, {models}) {
171
+ return models.getData("/planets");
172
+ },
173
+ allSpecies(parent, args, {models}) {
174
+ return models.getData("/species");
175
+ },
176
+ allTransports(parent, args, {models}) {
177
+ return models.getData("/transport");
178
+ }
179
+ },
180
+ Film: {
181
+ starships,
182
+ vehicles,
183
+ planets,
184
+ characters: people("characters"),
185
+ species
186
+ },
187
+ Starship: {
188
+ MGLT: (starship2) => +starship2.MGLT,
189
+ hyperdrive_rating: (starship2) => +starship2.hyperdrive_rating,
190
+ cargo_capacity: (starship2) => +starship2.cargo_capacity,
191
+ passengers: (starship2) => +starship2.passengers,
192
+ max_atmosphering_speed: (starship2) => +starship2.max_atmosphering_speed,
193
+ length: (starship2) => +starship2.length,
194
+ cost_in_credits: (starship2) => +starship2.cost_in_credits,
195
+ pilots: people("pilots"),
196
+ films
197
+ },
198
+ Person: {
199
+ height: (pilot) => +pilot.height,
200
+ mass: (pilot) => +pilot.mass,
201
+ starships,
202
+ homeworld
203
+ },
204
+ Vehicle: {
205
+ cargo_capacity: (vehicle2) => +vehicle2.cargo_capacity,
206
+ passengers: (vehicle2) => +vehicle2.passengers,
207
+ max_atmosphering_speed: (vehicle2) => +vehicle2.max_atmosphering_speed,
208
+ crew: (vehicle2) => forceNumber(vehicle2.crew),
209
+ length: (vehicle2) => +vehicle2.length,
210
+ cost_in_credits: (vehicle2) => +vehicle2.cost_in_credits,
211
+ pilots: people("pilots")
212
+ },
213
+ Planet: {
214
+ diameter: (planet2) => +planet2.diameter,
215
+ rotation_period: (planet2) => +planet2.rotation_period,
216
+ orbital_period: (planet2) => +planet2.orbital_period,
217
+ population: (planet2) => +planet2.population,
218
+ residents: people("residents"),
219
+ films
220
+ },
221
+ Species: {
222
+ average_lifespan: (species2) => +species2.average_lifespan,
223
+ average_height: (species2) => +species2.average_height,
224
+ homeworld,
225
+ people: people("people")
226
+ },
227
+ Transport: {
228
+ cargo_capacity: (vehicle2) => +vehicle2.cargo_capacity,
229
+ passengers: (vehicle2) => +vehicle2.passengers,
230
+ max_atmosphering_speed: (vehicle2) => +vehicle2.max_atmosphering_speed,
231
+ crew: (vehicle2) => forceNumber(vehicle2.crew),
232
+ length: (vehicle2) => +vehicle2.length,
233
+ cost_in_credits: (vehicle2) => +vehicle2.cost_in_credits
234
+ }
235
+ };
236
+ const forceNumber = (i) => Number(i.split(",").join("").split("-")[0]) || -1;
237
+ var resolvers_default = resolvers;
@@ -0,0 +1,230 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
3
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, {enumerable: true, configurable: true, writable: true, value}) : obj[key] = value;
6
+ var __objSpread = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+
18
+ // src/benchmarks/swapi-schema/resolvers.ts
19
+ var films = (parent, args, {models}) => {
20
+ return models.getData("/films").filter(({id}) => parent.films.includes(id));
21
+ };
22
+ var starships = (parent, {id}, {models}) => {
23
+ return models.getData("/starships").filter(({id: id2}) => parent.starships.includes(id2));
24
+ };
25
+ function people(key) {
26
+ return (parent, args, {models}) => {
27
+ return models.getData("/people").filter(({id}) => parent[key].includes(id));
28
+ };
29
+ }
30
+ var vehicles = (parent, args, {models}) => {
31
+ return models.getData("/vehicles").filter(({id}) => parent.vehicles.includes(id));
32
+ };
33
+ var planets = (parent, args, {models}) => {
34
+ return models.getData("/planets").filter(({id}) => parent.planets.includes(id));
35
+ };
36
+ var species = (parent, args, {models}) => {
37
+ return models.getData("/species").filter(({id}) => parent.species.includes(id));
38
+ };
39
+ var homeworld = (parent, args, {models}) => {
40
+ return models.getData("/planets").find((planet2) => planet2.id === parent.homeworld);
41
+ };
42
+ var person = (parent, {id}, {models}) => {
43
+ return models.getData("/people").find((person2) => person2.id === id);
44
+ };
45
+ var planet = (parent, {id}, {models}) => {
46
+ return models.getData("/planets").find((planet2) => planet2.id === id);
47
+ };
48
+ var film = (parent, {id}, {models}) => {
49
+ return models.getData("/films").find((film2) => film2.id === id);
50
+ };
51
+ var starship = (parent, {id}, {models}) => {
52
+ return models.getData("/starships").find((starship2) => starship2.id === id);
53
+ };
54
+ var transport = (parent, {id}, {models}) => {
55
+ return models.getData("/transport").find((transport2) => transport2.id === id);
56
+ };
57
+ var vehicle = (parent, {id}, {models}) => {
58
+ return models.getData("/vehicles").find((vehicle2) => vehicle2.id === id);
59
+ };
60
+ var searchPeopleByName = (parent, {search}, {models}) => {
61
+ return models.getData("/people").filter((person2) => new RegExp(search, "i").test(person2.name));
62
+ };
63
+ var searchPlanetsByName = (parent, {search}, {models}) => {
64
+ return models.getData("/planets").filter((planet2) => new RegExp(search, "i").test(planet2.name));
65
+ };
66
+ var searchFilmsByTitle = (parent, {search}, {models}) => {
67
+ return models.getData("/films").filter((film2) => new RegExp(search, "i").test(film2.title));
68
+ };
69
+ var searchSpeciesByName = (parent, {search}, {models}) => {
70
+ return models.getData("/species").filter((species2) => new RegExp(search, "i").test(species2.name));
71
+ };
72
+ var searchStarshipsByName = (parent, {search}, {models}) => {
73
+ return models.getData("/starships").filter((starship2) => new RegExp(search, "i").test(starship2.name));
74
+ };
75
+ var searchVehiclesByName = (parent, {search}, {models}) => {
76
+ return models.getData("/vehicles").filter((vehicle2) => new RegExp(search, "i").test(vehicle2.name));
77
+ };
78
+ var searchTransportsByName = (parent, {search}, {models}) => {
79
+ return models.getData("/transport").filter((transport2) => new RegExp(search, "i").test(transport2.name));
80
+ };
81
+ var resolvers = {
82
+ SearchResult: {
83
+ __resolveType(parent) {
84
+ return parent.__typename;
85
+ }
86
+ },
87
+ Query: {
88
+ search(parent, {search}, {models}, info) {
89
+ const result = [
90
+ ...searchFilmsByTitle(parent, {search}, {models}, info).map((r) => (r.__typename = "Film") && r),
91
+ ...searchPeopleByName(parent, {search}, {models}, info).map((r) => (r.__typename = "Person") && r),
92
+ ...searchPlanetsByName(parent, {search}, {models}, info).map((r) => (r.__typename = "Planet") && r),
93
+ ...searchSpeciesByName(parent, {search}, {models}, info).map((r) => (r.__typename = "Species") && r),
94
+ ...searchStarshipsByName(parent, {search}, {models}, info).map((r) => (r.__typename = "Starship") && r),
95
+ ...searchTransportsByName(parent, {search}, {models}, info).map((r) => (r.__typename = "Transport") && r),
96
+ ...searchVehiclesByName(parent, {search}, {models}, info).map((r) => (r.__typename = "Vehicle") && r)
97
+ ];
98
+ return result;
99
+ },
100
+ node(parent, args, context, info) {
101
+ let result;
102
+ switch (args.nodeType) {
103
+ case "Person": {
104
+ result = person(parent, args, context, info);
105
+ break;
106
+ }
107
+ case "Starship": {
108
+ result = starship(parent, args, context, info);
109
+ break;
110
+ }
111
+ case "Transport": {
112
+ result = transport(parent, args, context, info);
113
+ break;
114
+ }
115
+ case "Species": {
116
+ result = species(parent, args, context, info);
117
+ break;
118
+ }
119
+ case "Vehicle": {
120
+ result = vehicle(parent, args, context, info);
121
+ break;
122
+ }
123
+ case "Planet": {
124
+ result = planet(parent, args, context, info);
125
+ break;
126
+ }
127
+ case "Film": {
128
+ result = film(parent, args, context, info);
129
+ break;
130
+ }
131
+ default:
132
+ throw new Error(`Invalid node type ${args.nodeType}`);
133
+ }
134
+ return __objSpread(__objSpread({}, result), {
135
+ __typename: args.nodeType
136
+ });
137
+ },
138
+ person,
139
+ planet,
140
+ film,
141
+ transport,
142
+ starship,
143
+ vehicle,
144
+ searchPeopleByName,
145
+ searchStarshipsByName,
146
+ searchTransportsByName,
147
+ searchSpeciesByName,
148
+ searchVehiclesByName,
149
+ searchPlanetsByName,
150
+ searchFilmsByTitle,
151
+ allStarships(parent, args, {models}) {
152
+ return models.getData("/starships");
153
+ },
154
+ allFilms(parent, args, {models}) {
155
+ return models.getData("/films");
156
+ },
157
+ allPeople(parent, args, {models}) {
158
+ return models.getData("/people");
159
+ },
160
+ allPlanets(parent, args, {models}) {
161
+ return models.getData("/planets");
162
+ },
163
+ allSpecies(parent, args, {models}) {
164
+ return models.getData("/species");
165
+ },
166
+ allTransports(parent, args, {models}) {
167
+ return models.getData("/transport");
168
+ }
169
+ },
170
+ Film: {
171
+ starships,
172
+ vehicles,
173
+ planets,
174
+ characters: people("characters"),
175
+ species
176
+ },
177
+ Starship: {
178
+ MGLT: (starship2) => +starship2.MGLT,
179
+ hyperdrive_rating: (starship2) => +starship2.hyperdrive_rating,
180
+ cargo_capacity: (starship2) => +starship2.cargo_capacity,
181
+ passengers: (starship2) => +starship2.passengers,
182
+ max_atmosphering_speed: (starship2) => +starship2.max_atmosphering_speed,
183
+ length: (starship2) => +starship2.length,
184
+ cost_in_credits: (starship2) => +starship2.cost_in_credits,
185
+ pilots: people("pilots"),
186
+ films
187
+ },
188
+ Person: {
189
+ height: (pilot) => +pilot.height,
190
+ mass: (pilot) => +pilot.mass,
191
+ starships,
192
+ homeworld
193
+ },
194
+ Vehicle: {
195
+ cargo_capacity: (vehicle2) => +vehicle2.cargo_capacity,
196
+ passengers: (vehicle2) => +vehicle2.passengers,
197
+ max_atmosphering_speed: (vehicle2) => +vehicle2.max_atmosphering_speed,
198
+ crew: (vehicle2) => forceNumber(vehicle2.crew),
199
+ length: (vehicle2) => +vehicle2.length,
200
+ cost_in_credits: (vehicle2) => +vehicle2.cost_in_credits,
201
+ pilots: people("pilots")
202
+ },
203
+ Planet: {
204
+ diameter: (planet2) => +planet2.diameter,
205
+ rotation_period: (planet2) => +planet2.rotation_period,
206
+ orbital_period: (planet2) => +planet2.orbital_period,
207
+ population: (planet2) => +planet2.population,
208
+ residents: people("residents"),
209
+ films
210
+ },
211
+ Species: {
212
+ average_lifespan: (species2) => +species2.average_lifespan,
213
+ average_height: (species2) => +species2.average_height,
214
+ homeworld,
215
+ people: people("people")
216
+ },
217
+ Transport: {
218
+ cargo_capacity: (vehicle2) => +vehicle2.cargo_capacity,
219
+ passengers: (vehicle2) => +vehicle2.passengers,
220
+ max_atmosphering_speed: (vehicle2) => +vehicle2.max_atmosphering_speed,
221
+ crew: (vehicle2) => forceNumber(vehicle2.crew),
222
+ length: (vehicle2) => +vehicle2.length,
223
+ cost_in_credits: (vehicle2) => +vehicle2.cost_in_credits
224
+ }
225
+ };
226
+ var forceNumber = (i) => Number(i.split(",").join("").split("-")[0]) || -1;
227
+ var resolvers_default = resolvers;
228
+ export {
229
+ resolvers_default as default
230
+ };
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function supermassive(): Command;
3
+ //# sourceMappingURL=supermassive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supermassive.d.ts","sourceRoot":"","sources":["../../src/bin/supermassive.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,OAAO,EAAE,MAAM,WAAW,CAAC;AAI7C,wBAAgB,YAAY,IAAI,OAAO,CAYtC"}
@@ -0,0 +1,83 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, {get: all[name], enumerable: true});
11
+ };
12
+ var __reExport = (target, module2, desc) => {
13
+ if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
+ for (let key of __getOwnPropNames(module2))
15
+ if (!__hasOwnProp.call(target, key) && key !== "default")
16
+ __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
17
+ }
18
+ return target;
19
+ };
20
+ var __toModule = (module2) => {
21
+ return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
22
+ };
23
+ var __async = (__this, __arguments, generator) => {
24
+ return new Promise((resolve, reject) => {
25
+ var fulfilled = (value) => {
26
+ try {
27
+ step(generator.next(value));
28
+ } catch (e) {
29
+ reject(e);
30
+ }
31
+ };
32
+ var rejected = (value) => {
33
+ try {
34
+ step(generator.throw(value));
35
+ } catch (e) {
36
+ reject(e);
37
+ }
38
+ };
39
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
40
+ step((generator = generator.apply(__this, __arguments)).next());
41
+ });
42
+ };
43
+ __markAsModule(exports);
44
+ __export(exports, {
45
+ supermassive: () => supermassive
46
+ });
47
+ var import_path = __toModule(require("path"));
48
+ var import_promises = __toModule(require("fs/promises"));
49
+ var import_typescript = __toModule(require("typescript"));
50
+ var import_commander = __toModule(require("commander"));
51
+ var import_extractImplicitTypesToTypescript = __toModule(require("../extractImplicitTypesToTypescript"));
52
+ var import_graphql = __toModule(require("graphql"));
53
+ function supermassive() {
54
+ const command = new import_commander.Command();
55
+ command.name("extract-schema").argument("<files...>").description("extract implicit resolvers to a ts file from graphql typedefs").action((files) => __async(this, null, function* () {
56
+ yield typeDefsToImplicitResolversImpl(files);
57
+ }));
58
+ return import_commander.program.name("supermassive").addCommand(command);
59
+ }
60
+ function typeDefsToImplicitResolversImpl(files) {
61
+ return __async(this, null, function* () {
62
+ for (const file of files) {
63
+ let fullPath;
64
+ if (import_path.default.isAbsolute(file)) {
65
+ fullPath = file;
66
+ } else {
67
+ fullPath = import_path.default.join(process.cwd(), file);
68
+ }
69
+ const stat = yield import_promises.default.stat(fullPath);
70
+ if (!stat.isFile) {
71
+ throw new Error(`Invalid file ${file}`);
72
+ }
73
+ const content = yield import_promises.default.readFile(fullPath, {encoding: "utf-8"});
74
+ const document = (0, import_graphql.parse)(content);
75
+ const tsContents = (0, import_extractImplicitTypesToTypescript.extractImplicitTypesToTypescript)(document);
76
+ const tsDir = import_path.default.join(import_path.default.dirname(fullPath), "__generated__");
77
+ yield import_promises.default.mkdir(tsDir, {recursive: true});
78
+ const tsFileName = import_path.default.join(tsDir, import_path.default.basename(fullPath, import_path.default.extname(fullPath)) + ".ts");
79
+ const printer = import_typescript.default.createPrinter();
80
+ yield import_promises.default.writeFile(tsFileName, printer.printNode(import_typescript.default.EmitHint.SourceFile, tsContents, tsContents), {encoding: "utf-8"});
81
+ }
82
+ });
83
+ }
@@ -0,0 +1,62 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+
22
+ // src/bin/supermassive.ts
23
+ import path from "path";
24
+ import fs from "fs/promises";
25
+ import ts from "typescript";
26
+ import {program, Command} from "commander";
27
+ import {extractImplicitTypesToTypescript} from "../extractImplicitTypesToTypescript.mjs";
28
+ import {parse} from "graphql";
29
+ function supermassive() {
30
+ const command = new Command();
31
+ command.name("extract-schema").argument("<files...>").description("extract implicit resolvers to a ts file from graphql typedefs").action((files) => __async(this, null, function* () {
32
+ yield typeDefsToImplicitResolversImpl(files);
33
+ }));
34
+ return program.name("supermassive").addCommand(command);
35
+ }
36
+ function typeDefsToImplicitResolversImpl(files) {
37
+ return __async(this, null, function* () {
38
+ for (const file of files) {
39
+ let fullPath;
40
+ if (path.isAbsolute(file)) {
41
+ fullPath = file;
42
+ } else {
43
+ fullPath = path.join(process.cwd(), file);
44
+ }
45
+ const stat = yield fs.stat(fullPath);
46
+ if (!stat.isFile) {
47
+ throw new Error(`Invalid file ${file}`);
48
+ }
49
+ const content = yield fs.readFile(fullPath, {encoding: "utf-8"});
50
+ const document = parse(content);
51
+ const tsContents = extractImplicitTypesToTypescript(document);
52
+ const tsDir = path.join(path.dirname(fullPath), "__generated__");
53
+ yield fs.mkdir(tsDir, {recursive: true});
54
+ const tsFileName = path.join(tsDir, path.basename(fullPath, path.extname(fullPath)) + ".ts");
55
+ const printer = ts.createPrinter();
56
+ yield fs.writeFile(tsFileName, printer.printNode(ts.EmitHint.SourceFile, tsContents, tsContents), {encoding: "utf-8"});
57
+ }
58
+ });
59
+ }
60
+ export {
61
+ supermassive
62
+ };
@@ -0,0 +1,17 @@
1
+ import { FieldNode, FragmentDefinitionNode, SelectionSetNode } from "./ast/TypedAST";
2
+ import type { ObjMap } from "./jsutils/ObjMap";
3
+ import { Resolvers } from "./types";
4
+ /**
5
+ * Given a selectionSet, adds all of the fields in that selection to
6
+ * the passed in map of fields, and returns it at the end.
7
+ *
8
+ * CollectFields requires the "runtime type" of an object. For a field which
9
+ * returns an Interface or Union type, the "runtime type" will be the actual
10
+ * Object type returned by that field.
11
+ *
12
+ * @internal
13
+ */
14
+ export declare function collectFields(resolvers: Resolvers, fragments: ObjMap<FragmentDefinitionNode>, variableValues: {
15
+ [variable: string]: unknown;
16
+ }, runtimeTypeName: string, selectionSet: SelectionSetNode, fields: Map<string, Array<FieldNode>>, visitedFragmentNames: Set<string>): Map<string, Array<FieldNode>>;
17
+ //# sourceMappingURL=collectFields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectFields.d.ts","sourceRoot":"","sources":["../src/collectFields.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,sBAAsB,EAGtB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,CAAC,sBAAsB,CAAC,EACzC,cAAc,EAAE;IAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAC/C,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,gBAAgB,EAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EACrC,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,GAChC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAgE/B"}