62 lines
2.1 KiB
JavaScript
62 lines
2.1 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
|
var tslib = require('tslib');
|
|
var graphql = require('graphql');
|
|
var core = require('../core');
|
|
var utilities = require('../../utilities');
|
|
|
|
var SchemaLink = (function (_super) {
|
|
tslib.__extends(SchemaLink, _super);
|
|
function SchemaLink(options) {
|
|
var _this = _super.call(this) || this;
|
|
_this.schema = options.schema;
|
|
_this.rootValue = options.rootValue;
|
|
_this.context = options.context;
|
|
_this.validate = !!options.validate;
|
|
return _this;
|
|
}
|
|
SchemaLink.prototype.request = function (operation) {
|
|
var _this = this;
|
|
return new utilities.Observable(function (observer) {
|
|
new Promise(function (resolve) {
|
|
return resolve(typeof _this.context === "function" ?
|
|
_this.context(operation)
|
|
: _this.context);
|
|
})
|
|
.then(function (context) {
|
|
if (_this.validate) {
|
|
var validationErrors = graphql.validate(_this.schema, operation.query);
|
|
if (validationErrors.length > 0) {
|
|
return { errors: validationErrors };
|
|
}
|
|
}
|
|
return graphql.execute({
|
|
schema: _this.schema,
|
|
document: operation.query,
|
|
rootValue: _this.rootValue,
|
|
contextValue: context,
|
|
variableValues: operation.variables,
|
|
operationName: operation.operationName,
|
|
});
|
|
})
|
|
.then(function (data) {
|
|
if (!observer.closed) {
|
|
observer.next(data);
|
|
observer.complete();
|
|
}
|
|
})
|
|
.catch(function (error) {
|
|
if (!observer.closed) {
|
|
observer.error(error);
|
|
}
|
|
});
|
|
});
|
|
};
|
|
return SchemaLink;
|
|
}(core.ApolloLink));
|
|
|
|
exports.SchemaLink = SchemaLink;
|
|
//# sourceMappingURL=schema.cjs.map
|