ontotext-platform-custom-scalars
Version:
A library of customized GraphQL scalars for Ontotext Platform
69 lines (53 loc) • 2.42 kB
Markdown
# Ontotext Platform Custom GraphQL Scalars
A library providing customized scalars used in Ontotext Platform, written in JavaScript

## Purpose
The main purpose of the library is to provide JavaScript implementation of the custom GraphQL scalars used in the
Ontotext Platform. This will allow our clients to create compliant schemas, which could be used in the Platform
services without the need of implementing and supporting their own scalar types.
As the Platform provides federation, the package will be particularly useful for implementations of custom services via
[Apollo Federation](https://www.apollographql.com/docs/apollo-server/federation/introduction/), where the base schema
defined in the Platform could be extended with additional types or properties.
## Installation
### Prerequisites
* Node >= 14.2
* NPM ([npm](https://npmjs.org/))
```
npm install ontotext-platform-custom-scalars
```
## Usage
To use the scalars after installing the package, you will need to import them in your schema definition and then provide
resolvers for them.
```javascript
import { ApolloServer, gql } from 'apollo-server';
import GraphQLDecimal from 'ontotext-platform-custom-scalars';
// For ES5 projects
// const { GraphQLDecimal } = require("ontotext-platform-custom-scalars");
const schema = gql`
scalar Decimal
type CustomType {
fieldName: Decimal
}
type Query {
customType: CustomType
}
`;
const resolversFunc = {
Decimal: GraphQLDecimal
};
new ApolloServer({ typeDefs: schema, resolvers: resolversFunc }).listen().then(({ url }) => {
console.log(`🚀 Server ready at ${url}`);
});
```
## Package content
The package contains scalar types for various kinds of numbers and time. The number scalars either extend the standard
scalars provided by `GraphQL` or define completely new one.
Some of the scalars like `GraphQLDecimal`, `GraphQLInteger` and `GraphQLUnsignedLong` support bigger than standard
`JavaScrip` numbers, which is useful in some specific cases.
## Important notes
Although the package is free for the general public, it is intended to be used within the services that Ontotext
Platform provides. If any functionality requires it, the code could be changed to suite the needs of that functionality.
## License
[LICENSE](LICENSE)
## Contributing
[CONTRIBUTING](CONTRIBUTING.md)