Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
@jumpn/absinthe-phoenix-socket
Advanced tools
Absinthe Phoenix Socket
All received and returned objects with the exception of AbsintheSocket instances (there are plans to make this immutable too) are treated in an immutable way. Objects have no methods and instead we provide independant stateless functions to interact with them.
If provided phoenix socket instance is not connected, then instead of connecting at creation time, connection will be established on the next invocation of send.
Phoenix socket reconnects on connection lost but it doesn't rejoin to the channel automatically, we do.
Pending mutations will be aborted, queries will be resent, and subscriptions reestablished.
Since connection lost is handled, then two events needs to exist to represent this fact: Error (recoverable), Abort (unrecoverable).
Calling send returns a notifier which allows attaching any number of observers that will be notified when result arrives.
For the case of subscriptions, Start event is dispatched when the subscription is established, while for the other types (queries and mutations), when the request is sent.
$ npm install --save @jumpn/absinthe-phoenix-socket
$ yarn add @jumpn/absinthe-phoenix-socket
type Event = "Abort" | "Error" | "Start" | "Stop" | "Value";
type Observer<Value> = {
onAbort: (error: Error) => any,
onError: (error: Error) => any,
onStart: () => any,
onValue: (value: Value) => any
};
type Notifier<Result> = {
observers: Array<Observer<Result>>,
operationType: GqlOperationType,
request: GqlRequest<*>,
subscriptionId?: string
};
type AbsintheSocket = {
channel: Channel,
isJoining: boolean,
notifiers: Array<Notifier<any>>,
phoenixSocket: PhoenixSocket
};
Creates an Absinthe Socket using the given Phoenix Socket instance
Parameters
phoenixSocket
PhoenixSocketExamples
import * as AbsintheSocket from "@jumpn/absinthe-phoenix-socket";
import {Socket as PhoenixSocket} from "phoenix";
const absintheSocket = AbsintheSocket.create(
new PhoenixSocket("ws://localhost:4000/socket")
);
Returns AbsintheSocket
Discards a notifier sending a Stop event to all its observers and unsubscribing in case it holds a subscription request
Parameters
absintheSocket
AbsintheSocketnotifier
Notifier<any>Examples
import * as AbsintheSocket from "@jumpn/absinthe-phoenix-socket";
AbsintheSocket.discard(absintheSocket, notifier);
Returns AbsintheSocket
Observes given notifier using the provided observer
Parameters
absintheSocket
AbsintheSocketnotifier
Notifier<Value>observer
Observer<Value>Examples
import AbsintheSocket from "@jumpn/absinthe-phoenix-socket"
const logEvent = eventName => (...args) => console.log(eventName, ...args);
const updatedNotifier = AbsintheSocket.observe(absintheSocket, notifier, {
onAbort: logEvent("abort"),
onError: logEvent("error"),
onStart: logEvent("open"),
onValue: logEvent("next")
});
Returns AbsintheSocket
Sends given request and returns an object (notifier) to track its progress (see observe function)
Parameters
absintheSocket
AbsintheSocketrequest
GqlRequest<any>Examples
import * as AbsintheSocket from "@jumpn/absinthe-phoenix-socket";
const operation = `
subscription userSubscription($userId: ID!) {
user(userId: $userId) {
id
name
}
}
`;
// This example uses a subscription, but the functionallity is the same for
// all operation types (queries, mutations and subscriptions)
const notifier = AbsintheSocket.send(absintheSocket, {
operation,
variables: {userId: 10}
});
Returns Notifier<any>
Detaches observer from notifier
Parameters
absintheSocket
AbsintheSocketnotifier
Notifier<any>observer
Observer<any>Examples
import * as AbsintheSocket from "@jumpn/absinthe-phoenix-socket";
AbsintheSocket.unobserve(absintheSocket, notifier, observer);
Returns AbsintheSocket
MIT :copyright: Jumpn Limited / Mauro Titimoli (mauro@jumpn.com)
FAQs
Absinthe Phoenix Socket
The npm package @jumpn/absinthe-phoenix-socket receives a total of 2 weekly downloads. As such, @jumpn/absinthe-phoenix-socket popularity was classified as not popular.
We found that @jumpn/absinthe-phoenix-socket demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.