Initial Save

This commit is contained in:
jackbeeby
2025-03-28 12:30:19 +11:00
parent e381994f19
commit d8773925e8
9910 changed files with 982718 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
import { GraphQLFieldResolver } from 'graphql';
declare const defaultMergedResolver: GraphQLFieldResolver<any, any>;
export default defaultMergedResolver;

View File

@@ -0,0 +1,32 @@
Object.defineProperty(exports, "__esModule", { value: true });
var graphql_1 = require("graphql");
var error_1 = require("graphql/error");
var errors_1 = require("./errors");
var getResponseKeyFromInfo_1 = require("./getResponseKeyFromInfo");
// Resolver that knows how to:
// a) handle aliases for proxied schemas
// b) handle errors from proxied schemas
var defaultMergedResolver = function (parent, args, context, info) {
if (!parent) {
return null;
}
var responseKey = getResponseKeyFromInfo_1.getResponseKeyFromInfo(info);
var errorResult = errors_1.getErrorsFromParent(parent, responseKey);
if (errorResult.kind === 'OWN') {
throw error_1.locatedError(new Error(errorResult.error.message), info.fieldNodes, graphql_1.responsePathAsArray(info.path));
}
var result = parent[responseKey];
if (result == null) {
result = parent[info.fieldName];
}
// subscription result mapping
if (!result && parent.data && parent.data[responseKey]) {
result = parent.data[responseKey];
}
if (errorResult.errors) {
result = errors_1.annotateWithChildrenErrors(result, errorResult.errors);
}
return result;
};
exports.default = defaultMergedResolver;
//# sourceMappingURL=defaultMergedResolver.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"defaultMergedResolver.js","sourceRoot":"","sources":["../../src/stitching/defaultMergedResolver.ts"],"names":[],"mappings":";AAAA,mCAAoE;AACpE,uCAA6C;AAC7C,mCAA2E;AAC3E,mEAAkE;AAElE,8BAA8B;AAC9B,wCAAwC;AACxC,wCAAwC;AACxC,IAAM,qBAAqB,GAAmC,UAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;IACxF,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,IAAI,CAAC;KACb;IAED,IAAM,WAAW,GAAG,+CAAsB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAM,WAAW,GAAG,4BAAmB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE7D,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,EAAE;QAC9B,MAAM,oBAAY,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,6BAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3G;IAED,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAEjC,IAAI,MAAM,IAAI,IAAI,EAAE;QAClB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACjC;IAED,8BAA8B;IAC9B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QACtD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACnC;IAED,IAAI,WAAW,CAAC,MAAM,EAAE;QACtB,MAAM,GAAG,mCAA0B,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;KACjE;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,kBAAe,qBAAqB,CAAC"}

View File

@@ -0,0 +1,3 @@
import { GraphQLSchema } from 'graphql';
import { IDelegateToSchemaOptions } from '../Interfaces';
export default function delegateToSchema(options: IDelegateToSchemaOptions | GraphQLSchema, ...args: any[]): Promise<any>;

View File

@@ -0,0 +1,171 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
Object.defineProperty(exports, "__esModule", { value: true });
var graphql_1 = require("graphql");
var transforms_1 = require("../transforms/transforms");
var AddArgumentsAsVariables_1 = require("../transforms/AddArgumentsAsVariables");
var FilterToSchema_1 = require("../transforms/FilterToSchema");
var AddTypenameToAbstract_1 = require("../transforms/AddTypenameToAbstract");
var CheckResultAndHandleErrors_1 = require("../transforms/CheckResultAndHandleErrors");
var mapAsyncIterator_1 = require("./mapAsyncIterator");
var ExpandAbstractTypes_1 = require("../transforms/ExpandAbstractTypes");
var ReplaceFieldWithFragment_1 = require("../transforms/ReplaceFieldWithFragment");
var ConvertEnumResponse_1 = require("../transforms/ConvertEnumResponse");
function delegateToSchema(options) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
if (options instanceof graphql_1.GraphQLSchema) {
throw new Error('Passing positional arguments to delegateToSchema is a deprecated. ' +
'Please pass named parameters instead.');
}
return delegateToSchemaImplementation(options);
}
exports.default = delegateToSchema;
function delegateToSchemaImplementation(options) {
return __awaiter(this, void 0, void 0, function () {
var info, _a, args, operation, rawDocument, rawRequest, transforms, processedRequest, errors, _b, executionResult;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
info = options.info, _a = options.args, args = _a === void 0 ? {} : _a;
operation = options.operation || info.operation.operation;
rawDocument = createDocument(options.fieldName, operation, info.fieldNodes, Object.keys(info.fragments).map(function (fragmentName) { return info.fragments[fragmentName]; }), info.operation.variableDefinitions, info.operation.name);
rawRequest = {
document: rawDocument,
variables: info.variableValues,
};
transforms = __spreadArrays((options.transforms || []), [
new ExpandAbstractTypes_1.default(info.schema, options.schema),
]);
if (info.mergeInfo && info.mergeInfo.fragments) {
transforms.push(new ReplaceFieldWithFragment_1.default(options.schema, info.mergeInfo.fragments));
}
transforms = transforms.concat([
new AddArgumentsAsVariables_1.default(options.schema, args),
new FilterToSchema_1.default(options.schema),
new AddTypenameToAbstract_1.default(options.schema),
new CheckResultAndHandleErrors_1.default(info, options.fieldName),
]);
if (graphql_1.isEnumType(options.info.returnType)) {
transforms = transforms.concat(new ConvertEnumResponse_1.default(options.info.returnType));
}
processedRequest = transforms_1.applyRequestTransforms(rawRequest, transforms);
if (!options.skipValidation) {
errors = graphql_1.validate(options.schema, processedRequest.document);
if (errors.length > 0) {
throw errors;
}
}
if (!(operation === 'query' || operation === 'mutation')) return [3 /*break*/, 2];
_b = transforms_1.applyResultTransforms;
return [4 /*yield*/, graphql_1.execute(options.schema, processedRequest.document, info.rootValue, options.context, processedRequest.variables)];
case 1: return [2 /*return*/, _b.apply(void 0, [_c.sent(),
transforms])];
case 2:
if (!(operation === 'subscription')) return [3 /*break*/, 4];
return [4 /*yield*/, graphql_1.subscribe(options.schema, processedRequest.document, info.rootValue, options.context, processedRequest.variables)];
case 3:
executionResult = (_c.sent());
// "subscribe" to the subscription result and map the result through the transforms
return [2 /*return*/, mapAsyncIterator_1.default(executionResult, function (result) {
var _a;
var transformedResult = transforms_1.applyResultTransforms(result, transforms);
var subscriptionKey = Object.keys(result.data)[0];
// for some reason the returned transformedResult needs to be nested inside the root subscription field
// does not work otherwise...
return _a = {},
_a[subscriptionKey] = transformedResult,
_a;
})];
case 4: return [2 /*return*/];
}
});
});
}
function createDocument(targetField, targetOperation, originalSelections, fragments, variables, operationName) {
var selections = [];
var args = [];
originalSelections.forEach(function (field) {
var fieldSelections = field.selectionSet
? field.selectionSet.selections
: [];
selections = selections.concat(fieldSelections);
args = args.concat(field.arguments || []);
});
var selectionSet = null;
if (selections.length > 0) {
selectionSet = {
kind: graphql_1.Kind.SELECTION_SET,
selections: selections,
};
}
var rootField = {
kind: graphql_1.Kind.FIELD,
alias: null,
arguments: args,
selectionSet: selectionSet,
name: {
kind: graphql_1.Kind.NAME,
value: targetField,
},
};
var rootSelectionSet = {
kind: graphql_1.Kind.SELECTION_SET,
selections: [rootField],
};
var operationDefinition = {
kind: graphql_1.Kind.OPERATION_DEFINITION,
operation: targetOperation,
variableDefinitions: variables,
selectionSet: rootSelectionSet,
name: operationName,
};
return {
kind: graphql_1.Kind.DOCUMENT,
definitions: __spreadArrays([operationDefinition], fragments),
};
}
//# sourceMappingURL=delegateToSchema.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"delegateToSchema.js","sourceRoot":"","sources":["../../src/stitching/delegateToSchema.ts"],"names":[],"mappings":"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"}

11
node_modules/graphql-tools/dist/stitching/errors.d.ts generated vendored Normal file
View File

@@ -0,0 +1,11 @@
import { GraphQLResolveInfo, ExecutionResult, GraphQLFormattedError } from 'graphql';
export declare let ERROR_SYMBOL: any;
export declare function annotateWithChildrenErrors(object: any, childrenErrors: ReadonlyArray<GraphQLFormattedError>): any;
export declare function getErrorsFromParent(object: any, fieldName: string): {
kind: 'OWN';
error: any;
} | {
kind: 'CHILDREN';
errors?: Array<GraphQLFormattedError>;
};
export declare function checkResultAndHandleErrors(result: ExecutionResult, info: GraphQLResolveInfo, responseKey?: string): any;

