@graphitation/supermassive 3.2.6 → 3.3.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 (63) hide show
  1. package/.eslintcache +1 -1
  2. package/CHANGELOG.md +18 -2
  3. package/lib/IncrementalPublisher.d.ts +131 -0
  4. package/lib/IncrementalPublisher.d.ts.map +1 -0
  5. package/lib/IncrementalPublisher.js +519 -0
  6. package/lib/IncrementalPublisher.js.map +7 -0
  7. package/lib/IncrementalPublisher.mjs +503 -0
  8. package/lib/IncrementalPublisher.mjs.map +7 -0
  9. package/lib/benchmarks/swapi-schema/resolvers.d.ts.map +1 -1
  10. package/lib/benchmarks/swapi-schema/resolvers.js +25 -0
  11. package/lib/benchmarks/swapi-schema/resolvers.js.map +2 -2
  12. package/lib/benchmarks/swapi-schema/resolvers.mjs +25 -0
  13. package/lib/benchmarks/swapi-schema/resolvers.mjs.map +2 -2
  14. package/lib/buildFieldPlan.d.ts +18 -0
  15. package/lib/buildFieldPlan.d.ts.map +1 -0
  16. package/lib/buildFieldPlan.js +120 -0
  17. package/lib/buildFieldPlan.js.map +7 -0
  18. package/lib/buildFieldPlan.mjs +101 -0
  19. package/lib/buildFieldPlan.mjs.map +7 -0
  20. package/lib/collectFields.d.ts +21 -8
  21. package/lib/collectFields.d.ts.map +1 -1
  22. package/lib/collectFields.js +97 -95
  23. package/lib/collectFields.js.map +2 -2
  24. package/lib/collectFields.mjs +97 -95
  25. package/lib/collectFields.mjs.map +2 -2
  26. package/lib/executeWithoutSchema.d.ts +7 -51
  27. package/lib/executeWithoutSchema.d.ts.map +1 -1
  28. package/lib/executeWithoutSchema.js +603 -485
  29. package/lib/executeWithoutSchema.js.map +3 -3
  30. package/lib/executeWithoutSchema.mjs +614 -486
  31. package/lib/executeWithoutSchema.mjs.map +3 -3
  32. package/lib/index.d.ts +1 -1
  33. package/lib/index.d.ts.map +1 -1
  34. package/lib/index.js.map +1 -1
  35. package/lib/index.mjs.map +1 -1
  36. package/lib/jsutils/getBySet.d.ts +2 -0
  37. package/lib/jsutils/getBySet.d.ts.map +1 -0
  38. package/lib/jsutils/getBySet.js +32 -0
  39. package/lib/jsutils/getBySet.js.map +7 -0
  40. package/lib/jsutils/getBySet.mjs +13 -0
  41. package/lib/jsutils/getBySet.mjs.map +7 -0
  42. package/lib/jsutils/isSameSet.d.ts +2 -0
  43. package/lib/jsutils/isSameSet.d.ts.map +1 -0
  44. package/lib/jsutils/isSameSet.js +34 -0
  45. package/lib/jsutils/isSameSet.js.map +7 -0
  46. package/lib/jsutils/isSameSet.mjs +15 -0
  47. package/lib/jsutils/isSameSet.mjs.map +7 -0
  48. package/lib/jsutils/promiseWithResolvers.d.ts +11 -0
  49. package/lib/jsutils/promiseWithResolvers.d.ts.map +1 -0
  50. package/lib/jsutils/promiseWithResolvers.js +32 -0
  51. package/lib/jsutils/promiseWithResolvers.js.map +7 -0
  52. package/lib/jsutils/promiseWithResolvers.mjs +13 -0
  53. package/lib/jsutils/promiseWithResolvers.mjs.map +7 -0
  54. package/lib/types.d.ts +63 -27
  55. package/lib/types.d.ts.map +1 -1
  56. package/lib/types.js.map +1 -1
  57. package/lib/values.d.ts +5 -4
  58. package/lib/values.d.ts.map +1 -1
  59. package/lib/values.js +13 -8
  60. package/lib/values.js.map +2 -2
  61. package/lib/values.mjs +13 -8
  62. package/lib/values.mjs.map +2 -2
  63. package/package.json +1 -1
