npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@jmnribeiro/loopback-graphql-relay

v2.1.12

Published

Add Relay based Apollo Server or GraphQL queries on your Loopback server

Downloads

68

Readme

Status 🎊

npm version Build Status bitHound Overall Score bitHound Dependencies bitHound Dev Dependencies bitHound Code Known Vulnerabilities

Relay GraphQL Server for Loopback (Apollo Server)

Combine the powers of ApolloStack GraphQL with the backend of Loopback to automatically generate GraphQL endpoints based on Loopback Schema.

Loopback Graphql

Queries 💥

  • Relay Specification: node query to fetch single entity by ID
  • viewer query to fetch all models for a viewer
  • Filter support for where and order filters on queries
  • Support for relations and querying related data
  • Relay Connections support for listed data
  • Relay Pagination (first, last, before, after)
  • Remote methods integration

Mutations 🚀

  • Nested and clean schema structure
  • Maps all post, put, patch and delete methods to mutations
  • Remote methods integration

Subscriptions ⚡️

  • create, update and remove events of all shared models.

Other Features 🎉

Loopback Types

  • [x] Any
  • [x] Array
  • [x] Boolean
  • [ ] Buffer
  • [x] Date
  • [x] GeoPoint
  • [x] Null
  • [x] Number
  • [x] Object
  • [x] String

Loopback Relations

  • [x] BelongsTo
  • [x] HasOne
  • [x] HasMany
  • [ ] HasManyThrough
  • [x] HasAndBelongsToMany
  • [ ] Polymorphic
  • [x] EmbedsOne
  • [x] EmbedsMany
  • [x] ReferencesMany

Misc

  • Accepts AccessToken for authenticated API calls
  • Resolves and respects ACLs

Todo

  • [ ] File uploads

Usage 💻

npm install loopback-graphql-relay

Add the loopback-graphql-relay component to the server/component-config.json:

"loopback-graphql-relay": {
    "path": "/graphql",
    "subscriptionServer": {
      "disable": false,
      "auth": false
    },
    "viewer": {
      "UserModel": "Account"
    }
  }

Requests will be posted to path path. (Default: /graphql);

GraphQl Playground is available on path path. (Default: /graphql);

Apollo's Subscription Server can be customised by passing subscriptionServer configuration. More information can be found at Subscriptions Docs.

const { RedisPubSub } = require('graphql-redis-subscriptions')
const path = require('path')
const fs = require('fs')
...

subscriptionServer: {
  disable: false,
  https: {
    key: fs.readFileSync(path.join(__dirname, '.certs/example.key')).toString(),
    cert: fs.readFileSync(path.join(__dirname, '.certs/example.crt')).toString()
  },
  pubsub: new RedisPubSub({
    connection: {
      host: 'cluster-redis-master.default.svc.cluster.local',
      retry_strategy: options => {
        // reconnect after
        return Math.max(options.attempt * 100, 3000)
      }
    }
  })
},

Apollo's persistent queries can be customised by passing persistedQueries configuration. More information can be found at Performance Docs.

const { RedisCache } = require('apollo-server-cache-redis')
...

persistedQueries: {
  cache: new RedisCache({
    host: 'cluster-redis-master.default.svc.cluster.local',
    retry_strategy: options => {
      // reconnect after
      return Math.max(options.attempt * 100, 3000)
    }
  })
}

Inspiration 🙌

This repository originally started as a fork of the loopback-graphql project by Tallyb. But due to considerable change in the way query end points are created, this repository is maitained as an independant project.

Roadmap 🛣

See here the Github project