114
node_modules/graphql-tools/dist/stitching/errors.js generated vendored Normal file
View File

@@ -0,0 +1,114 @@
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
var graphql_1 = require("graphql");
var error_1 = require("graphql/error");
var getResponseKeyFromInfo_1 = require("./getResponseKeyFromInfo");
if ((typeof global !== 'undefined' && 'Symbol' in global) ||
(typeof window !== 'undefined' && 'Symbol' in window)) {
exports.ERROR_SYMBOL = Symbol('subSchemaErrors');
}
else {
exports.ERROR_SYMBOL = '@@__subSchemaErrors';
}
function annotateWithChildrenErrors(object, childrenErrors) {
var _a;
if (!childrenErrors || childrenErrors.length === 0) {
// Nothing to see here, move along
return object;
}
if (Array.isArray(object)) {
var byIndex_1 = {};
childrenErrors.forEach(function (error) {
if (!error.path) {
return;
}
var index = error.path[1];
var current = byIndex_1[index] || [];
current.push(__assign(__assign({}, error), { path: error.path.slice(1) }));
byIndex_1[index] = current;
});
return object.map(function (item, index) { return annotateWithChildrenErrors(item, byIndex_1[index]); });
}
return __assign(__assign({}, object), (_a = {}, _a[exports.ERROR_SYMBOL] = childrenErrors.map(function (error) { return (__assign(__assign({}, error), (error.path ? { path: error.path.slice(1) } : {}))); }), _a));
}
exports.annotateWithChildrenErrors = annotateWithChildrenErrors;
function getErrorsFromParent(object, fieldName) {
var errors = (object && object[exports.ERROR_SYMBOL]) || [];
var childrenErrors = [];
for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {
var error = errors_1[_i];
if (!error.path || (error.path.length === 1 && error.path[0] === fieldName)) {
return {
kind: 'OWN',
error: error
};
}
else if (error.path[0] === fieldName) {
childrenErrors.push(error);
}
}
return {
kind: 'CHILDREN',
errors: childrenErrors
};
}
exports.getErrorsFromParent = getErrorsFromParent;
var CombinedError = /** @class */ (function (_super) {
__extends(CombinedError, _super);
function CombinedError(message, errors) {
var _this = _super.call(this, message) || this;
_this.errors = errors;
return _this;
}
return CombinedError;
}(Error));
function checkResultAndHandleErrors(result, info, responseKey) {
if (!responseKey) {
responseKey = getResponseKeyFromInfo_1.getResponseKeyFromInfo(info);
}
if (result.errors && (!result.data || result.data[responseKey] == null)) {
// apollo-link-http & http-link-dataloader need the
// result property to be passed through for better error handling.
// If there is only one error, which contains a result property, pass the error through
var newError = result.errors.length === 1 && hasResult(result.errors[0])
? result.errors[0]
: new CombinedError(concatErrors(result.errors), result.errors);
throw error_1.locatedError(newError, info.fieldNodes, graphql_1.responsePathAsArray(info.path));
}
var resultObject = result.data[responseKey];
if (result.errors) {
resultObject = annotateWithChildrenErrors(resultObject, result.errors);
}
return resultObject;
}
exports.checkResultAndHandleErrors = checkResultAndHandleErrors;
function concatErrors(errors) {
return errors.map(function (error) { return error.message; }).join('\n');
}
function hasResult(error) {
return error.result || error.extensions || (error.originalError && error.originalError.result);
}
//# sourceMappingURL=errors.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/stitching/errors.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,7 @@
import { GraphQLResolveInfo } from 'graphql';
/**
* Get the key under which the result of this resolver will be placed in the response JSON. Basically, just
* resolves aliases.
* @param info The info argument to the resolver.
*/
export declare function getResponseKeyFromInfo(info: GraphQLResolveInfo): string;

View File

@@ -0,0 +1,11 @@
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Get the key under which the result of this resolver will be placed in the response JSON. Basically, just
* resolves aliases.
* @param info The info argument to the resolver.
*/
function getResponseKeyFromInfo(info) {
return info.fieldNodes[0].alias ? info.fieldNodes[0].alias.value : info.fieldName;
}
exports.getResponseKeyFromInfo = getResponseKeyFromInfo;
//# sourceMappingURL=getResponseKeyFromInfo.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"getResponseKeyFromInfo.js","sourceRoot":"","sources":["../../src/stitching/getResponseKeyFromInfo.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,IAAwB;IAC7D,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;AACpF,CAAC;AAFD,wDAEC"}

6
node_modules/graphql-tools/dist/stitching/index.d.ts generated vendored Normal file
View File

@@ -0,0 +1,6 @@
import makeRemoteExecutableSchema, { createResolver as defaultCreateRemoteResolver } from './makeRemoteExecutableSchema';
import introspectSchema from './introspectSchema';
import mergeSchemas from './mergeSchemas';
import delegateToSchema from './delegateToSchema';
import defaultMergedResolver from './defaultMergedResolver';
export { makeRemoteExecutableSchema, introspectSchema, mergeSchemas, delegateToSchema, defaultMergedResolver, defaultCreateRemoteResolver };

13
node_modules/graphql-tools/dist/stitching/index.js generated vendored Normal file
View File

@@ -0,0 +1,13 @@
Object.defineProperty(exports, "__esModule", { value: true });
var makeRemoteExecutableSchema_1 = require("./makeRemoteExecutableSchema");
exports.makeRemoteExecutableSchema = makeRemoteExecutableSchema_1.default;
exports.defaultCreateRemoteResolver = makeRemoteExecutableSchema_1.createResolver;
var introspectSchema_1 = require("./introspectSchema");
exports.introspectSchema = introspectSchema_1.default;
var mergeSchemas_1 = require("./mergeSchemas");
exports.mergeSchemas = mergeSchemas_1.default;
var delegateToSchema_1 = require("./delegateToSchema");
exports.delegateToSchema = delegateToSchema_1.default;
var defaultMergedResolver_1 = require("./defaultMergedResolver");
exports.defaultMergedResolver = defaultMergedResolver_1.default;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stitching/index.ts"],"names":[],"mappings":";AAAA,2EAAyH;AAOvH,qCAPK,oCAA0B,CAOL;AAO1B,sCAdqD,2CAA2B,CAcrD;AAb7B,uDAAkD;AAOhD,2BAPK,0BAAgB,CAOL;AANlB,+CAA0C;AAOxC,uBAPK,sBAAY,CAOL;AANd,uDAAkD;AAShD,2BATK,0BAAgB,CASL;AARlB,iEAA4D;AAS1D,gCATK,+BAAqB,CASL"}

View File

@@ -0,0 +1,6 @@
import { GraphQLSchema } from 'graphql';
import { ApolloLink } from 'apollo-link';
import { Fetcher } from './makeRemoteExecutableSchema';
export default function introspectSchema(fetcher: ApolloLink | Fetcher, linkContext?: {
[key: string]: any;
}): Promise<GraphQLSchema>;

View File

@@ -0,0 +1,72 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var graphql_1 = require("graphql");
var utilities_1 = require("graphql/utilities");
var linkToFetcher_1 = require("./linkToFetcher");
var parsedIntrospectionQuery = graphql_1.parse(utilities_1.getIntrospectionQuery());
function introspectSchema(fetcher, linkContext) {
return __awaiter(this, void 0, void 0, function () {
var introspectionResult, schema;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
// Convert link to fetcher
if (fetcher.request) {
fetcher = linkToFetcher_1.default(fetcher);
}
return [4 /*yield*/, fetcher({
query: parsedIntrospectionQuery,
context: linkContext,
})];
case 1:
introspectionResult = _a.sent();
if ((introspectionResult.errors && introspectionResult.errors.length) ||
!introspectionResult.data.__schema) {
throw introspectionResult.errors;
}
else {
schema = graphql_1.buildClientSchema(introspectionResult.data);
return [2 /*return*/, schema];
}
return [2 /*return*/];
}
});
});
}
exports.default = introspectSchema;
//# sourceMappingURL=introspectSchema.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"introspectSchema.js","sourceRoot":"","sources":["../../src/stitching/introspectSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAAmD;AACnD,+CAA0D;AAG1D,iDAA4C;AAE5C,IAAM,wBAAwB,GAAiB,eAAK,CAAC,iCAAqB,EAAE,CAAC,CAAC;AAE9E,SAA8B,gBAAgB,CAC5C,OAA6B,EAC7B,WAAoC;;;;;;oBAEpC,0BAA0B;oBAC1B,IAAK,OAAsB,CAAC,OAAO,EAAE;wBACnC,OAAO,GAAG,uBAAa,CAAC,OAAqB,CAAC,CAAC;qBAChD;oBAE2B,qBAAO,OAAmB,CAAC;4BACrD,KAAK,EAAE,wBAAwB;4BAC/B,OAAO,EAAE,WAAW;yBACrB,CAAC,EAAA;;oBAHI,mBAAmB,GAAG,SAG1B;oBAEF,IACE,CAAC,mBAAmB,CAAC,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC;wBACjE,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAClC;wBACA,MAAM,mBAAmB,CAAC,MAAM,CAAC;qBAClC;yBAAM;wBACC,MAAM,GAAG,2BAAiB,CAAC,mBAAmB,CAAC,IAEpD,CAAC,CAAC;wBACH,sBAAO,MAAM,EAAC;qBACf;;;;;CACF;AAzBD,mCAyBC"}