@@ -168,6 +168,26 @@ const resolvers = {
168
168
  Subscription: {
169
169
  emitPersons: {
170
170
  subscribe: emitPersons
171
+ },
172
+ nonNullWithError: {
173
+ subscribe() {
174
+ throw new Error("Subscribe error");
175
+ }
176
+ },
177
+ nonNullWithErrorEvent: {
178
+ subscribe() {
179
+ return (0, import_iterall.createAsyncIterator)(["foo"]);
180
+ },
181
+ resolve() {
182
+ throw new Error("Subscription event error");
183
+ }
184
+ },
185
+ nonNullWithNull: {
186
+ subscribe() {
187
+ return (0, import_iterall.createAsyncIterator)(["foo"]);
188
+ },
189
+ resolve() {
190
+ }
171
191
  }
172
192
  },
173
193
  Query: {
@@ -271,6 +291,11 @@ const resolvers = {
271
291
  },
272
292
  multiArger(_parent, args) {
273
293
  return JSON.stringify(args);
294
+ },
295
+ nonNullWithError() {
296
+ throw new Error("Query error");
297
+ },
298
+ nonNullWithNull() {
274
299
  }
275
300
  },
276
301
  Film: {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/benchmarks/swapi-schema/resolvers.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IExecutableSchemaDefinition } from \"@graphql-tools/schema\";\nimport { createAsyncIterator, forAwaitEach, getAsyncIterator } from \"iterall\";\nimport { mapAsyncIterator } from \"../../utilities/mapAsyncIterator\";\n\n// Note: need this for graphql15-graphql17 cross-compatibility\ntype GraphQLFieldResolver<T = any, U = any, I = any> = (\n parent: T,\n args: U,\n context: I,\n info: any,\n) => any;\n\nconst films: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return mapAsyncIterator(\n getAsyncIterator(\n createAsyncIterator(\n models\n .getData(\"/films\")\n .filter(({ id }: { id: any }) => parent.films.includes(id)),\n ),\n ) as unknown as AsyncIterable<any>,\n // this ensures it's a awaitable iterator\n async (item) => {\n await new Promise((resolve) => setTimeout(resolve, 0));\n return item;\n },\n );\n};\n\nconst starships: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return mapAsyncIterator(\n getAsyncIterator(\n createAsyncIterator(\n models\n .getData(\"/starships\")\n .filter(({ id }: { id: any }) => parent.starships.includes(id)),\n ),\n ) as unknown as AsyncIterable<any>,\n // this ensures it's a awaitable iterator\n\n async (item) => {\n await new Promise((resolve) => setTimeout(resolve, 1));\n return item;\n },\n );\n};\n\nfunction people(key: string): GraphQLFieldResolver<any, any, any> {\n return (parent, _args, { models }) => {\n return models\n .getData(\"/people\")\n .filter(({ id }: { id: any }) => parent[key].includes(id));\n };\n}\n\nconst vehicles: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/vehicles\")\n .filter(({ id }: { id: any }) => parent.vehicles.includes(id));\n};\n\nconst planets: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/planets\")\n .filter(({ id }: { id: any }) => parent.planets.includes(id));\n};\n\nconst species: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/species\")\n .filter(({ id }: { id: any }) => parent.species.includes(id));\n};\nconst homeworld: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/planets\")\n .find((planet: any) => planet.id === parent.homeworld);\n};\n\nconst person: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/people\").find((person: any) => person.id === id);\n};\n\nconst planet: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/planets\").find((planet: any) => planet.id === id);\n};\n\nconst film: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/films\").find((film: any) => film.id === id);\n};\n\nconst starship: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models\n .getData(\"/starships\")\n .find((starship: any) => starship.id === id);\n};\n\nconst transport: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models\n .getData(\"/transport\")\n .find((transport: any) => transport.id === id);\n};\n\nconst vehicle: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/vehicles\").find((vehicle: any) => vehicle.id === id);\n};\n\nconst searchPeopleByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/people\")\n .filter((person: any) => new RegExp(search, \"i\").test(person.name));\n};\n\nconst searchPlanetsByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/planets\")\n .filter((planet: any) => new RegExp(search, \"i\").test(planet.name));\n};\n\nconst searchFilmsByTitle: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/films\")\n .filter((film: any) => new RegExp(search, \"i\").test(film.title));\n};\n\nconst searchSpeciesByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/species\")\n .filter((species: any) => new RegExp(search, \"i\").test(species.name));\n};\n\nconst searchStarshipsByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/starships\")\n .filter((starship: any) => new RegExp(search, \"i\").test(starship.name));\n};\n\nconst searchVehiclesByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/vehicles\")\n .filter((vehicle: any) => new RegExp(search, \"i\").test(vehicle.name));\n};\n\nconst emitPersons: GraphQLFieldResolver<any, any, any> = async function (\n parent,\n { limit, throwError },\n { models },\n) {\n if (throwError) {\n throw new Error(\"error\");\n return;\n }\n const persons = await models.getData(\"/people\");\n const personsLimit = Math.min(limit, persons.length);\n const output: any = { length: personsLimit };\n for (let i = 0; i < personsLimit; i++) {\n output[i] = { emitPersons: persons[i] };\n }\n return createAsyncIterator(output);\n};\n\nconst searchTransportsByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/transport\")\n .filter((transport: any) => new RegExp(search, \"i\").test(transport.name));\n};\n\nconst resolvers: IExecutableSchemaDefinition[\"resolvers\"] = {\n SearchResult: {\n __resolveType(parent: any) {\n return parent.__typename;\n },\n },\n Subscription: {\n emitPersons: {\n subscribe: emitPersons,\n },\n },\n Query: {\n search(parent, { search }, { models }, info) {\n const result = [\n ...searchFilmsByTitle(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Film\") && r,\n ),\n ...searchPeopleByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Person\") && r,\n ),\n ...searchPlanetsByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Planet\") && r,\n ),\n ...searchSpeciesByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Species\") && r,\n ),\n ...searchStarshipsByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Starship\") && r,\n ),\n ...searchTransportsByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Transport\") && r,\n ),\n ...searchVehiclesByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Vehicle\") && r,\n ),\n ];\n\n return result;\n },\n\n node(parent, args, context, info) {\n let result;\n switch (args.nodeType) {\n case \"Person\": {\n result = person(parent, args, context, info);\n break;\n }\n case \"Starship\": {\n result = starship(parent, args, context, info);\n break;\n }\n case \"Transport\": {\n result = transport(parent, args, context, info);\n break;\n }\n case \"Species\": {\n result = species(parent, args, context, info);\n break;\n }\n case \"Vehicle\": {\n result = vehicle(parent, args, context, info);\n break;\n }\n case \"Planet\": {\n result = planet(parent, args, context, info);\n break;\n }\n case \"Film\": {\n result = film(parent, args, context, info);\n break;\n }\n default:\n throw new Error(`Invalid node type ${args.nodeType}`);\n }\n return {\n ...result,\n __typename: args.nodeType,\n };\n },\n\n person,\n planet,\n film,\n transport,\n starship,\n vehicle,\n searchPeopleByName,\n searchStarshipsByName,\n searchTransportsByName,\n searchSpeciesByName,\n searchVehiclesByName,\n searchPlanetsByName,\n searchFilmsByTitle,\n\n allStarships(_parent, _args, { models }) {\n return models.getData(\"/starships\");\n },\n allFilms(_parent, _args, { models }) {\n return models.getData(\"/films\");\n },\n allPeople(_parent, _args, { models }) {\n return models.getData(\"/people\");\n },\n allPlanets(_parent, _args, { models }) {\n return models.getData(\"/planets\");\n },\n allSpecies(_parent, _args, { models }) {\n return models.getData(\"/species\");\n },\n allTransports(_parent, _args, { models }) {\n return models.getData(\"/transport\");\n },\n advancedDefaultInput(_parent, args) {\n return JSON.stringify(args);\n },\n multiArger(_parent, args) {\n return JSON.stringify(args);\n },\n },\n Film: {\n starships,\n vehicles,\n planets,\n characters: people(\"characters\"),\n species,\n },\n Starship: {\n MGLT: (starship) => +starship.MGLT,\n hyperdrive_rating: (starship) => +starship.hyperdrive_rating,\n cargo_capacity: (starship) => +starship.cargo_capacity,\n passengers: (starship) => +starship.passengers,\n max_atmosphering_speed: (starship) => +starship.max_atmosphering_speed,\n length: (starship) => +starship.length,\n cost_in_credits: (starship) => +starship.cost_in_credits,\n pilots: people(\"pilots\"),\n films,\n },\n Person: {\n height: (pilot) => +pilot.height,\n mass: (pilot) => +pilot.mass,\n starships,\n homeworld,\n films,\n bubblingError: () => {\n throw new Error(\"Bubbling!\");\n },\n bubblingListError: () => {\n return forAwaitEach([1, 2, 3], async (item) => {\n await new Promise((resolve) => setTimeout(resolve, 0));\n if (item === 2) {\n throw new Error(\"Bubbling in list!\");\n }\n return item;\n });\n },\n },\n Vehicle: {\n cargo_capacity: (vehicle) => +vehicle.cargo_capacity,\n passengers: (vehicle) => +vehicle.passengers,\n max_atmosphering_speed: (vehicle) => +vehicle.max_atmosphering_speed,\n crew: (vehicle) => forceNumber(vehicle.crew),\n length: (vehicle) => +vehicle.length,\n cost_in_credits: (vehicle) => +vehicle.cost_in_credits,\n pilots: people(\"pilots\"),\n },\n Planet: {\n diameter: (planet) => +planet.diameter,\n rotation_period: (planet) => +planet.rotation_period,\n orbital_period: (planet) => +planet.orbital_period,\n population: (planet) => +planet.population,\n residents: people(\"residents\"),\n films,\n },\n Species: {\n average_lifespan: (species) => +species.average_lifespan,\n average_height: (species) => +species.average_height,\n homeworld,\n people: people(\"people\"),\n },\n Transport: {\n cargo_capacity: (vehicle) => +vehicle.cargo_capacity,\n passengers: (vehicle) => +vehicle.passengers,\n max_atmosphering_speed: (vehicle) => +vehicle.max_atmosphering_speed,\n crew: (vehicle) => forceNumber(vehicle.crew),\n length: (vehicle) => +vehicle.length,\n cost_in_credits: (vehicle) => +vehicle.cost_in_credits,\n },\n};\n\nconst forceNumber = (i: string) =>\n Number(i.split(\",\").join(\"\").split(\"-\")[0]) || -1;\n\nexport default resolvers;\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IExecutableSchemaDefinition } from \"@graphql-tools/schema\";\nimport { createAsyncIterator, forAwaitEach, getAsyncIterator } from \"iterall\";\nimport { mapAsyncIterator } from \"../../utilities/mapAsyncIterator\";\n\n// Note: need this for graphql15-graphql17 cross-compatibility\ntype GraphQLFieldResolver<T = any, U = any, I = any> = (\n parent: T,\n args: U,\n context: I,\n info: any,\n) => any;\n\nconst films: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return mapAsyncIterator(\n getAsyncIterator(\n createAsyncIterator(\n models\n .getData(\"/films\")\n .filter(({ id }: { id: any }) => parent.films.includes(id)),\n ),\n ) as unknown as AsyncIterable<any>,\n // this ensures it's a awaitable iterator\n async (item) => {\n await new Promise((resolve) => setTimeout(resolve, 0));\n return item;\n },\n );\n};\n\nconst starships: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return mapAsyncIterator(\n getAsyncIterator(\n createAsyncIterator(\n models\n .getData(\"/starships\")\n .filter(({ id }: { id: any }) => parent.starships.includes(id)),\n ),\n ) as unknown as AsyncIterable<any>,\n // this ensures it's a awaitable iterator\n\n async (item) => {\n await new Promise((resolve) => setTimeout(resolve, 1));\n return item;\n },\n );\n};\n\nfunction people(key: string): GraphQLFieldResolver<any, any, any> {\n return (parent, _args, { models }) => {\n return models\n .getData(\"/people\")\n .filter(({ id }: { id: any }) => parent[key].includes(id));\n };\n}\n\nconst vehicles: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/vehicles\")\n .filter(({ id }: { id: any }) => parent.vehicles.includes(id));\n};\n\nconst planets: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/planets\")\n .filter(({ id }: { id: any }) => parent.planets.includes(id));\n};\n\nconst species: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/species\")\n .filter(({ id }: { id: any }) => parent.species.includes(id));\n};\nconst homeworld: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/planets\")\n .find((planet: any) => planet.id === parent.homeworld);\n};\n\nconst person: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/people\").find((person: any) => person.id === id);\n};\n\nconst planet: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/planets\").find((planet: any) => planet.id === id);\n};\n\nconst film: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/films\").find((film: any) => film.id === id);\n};\n\nconst starship: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models\n .getData(\"/starships\")\n .find((starship: any) => starship.id === id);\n};\n\nconst transport: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models\n .getData(\"/transport\")\n .find((transport: any) => transport.id === id);\n};\n\nconst vehicle: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/vehicles\").find((vehicle: any) => vehicle.id === id);\n};\n\nconst searchPeopleByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/people\")\n .filter((person: any) => new RegExp(search, \"i\").test(person.name));\n};\n\nconst searchPlanetsByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/planets\")\n .filter((planet: any) => new RegExp(search, \"i\").test(planet.name));\n};\n\nconst searchFilmsByTitle: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/films\")\n .filter((film: any) => new RegExp(search, \"i\").test(film.title));\n};\n\nconst searchSpeciesByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/species\")\n .filter((species: any) => new RegExp(search, \"i\").test(species.name));\n};\n\nconst searchStarshipsByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/starships\")\n .filter((starship: any) => new RegExp(search, \"i\").test(starship.name));\n};\n\nconst searchVehiclesByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/vehicles\")\n .filter((vehicle: any) => new RegExp(search, \"i\").test(vehicle.name));\n};\n\nconst emitPersons: GraphQLFieldResolver<any, any, any> = async function (\n parent,\n { limit, throwError },\n { models },\n) {\n if (throwError) {\n throw new Error(\"error\");\n return;\n }\n const persons = await models.getData(\"/people\");\n const personsLimit = Math.min(limit, persons.length);\n const output: any = { length: personsLimit };\n for (let i = 0; i < personsLimit; i++) {\n output[i] = { emitPersons: persons[i] };\n }\n return createAsyncIterator(output);\n};\n\nconst searchTransportsByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/transport\")\n .filter((transport: any) => new RegExp(search, \"i\").test(transport.name));\n};\n\nconst resolvers: IExecutableSchemaDefinition[\"resolvers\"] = {\n SearchResult: {\n __resolveType(parent: any) {\n return parent.__typename;\n },\n },\n Subscription: {\n emitPersons: {\n subscribe: emitPersons,\n },\n nonNullWithError: {\n subscribe() {\n throw new Error(\"Subscribe error\");\n },\n },\n nonNullWithErrorEvent: {\n subscribe() {\n return createAsyncIterator([\"foo\"]);\n },\n resolve() {\n throw new Error(\"Subscription event error\");\n },\n },\n nonNullWithNull: {\n subscribe() {\n return createAsyncIterator([\"foo\"]);\n },\n resolve() {},\n },\n },\n Query: {\n search(parent, { search }, { models }, info) {\n const result = [\n ...searchFilmsByTitle(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Film\") && r,\n ),\n ...searchPeopleByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Person\") && r,\n ),\n ...searchPlanetsByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Planet\") && r,\n ),\n ...searchSpeciesByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Species\") && r,\n ),\n ...searchStarshipsByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Starship\") && r,\n ),\n ...searchTransportsByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Transport\") && r,\n ),\n ...searchVehiclesByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Vehicle\") && r,\n ),\n ];\n\n return result;\n },\n\n node(parent, args, context, info) {\n let result;\n switch (args.nodeType) {\n case \"Person\": {\n result = person(parent, args, context, info);\n break;\n }\n case \"Starship\": {\n result = starship(parent, args, context, info);\n break;\n }\n case \"Transport\": {\n result = transport(parent, args, context, info);\n break;\n }\n case \"Species\": {\n result = species(parent, args, context, info);\n break;\n }\n case \"Vehicle\": {\n result = vehicle(parent, args, context, info);\n break;\n }\n case \"Planet\": {\n result = planet(parent, args, context, info);\n break;\n }\n case \"Film\": {\n result = film(parent, args, context, info);\n break;\n }\n default:\n throw new Error(`Invalid node type ${args.nodeType}`);\n }\n return {\n ...result,\n __typename: args.nodeType,\n };\n },\n\n person,\n planet,\n film,\n transport,\n starship,\n vehicle,\n searchPeopleByName,\n searchStarshipsByName,\n searchTransportsByName,\n searchSpeciesByName,\n searchVehiclesByName,\n searchPlanetsByName,\n searchFilmsByTitle,\n\n allStarships(_parent, _args, { models }) {\n return models.getData(\"/starships\");\n },\n allFilms(_parent, _args, { models }) {\n return models.getData(\"/films\");\n },\n allPeople(_parent, _args, { models }) {\n return models.getData(\"/people\");\n },\n allPlanets(_parent, _args, { models }) {\n return models.getData(\"/planets\");\n },\n allSpecies(_parent, _args, { models }) {\n return models.getData(\"/species\");\n },\n allTransports(_parent, _args, { models }) {\n return models.getData(\"/transport\");\n },\n advancedDefaultInput(_parent, args) {\n return JSON.stringify(args);\n },\n multiArger(_parent, args) {\n return JSON.stringify(args);\n },\n nonNullWithError() {\n throw new Error(\"Query error\");\n },\n nonNullWithNull() {},\n },\n Film: {\n starships,\n vehicles,\n planets,\n characters: people(\"characters\"),\n species,\n },\n Starship: {\n MGLT: (starship) => +starship.MGLT,\n hyperdrive_rating: (starship) => +starship.hyperdrive_rating,\n cargo_capacity: (starship) => +starship.cargo_capacity,\n passengers: (starship) => +starship.passengers,\n max_atmosphering_speed: (starship) => +starship.max_atmosphering_speed,\n length: (starship) => +starship.length,\n cost_in_credits: (starship) => +starship.cost_in_credits,\n pilots: people(\"pilots\"),\n films,\n },\n Person: {\n height: (pilot) => +pilot.height,\n mass: (pilot) => +pilot.mass,\n starships,\n homeworld,\n films,\n bubblingError: () => {\n throw new Error(\"Bubbling!\");\n },\n bubblingListError: () => {\n return forAwaitEach([1, 2, 3], async (item) => {\n await new Promise((resolve) => setTimeout(resolve, 0));\n if (item === 2) {\n throw new Error(\"Bubbling in list!\");\n }\n return item;\n });\n },\n },\n Vehicle: {\n cargo_capacity: (vehicle) => +vehicle.cargo_capacity,\n passengers: (vehicle) => +vehicle.passengers,\n max_atmosphering_speed: (vehicle) => +vehicle.max_atmosphering_speed,\n crew: (vehicle) => forceNumber(vehicle.crew),\n length: (vehicle) => +vehicle.length,\n cost_in_credits: (vehicle) => +vehicle.cost_in_credits,\n pilots: people(\"pilots\"),\n },\n Planet: {\n diameter: (planet) => +planet.diameter,\n rotation_period: (planet) => +planet.rotation_period,\n orbital_period: (planet) => +planet.orbital_period,\n population: (planet) => +planet.population,\n residents: people(\"residents\"),\n films,\n },\n Species: {\n average_lifespan: (species) => +species.average_lifespan,\n average_height: (species) => +species.average_height,\n homeworld,\n people: people(\"people\"),\n },\n Transport: {\n cargo_capacity: (vehicle) => +vehicle.cargo_capacity,\n passengers: (vehicle) => +vehicle.passengers,\n max_atmosphering_speed: (vehicle) => +vehicle.max_atmosphering_speed,\n crew: (vehicle) => forceNumber(vehicle.crew),\n length: (vehicle) => +vehicle.length,\n cost_in_credits: (vehicle) => +vehicle.cost_in_credits,\n },\n};\n\nconst forceNumber = (i: string) =>\n Number(i.split(\",\").join(\"\").split(\"-\")[0]) || -1;\n\nexport default resolvers;\n"],
