Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jacoborus/directus-lite-sdk

The unofficial Directus Lite SDK in less than 1Kb
https://github.com/jacoborus/directus-lite-sdk

client directus javascript rest rest-api sdk typescript

Last synced: about 1 month ago
JSON representation

The unofficial Directus Lite SDK in less than 1Kb

Awesome Lists containing this project

README

        

# directus-lite-sdk

The unofficial [Directus](https://directus.io/) Lite SDK in less than 1Kb

- ~750 bytes
- It works on the browser, Deno and Node.js
- Bring your own fetch

## Install

Node.js: `npm i directus-lite-sdk`

Deno: -- just import it on your file

## Usage

Create a new instance of the SDK passing the URL of your Directus API:

```js
// Deno
import DirectusLiteSdk from "https://deno.land/x/directus_lite_sdk/lite-sdk.ts";
// Node
import DirectusLiteSdk from "directus-lite-sdk";

const sdk = new DirectusLiteSdk("your-api-url.com");
```

This instance exposes 2 methods: `query` and `fileUrl`.

### `query`

Accepts 2 arguments: the path of your request, and an optional object containing
the global params, and the `access_token`:

```js
fetch(
sdk.query("items/articles", {
fields: [
"id",
"title",
"author.name",
],
search: "text",
limit: 30,
page: 4,
filter: {
project: {
_eq: "lite-sdk",
},
"year(pubdate)": 2022,
},
}),
);
```

Query options:

```typescript
interface QueryOptions {
access_token?: string;
filter?: DeepParam;
fields?: string | string[];
sort?: string | string[];
search?: string;
limit?: number;
offset?: number;
page?: number;
aggregate?: Record;
deep?: DeepParam;
alias?: Record;
export?: "json" | "csv" | "xml";
meta?: "total_count" | "filter_count" | "*";
}

interface DeepParam {
[key: string]: string | number | DeepParam;
}
```

Check [Global Query Parameters](https://docs.directus.io/reference/query/) on
Directus docs for more info

### `fileUrl`

Get the full path of a file. Receives the id of the file, and optionally 2 more
arguments, the first one is an object containing the `access_token` and custom
transformations; the second is an array containing the advanced transformations.

```js
const imageUrl = sdk.fileUrl(
"1234-abcd",
{
fit: "cover",
width: 100,
format: "jpg",
},
[
["blur", 45],
["tint", "rgba(255, 0, 0)"],
["expand", { "right": 200, "bottom": 150 }],
],
);
```

FileUrl options:

```typescript
{
access_token?: string;
key?: string;
fit?: "cover" | "contain" | "inside" | "outside";
width?: number;
height?: number;
quality?: number;
withoutEnlargement?: boolean;
format?: "jpg" | "png" | "webp" | "tiff";
}
```

Check
[Requesting a Thumbnail](https://docs.directus.io/reference/files/#requesting-a-thumbnail)
on the Directus docs for more info about custom and advanced transformations

## Test

Use Deno

```sh
deno test
```

© 2022 [Jacobo Tabernero Rey](https://github.com/jacoborus) - Released under
[MIT License](https://raw.github.com/jacoborus/hexterm/master/LICENSE)