View File

@@ -0,0 +1,4 @@
import { Fetcher } from './makeRemoteExecutableSchema';
import { ApolloLink } from 'apollo-link';
export { execute } from 'apollo-link';
export default function linkToFetcher(link: ApolloLink): Fetcher;

View File

@@ -0,0 +1,11 @@
Object.defineProperty(exports, "__esModule", { value: true });
var apollo_link_1 = require("apollo-link");
var apollo_link_2 = require("apollo-link");
exports.execute = apollo_link_2.execute;
function linkToFetcher(link) {
return function (fetcherOperation) {
return apollo_link_1.makePromise(apollo_link_1.execute(link, fetcherOperation));
};
}
exports.default = linkToFetcher;
//# sourceMappingURL=linkToFetcher.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"linkToFetcher.js","sourceRoot":"","sources":["../../src/stitching/linkToFetcher.ts"],"names":[],"mappings":";AAEA,2CAKqB;AAErB,2CAAsC;AAA7B,gCAAA,OAAO,CAAA;AAEhB,SAAwB,aAAa,CAAC,IAAgB;IACpD,OAAO,UAAC,gBAAkC;QACxC,OAAO,yBAAW,CAAC,qBAAO,CAAC,IAAI,EAAE,gBAAkC,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC;AACJ,CAAC;AAJD,gCAIC"}

View File

@@ -0,0 +1,44 @@
import { ApolloLink } from 'apollo-link';
import { GraphQLFieldResolver, GraphQLSchema, ExecutionResult, GraphQLResolveInfo, DocumentNode, BuildSchemaOptions } from 'graphql';
export declare type ResolverFn = (rootValue?: any, args?: any, context?: any, info?: GraphQLResolveInfo) => AsyncIterator<any>;
export declare type Fetcher = (operation: FetcherOperation) => Promise<ExecutionResult>;
export declare type FetcherOperation = {
query: DocumentNode;
operationName?: string;
variables?: {
[key: string]: any;
};
context?: {
[key: string]: any;
};
};
/**
* This type has been copied inline from its source on `@types/graphql`:
*
* https://git.io/Jv8NX
*
* Previously, it was imported from `graphql/utilities/schemaPrinter`, however
* that module has been removed in `graphql@15`. Furthermore, the sole property
* on this type is due to be deprecated in `graphql@16`.
*/
interface PrintSchemaOptions {
/**
* Descriptions are defined as preceding string literals, however an older
* experimental version of the SDL supported preceding comments as
* descriptions. Set to true to enable this deprecated behavior.
* This option is provided to ease adoption and will be removed in v16.
*
* Default: false
*/
commentDescriptions?: boolean;
}
export default function makeRemoteExecutableSchema({ schema, link, fetcher, createResolver: customCreateResolver, buildSchemaOptions, printSchemaOptions }: {
schema: GraphQLSchema | string;
link?: ApolloLink;
fetcher?: Fetcher;
createResolver?: (fetcher: Fetcher) => GraphQLFieldResolver<any, any>;
buildSchemaOptions?: BuildSchemaOptions;
printSchemaOptions?: PrintSchemaOptions;
}): GraphQLSchema;
export declare function createResolver(fetcher: Fetcher): GraphQLFieldResolver<any, any>;
export {};

View File

@@ -0,0 +1,186 @@
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
Object.defineProperty(exports, "__esModule", { value: true });
var graphql_1 = require("graphql");
var linkToFetcher_1 = require("./linkToFetcher");
var isEmptyObject_1 = require("../isEmptyObject");
var makeExecutableSchema_1 = require("../makeExecutableSchema");
var schemaRecreation_1 = require("./schemaRecreation");
var resolveFromParentTypename_1 = require("./resolveFromParentTypename");
var defaultMergedResolver_1 = require("./defaultMergedResolver");
var errors_1 = require("./errors");
var observableToAsyncIterable_1 = require("./observableToAsyncIterable");
function makeRemoteExecutableSchema(_a) {
var _b;
var schema = _a.schema, link = _a.link, fetcher = _a.fetcher, _c = _a.createResolver, customCreateResolver = _c === void 0 ? createResolver : _c, buildSchemaOptions = _a.buildSchemaOptions, _d = _a.printSchemaOptions, printSchemaOptions = _d === void 0 ? { commentDescriptions: true } : _d;
if (!fetcher && link) {
fetcher = linkToFetcher_1.default(link);
}
var typeDefs;
if (typeof schema === 'string') {
typeDefs = schema;
schema = graphql_1.buildSchema(typeDefs, buildSchemaOptions);
}
else {
typeDefs = graphql_1.printSchema(schema, printSchemaOptions);
}
// prepare query resolvers
var queryResolvers = {};
var queryType = schema.getQueryType();
var queries = queryType.getFields();
Object.keys(queries).forEach(function (key) {
queryResolvers[key] = customCreateResolver(fetcher);
});
// prepare mutation resolvers
var mutationResolvers = {};
var mutationType = schema.getMutationType();
if (mutationType) {
var mutations = mutationType.getFields();
Object.keys(mutations).forEach(function (key) {
mutationResolvers[key] = customCreateResolver(fetcher);
});
}
// prepare subscription resolvers
var subscriptionResolvers = {};
var subscriptionType = schema.getSubscriptionType();
if (subscriptionType) {
var subscriptions = subscriptionType.getFields();
Object.keys(subscriptions).forEach(function (key) {
subscriptionResolvers[key] = {
subscribe: createSubscriptionResolver(key, link)
};
});
}
// merge resolvers into resolver map
var resolvers = (_b = {}, _b[queryType.name] = queryResolvers, _b);
if (!isEmptyObject_1.default(mutationResolvers)) {
resolvers[mutationType.name] = mutationResolvers;
}
if (!isEmptyObject_1.default(subscriptionResolvers)) {
resolvers[subscriptionType.name] = subscriptionResolvers;
}
// add missing abstract resolvers (scalar, unions, interfaces)
var typeMap = schema.getTypeMap();
var types = Object.keys(typeMap).map(function (name) { return typeMap[name]; });
var _loop_1 = function (type) {
if (type instanceof graphql_1.GraphQLInterfaceType || type instanceof graphql_1.GraphQLUnionType) {
resolvers[type.name] = {
__resolveType: function (parent, context, info) {
return resolveFromParentTypename_1.default(parent, info.schema);
}
};
}
else if (type instanceof graphql_1.GraphQLScalarType) {
if (!(type === graphql_1.GraphQLID ||
type === graphql_1.GraphQLString ||
type === graphql_1.GraphQLFloat ||
type === graphql_1.GraphQLBoolean ||
type === graphql_1.GraphQLInt)) {
resolvers[type.name] = schemaRecreation_1.recreateType(type, function (name) { return null; }, false);
}
}
else if (type instanceof graphql_1.GraphQLObjectType &&
type.name.slice(0, 2) !== '__' &&
type !== queryType &&
type !== mutationType &&
type !== subscriptionType) {
var resolver_1 = {};
Object.keys(type.getFields()).forEach(function (field) {
resolver_1[field] = defaultMergedResolver_1.default;
});
resolvers[type.name] = resolver_1;
}
};
for (var _i = 0, types_1 = types; _i < types_1.length; _i++) {
var type = types_1[_i];
_loop_1(type);
}
return makeExecutableSchema_1.makeExecutableSchema({
typeDefs: typeDefs,
resolvers: resolvers
});
}
exports.default = makeRemoteExecutableSchema;
function createResolver(fetcher) {
var _this = this;
return function (root, args, context, info) { return __awaiter(_this, void 0, void 0, function () {
var fragments, document, result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
fragments = Object.keys(info.fragments).map(function (fragment) { return info.fragments[fragment]; });
document = {
kind: graphql_1.Kind.DOCUMENT,
definitions: __spreadArrays([info.operation], fragments)
};
return [4 /*yield*/, fetcher({
query: document,
variables: info.variableValues,
context: { graphqlContext: context }
})];
case 1:
result = _a.sent();
return [2 /*return*/, errors_1.checkResultAndHandleErrors(result, info)];
}
});
}); };
}
exports.createResolver = createResolver;
function createSubscriptionResolver(name, link) {
return function (root, args, context, info) {
var fragments = Object.keys(info.fragments).map(function (fragment) { return info.fragments[fragment]; });
var document = {
kind: graphql_1.Kind.DOCUMENT,
definitions: __spreadArrays([info.operation], fragments)
};
var operation = {
query: document,
variables: info.variableValues,
context: { graphqlContext: context }
};
var observable = linkToFetcher_1.execute(link, operation);
return observableToAsyncIterable_1.observableToAsyncIterable(observable);
};
}
//# sourceMappingURL=makeRemoteExecutableSchema.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"makeRemoteExecutableSchema.js","sourceRoot":"","sources":["../../src/stitching/makeRemoteExecutableSchema.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,5 @@
/**
* Given an AsyncIterable and a callback function, return an AsyncIterator
* which produces values mapped via calling the callback function.
*/
export default function mapAsyncIterator<T, U>(iterator: AsyncIterator<T>, callback: (value: T) => Promise<U> | U, rejectCallback?: any): AsyncIterator<U>;