5
+ "mappings": "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",
6
6
  "names": ["planet", "person", "film", "starship", "transport", "vehicle", "species"]
7
7
  }
@@ -149,6 +149,26 @@ var resolvers = {
149
149
  Subscription: {
150
150
  emitPersons: {
151
151
  subscribe: emitPersons
152
+ },
153
+ nonNullWithError: {
154
+ subscribe() {
155
+ throw new Error("Subscribe error");
156
+ }
157
+ },
158
+ nonNullWithErrorEvent: {
159
+ subscribe() {
160
+ return createAsyncIterator(["foo"]);
161
+ },
162
+ resolve() {
163
+ throw new Error("Subscription event error");
164
+ }
165
+ },
166
+ nonNullWithNull: {
167
+ subscribe() {
168
+ return createAsyncIterator(["foo"]);
169
+ },
170
+ resolve() {
171
+ }
152
172
  }
153
173
  },
154
174
  Query: {
@@ -252,6 +272,11 @@ var resolvers = {
252
272
  },
253
273
  multiArger(_parent, args) {
254
274
  return JSON.stringify(args);
275
+ },
276
+ nonNullWithError() {
277
+ throw new Error("Query error");
278
+ },
279
+ nonNullWithNull() {
255
280
  }
256
281
  },
257
282
  Film: {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/benchmarks/swapi-schema/resolvers.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IExecutableSchemaDefinition } from \"@graphql-tools/schema\";\nimport { createAsyncIterator, forAwaitEach, getAsyncIterator } from \"iterall\";\nimport { mapAsyncIterator } from \"../../utilities/mapAsyncIterator\";\n\n// Note: need this for graphql15-graphql17 cross-compatibility\ntype GraphQLFieldResolver<T = any, U = any, I = any> = (\n parent: T,\n args: U,\n context: I,\n info: any,\n) => any;\n\nconst films: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return mapAsyncIterator(\n getAsyncIterator(\n createAsyncIterator(\n models\n .getData(\"/films\")\n .filter(({ id }: { id: any }) => parent.films.includes(id)),\n ),\n ) as unknown as AsyncIterable<any>,\n // this ensures it's a awaitable iterator\n async (item) => {\n await new Promise((resolve) => setTimeout(resolve, 0));\n return item;\n },\n );\n};\n\nconst starships: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return mapAsyncIterator(\n getAsyncIterator(\n createAsyncIterator(\n models\n .getData(\"/starships\")\n .filter(({ id }: { id: any }) => parent.starships.includes(id)),\n ),\n ) as unknown as AsyncIterable<any>,\n // this ensures it's a awaitable iterator\n\n async (item) => {\n await new Promise((resolve) => setTimeout(resolve, 1));\n return item;\n },\n );\n};\n\nfunction people(key: string): GraphQLFieldResolver<any, any, any> {\n return (parent, _args, { models }) => {\n return models\n .getData(\"/people\")\n .filter(({ id }: { id: any }) => parent[key].includes(id));\n };\n}\n\nconst vehicles: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/vehicles\")\n .filter(({ id }: { id: any }) => parent.vehicles.includes(id));\n};\n\nconst planets: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/planets\")\n .filter(({ id }: { id: any }) => parent.planets.includes(id));\n};\n\nconst species: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/species\")\n .filter(({ id }: { id: any }) => parent.species.includes(id));\n};\nconst homeworld: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/planets\")\n .find((planet: any) => planet.id === parent.homeworld);\n};\n\nconst person: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/people\").find((person: any) => person.id === id);\n};\n\nconst planet: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/planets\").find((planet: any) => planet.id === id);\n};\n\nconst film: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/films\").find((film: any) => film.id === id);\n};\n\nconst starship: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models\n .getData(\"/starships\")\n .find((starship: any) => starship.id === id);\n};\n\nconst transport: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models\n .getData(\"/transport\")\n .find((transport: any) => transport.id === id);\n};\n\nconst vehicle: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/vehicles\").find((vehicle: any) => vehicle.id === id);\n};\n\nconst searchPeopleByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/people\")\n .filter((person: any) => new RegExp(search, \"i\").test(person.name));\n};\n\nconst searchPlanetsByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/planets\")\n .filter((planet: any) => new RegExp(search, \"i\").test(planet.name));\n};\n\nconst searchFilmsByTitle: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/films\")\n .filter((film: any) => new RegExp(search, \"i\").test(film.title));\n};\n\nconst searchSpeciesByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/species\")\n .filter((species: any) => new RegExp(search, \"i\").test(species.name));\n};\n\nconst searchStarshipsByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/starships\")\n .filter((starship: any) => new RegExp(search, \"i\").test(starship.name));\n};\n\nconst searchVehiclesByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/vehicles\")\n .filter((vehicle: any) => new RegExp(search, \"i\").test(vehicle.name));\n};\n\nconst emitPersons: GraphQLFieldResolver<any, any, any> = async function (\n parent,\n { limit, throwError },\n { models },\n) {\n if (throwError) {\n throw new Error(\"error\");\n return;\n }\n const persons = await models.getData(\"/people\");\n const personsLimit = Math.min(limit, persons.length);\n const output: any = { length: personsLimit };\n for (let i = 0; i < personsLimit; i++) {\n output[i] = { emitPersons: persons[i] };\n }\n return createAsyncIterator(output);\n};\n\nconst searchTransportsByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/transport\")\n .filter((transport: any) => new RegExp(search, \"i\").test(transport.name));\n};\n\nconst resolvers: IExecutableSchemaDefinition[\"resolvers\"] = {\n SearchResult: {\n __resolveType(parent: any) {\n return parent.__typename;\n },\n },\n Subscription: {\n emitPersons: {\n subscribe: emitPersons,\n },\n },\n Query: {\n search(parent, { search }, { models }, info) {\n const result = [\n ...searchFilmsByTitle(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Film\") && r,\n ),\n ...searchPeopleByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Person\") && r,\n ),\n ...searchPlanetsByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Planet\") && r,\n ),\n ...searchSpeciesByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Species\") && r,\n ),\n ...searchStarshipsByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Starship\") && r,\n ),\n ...searchTransportsByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Transport\") && r,\n ),\n ...searchVehiclesByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Vehicle\") && r,\n ),\n ];\n\n return result;\n },\n\n node(parent, args, context, info) {\n let result;\n switch (args.nodeType) {\n case \"Person\": {\n result = person(parent, args, context, info);\n break;\n }\n case \"Starship\": {\n result = starship(parent, args, context, info);\n break;\n }\n case \"Transport\": {\n result = transport(parent, args, context, info);\n break;\n }\n case \"Species\": {\n result = species(parent, args, context, info);\n break;\n }\n case \"Vehicle\": {\n result = vehicle(parent, args, context, info);\n break;\n }\n case \"Planet\": {\n result = planet(parent, args, context, info);\n break;\n }\n case \"Film\": {\n result = film(parent, args, context, info);\n break;\n }\n default:\n throw new Error(`Invalid node type ${args.nodeType}`);\n }\n return {\n ...result,\n __typename: args.nodeType,\n };\n },\n\n person,\n planet,\n film,\n transport,\n starship,\n vehicle,\n searchPeopleByName,\n searchStarshipsByName,\n searchTransportsByName,\n searchSpeciesByName,\n searchVehiclesByName,\n searchPlanetsByName,\n searchFilmsByTitle,\n\n allStarships(_parent, _args, { models }) {\n return models.getData(\"/starships\");\n },\n allFilms(_parent, _args, { models }) {\n return models.getData(\"/films\");\n },\n allPeople(_parent, _args, { models }) {\n return models.getData(\"/people\");\n },\n allPlanets(_parent, _args, { models }) {\n return models.getData(\"/planets\");\n },\n allSpecies(_parent, _args, { models }) {\n return models.getData(\"/species\");\n },\n allTransports(_parent, _args, { models }) {\n return models.getData(\"/transport\");\n },\n advancedDefaultInput(_parent, args) {\n return JSON.stringify(args);\n },\n multiArger(_parent, args) {\n return JSON.stringify(args);\n },\n },\n Film: {\n starships,\n vehicles,\n planets,\n characters: people(\"characters\"),\n species,\n },\n Starship: {\n MGLT: (starship) => +starship.MGLT,\n hyperdrive_rating: (starship) => +starship.hyperdrive_rating,\n cargo_capacity: (starship) => +starship.cargo_capacity,\n passengers: (starship) => +starship.passengers,\n max_atmosphering_speed: (starship) => +starship.max_atmosphering_speed,\n length: (starship) => +starship.length,\n cost_in_credits: (starship) => +starship.cost_in_credits,\n pilots: people(\"pilots\"),\n films,\n },\n Person: {\n height: (pilot) => +pilot.height,\n mass: (pilot) => +pilot.mass,\n starships,\n homeworld,\n films,\n bubblingError: () => {\n throw new Error(\"Bubbling!\");\n },\n bubblingListError: () => {\n return forAwaitEach([1, 2, 3], async (item) => {\n await new Promise((resolve) => setTimeout(resolve, 0));\n if (item === 2) {\n throw new Error(\"Bubbling in list!\");\n }\n return item;\n });\n },\n },\n Vehicle: {\n cargo_capacity: (vehicle) => +vehicle.cargo_capacity,\n passengers: (vehicle) => +vehicle.passengers,\n max_atmosphering_speed: (vehicle) => +vehicle.max_atmosphering_speed,\n crew: (vehicle) => forceNumber(vehicle.crew),\n length: (vehicle) => +vehicle.length,\n cost_in_credits: (vehicle) => +vehicle.cost_in_credits,\n pilots: people(\"pilots\"),\n },\n Planet: {\n diameter: (planet) => +planet.diameter,\n rotation_period: (planet) => +planet.rotation_period,\n orbital_period: (planet) => +planet.orbital_period,\n population: (planet) => +planet.population,\n residents: people(\"residents\"),\n films,\n },\n Species: {\n average_lifespan: (species) => +species.average_lifespan,\n average_height: (species) => +species.average_height,\n homeworld,\n people: people(\"people\"),\n },\n Transport: {\n cargo_capacity: (vehicle) => +vehicle.cargo_capacity,\n passengers: (vehicle) => +vehicle.passengers,\n max_atmosphering_speed: (vehicle) => +vehicle.max_atmosphering_speed,\n crew: (vehicle) => forceNumber(vehicle.crew),\n length: (vehicle) => +vehicle.length,\n cost_in_credits: (vehicle) => +vehicle.cost_in_credits,\n },\n};\n\nconst forceNumber = (i: string) =>\n Number(i.split(\",\").join(\"\").split(\"-\")[0]) || -1;\n\nexport default resolvers;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,qBAAqB,cAAc,wBAAwB;AACpE,SAAS,wBAAwB;AAUjC,IAAM,QAA6C,CACjD,QACA,OACA,EAAE,OAAO,MACN;AACH,SAAO;AAAA,IACL;AAAA,MACE;AAAA,QACE,OACG,QAAQ,QAAQ,EAChB,OAAO,CAAC,EAAE,GAAG,MAAmB,OAAO,MAAM,SAAS,EAAE,CAAC;AAAA,MAC9D;AAAA,IACF;AAAA;AAAA,IAEA,CAAO,SAAS;AACd,YAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,CAAC,CAAC;AACrD,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,IAAM,YAAiD,CACrD,QACA,OACA,EAAE,OAAO,MACN;AACH,SAAO;AAAA,IACL;AAAA,MACE;AAAA,QACE,OACG,QAAQ,YAAY,EACpB,OAAO,CAAC,EAAE,GAAG,MAAmB,OAAO,UAAU,SAAS,EAAE,CAAC;AAAA,MAClE;AAAA,IACF;AAAA;AAAA,IAGA,CAAO,SAAS;AACd,YAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,CAAC,CAAC;AACrD,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEA,SAAS,OAAO,KAAkD;AAChE,SAAO,CAAC,QAAQ,OAAO,EAAE,OAAO,MAAM;AACpC,WAAO,OACJ,QAAQ,SAAS,EACjB,OAAO,CAAC,EAAE,GAAG,MAAmB,OAAO,GAAG,EAAE,SAAS,EAAE,CAAC;AAAA,EAC7D;AACF;AAEA,IAAM,WAAgD,CACpD,QACA,OACA,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,WAAW,EACnB,OAAO,CAAC,EAAE,GAAG,MAAmB,OAAO,SAAS,SAAS,EAAE,CAAC;AACjE;AAEA,IAAM,UAA+C,CACnD,QACA,OACA,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,UAAU,EAClB,OAAO,CAAC,EAAE,GAAG,MAAmB,OAAO,QAAQ,SAAS,EAAE,CAAC;AAChE;AAEA,IAAM,UAA+C,CACnD,QACA,OACA,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,UAAU,EAClB,OAAO,CAAC,EAAE,GAAG,MAAmB,OAAO,QAAQ,SAAS,EAAE,CAAC;AAChE;AACA,IAAM,YAAiD,CACrD,QACA,OACA,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,UAAU,EAClB,KAAK,CAACA,YAAgBA,QAAO,OAAO,OAAO,SAAS;AACzD;AAEA,IAAM,SAA8C,CAClD,QACA,EAAE,GAAG,GACL,EAAE,OAAO,MACN;AACH,SAAO,OAAO,QAAQ,SAAS,EAAE,KAAK,CAACC,YAAgBA,QAAO,OAAO,EAAE;AACzE;AAEA,IAAM,SAA8C,CAClD,QACA,EAAE,GAAG,GACL,EAAE,OAAO,MACN;AACH,SAAO,OAAO,QAAQ,UAAU,EAAE,KAAK,CAACD,YAAgBA,QAAO,OAAO,EAAE;AAC1E;AAEA,IAAM,OAA4C,CAChD,QACA,EAAE,GAAG,GACL,EAAE,OAAO,MACN;AACH,SAAO,OAAO,QAAQ,QAAQ,EAAE,KAAK,CAACE,UAAcA,MAAK,OAAO,EAAE;AACpE;AAEA,IAAM,WAAgD,CACpD,QACA,EAAE,GAAG,GACL,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,YAAY,EACpB,KAAK,CAACC,cAAkBA,UAAS,OAAO,EAAE;AAC/C;AAEA,IAAM,YAAiD,CACrD,QACA,EAAE,GAAG,GACL,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,YAAY,EACpB,KAAK,CAACC,eAAmBA,WAAU,OAAO,EAAE;AACjD;AAEA,IAAM,UAA+C,CACnD,QACA,EAAE,GAAG,GACL,EAAE,OAAO,MACN;AACH,SAAO,OAAO,QAAQ,WAAW,EAAE,KAAK,CAACC,aAAiBA,SAAQ,OAAO,EAAE;AAC7E;AAEA,IAAM,qBAA0D,CAC9D,QACA,EAAE,OAAO,GACT,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,SAAS,EACjB,OAAO,CAACJ,YAAgB,IAAI,OAAO,QAAQ,GAAG,EAAE,KAAKA,QAAO,IAAI,CAAC;AACtE;AAEA,IAAM,sBAA2D,CAC/D,QACA,EAAE,OAAO,GACT,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,UAAU,EAClB,OAAO,CAACD,YAAgB,IAAI,OAAO,QAAQ,GAAG,EAAE,KAAKA,QAAO,IAAI,CAAC;AACtE;AAEA,IAAM,qBAA0D,CAC9D,QACA,EAAE,OAAO,GACT,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,QAAQ,EAChB,OAAO,CAACE,UAAc,IAAI,OAAO,QAAQ,GAAG,EAAE,KAAKA,MAAK,KAAK,CAAC;AACnE;AAEA,IAAM,sBAA2D,CAC/D,QACA,EAAE,OAAO,GACT,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,UAAU,EAClB,OAAO,CAACI,aAAiB,IAAI,OAAO,QAAQ,GAAG,EAAE,KAAKA,SAAQ,IAAI,CAAC;AACxE;AAEA,IAAM,wBAA6D,CACjE,QACA,EAAE,OAAO,GACT,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,YAAY,EACpB,OAAO,CAACH,cAAkB,IAAI,OAAO,QAAQ,GAAG,EAAE,KAAKA,UAAS,IAAI,CAAC;AAC1E;AAEA,IAAM,uBAA4D,CAChE,QACA,EAAE,OAAO,GACT,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,WAAW,EACnB,OAAO,CAACE,aAAiB,IAAI,OAAO,QAAQ,GAAG,EAAE,KAAKA,SAAQ,IAAI,CAAC;AACxE;AAEA,IAAM,cAAmD,SACvD,IACA,IACA,IACA;AAAA,6CAHA,QACA,EAAE,OAAO,WAAW,GACpB,EAAE,OAAO,GACT;AACA,QAAI,YAAY;AACd,YAAM,IAAI,MAAM,OAAO;AACvB;AAAA,IACF;AACA,UAAM,UAAU,MAAM,OAAO,QAAQ,SAAS;AAC9C,UAAM,eAAe,KAAK,IAAI,OAAO,QAAQ,MAAM;AACnD,UAAM,SAAc,EAAE,QAAQ,aAAa;AAC3C,aAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACrC,aAAO,CAAC,IAAI,EAAE,aAAa,QAAQ,CAAC,EAAE;AAAA,IACxC;AACA,WAAO,oBAAoB,MAAM;AAAA,EACnC;AAAA;AAEA,IAAM,yBAA8D,CAClE,QACA,EAAE,OAAO,GACT,EAAE,OAAO,MACN;AACH,SAAO,OACJ,QAAQ,YAAY,EACpB,OAAO,CAACD,eAAmB,IAAI,OAAO,QAAQ,GAAG,EAAE,KAAKA,WAAU,IAAI,CAAC;AAC5E;AAEA,IAAM,YAAsD;AAAA,EAC1D,cAAc;AAAA,IACZ,cAAc,QAAa;AACzB,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AAAA,EACA,cAAc;AAAA,IACZ,aAAa;AAAA,MACX,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,OAAO,QAAQ,EAAE,OAAO,GAAG,EAAE,OAAO,GAAG,MAAM;AAC3C,YAAM,SAAS;AAAA,QACb,GAAG,mBAAmB,QAAQ,EAAE,OAAO,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE;AAAA,UAC1D,CAAC,OAAY,EAAE,aAAa,WAAW;AAAA,QACzC;AAAA,QACA,GAAG,mBAAmB,QAAQ,EAAE,OAAO,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE;AAAA,UAC1D,CAAC,OAAY,EAAE,aAAa,aAAa;AAAA,QAC3C;AAAA,QACA,GAAG,oBAAoB,QAAQ,EAAE,OAAO,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE;AAAA,UAC3D,CAAC,OAAY,EAAE,aAAa,aAAa;AAAA,QAC3C;AAAA,QACA,GAAG,oBAAoB,QAAQ,EAAE,OAAO,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE;AAAA,UAC3D,CAAC,OAAY,EAAE,aAAa,cAAc;AAAA,QAC5C;AAAA,QACA,GAAG,sBAAsB,QAAQ,EAAE,OAAO,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE;AAAA,UAC7D,CAAC,OAAY,EAAE,aAAa,eAAe;AAAA,QAC7C;AAAA,QACA,GAAG,uBAAuB,QAAQ,EAAE,OAAO,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE;AAAA,UAC9D,CAAC,OAAY,EAAE,aAAa,gBAAgB;AAAA,QAC9C;AAAA,QACA,GAAG,qBAAqB,QAAQ,EAAE,OAAO,GAAG,EAAE,OAAO,GAAG,IAAI,EAAE;AAAA,UAC5D,CAAC,OAAY,EAAE,aAAa,cAAc;AAAA,QAC5C;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,KAAK,QAAQ,MAAM,SAAS,MAAM;AAChC,UAAI;AACJ,cAAQ,KAAK,UAAU;AAAA,QACrB,KAAK,UAAU;AACb,mBAAS,OAAO,QAAQ,MAAM,SAAS,IAAI;AAC3C;AAAA,QACF;AAAA,QACA,KAAK,YAAY;AACf,mBAAS,SAAS,QAAQ,MAAM,SAAS,IAAI;AAC7C;AAAA,QACF;AAAA,QACA,KAAK,aAAa;AAChB,mBAAS,UAAU,QAAQ,MAAM,SAAS,IAAI;AAC9C;AAAA,QACF;AAAA,QACA,KAAK,WAAW;AACd,mBAAS,QAAQ,QAAQ,MAAM,SAAS,IAAI;AAC5C;AAAA,QACF;AAAA,QACA,KAAK,WAAW;AACd,mBAAS,QAAQ,QAAQ,MAAM,SAAS,IAAI;AAC5C;AAAA,QACF;AAAA,QACA,KAAK,UAAU;AACb,mBAAS,OAAO,QAAQ,MAAM,SAAS,IAAI;AAC3C;AAAA,QACF;AAAA,QACA,KAAK,QAAQ;AACX,mBAAS,KAAK,QAAQ,MAAM,SAAS,IAAI;AACzC;AAAA,QACF;AAAA,QACA;AACE,gBAAM,IAAI,MAAM,qBAAqB,KAAK,UAAU;AAAA,MACxD;AACA,aAAO,iCACF,SADE;AAAA,QAEL,YAAY,KAAK;AAAA,MACnB;AAAA,IACF;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAEA,aAAa,SAAS,OAAO,EAAE,OAAO,GAAG;AACvC,aAAO,OAAO,QAAQ,YAAY;AAAA,IACpC;AAAA,IACA,SAAS,SAAS,OAAO,EAAE,OAAO,GAAG;AACnC,aAAO,OAAO,QAAQ,QAAQ;AAAA,IAChC;AAAA,IACA,UAAU,SAAS,OAAO,EAAE,OAAO,GAAG;AACpC,aAAO,OAAO,QAAQ,SAAS;AAAA,IACjC;AAAA,IACA,WAAW,SAAS,OAAO,EAAE,OAAO,GAAG;AACrC,aAAO,OAAO,QAAQ,UAAU;AAAA,IAClC;AAAA,IACA,WAAW,SAAS,OAAO,EAAE,OAAO,GAAG;AACrC,aAAO,OAAO,QAAQ,UAAU;AAAA,IAClC;AAAA,IACA,cAAc,SAAS,OAAO,EAAE,OAAO,GAAG;AACxC,aAAO,OAAO,QAAQ,YAAY;AAAA,IACpC;AAAA,IACA,qBAAqB,SAAS,MAAM;AAClC,aAAO,KAAK,UAAU,IAAI;AAAA,IAC5B;AAAA,IACA,WAAW,SAAS,MAAM;AACxB,aAAO,KAAK,UAAU,IAAI;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,OAAO,YAAY;AAAA,IAC/B;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,MAAM,CAACD,cAAa,CAACA,UAAS;AAAA,IAC9B,mBAAmB,CAACA,cAAa,CAACA,UAAS;AAAA,IAC3C,gBAAgB,CAACA,cAAa,CAACA,UAAS;AAAA,IACxC,YAAY,CAACA,cAAa,CAACA,UAAS;AAAA,IACpC,wBAAwB,CAACA,cAAa,CAACA,UAAS;AAAA,IAChD,QAAQ,CAACA,cAAa,CAACA,UAAS;AAAA,IAChC,iBAAiB,CAACA,cAAa,CAACA,UAAS;AAAA,IACzC,QAAQ,OAAO,QAAQ;AAAA,IACvB;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ,CAAC,UAAU,CAAC,MAAM;AAAA,IAC1B,MAAM,CAAC,UAAU,CAAC,MAAM;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe,MAAM;AACnB,YAAM,IAAI,MAAM,WAAW;AAAA,IAC7B;AAAA,IACA,mBAAmB,MAAM;AACvB,aAAO,aAAa,CAAC,GAAG,GAAG,CAAC,GAAG,CAAO,SAAS;AAC7C,cAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,CAAC,CAAC;AACrD,YAAI,SAAS,GAAG;AACd,gBAAM,IAAI,MAAM,mBAAmB;AAAA,QACrC;AACA,eAAO;AAAA,MACT,EAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,gBAAgB,CAACE,aAAY,CAACA,SAAQ;AAAA,IACtC,YAAY,CAACA,aAAY,CAACA,SAAQ;AAAA,IAClC,wBAAwB,CAACA,aAAY,CAACA,SAAQ;AAAA,IAC9C,MAAM,CAACA,aAAY,YAAYA,SAAQ,IAAI;AAAA,IAC3C,QAAQ,CAACA,aAAY,CAACA,SAAQ;AAAA,IAC9B,iBAAiB,CAACA,aAAY,CAACA,SAAQ;AAAA,IACvC,QAAQ,OAAO,QAAQ;AAAA,EACzB;AAAA,EACA,QAAQ;AAAA,IACN,UAAU,CAACL,YAAW,CAACA,QAAO;AAAA,IAC9B,iBAAiB,CAACA,YAAW,CAACA,QAAO;AAAA,IACrC,gBAAgB,CAACA,YAAW,CAACA,QAAO;AAAA,IACpC,YAAY,CAACA,YAAW,CAACA,QAAO;AAAA,IAChC,WAAW,OAAO,WAAW;AAAA,IAC7B;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,kBAAkB,CAACM,aAAY,CAACA,SAAQ;AAAA,IACxC,gBAAgB,CAACA,aAAY,CAACA,SAAQ;AAAA,IACtC;AAAA,IACA,QAAQ,OAAO,QAAQ;AAAA,EACzB;AAAA,EACA,WAAW;AAAA,IACT,gBAAgB,CAACD,aAAY,CAACA,SAAQ;AAAA,IACtC,YAAY,CAACA,aAAY,CAACA,SAAQ;AAAA,IAClC,wBAAwB,CAACA,aAAY,CAACA,SAAQ;AAAA,IAC9C,MAAM,CAACA,aAAY,YAAYA,SAAQ,IAAI;AAAA,IAC3C,QAAQ,CAACA,aAAY,CAACA,SAAQ;AAAA,IAC9B,iBAAiB,CAACA,aAAY,CAACA,SAAQ;AAAA,EACzC;AACF;AAEA,IAAM,cAAc,CAAC,MACnB,OAAO,EAAE,MAAM,GAAG,EAAE,KAAK,EAAE,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,KAAK;AAEjD,IAAO,oBAAQ;",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { IExecutableSchemaDefinition } from \"@graphql-tools/schema\";\nimport { createAsyncIterator, forAwaitEach, getAsyncIterator } from \"iterall\";\nimport { mapAsyncIterator } from \"../../utilities/mapAsyncIterator\";\n\n// Note: need this for graphql15-graphql17 cross-compatibility\ntype GraphQLFieldResolver<T = any, U = any, I = any> = (\n parent: T,\n args: U,\n context: I,\n info: any,\n) => any;\n\nconst films: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return mapAsyncIterator(\n getAsyncIterator(\n createAsyncIterator(\n models\n .getData(\"/films\")\n .filter(({ id }: { id: any }) => parent.films.includes(id)),\n ),\n ) as unknown as AsyncIterable<any>,\n // this ensures it's a awaitable iterator\n async (item) => {\n await new Promise((resolve) => setTimeout(resolve, 0));\n return item;\n },\n );\n};\n\nconst starships: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return mapAsyncIterator(\n getAsyncIterator(\n createAsyncIterator(\n models\n .getData(\"/starships\")\n .filter(({ id }: { id: any }) => parent.starships.includes(id)),\n ),\n ) as unknown as AsyncIterable<any>,\n // this ensures it's a awaitable iterator\n\n async (item) => {\n await new Promise((resolve) => setTimeout(resolve, 1));\n return item;\n },\n );\n};\n\nfunction people(key: string): GraphQLFieldResolver<any, any, any> {\n return (parent, _args, { models }) => {\n return models\n .getData(\"/people\")\n .filter(({ id }: { id: any }) => parent[key].includes(id));\n };\n}\n\nconst vehicles: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/vehicles\")\n .filter(({ id }: { id: any }) => parent.vehicles.includes(id));\n};\n\nconst planets: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/planets\")\n .filter(({ id }: { id: any }) => parent.planets.includes(id));\n};\n\nconst species: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/species\")\n .filter(({ id }: { id: any }) => parent.species.includes(id));\n};\nconst homeworld: GraphQLFieldResolver<any, any, any> = (\n parent,\n _args,\n { models },\n) => {\n return models\n .getData(\"/planets\")\n .find((planet: any) => planet.id === parent.homeworld);\n};\n\nconst person: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/people\").find((person: any) => person.id === id);\n};\n\nconst planet: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/planets\").find((planet: any) => planet.id === id);\n};\n\nconst film: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/films\").find((film: any) => film.id === id);\n};\n\nconst starship: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models\n .getData(\"/starships\")\n .find((starship: any) => starship.id === id);\n};\n\nconst transport: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models\n .getData(\"/transport\")\n .find((transport: any) => transport.id === id);\n};\n\nconst vehicle: GraphQLFieldResolver<any, any, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/vehicles\").find((vehicle: any) => vehicle.id === id);\n};\n\nconst searchPeopleByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/people\")\n .filter((person: any) => new RegExp(search, \"i\").test(person.name));\n};\n\nconst searchPlanetsByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/planets\")\n .filter((planet: any) => new RegExp(search, \"i\").test(planet.name));\n};\n\nconst searchFilmsByTitle: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/films\")\n .filter((film: any) => new RegExp(search, \"i\").test(film.title));\n};\n\nconst searchSpeciesByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/species\")\n .filter((species: any) => new RegExp(search, \"i\").test(species.name));\n};\n\nconst searchStarshipsByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/starships\")\n .filter((starship: any) => new RegExp(search, \"i\").test(starship.name));\n};\n\nconst searchVehiclesByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/vehicles\")\n .filter((vehicle: any) => new RegExp(search, \"i\").test(vehicle.name));\n};\n\nconst emitPersons: GraphQLFieldResolver<any, any, any> = async function (\n parent,\n { limit, throwError },\n { models },\n) {\n if (throwError) {\n throw new Error(\"error\");\n return;\n }\n const persons = await models.getData(\"/people\");\n const personsLimit = Math.min(limit, persons.length);\n const output: any = { length: personsLimit };\n for (let i = 0; i < personsLimit; i++) {\n output[i] = { emitPersons: persons[i] };\n }\n return createAsyncIterator(output);\n};\n\nconst searchTransportsByName: GraphQLFieldResolver<any, any, any> = (\n parent,\n { search },\n { models },\n) => {\n return models\n .getData(\"/transport\")\n .filter((transport: any) => new RegExp(search, \"i\").test(transport.name));\n};\n\nconst resolvers: IExecutableSchemaDefinition[\"resolvers\"] = {\n SearchResult: {\n __resolveType(parent: any) {\n return parent.__typename;\n },\n },\n Subscription: {\n emitPersons: {\n subscribe: emitPersons,\n },\n nonNullWithError: {\n subscribe() {\n throw new Error(\"Subscribe error\");\n },\n },\n nonNullWithErrorEvent: {\n subscribe() {\n return createAsyncIterator([\"foo\"]);\n },\n resolve() {\n throw new Error(\"Subscription event error\");\n },\n },\n nonNullWithNull: {\n subscribe() {\n return createAsyncIterator([\"foo\"]);\n },\n resolve() {},\n },\n },\n Query: {\n search(parent, { search }, { models }, info) {\n const result = [\n ...searchFilmsByTitle(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Film\") && r,\n ),\n ...searchPeopleByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Person\") && r,\n ),\n ...searchPlanetsByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Planet\") && r,\n ),\n ...searchSpeciesByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Species\") && r,\n ),\n ...searchStarshipsByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Starship\") && r,\n ),\n ...searchTransportsByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Transport\") && r,\n ),\n ...searchVehiclesByName(parent, { search }, { models }, info).map(\n (r: any) => (r.__typename = \"Vehicle\") && r,\n ),\n ];\n\n return result;\n },\n\n node(parent, args, context, info) {\n let result;\n switch (args.nodeType) {\n case \"Person\": {\n result = person(parent, args, context, info);\n break;\n }\n case \"Starship\": {\n result = starship(parent, args, context, info);\n break;\n }\n case \"Transport\": {\n result = transport(parent, args, context, info);\n break;\n }\n case \"Species\": {\n result = species(parent, args, context, info);\n break;\n }\n case \"Vehicle\": {\n result = vehicle(parent, args, context, info);\n break;\n }\n case \"Planet\": {\n result = planet(parent, args, context, info);\n break;\n }\n case \"Film\": {\n result = film(parent, args, context, info);\n break;\n }\n default:\n throw new Error(`Invalid node type ${args.nodeType}`);\n }\n return {\n ...result,\n __typename: args.nodeType,\n };\n },\n\n person,\n planet,\n film,\n transport,\n starship,\n vehicle,\n searchPeopleByName,\n searchStarshipsByName,\n searchTransportsByName,\n searchSpeciesByName,\n searchVehiclesByName,\n searchPlanetsByName,\n searchFilmsByTitle,\n\n allStarships(_parent, _args, { models }) {\n return models.getData(\"/starships\");\n },\n allFilms(_parent, _args, { models }) {\n return models.getData(\"/films\");\n },\n allPeople(_parent, _args, { models }) {\n return models.getData(\"/people\");\n },\n allPlanets(_parent, _args, { models }) {\n return models.getData(\"/planets\");\n },\n allSpecies(_parent, _args, { models }) {\n return models.getData(\"/species\");\n },\n allTransports(_parent, _args, { models }) {\n return models.getData(\"/transport\");\n },\n advancedDefaultInput(_parent, args) {\n return JSON.stringify(args);\n },\n multiArger(_parent, args) {\n return JSON.stringify(args);\n },\n nonNullWithError() {\n throw new Error(\"Query error\");\n },\n nonNullWithNull() {},\n },\n Film: {\n starships,\n vehicles,\n planets,\n characters: people(\"characters\"),\n species,\n },\n Starship: {\n MGLT: (starship) => +starship.MGLT,\n hyperdrive_rating: (starship) => +starship.hyperdrive_rating,\n cargo_capacity: (starship) => +starship.cargo_capacity,\n passengers: (starship) => +starship.passengers,\n max_atmosphering_speed: (starship) => +starship.max_atmosphering_speed,\n length: (starship) => +starship.length,\n cost_in_credits: (starship) => +starship.cost_in_credits,\n pilots: people(\"pilots\"),\n films,\n },\n Person: {\n height: (pilot) => +pilot.height,\n mass: (pilot) => +pilot.mass,\n starships,\n homeworld,\n films,\n bubblingError: () => {\n throw new Error(\"Bubbling!\");\n },\n bubblingListError: () => {\n return forAwaitEach([1, 2, 3], async (item) => {\n await new Promise((resolve) => setTimeout(resolve, 0));\n if (item === 2) {\n throw new Error(\"Bubbling in list!\");\n }\n return item;\n });\n },\n },\n Vehicle: {\n cargo_capacity: (vehicle) => +vehicle.cargo_capacity,\n passengers: (vehicle) => +vehicle.passengers,\n max_atmosphering_speed: (vehicle) => +vehicle.max_atmosphering_speed,\n crew: (vehicle) => forceNumber(vehicle.crew),\n length: (vehicle) => +vehicle.length,\n cost_in_credits: (vehicle) => +vehicle.cost_in_credits,\n pilots: people(\"pilots\"),\n },\n Planet: {\n diameter: (planet) => +planet.diameter,\n rotation_period: (planet) => +planet.rotation_period,\n orbital_period: (planet) => +planet.orbital_period,\n population: (planet) => +planet.population,\n residents: people(\"residents\"),\n films,\n },\n Species: {\n average_lifespan: (species) => +species.average_lifespan,\n average_height: (species) => +species.average_height,\n homeworld,\n people: people(\"people\"),\n },\n Transport: {\n cargo_capacity: (vehicle) => +vehicle.cargo_capacity,\n passengers: (vehicle) => +vehicle.passengers,\n max_atmosphering_speed: (vehicle) => +vehicle.max_atmosphering_speed,\n crew: (vehicle) => forceNumber(vehicle.crew),\n length: (vehicle) => +vehicle.length,\n cost_in_credits: (vehicle) => +vehicle.cost_in_credits,\n },\n};\n\nconst forceNumber = (i: string) =>\n Number(i.split(\",\").join(\"\").split(\"-\")[0]) || -1;\n\nexport default resolvers;\n"],
