Initialisation

Added the packages and files for the backend server
This commit is contained in:
jackbeeby
2024-12-15 17:48:45 +11:00
parent 25066e1ee8
commit b412dfe2ca
2732 changed files with 330572 additions and 0 deletions

View File

@@ -0,0 +1,318 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.addResolversToSchema = void 0;
const graphql_1 = require("graphql");
const utils_1 = require("@graphql-tools/utils");
const checkForResolveTypeResolver_js_1 = require("./checkForResolveTypeResolver.js");
const extendResolversFromInterfaces_js_1 = require("./extendResolversFromInterfaces.js");
function addResolversToSchema({ schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, }) {
const { requireResolversToMatchSchema = 'error', requireResolversForResolveType } = resolverValidationOptions;
const resolvers = inheritResolversFromInterfaces
? (0, extendResolversFromInterfaces_js_1.extendResolversFromInterfaces)(schema, inputResolvers)
: inputResolvers;
for (const typeName in resolvers) {
const resolverValue = resolvers[typeName];
const resolverType = typeof resolverValue;
if (resolverType !== 'object') {
throw new Error(`"${typeName}" defined in resolvers, but has invalid value "${resolverValue}". The resolver's value must be of type object.`);
}
const type = schema.getType(typeName);
if (type == null) {
if (requireResolversToMatchSchema === 'ignore') {
continue;
}
throw new Error(`"${typeName}" defined in resolvers, but not in schema`);
}
else if ((0, graphql_1.isSpecifiedScalarType)(type)) {
// allow -- without recommending -- overriding of specified scalar types
for (const fieldName in resolverValue) {
if (fieldName.startsWith('__')) {
type[fieldName.substring(2)] = resolverValue[fieldName];
}
else {
type[fieldName] = resolverValue[fieldName];
}
}
}
else if ((0, graphql_1.isEnumType)(type)) {
const values = type.getValues();
for (const fieldName in resolverValue) {
if (!fieldName.startsWith('__') &&
!values.some(value => value.name === fieldName) &&
requireResolversToMatchSchema &&
requireResolversToMatchSchema !== 'ignore') {
throw new Error(`${type.name}.${fieldName} was defined in resolvers, but not present within ${type.name}`);
}
}
}
else if ((0, graphql_1.isUnionType)(type)) {
for (const fieldName in resolverValue) {
if (!fieldName.startsWith('__') &&
requireResolversToMatchSchema &&
requireResolversToMatchSchema !== 'ignore') {
throw new Error(`${type.name}.${fieldName} was defined in resolvers, but ${type.name} is not an object or interface type`);
}
}
}
else if ((0, graphql_1.isObjectType)(type) || (0, graphql_1.isInterfaceType)(type)) {
for (const fieldName in resolverValue) {
if (!fieldName.startsWith('__')) {
const fields = type.getFields();
const field = fields[fieldName];
if (field == null) {
// Field present in resolver but not in schema
if (requireResolversToMatchSchema && requireResolversToMatchSchema !== 'ignore') {
throw new Error(`${typeName}.${fieldName} defined in resolvers, but not in schema`);
}
}
else {
// Field present in both the resolver and schema
const fieldResolve = resolverValue[fieldName];
if (typeof fieldResolve !== 'function' && typeof fieldResolve !== 'object') {
throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`);
}
}
}
}
}
}
schema = updateResolversInPlace
? addResolversToExistingSchema(schema, resolvers, defaultFieldResolver)
: createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver);
if (requireResolversForResolveType && requireResolversForResolveType !== 'ignore') {
(0, checkForResolveTypeResolver_js_1.checkForResolveTypeResolver)(schema, requireResolversForResolveType);
}
return schema;
}
exports.addResolversToSchema = addResolversToSchema;
function addResolversToExistingSchema(schema, resolvers, defaultFieldResolver) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
const typeMap = schema.getTypeMap();
for (const typeName in resolvers) {
const type = schema.getType(typeName);
const resolverValue = resolvers[typeName];
if ((0, graphql_1.isScalarType)(type)) {
for (const fieldName in resolverValue) {
if (fieldName.startsWith('__')) {
type[fieldName.substring(2)] = resolverValue[fieldName];
}
else if (fieldName === 'astNode' && type.astNode != null) {
type.astNode = {
...type.astNode,
description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : type.astNode.description,
directives: ((_c = type.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []),
};
}
else if (fieldName === 'extensionASTNodes' && type.extensionASTNodes != null) {
type.extensionASTNodes = type.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []);
}
else if (fieldName === 'extensions' &&
type.extensions != null &&
resolverValue.extensions != null) {
type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);
}
else {
type[fieldName] = resolverValue[fieldName];
}
}
}
else if ((0, graphql_1.isEnumType)(type)) {
const config = type.toConfig();
const enumValueConfigMap = config.values;
for (const fieldName in resolverValue) {
if (fieldName.startsWith('__')) {
config[fieldName.substring(2)] = resolverValue[fieldName];
}
else if (fieldName === 'astNode' && config.astNode != null) {
config.astNode = {
...config.astNode,
description: (_h = (_g = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _g === void 0 ? void 0 : _g.description) !== null && _h !== void 0 ? _h : config.astNode.description,
directives: ((_j = config.astNode.directives) !== null && _j !== void 0 ? _j : []).concat((_l = (_k = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _k === void 0 ? void 0 : _k.directives) !== null && _l !== void 0 ? _l : []),
};
}
else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {
config.extensionASTNodes = config.extensionASTNodes.concat((_m = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _m !== void 0 ? _m : []);
}
else if (fieldName === 'extensions' &&
type.extensions != null &&
resolverValue.extensions != null) {
type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);
}
else if (enumValueConfigMap[fieldName]) {
enumValueConfigMap[fieldName].value = resolverValue[fieldName];
}
}
typeMap[typeName] = new graphql_1.GraphQLEnumType(config);
}
else if ((0, graphql_1.isUnionType)(type)) {
for (const fieldName in resolverValue) {
if (fieldName.startsWith('__')) {
type[fieldName.substring(2)] = resolverValue[fieldName];
}
}
}
else if ((0, graphql_1.isObjectType)(type) || (0, graphql_1.isInterfaceType)(type)) {
for (const fieldName in resolverValue) {
if (fieldName.startsWith('__')) {
// this is for isTypeOf and resolveType and all the other stuff.
type[fieldName.substring(2)] = resolverValue[fieldName];
continue;
}
const fields = type.getFields();
const field = fields[fieldName];
if (field != null) {
const fieldResolve = resolverValue[fieldName];
if (typeof fieldResolve === 'function') {
// for convenience. Allows shorter syntax in resolver definition file
field.resolve = fieldResolve.bind(resolverValue);
}
else {
setFieldProperties(field, fieldResolve);
}
}
}
}
}
// serialize all default values prior to healing fields with new scalar/enum types.
(0, utils_1.forEachDefaultValue)(schema, utils_1.serializeInputValue);
// schema may have new scalar/enum types that require healing
(0, utils_1.healSchema)(schema);
// reparse all default values with new parsing functions.
(0, utils_1.forEachDefaultValue)(schema, utils_1.parseInputValue);
if (defaultFieldResolver != null) {
(0, utils_1.forEachField)(schema, field => {
if (!field.resolve) {
field.resolve = defaultFieldResolver;
}
});
}
return schema;
}
function createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver) {
schema = (0, utils_1.mapSchema)(schema, {
[utils_1.MapperKind.SCALAR_TYPE]: type => {
var _a, _b, _c, _d, _e, _f;
const config = type.toConfig();
const resolverValue = resolvers[type.name];
if (!(0, graphql_1.isSpecifiedScalarType)(type) && resolverValue != null) {
for (const fieldName in resolverValue) {
if (fieldName.startsWith('__')) {
config[fieldName.substring(2)] = resolverValue[fieldName];
}
else if (fieldName === 'astNode' && config.astNode != null) {
config.astNode = {
...config.astNode,
description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : config.astNode.description,
directives: ((_c = config.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []),
};
}
else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {
config.extensionASTNodes = config.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []);
}
else if (fieldName === 'extensions' &&
config.extensions != null &&
resolverValue.extensions != null) {
config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);
}
else {
config[fieldName] = resolverValue[fieldName];
}
}
return new graphql_1.GraphQLScalarType(config);
}
},
[utils_1.MapperKind.ENUM_TYPE]: type => {
var _a, _b, _c, _d, _e, _f;
const resolverValue = resolvers[type.name];
const config = type.toConfig();
const enumValueConfigMap = config.values;
if (resolverValue != null) {
for (const fieldName in resolverValue) {
if (fieldName.startsWith('__')) {
config[fieldName.substring(2)] = resolverValue[fieldName];
}
else if (fieldName === 'astNode' && config.astNode != null) {
config.astNode = {
...config.astNode,
description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : config.astNode.description,
directives: ((_c = config.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []),
};
}
else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {
config.extensionASTNodes = config.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []);
}
else if (fieldName === 'extensions' &&
config.extensions != null &&
resolverValue.extensions != null) {
config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);
}
else if (enumValueConfigMap[fieldName]) {
enumValueConfigMap[fieldName].value = resolverValue[fieldName];
}
}
return new graphql_1.GraphQLEnumType(config);
}
},
[utils_1.MapperKind.UNION_TYPE]: type => {
const resolverValue = resolvers[type.name];
if (resolverValue != null) {
const config = type.toConfig();
if (resolverValue['__resolveType']) {
config.resolveType = resolverValue['__resolveType'];
}
return new graphql_1.GraphQLUnionType(config);
}
},
[utils_1.MapperKind.OBJECT_TYPE]: type => {
const resolverValue = resolvers[type.name];
if (resolverValue != null) {
const config = type.toConfig();
if (resolverValue['__isTypeOf']) {
config.isTypeOf = resolverValue['__isTypeOf'];
}
return new graphql_1.GraphQLObjectType(config);
}
},
[utils_1.MapperKind.INTERFACE_TYPE]: type => {
const resolverValue = resolvers[type.name];
if (resolverValue != null) {
const config = type.toConfig();
if (resolverValue['__resolveType']) {
config.resolveType = resolverValue['__resolveType'];
}
return new graphql_1.GraphQLInterfaceType(config);
}
},
[utils_1.MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => {
const resolverValue = resolvers[typeName];
if (resolverValue != null) {
const fieldResolve = resolverValue[fieldName];
if (fieldResolve != null) {
const newFieldConfig = { ...fieldConfig };
if (typeof fieldResolve === 'function') {
// for convenience. Allows shorter syntax in resolver definition file
newFieldConfig.resolve = fieldResolve.bind(resolverValue);
}
else {
setFieldProperties(newFieldConfig, fieldResolve);
}
return newFieldConfig;
}
}
},
});
if (defaultFieldResolver != null) {
schema = (0, utils_1.mapSchema)(schema, {
[utils_1.MapperKind.OBJECT_FIELD]: fieldConfig => ({
...fieldConfig,
resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver,
}),
});
}
return schema;
}
function setFieldProperties(field, propertiesObj) {
for (const propertyName in propertiesObj) {
field[propertyName] = propertiesObj[propertyName];
}
}

View File

@@ -0,0 +1,47 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.assertResolversPresent = void 0;
const graphql_1 = require("graphql");
const utils_1 = require("@graphql-tools/utils");
function assertResolversPresent(schema, resolverValidationOptions = {}) {
const { requireResolversForArgs, requireResolversForNonScalar, requireResolversForAllFields } = resolverValidationOptions;
if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {
throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +
'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +
'requireResolversForNonScalar, but not a combination of them.');
}
(0, utils_1.forEachField)(schema, (field, typeName, fieldName) => {
// requires a resolver for *every* field.
if (requireResolversForAllFields) {
expectResolver('requireResolversForAllFields', requireResolversForAllFields, field, typeName, fieldName);
}
// requires a resolver on every field that has arguments
if (requireResolversForArgs && field.args.length > 0) {
expectResolver('requireResolversForArgs', requireResolversForArgs, field, typeName, fieldName);
}
// requires a resolver on every field that returns a non-scalar type
if (requireResolversForNonScalar !== 'ignore' && !(0, graphql_1.isScalarType)((0, graphql_1.getNamedType)(field.type))) {
expectResolver('requireResolversForNonScalar', requireResolversForNonScalar, field, typeName, fieldName);
}
});
}
exports.assertResolversPresent = assertResolversPresent;
function expectResolver(validator, behavior, field, typeName, fieldName) {
if (!field.resolve) {
const message = `Resolver missing for "${typeName}.${fieldName}".
To disable this validator, use:
resolverValidationOptions: {
${validator}: 'ignore'
}`;
if (behavior === 'error') {
throw new Error(message);
}
if (behavior === 'warn') {
console.warn(message);
}
return;
}
if (typeof field.resolve !== 'function') {
throw new Error(`Resolver "${typeName}.${fieldName}" must be a function`);
}
}

View File

@@ -0,0 +1,13 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.chainResolvers = void 0;
const graphql_1 = require("graphql");
function chainResolvers(resolvers) {
return (root, args, ctx, info) => resolvers.reduce((prev, curResolver) => {
if (curResolver != null) {
return curResolver(prev, args, ctx, info);
}
return (0, graphql_1.defaultFieldResolver)(prev, args, ctx, info);
}, root);
}
exports.chainResolvers = chainResolvers;

View File

@@ -0,0 +1,23 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkForResolveTypeResolver = void 0;
const utils_1 = require("@graphql-tools/utils");
// If we have any union or interface types throw if no there is no resolveType resolver
function checkForResolveTypeResolver(schema, requireResolversForResolveType) {
(0, utils_1.mapSchema)(schema, {
[utils_1.MapperKind.ABSTRACT_TYPE]: type => {
if (!type.resolveType) {
const message = `Type "${type.name}" is missing a "__resolveType" resolver. Pass 'ignore' into ` +
'"resolverValidationOptions.requireResolversForResolveType" to disable this error.';
if (requireResolversForResolveType === 'error') {
throw new Error(message);
}
if (requireResolversForResolveType === 'warn') {
console.warn(message);
}
}
return undefined;
},
});
}
exports.checkForResolveTypeResolver = checkForResolveTypeResolver;

View File

@@ -0,0 +1,35 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.extendResolversFromInterfaces = void 0;
function extendResolversFromInterfaces(schema, resolvers) {
const extendedResolvers = {};
const typeMap = schema.getTypeMap();
for (const typeName in typeMap) {
const type = typeMap[typeName];
if ('getInterfaces' in type) {
extendedResolvers[typeName] = {};
for (const iFace of type.getInterfaces()) {
if (resolvers[iFace.name]) {
for (const fieldName in resolvers[iFace.name]) {
if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) {
extendedResolvers[typeName][fieldName] = resolvers[iFace.name][fieldName];
}
}
}
}
const typeResolvers = resolvers[typeName];
extendedResolvers[typeName] = {
...extendedResolvers[typeName],
...typeResolvers,
};
}
else {
const typeResolvers = resolvers[typeName];
if (typeResolvers != null) {
extendedResolvers[typeName] = typeResolvers;
}
}
}
return extendedResolvers;
}
exports.extendResolversFromInterfaces = extendResolversFromInterfaces;

19
node_modules/@graphql-tools/schema/cjs/index.js generated vendored Normal file
View File

@@ -0,0 +1,19 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractExtensionsFromSchema = exports.extendResolversFromInterfaces = exports.checkForResolveTypeResolver = exports.addResolversToSchema = exports.chainResolvers = exports.assertResolversPresent = void 0;
const tslib_1 = require("tslib");
var assertResolversPresent_js_1 = require("./assertResolversPresent.js");
Object.defineProperty(exports, "assertResolversPresent", { enumerable: true, get: function () { return assertResolversPresent_js_1.assertResolversPresent; } });
var chainResolvers_js_1 = require("./chainResolvers.js");
Object.defineProperty(exports, "chainResolvers", { enumerable: true, get: function () { return chainResolvers_js_1.chainResolvers; } });
var addResolversToSchema_js_1 = require("./addResolversToSchema.js");
Object.defineProperty(exports, "addResolversToSchema", { enumerable: true, get: function () { return addResolversToSchema_js_1.addResolversToSchema; } });
var checkForResolveTypeResolver_js_1 = require("./checkForResolveTypeResolver.js");
Object.defineProperty(exports, "checkForResolveTypeResolver", { enumerable: true, get: function () { return checkForResolveTypeResolver_js_1.checkForResolveTypeResolver; } });
var extendResolversFromInterfaces_js_1 = require("./extendResolversFromInterfaces.js");
Object.defineProperty(exports, "extendResolversFromInterfaces", { enumerable: true, get: function () { return extendResolversFromInterfaces_js_1.extendResolversFromInterfaces; } });
tslib_1.__exportStar(require("./makeExecutableSchema.js"), exports);
tslib_1.__exportStar(require("./types.js"), exports);
tslib_1.__exportStar(require("./merge-schemas.js"), exports);
var utils_1 = require("@graphql-tools/utils");
Object.defineProperty(exports, "extractExtensionsFromSchema", { enumerable: true, get: function () { return utils_1.extractExtensionsFromSchema; } });

View File

@@ -0,0 +1,92 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.makeExecutableSchema = void 0;
const graphql_1 = require("graphql");
const utils_1 = require("@graphql-tools/utils");
const addResolversToSchema_js_1 = require("./addResolversToSchema.js");
const assertResolversPresent_js_1 = require("./assertResolversPresent.js");
const merge_1 = require("@graphql-tools/merge");
/**
* Builds a schema from the provided type definitions and resolvers.
*
* The type definitions are written using Schema Definition Language (SDL). They
* can be provided as a string, a `DocumentNode`, a function, or an array of any
* of these. If a function is provided, it will be passed no arguments and
* should return an array of strings or `DocumentNode`s.
*
* Note: You can use GraphQL magic comment provide additional syntax
* highlighting in your editor (with the appropriate editor plugin).
*
* ```js
* const typeDefs = /* GraphQL *\/ `
* type Query {
* posts: [Post]
* author(id: Int!): Author
* }
* `;
* ```
*
* The `resolvers` object should be a map of type names to nested object, which
* themselves map the type's fields to their appropriate resolvers.
* See the [Resolvers](/docs/resolvers) section of the documentation for more details.
*
* ```js
* const resolvers = {
* Query: {
* posts: (obj, args, ctx, info) => getAllPosts(),
* author: (obj, args, ctx, info) => getAuthorById(args.id)
* }
* };
* ```
*
* Once you've defined both the `typeDefs` and `resolvers`, you can create your
* schema:
*
* ```js
* const schema = makeExecutableSchema({
* typeDefs,
* resolvers,
* })
* ```
*/
function makeExecutableSchema({ typeDefs, resolvers = {}, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, schemaExtensions, ...otherOptions }) {
// Validate and clean up arguments
if (typeof resolverValidationOptions !== 'object') {
throw new Error('Expected `resolverValidationOptions` to be an object');
}
if (!typeDefs) {
throw new Error('Must provide typeDefs');
}
let schema;
if ((0, graphql_1.isSchema)(typeDefs)) {
schema = typeDefs;
}
else if (otherOptions === null || otherOptions === void 0 ? void 0 : otherOptions.commentDescriptions) {
const mergedTypeDefs = (0, merge_1.mergeTypeDefs)(typeDefs, {
...otherOptions,
commentDescriptions: true,
});
schema = (0, graphql_1.buildSchema)(mergedTypeDefs, otherOptions);
}
else {
const mergedTypeDefs = (0, merge_1.mergeTypeDefs)(typeDefs, otherOptions);
schema = (0, graphql_1.buildASTSchema)(mergedTypeDefs, otherOptions);
}
// We allow passing in an array of resolver maps, in which case we merge them
schema = (0, addResolversToSchema_js_1.addResolversToSchema)({
schema,
resolvers: (0, merge_1.mergeResolvers)(resolvers),
resolverValidationOptions,
inheritResolversFromInterfaces,
updateResolversInPlace,
});
if (Object.keys(resolverValidationOptions).length > 0) {
(0, assertResolversPresent_js_1.assertResolversPresent)(schema, resolverValidationOptions);
}
if (schemaExtensions) {
schemaExtensions = (0, merge_1.mergeExtensions)((0, utils_1.asArray)(schemaExtensions));
(0, merge_1.applyExtensions)(schema, schemaExtensions);
}
return schema;
}
exports.makeExecutableSchema = makeExecutableSchema;

View File

@@ -0,0 +1,39 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeSchemas = void 0;
const utils_1 = require("@graphql-tools/utils");
const makeExecutableSchema_js_1 = require("./makeExecutableSchema.js");
/**
* Synchronously merges multiple schemas, typeDefinitions and/or resolvers into a single schema.
* @param config Configuration object
*/
function mergeSchemas(config) {
const extractedTypeDefs = [];
const extractedResolvers = [];
const extractedSchemaExtensions = [];
if (config.schemas != null) {
for (const schema of config.schemas) {
extractedTypeDefs.push(schema);
extractedResolvers.push((0, utils_1.getResolversFromSchema)(schema));
extractedSchemaExtensions.push((0, utils_1.extractExtensionsFromSchema)(schema));
}
}
if (config.typeDefs != null) {
extractedTypeDefs.push(config.typeDefs);
}
if (config.resolvers != null) {
const additionalResolvers = (0, utils_1.asArray)(config.resolvers);
extractedResolvers.push(...additionalResolvers);
}
if (config.schemaExtensions != null) {
const additionalSchemaExtensions = (0, utils_1.asArray)(config.schemaExtensions);
extractedSchemaExtensions.push(...additionalSchemaExtensions);
}
return (0, makeExecutableSchema_js_1.makeExecutableSchema)({
...config,
typeDefs: extractedTypeDefs,
resolvers: extractedResolvers,
schemaExtensions: extractedSchemaExtensions,
});
}
exports.mergeSchemas = mergeSchemas;

1
node_modules/@graphql-tools/schema/cjs/package.json generated vendored Normal file
View File

@@ -0,0 +1 @@
{"type":"commonjs"}

0
node_modules/@graphql-tools/schema/cjs/types.js generated vendored Normal file
View File