View File

@@ -0,0 +1,59 @@
Object.defineProperty(exports, "__esModule", { value: true });
var iterall_1 = require("iterall");
/**
* Given an AsyncIterable and a callback function, return an AsyncIterator
* which produces values mapped via calling the callback function.
*/
function mapAsyncIterator(iterator, callback, rejectCallback) {
var _a;
var $return;
var abruptClose;
if (typeof iterator.return === 'function') {
$return = iterator.return;
abruptClose = function (error) {
var rethrow = function () { return Promise.reject(error); };
return $return.call(iterator).then(rethrow, rethrow);
};
}
function mapResult(result) {
return result.done
? result
: asyncMapValue(result.value, callback).then(iteratorResult, abruptClose);
}
var mapReject;
if (rejectCallback) {
// Capture rejectCallback to ensure it cannot be null.
var reject_1 = rejectCallback;
mapReject = function (error) {
return asyncMapValue(error, reject_1).then(iteratorResult, abruptClose);
};
}
return _a = {
next: function () {
return iterator.next().then(mapResult, mapReject);
},
return: function () {
return $return
? $return.call(iterator).then(mapResult, mapReject)
: Promise.resolve({ value: undefined, done: true });
},
throw: function (error) {
if (typeof iterator.throw === 'function') {
return iterator.throw(error).then(mapResult, mapReject);
}
return Promise.reject(error).catch(abruptClose);
}
},
_a[iterall_1.$$asyncIterator] = function () {
return this;
},
_a;
}
exports.default = mapAsyncIterator;
function asyncMapValue(value, callback) {
return new Promise(function (resolve) { return resolve(callback(value)); });
}
function iteratorResult(value) {
return { value: value, done: false };
}
//# sourceMappingURL=mapAsyncIterator.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"mapAsyncIterator.js","sourceRoot":"","sources":["../../src/stitching/mapAsyncIterator.ts"],"names":[],"mappings":";AAAA,mCAA0C;AAE1C;;;GAGG;AACH,SAAwB,gBAAgB,CACtC,QAA0B,EAC1B,QAAsC,EACtC,cAAoB;;IAEpB,IAAI,OAAY,CAAC;IACjB,IAAI,WAAgB,CAAC;IAErB,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE;QACzC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC1B,WAAW,GAAG,UAAC,KAAU;YACvB,IAAM,OAAO,GAAG,cAAM,OAAA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAArB,CAAqB,CAAC;YAC5C,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC,CAAC;KACH;IAED,SAAS,SAAS,CAAC,MAAW;QAC5B,OAAO,MAAM,CAAC,IAAI;YAChB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,SAAc,CAAC;IACnB,IAAI,cAAc,EAAE;QAClB,sDAAsD;QACtD,IAAM,QAAM,GAAG,cAAc,CAAC;QAC9B,SAAS,GAAG,UAAC,KAAU;YACrB,OAAA,aAAa,CAAC,KAAK,EAAE,QAAM,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC;QAA9D,CAA8D,CAAC;KAClE;IAED,OAAQ;YACN,IAAI;gBACF,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACpD,CAAC;YACD,MAAM;gBACJ,OAAO,OAAO;oBACZ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;oBACnD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,CAAC;YACD,KAAK,EAAL,UAAM,KAAU;gBACd,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,UAAU,EAAE;oBACxC,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;iBACzD;gBACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClD,CAAC;;QACD,GAAC,yBAAe,IAAhB;YACE,OAAO,IAAI,CAAC;QACd,CAAC;UACM,CAAC;AACZ,CAAC;AAjDD,mCAiDC;AAED,SAAS,aAAa,CACpB,KAAQ,EACR,QAAsC;IAEtC,OAAO,IAAI,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAxB,CAAwB,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,cAAc,CAAI,KAAQ;IACjC,OAAO,EAAE,KAAK,OAAA,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC"}

View File

@@ -0,0 +1,21 @@
import { DocumentNode, GraphQLNamedType, GraphQLSchema } from 'graphql';
import { IResolversParameter } from '../Interfaces';
import { SchemaDirectiveVisitor } from '../schemaVisitor';
export declare type OnTypeConflict = (left: GraphQLNamedType, right: GraphQLNamedType, info?: {
left: {
schema?: GraphQLSchema;
};
right: {
schema?: GraphQLSchema;
};
}) => GraphQLNamedType;
export default function mergeSchemas({ schemas, onTypeConflict, resolvers, schemaDirectives, inheritResolversFromInterfaces, mergeDirectives, }: {
schemas: Array<string | GraphQLSchema | DocumentNode | Array<GraphQLNamedType>>;
onTypeConflict?: OnTypeConflict;
resolvers?: IResolversParameter;
schemaDirectives?: {
[name: string]: typeof SchemaDirectiveVisitor;
};
inheritResolversFromInterfaces?: boolean;
mergeDirectives?: boolean;
}): GraphQLSchema;

View File

