var __extends = (this && this.__extends) || (function () { var 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 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) || 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; }; import { getOperationName } from 'apollo-utilities'; import Observable from 'zen-observable-ts'; import { print } from 'graphql/language/printer'; export function validateOperation(operation) { var OPERATION_FIELDS = [ 'query', 'operationName', 'variables', 'extensions', 'context', ]; for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) { var key = _a[_i]; if (OPERATION_FIELDS.indexOf(key) < 0) { throw new Error("illegal argument: " + key); } } return operation; } var LinkError = (function (_super) { __extends(LinkError, _super); function LinkError(message, link) { var _this = _super.call(this, message) || this; _this.link = link; return _this; } return LinkError; }(Error)); export { LinkError }; export function isTerminating(link) { return link.request.length <= 1; } export function toPromise(observable) { var completed = false; return new Promise(function (resolve, reject) { observable.subscribe({ next: function (data) { if (completed) { console.warn("Promise Wrapper does not support multiple results from Observable"); } else { completed = true; resolve(data); } }, error: reject, }); }); } export var makePromise = toPromise; export function fromPromise(promise) { return new Observable(function (observer) { promise .then(function (value) { observer.next(value); observer.complete(); }) .catch(observer.error.bind(observer)); }); } export function fromError(errorValue) { return new Observable(function (observer) { observer.error(errorValue); }); } export function transformOperation(operation) { var transformedOperation = { variables: operation.variables || {}, extensions: operation.extensions || {}, operationName: operation.operationName, query: operation.query, }; if (!transformedOperation.operationName) { transformedOperation.operationName = typeof transformedOperation.query !== 'string' ? getOperationName(transformedOperation.query) : ''; } return transformedOperation; } export function createOperation(starting, operation) { var context = __assign({}, starting); var setContext = function (next) { if (typeof next === 'function') { context = __assign({}, context, next(context)); } else { context = __assign({}, context, next); } }; var getContext = function () { return (__assign({}, context)); }; Object.defineProperty(operation, 'setContext', { enumerable: false, value: setContext, }); Object.defineProperty(operation, 'getContext', { enumerable: false, value: getContext, }); Object.defineProperty(operation, 'toKey', { enumerable: false, value: function () { return getKey(operation); }, }); return operation; } export function getKey(operation) { return print(operation.query) + "|" + JSON.stringify(operation.variables) + "|" + operation.operationName; } //# sourceMappingURL=linkUtils.js.map