Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@grapes-agency/apollo-link-webworker

Package Overview
Dependencies
Maintainers
6
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@grapes-agency/apollo-link-webworker - npm Package Compare versions

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

11

CHANGELOG.md

@@ -6,2 +6,13 @@ # Change Log

# [1.0.0-alpha.6](https://github.com/grapes-agency/graphql/compare/@grapes-agency/apollo-link-webworker@1.0.0-alpha.5...@grapes-agency/apollo-link-webworker@1.0.0-alpha.6) (2021-08-18)
### Features
* **apollo-link-webworker:** Options can be updated after link creation ([d753ace](https://github.com/grapes-agency/graphql/commit/d753ace2ebae6a6170ad1c28ae4bb6e8fd87ca75))
# [1.0.0-alpha.5](https://github.com/grapes-agency/graphql/compare/@grapes-agency/apollo-link-webworker@1.0.0-alpha.4...@grapes-agency/apollo-link-webworker@1.0.0-alpha.5) (2021-08-17)

@@ -8,0 +19,0 @@

8

dist/ApolloWebWorkerLink.d.ts

@@ -6,6 +6,6 @@ /// <reference types="zen-observable" />

import './RemoteOperation';
export declare class ApolloWebWorkerLink extends ApolloLink {
protected options: Record<string, any>;
export declare class ApolloWebWorkerLink<Options = Record<string, any>> extends ApolloLink {
private apolloWorker;
constructor(webWorker: Worker, options?: Record<string, any>);
constructor(webWorker: Worker, options?: Options);
updateOptions(options: Options): void;
request(operation: Operation, forward?: NextLink): Observable<FetchResult<{

@@ -15,2 +15,2 @@ [key: string]: any;

}
export declare const createWebWorkerLink: (webWorker: Worker, options?: Record<string, any> | undefined) => ApolloWebWorkerLink;
export declare const createWebWorkerLink: <Options = Record<string, any>>(webWorker: Worker, options?: Options | undefined) => ApolloWebWorkerLink<Options>;

@@ -7,8 +7,15 @@ import { ApolloLink, Observable } from '@apollo/client';

class ApolloWebWorkerLink extends ApolloLink {
constructor(webWorker, options = {}) {
constructor(webWorker, options) {
if (!(webWorker instanceof Worker)) {
throw new Error('ApolloWebWorkerLink needs an initialized Worker');
}
super();
this.options = options;
this.apolloWorker = wrap(webWorker);
this.apolloWorker.setup(this.options);
if (options) {
this.apolloWorker.setup(options);
}
}
updateOptions(options) {
this.apolloWorker.setup(options);
}
request(operation, forward) {

@@ -15,0 +22,0 @@ return new Observable(observer => {

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

}
export declare const createApolloWorker: (apolloLink: ApolloLink | ((options: Record<string, any>) => ApolloLink | Promise<ApolloLink>)) => void;
export declare const createApolloWorker: <Options = Record<string, any>>(apolloLink: ApolloLink | ((options: Options) => ApolloLink | Promise<ApolloLink>)) => new () => Worker;
export {};

@@ -1,2 +0,2 @@

import { Observable, ApolloLink } from '@apollo/client';
import { ApolloLink, Observable } from '@apollo/client';
import { expose } from 'comlink';

@@ -6,4 +6,27 @@ import './RemoteObservable.js';

const createAsyncLink = () => {
let release = null;
let linkPromise = new Promise(resolve => {
release = link => {
release = null;
resolve(link);
};
});
return {
get: () => linkPromise,
set: (link) => {
if (release) {
release(link);
}
else {
linkPromise = Promise.resolve(link);
}
},
};
};
const createApolloWorker = (apolloLink) => {
let link;
const link = createAsyncLink();
if (apolloLink instanceof ApolloLink) {
link.set(apolloLink);
}
const remoteRequestHandler = async (operation, forward) => {

@@ -23,10 +46,19 @@ let next;

}
return (await link).request(operation, next);
return (await link.get()).request(operation, next);
};
expose({
setup: (options) => {
link = Promise.resolve(apolloLink instanceof ApolloLink ? apolloLink : apolloLink(options));
if (apolloLink instanceof ApolloLink) {
throw new Error('cannot setup apollo worker without create function');
}
link.set(apolloLink(options));
},
request: remoteRequestHandler,
});
class FakeWorker {
constructor() {
throw new Error('You did not properly loaded the link as Worker');
}
}
return FakeWorker;
};

@@ -33,0 +65,0 @@

@@ -101,8 +101,15 @@ 'use strict';

class ApolloWebWorkerLink extends client.ApolloLink {
constructor(webWorker, options = {}) {
constructor(webWorker, options) {
if (!(webWorker instanceof Worker)) {
throw new Error('ApolloWebWorkerLink needs an initialized Worker');
}
super();
this.options = options;
this.apolloWorker = Comlink.wrap(webWorker);
this.apolloWorker.setup(this.options);
if (options) {
this.apolloWorker.setup(options);
}
}
updateOptions(options) {
this.apolloWorker.setup(options);
}
request(operation, forward) {

@@ -128,4 +135,27 @@ return new client.Observable(observer => {

const createAsyncLink = () => {
let release = null;
let linkPromise = new Promise(resolve => {
release = link => {
release = null;
resolve(link);
};
});
return {
get: () => linkPromise,
set: (link) => {
if (release) {
release(link);
}
else {
linkPromise = Promise.resolve(link);
}
},
};
};
const createApolloWorker = (apolloLink) => {
let link;
const link = createAsyncLink();
if (apolloLink instanceof client.ApolloLink) {
link.set(apolloLink);
}
const remoteRequestHandler = async (operation, forward) => {

@@ -145,10 +175,19 @@ let next;

}
return (await link).request(operation, next);
return (await link.get()).request(operation, next);
};
Comlink.expose({
setup: (options) => {
link = Promise.resolve(apolloLink instanceof client.ApolloLink ? apolloLink : apolloLink(options));
if (apolloLink instanceof client.ApolloLink) {
throw new Error('cannot setup apollo worker without create function');
}
link.set(apolloLink(options));
},
request: remoteRequestHandler,
});
class FakeWorker {
constructor() {
throw new Error('You did not properly loaded the link as Worker');
}
}
return FakeWorker;
};

@@ -155,0 +194,0 @@

{
"name": "@grapes-agency/apollo-link-webworker",
"version": "1.0.0-alpha.5",
"version": "1.0.0-alpha.6",
"description": "WebWorker for @apollo/client",

@@ -25,3 +25,3 @@ "main": "./dist/index.cjs.js",

},
"gitHead": "5cfa3d8d4a8d81696dc7ae8110e6efa3e97a89a2"
"gitHead": "bd6d8b4f2eae00880b26bebe8b2ff2bf0a04ba3f"
}

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