@graphitation/supermassive 3.9.0 → 3.10.1
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.
- package/.eslintcache +1 -1
- package/CHANGELOG.md +10 -2
- package/lib/__testUtils__/execute.js +77 -121
- package/lib/__testUtils__/execute.js.map +1 -1
- package/lib/__testUtils__/execute.mjs +77 -124
- package/lib/__testUtils__/execute.mjs.map +1 -1
- package/lib/benchmarks/index.js +41 -63
- package/lib/benchmarks/index.js.map +1 -1
- package/lib/benchmarks/index.mjs +152 -184
- package/lib/benchmarks/index.mjs.map +1 -1
- package/lib/benchmarks/nice-benchmark.js +3 -23
- package/lib/benchmarks/nice-benchmark.js.map +1 -1
- package/lib/benchmarks/nice-benchmark.mjs +3 -24
- package/lib/benchmarks/nice-benchmark.mjs.map +1 -1
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.js +78 -68
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.js.map +1 -1
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.mjs +78 -71
- package/lib/benchmarks/swapi-schema/makeExecutableSchema.mjs.map +1 -1
- package/lib/benchmarks/swapi-schema/resolvers.js +31 -71
- package/lib/benchmarks/swapi-schema/resolvers.js.map +1 -1
- package/lib/benchmarks/swapi-schema/resolvers.mjs +31 -74
- package/lib/benchmarks/swapi-schema/resolvers.mjs.map +1 -1
- package/lib/executeWithoutSchema.js +199 -248
- package/lib/executeWithoutSchema.js.map +1 -1
- package/lib/executeWithoutSchema.mjs +199 -251
- package/lib/executeWithoutSchema.mjs.map +1 -1
- package/lib/legacyAST/addTypesToRequestDocument.js +6 -21
- package/lib/legacyAST/addTypesToRequestDocument.js.map +1 -1
- package/lib/legacyAST/addTypesToRequestDocument.mjs +6 -24
- package/lib/legacyAST/addTypesToRequestDocument.mjs.map +1 -1
- package/lib/utilities/addMinimalViableSchemaToRequestDocument.js +9 -23
- package/lib/utilities/addMinimalViableSchemaToRequestDocument.js.map +1 -1
- package/lib/utilities/addMinimalViableSchemaToRequestDocument.mjs +9 -26
- package/lib/utilities/addMinimalViableSchemaToRequestDocument.mjs.map +1 -1
- package/lib/utilities/mapAsyncIterator.js +19 -47
- package/lib/utilities/mapAsyncIterator.js.map +1 -1
- package/lib/utilities/mapAsyncIterator.mjs +19 -48
- package/lib/utilities/mapAsyncIterator.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,25 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
|
-
var __defProps = Object.defineProperties;
|
|
4
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
6
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
-
var __spreadValues = (a, b) => {
|
|
12
|
-
for (var prop in b || (b = {}))
|
|
13
|
-
if (__hasOwnProp.call(b, prop))
|
|
14
|
-
__defNormalProp(a, prop, b[prop]);
|
|
15
|
-
if (__getOwnPropSymbols)
|
|
16
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
-
if (__propIsEnum.call(b, prop))
|
|
18
|
-
__defNormalProp(a, prop, b[prop]);
|
|
19
|
-
}
|
|
20
|
-
return a;
|
|
21
|
-
};
|
|
22
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
23
6
|
var __export = (target, all) => {
|
|
24
7
|
for (var name in all)
|
|
25
8
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -33,26 +16,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
33
16
|
return to;
|
|
34
17
|
};
|
|
35
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
36
|
-
var __async = (__this, __arguments, generator) => {
|
|
37
|
-
return new Promise((resolve, reject) => {
|
|
38
|
-
var fulfilled = (value) => {
|
|
39
|
-
try {
|
|
40
|
-
step(generator.next(value));
|
|
41
|
-
} catch (e) {
|
|
42
|
-
reject(e);
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
var rejected = (value) => {
|
|
46
|
-
try {
|
|
47
|
-
step(generator.throw(value));
|
|
48
|
-
} catch (e) {
|
|
49
|
-
reject(e);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
53
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
54
|
-
});
|
|
55
|
-
};
|
|
56
19
|
var resolvers_exports = {};
|
|
57
20
|
__export(resolvers_exports, {
|
|
58
21
|
default: () => resolvers_default
|
|
@@ -68,10 +31,10 @@ const starships = (parent, _args, { models }) => {
|
|
|
68
31
|
)
|
|
69
32
|
),
|
|
70
33
|
// this ensures it's a awaitable iterator
|
|
71
|
-
(item) =>
|
|
72
|
-
|
|
34
|
+
async (item) => {
|
|
35
|
+
await new Promise((resolve) => setTimeout(resolve, 1));
|
|
73
36
|
return item;
|
|
74
|
-
}
|
|
37
|
+
}
|
|
75
38
|
);
|
|
76
39
|
};
|
|
77
40
|
function people(key) {
|
|
@@ -131,35 +94,31 @@ const searchVehiclesByName = (parent, { search }, { models }) => {
|
|
|
131
94
|
return models.getData("/vehicles").filter((vehicle2) => new RegExp(search, "i").test(vehicle2.name));
|
|
132
95
|
};
|
|
133
96
|
const emitPersons = {
|
|
134
|
-
subscribe: function(
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
return (0, import_iterall.createAsyncIterator)(output);
|
|
146
|
-
});
|
|
97
|
+
subscribe: async function(parent, { limit, throwError }, { models }) {
|
|
98
|
+
if (throwError) {
|
|
99
|
+
throw new Error("error");
|
|
100
|
+
}
|
|
101
|
+
const persons = await models.getData("/people");
|
|
102
|
+
const personsLimit = Math.min(limit, persons.length);
|
|
103
|
+
const output = [];
|
|
104
|
+
for (let i = 0; i < personsLimit; i++) {
|
|
105
|
+
output.push({ emitPersons: persons[i] });
|
|
106
|
+
}
|
|
107
|
+
return (0, import_iterall.createAsyncIterator)(output);
|
|
147
108
|
}
|
|
148
109
|
};
|
|
149
110
|
const emitPersonsV2 = {
|
|
150
|
-
subscribe: function(
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
return (0, import_iterall.createAsyncIterator)(output);
|
|
162
|
-
});
|
|
111
|
+
subscribe: async function(parent, { limit, throwError }, { models }) {
|
|
112
|
+
if (throwError) {
|
|
113
|
+
throw new Error("error");
|
|
114
|
+
}
|
|
115
|
+
const persons = await models.getData("/people");
|
|
116
|
+
const personsLimit = Math.min(limit, persons.length);
|
|
117
|
+
const output = [];
|
|
118
|
+
for (let i = 0; i < personsLimit; i++) {
|
|
119
|
+
output.push({ emitPersons: persons[i] });
|
|
120
|
+
}
|
|
121
|
+
return (0, import_iterall.createAsyncIterator)(output);
|
|
163
122
|
},
|
|
164
123
|
resolve: (parent, { emitError }) => {
|
|
165
124
|
if (emitError && parent.emitPersons.name === "R2-D2") {
|
|
@@ -248,9 +207,10 @@ const resolvers = {
|
|
|
248
207
|
default:
|
|
249
208
|
throw new Error(`Invalid node type ${args.nodeType}`);
|
|
250
209
|
}
|
|
251
|
-
return
|
|
210
|
+
return {
|
|
211
|
+
...result,
|
|
252
212
|
__typename: args.nodeType
|
|
253
|
-
}
|
|
213
|
+
};
|
|
254
214
|
},
|
|
255
215
|
person,
|
|
256
216
|
planet,
|
|
@@ -323,13 +283,13 @@ const resolvers = {
|
|
|
323
283
|
throw new Error("Bubbling!");
|
|
324
284
|
},
|
|
325
285
|
bubblingListError: () => {
|
|
326
|
-
return (0, import_iterall.forAwaitEach)([1, 2, 3], (item) =>
|
|
327
|
-
|
|
286
|
+
return (0, import_iterall.forAwaitEach)([1, 2, 3], async (item) => {
|
|
287
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
328
288
|
if (item === 2) {
|
|
329
289
|
throw new Error("Bubbling in list!");
|
|
330
290
|
}
|
|
331
291
|
return item;
|
|
332
|
-
})
|
|
292
|
+
});
|
|
333
293
|
}
|
|
334
294
|
},
|
|
335
295
|
Vehicle: {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/benchmarks/swapi-schema/resolvers.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createAsyncIterator, forAwaitEach, getAsyncIterator } from \"iterall\";\nimport { mapAsyncIterator } from \"../../utilities/mapAsyncIterator\";\nimport { FieldResolver, Resolvers } from \"../../types\";\nimport type { JsonDB } from \"node-json-db\";\n\ntype SwapiContext = { models: JsonDB };\n\nconst starships: FieldResolver<any, SwapiContext, 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): FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/people\").find((person: any) => person.id === id);\n};\n\nconst planet: FieldResolver<any, SwapiContext, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/planets\").find((planet: any) => planet.id === id);\n};\n\nconst films: FieldResolver<any, SwapiContext, any> = (\n parent,\n _args,\n { models },\n) => {\n return models.getData(\"/films\");\n};\n\nconst film: FieldResolver<any, SwapiContext, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/films\").find((film: any) => film.id === id);\n};\n\nconst starship: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/vehicles\").find((vehicle: any) => vehicle.id === id);\n};\n\nconst searchPeopleByName: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, any> = {\n subscribe: async function (parent, { limit, throwError }, { models }) {\n if (throwError) {\n throw new Error(\"error\");\n }\n const persons = await models.getData(\"/people\");\n const personsLimit = Math.min(limit, persons.length);\n const output = [];\n for (let i = 0; i < personsLimit; i++) {\n output.push({ emitPersons: persons[i] });\n }\n return createAsyncIterator(output);\n },\n};\n\nconst emitPersonsV2: FieldResolver<any, SwapiContext, any> = {\n subscribe: async function (parent, { limit, throwError }, { models }) {\n if (throwError) {\n throw new Error(\"error\");\n }\n const persons = await models.getData(\"/people\");\n const personsLimit = Math.min(limit, persons.length);\n const output = [];\n for (let i = 0; i < personsLimit; i++) {\n output.push({ emitPersons: persons[i] });\n }\n return createAsyncIterator(output);\n },\n resolve: (parent, { emitError }) => {\n if (emitError && parent.emitPersons.name === \"R2-D2\") {\n throw new Error(\"No robots allowed\");\n }\n return parent.emitPersons;\n },\n};\n\nconst searchTransportsByName: FieldResolver<any, SwapiContext, 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: Resolvers<any, SwapiContext> = {\n SearchResult: {\n __resolveType(parent: any) {\n return parent.__typename;\n },\n },\n Subscription: {\n emitPersons,\n emitPersonsV2,\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 ...(\n searchFilmsByTitle(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Film\") && r),\n ...(\n searchPeopleByName(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Person\") && r),\n ...(\n searchPlanetsByName(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Planet\") && r),\n ...(\n searchSpeciesByName(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Species\") && r),\n ...(\n searchStarshipsByName(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Starship\") && r),\n ...(\n searchTransportsByName(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Transport\") && r),\n ...(\n searchVehiclesByName(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Vehicle\") && r),\n ];\n\n return result;\n },\n\n node(parent, args: any, context: any, 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 as any),\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: any) => +starship.MGLT,\n hyperdrive_rating: (starship: any) => +starship.hyperdrive_rating,\n cargo_capacity: (starship: any) => +starship.cargo_capacity,\n passengers: (starship: any) => +starship.passengers,\n max_atmosphering_speed: (starship: any) => +starship.max_atmosphering_speed,\n length: (starship: any) => +starship.length,\n cost_in_credits: (starship: any) => +starship.cost_in_credits,\n pilots: people(\"pilots\"),\n films,\n },\n Person: {\n height: (pilot: any) => +pilot.height,\n mass: (pilot: any) => +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": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["planet", "person", "film", "starship", "transport", "vehicle", "species"]
|
|
7
7
|
}
|
|
@@ -1,43 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defProps = Object.defineProperties;
|
|
3
|
-
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
-
var __spreadValues = (a, b) => {
|
|
9
|
-
for (var prop in b || (b = {}))
|
|
10
|
-
if (__hasOwnProp.call(b, prop))
|
|
11
|
-
__defNormalProp(a, prop, b[prop]);
|
|
12
|
-
if (__getOwnPropSymbols)
|
|
13
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
-
if (__propIsEnum.call(b, prop))
|
|
15
|
-
__defNormalProp(a, prop, b[prop]);
|
|
16
|
-
}
|
|
17
|
-
return a;
|
|
18
|
-
};
|
|
19
|
-
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
-
var __async = (__this, __arguments, generator) => {
|
|
21
|
-
return new Promise((resolve, reject) => {
|
|
22
|
-
var fulfilled = (value) => {
|
|
23
|
-
try {
|
|
24
|
-
step(generator.next(value));
|
|
25
|
-
} catch (e) {
|
|
26
|
-
reject(e);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
var rejected = (value) => {
|
|
30
|
-
try {
|
|
31
|
-
step(generator.throw(value));
|
|
32
|
-
} catch (e) {
|
|
33
|
-
reject(e);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
37
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
|
|
41
1
|
// src/benchmarks/swapi-schema/resolvers.ts
|
|
42
2
|
import { createAsyncIterator, forAwaitEach, getAsyncIterator } from "iterall";
|
|
43
3
|
import { mapAsyncIterator } from "../../utilities/mapAsyncIterator.mjs";
|
|
@@ -49,10 +9,10 @@ var starships = (parent, _args, { models }) => {
|
|
|
49
9
|
)
|
|
50
10
|
),
|
|
51
11
|
// this ensures it's a awaitable iterator
|
|
52
|
-
(item) =>
|
|
53
|
-
|
|
12
|
+
async (item) => {
|
|
13
|
+
await new Promise((resolve) => setTimeout(resolve, 1));
|
|
54
14
|
return item;
|
|
55
|
-
}
|
|
15
|
+
}
|
|
56
16
|
);
|
|
57
17
|
};
|
|
58
18
|
function people(key) {
|
|
@@ -112,35 +72,31 @@ var searchVehiclesByName = (parent, { search }, { models }) => {
|
|
|
112
72
|
return models.getData("/vehicles").filter((vehicle2) => new RegExp(search, "i").test(vehicle2.name));
|
|
113
73
|
};
|
|
114
74
|
var emitPersons = {
|
|
115
|
-
subscribe: function(
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
return createAsyncIterator(output);
|
|
127
|
-
});
|
|
75
|
+
subscribe: async function(parent, { limit, throwError }, { models }) {
|
|
76
|
+
if (throwError) {
|
|
77
|
+
throw new Error("error");
|
|
78
|
+
}
|
|
79
|
+
const persons = await models.getData("/people");
|
|
80
|
+
const personsLimit = Math.min(limit, persons.length);
|
|
81
|
+
const output = [];
|
|
82
|
+
for (let i = 0; i < personsLimit; i++) {
|
|
83
|
+
output.push({ emitPersons: persons[i] });
|
|
84
|
+
}
|
|
85
|
+
return createAsyncIterator(output);
|
|
128
86
|
}
|
|
129
87
|
};
|
|
130
88
|
var emitPersonsV2 = {
|
|
131
|
-
subscribe: function(
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
return createAsyncIterator(output);
|
|
143
|
-
});
|
|
89
|
+
subscribe: async function(parent, { limit, throwError }, { models }) {
|
|
90
|
+
if (throwError) {
|
|
91
|
+
throw new Error("error");
|
|
92
|
+
}
|
|
93
|
+
const persons = await models.getData("/people");
|
|
94
|
+
const personsLimit = Math.min(limit, persons.length);
|
|
95
|
+
const output = [];
|
|
96
|
+
for (let i = 0; i < personsLimit; i++) {
|
|
97
|
+
output.push({ emitPersons: persons[i] });
|
|
98
|
+
}
|
|
99
|
+
return createAsyncIterator(output);
|
|
144
100
|
},
|
|
145
101
|
resolve: (parent, { emitError }) => {
|
|
146
102
|
if (emitError && parent.emitPersons.name === "R2-D2") {
|
|
@@ -229,9 +185,10 @@ var resolvers = {
|
|
|
229
185
|
default:
|
|
230
186
|
throw new Error(`Invalid node type ${args.nodeType}`);
|
|
231
187
|
}
|
|
232
|
-
return
|
|
188
|
+
return {
|
|
189
|
+
...result,
|
|
233
190
|
__typename: args.nodeType
|
|
234
|
-
}
|
|
191
|
+
};
|
|
235
192
|
},
|
|
236
193
|
person,
|
|
237
194
|
planet,
|
|
@@ -304,13 +261,13 @@ var resolvers = {
|
|
|
304
261
|
throw new Error("Bubbling!");
|
|
305
262
|
},
|
|
306
263
|
bubblingListError: () => {
|
|
307
|
-
return forAwaitEach([1, 2, 3], (item) =>
|
|
308
|
-
|
|
264
|
+
return forAwaitEach([1, 2, 3], async (item) => {
|
|
265
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
309
266
|
if (item === 2) {
|
|
310
267
|
throw new Error("Bubbling in list!");
|
|
311
268
|
}
|
|
312
269
|
return item;
|
|
313
|
-
})
|
|
270
|
+
});
|
|
314
271
|
}
|
|
315
272
|
},
|
|
316
273
|
Vehicle: {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/benchmarks/swapi-schema/resolvers.ts"],
|
|
4
4
|
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createAsyncIterator, forAwaitEach, getAsyncIterator } from \"iterall\";\nimport { mapAsyncIterator } from \"../../utilities/mapAsyncIterator\";\nimport { FieldResolver, Resolvers } from \"../../types\";\nimport type { JsonDB } from \"node-json-db\";\n\ntype SwapiContext = { models: JsonDB };\n\nconst starships: FieldResolver<any, SwapiContext, 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): FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/people\").find((person: any) => person.id === id);\n};\n\nconst planet: FieldResolver<any, SwapiContext, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/planets\").find((planet: any) => planet.id === id);\n};\n\nconst films: FieldResolver<any, SwapiContext, any> = (\n parent,\n _args,\n { models },\n) => {\n return models.getData(\"/films\");\n};\n\nconst film: FieldResolver<any, SwapiContext, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/films\").find((film: any) => film.id === id);\n};\n\nconst starship: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, any> = (\n parent,\n { id },\n { models },\n) => {\n return models.getData(\"/vehicles\").find((vehicle: any) => vehicle.id === id);\n};\n\nconst searchPeopleByName: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, 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: FieldResolver<any, SwapiContext, any> = {\n subscribe: async function (parent, { limit, throwError }, { models }) {\n if (throwError) {\n throw new Error(\"error\");\n }\n const persons = await models.getData(\"/people\");\n const personsLimit = Math.min(limit, persons.length);\n const output = [];\n for (let i = 0; i < personsLimit; i++) {\n output.push({ emitPersons: persons[i] });\n }\n return createAsyncIterator(output);\n },\n};\n\nconst emitPersonsV2: FieldResolver<any, SwapiContext, any> = {\n subscribe: async function (parent, { limit, throwError }, { models }) {\n if (throwError) {\n throw new Error(\"error\");\n }\n const persons = await models.getData(\"/people\");\n const personsLimit = Math.min(limit, persons.length);\n const output = [];\n for (let i = 0; i < personsLimit; i++) {\n output.push({ emitPersons: persons[i] });\n }\n return createAsyncIterator(output);\n },\n resolve: (parent, { emitError }) => {\n if (emitError && parent.emitPersons.name === \"R2-D2\") {\n throw new Error(\"No robots allowed\");\n }\n return parent.emitPersons;\n },\n};\n\nconst searchTransportsByName: FieldResolver<any, SwapiContext, 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: Resolvers<any, SwapiContext> = {\n SearchResult: {\n __resolveType(parent: any) {\n return parent.__typename;\n },\n },\n Subscription: {\n emitPersons,\n emitPersonsV2,\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 ...(\n searchFilmsByTitle(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Film\") && r),\n ...(\n searchPeopleByName(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Person\") && r),\n ...(\n searchPlanetsByName(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Planet\") && r),\n ...(\n searchSpeciesByName(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Species\") && r),\n ...(\n searchStarshipsByName(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Starship\") && r),\n ...(\n searchTransportsByName(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Transport\") && r),\n ...(\n searchVehiclesByName(parent, { search }, { models }, info) as any\n ).map((r: any) => (r.__typename = \"Vehicle\") && r),\n ];\n\n return result;\n },\n\n node(parent, args: any, context: any, 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 as any),\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: any) => +starship.MGLT,\n hyperdrive_rating: (starship: any) => +starship.hyperdrive_rating,\n cargo_capacity: (starship: any) => +starship.cargo_capacity,\n passengers: (starship: any) => +starship.passengers,\n max_atmosphering_speed: (starship: any) => +starship.max_atmosphering_speed,\n length: (starship: any) => +starship.length,\n cost_in_credits: (starship: any) => +starship.cost_in_credits,\n pilots: people(\"pilots\"),\n films,\n },\n Person: {\n height: (pilot: any) => +pilot.height,\n mass: (pilot: any) => +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": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["planet", "person", "film", "starship", "transport", "vehicle", "species"]
|
|
7
7
|
}
|