A fork of the JS Client for Graphiti, made compatible with React-Native. This repository will be deleted if the compatibility-focused changes are merged into the main project.
Written in Typescript but works in plain old ES5 as well. This library is isomorphic - use it from the browser, or from the server with NodeJS.
Please see our documentation page for full usage. Below is a Typescript sample:
import { SpraypaintBase, Model, Attr, HasMany } from "spraypaint"
@Model()
class ApplicationRecord extends SpraypaintBase {
static baseUrl = "http://localhost:3000"
static apiNamespace = "/api/v1"
}
@Model()
class Person extends ApplicationRecord {
static jsonapiType = "people"
@Attr() firstName: string
@Attr() lastName: string
@HasMany() pets: Pet[]
get fullName() {
return `${this.firstName} ${this.lastName}`
}
}
@Model()
class Pet extends ApplicationRecord {
static jsonapiType = "pets"
@Attr() name: string
}
let { data } = await Person
.where({ name: 'Joe' })
.page(2).per(10)
.sort('name')
.includes("pets")
.all()
let names = data.map((p) => { return p.fullName })
console.log(names) // ['Joe Blow', 'Joe DiMaggio', ...]
console.log(data[0].pets[0].name) // "Fido"