open-index/open-npm huggingface dataset:
npm package: @glueco/plugin-llm-anthropic
Description: Anthropic Claude LLM plugin for Personal Resource Gateway
Latest version: 1.0.0

# @glueco/plugin-llm-anthropic

Anthropic Claude LLM plugin for [Glueco Gateway](https://github.com/glueco/gateway).

## Features

- **OpenAI-compatible interface** — Send requests in OpenAI format, automatically converted to Anthropic's Messages API
- **Streaming support** — Anthropic SSE events transformed to OpenAI-compatible chunks
- **Tool calling** — Full support for function/tool calling with format conversion
- **System messages** — Automatically extracted from messages array to Anthropic `system` parameter
- **Policy enforcement** — Model allowlists, token limits, streaming controls

## Supported Models

- `claude-3-5-sonnet-20241022`
- `claude-3-5-haiku-20241022`
- `claude-3-opus-20240229`
- `claude-3-sonnet-20240229`
- `claude-3-haiku-20240307`

## Usage (Target App)

```typescript
import { createTransport } from "@glueco/sdk";
import { anthropic } from "@glueco/plugin-llm-anthropic/client";

const transport = createTransport({
  proxyUrl: "https://gateway.example.com",
  appId: "app_abc123",
});

const claude = anthropic(transport);

const response = await claude.chatCompletions({
  model: "claude-3-5-sonnet-20241022",
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "What is the capital of France?" },
  ],
  max_tokens: 1000,
});

console.log(response.data.choices[0].message.content);
```

## Streaming

```typescript
const stream = await claude.chatCompletionsStream({
  model: "claude-3-5-sonnet-20241022",
  messages: [{ role: "user", content: "Tell me a story" }],
});

const reader = stream.stream.getReader();
const decoder = new TextDecoder();

while (true) {
  const { done, value } = await reader.read();
  if (done) break;
  process.stdout.write(decoder.decode(value));
}
```

## Enabling

Add to `proxy.plugins.ts` at the repository root:

```typescript
const enabledPlugins = [
  "@glueco/plugin-llm-anthropic",
  // ...other plugins
];
```

Then run `npm run build`.

## License

MIT
npm package: @glueco/plugin-llm-gemini
Description: Google Gemini LLM plugin for Personal Resource Gateway
Latest version: 1.0.0

# @glueco/plugin-llm-gemini

Google Gemini LLM plugin for Personal Resource Gateway.

## Installation

```bash
npm install @glueco/plugin-llm-gemini
```

## Usage

1. Install the package
2. Add to `proxy.plugins.ts` at repository root:

```typescript
const enabledPlugins = [
  "@glueco/plugin-llm-gemini",
  // ... other plugins
] as const;
```

3. Run `npm run build` or redeploy

## Features

- **OpenAI Compatibility**: Accepts OpenAI-compatible requests and translates them to Gemini API format
- **Response Translation**: Converts Gemini responses back to OpenAI format
- **Streaming Support**: Full streaming support with SSE translation

## Supported Actions

- `chat.completions` - OpenAI-compatible chat completions

## Supported Models

- gemini-2.0-flash-exp
- gemini-1.5-flash
- gemini-1.5-flash-8b
- gemini-1.5-pro

## Enforcement Support

This plugin supports the following enforcement knobs:

- `model` - Restrict to specific models
- `max_tokens` - Limit output tokens
- `streaming` - Enable/disable streaming

## Credentials

Required credentials in proxy admin:

- `apiKey` - Your Google AI Studio API key
- `baseUrl` (optional) - Custom API base URL
npm package: @glueco/plugin-llm-groq
Description: Groq LLM plugin for Personal Resource Gateway
Latest version: 1.0.0

# @glueco/plugin-llm-groq

Groq LLM plugin for Personal Resource Gateway.

## Installation

```bash
npm install @glueco/plugin-llm-groq
```

## Usage

1. Install the package
2. Add to `proxy.plugins.ts` at repository root:

```typescript
const enabledPlugins = [
  "@glueco/plugin-llm-groq",
  // ... other plugins
] as const;
```

3. Run `npm run build` or redeploy

## Supported Actions

- `chat.completions` - OpenAI-compatible chat completions

## Supported Models

- llama-3.3-70b-versatile
- llama-3.1-70b-versatile
- llama-3.1-8b-instant
- llama3-70b-8192
- llama3-8b-8192
- mixtral-8x7b-32768
- gemma2-9b-it

## Enforcement Support

This plugin supports the following enforcement knobs:

- `model` - Restrict to specific models
- `max_tokens` - Limit output tokens
- `streaming` - Enable/disable streaming

## Credentials

Required credentials in proxy admin:

- `apiKey` - Your Groq API key
- `baseUrl` (optional) - Custom API base URL
npm package: @gluecodes/orchiee
Description: Action orchestrator
Author: Krzysztof Czopp
Latest version: 0.1.9

# Orchiee

**Framework-agnostic action orchestrator with an awesome type support**

[![Deploy Orchiee](https://github.com/chris-czopp/orchiee/actions/workflows/deploy.yml/badge.svg)](https://github.com/chris-czopp/orchiee/actions/workflows/deploy.yml) 
[![NPM Version](https://img.shields.io/npm/v/@gluecodes/orchiee.svg?style=flat)](https://www.npmjs.com/package/@gluecodes/orchiee)


## Installation

```bash
npm install --save @gluecodes/orchiee
```

## Usage

```typescript
import * as Fn from '@gluecodes/orchiee';

const someAction = async (): SomeType => {}
const observedSomeAction = Fn.be(someAction)

Fn.observe(Fn.calling(observedSomeAction), (isBeingCalled) => {
  // isBeingCalled is Boolean type
})

Fn.observe(Fn.called(observedSomeAction), (itsReturnedValue) => {
  // itsReturnedValue is SomeType and it's taken from someAction
})

Fn.observe(Fn.failed(observedSomeAction), (error) => {
  // error is Error type
})

Fn.observe(Fn.called(observedSomeAction, Fn.called(action1), Fn.called(action2)), (itsReturnedValue) => {
  // when action1() or action2() is triggered, this callback is triggered
})

// on cleanup of your framework
Fn.cleanup() // clears all listeners
```

## License

[MIT](https://github.com/gluecodes/orchiee/blob/master/LICENSE.md)
npm package: @gluedigital/auth
Description: Glue Auth ==================
Latest version: 0.2.6

Glue Auth
==================

Module that allows to manage all the authentication of an application including the sending of emails

Usage
-----

```js
router.use(['/auth/*'], endpoints.routes(), endpoints.allowedMethods())
router.use('/api/*', authorize)
router.get('/api/demo', (ctx, next) => { ctx.body = 'Hello, visitor!' })
router.get('/api/user/getMe', requireLoggedIn, (ctx, next) => { ctx.body = 'Hello, user ' + ctx.user.id })
router.get('/api/admin/demo', requireRole('ADMIN'), (ctx, next) => { ctx.body = 'Hello, admin ' + ctx.user.id })
```

Developing
----------

To try your changes in @gluedigital/auth, clone this repo and use `yarn link`, then
link it in the demo project with `yarn link @gluedigital/auth`. We also provide a
"watch mode" to rebuild the bundle on change, which you can start with
`yarn watch`.
npm package: @gluedigital/autocomplete
Description: A very simple autocomplete component for React
Latest version: 1.4.1

# Autocomplete

A very simple autocomplete component with no dependencies.

## Usage

To install it:

> npm install --save @gluedigital/autocomplete

To use it:

```javascript
import Autocomplete from '@gluedigital/autocomplete'
import '@gluedigital/autocomplete/css/autocomplete.css'
const values = ['Alice', 'Bob', 'Carol']

// ...

<form>
  <Autocomplete values={values} name="my-field-name" required />
</form>
```

## Options

The following props can be used:

| Name | Type | Description |
|------|------|-------------|
| name | string | The name to use on the internal input |
| values | array | The allowed values |
| valueLabel | string or function | If the values are not strings, the field to use as label, or a function to generate it |
| required | bool | Whether the input should have the required flag |
| autoFocus | bool | Whether the input should have the autoFocus flag |
| noResultsText | string | A message for the dropdown when there are no results |
| placeholder | string | A placeholder shown when the input is empty |
| value | string | The preselected value |
| onChange | func | A function that will be called when the selection changes |
| withClear | bool | Whether to show a clear button |

## Developing

This package uses [nwb](https://github.com/insin/nwb) for the build. Take a look at their documentation for more info.

TL;DR: after installing nwb, just do `npm start` to open the dev environment.
npm package: @gluedigital/breadcrumb
Description: A customizable breadcrumb component.
Author: Glue.digital
Latest version: 1.0.1

# @gluedigital/breadcrumb

> A customizable breadcrumb component.

[![NPM](https://img.shields.io/npm/v/@gluedigital/breadcrumb.svg)](https://www.npmjs.com/package/@gluedigital/breadcrumb) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

## Install

```bash
yarn add @gluedigital/breadcrumb
```

## Usage

You can pass the following props to customize the breadcrumb:

```jsx
{
  crumbList: PropTypes.arrayOf(PropTypes.object).isRequired,
  className: PropTypes.string,
  successIcon: PropTypes.node // jsx element that will be shown before the text when an item has the state 'done'
}
```

`crumbList` must be an array of objects that follow this structure:
```js
{
  label: PropTypes.oneOfType([PropTypes.node, PropTypes.string]) // content to be shown on the crumb
  state: PropTypes.oneOf(['', 'current', 'done']) // Status of the current crumb
}
```

## Example
```jsx
import React from 'react'
import { Breadcrumb } from '@cofrico/breadcrumb'

const crumbs = [
  {
    label: 'First crumb',
    state: 'done' // '', 'current' or 'done'
  },
  {
    label: 'Second crumb',
    state: 'current'
  },
  {
    label: <span>Third crumb</span>,
    state: ''
  },
  {
    label: <span>Final crumb!</span>,
    state: ''
  }
]

const App = () => (
  <Breadcrumb
    crumbList={crumbs}
    className={'custom-css'}
  />
)

export default App
```
npm package: @gluedigital/calendar
Description: glue-calendar React component
Latest version: 0.1.4

# glue-calendar

[![Travis][build-badge]][build]
[![npm package][npm-badge]][npm]
[![Coveralls][coveralls-badge]][coveralls]

React component that provides a customizable calendar via props and CSS.

### Props
The currently available props are:

```

  startDate: PropTypes.object.isRequired, //Starting date for the calendar (first day of a month usually)

  numberOfMonths: PropTypes.number, //Default number of months to show from the starting date
  numberOfMonthsSmallScreen: PropTypes.number, //Number of months when the screen is considered small, by default decided with isMobile. If not specified, numberOfMonths is always used
  isSmallScreen: PropTypes.bool, //Overrides the isMobile internal function value (manually specify that numberOfMonthsSmallScreen should be used)

  onChange: PropTypes.func.isRequired, //Function with param1 value (with value being the selected or selected dates) called when value chagnes via user interaction
  value: PropTypes.array, //Currently represented value

  monthTitleRender: PropTypes.func, //Render prop that receives the initial date for a month (first day) and returns the render for that month's title
  weekDayTitles: PropTypes.array, //Array with the represented name of the 7 days of the week
  renderDay: PropTypes.func, //Optional render prop for each day that receives the corresponding Date as 

  canSelectMultipleDates: PropTypes.bool, //Allow selection of date range if true
  canSelectManyDates: PropTypes.number //Allows selection of multiple non-consecutive dates if true

```

### CSS ClassNames
The available class names for the css are:

```
calendar
    month
        header
        month-view
            days-of-week
                first
                last
                selected

```

[build-badge]: https://img.shields.io/travis/user/repo/master.png?style=flat-square
[build]: https://travis-ci.org/user/repo
[npm-badge]: https://img.shields.io/npm/v/npm-package.png?style=flat-square
[npm]: https://www.npmjs.org/package/npm-package
[coveralls-badge]: https://img.shields.io/coveralls/user/repo/master.png?style=flat-square
[coveralls]: https://coveralls.io/github/user/repo
npm package: @gluedigital/chat
Description: A chat client component powered by React & Redux
Author: Glue.digital
Latest version: 0.2.5

Chat Client
-----------

A complete chat solution to use in your React + Redux apps.

It includes:
 - A store middleware to manage the websocket connection
 - A reducer to keep track of the messages and their status
 - Some UI elements you can reuse to build your client

**Note**: This project is still under heavy development, and is not ready for production use. Feel free to test it, though.

Usage
-----

First, you have to add the middleware and reducer to your Redux store:

```js
import { createStore, combineReducers, applyMiddleware } from 'redux'
import { middleware, reducer } from '@gluedigital/chat'
 
let store = createStore(
  combineReducers({
    // Your other reducers here...
    chat: reducer
  }),
  applyMiddleware(middleware)
)
```

If you want to use our ready-made client, just render it at your component of choice:

```js
import { Chat } from '@gluedigital/chat'
// ...
<Chat autoconnect={{ chatUrl: 'wss://example.com', credentials: { username: 'demo' }}} />
```

To use the default styling, don't forget to also import our CSS from your app:

```sass
@import '~@gluedigital/chat/dist/style.css'
```

Components
----------

If the ready-made client doesn't suit your needs, you can replace some or all of the component tree.
All the wrapper components allow overriding which child classes they use, so if you want to customize eg. the Message component, you don't have to rebuild the MessageList, just pass a Message prop with your class.
For more info on the components or their props, check the source.

Protocol
--------

Check the [chat-server](https://gitlab.com/glue-gl/chat/chat-server) documentation for info on the protocol.
npm package: @gluedigital/chat-server
Description: The chat-server core
Author: Glue.digital
Latest version: 0.1.3

Chat Server
-----------

A modular chat server for all your chat needs.


Usage
-----

Creating your own chat server is very easy. Just install this module and any other plugins you'd like to use as dependencies, and initialize everything from your main:

```javascript
const Chat = require('@gluedigital/chat-server')
const FakeAuth = require('@gluedigital//chat-server-plugin-fakeauth').default

const chat = new Chat(process.env.PORT || 5000)
const fakeauth = new FakeAuth(chat)
chat.start()
```


Protocol
--------

This server uses websockets for all the communication. The message protocol is described below.

**NOTE: The protocol is not stable yet, and may change at any time.**

These are the message types that can be sent on the Chat protocol:

### From Client To Server

Outgoing chat message:
```javascript
{
  type: 'message',
  target: 'userB',
  text: 'hi, how are you?',
  senderId: 123
}
```

### From Server To Client

Incoming chat message:
```javascript
{
  id: 1519389731000,
  type: 'message',
  target: 'userA',
  author: 'userB',
  text: 'fine, you?'
}
```

Notes:
- The id is the canonical date (ie: server timestamp when received) of the message
- When sending a message, you receive it back as incoming, but with the senderId so you can keep track of it

On connection:
```javascript
{
  type: 'initial',
  user: 'userA',
  rooms: {
    'userB': {
      stats: { /* to be determined */ },
      messages: [
        /* similar to incoming messages */
      ]
    },
    '#group1': { /* etc... */ }
  }
}
```
npm package: @gluedigital/chat-server-plugin-cliniweb
Description: A chat-server plugin for Cliniweb integration.
Author: Glue.digital
Latest version: 0.2.4

Chat Server Plugin Cliniweb
---------------------------

A plugin for [chat-server](https://gitlab.com/glue-gl/chat/chat-server) that adds Cliniweb login integration.

Usage
-----

Add it before starting the chat-server:

```js
const chat = new Chat()
const cliniweb = new Cliniweb(chat)
chat.start(5000)
```

Protocol
--------

We add a new api endpoint: `/auth` where you can POST a username and password and you get a cookie that allows you to pass the verifyClient step.
npm package: @gluedigital/chat-server-plugin-fakeauth
Description: A chat-server plugin for fake authorization.
Author: Glue.digital
Latest version: 0.0.1

Cliniweb plugin
=============

A plugin for [chat-server](https://gitlab.com/glue-gl/chat-server) that adds authentication call to cliniweb.

Usage
-----

Add it before starting the chat-server:

```js
const chat = new Chat()
const cliniweb = new Cliniweb(chat)
chat.start(5000)
```
npm package: @gluedigital/chat-server-plugin-tokbox
Description: A chat-server plugin for Tokbox integration.
Author: Glue.digital
Latest version: 0.0.3

Tokbox plugin
=============

A plugin for [chat-server](https://gitlab.com/glue-gl/chat-server) that adds [Tokbox](https://tokbox.com/) call support.

Usage
-----

Add it before starting the chat-server:

```js
const chat = new Chat()
const tokbox = new Tokbox(chat)
chat.start(5000)
```

Protocol
--------

We add two new message types: `call` and `hang`.
npm package: @gluedigital/cookie-consent
Description: cookie-consent React component
Latest version: 1.1.3

# Cookie-Consent

[![Travis][build-badge]][build]
[![npm package][npm-badge]][npm]

Cookie-Consent provides a way to manage user consent under the GDPR for React sites.

Introduction
------------

Starting the 25th of May of 2018, all sites in the EU or available to EU visitors must comply with the GDPR regulation. Among other things, this means that users must be informed of what kind of personal information will be collected, and for what purposes, and consent must be obtained for all uses that don't fall under one of the exemptions (such as legitimate interest, or legal requisite).

This component provides an easy way of complying with the regulation, by adding a notification to the page, from which the full info can be accessed, and holding off any data collection until consent is obtained. For this to work, all data collection scripts must be added through this component.

This component is compatible with server-side rendering, and works great with React Helmet.

Usage
-----

To use Cookie-Consent, start by installing it:

```sh
npm install @gluedigital/cookie-consent
```

And add it to your page component like this:

```js
import CookieConsent, { Category, Partner } from '@gluedigital/cookie-consent'

/* on your render jsx: */
<CookieConsent banner="We use cookies to provide you a better experience.">
  <Category id="mandatory" description="Cookies required for the delivery of the service" required>
    <Partner id="cfduid" company="Cloudflare Inc." />
  </Category>
  <Category id="tracking" description="Cookies that allow us to monitor site usage">
    <Partner id="ga" name="Google Analytics" html="..." />
  </Category>
</CookieConsent>
```


[build-badge]: https://img.shields.io/travis/user/repo/master.png?style=flat-square
[build]: https://travis-ci.org/user/repo

[npm-badge]: https://img.shields.io/npm/v/npm-package.png?style=flat-square
[npm]: https://www.npmjs.org/package/npm-package
npm package: @gluedigital/formatted-number-input
Description: A simple React component that allows breaking up a number type input in blocks.
Author: Glue.digital
Latest version: 0.2.0

Formatted Number Input
======================

A simple React component that allows breaking up a number type input in blocks.

It is specially useful for:
 - Credit cards
 - Product keys
 - Phone numbers
 - Special styling needs
 - etc...

Usage
-----

Install the package with:

> npm install --save @gluedigital/formatted-number-input

Use it from your component like this:

```javascript
import FormattedNumberInput from '@gluedigital/formatted-number-input'

// ...

<FormattedNumberInput groups={[4, 4, 4, 4]} />
```

If you'd like to use the default style, you can import it from your main style:

```css
@import "~@gluedigital/formatted-number-input/dist/style.css"
```

All options
-----------

These are all the props you can use to customize the component:

| Prop        | Type          | Description |
|-------------|---------------|-------------|
| name        | string        | The field name for the input, when used on a form |
| groups      | array(int)    | A list with the length of each block composing the value |
| value       | array(string) | The current value of the component (separated in blocks) |
| onChange    | function      | Called on each value change; it receives the current value as a param |
| onDone      | function      | Similar to onChange, but called when the component gets filled |
| placeholder | node          | Placeholder to show while there is no input |
| separator   | node / array(node) | Separator added between inputs |


Development
-----------

To develop new features on this project, just clone it and start it as usual:

> npm start

A demo page will open with auto-reloading so you can see the results as you edit.
npm package: @gluedigital/glue-styles
Description: Basic Glue.gl styles framework
Author: Glue.gl
Latest version: 0.2.5

# Glue-styles

Glue-styles is a lightweight Sass tool set, with scaffold styles, mixins, variables and structure.

## Usage

To install it:

> npm i @gluedigital/glue-styles

To use it (normal use):

```sass
    @import '~@gluedigital/glue-styles'
```

For glue universal sripts project

- In your main sass file import

```sass
    @import '~@gluedigital/glue-styles/main'
```

- In your core sass file import

```sass
    @import '~@gluedigital/glue-styles/core'
```
npm package: @gluedigital/markdown-message
Description: markdown-message React component
Author: Glue Digital
Latest version: 2.0.0

# MarkdownMessage

React component that allows to add bold with internationalization

## Usage

To install it:

> npm install --save @gluedigital/markdown-message

To use it:

```javascript
import MarkdownMessage from '@gluedigital/markdown-message'

// ...

<MarkdownMessage id="id.message" />
```
## Warning

<IntlProvider> needs to exist in the component ancestry.

## Options

The following props can be used:

| Name | Type | Description |
|------|------|-------------|
| id | string | Text that you want to internationalizate |
| values | object | You can use this like FormattedMessage |

## Developing

This package uses [nwb](https://github.com/insin/nwb) for the build. Take a look at their documentation for more info.

TL;DR: after installing nwb, just do `npm start` to open the dev environment.
npm package: @gluedigital/modal
Description: Simple yet flexible modal system for React
Author: Glue.digital
Latest version: 1.4.3

# modal

A simple solution for flexible modals on React applications.

## Usage

To start using Modal, first make sure to add a `<ModalWrapper>` around all your modal-using components.
This works similarly to the Redux or React-Intl providers.
You should also add a `<Modal>` where you want your modals to appear.

```js
import { ModalWrapper, Modal } from '@gluedigital/modal'

const App = () =>
  <ModalWrapper>
    {/* Your other components here... */}
    <Modal />
  </ModalWrapper>
```

To register a modal type, just call `registerModal`.

```js
import { registerModal } from '@gluedigital/modal'

const DemoModal = () => <h1>This is a modal</h1>

registerModal('demo', DemoModal)
```

To show a modal, the simplest way is using a ModalLink.

```js
import { ModalLink } from '@gluedigital/modal'

const DemoPage = () =>
  <div>
    Press the button to open the modal:
    <ModalLink modal="demo">Click here</ModalLink>
  </div>
```

If you need to control the modal programmatically, you can also use the `useModal` hook, and call any of the methods on the returned object (including `show()` and `hide()`).

```js
import { useModal } from '@gluedigital/modal'

const DemoComponent = () => {
  const modal = useModal()
  const handleSave = () => {
    modal.show('loading')
    doSomethingAsync()
      .then(() => modal.hide())
  }
  return <button onClick={handleSave}>Save</button>
}
```
npm package: @gluedigital/model-nav
Description: A simple helper to navigate models returned from APIs
Author: Glue.digital
Latest version: 1.0.1

[![pipeline status](https://gitlab.com/glue-gl/model-nav/badges/master/pipeline.svg)](https://gitlab.com/glue-gl/model-nav/commits/master)
[![coverage report](https://gitlab.com/glue-gl/model-nav/badges/master/coverage.svg)](https://gitlab.com/glue-gl/model-nav/commits/master)

Model-Nav
=========

A simple library to navigate serialized flat models on your JS projects.

Usage
-----

Install it as usual:
```sh
npm install @gluedigital/model-nav
```

Use it from your code:
```js
import Model from '@gluedigital/model-nav'

// ...

const model = new Model(myData)
const someUser = model.get('user', 42)
const userOffice = model.getRelated(someUser, 'office')
```

API docs
--------

Below you can check all the available methods:

<table>
  <thead>
    <tr>
      <td>Method</td>
      <td>Example</td>
      <td>Description</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><i>constructor</i></td>
      <td>
        <pre>
js const model = new Model(data)
        </pre>
      </td>
      <td>
        Creates a new model definition for the given data.<br />
        If called multiple times with the same data, the internal structures
        will be shared between instances, providing much greater speed.
      </td>
    </tr>
    <tr>
      <td><b>get</b>(type, id)</td>
      <td>
        <pre>
const model = new Model(data)
const user = model.get('user', 42)
        </pre>
      </td>
      <td>
        Returns the entity from the specified type and id.
        Returns undefined if not found.
      </td>
    </tr>
    <tr>
      <td><b>getOne</b>(type)</td>
      <td>
        <pre>
const model = new Model(data)
const user = model.getOne('user')
        </pre>
      </td>
      <td>
        Returns the first entity from the specified type.
        Returns undefined if there isn't any.
      </td>
    </tr>
    <tr>
      <td><b>getAll</b>(type)</td>
      <td>
        <pre>
const model = new Model(data)
const users = model.getAll('user')
        </pre>
      </td>
      <td>
        Returns an array with all the entities from the given type.
      </td>
    </tr>
    <tr>
      <td><b>getRelated</b>(entity, relatedType<i>[, relationName]</i>)</td>
      <td>
        <pre>
const model = new Model(data)
const user = model.get('user', 42)
const office = model.getRelated(user, 'office')
        </pre>
      </td>
      <td>
        Navigates a relationship (1..1, 1..N, or N..N) with the given settings.
        See tests for more info.
      </td>
    </tr>
  </tbody>
</table>