@@ -0,0 +1,358 @@
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
Object.defineProperty(exports, "__esModule", { value: true });
var graphql_1 = require("graphql");
var makeExecutableSchema_1 = require("../makeExecutableSchema");
var schemaRecreation_1 = require("./schemaRecreation");
var delegateToSchema_1 = require("./delegateToSchema");
var typeFromAST_1 = require("./typeFromAST");
var transforms_1 = require("../transforms");
var mergeDeep_1 = require("../mergeDeep");
var schemaVisitor_1 = require("../schemaVisitor");
function mergeSchemas(_a) {
var schemas = _a.schemas, onTypeConflict = _a.onTypeConflict, resolvers = _a.resolvers, schemaDirectives = _a.schemaDirectives, inheritResolversFromInterfaces = _a.inheritResolversFromInterfaces, mergeDirectives = _a.mergeDirectives;
return mergeSchemasImplementation({
schemas: schemas,
resolvers: resolvers,
schemaDirectives: schemaDirectives,
inheritResolversFromInterfaces: inheritResolversFromInterfaces,
mergeDirectives: mergeDirectives,
});
}
exports.default = mergeSchemas;
function mergeSchemasImplementation(_a) {
var schemas = _a.schemas, resolvers = _a.resolvers, schemaDirectives = _a.schemaDirectives, inheritResolversFromInterfaces = _a.inheritResolversFromInterfaces, mergeDirectives = _a.mergeDirectives;
var allSchemas = [];
var typeCandidates = {};
var types = {};
var extensions = [];
var directives = [];
var fragments = [];
var resolveType = schemaRecreation_1.createResolveType(function (name) {
if (types[name] === undefined) {
throw new Error("Can't find type " + name + ".");
}
return types[name];
});
schemas.forEach(function (schema) {
if (schema instanceof graphql_1.GraphQLSchema) {
allSchemas.push(schema);
var queryType_1 = schema.getQueryType();
var mutationType_1 = schema.getMutationType();
var subscriptionType_1 = schema.getSubscriptionType();
if (queryType_1) {
addTypeCandidate(typeCandidates, 'Query', {
schema: schema,
type: queryType_1,
});
}
if (mutationType_1) {
addTypeCandidate(typeCandidates, 'Mutation', {
schema: schema,
type: mutationType_1,
});
}
if (subscriptionType_1) {
addTypeCandidate(typeCandidates, 'Subscription', {
schema: schema,
type: subscriptionType_1,
});
}
if (mergeDirectives) {
var directiveInstances = schema.getDirectives();
directiveInstances.forEach(function (directive) {
directives.push(directive);
});
}
var typeMap_1 = schema.getTypeMap();
Object.keys(typeMap_1).forEach(function (typeName) {
var type = typeMap_1[typeName];
if (graphql_1.isNamedType(type) &&
graphql_1.getNamedType(type).name.slice(0, 2) !== '__' &&
type !== queryType_1 &&
type !== mutationType_1 &&
type !== subscriptionType_1) {
addTypeCandidate(typeCandidates, type.name, {
schema: schema,
type: type,
});
}
});
}
else if (typeof schema === 'string' ||
(schema && schema.kind === graphql_1.Kind.DOCUMENT)) {
var parsedSchemaDocument = typeof schema === 'string' ? graphql_1.parse(schema) : schema;
parsedSchemaDocument.definitions.forEach(function (def) {
var type = typeFromAST_1.default(def);
if (type instanceof graphql_1.GraphQLDirective && mergeDirectives) {
directives.push(type);
}
else if (type && !(type instanceof graphql_1.GraphQLDirective)) {
addTypeCandidate(typeCandidates, type.name, {
type: type,
});
}
});
var extensionsDocument = makeExecutableSchema_1.extractExtensionDefinitions(parsedSchemaDocument);
if (extensionsDocument.definitions.length > 0) {
extensions.push(extensionsDocument);
}
}
else if (Array.isArray(schema)) {
schema.forEach(function (type) {
addTypeCandidate(typeCandidates, type.name, {
type: type,
});
});
}
else {
throw new Error("Invalid schema passed");
}
});
var mergeInfo = createMergeInfo(allSchemas, fragments);
if (!resolvers) {
resolvers = {};
}
else if (typeof resolvers === 'function') {
console.warn('Passing functions as resolver parameter is deprecated. Use `info.mergeInfo` instead.');
resolvers = resolvers(mergeInfo);
}
else if (Array.isArray(resolvers)) {
resolvers = resolvers.reduce(function (left, right) {
if (typeof right === 'function') {
console.warn('Passing functions as resolver parameter is deprecated. Use `info.mergeInfo` instead.');
right = right(mergeInfo);
}
return mergeDeep_1.default(left, right);
}, {});
}
var generatedResolvers = {};
Object.keys(typeCandidates).forEach(function (typeName) {
var resultType = defaultVisitType(typeName, typeCandidates[typeName]);
if (resultType === null) {
types[typeName] = null;
}
else {
var type = void 0;
var typeResolvers = void 0;
if (graphql_1.isNamedType(resultType)) {
type = resultType;
}
else if (resultType.type) {
type = resultType.type;
typeResolvers = resultType.resolvers;
}
else {
throw new Error("Invalid visitType result for type " + typeName);
}
types[typeName] = schemaRecreation_1.recreateType(type, resolveType, false);
if (typeResolvers) {
generatedResolvers[typeName] = typeResolvers;
}
}
});
var mergedSchema = new graphql_1.GraphQLSchema({
query: types.Query,
mutation: types.Mutation,
subscription: types.Subscription,
types: Object.keys(types).map(function (key) { return types[key]; }),
directives: directives.map(function (directive) { return schemaRecreation_1.recreateDirective(directive, resolveType); })
});
extensions.forEach(function (extension) {
mergedSchema = graphql_1.extendSchema(mergedSchema, extension, {
commentDescriptions: true,
});
});
if (!resolvers) {
resolvers = {};
}
else if (Array.isArray(resolvers)) {
resolvers = resolvers.reduce(mergeDeep_1.default, {});
}
Object.keys(resolvers).forEach(function (typeName) {
var type = resolvers[typeName];
if (type instanceof graphql_1.GraphQLScalarType) {
return;
}
Object.keys(type).forEach(function (fieldName) {
var field = type[fieldName];
if (field.fragment) {
fragments.push({
field: fieldName,
fragment: field.fragment,
});
}
});
});
mergedSchema = makeExecutableSchema_1.addResolveFunctionsToSchema({
schema: mergedSchema,
resolvers: mergeDeep_1.default(generatedResolvers, resolvers),
inheritResolversFromInterfaces: inheritResolversFromInterfaces
});
forEachField(mergedSchema, function (field) {
if (field.resolve) {
var fieldResolver_1 = field.resolve;
field.resolve = function (parent, args, context, info) {
var newInfo = __assign(__assign({}, info), { mergeInfo: mergeInfo });
return fieldResolver_1(parent, args, context, newInfo);
};
}
if (field.subscribe) {
var fieldResolver_2 = field.subscribe;
field.subscribe = function (parent, args, context, info) {
var newInfo = __assign(__assign({}, info), { mergeInfo: mergeInfo });
return fieldResolver_2(parent, args, context, newInfo);
};
}
});
if (schemaDirectives) {
schemaVisitor_1.SchemaDirectiveVisitor.visitSchemaDirectives(mergedSchema, schemaDirectives);
}
return mergedSchema;
}
function createMergeInfo(allSchemas, fragments) {
return {
delegate: function (operation, fieldName, args, context, info, transforms) {
console.warn('`mergeInfo.delegate` is deprecated. ' +
'Use `mergeInfo.delegateToSchema and pass explicit schema instances.');
var schema = guessSchemaByRootField(allSchemas, operation, fieldName);
var expandTransforms = new transforms_1.ExpandAbstractTypes(info.schema, schema);
var fragmentTransform = new transforms_1.ReplaceFieldWithFragment(schema, fragments);
return delegateToSchema_1.default({
schema: schema,
operation: operation,
fieldName: fieldName,
args: args,
context: context,
info: info,
transforms: __spreadArrays((transforms || []), [
expandTransforms,
fragmentTransform,
]),
});
},
delegateToSchema: function (options) {
return delegateToSchema_1.default(__assign(__assign({}, options), { transforms: options.transforms }));
},
fragments: fragments
};
}
function guessSchemaByRootField(schemas, operation, fieldName) {
for (var _i = 0, schemas_1 = schemas; _i < schemas_1.length; _i++) {
var schema = schemas_1[_i];
var rootObject = void 0;
if (operation === 'subscription') {
rootObject = schema.getSubscriptionType();
}
else if (operation === 'mutation') {
rootObject = schema.getMutationType();
}
else {
rootObject = schema.getQueryType();
}
if (rootObject) {
var fields = rootObject.getFields();
if (fields[fieldName]) {
return schema;
}
}
}
throw new Error("Could not find subschema with field `" + operation + "." + fieldName + "`");
}
function createDelegatingResolver(schema, operation, fieldName) {
return function (root, args, context, info) {
return info.mergeInfo.delegateToSchema({
schema: schema,
operation: operation,
fieldName: fieldName,
args: args,
context: context,
info: info,
});
};
}
function forEachField(schema, fn) {
var typeMap = schema.getTypeMap();
Object.keys(typeMap).forEach(function (typeName) {
var type = typeMap[typeName];
if (!graphql_1.getNamedType(type).name.startsWith('__') &&
type instanceof graphql_1.GraphQLObjectType) {
var fields_1 = type.getFields();
Object.keys(fields_1).forEach(function (fieldName) {
var field = fields_1[fieldName];
fn(field, typeName, fieldName);
});
}
});
}
function addTypeCandidate(typeCandidates, name, typeCandidate) {
if (!typeCandidates[name]) {
typeCandidates[name] = [];
}
typeCandidates[name].push(typeCandidate);
}
function defaultVisitType(name, candidates, candidateSelector) {
if (!candidateSelector) {
candidateSelector = function (cands) { return cands[cands.length - 1]; };
}
var resolveType = schemaRecreation_1.createResolveType(function (_, type) { return type; });
if (name === 'Query' || name === 'Mutation' || name === 'Subscription') {
var fields_2 = {};
var operationName_1;
switch (name) {
case 'Query':
operationName_1 = 'query';
break;
case 'Mutation':
operationName_1 = 'mutation';
break;
case 'Subscription':
operationName_1 = 'subscription';
break;
default:
break;
}
var resolvers_1 = {};
var resolverKey_1 = operationName_1 === 'subscription' ? 'subscribe' : 'resolve';
candidates.forEach(function (_a) {
var candidateType = _a.type, schema = _a.schema;
var candidateFields = candidateType.getFields();
fields_2 = __assign(__assign({}, fields_2), candidateFields);
Object.keys(candidateFields).forEach(function (fieldName) {
var _a;
resolvers_1[fieldName] = (_a = {},
_a[resolverKey_1] = createDelegatingResolver(schema, operationName_1, fieldName),
_a);
});
});
var type = new graphql_1.GraphQLObjectType({
name: name,
fields: schemaRecreation_1.fieldMapToFieldConfigMap(fields_2, resolveType, false),
});
return {
type: type,
resolvers: resolvers_1,
};
}
else {
var candidate = candidateSelector(candidates);
return candidate.type;
}
}
//# sourceMappingURL=mergeSchemas.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,5 @@
import { Observable } from 'apollo-link';
import { $$asyncIterator } from 'iterall';
export declare function observableToAsyncIterable<T>(observable: Observable<T>): AsyncIterator<T> & {
[$$asyncIterator]: () => AsyncIterator<T>;
};

