UNPKG

@apollo-orbit/angular

Version:

A fully-featured GraphQL client for Angular with modular state management.

80 lines 11.1 kB
import { STATE_DEFINITION_SYMBOL, StateDescriptor as StateDescriptorCore } from '@apollo-orbit/core'; import { Observable, lastValueFrom } from 'rxjs'; export function state(configure, definition) { const descriptor = new StateDescriptor(definition); configure(descriptor); return descriptor[STATE_DEFINITION_SYMBOL]; } export class StateDescriptor { descriptor; constructor(definition) { this.descriptor = new StateDescriptorCore(definition); } get [STATE_DEFINITION_SYMBOL]() { return this.descriptor[STATE_DEFINITION_SYMBOL]; } /** * Client name in a multi-client setup */ clientId(clientId) { this.descriptor.clientId(clientId); return this; } typeDefs(typeDefs) { this.descriptor.typeDefs(typeDefs); return this; } typePolicies(typePolicies) { this.descriptor.typePolicies(typePolicies); return this; } possibleTypes(possibleTypes) { this.descriptor.possibleTypes(possibleTypes); return this; } onInit(onInit) { this.descriptor.onInit(onInit); return this; } mutationUpdate(mutation, update) { this.descriptor.mutationUpdate(mutation, update); return this; } refetchQueries(mutation, refetchQueries) { this.descriptor.refetchQueries(mutation, refetchQueries); return this; } optimisticResponse(mutation, optimisticResponse) { this.descriptor.optimisticResponse(mutation, optimisticResponse); return this; } effect(mutation, effect) { this.descriptor.effect(mutation, effect); return this; } resolver(typeField, resolver) { this.descriptor.resolver(typeField, transformResolver(resolver)); return this; } action(actionType, actionFn) { this.descriptor.action(actionType, transformActionFn(actionFn)); return this; } } function transformResolver(fn) { return function (...args) { const result = fn(...args); return result instanceof Observable ? lastValueFrom(result, { defaultValue: void 0 }) : result; }; } function transformActionFn(fn) { return function (action, context) { const result = fn(action, context); return result instanceof Observable ? lastValueFrom(result, { defaultValue: void 0 }) : result; }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWZmZWN0cy9zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWtKLHVCQUF1QixFQUFTLGVBQWUsSUFBSSxtQkFBbUIsRUFBYSxNQUFNLG9CQUFvQixDQUFDO0FBR3ZRLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR2pELE1BQU0sVUFBVSxLQUFLLENBQUMsU0FBa0UsRUFBRSxVQUFrQjtJQUMxRyxNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEIsT0FBTyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsTUFBTSxPQUFPLGVBQWU7SUFDVCxVQUFVLENBQXNCO0lBRWpELFlBQW1CLFVBQWtCO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsSUFBWSxDQUFDLHVCQUF1QixDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVEsQ0FBQyxRQUFnQjtRQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxRQUFRLENBQUMsUUFBcUU7UUFDbkYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sWUFBWSxDQUFDLFlBQTBCO1FBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGFBQWEsQ0FBQyxhQUErQjtRQUNsRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBeUM7UUFDckQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sY0FBYyxDQUF5QixRQUFrQyxFQUFFLE1BQThCO1FBQzlHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxjQUFjLENBQXlCLFFBQWtDLEVBQUUsY0FBc0M7UUFDdEgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLGtCQUFrQixDQUF5QixRQUFrQyxFQUFFLGtCQUE4QztRQUNsSSxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLE1BQU0sQ0FBeUIsUUFBa0MsRUFBRSxNQUFzQjtRQUM5RixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sUUFBUSxDQUFDLFNBQW9CLEVBQUUsUUFBa0I7UUFDdEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDakUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBSU0sTUFBTSxDQUFVLFVBQWtDLEVBQUUsUUFBcUI7UUFDOUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDaEUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEVBQVk7SUFDckMsT0FBTyxVQUFVLEdBQUcsSUFBMEI7UUFDNUMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDM0IsT0FBTyxNQUFNLFlBQVksVUFBVTtZQUNqQyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pELENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDYixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxFQUFpQjtJQUMxQyxPQUFPLFVBQVUsTUFBTSxFQUFFLE9BQU87UUFDOUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxPQUFtQyxDQUFDLENBQUM7UUFDL0QsT0FBTyxNQUFNLFlBQVksVUFBVTtZQUNqQyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pELENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDYixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFyaWFibGVzIH0gZnJvbSAnQGFwb2xsby1vcmJpdC9hbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3Rpb24sIEFjdGlvbkZuIGFzIEFjdGlvbkZuQ29yZSwgQWN0aW9uVHlwZSwgRWZmZWN0Rm4sIE11dGF0aW9uSWRlbnRpZmllciwgTXV0YXRpb25VcGRhdGVGbiwgT3B0aW1pc3RpY1Jlc3BvbnNlRm4sIFJlZmV0Y2hRdWVyaWVzRm4sIFJlc29sdmVyLCBTVEFURV9ERUZJTklUSU9OX1NZTUJPTCwgU3RhdGUsIFN0YXRlRGVzY3JpcHRvciBhcyBTdGF0ZURlc2NyaXB0b3JDb3JlLCBUeXBlRmllbGQgfSBmcm9tICdAYXBvbGxvLW9yYml0L2NvcmUnO1xyXG5pbXBvcnQgeyBBcG9sbG9DYWNoZSwgUG9zc2libGVUeXBlc01hcCwgVHlwZVBvbGljaWVzIH0gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XHJcbmltcG9ydCB7IERvY3VtZW50Tm9kZSB9IGZyb20gJ2dyYXBocWwnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBsYXN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFjdGlvbkNvbnRleHQsIEFjdGlvbkZuIH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc3RhdGUoY29uZmlndXJlOiAoZGVzY3JpcHRvcjogU3RhdGVEZXNjcmlwdG9yKSA9PiBTdGF0ZURlc2NyaXB0b3IgfCB2b2lkLCBkZWZpbml0aW9uPzogU3RhdGUpOiBTdGF0ZSB7XHJcbiAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBTdGF0ZURlc2NyaXB0b3IoZGVmaW5pdGlvbik7XHJcbiAgY29uZmlndXJlKGRlc2NyaXB0b3IpO1xyXG4gIHJldHVybiBkZXNjcmlwdG9yW1NUQVRFX0RFRklOSVRJT05fU1lNQk9MXTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFN0YXRlRGVzY3JpcHRvciB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXNjcmlwdG9yOiBTdGF0ZURlc2NyaXB0b3JDb3JlO1xyXG5cclxuICBwdWJsaWMgY29uc3RydWN0b3IoZGVmaW5pdGlvbj86IFN0YXRlKSB7XHJcbiAgICB0aGlzLmRlc2NyaXB0b3IgPSBuZXcgU3RhdGVEZXNjcmlwdG9yQ29yZShkZWZpbml0aW9uKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0IFtTVEFURV9ERUZJTklUSU9OX1NZTUJPTF0oKTogU3RhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVzY3JpcHRvcltTVEFURV9ERUZJTklUSU9OX1NZTUJPTF07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGllbnQgbmFtZSBpbiBhIG11bHRpLWNsaWVudCBzZXR1cFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbGllbnRJZChjbGllbnRJZDogc3RyaW5nKTogdGhpcyB7XHJcbiAgICB0aGlzLmRlc2NyaXB0b3IuY2xpZW50SWQoY2xpZW50SWQpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHlwZURlZnModHlwZURlZnM6IHN0cmluZyB8IEFycmF5PHN0cmluZz4gfCBEb2N1bWVudE5vZGUgfCBBcnJheTxEb2N1bWVudE5vZGU+KTogdGhpcyB7XHJcbiAgICB0aGlzLmRlc2NyaXB0b3IudHlwZURlZnModHlwZURlZnMpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHlwZVBvbGljaWVzKHR5cGVQb2xpY2llczogVHlwZVBvbGljaWVzKTogdGhpcyB7XHJcbiAgICB0aGlzLmRlc2NyaXB0b3IudHlwZVBvbGljaWVzKHR5cGVQb2xpY2llcyk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwb3NzaWJsZVR5cGVzKHBvc3NpYmxlVHlwZXM6IFBvc3NpYmxlVHlwZXNNYXApOiB0aGlzIHtcclxuICAgIHRoaXMuZGVzY3JpcHRvci5wb3NzaWJsZVR5cGVzKHBvc3NpYmxlVHlwZXMpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Jbml0KG9uSW5pdDogKGNhY2hlOiBBcG9sbG9DYWNoZTxhbnk+KSA9PiB2b2lkKTogdGhpcyB7XHJcbiAgICB0aGlzLmRlc2NyaXB0b3Iub25Jbml0KG9uSW5pdCk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtdXRhdGlvblVwZGF0ZTxUID0gYW55LCBWID0gVmFyaWFibGVzPihtdXRhdGlvbjogTXV0YXRpb25JZGVudGlmaWVyPFQsIFY+LCB1cGRhdGU6IE11dGF0aW9uVXBkYXRlRm48VCwgVj4pOiB0aGlzIHtcclxuICAgIHRoaXMuZGVzY3JpcHRvci5tdXRhdGlvblVwZGF0ZShtdXRhdGlvbiwgdXBkYXRlKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZmV0Y2hRdWVyaWVzPFQgPSBhbnksIFYgPSBWYXJpYWJsZXM+KG11dGF0aW9uOiBNdXRhdGlvbklkZW50aWZpZXI8VCwgVj4sIHJlZmV0Y2hRdWVyaWVzOiBSZWZldGNoUXVlcmllc0ZuPFQsIFY+KTogdGhpcyB7XHJcbiAgICB0aGlzLmRlc2NyaXB0b3IucmVmZXRjaFF1ZXJpZXMobXV0YXRpb24sIHJlZmV0Y2hRdWVyaWVzKTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wdGltaXN0aWNSZXNwb25zZTxUID0gYW55LCBWID0gVmFyaWFibGVzPihtdXRhdGlvbjogTXV0YXRpb25JZGVudGlmaWVyPFQsIFY+LCBvcHRpbWlzdGljUmVzcG9uc2U6IE9wdGltaXN0aWNSZXNwb25zZUZuPFQsIFY+KTogdGhpcyB7XHJcbiAgICB0aGlzLmRlc2NyaXB0b3Iub3B0aW1pc3RpY1Jlc3BvbnNlKG11dGF0aW9uLCBvcHRpbWlzdGljUmVzcG9uc2UpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWZmZWN0PFQgPSBhbnksIFYgPSBWYXJpYWJsZXM+KG11dGF0aW9uOiBNdXRhdGlvbklkZW50aWZpZXI8VCwgVj4sIGVmZmVjdDogRWZmZWN0Rm48VCwgVj4pOiB0aGlzIHtcclxuICAgIHRoaXMuZGVzY3JpcHRvci5lZmZlY3QobXV0YXRpb24sIGVmZmVjdCk7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXNvbHZlcih0eXBlRmllbGQ6IFR5cGVGaWVsZCwgcmVzb2x2ZXI6IFJlc29sdmVyKTogdGhpcyB7XHJcbiAgICB0aGlzLmRlc2NyaXB0b3IucmVzb2x2ZXIodHlwZUZpZWxkLCB0cmFuc2Zvcm1SZXNvbHZlcihyZXNvbHZlcikpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYWN0aW9uPFQgPSBhbnk+KGFjdGlvbjogQWN0aW9uVHlwZTxUPiwgYWN0aW9uRm46IEFjdGlvbkZuPFQ+KTogdGhpcztcclxuICBwdWJsaWMgYWN0aW9uPFRBY3Rpb24gZXh0ZW5kcyBBY3Rpb24+KHR5cGU6IFRBY3Rpb25bJ3R5cGUnXSwgYWN0aW9uRm46IEFjdGlvbkZuPFRBY3Rpb24+KTogdGhpcztcclxuICBwdWJsaWMgYWN0aW9uPFQgPSBhbnk+KGFjdGlvblR5cGU6IEFjdGlvblR5cGU8VD4gfCBzdHJpbmcsIGFjdGlvbkZuOiBBY3Rpb25GbjxUPik6IHRoaXMge1xyXG4gICAgdGhpcy5kZXNjcmlwdG9yLmFjdGlvbihhY3Rpb25UeXBlLCB0cmFuc2Zvcm1BY3Rpb25GbihhY3Rpb25GbikpO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0cmFuc2Zvcm1SZXNvbHZlcihmbjogUmVzb2x2ZXIpOiBSZXNvbHZlciB7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uICguLi5hcmdzOiBQYXJhbWV0ZXJzPFJlc29sdmVyPikge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gZm4oLi4uYXJncyk7XHJcbiAgICByZXR1cm4gcmVzdWx0IGluc3RhbmNlb2YgT2JzZXJ2YWJsZVxyXG4gICAgICA/IGxhc3RWYWx1ZUZyb20ocmVzdWx0LCB7IGRlZmF1bHRWYWx1ZTogdm9pZCAwIH0pXHJcbiAgICAgIDogcmVzdWx0O1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyYW5zZm9ybUFjdGlvbkZuKGZuOiBBY3Rpb25Gbjxhbnk+KTogQWN0aW9uRm5Db3JlPGFueT4ge1xyXG4gIHJldHVybiBmdW5jdGlvbiAoYWN0aW9uLCBjb250ZXh0KSB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBmbihhY3Rpb24sIGNvbnRleHQgYXMgdW5rbm93biBhcyBBY3Rpb25Db250ZXh0KTtcclxuICAgIHJldHVybiByZXN1bHQgaW5zdGFuY2VvZiBPYnNlcnZhYmxlXHJcbiAgICAgID8gbGFzdFZhbHVlRnJvbShyZXN1bHQsIHsgZGVmYXVsdFZhbHVlOiB2b2lkIDAgfSlcclxuICAgICAgOiByZXN1bHQ7XHJcbiAgfTtcclxufVxyXG4iXX0=