5
+ "mappings": "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",
6
6
  "names": ["planet", "person", "film", "starship", "transport", "vehicle", "species"]
7
7
  }
@@ -0,0 +1,18 @@
1
+ import type { DeferUsage, FieldDetails } from "./collectFields.js";
2
+ export type DeferUsageSet = ReadonlySet<DeferUsage>;
3
+ export interface FieldGroup {
4
+ fields: ReadonlyArray<FieldDetails>;
5
+ deferUsages?: DeferUsageSet | undefined;
6
+ knownDeferUsages?: DeferUsageSet | undefined;
7
+ }
8
+ export type GroupedFieldSet = Map<string, FieldGroup>;
9
+ export interface NewGroupedFieldSetDetails {
10
+ groupedFieldSet: GroupedFieldSet;
11
+ shouldInitiateDefer: boolean;
12
+ }
13
+ export declare function buildFieldPlan(fields: Map<string, ReadonlyArray<FieldDetails>>, parentDeferUsages?: DeferUsageSet, knownDeferUsages?: DeferUsageSet): {
14
+ groupedFieldSet: GroupedFieldSet;
15
+ newGroupedFieldSetDetailsMap: Map<DeferUsageSet, NewGroupedFieldSetDetails>;
16
+ newDeferUsages: ReadonlyArray<DeferUsage>;
17
+ };
18
+ //# sourceMappingURL=buildFieldPlan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildFieldPlan.d.ts","sourceRoot":"","sources":["../src/buildFieldPlan.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAEpD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,gBAAgB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEtD,MAAM,WAAW,yBAAyB;IACxC,eAAe,EAAE,eAAe,CAAC;IACjC,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,EAChD,iBAAiB,GAAE,aAAqC,EACxD,gBAAgB,GAAE,aAAqC,GACtD;IACD,eAAe,EAAE,eAAe,CAAC;IACjC,4BAA4B,EAAE,GAAG,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC;IAC5E,cAAc,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CAC3C,CA8HA"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var buildFieldPlan_exports = {};
20
+ __export(buildFieldPlan_exports, {
21
+ buildFieldPlan: () => buildFieldPlan
22
+ });
23
+ module.exports = __toCommonJS(buildFieldPlan_exports);
24
+ var import_getBySet = require("./jsutils/getBySet");
25
+ var import_isSameSet = require("./jsutils/isSameSet");
26
+ function buildFieldPlan(fields, parentDeferUsages = /* @__PURE__ */ new Set(), knownDeferUsages = /* @__PURE__ */ new Set()) {
27
+ const newDeferUsages = /* @__PURE__ */ new Set();
28
+ const newKnownDeferUsages = new Set(knownDeferUsages);
29
+ const groupedFieldSet = /* @__PURE__ */ new Map();
30
+ const newGroupedFieldSetDetailsMap = /* @__PURE__ */ new Map();
31
+ const map = /* @__PURE__ */ new Map();
32
+ for (const [responseKey, fieldDetailsList] of fields) {
33
+ const deferUsageSet = /* @__PURE__ */ new Set();
34
+ let inOriginalResult = false;
35
+ for (const fieldDetails of fieldDetailsList) {
36
+ const deferUsage = fieldDetails.deferUsage;
37
+ if (deferUsage === void 0) {
38
+ inOriginalResult = true;
39
+ continue;
40
+ }
41
+ deferUsageSet.add(deferUsage);
42
+ if (!knownDeferUsages.has(deferUsage)) {
43
+ newDeferUsages.add(deferUsage);
44
+ newKnownDeferUsages.add(deferUsage);
45
+ }
46
+ }
47
+ if (inOriginalResult) {
48
+ deferUsageSet.clear();
49
+ } else {
50
+ deferUsageSet.forEach((deferUsage) => {
51
+ const ancestors = getAncestors(deferUsage);
52
+ for (const ancestor of ancestors) {
53
+ if (deferUsageSet.has(ancestor)) {
54
+ deferUsageSet.delete(deferUsage);
55
+ }
56
+ }
57
+ });
58
+ }
59
+ map.set(responseKey, { deferUsageSet, fieldDetailsList });
60
+ }
61
+ for (const [responseKey, { deferUsageSet, fieldDetailsList }] of map) {
62
+ if ((0, import_isSameSet.isSameSet)(deferUsageSet, parentDeferUsages)) {
63
+ let fieldGroup2 = groupedFieldSet.get(responseKey);
64
+ if (fieldGroup2 === void 0) {
65
+ fieldGroup2 = {
66
+ fields: [],
67
+ deferUsages: deferUsageSet,
68
+ knownDeferUsages: newKnownDeferUsages
69
+ };
70
+ groupedFieldSet.set(responseKey, fieldGroup2);
71
+ }
72
+ fieldGroup2.fields.push(...fieldDetailsList);
73
+ continue;
74
+ }
75
+ let newGroupedFieldSetDetails = (0, import_getBySet.getBySet)(
76
+ newGroupedFieldSetDetailsMap,
77
+ deferUsageSet
78
+ );
79
+ let newGroupedFieldSet;
80
+ if (newGroupedFieldSetDetails === void 0) {
81
+ newGroupedFieldSet = /* @__PURE__ */ new Map();
82
+ newGroupedFieldSetDetails = {
83
+ groupedFieldSet: newGroupedFieldSet,
84
+ shouldInitiateDefer: Array.from(deferUsageSet).some(
85
+ (deferUsage) => !parentDeferUsages.has(deferUsage)
86
+ )
87
+ };
88
+ newGroupedFieldSetDetailsMap.set(
89
+ deferUsageSet,
90
+ newGroupedFieldSetDetails
91
+ );
92
+ } else {
93
+ newGroupedFieldSet = newGroupedFieldSetDetails.groupedFieldSet;
94
+ }
95
+ let fieldGroup = newGroupedFieldSet.get(responseKey);
96
+ if (fieldGroup === void 0) {
97
+ fieldGroup = {
98
+ fields: [],
99
+ deferUsages: deferUsageSet,
100
+ knownDeferUsages: newKnownDeferUsages
101
+ };
102
+ newGroupedFieldSet.set(responseKey, fieldGroup);
103
+ }
104
+ fieldGroup.fields.push(...fieldDetailsList);
105
+ }
106
+ return {
107
+ groupedFieldSet,
108
+ newGroupedFieldSetDetailsMap,
109
+ newDeferUsages: Array.from(newDeferUsages)
110
+ };
111
+ }
112
+ function getAncestors(deferUsage) {
113
+ const ancestors = [];
114
+ let parentDeferUsage = deferUsage.parentDeferUsage;
115
+ while (parentDeferUsage !== void 0) {
116
+ ancestors.unshift(parentDeferUsage);
117
+ parentDeferUsage = parentDeferUsage.parentDeferUsage;
118
+ }
119
+ return ancestors;
120
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/buildFieldPlan.ts"],
4
+ "sourcesContent": ["import { getBySet } from \"./jsutils/getBySet\";\nimport { isSameSet } from \"./jsutils/isSameSet\";\n\nimport type { DeferUsage, FieldDetails } from \"./collectFields.js\";\n\nexport type DeferUsageSet = ReadonlySet<DeferUsage>;\n\nexport interface FieldGroup {\n fields: ReadonlyArray<FieldDetails>;\n deferUsages?: DeferUsageSet | undefined;\n knownDeferUsages?: DeferUsageSet | undefined;\n}\n\nexport type GroupedFieldSet = Map<string, FieldGroup>;\n\nexport interface NewGroupedFieldSetDetails {\n groupedFieldSet: GroupedFieldSet;\n shouldInitiateDefer: boolean;\n}\n\nexport function buildFieldPlan(\n fields: Map<string, ReadonlyArray<FieldDetails>>,\n parentDeferUsages: DeferUsageSet = new Set<DeferUsage>(),\n knownDeferUsages: DeferUsageSet = new Set<DeferUsage>(),\n): {\n groupedFieldSet: GroupedFieldSet;\n newGroupedFieldSetDetailsMap: Map<DeferUsageSet, NewGroupedFieldSetDetails>;\n newDeferUsages: ReadonlyArray<DeferUsage>;\n} {\n const newDeferUsages: Set<DeferUsage> = new Set<DeferUsage>();\n const newKnownDeferUsages = new Set<DeferUsage>(knownDeferUsages);\n\n const groupedFieldSet = new Map<\n string,\n {\n fields: Array<FieldDetails>;\n deferUsages: DeferUsageSet;\n knownDeferUsages: DeferUsageSet;\n }\n >();\n\n const newGroupedFieldSetDetailsMap = new Map<\n DeferUsageSet,\n {\n groupedFieldSet: Map<\n string,\n {\n fields: Array<FieldDetails>;\n deferUsages: DeferUsageSet;\n knownDeferUsages: DeferUsageSet;\n }\n >;\n shouldInitiateDefer: boolean;\n }\n >();\n\n const map = new Map<\n string,\n {\n deferUsageSet: DeferUsageSet;\n fieldDetailsList: ReadonlyArray<FieldDetails>;\n }\n >();\n\n for (const [responseKey, fieldDetailsList] of fields) {\n const deferUsageSet = new Set<DeferUsage>();\n let inOriginalResult = false;\n for (const fieldDetails of fieldDetailsList) {\n const deferUsage = fieldDetails.deferUsage;\n if (deferUsage === undefined) {\n inOriginalResult = true;\n continue;\n }\n deferUsageSet.add(deferUsage);\n if (!knownDeferUsages.has(deferUsage)) {\n newDeferUsages.add(deferUsage);\n newKnownDeferUsages.add(deferUsage);\n }\n }\n if (inOriginalResult) {\n deferUsageSet.clear();\n } else {\n deferUsageSet.forEach((deferUsage) => {\n const ancestors = getAncestors(deferUsage);\n for (const ancestor of ancestors) {\n if (deferUsageSet.has(ancestor)) {\n deferUsageSet.delete(deferUsage);\n }\n }\n });\n }\n map.set(responseKey, { deferUsageSet, fieldDetailsList });\n }\n\n for (const [responseKey, { deferUsageSet, fieldDetailsList }] of map) {\n if (isSameSet(deferUsageSet, parentDeferUsages)) {\n let fieldGroup = groupedFieldSet.get(responseKey);\n if (fieldGroup === undefined) {\n fieldGroup = {\n fields: [],\n deferUsages: deferUsageSet,\n knownDeferUsages: newKnownDeferUsages,\n };\n groupedFieldSet.set(responseKey, fieldGroup);\n }\n fieldGroup.fields.push(...fieldDetailsList);\n continue;\n }\n\n let newGroupedFieldSetDetails = getBySet(\n newGroupedFieldSetDetailsMap,\n deferUsageSet,\n );\n let newGroupedFieldSet;\n if (newGroupedFieldSetDetails === undefined) {\n newGroupedFieldSet = new Map<\n string,\n {\n fields: Array<FieldDetails>;\n deferUsages: DeferUsageSet;\n knownDeferUsages: DeferUsageSet;\n }\n >();\n\n newGroupedFieldSetDetails = {\n groupedFieldSet: newGroupedFieldSet,\n shouldInitiateDefer: Array.from(deferUsageSet).some(\n (deferUsage) => !parentDeferUsages.has(deferUsage),\n ),\n };\n newGroupedFieldSetDetailsMap.set(\n deferUsageSet,\n newGroupedFieldSetDetails,\n );\n } else {\n newGroupedFieldSet = newGroupedFieldSetDetails.groupedFieldSet;\n }\n let fieldGroup = newGroupedFieldSet.get(responseKey);\n if (fieldGroup === undefined) {\n fieldGroup = {\n fields: [],\n deferUsages: deferUsageSet,\n knownDeferUsages: newKnownDeferUsages,\n };\n newGroupedFieldSet.set(responseKey, fieldGroup);\n }\n fieldGroup.fields.push(...fieldDetailsList);\n }\n\n return {\n groupedFieldSet,\n newGroupedFieldSetDetailsMap,\n newDeferUsages: Array.from(newDeferUsages),\n };\n}\n\nfunction getAncestors(deferUsage: DeferUsage): ReadonlyArray<DeferUsage> {\n const ancestors: Array<DeferUsage> = [];\n let parentDeferUsage: DeferUsage | undefined = deferUsage.parentDeferUsage;\n while (parentDeferUsage !== undefined) {\n ancestors.unshift(parentDeferUsage);\n parentDeferUsage = parentDeferUsage.parentDeferUsage;\n }\n return ancestors;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAyB;AACzB,uBAA0B;AAmBnB,SAAS,eACd,QACA,oBAAmC,oBAAI,IAAgB,GACvD,mBAAkC,oBAAI,IAAgB,GAKtD;AACA,QAAM,iBAAkC,oBAAI,IAAgB;AAC5D,QAAM,sBAAsB,IAAI,IAAgB,gBAAgB;AAEhE,QAAM,kBAAkB,oBAAI,IAO1B;AAEF,QAAM,+BAA+B,oBAAI,IAavC;AAEF,QAAM,MAAM,oBAAI,IAMd;AAEF,aAAW,CAAC,aAAa,gBAAgB,KAAK,QAAQ;AACpD,UAAM,gBAAgB,oBAAI,IAAgB;AAC1C,QAAI,mBAAmB;AACvB,eAAW,gBAAgB,kBAAkB;AAC3C,YAAM,aAAa,aAAa;AAChC,UAAI,eAAe,QAAW;AAC5B,2BAAmB;AACnB;AAAA,MACF;AACA,oBAAc,IAAI,UAAU;AAC5B,UAAI,CAAC,iBAAiB,IAAI,UAAU,GAAG;AACrC,uBAAe,IAAI,UAAU;AAC7B,4BAAoB,IAAI,UAAU;AAAA,MACpC;AAAA,IACF;AACA,QAAI,kBAAkB;AACpB,oBAAc,MAAM;AAAA,IACtB,OAAO;AACL,oBAAc,QAAQ,CAAC,eAAe;AACpC,cAAM,YAAY,aAAa,UAAU;AACzC,mBAAW,YAAY,WAAW;AAChC,cAAI,cAAc,IAAI,QAAQ,GAAG;AAC/B,0BAAc,OAAO,UAAU;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AACA,QAAI,IAAI,aAAa,EAAE,eAAe,iBAAiB,CAAC;AAAA,EAC1D;AAEA,aAAW,CAAC,aAAa,EAAE,eAAe,iBAAiB,CAAC,KAAK,KAAK;AACpE,YAAI,4BAAU,eAAe,iBAAiB,GAAG;AAC/C,UAAIA,cAAa,gBAAgB,IAAI,WAAW;AAChD,UAAIA,gBAAe,QAAW;AAC5B,QAAAA,cAAa;AAAA,UACX,QAAQ,CAAC;AAAA,UACT,aAAa;AAAA,UACb,kBAAkB;AAAA,QACpB;AACA,wBAAgB,IAAI,aAAaA,WAAU;AAAA,MAC7C;AACA,MAAAA,YAAW,OAAO,KAAK,GAAG,gBAAgB;AAC1C;AAAA,IACF;AAEA,QAAI,gCAA4B;AAAA,MAC9B;AAAA,MACA;AAAA,IACF;AACA,QAAI;AACJ,QAAI,8BAA8B,QAAW;AAC3C,2BAAqB,oBAAI,IAOvB;AAEF,kCAA4B;AAAA,QAC1B,iBAAiB;AAAA,QACjB,qBAAqB,MAAM,KAAK,aAAa,EAAE;AAAA,UAC7C,CAAC,eAAe,CAAC,kBAAkB,IAAI,UAAU;AAAA,QACnD;AAAA,MACF;AACA,mCAA6B;AAAA,QAC3B;AAAA,QACA;AAAA,MACF;AAAA,IACF,OAAO;AACL,2BAAqB,0BAA0B;AAAA,IACjD;AACA,QAAI,aAAa,mBAAmB,IAAI,WAAW;AACnD,QAAI,eAAe,QAAW;AAC5B,mBAAa;AAAA,QACX,QAAQ,CAAC;AAAA,QACT,aAAa;AAAA,QACb,kBAAkB;AAAA,MACpB;AACA,yBAAmB,IAAI,aAAa,UAAU;AAAA,IAChD;AACA,eAAW,OAAO,KAAK,GAAG,gBAAgB;AAAA,EAC5C;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,gBAAgB,MAAM,KAAK,cAAc;AAAA,EAC3C;AACF;AAEA,SAAS,aAAa,YAAmD;AACvE,QAAM,YAA+B,CAAC;AACtC,MAAI,mBAA2C,WAAW;AAC1D,SAAO,qBAAqB,QAAW;AACrC,cAAU,QAAQ,gBAAgB;AAClC,uBAAmB,iBAAiB;AAAA,EACtC;AACA,SAAO;AACT;",
6
+ "names": ["fieldGroup"]
7
+ }
@@ -0,0 +1,101 @@
1
+ // src/buildFieldPlan.ts
2
+ import { getBySet } from "./jsutils/getBySet.mjs";
3
+ import { isSameSet } from "./jsutils/isSameSet.mjs";
4
+ function buildFieldPlan(fields, parentDeferUsages = /* @__PURE__ */ new Set(), knownDeferUsages = /* @__PURE__ */ new Set()) {
5
+ const newDeferUsages = /* @__PURE__ */ new Set();
6
+ const newKnownDeferUsages = new Set(knownDeferUsages);
7
+ const groupedFieldSet = /* @__PURE__ */ new Map();
8
+ const newGroupedFieldSetDetailsMap = /* @__PURE__ */ new Map();
9
+ const map = /* @__PURE__ */ new Map();
10
+ for (const [responseKey, fieldDetailsList] of fields) {
11
+ const deferUsageSet = /* @__PURE__ */ new Set();
12
+ let inOriginalResult = false;
13
+ for (const fieldDetails of fieldDetailsList) {
14
+ const deferUsage = fieldDetails.deferUsage;
15
+ if (deferUsage === void 0) {
16
+ inOriginalResult = true;
17
+ continue;
18
+ }
19
+ deferUsageSet.add(deferUsage);
20
+ if (!knownDeferUsages.has(deferUsage)) {
21
+ newDeferUsages.add(deferUsage);
22
+ newKnownDeferUsages.add(deferUsage);
23
+ }
24
+ }
25
+ if (inOriginalResult) {
26
+ deferUsageSet.clear();
27
+ } else {
28
+ deferUsageSet.forEach((deferUsage) => {
29
+ const ancestors = getAncestors(deferUsage);
30
+ for (const ancestor of ancestors) {
31
+ if (deferUsageSet.has(ancestor)) {
32
+ deferUsageSet.delete(deferUsage);
33
+ }
34
+ }
35
+ });
36
+ }
37
+ map.set(responseKey, { deferUsageSet, fieldDetailsList });
38
+ }
39
+ for (const [responseKey, { deferUsageSet, fieldDetailsList }] of map) {
40
+ if (isSameSet(deferUsageSet, parentDeferUsages)) {
41
+ let fieldGroup2 = groupedFieldSet.get(responseKey);
42
+ if (fieldGroup2 === void 0) {
43
+ fieldGroup2 = {
44
+ fields: [],
45
+ deferUsages: deferUsageSet,
46
+ knownDeferUsages: newKnownDeferUsages
47
+ };
48
+ groupedFieldSet.set(responseKey, fieldGroup2);
49
+ }
50
+ fieldGroup2.fields.push(...fieldDetailsList);
51
+ continue;
52
+ }
53
+ let newGroupedFieldSetDetails = getBySet(
54
+ newGroupedFieldSetDetailsMap,
55
+ deferUsageSet
56
+ );
57
+ let newGroupedFieldSet;
58
+ if (newGroupedFieldSetDetails === void 0) {
59
+ newGroupedFieldSet = /* @__PURE__ */ new Map();
60
+ newGroupedFieldSetDetails = {
61
+ groupedFieldSet: newGroupedFieldSet,
62
+ shouldInitiateDefer: Array.from(deferUsageSet).some(
63
+ (deferUsage) => !parentDeferUsages.has(deferUsage)
64
+ )
65
+ };
66
+ newGroupedFieldSetDetailsMap.set(
67
+ deferUsageSet,
68
+ newGroupedFieldSetDetails
69
+ );
70
+ } else {
71
+ newGroupedFieldSet = newGroupedFieldSetDetails.groupedFieldSet;
72
+ }
73
+ let fieldGroup = newGroupedFieldSet.get(responseKey);
74
+ if (fieldGroup === void 0) {
75
+ fieldGroup = {
76
+ fields: [],
77
+ deferUsages: deferUsageSet,
78
+ knownDeferUsages: newKnownDeferUsages
79
+ };
80
+ newGroupedFieldSet.set(responseKey, fieldGroup);
81
+ }
82
+ fieldGroup.fields.push(...fieldDetailsList);
83
+ }
84
+ return {
85
+ groupedFieldSet,
86
+ newGroupedFieldSetDetailsMap,
87
+ newDeferUsages: Array.from(newDeferUsages)
88
+ };
89
+ }
90
+ function getAncestors(deferUsage) {
91
+ const ancestors = [];
92
+ let parentDeferUsage = deferUsage.parentDeferUsage;
93
+ while (parentDeferUsage !== void 0) {
94
+ ancestors.unshift(parentDeferUsage);
95
+ parentDeferUsage = parentDeferUsage.parentDeferUsage;
96
+ }
97
+ return ancestors;
98
+ }
99
+ export {
100
+ buildFieldPlan
101
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/buildFieldPlan.ts"],
4
+ "sourcesContent": ["import { getBySet } from \"./jsutils/getBySet\";\nimport { isSameSet } from \"./jsutils/isSameSet\";\n\nimport type { DeferUsage, FieldDetails } from \"./collectFields.js\";\n\nexport type DeferUsageSet = ReadonlySet<DeferUsage>;\n\nexport interface FieldGroup {\n fields: ReadonlyArray<FieldDetails>;\n deferUsages?: DeferUsageSet | undefined;\n knownDeferUsages?: DeferUsageSet | undefined;\n}\n\nexport type GroupedFieldSet = Map<string, FieldGroup>;\n\nexport interface NewGroupedFieldSetDetails {\n groupedFieldSet: GroupedFieldSet;\n shouldInitiateDefer: boolean;\n}\n\nexport function buildFieldPlan(\n fields: Map<string, ReadonlyArray<FieldDetails>>,\n parentDeferUsages: DeferUsageSet = new Set<DeferUsage>(),\n knownDeferUsages: DeferUsageSet = new Set<DeferUsage>(),\n): {\n groupedFieldSet: GroupedFieldSet;\n newGroupedFieldSetDetailsMap: Map<DeferUsageSet, NewGroupedFieldSetDetails>;\n newDeferUsages: ReadonlyArray<DeferUsage>;\n} {\n const newDeferUsages: Set<DeferUsage> = new Set<DeferUsage>();\n const newKnownDeferUsages = new Set<DeferUsage>(knownDeferUsages);\n\n const groupedFieldSet = new Map<\n string,\n {\n fields: Array<FieldDetails>;\n deferUsages: DeferUsageSet;\n knownDeferUsages: DeferUsageSet;\n }\n >();\n\n const newGroupedFieldSetDetailsMap = new Map<\n DeferUsageSet,\n {\n groupedFieldSet: Map<\n string,\n {\n fields: Array<FieldDetails>;\n deferUsages: DeferUsageSet;\n knownDeferUsages: DeferUsageSet;\n }\n >;\n shouldInitiateDefer: boolean;\n }\n >();\n\n const map = new Map<\n string,\n {\n deferUsageSet: DeferUsageSet;\n fieldDetailsList: ReadonlyArray<FieldDetails>;\n }\n >();\n\n for (const [responseKey, fieldDetailsList] of fields) {\n const deferUsageSet = new Set<DeferUsage>();\n let inOriginalResult = false;\n for (const fieldDetails of fieldDetailsList) {\n const deferUsage = fieldDetails.deferUsage;\n if (deferUsage === undefined) {\n inOriginalResult = true;\n continue;\n }\n deferUsageSet.add(deferUsage);\n if (!knownDeferUsages.has(deferUsage)) {\n newDeferUsages.add(deferUsage);\n newKnownDeferUsages.add(deferUsage);\n }\n }\n if (inOriginalResult) {\n deferUsageSet.clear();\n } else {\n deferUsageSet.forEach((deferUsage) => {\n const ancestors = getAncestors(deferUsage);\n for (const ancestor of ancestors) {\n if (deferUsageSet.has(ancestor)) {\n deferUsageSet.delete(deferUsage);\n }\n }\n });\n }\n map.set(responseKey, { deferUsageSet, fieldDetailsList });\n }\n\n for (const [responseKey, { deferUsageSet, fieldDetailsList }] of map) {\n if (isSameSet(deferUsageSet, parentDeferUsages)) {\n let fieldGroup = groupedFieldSet.get(responseKey);\n if (fieldGroup === undefined) {\n fieldGroup = {\n fields: [],\n deferUsages: deferUsageSet,\n knownDeferUsages: newKnownDeferUsages,\n };\n groupedFieldSet.set(responseKey, fieldGroup);\n }\n fieldGroup.fields.push(...fieldDetailsList);\n continue;\n }\n\n let newGroupedFieldSetDetails = getBySet(\n newGroupedFieldSetDetailsMap,\n deferUsageSet,\n );\n let newGroupedFieldSet;\n if (newGroupedFieldSetDetails === undefined) {\n newGroupedFieldSet = new Map<\n string,\n {\n fields: Array<FieldDetails>;\n deferUsages: DeferUsageSet;\n knownDeferUsages: DeferUsageSet;\n }\n >();\n\n newGroupedFieldSetDetails = {\n groupedFieldSet: newGroupedFieldSet,\n shouldInitiateDefer: Array.from(deferUsageSet).some(\n (deferUsage) => !parentDeferUsages.has(deferUsage),\n ),\n };\n newGroupedFieldSetDetailsMap.set(\n deferUsageSet,\n newGroupedFieldSetDetails,\n );\n } else {\n newGroupedFieldSet = newGroupedFieldSetDetails.groupedFieldSet;\n }\n let fieldGroup = newGroupedFieldSet.get(responseKey);\n if (fieldGroup === undefined) {\n fieldGroup = {\n fields: [],\n deferUsages: deferUsageSet,\n knownDeferUsages: newKnownDeferUsages,\n };\n newGroupedFieldSet.set(responseKey, fieldGroup);\n }\n fieldGroup.fields.push(...fieldDetailsList);\n }\n\n return {\n groupedFieldSet,\n newGroupedFieldSetDetailsMap,\n newDeferUsages: Array.from(newDeferUsages),\n };\n}\n\nfunction getAncestors(deferUsage: DeferUsage): ReadonlyArray<DeferUsage> {\n const ancestors: Array<DeferUsage> = [];\n let parentDeferUsage: DeferUsage | undefined = deferUsage.parentDeferUsage;\n while (parentDeferUsage !== undefined) {\n ancestors.unshift(parentDeferUsage);\n parentDeferUsage = parentDeferUsage.parentDeferUsage;\n }\n return ancestors;\n}\n"],
5
+ "mappings": ";AAAA,SAAS,gBAAgB;AACzB,SAAS,iBAAiB;AAmBnB,SAAS,eACd,QACA,oBAAmC,oBAAI,IAAgB,GACvD,mBAAkC,oBAAI,IAAgB,GAKtD;AACA,QAAM,iBAAkC,oBAAI,IAAgB;AAC5D,QAAM,sBAAsB,IAAI,IAAgB,gBAAgB;AAEhE,QAAM,kBAAkB,oBAAI,IAO1B;AAEF,QAAM,+BAA+B,oBAAI,IAavC;AAEF,QAAM,MAAM,oBAAI,IAMd;AAEF,aAAW,CAAC,aAAa,gBAAgB,KAAK,QAAQ;AACpD,UAAM,gBAAgB,oBAAI,IAAgB;AAC1C,QAAI,mBAAmB;AACvB,eAAW,gBAAgB,kBAAkB;AAC3C,YAAM,aAAa,aAAa;AAChC,UAAI,eAAe,QAAW;AAC5B,2BAAmB;AACnB;AAAA,MACF;AACA,oBAAc,IAAI,UAAU;AAC5B,UAAI,CAAC,iBAAiB,IAAI,UAAU,GAAG;AACrC,uBAAe,IAAI,UAAU;AAC7B,4BAAoB,IAAI,UAAU;AAAA,MACpC;AAAA,IACF;AACA,QAAI,kBAAkB;AACpB,oBAAc,MAAM;AAAA,IACtB,OAAO;AACL,oBAAc,QAAQ,CAAC,eAAe;AACpC,cAAM,YAAY,aAAa,UAAU;AACzC,mBAAW,YAAY,WAAW;AAChC,cAAI,cAAc,IAAI,QAAQ,GAAG;AAC/B,0BAAc,OAAO,UAAU;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AACA,QAAI,IAAI,aAAa,EAAE,eAAe,iBAAiB,CAAC;AAAA,EAC1D;AAEA,aAAW,CAAC,aAAa,EAAE,eAAe,iBAAiB,CAAC,KAAK,KAAK;AACpE,QAAI,UAAU,eAAe,iBAAiB,GAAG;AAC/C,UAAIA,cAAa,gBAAgB,IAAI,WAAW;AAChD,UAAIA,gBAAe,QAAW;AAC5B,QAAAA,cAAa;AAAA,UACX,QAAQ,CAAC;AAAA,UACT,aAAa;AAAA,UACb,kBAAkB;AAAA,QACpB;AACA,wBAAgB,IAAI,aAAaA,WAAU;AAAA,MAC7C;AACA,MAAAA,YAAW,OAAO,KAAK,GAAG,gBAAgB;AAC1C;AAAA,IACF;AAEA,QAAI,4BAA4B;AAAA,MAC9B;AAAA,MACA;AAAA,IACF;AACA,QAAI;AACJ,QAAI,8BAA8B,QAAW;AAC3C,2BAAqB,oBAAI,IAOvB;AAEF,kCAA4B;AAAA,QAC1B,iBAAiB;AAAA,QACjB,qBAAqB,MAAM,KAAK,aAAa,EAAE;AAAA,UAC7C,CAAC,eAAe,CAAC,kBAAkB,IAAI,UAAU;AAAA,QACnD;AAAA,MACF;AACA,mCAA6B;AAAA,QAC3B;AAAA,QACA;AAAA,MACF;AAAA,IACF,OAAO;AACL,2BAAqB,0BAA0B;AAAA,IACjD;AACA,QAAI,aAAa,mBAAmB,IAAI,WAAW;AACnD,QAAI,eAAe,QAAW;AAC5B,mBAAa;AAAA,QACX,QAAQ,CAAC;AAAA,QACT,aAAa;AAAA,QACb,kBAAkB;AAAA,MACpB;AACA,yBAAmB,IAAI,aAAa,UAAU;AAAA,IAChD;AACA,eAAW,OAAO,KAAK,GAAG,gBAAgB;AAAA,EAC5C;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,gBAAgB,MAAM,KAAK,cAAc;AAAA,EAC3C;AACF;AAEA,SAAS,aAAa,YAAmD;AACvE,QAAM,YAA+B,CAAC;AACtC,MAAI,mBAA2C,WAAW;AAC1D,SAAO,qBAAqB,QAAW;AACrC,cAAU,QAAQ,gBAAgB;AAClC,uBAAmB,iBAAiB;AAAA,EACtC;AACA,SAAO;AACT;",
6
+ "names": ["fieldGroup"]
7
+ }
@@ -1,15 +1,26 @@
1
- import { FieldNode } from "graphql";
1
+ import { FieldNode, FragmentDefinitionNode, OperationDefinitionNode } from "graphql";
2
2
  import { ExecutionContext } from "./executeWithoutSchema";
3
- export type FieldGroup = ReadonlyArray<FieldNode>;
3
+ import { SchemaFragment } from "./types";
4
+ import { ObjMap } from "./jsutils/ObjMap";
5
+ import { FieldGroup } from "./buildFieldPlan";
6
+ export interface DeferUsage {
7
+ label: string | undefined;
8
+ parentDeferUsage: DeferUsage | undefined;
9
+ }
10
+ export interface StreamUsage {
11
+ label: string | undefined;
12
+ initialCount: number;
13
+ fieldGroup: FieldGroup;
14
+ }
15
+ export interface FieldDetails {
16
+ node: FieldNode;
17
+ deferUsage: DeferUsage | undefined;
18
+ }
4
19
  export type GroupedFieldSet = Map<string, FieldGroup>;
5
20
  export interface PatchFields {
6
21
  label: string | undefined;
7
22
  groupedFieldSet: GroupedFieldSet;
8
23
  }
9
- export interface FieldsAndPatches {
10
- groupedFieldSet: GroupedFieldSet;
11
- patches: Array<PatchFields>;
12
- }
13
24
  /**
14
25
  * Given a selectionSet, collects all of the fields and returns them.
15
26
  *
@@ -19,7 +30,7 @@ export interface FieldsAndPatches {
19
30
  *
20
31
  * @internal
21
32
  */
22
- export declare function collectFields(exeContext: ExecutionContext, runtimeTypeName: string): FieldsAndPatches;
33
+ export declare function collectFields(exeContext: ExecutionContext, runtimeTypeName: string): Map<string, ReadonlyArray<FieldDetails>>;
23
34
  /**
24
35
  * Given an array of field nodes, collects all of the subfields of the passed
25
36
  * in fields, and returns them at the end.
@@ -30,5 +41,7 @@ export declare function collectFields(exeContext: ExecutionContext, runtimeTypeN
30
41
  *
31
42
  * @internal
32
43
  */
33
- export declare function collectSubfields(exeContext: ExecutionContext, returnTypeName: string, fieldGroup: FieldGroup): FieldsAndPatches;
44
+ export declare function collectSubfields(schemaFragment: SchemaFragment, fragments: ObjMap<FragmentDefinitionNode>, variableValues: {
45
+ [variable: string]: unknown;
46
+ }, operation: OperationDefinitionNode, returnTypeName: string, fieldDetails: ReadonlyArray<FieldDetails>): Map<string, ReadonlyArray<FieldDetails>>;
34
47
  //# sourceMappingURL=collectFields.d.ts.map