View File

@@ -0,0 +1,124 @@
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var iterall_1 = require("iterall");
function observableToAsyncIterable(observable) {
var _a;
var pullQueue = [];
var pushQueue = [];
var listening = true;
var pushValue = function (_a) {
var data = _a.data;
if (pullQueue.length !== 0) {
pullQueue.shift()({ value: data, done: false });
}
else {
pushQueue.push({ value: data });
}
};
var pushError = function (error) {
if (pullQueue.length !== 0) {
pullQueue.shift()({ value: { errors: [error] }, done: false });
}
else {
pushQueue.push({ value: { errors: [error] } });
}
};
var pullValue = function () {
return new Promise(function (resolve) {
if (pushQueue.length !== 0) {
var element = pushQueue.shift();
// either {value: {errors: [...]}} or {value: ...}
resolve(__assign(__assign({}, element), { done: false }));
}
else {
pullQueue.push(resolve);
}
});
};
var subscription = observable.subscribe({
next: function (value) {
pushValue(value);
},
error: function (err) {
pushError(err);
},
});
var emptyQueue = function () {
if (listening) {
listening = false;
subscription.unsubscribe();
pullQueue.forEach(function (resolve) { return resolve({ value: undefined, done: true }); });
pullQueue.length = 0;
pushQueue.length = 0;
}
};
return _a = {
next: function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
return [2 /*return*/, listening ? pullValue() : this.return()];
});
});
},
return: function () {
emptyQueue();
return Promise.resolve({ value: undefined, done: true });
},
throw: function (error) {
emptyQueue();
return Promise.reject(error);
}
},
_a[iterall_1.$$asyncIterator] = function () {
return this;
},
_a;
}
exports.observableToAsyncIterable = observableToAsyncIterable;
//# sourceMappingURL=observableToAsyncIterable.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"observableToAsyncIterable.js","sourceRoot":"","sources":["../../src/stitching/observableToAsyncIterable.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAA0C;AAG1C,SAAgB,yBAAyB,CACvC,UAAyB;;IAIzB,IAAM,SAAS,GAAe,EAAE,CAAC;IACjC,IAAM,SAAS,GAAU,EAAE,CAAC;IAE5B,IAAI,SAAS,GAAG,IAAI,CAAC;IAErB,IAAM,SAAS,GAAG,UAAC,EAAa;YAAX,cAAI;QACvB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SACjD;aAAM;YACL,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;SACjC;IACH,CAAC,CAAC;IAEF,IAAM,SAAS,GAAG,UAAC,KAAU;QAC3B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;SAChE;aAAM;YACL,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;SAChD;IACH,CAAC,CAAC;IAEF,IAAM,SAAS,GAAG;QAChB,OAAO,IAAI,OAAO,CAAC,UAAA,OAAO;YACxB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,IAAM,OAAO,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;gBAClC,kDAAkD;gBAClD,OAAO,uBACF,OAAO,KACV,IAAI,EAAE,KAAK,IACX,CAAC;aACJ;iBAAM;gBACL,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACzB;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC;QACxC,IAAI,EAAJ,UAAK,KAAU;YACb,SAAS,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QACD,KAAK,EAAL,UAAM,GAAU;YACd,SAAS,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;KACF,CAAC,CAAC;IAEH,IAAM,UAAU,GAAG;QACjB,IAAI,SAAS,EAAE;YACb,SAAS,GAAG,KAAK,CAAC;YAClB,YAAY,CAAC,WAAW,EAAE,CAAC;YAC3B,SAAS,CAAC,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAzC,CAAyC,CAAC,CAAC;YACxE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YACrB,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;SACtB;IACH,CAAC,CAAC;IAEF;YACQ,IAAI;;;wBACR,sBAAO,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAC;;;aAChD;YACD,MAAM;gBACJ,UAAU,EAAE,CAAC;gBACb,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,KAAK,YAAC,KAAK;gBACT,UAAU,EAAE,CAAC;gBACb,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;;QACD,GAAC,yBAAe,IAAhB;YACE,OAAO,IAAI,CAAC;QACd,CAAC;WACD;AACJ,CAAC;AA5ED,8DA4EC"}

View File

@@ -0,0 +1,2 @@
import { GraphQLObjectType, GraphQLSchema } from 'graphql';
export default function resolveFromParentTypename(parent: any, schema: GraphQLSchema): GraphQLObjectType<any, any>;

View File

@@ -0,0 +1,15 @@
Object.defineProperty(exports, "__esModule", { value: true });
var graphql_1 = require("graphql");
function resolveFromParentTypename(parent, schema) {
var parentTypename = parent['__typename'];
if (!parentTypename) {
throw new Error('Did not fetch typename for object, unable to resolve interface.');
}
var resolvedType = schema.getType(parentTypename);
if (!(resolvedType instanceof graphql_1.GraphQLObjectType)) {
throw new Error('__typename did not match an object type: ' + parentTypename);
}
return resolvedType;
}
exports.default = resolveFromParentTypename;
//# sourceMappingURL=resolveFromParentTypename.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"resolveFromParentTypename.js","sourceRoot":"","sources":["../../src/stitching/resolveFromParentTypename.ts"],"names":[],"mappings":";AAAA,mCAA2D;AAE3D,SAAwB,yBAAyB,CAC/C,MAAW,EACX,MAAqB;IAErB,IAAM,cAAc,GAAW,MAAM,CAAC,YAAY,CAAC,CAAC;IACpD,IAAI,CAAC,cAAc,EAAE;QACnB,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;KACH;IAED,IAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAEpD,IAAI,CAAC,CAAC,YAAY,YAAY,2BAAiB,CAAC,EAAE;QAChD,MAAM,IAAI,KAAK,CACb,2CAA2C,GAAG,cAAc,CAC7D,CAAC;KACH;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AApBD,4CAoBC"}

View File

@@ -0,0 +1,19 @@
import { GraphQLSchema, GraphQLObjectType } from 'graphql';
import { IResolvers, Operation } from '../Interfaces';
import { Transform } from '../transforms/index';
export declare type Mapping = {
[typeName: string]: {
[fieldName: string]: {
name: string;
operation: Operation;
};
};
};
export declare function generateProxyingResolvers(targetSchema: GraphQLSchema, transforms: Array<Transform>, mapping: Mapping): IResolvers;
export declare function generateSimpleMapping(targetSchema: GraphQLSchema): Mapping;
export declare function generateMappingFromObjectType(type: GraphQLObjectType, operation: Operation): {
[fieldName: string]: {
name: string;
operation: Operation;
};
};

60
node_modules/graphql-tools/dist/stitching/resolvers.js generated vendored Normal file
View File

