graphql-datetime-with-offset

2.0.4 • Public • Published

graphql-datetime-with-offset

npm version

graphql-datetime-with-offset is a scalar type to be used with graphQL.js. From the client it accepts Dates in ISO 8601 format and parses them to { date: Date, offset: Number } format. It uses Luxon under the hood, and any ISO 8601 date specified should work with this scalar.

A basic understanding of GraphQL and of the graphQL.js implementation is needed to provide context for this library.

Getting started

Install graphql-datetime-with-offset using yarn

yarn add graphql-datetime-with-offset

Or using npm

npm install --save graphql-datetime-with-offset

v2

Added option of using Luxon instance directly as GraphQLDateTimeLuxon. Also means there's a breaking change where you have to require GraphQLDateTimeWithOffset like this now:

const { GraphQLDateTimeWithOffset } = require('graphql-datetime-with-offset');

and if you want to use the Luxon instance directly:

const { GraphQLDateTimeLuxon } = require('graphql-datetime-with-offset');

Examples

This is an example of how to use it, also available in the /examples folder:

const { ApolloServer, gql } = require('apollo-server'),
      { GraphQLDateTimeWithOffset } = require('graphql-datetime-with-offset');
 
 
const data = {
  events: [
    {
      title: 'Meeting with Singapore Office',
      dateWithOffset: {
        date: new Date('2019-07-18T08:00:00.000Z'),
        offset: 480,
      },
    },
    {
      title: 'Meeting with New York Office',
      dateWithOffset: {
        date: new Date('2019-07-18T16:00:00.000Z'),
        offset: -300,
      },
    },
  ],
};
 
const typeDefs = gql`
  scalar GraphQLDateTimeWithOffset
 
  type Event {
    title: String
    dateWithOffset: GraphQLDateTimeWithOffset
  }
 
  type Query {
    events: [Event]
  }
 
  type Mutation {
    addEvent(
      title: String
      dateWithOffset: GraphQLDateTimeWithOffset
    ): Event
  }
`;
 
const resolvers = {
  GraphQLDateTimeWithOffset,
  Query: {
    events: () => data.events,
  },
  Mutation: {
    addEvent: (_, args) => {
      data.events = [
        ...data.events,
        args,
      ];
      return args;
    },
  },
};
 
const server = new ApolloServer({ typeDefs, resolvers });
 
server.listen().then(({ url }) => {
  console.log(`🚀  Server ready at ${url}`);
});

Package Sidebar

Install

npm i graphql-datetime-with-offset

Weekly Downloads

2

Version

2.0.4

License

MIT

Unpacked Size

39.6 kB

Total Files

15

Last publish

Collaborators

  • robertherber