# drupal-jsonapi-client

> Making working with Drupal 8's JSON:API easier, faster and cleaner.

Latest version **3.1.0** (published 2019-07-12) · MIT license · 0 weekly downloads

## Install

```sh
npm install drupal-jsonapi-client
pnpm add drupal-jsonapi-client
yarn add drupal-jsonapi-client
bun add drupal-jsonapi-client
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.1.0 |
| Published | 2019-07-12 |
| First published | 2019-05-14 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 135.9 KB |
| Known vulnerabilities | 0 (+25 in 1 direct dependencies) |
| Install scripts | no |
| GitHub stars | 19 |
| Author | David Disch |
| Maintainers | edisch |
| Keywords | drupal, drupal-8, npm, module, node, javascript |

## Links

- npm: https://www.npmjs.com/package/drupal-jsonapi-client
- Repository: https://github.com/Desarol/drupal-jsonapi-client
- Homepage: https://github.com/Desarol/drupal-jsonapi-client.git#readme
- Issues: https://github.com/Desarol/drupal-jsonapi-client.git/issues
- npm.io page: https://npm.io/package/drupal-jsonapi-client

## Dependencies (3)

- [axios](https://npm.io/package/axios.md) ^0.19.0
- [proxy-polyfill](https://npm.io/package/proxy-polyfill.md) ^0.3.0
- [regenerator-runtime](https://npm.io/package/regenerator-runtime.md) ^0.13.2

## Alternatives

- [@expo/fingerprint](https://npm.io/package/@expo/fingerprint.md) — 6.2M weekly downloads
- [@azure/monitor-opentelemetry-exporter](https://npm.io/package/@azure/monitor-opentelemetry-exporter.md) — 850.0K weekly downloads
- [@azure/monitor-opentelemetry](https://npm.io/package/@azure/monitor-opentelemetry.md) — 624.0K weekly downloads
- [@posthog/ai](https://npm.io/package/@posthog/ai.md) — 423.3K weekly downloads
- [fakefilter](https://npm.io/package/fakefilter.md) — 63.9K weekly downloads

## Recent versions

- 3.1.0 (latest) — 2019-07-12
- 3.0.7 — 2019-07-02
- 3.0.6 — 2019-06-27
- 3.0.5 — 2019-06-22
- 3.0.4 — 2019-06-21
- 3.0.3 — 2019-06-20
- 3.0.2 — 2019-06-20
- 3.0.1 — 2019-06-20
- 3.0.0 — 2019-06-20
- 1.0.4 — 2019-05-31
- 2.1.0 — 2019-05-31
- 2.0.1 — 2019-05-29
- 2.0.0 — 2019-05-29
- 1.0.3 — 2019-05-22
- 1.0.2 — 2019-05-21
- … 2 more at https://npm.io/package/drupal-jsonapi-client/versions

## README

[![npm downloads](https://img.shields.io/npm/dt/drupal-jsonapi-client.svg?maxAge=2592000)](http://npmjs.com/package/drupal-jsonapi-client)
[![gzip size](https://img.badgesize.io/https://unpkg.com/drupal-jsonapi-client@3.0.5/lib/Browser.min.js)]()
[![version](https://img.shields.io/npm/v/drupal-jsonapi-client.svg)]()

# Drupal JSON:API Client

This package makes manipulating Drupal entities and resources easier via the JSON:API module which is now in Drupal core (8.7.x).

## Installation
```
npm i --save drupal-jsonapi-client
```

```
yarn add drupal-jsonapi-client
```

## Usage

ES6 module

```js
import { GlobalClient, Entity ... } from 'drupal-jsonapi-client'
```

UMD

```html
<script src="https://unpkg.com/drupal-jsonapi-client@3.0.5/lib/Browser.min.js"></script>
<script>
  const Entity = window.DrupalJsonApi.Entity
  
  Entity
  .Load('node', 'article', 'uuid')
  .then(entity => {
    console.log(entity)
  })
</script>
```

## Key features
- **Lightweight** - HTTP library agnostic, defaults to `axios` (3kb)
- **Cross platform** - works in node.js and the browser
- **Drupal specific** - abstracts away the nuances of working with Drupal's JSON:API implementation
- **Object oriented** - leverages ES6 classes to neatly package JSON:API objects
- **Familiar** - takes inspiration from Drupal's Entity API syntax

It's still in an early stage and contributions are welcome. The general idea is to maintain a base `Entity` class which can be extended to provide more context specific uses ie. `Article extends Entity`.

Here's some syntax sugar to sink your teeth into that illustrates the vision:

```js
import { GlobalClient, Entity } from 'drupal-jsonapi-client'

GlobalClient.baseUrl = 'https://www.example.com'
GlobalClient.sendCookies = true // use this when running code on the same origin as Drupal

const doRequest = async () => {
  // Update an existing entity
  const entity = await Entity.Load('node', 'article', 'uuid')
  entity.title = 'Drupal JSON:API rocks!'
  // PATCH the existing entity
  await entity.save()

  // Create a new entity
  const newEntity = new Entity('node', 'article')
  // .setAttribute must be used here as Entity
  // doesn't know whether title should be
  // an attribute or a relationship
  newEntity.setAttribute('title', 'A brand new article!')
  // Future references to "title" can use .title
  newEntity.title = 'We changed the title'
  // POST the new entity
  await newEntity.save()
}
doRequest()
```

## Examples

For more detailed usage, see the [examples](https://github.com/Desarol/drupal-jsonapi-client/tree/3.x/examples).

## Environment support

### Node.js

node.js >= 6.0.0

### Browsers

The library works in all modern browsers.

https://netmarketshare.com

We bundle `regenerator-runtime` and `proxy-polyfill` so that the library works out of the box in IE11.

## Sponsors

[![Desarol](https://user-images.githubusercontent.com/1893118/59728701-c6887e00-9200-11e9-9128-2589d87dca87.png)](https://www.desarol.com)

---
_Source: https://npm.io/package/drupal-jsonapi-client · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