@@ -0,0 +1,60 @@
Object.defineProperty(exports, "__esModule", { value: true });
var delegateToSchema_1 = require("./delegateToSchema");
function generateProxyingResolvers(targetSchema, transforms, mapping) {
var result = {};
Object.keys(mapping).forEach(function (name) {
result[name] = {};
var innerMapping = mapping[name];
Object.keys(innerMapping).forEach(function (from) {
var _a;
var to = innerMapping[from];
var resolverType = to.operation === 'subscription' ? 'subscribe' : 'resolve';
result[name][from] = (_a = {},
_a[resolverType] = createProxyingResolver(targetSchema, to.operation, to.name, transforms),
_a);
});
});
return result;
}
exports.generateProxyingResolvers = generateProxyingResolvers;
function generateSimpleMapping(targetSchema) {
var query = targetSchema.getQueryType();
var mutation = targetSchema.getMutationType();
var subscription = targetSchema.getSubscriptionType();
var result = {};
if (query) {
result[query.name] = generateMappingFromObjectType(query, 'query');
}
if (mutation) {
result[mutation.name] = generateMappingFromObjectType(mutation, 'mutation');
}
if (subscription) {
result[subscription.name] = generateMappingFromObjectType(subscription, 'subscription');
}
return result;
}
exports.generateSimpleMapping = generateSimpleMapping;
function generateMappingFromObjectType(type, operation) {
var result = {};
var fields = type.getFields();
Object.keys(fields).forEach(function (fieldName) {
result[fieldName] = {
name: fieldName,
operation: operation,
};
});
return result;
}
exports.generateMappingFromObjectType = generateMappingFromObjectType;
function createProxyingResolver(schema, operation, fieldName, transforms) {
return function (parent, args, context, info) { return delegateToSchema_1.default({
schema: schema,
operation: operation,
fieldName: fieldName,
args: {},
context: context,
info: info,
transforms: transforms,
}); };
}
//# sourceMappingURL=resolvers.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../src/stitching/resolvers.ts"],"names":[],"mappings":";AAMA,uDAAkD;AAYlD,SAAgB,yBAAyB,CACvC,YAA2B,EAC3B,UAA4B,EAC5B,OAAgB;IAEhB,IAAM,MAAM,GAAG,EAAE,CAAC;IAClB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;QAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAClB,IAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI;;YACpC,IAAM,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAM,YAAY,GAChB,EAAE,CAAC,SAAS,KAAK,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;gBAChB,GAAC,YAAY,IAAG,sBAAsB,CACpC,YAAY,EACZ,EAAE,CAAC,SAAS,EACZ,EAAE,CAAC,IAAI,EACP,UAAU,CACX;mBACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAxBD,8DAwBC;AAED,SAAgB,qBAAqB,CAAC,YAA2B;IAC/D,IAAM,KAAK,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;IAC1C,IAAM,QAAQ,GAAG,YAAY,CAAC,eAAe,EAAE,CAAC;IAChD,IAAM,YAAY,GAAG,YAAY,CAAC,mBAAmB,EAAE,CAAC;IAExD,IAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,KAAK,EAAE;QACT,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACpE;IACD,IAAI,QAAQ,EAAE;QACZ,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,6BAA6B,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;KAC7E;IACD,IAAI,YAAY,EAAE;QAChB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,6BAA6B,CACvD,YAAY,EACZ,cAAc,CACf,CAAC;KACH;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AApBD,sDAoBC;AAED,SAAgB,6BAA6B,CAC3C,IAAuB,EACvB,SAAoB;IAOpB,IAAM,MAAM,GAAG,EAAE,CAAC;IAClB,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAA,SAAS;QACnC,MAAM,CAAC,SAAS,CAAC,GAAG;YAClB,IAAI,EAAE,SAAS;YACf,SAAS,WAAA;SACV,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAlBD,sEAkBC;AAED,SAAS,sBAAsB,CAC7B,MAAqB,EACrB,SAAoB,EACpB,SAAiB,EACjB,UAA4B;IAE5B,OAAO,UAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAK,OAAA,0BAAgB,CAAC;QACvD,MAAM,QAAA;QACN,SAAS,WAAA;QACT,SAAS,WAAA;QACT,IAAI,EAAE,EAAE;QACR,OAAO,SAAA;QACP,IAAI,MAAA;QACJ,UAAU,YAAA;KACX,CAAC,EARsC,CAQtC,CAAC;AACL,CAAC"}

View File

@@ -0,0 +1,11 @@
import { GraphQLArgument, GraphQLArgumentConfig, GraphQLField, GraphQLFieldConfig, GraphQLFieldConfigArgumentMap, GraphQLFieldConfigMap, GraphQLFieldMap, GraphQLInputField, GraphQLInputFieldConfig, GraphQLInputFieldConfigMap, GraphQLInputFieldMap, GraphQLNamedType, GraphQLType, GraphQLDirective } from 'graphql';
import { ResolveType } from '../Interfaces';
export declare function recreateType(type: GraphQLNamedType, resolveType: ResolveType<any>, keepResolvers: boolean): GraphQLNamedType;
export declare function recreateDirective(directive: GraphQLDirective, resolveType: ResolveType<any>): GraphQLDirective;
export declare function fieldMapToFieldConfigMap(fields: GraphQLFieldMap<any, any>, resolveType: ResolveType<any>, keepResolvers: boolean): GraphQLFieldConfigMap<any, any>;
export declare function createResolveType(getType: (name: string, type: GraphQLType) => GraphQLType | null): ResolveType<any>;
export declare function fieldToFieldConfig(field: GraphQLField<any, any>, resolveType: ResolveType<any>, keepResolvers: boolean): GraphQLFieldConfig<any, any>;
export declare function argsToFieldConfigArgumentMap(args: Array<GraphQLArgument>, resolveType: ResolveType<any>): GraphQLFieldConfigArgumentMap;
export declare function argumentToArgumentConfig(argument: GraphQLArgument, resolveType: ResolveType<any>): [string, GraphQLArgumentConfig] | null;
export declare function inputFieldMapToFieldConfigMap(fields: GraphQLInputFieldMap, resolveType: ResolveType<any>): GraphQLInputFieldConfigMap;
export declare function inputFieldToFieldConfig(field: GraphQLInputField, resolveType: ResolveType<any>): GraphQLInputFieldConfig;

View File

@@ -0,0 +1,255 @@
Object.defineProperty(exports, "__esModule", { value: true });
var graphql_1 = require("graphql");
var isSpecifiedScalarType_1 = require("../isSpecifiedScalarType");
var resolveFromParentTypename_1 = require("./resolveFromParentTypename");
var defaultMergedResolver_1 = require("./defaultMergedResolver");
function recreateType(type, resolveType, keepResolvers) {
if (type instanceof graphql_1.GraphQLObjectType) {
var fields_1 = type.getFields();
var interfaces_1 = type.getInterfaces();
return new graphql_1.GraphQLObjectType({
name: type.name,
description: type.description,
astNode: type.astNode,
isTypeOf: keepResolvers ? type.isTypeOf : undefined,
fields: function () {
return fieldMapToFieldConfigMap(fields_1, resolveType, keepResolvers);
},
interfaces: function () { return interfaces_1.map(function (iface) { return resolveType(iface); }); },
});
}
else if (type instanceof graphql_1.GraphQLInterfaceType) {
var fields_2 = type.getFields();
return new graphql_1.GraphQLInterfaceType({
name: type.name,
description: type.description,
astNode: type.astNode,
fields: function () {
return fieldMapToFieldConfigMap(fields_2, resolveType, keepResolvers);
},
resolveType: keepResolvers
? type.resolveType
: function (parent, context, info) {
return resolveFromParentTypename_1.default(parent, info.schema);
},
});
}
else if (type instanceof graphql_1.GraphQLUnionType) {
return new graphql_1.GraphQLUnionType({
name: type.name,
description: type.description,
astNode: type.astNode,
types: function () { return type.getTypes().map(function (unionMember) { return resolveType(unionMember); }); },
resolveType: keepResolvers
? type.resolveType
: function (parent, context, info) {
return resolveFromParentTypename_1.default(parent, info.schema);
},
});
}
else if (type instanceof graphql_1.GraphQLInputObjectType) {
return new graphql_1.GraphQLInputObjectType({
name: type.name,
description: type.description,
astNode: type.astNode,
fields: function () {
return inputFieldMapToFieldConfigMap(type.getFields(), resolveType);
},
});
}
else if (type instanceof graphql_1.GraphQLEnumType) {
var values = type.getValues();
var newValues_1 = {};
values.forEach(function (value) {
newValues_1[value.name] = {
value: value.value,
deprecationReason: value.deprecationReason,
description: value.description,
astNode: value.astNode,
};
});
return new graphql_1.GraphQLEnumType({
name: type.name,
description: type.description,
astNode: type.astNode,
values: newValues_1,
});
}
else if (type instanceof graphql_1.GraphQLScalarType) {
if (keepResolvers || isSpecifiedScalarType_1.default(type)) {
return type;
}
else {
return new graphql_1.GraphQLScalarType({
name: type.name,
description: type.description,
astNode: type.astNode,
serialize: function (value) {
return value;
},
parseValue: function (value) {
return value;
},
parseLiteral: function (ast) {
return parseLiteral(ast);
},
});
}
}
else {
throw new Error("Invalid type " + type);
}
}
exports.recreateType = recreateType;
function recreateDirective(directive, resolveType) {
return new graphql_1.GraphQLDirective({
name: directive.name,
description: directive.description,
locations: directive.locations,
args: argsToFieldConfigArgumentMap(directive.args, resolveType),
astNode: directive.astNode,
});
}
exports.recreateDirective = recreateDirective;
function parseLiteral(ast) {
switch (ast.kind) {
case graphql_1.Kind.STRING:
case graphql_1.Kind.BOOLEAN: {
return ast.value;
}
case graphql_1.Kind.INT:
case graphql_1.Kind.FLOAT: {
return parseFloat(ast.value);
}
case graphql_1.Kind.OBJECT: {
var value_1 = Object.create(null);
ast.fields.forEach(function (field) {
value_1[field.name.value] = parseLiteral(field.value);
});
return value_1;
}
case graphql_1.Kind.LIST: {
return ast.values.map(parseLiteral);
}
default:
return null;
}
}
function fieldMapToFieldConfigMap(fields, resolveType, keepResolvers) {
var result = {};
Object.keys(fields).forEach(function (name) {
var field = fields[name];
var type = resolveType(field.type);
if (type !== null) {
result[name] = fieldToFieldConfig(fields[name], resolveType, keepResolvers);
}
});
return result;
}
exports.fieldMapToFieldConfigMap = fieldMapToFieldConfigMap;
function createResolveType(getType) {
var resolveType = function (type) {
if (type instanceof graphql_1.GraphQLList) {
var innerType = resolveType(type.ofType);
if (innerType === null) {
return null;
}
else {
return new graphql_1.GraphQLList(innerType);
}
}
else if (type instanceof graphql_1.GraphQLNonNull) {
var innerType = resolveType(type.ofType);
if (innerType === null) {
return null;
}
else {
return new graphql_1.GraphQLNonNull(innerType);
}
}
else if (graphql_1.isNamedType(type)) {
var typeName = graphql_1.getNamedType(type).name;
switch (typeName) {
case graphql_1.GraphQLInt.name:
return graphql_1.GraphQLInt;
case graphql_1.GraphQLFloat.name:
return graphql_1.GraphQLFloat;
case graphql_1.GraphQLString.name:
return graphql_1.GraphQLString;
case graphql_1.GraphQLBoolean.name:
return graphql_1.GraphQLBoolean;
case graphql_1.GraphQLID.name:
return graphql_1.GraphQLID;
default:
return getType(typeName, type);
}
}
else {
return type;
}
};
return resolveType;
}
exports.createResolveType = createResolveType;
function fieldToFieldConfig(field, resolveType, keepResolvers) {
return {
type: resolveType(field.type),
args: argsToFieldConfigArgumentMap(field.args, resolveType),
resolve: keepResolvers ? field.resolve : defaultMergedResolver_1.default,
subscribe: keepResolvers ? field.subscribe : null,
description: field.description,
deprecationReason: field.deprecationReason,
astNode: field.astNode,
};
}
exports.fieldToFieldConfig = fieldToFieldConfig;
function argsToFieldConfigArgumentMap(args, resolveType) {
var result = {};
args.forEach(function (arg) {
var newArg = argumentToArgumentConfig(arg, resolveType);
if (newArg) {
result[newArg[0]] = newArg[1];
}
});
return result;
}
exports.argsToFieldConfigArgumentMap = argsToFieldConfigArgumentMap;
function argumentToArgumentConfig(argument, resolveType) {
var type = resolveType(argument.type);
if (type === null) {
return null;
}
else {
return [
argument.name,
{
type: type,
defaultValue: argument.defaultValue,
description: argument.description,
},
];
}
}
exports.argumentToArgumentConfig = argumentToArgumentConfig;
function inputFieldMapToFieldConfigMap(fields, resolveType) {
var result = {};
Object.keys(fields).forEach(function (name) {
var field = fields[name];
var type = resolveType(field.type);
if (type !== null) {
result[name] = inputFieldToFieldConfig(fields[name], resolveType);
}
});
return result;
}
exports.inputFieldMapToFieldConfigMap = inputFieldMapToFieldConfigMap;
function inputFieldToFieldConfig(field, resolveType) {
return {
type: resolveType(field.type),
defaultValue: field.defaultValue,
description: field.description,
astNode: field.astNode,
};
}
exports.inputFieldToFieldConfig = inputFieldToFieldConfig;
//# sourceMappingURL=schemaRecreation.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,3 @@
import { DefinitionNode, GraphQLInputObjectType, GraphQLInterfaceType, GraphQLNamedType, GraphQLObjectType, GraphQLDirective } from 'graphql';
export declare type GetType = (name: string, type: 'object' | 'interface' | 'input') => GraphQLObjectType | GraphQLInputObjectType | GraphQLInterfaceType;
export default function typeFromAST(node: DefinitionNode): GraphQLNamedType | GraphQLDirective | null;

