New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@grapes-agency/apollo-link-local-schema

Package Overview
Dependencies
Maintainers
6
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@grapes-agency/apollo-link-local-schema - npm Package Compare versions

Comparing version 1.0.0-alpha.6 to 1.0.0-alpha.7

7

CHANGELOG.md

@@ -5,2 +5,9 @@ # Changelog

## [1.0.0-alpha.7](https://github.com/grapes-agency/apollo-link-local-schema/compare/v1.0.0-alpha.6...v1.0.0-alpha.7) (2020-10-08)
### Bug Fixes
* correctly resolve subscription response fields ([ebf501b](https://github.com/grapes-agency/apollo-link-local-schema/commit/ebf501b0b974c3c8b1c00e8929fdf645983abe03))
## [1.0.0-alpha.6](https://github.com/grapes-agency/apollo-link-local-schema/compare/v1.0.0-alpha.5...v1.0.0-alpha.6) (2020-10-08)

@@ -7,0 +14,0 @@

57

index.cjs.js

@@ -264,5 +264,8 @@ 'use strict';

const isSubscriptionResolver = (resolver) => resolver && 'subscribe' in resolver && typeof resolver.subscribe === 'function';
const mapSubscription = ({ fieldName, resolver, objectType, typeMap }) => (root, args, context, info) => {
const transform = resolver.resolve || ((value) => value[fieldName]);
const isSubscriptionResolver = (resolver) => typeof resolver === 'object' && 'subscribe' in resolver && typeof resolver.subscribe === 'function';
const mapSubscription = ({ fieldName, resolver, objectType, typeMap, }) => (root, args, context, info) => {
if (context.__subscription) {
const transform = resolver.resolve || ((value) => value[fieldName]);
return transform(root, args, context, info);
}
return new client.Observable(observer => {

@@ -279,12 +282,7 @@ let stopped = false;

if (value) {
Promise.resolve(transform(value, args, context, info)).then(transformedValue => {
if (stopped) {
return;
}
observer.next({
[fieldName]: objectType
? addTypesnames(Object.assign(Object.assign({}, info), { data: transformedValue, objectType,
typeMap }))
: transformedValue,
});
observer.next({
[fieldName]: objectType
? addTypesnames(Object.assign(Object.assign({}, info), { data: value[fieldName], objectType,
typeMap }))
: value[fieldName],
});

@@ -658,2 +656,3 @@ }

/* eslint-disable no-shadow */
class LocalSchemaLink extends client.ApolloLink {

@@ -685,2 +684,8 @@ constructor({ typeDefs, resolvers, context, assumeLocal, validateQuery = true, introspection = true, discriminationDirective = 'local', }) {

}
getContext() {
if (typeof this.context === 'function') {
return this.context();
}
return this.context;
}
splitDocumentByDirective(document) {

@@ -710,3 +715,2 @@ if (this.processedDocuments.has(document)) {

const localState = this.getLocalState(operation);
let context;
if (normalQuery) {

@@ -723,3 +727,2 @@ return nonLocalObservable.flatMap(remoteResult => new client.Observable(observer => {

}
context = typeof this.context === 'function' ? this.context() : this.context;
localState

@@ -729,8 +732,7 @@ .runResolvers({

remoteResult,
context,
context: this.getContext(),
variables,
})
.then(({ data, errors }) => {
const cleanedData = cleanResult({ data, document: localQuery });
observer.next({ data: cleanedData, errors });
observer.next({ data: cleanResult({ data, document: localQuery }), errors });
observer.complete();

@@ -746,3 +748,3 @@ })

localState
.runResolvers({ document: subscriptionQuery, remoteResult: { data: {} }, context, variables })
.runResolvers({ document: subscriptionQuery, remoteResult: { data: {} }, context: this.getContext(), variables })
.then(({ data, errors }) => {

@@ -759,4 +761,17 @@ if (!data) {

const observables = [];
Object.entries(data).forEach(([key, observable]) => {
observables.push(observable.map(result => ({ [key]: result })));
Object.values(data).forEach(observable => {
observables.push(observable
.flatMap(result => new client.Observable(o => {
localState
.runResolvers({
document: subscriptionQuery,
remoteResult: { data: result },
context: Object.assign(Object.assign({}, this.getContext()), { __subscription: true }),
variables,
})
.then(enrichtedResult => o.next(enrichtedResult));
}))
.map(({ data }) => ({
data: cleanResult({ data, document: subscriptionQuery }),
})));
});

@@ -763,0 +778,0 @@ if (observables.length === 0) {

@@ -25,2 +25,3 @@ /// <reference types="zen-observable" />

private getLocalState;
private getContext;
private splitDocumentByDirective;

@@ -27,0 +28,0 @@ request(operation: Operation, forward?: NextLink): Observable<FetchResult> | null;

@@ -13,2 +13,3 @@ import { ApolloLink, Observable } from '@apollo/client';

/* eslint-disable no-shadow */
class LocalSchemaLink extends ApolloLink {

@@ -40,2 +41,8 @@ constructor({ typeDefs, resolvers, context, assumeLocal, validateQuery = true, introspection = true, discriminationDirective = 'local', }) {

}
getContext() {
if (typeof this.context === 'function') {
return this.context();
}
return this.context;
}
splitDocumentByDirective(document) {

@@ -65,3 +72,2 @@ if (this.processedDocuments.has(document)) {

const localState = this.getLocalState(operation);
let context;
if (normalQuery) {

@@ -78,3 +84,2 @@ return nonLocalObservable.flatMap(remoteResult => new Observable(observer => {

}
context = typeof this.context === 'function' ? this.context() : this.context;
localState

@@ -84,8 +89,7 @@ .runResolvers({

remoteResult,
context,
context: this.getContext(),
variables,
})
.then(({ data, errors }) => {
const cleanedData = cleanResult({ data, document: localQuery });
observer.next({ data: cleanedData, errors });
observer.next({ data: cleanResult({ data, document: localQuery }), errors });
observer.complete();

@@ -101,3 +105,3 @@ })

localState
.runResolvers({ document: subscriptionQuery, remoteResult: { data: {} }, context, variables })
.runResolvers({ document: subscriptionQuery, remoteResult: { data: {} }, context: this.getContext(), variables })
.then(({ data, errors }) => {

@@ -114,4 +118,17 @@ if (!data) {

const observables = [];
Object.entries(data).forEach(([key, observable]) => {
observables.push(observable.map(result => ({ [key]: result })));
Object.values(data).forEach(observable => {
observables.push(observable
.flatMap(result => new Observable(o => {
localState
.runResolvers({
document: subscriptionQuery,
remoteResult: { data: result },
context: Object.assign(Object.assign({}, this.getContext()), { __subscription: true }),
variables,
})
.then(enrichtedResult => o.next(enrichtedResult));
}))
.map(({ data }) => ({
data: cleanResult({ data, document: subscriptionQuery }),
})));
});

@@ -118,0 +135,0 @@ if (observables.length === 0) {

{
"name": "@grapes-agency/apollo-link-local-schema",
"version": "1.0.0-alpha.6",
"version": "1.0.0-alpha.7",
"description": "Lightweight local schema resolver for @apollo/client",

@@ -5,0 +5,0 @@ "main": "index.cjs.js",

@@ -14,3 +14,5 @@ import { ObjectTypeDefinitionNode } from 'graphql';

}
export declare const mapSubscription: <C, T>({ fieldName, resolver, objectType, typeMap }: MapSubscriptionOptions<T>) => Resolver<C>;
export declare const mapSubscription: <C, T>({ fieldName, resolver, objectType, typeMap, }: MapSubscriptionOptions<T>) => Resolver<C & {
__subscription?: boolean | undefined;
}>;
export {};
import { Observable } from '@apollo/client';
import { addTypesnames } from './addTypenames.js';
const isSubscriptionResolver = (resolver) => resolver && 'subscribe' in resolver && typeof resolver.subscribe === 'function';
const mapSubscription = ({ fieldName, resolver, objectType, typeMap }) => (root, args, context, info) => {
const transform = resolver.resolve || ((value) => value[fieldName]);
const isSubscriptionResolver = (resolver) => typeof resolver === 'object' && 'subscribe' in resolver && typeof resolver.subscribe === 'function';
const mapSubscription = ({ fieldName, resolver, objectType, typeMap, }) => (root, args, context, info) => {
if (context.__subscription) {
const transform = resolver.resolve || ((value) => value[fieldName]);
return transform(root, args, context, info);
}
return new Observable(observer => {

@@ -18,12 +21,7 @@ let stopped = false;

if (value) {
Promise.resolve(transform(value, args, context, info)).then(transformedValue => {
if (stopped) {
return;
}
observer.next({
[fieldName]: objectType
? addTypesnames(Object.assign(Object.assign({}, info), { data: transformedValue, objectType,
typeMap }))
: transformedValue,
});
observer.next({
[fieldName]: objectType
? addTypesnames(Object.assign(Object.assign({}, info), { data: value[fieldName], objectType,
typeMap }))
: value[fieldName],
});

@@ -30,0 +28,0 @@ }

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc