UNPKG

apollo-angular

Version:

Use your GraphQL data in your Angular app, with the Apollo Client

46 lines 5.32 kB
import { Kind, OperationTypeNode } from 'graphql'; import { ApolloError } from '@apollo/client/core'; import { getMainDefinition } from '@apollo/client/utilities'; const isApolloError = (err) => err && err.hasOwnProperty('graphQLErrors'); export class TestOperation { operation; observer; constructor(operation, observer) { this.operation = operation; this.observer = observer; } flush(result) { if (isApolloError(result)) { this.observer.error(result); } else { const fetchResult = result ? { ...result } : result; this.observer.next(fetchResult); const definition = getMainDefinition(this.operation.query); if (definition.kind === Kind.OPERATION_DEFINITION && definition.operation !== OperationTypeNode.SUBSCRIPTION) { this.complete(); } } } complete() { this.observer.complete(); } flushData(data) { this.flush({ data, }); } networkError(error) { const apolloError = new ApolloError({ networkError: error, }); this.flush(apolloError); } graphqlErrors(errors) { this.flush({ errors, }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdGluZy9zcmMvb3BlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMEMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTFGLE9BQU8sRUFBRSxXQUFXLEVBQTJDLE1BQU0scUJBQXFCLENBQUM7QUFDM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0QsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFRLEVBQXNCLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQU1uRyxNQUFNLE9BQU8sYUFBYTtJQUVOO0lBQ0M7SUFGbkIsWUFDa0IsU0FBb0IsRUFDbkIsUUFBa0M7UUFEbkMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUEwQjtJQUNsRCxDQUFDO0lBRUcsS0FBSyxDQUFDLE1BQWlEO1FBQzVELElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRWhDLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFM0QsSUFDRSxVQUFVLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxvQkFBb0I7Z0JBQzdDLFVBQVUsQ0FBQyxTQUFTLEtBQUssaUJBQWlCLENBQUMsWUFBWSxFQUN2RCxDQUFDO2dCQUNELElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sU0FBUyxDQUFDLElBQWM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNULElBQUk7U0FDTCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQVk7UUFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDbEMsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU0sYUFBYSxDQUFDLE1BQXNCO1FBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDVCxNQUFNO1NBQ1AsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybWF0dGVkRXhlY3V0aW9uUmVzdWx0LCBHcmFwaFFMRXJyb3IsIEtpbmQsIE9wZXJhdGlvblR5cGVOb2RlIH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgeyBPYnNlcnZlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBvbGxvRXJyb3IsIEZldGNoUmVzdWx0LCBPcGVyYXRpb24gYXMgTGlua09wZXJhdGlvbiB9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHsgZ2V0TWFpbkRlZmluaXRpb24gfSBmcm9tICdAYXBvbGxvL2NsaWVudC91dGlsaXRpZXMnO1xuXG5jb25zdCBpc0Fwb2xsb0Vycm9yID0gKGVycjogYW55KTogZXJyIGlzIEFwb2xsb0Vycm9yID0+IGVyciAmJiBlcnIuaGFzT3duUHJvcGVydHkoJ2dyYXBoUUxFcnJvcnMnKTtcblxuZXhwb3J0IHR5cGUgT3BlcmF0aW9uID0gTGlua09wZXJhdGlvbiAmIHtcbiAgY2xpZW50TmFtZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNsYXNzIFRlc3RPcGVyYXRpb248VCA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IG9wZXJhdGlvbjogT3BlcmF0aW9uLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb2JzZXJ2ZXI6IE9ic2VydmVyPEZldGNoUmVzdWx0PFQ+PixcbiAgKSB7fVxuXG4gIHB1YmxpYyBmbHVzaChyZXN1bHQ6IEZvcm1hdHRlZEV4ZWN1dGlvblJlc3VsdDxUPiB8IEFwb2xsb0Vycm9yKTogdm9pZCB7XG4gICAgaWYgKGlzQXBvbGxvRXJyb3IocmVzdWx0KSkge1xuICAgICAgdGhpcy5vYnNlcnZlci5lcnJvcihyZXN1bHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmZXRjaFJlc3VsdCA9IHJlc3VsdCA/IHsgLi4ucmVzdWx0IH0gOiByZXN1bHQ7XG4gICAgICB0aGlzLm9ic2VydmVyLm5leHQoZmV0Y2hSZXN1bHQpO1xuXG4gICAgICBjb25zdCBkZWZpbml0aW9uID0gZ2V0TWFpbkRlZmluaXRpb24odGhpcy5vcGVyYXRpb24ucXVlcnkpO1xuXG4gICAgICBpZiAoXG4gICAgICAgIGRlZmluaXRpb24ua2luZCA9PT0gS2luZC5PUEVSQVRJT05fREVGSU5JVElPTiAmJlxuICAgICAgICBkZWZpbml0aW9uLm9wZXJhdGlvbiAhPT0gT3BlcmF0aW9uVHlwZU5vZGUuU1VCU0NSSVBUSU9OXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5jb21wbGV0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb21wbGV0ZSgpIHtcbiAgICB0aGlzLm9ic2VydmVyLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZmx1c2hEYXRhKGRhdGE6IFQgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5mbHVzaCh7XG4gICAgICBkYXRhLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5ldHdvcmtFcnJvcihlcnJvcjogRXJyb3IpOiB2b2lkIHtcbiAgICBjb25zdCBhcG9sbG9FcnJvciA9IG5ldyBBcG9sbG9FcnJvcih7XG4gICAgICBuZXR3b3JrRXJyb3I6IGVycm9yLFxuICAgIH0pO1xuXG4gICAgdGhpcy5mbHVzaChhcG9sbG9FcnJvcik7XG4gIH1cblxuICBwdWJsaWMgZ3JhcGhxbEVycm9ycyhlcnJvcnM6IEdyYXBoUUxFcnJvcltdKTogdm9pZCB7XG4gICAgdGhpcy5mbHVzaCh7XG4gICAgICBlcnJvcnMsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==