View File

@@ -0,0 +1,168 @@
Object.defineProperty(exports, "__esModule", { value: true });
var graphql_1 = require("graphql");
var resolveFromParentTypename_1 = require("./resolveFromParentTypename");
var backcompatOptions = { commentDescriptions: true };
function typeFromAST(node) {
switch (node.kind) {
case graphql_1.Kind.OBJECT_TYPE_DEFINITION:
return makeObjectType(node);
case graphql_1.Kind.INTERFACE_TYPE_DEFINITION:
return makeInterfaceType(node);
case graphql_1.Kind.ENUM_TYPE_DEFINITION:
return makeEnumType(node);
case graphql_1.Kind.UNION_TYPE_DEFINITION:
return makeUnionType(node);
case graphql_1.Kind.SCALAR_TYPE_DEFINITION:
return makeScalarType(node);
case graphql_1.Kind.INPUT_OBJECT_TYPE_DEFINITION:
return makeInputObjectType(node);
case graphql_1.Kind.DIRECTIVE_DEFINITION:
return makeDirective(node);
default:
return null;
}
}
exports.default = typeFromAST;
function makeObjectType(node) {
return new graphql_1.GraphQLObjectType({
name: node.name.value,
fields: function () { return makeFields(node.fields); },
interfaces: function () {
return node.interfaces.map(function (iface) { return createNamedStub(iface.name.value, 'interface'); });
},
description: graphql_1.getDescription(node, backcompatOptions),
});
}
function makeInterfaceType(node) {
return new graphql_1.GraphQLInterfaceType({
name: node.name.value,
fields: function () { return makeFields(node.fields); },
description: graphql_1.getDescription(node, backcompatOptions),
resolveType: function (parent, context, info) {
return resolveFromParentTypename_1.default(parent, info.schema);
},
});
}
function makeEnumType(node) {
var values = {};
node.values.forEach(function (value) {
values[value.name.value] = {
description: graphql_1.getDescription(value, backcompatOptions),
};
});
return new graphql_1.GraphQLEnumType({
name: node.name.value,
values: values,
description: graphql_1.getDescription(node, backcompatOptions),
});
}
function makeUnionType(node) {
return new graphql_1.GraphQLUnionType({
name: node.name.value,
types: function () {
return node.types.map(function (type) { return resolveType(type, 'object'); });
},
description: graphql_1.getDescription(node, backcompatOptions),
resolveType: function (parent, context, info) {
return resolveFromParentTypename_1.default(parent, info.schema);
},
});
}
function makeScalarType(node) {
return new graphql_1.GraphQLScalarType({
name: node.name.value,
description: graphql_1.getDescription(node, backcompatOptions),
serialize: function () { return null; },
// Note: validation calls the parse functions to determine if a
// literal value is correct. Returning null would cause use of custom
// scalars to always fail validation. Returning false causes them to
// always pass validation.
parseValue: function () { return false; },
parseLiteral: function () { return false; },
});
}
function makeInputObjectType(node) {
return new graphql_1.GraphQLInputObjectType({
name: node.name.value,
fields: function () { return makeValues(node.fields); },
description: graphql_1.getDescription(node, backcompatOptions),
});
}
function makeFields(nodes) {
var result = {};
nodes.forEach(function (node) {
var deprecatedDirective = node.directives.find(function (directive) {
return directive && directive.name && directive.name.value === 'deprecated';
});
var deprecatedArgument = deprecatedDirective &&
deprecatedDirective.arguments &&
deprecatedDirective.arguments.find(function (arg) { return arg && arg.name && arg.name.value === 'reason'; });
var deprecationReason = deprecatedArgument &&
deprecatedArgument.value &&
deprecatedArgument.value.value;
result[node.name.value] = {
type: resolveType(node.type, 'object'),
args: makeValues(node.arguments),
description: graphql_1.getDescription(node, backcompatOptions),
deprecationReason: deprecationReason,
};
});
return result;
}
function makeValues(nodes) {
var result = {};
nodes.forEach(function (node) {
var type = resolveType(node.type, 'input');
result[node.name.value] = {
type: type,
defaultValue: graphql_1.valueFromAST(node.defaultValue, type),
description: graphql_1.getDescription(node, backcompatOptions),
};
});
return result;
}
function resolveType(node, type) {
switch (node.kind) {
case graphql_1.Kind.LIST_TYPE:
return new graphql_1.GraphQLList(resolveType(node.type, type));
case graphql_1.Kind.NON_NULL_TYPE:
return new graphql_1.GraphQLNonNull(resolveType(node.type, type));
default:
return createNamedStub(node.name.value, type);
}
}
function createNamedStub(name, type) {
var constructor;
if (type === 'object') {
constructor = graphql_1.GraphQLObjectType;
}
else if (type === 'interface') {
constructor = graphql_1.GraphQLInterfaceType;
}
else {
constructor = graphql_1.GraphQLInputObjectType;
}
return new constructor({
name: name,
fields: {
__fake: {
type: graphql_1.GraphQLString,
},
},
});
}
function makeDirective(node) {
var locations = [];
node.locations.forEach(function (location) {
if (location.value in graphql_1.DirectiveLocation) {
locations.push(location.value);
}
});
return new graphql_1.GraphQLDirective({
name: node.name.value,
description: node.description ? node.description.value : null,
args: makeValues(node.arguments),
locations: locations,
});
}
//# sourceMappingURL=typeFromAST.js.map

File diff suppressed because one or more lines are too long