EPI2ME Client
This library is for performing authenticated operations with the EPI2ME GraphQL API. It is published in 2 flavours: node and web. They each provide specific networking and crypto implementations for their platforms, to better meet your requirements.
Installation
npm i @metrichor/epi2me-client-web
npm i @metrichor/epi2me-client-node
Usage
Both flavours support authentication via key/secret or JWTs. Exposed via separate client factories.
import { create_epi2me_client } from '@metrichor/epi2me-client-node';
const graphql = create_epi2me_client({
client: { name: 'my platform', version: '1.0.0' },
credentials: { key: 'my api key', secret: 'my api secret' },
});
async function main () {
const { data } = await graphql.query({
query: gql`query MyQuery {
allWorkflowInstances {
results {
idWorkflowInstance
}
}
}`
});
console.log(data.allWorkflowInstances.results);
}
void main();
Client constructors return instances of ApolloClient, with their caches pre-configured. It's often easier to use the clients by wrapping them with helper functions. But this is left as an exercise for the user, to maximise compatibility with existing code.
Mock Client
In addition to the 2 authenticated clients we also provide a simple mock client for writing tests.
const client = create_mock_client(
{ name: 'example client', version: '1.0.0' },
(op) => ({ data: { id: 42} })
);
expect(
await client.query({ query: gql`query CustomQuery { id }` })
).toStrictEqual(
expect.objectContaining({ data: { id: 42 } })
);