open-index/open-npm huggingface dataset:
npm package: @mondayui-org/accordion
Description: Collapse display a list of high-level options that can expand/collapse to reveal more information.
Author: Junior Garcia
Latest version: 2.0.17

# @mondayui-org/accordion

Accordion display a list of high-level options that can expand/collapse to reveal more information.

Please refer to the [documentation](https://mondayui.org//docs/components/accordion) for more information.

## Installation

```sh
yarn add @mondayui-org/accordion
# or
npm i @mondayui-org/accordion
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/avatar
Description: The Avatar component is used to represent a user, and displays the profile picture, initials or fallback icon.
Author: Junior Garcia
Latest version: 2.0.15

# @mondayui-org/avatar

The Avatar component is used to represent a user, and displays the profile picture, initials or fallback icon.

Please refer to the [documentation](https://mondayui.org/docs/components/avatar) for more information.

## Installation

```sh
yarn add @mondayui-org/avatar
# or
npm i @mondayui-org/avatar
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/badge
Description: Badges are used as a small numerical value or status descriptor for UI elements.
Author: Junior Garcia
Latest version: 2.0.13

# @mondayui-org/badge

Badges are used as a small numerical value or status descriptor for UI elements.

Please refer to the [documentation](https://mondayui.org/docs/components/badge) for more information.

## Installation

```sh
yarn add @mondayui-org/badge
# or
npm i @mondayui-org/badge
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/button
Description: Buttons allow users to perform actions and choose with a single tap.
Author: Junior Garcia
Latest version: 2.0.15

# @mondayui-org/button

Buttons allow users to perform actions and choose with a single tap.

Please refer to the [documentation](https://mondayui.org/docs/components/button) for more information.

## Installation

```sh
yarn add @mondayui-org/button
# or
npm i @mondayui-org/button
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/card
Description: Card is a container for text, photos, and actions in the context of a single subject.
Author: Junior Garcia
Latest version: 2.0.15

# @mondayui-org/card

Card is a container for text, photos, and actions in the context of a single subject.

Please refer to the [documentation](https://mondayui.org/docs/components/card) for more information.

## Installation

```sh
yarn add @mondayui-org/card
# or
npm i @mondayui-org/card
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/checkbox
Description: Checkboxes allow users to select multiple items from a list of individual items, or to mark one individual item as selected.
Author: Junior Garcia
Latest version: 2.0.16

# @mondayui-org/checkbox

Checkboxes allow users to select multiple items from a list of individual items, or to mark one individual item as selected.

Please refer to the [documentation](https://mondayui.org/docs/components/checkbox) for more information.

## Installation

```sh
yarn add @mondayui-org/checkbox
# or
npm i @mondayui-org/checkbox
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/chip
Description: Chips help people enter information, make selections, filter content, or trigger actions.
Author: Junior Garcia
Latest version: 2.0.15

# @mondayui-org/chip

A Chip is a small block of essential information that represent an input, attribute, or action.

Please refer to the [documentation](https://mondayui.org/docs/components/chip) for more information.

## Installation

```sh
yarn add @mondayui-org/chip
# or
npm i @mondayui-org/chip
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/code
Description: Code is a component used to display inline code.
Author: Junior Garcia
Latest version: 2.0.13

# @mondayui-org/code

Code is a component used to display inline code.

Please refer to the [documentation](https://mondayui.org/docs/components/code) for more information.

## Installation

```sh
yarn add @mondayui-org/code
# or
npm i @mondayui-org/code
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/divider
Description: . A separator is a visual divider between two groups of content
Author: Junior Garcia
Latest version: 2.0.14

# @mondayui-org/divider

Divider is a component that separates content in a page.

Please refer to the [documentation](https://mondayui.org/docs/components/divider) for more information.

## Installation

```sh
yarn add @mondayui-org/divider
# or
npm i @mondayui-org/divider
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/dropdown
Description: A dropdown displays a list of actions or options that a user can choose.
Author: Junior Garcia
Latest version: 2.1.4

# @mondayui-org/dropdown

Displays a list of actions or options that a user can choose.

Please refer to the [documentation](https://mondayui.org/docs/components/dropdown) for more information.

## Installation

```sh
yarn add @mondayui-org/dropdown
# or
npm i @mondayui-org/dropdown
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/image
Description: A simple image component
Author: Junior Garcia
Latest version: 2.0.15

# @mondayui-org/image

The Image component is used to display images with support for fallback.

Please refer to the [documentation](https://mondayui.org/docs/components/image) for more information.

## Installation

```sh
yarn add @mondayui-org/image
# or
npm i @mondayui-org/image
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/kbd
Description: The keyboard key components indicates which key or set of keys used to execute a specificv  action
Author: Junior Garcia
Latest version: 2.0.14

# @mondayui-org/kbd

Keyboard key or kbd is a component to display which key or combination of keys performs a given action.

Please refer to the [documentation](https://mondayui.org/docs/components/kbd) for more information.

## Installation

```sh
yarn add @mondayui-org/kbd
# or
npm i @mondayui-org/kbd
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/link
Description: Links allow users to click their way from page to page. This component is styled to resemble a hyperlink and semantically renders an &lt;a&gt;
Author: Junior Garcia
Latest version: 2.0.16

# @mondayui-org/link

Links allow users to click their way from page to page. This component is styled to resemble a hyperlink and semantically renders an `<a>` tag.

Please refer to the [documentation](https://mondayui.org/docs/components/link) for more information.

## Installation

```sh
yarn add @mondayui-org/link
# or
npm i @mondayui-org/link
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/listbox
Description: A listbox displays a list of options and allows a user to select one or more of them.
Author: Junior Garcia
Latest version: 2.1.4

# @mondayui-org/listbox

A listbox displays a list of options and allows a user to select one or more of them.

Please refer to the [documentation](https://mondayui.org/docs/components/listbox) for more information.

## Installation

```sh
yarn add @mondayui-org/listbox
# or
npm i @mondayui-org/listbox
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/menu
Description: A menu displays a list of options and allows a user to select one or more of them.
Author: Junior Garcia
Latest version: 2.0.5

# @mondayui-org/menu

A menu displays a list of options and allows a user to select one or more of them.

Please refer to the [documentation](https://mondayui.org/docs/components/menu) for more information.

## Installation

```sh
yarn add @mondayui-org/menu
# or
npm i @mondayui-org/menu
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/pagination
Description: The Pagination component allows you to display active page and navigate between multiple pages.
Author: Junior Garcia
Latest version: 2.0.16

# @mondayui-org/pagination

The Pagination component allows you to display active page and navigate between multiple pages.

Please refer to the [documentation](https://mondayui.org/docs/components/pagination) for more information.

## Installation

```sh
yarn add @mondayui-org/pagination
# or
npm i @mondayui-org/pagination
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/progress
Description: Progress bars show either determinate or indeterminate progress of an operation over time.
Author: Junior Garcia
Latest version: 2.0.15

# @mondayui-org/progress

The Progress component allows you to view the progress of any activity.

Please refer to the [documentation](https://mondayui.org/docs/components/progress) for more information.

## Installation

```sh
yarn add @mondayui-org/progress
# or
npm i @mondayui-org/progress
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/radio
Description: Radios allow users to select a single option from a list of mutually exclusive options.
Author: Junior Garcia
Latest version: 2.0.16

# @mondayui-org/radio

Radio Group allow users to select a single option from a list of mutually exclusive options.

Please refer to the [documentation](https://mondayui.org/docs/components/radio-group) for more information.

## Installation

```sh
yarn add @mondayui-org/radio
# or
npm i @mondayui-org/radio
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/ripple
Description: A simple implementation to display a ripple animation when the source component is clicked
Author: Junior Garcia
Latest version: 2.0.15

# @mondayui-org/ripple

This is a component that creates a ripple effect on the screen.

Please refer to the [documentation](https://mondayui.org/docs/components/button) for more information.

## Installation

```sh
yarn add @mondayui-org/ripple
# or
npm i @mondayui-org/ripple
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/scroll-shadow
Description: A component that applies top and bottom shadows when content overflows on scroll.
Author: Junior Garcia
Latest version: 2.1.3

# @mondayui-org/scroll-shadow

A component that applies top and bottom shadows when content overflows on scroll.

Please refer to the [documentation](https://mondayui.org/docs/components/listbox) for more information.

## Installation

```sh
yarn add @mondayui-org/scroll-shadow
# or
npm i @mondayui-org/scroll-shadow
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/select
Description: A select displays a collapsible list of options and allows a user to select one of them.
Author: Junior Garcia
Latest version: 2.1.5

# @mondayui-org/select

A select displays a collapsible list of options and allows a user to select one of them.

Please refer to the [documentation](https://mondayui.org/docs/components/select) for more information.

## Installation

```sh
yarn add @mondayui-org/select
# or
npm i @mondayui-org/select
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/skeleton
Description: Skeleton is used to display the loading state of some component.
Author: Junior Garcia
Latest version: 2.0.13

# @mondayui-org/skeleton

Skeleton is a placeholder to show a loading state and the expected shape of a component.

Please refer to the [documentation](https://mondayui.org/docs/components/skeleton) for more information.

## Installation

```sh
yarn add @mondayui-org/skeleton
# or
npm i @mondayui-org/skeleton
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/snippet
Description: Display a snippet of copyable code for the command line.
Author: Junior Garcia
Latest version: 2.0.19

# @mondayui-org/snippet

Snippet is a component that can be used to display inline or multiline code snippets.

Please refer to the [documentation](https://mondayui.org/docs/components/snippet) for more information.

## Installation

```sh
yarn add @mondayui-org/snippet
# or
npm i @mondayui-org/snippet
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/spacer
Description: A flexible spacer component designed to create consistent spacing and maintain alignment in your layout.
Author: Junior Garcia
Latest version: 2.0.13

# @mondayui-org/spacer

Spacer is a component used to add space between components.

Please refer to the [documentation](https://mondayui.org/docs/components/spacer) for more information.

## Installation

```sh
yarn add @mondayui-org/spacer
# or
npm i @mondayui-org/spacer
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @mondayui-org/spinner
Description: Loaders express an unspecified wait time or display the length of a process.
Author: Junior Garcia
Latest version: 2.0.13

# @mondayui-org/loading

Spinner express an unspecified wait time or display the length of a process.

Please refer to the [documentation](https://mondayui.org/docs/components/loading) for more information.

## Installation

```sh
yarn add @mondayui-org/loading
# or
npm i @mondayui-org/loading
```

## Contribution

Yes please! See the
[contributing guidelines](https://github.com/mondayui-org/mondayui/blob/master/CONTRIBUTING.md)
for details.

## Licence

This project is licensed under the terms of the
[MIT license](https://github.com/mondayui-org/mondayui/blob/master/LICENSE).
npm package: @monderks/nestjs-core
Description: Filtros, errores de dominio, DTOs y value objects reutilizables para microservicios NestJS.
Author: Alejo Tomás Clifton Goldney
Latest version: 0.1.0

# Monderks NestJS Core

Librería base para proyectos NestJS que implementa arquitectura limpia (Clean Architecture) y Domain-Driven Design (DDD), con filtros globales, errores de dominio, DTOs y value objects reutilizables.

## Características

- 🚨 Filtros globales para excepciones de dominio
- ⚠️ Clases de errores personalizadas (`DomainError`, `InvalidArgumentError`, etc.)
- 📦 DTOs base para casos de uso
- 🧱 Value objects reutilizables
- 🧪 Estructura coherente con DDD y microservicios

## Instalación

```bash
npm install @monderks/nestjs-core
```

O con pnpm:

```bash
pnpm add @monderks/nestjs-core
```

## Uso

### 1. Registrar el filtro global de errores

```ts
// main.ts
import { DomainExceptionFilter } from '@monderks/nestjs-core';

app.useGlobalFilters(new DomainExceptionFilter());
```

> También podés usar `APP_FILTER` con inyección de dependencias en un `CoreModule`.

### 2. Extender errores de dominio

```ts
import { DomainError } from '@monderks/nestjs-core';

export class ProductAlreadyExistsError extends DomainError {
    constructor(productId: string) {
        super(`Producto con ID ${productId} ya existe`, 'ProductAlreadyExists');
    }
}
```

### 3. Usar DTOs comunes

```ts
import { UseCaseResponseDto } from '@monderks/nestjs-core';

export class GetProductResponse extends UseCaseResponseDto {
    constructor(
        public readonly id: string,
        public readonly name: string,
    ) {
        super();
    }
}
```

## Estructura

```
@monderks/nestjs-core/
├── filters/              # Filtros globales como DomainExceptionFilter
├── errors/               # Clases base para errores del dominio
├── dto/                  # DTOs base para casos de uso
├── value-objects/        # VOs reutilizables (ej: EmailVO, UUIDVO, etc.)
└── index.ts              # Exporta todo de forma unificada
```

## Recomendación de uso

Este paquete está diseñado para ser utilizado como base en tus microservicios NestJS, asegurando:

- Un manejo de errores consistente y tipado
- Reutilización de DTOs entre módulos
- Separación clara de dominio, aplicación e infraestructura

## Licencia

MIT — © Alejo Tomás Clifton Goldney
npm package: @mondhq/framework
Description: 🌙 Mond Framework for modern Discord Bot Development
Author: Mond Team
Latest version: 0.3.2

> **⚠️ This project is still in development and is not ready for production use.**

<div align="center">

![Mond](https://raw.githubusercontent.com/mondhq/framework/main/.github/assets/banner.png)

<br />

![Lines of code](https://img.shields.io/tokei/lines/github/mondhq/framework)
![npm Downloads](https://img.shields.io/npm/dy/@mondhq/framework)
![GitHub issues](https://img.shields.io/github/issues/mondhq/framework)
![GitHub pull requests](https://img.shields.io/github/issues-pr/mondhq/framework)
![GitHub](https://img.shields.io/github/license/mondhq/framework)
![GitHub Repo stars](https://img.shields.io/github/stars/mondhq/framework)
![npm Version](https://img.shields.io/npm/v/@mondhq/framework)
![GitHub contributors](https://img.shields.io/github/contributors/mondhq/framework)

</div>

🌙 Mond Framework for modern Discord Bot Development

## About

Mond is a modern Discord Bot Framework and acts as a wrapper around discord.js. It is designed to be easy to use and to make the development of Discord Bots easier.

## Tech Stack

-   [TypeScript](https://www.typescriptlang.org/)
-   [Jest](https://jestjs.io/)
-   [ESLint](https://eslint.org/)
-   [Prettier](https://prettier.io/)

## Example Usage

```ts
import { Mond, MondEvent, MondCommand, MondEvents } from "@mondhq/framework";
import { config as dotenv } from "dotenv";
import { CommandInteraction } from "discord.js";
dotenv();

const mond = new Mond();

const readyEvent = new MondEvent()
    .setName("myReadyEvent")
    .setEvent(MondEvents.Ready)
    .setHandler((mond: Mond) => {
        mond.logger.info("Bot is Ready!");
        mond.discordjs().user?.setActivity("with Mond 🌙");
    });

const pingCommand = new MondCommand()
    .setName("ping")
    .setDescription("Pong!")
    .setHandler((_mond: Mond, interaction: CommandInteraction) => {
        interaction.reply("Pong!");
    });

mond.registerMultiple(readyEvent, pingCommand);

mond.deploy().then(() => {
    mond.start();
});
```

## Roadmap

-   [x] Commands
-   [x] Events
-   [x] Embeds
-   [ ] Other Interactions
    -   [ ] Buttons
    -   [ ] Select Menus
    -   [ ] Dropdown Actions
    -   [ ] Modals
-   [ ] Automatic loading elements from folders
-   [ ] Color Management
-   [ ] Better Formats (Footers, Titles, Messages, etc.)
-   [ ] Message Commands
-   [ ] Tests

## How to report issues/questions

-   For general issues/questions, [open an issue](https://github.com/mondhq/framework/issues)
-   For security issues, please email [security@blazing.works](mailto:security@blazing.works)
-   For important questions, please email [opensource@blazing.works](mailto:opensource@blazing.works)

## License

As this is an open-source project, support is limited. Please use [GitHub Issues](https://github.com/mondhq/framework/issues) for community support or contact [opensource@blazing.works](mailto:opensource@blazing.works) for very important matters.

**ℹ️ All code in this repository is licensed under the [MIT License](LICENSE.md).**
npm package: @mondobrain/core
Description: JavaScript wrapper for MondoBrain's central API
Author: Tyler Cosgrove
Latest version: 0.3.0

# MondoBrain

`@mondobrain/core` is a JavaScript wrapper of MondoBrain's central API

## Installation
```bash
yarn add @mondobrain/core
npm install @mondobrain/core
```

## Usage

```javascript
import { Client } from '@mondobrain/core'

// Node.JS users can use `@mondobrain/node#getAccessToken()` to get an access token
const token = "someaccesstokenissuedfromauth0"

const client = new Client(token);

ok = await client.api.test();
err = await client.api.test({ error: "Echo'ed error" });

const data = [
  { "engagement": 10.97, "eventtype": "Mission", "eventdurationmin": 117, "timespent": 46, "timespentmin": 53.82 },
  ...
  { "engagement": 11.88, "eventtype": "Mission", "eventdurationmin": 110, "timespent": 50, "timespentmin": 55 }
]

const opts = { data, outcome: 'engagement', target: 'max' };

const task = await client.solve.start(opts);

const result = await client.solve.result({ id: task.id });
```

## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License
[MIT](https://choosealicense.com/licenses/mit/)
npm package: @mondobrain/node
Description: A group of MondoBrain JS features specifically for Node.JS
Author: Tyler Cosgrove
Latest version: 0.3.0

# MondoBrain

`@mondobrain/node` is a group of MondoBrain JS features specifically for Node.JS

## Installation
```bash
yarn add @mondobrain/node
npm install @mondobrain/node
```

## Usage

```javascript
import { getAccessToken } from '@mondobrain/node';

await getAccessToken(clientID, clientSecret);
```

## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License
[MIT](https://choosealicense.com/licenses/mit/)
npm package: @mondobrain/utils
Description: Utilities for all MondoBrain JavaScript SDKs
Author: Tyler Cosgrove
Latest version: 0.2.0

# MondoBrain

`@mondobrain/utils` are helpers for the various projects in the `@mondobrain` scope

## Installation
```bash
yarn add @mondobrain/utils
npm install @mondobrain/utils
```

## Usage

```javascript
import { delay } from '@mondobrain/utils';

await delay(3 * 1000);
```

## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License
[MIT](https://choosealicense.com/licenses/mit/)
npm package: @mondokit/core
Description: Core library components that are not bound to any cloud provider. If you are using other libraries in `@mondokit`, then it is unlikely that you will need to depend on this directly as it is likely referenced, and relevant utilities exported, via cloud-spe
Latest version: 1.0.0

# MondoKit Core

Core library components that are not bound to any cloud provider. If you are using other libraries in `@mondokit`, then it is unlikely that you will need to depend on
this directly as it is likely referenced, and relevant utilities exported, via cloud-specific libraries such as `@mondokit/gcp-core`. 

[Official documentation](https://mondokit.dev/packages/gcp-core.html)
npm package: @mondokit/gcp-core
Description: Core helpers within the `@mondokit` library family that assist with Google Cloud Platform (GCP) projects, and also web aps using `express`.
Latest version: 1.0.1

# MondoKit GCP Core

Core helpers within the `@mondokit` library family that assist with Google Cloud Platform (GCP) projects, and also web aps using `express`.

[Official documentation](https://mondokit.dev/packages/gcp-core.html)
npm package: @mondokit/gcp-datastore
Description: Use Cloud Datastore (or Firestore in Datastore Mode) as your app db including [DataLoader](https://github.com/graphql/dataloader).
Latest version: 1.0.1

# MondoKit GCP Datastore

Use Cloud Datastore (or Firestore in Datastore Mode) as your app db including [DataLoader](https://github.com/graphql/dataloader).

[Official documentation](https://mondokit.dev/packages/gcp-datastore.html)
npm package: @mondokit/gcp-datastore-backups
Description: Utils for performing datastore backups
Latest version: 1.0.1

# MondoKit GCP Datastore Backups

Module to perform scheduled Datastore exports in your app.

Backups can be configured to perform full or partial exports of Datastore into Google Cloud Storage.

As well as regular backups you can configure automatic export and import into BigQuery.
This is a full import/export and any existing data in BigQuery will be deleted for the requested kinds.

Datastore exports are long-running operations. This module keeps track of operations it starts in a `backup-operations` kind.
After an operation is started it will queue tasks to update the status of the operation until it is complete.
Once complete the backup can be auto-imported into BigQuery.

[Official documentation](https://mondokit.dev/packages/gcp-datastore-backups.html)
npm package: @mondokit/gcp-firestore
Description: Use Firestore in Native mode as your app db including [DataLoader](https://github.com/graphql/dataloader) implementation.
Latest version: 1.0.1

# MondoKit GCP Firestore

Use Firestore in Native mode as your app db including [DataLoader](https://github.com/graphql/dataloader) implementation.

[Official documentation](https://mondokit.dev/packages/gcp-firestore.html)
npm package: @mondokit/gcp-firestore-backups
Description: Utils for performing firestore backups
Latest version: 1.0.1

# MondoKit GCP Firestore Backups

Module to perform scheduled Firestore exports in your app.

Backups can be configured to perform full or partial exports of Firestore into Google Cloud Storage.

As well as regular backups you can configure automatic export and import into BigQuery.
This is a full import/export and any existing data in BigQuery will be deleted for the requested kinds.

Firestore exports are long-running operations. This module keeps track of operations it starts in a `backup-operations` firestore collection.
After an operation is started it will queue tasks to update the status of the operation until it is complete.
Once complete the backup can be auto-imported into BigQuery.

[Official documentation](https://mondokit.dev/packages/gcp-firestore-backups.html)
npm package: @mondokit/gcp-firestore-migrations
Description: Setup and Run migrations, with state stored in Firestore and a mutex lock to ensure only one is run at a time
Latest version: 1.0.1

# MondoKit GCP Firestore Migrations

Setup and Run migrations, with state stored in Firestore and a mutex lock to ensure only one is run at a time

[Official documentation](https://mondokit.dev/packages/gcp-migrations.html)
npm package: @mondokit/gcp-google-auth
Description: Tools for Google Cloud Authentication
Latest version: 1.0.1

# MondoKit GCP Google Auth

Utilities extending on [Google Auth Library](https://github.com/googleapis/google-auth-library-nodejs#readme), such as middleware to validate Google JWT.

[Official documentation](https://mondokit.dev/packages/gcp-google-auth.html)
npm package: @mondomob/gae-js-bigquery
Description: Tools for Google BigQuery
Latest version: 2.0.0

# GAE JS BIGQUERY

Simplifies BigQuery client initialisation and common BigQuery operations.

## Installation

```sh
npm install @mondomob/gae-js-bigquery
```

## Quick Start

### Using BigQuery Provider
To have a global BigQuery instance available to your entire application, initialise the `bigQueryProvider`.
This will initialise the BigQuery client based on your current configuration. The instance can
then be recalled anywhere within your application as required.

```typescript
// On app startup
bigQueryProvider.init();

// Elsewhere in the app
const bigQuery = bigQueryProvider.get();
```

### Manual connect to BigQuery
To manage your own BigQuery instances, use `connectBigQuery` to connect to BigQuery based on your
current application configuration.

```typescript
class CustomBigQueryService {
  private readonly bigQuery: BigQuery;

  constructor() {
    this.bigQuery = connectBigQuery()
  }
}
```

### Edit configuration
No configuration is required if you are happy with the default conventions. 

The following options are available under the `bigQuery` namespace.

| Property     | Description                                                                         | Required |
|--------------|-------------------------------------------------------------------------------------|----------|
| projectId    | the BigQuery projectId to connect to. Will default to the application's project id. | N        |

e.g.
```json
{
  "bigQuery": {
    "projectId": "my-bigquery-project"
  }
}
```
npm package: @mondomob/gae-js-datastore
Description: Use Cloud Datastore (or Firestore in Datastore Mode) as your app db including [DataLoader](https://github.com/graphql/dataloader) implementation GraphQL and request level caching.
Latest version: 10.3.0

# GAE JS DATASTORE

Use Cloud Datastore (or Firestore in Datastore Mode) as your app db including [DataLoader](https://github.com/graphql/dataloader) implementation GraphQL
and request level caching.

[Official documentation](https://mondo-mob.github.io/gae-js-docs/packages/gae-js-datastore.html)
npm package: @mondomob/gae-js-firebase-auth
Description: Use Firebase Auth to authenticate your users
Latest version: 8.0.1

# GAE JS FIREBASE AUTH

Use Firebase Auth to authenticate your users

## Installation

```sh
npm install @mondomob/gae-js-firebase-auth
```

## Usage

The `verifyFirebaseUser` middleware will inspect the request headers and if an
`Authorization` header with a Bearer token is found it is validated as a Firebase
Auth token. For a valid user the details are mapped into a local BaseUser instance and
set into request storage for use downstream.

e.g.

Step 1: Initialise Firebase Auth and apply middleware
```typescript
// Add firebase auth support
const firebaseAdmin = admin.initializeApp({ projectId: config.projectId });
app.use(verifyFirebaseUser(firebaseAdmin));
```

Step 2: Access user info or apply guard middleware

```typescript
import { requiresRole } from "./requires-role";

// Adhoc access
app.user("/endpoint1", (req, res) => {
  const user = userRequestStorage.get();
  res.send(user ? "Logged in" : "No user found")
})

// requiresUser guard will throw if no user found
app.get(
  "/roles",
  requiresUser(),
  asyncHandler(async (req: Request, res: Response) => {
    const user = userRequestStorage.get();
    res.send(`You have roles ${user.roles}`);
  })
);

// requiresRole guard will throw if no user or user does not have the specified role
app.put(
  "/roles",
  requiresRole("ADMIN"),
  asyncHandler(async (req: Request, res: Response) => {
    const user = userRequestStorage.get();
    const { body } = req;
    await admin.auth().setCustomUserClaims(user.id, { roles: body.roles });
    res.send(`User now has roles ${body.roles}`);
  })
);

```
npm package: @mondomob/gae-js-gae-search
Description: Use Appengine Search Service
Latest version: 7.0.1

# GAE JS STORAGE

SearchService implementation that uses the GAE Search API via the
[https://github.com/mondo-mob/gae-search-service](https://github.com/mondo-mob/gae-search-service) GAE Search Service proxy.

This allows you to create data repositories that automatically index the data on mutation
and then search against your stored entities.

## Installation

```sh
npm install @mondomob/gae-js-storage
```

## Components

### GaeSearchService

Step 1: Initialise and set GaeSearchService as the search provider 
```
// Add module config schema to your app config schema
const configSchema = t.intersection([
  gaeJsCoreConfigurationSchema,
  gaeJsGaeSearchConfigurationSchema,
  // Other module schemas
]);

// Add endpoint to your config file
{
  "searchServiceEndpoint": "https://my-search-service.appspot.com"
}

// Set search provider on app startup
searchProvider.set(new GaeSearchService());
```

Step 2. Define your repository by extending SearchableRepository and providing your index configuration

```
class MyUserRepository extends SearchableRepository<User> {
  constructor() {
    super(new FirestoreRepository<User>("my-users"), {
      indexName: "users",
      indexConfig: {
        // Use true to index the property as-is from the object
        firstName: true,
        // Or pass a function to run custom logic first on the data first
        fullName: (value) => `${value.firstName} ${value.lastName}`,
      },
    });
  }
}
```

Step 3. Use the repository

```
const userRepository = new MyUserRepository();

await userRepsitory.save({id: "123", firstName: "App", lastName: "Engine"});

const results = await userRepository.search({ firstName: "App"});
```
npm package: @mondomob/gae-js-google-auth
Description: Tools for Google Cloud Authentication
Latest version: 2.0.1

# GAE JS GOOGLE AUTH

Utilities extending on [Google Auth Library](https://github.com/googleapis/google-auth-library-nodejs#readme), such as middleware to validate Google JWT.

## Installation

```sh
npm install @mondomob/gae-js-google-auth
```

## Components

### requiresGoogleJwt Middleware
Middleware to require a valid Google JWT token, for your endpoints. 

An example can be found in the [Example Pub/Sub JWT](https://cloud.google.com/pubsub/docs/push#jwt_format).

This middleware will _always_ verify:
 - An `Authorization` header is present with a `Bearer <token>` value
 - The `<token>` component is a valid token according to [Google Auth Library](https://github.com/googleapis/google-auth-library-nodejs#readme)
 - The following claims:
   - `email_verified` is `true`
   - `iss` is `"https://accounts.google.com"`

Simplest usage

```typescript
// Apply middleware however you normally would
app.use("/pubsub", requiresGoogleJwt());

// Now any matching routes will be protected
app.post("/pubsub/start-job", (req, res) => res.send("OK"));
app.post("/pubsub/poll-status", (req, res) => res.send("OK"));
```

It is recommended that you also verify the `email` matches the identity you expect of the signer (e.g. a service account email).

```typescript
// Apply middleware however you normally would
app.use("/pubsub", requiresGoogleJwt({
   email: "your-service-account@your-project.iam.gserviceaccount.com"
}));

// Now any matching routes will be protected
app.post("/pubsub/start-job", (req, res) => res.send("OK"));
app.post("/pubsub/poll-status", (req, res) => res.send("OK"));
```

**Note:** The `email` property also supports an array of values if your endpoints should be _one of_ a set of allowed emails.

If you care about the `audience` property you can also specify this property as a single value or an array.

By default, this middleware will be disabled if run in an environment outside of GCP (local testing, for example). If you would like to override
this behaviour, you can set `disableForNonGcpEnvironment` to `false`.


### requiresIapJwt Middleware
Middleware to require a valid Google Identity Aware Proxy (IAP) signed header.

This middleware will verify:
- A header value for `x-goog-iap-jwt-assertion` is present
- The value is a valid, signed header as outlined here: https://cloud.google.com/iap/docs/samples/iap-validate-jwt#iap_validate_jwt-nodejs

Simplest usage:

```typescript
// Apply middleware however you normally would
app.use("/protected", requiresIapJwt({
   audience: "projects/1234/apps/my-protected-app" // replace with your app's audience
}));

// Now any matching routes will be protected
app.post("/protected/start-job", (req, res) => res.send("OK"));
app.post("/protected/poll-status", (req, res) => res.send("OK"));
```

By default, this middleware will be disabled if run in an environment outside of GCP (local testing, for example). If you would like to override
this behaviour, you can set `disableForNonGcpEnvironment` to `false`.
npm package: @mondomob/gae-js-migrations
Description: Setup and Run migrations, with state stored in firestore and a mutex lock to ensure only one is run at a time
Latest version: 17.0.1

# GAE JS MIGRATIONS

Setup and Run migrations, with state stored in firestore and a mutex lock to ensure only one is run at a time

[Official documentation](https://mondo-mob.github.io/gae-js-docs/packages/gae-js-migrations.html)
npm package: @mondomob/gae-node-nestjs
Description: Google App Engine datastore repositories and graphql setup with nestjs
Latest version: 12.0.0-alpha-3

# gae-node-nestjs
## New package
Please note that while this package will have priority fixes for existing projects, our primary focus has moved to
our [gae-js](https://github.com/mondo-mob/gae-js) libraries.

While this library offers a lot of utilities and help for using `nestjs`, `graphql`, `datastore` the new libraries offer 
more targeted libraries, with the following benefits:

 - Not being tied to `nestjs` and easily used in `express`, `cloud functions`, or others of your choosing
 - A library for using `firestore` natively
 - A library for those still using `datastore` mode
 - Other libraries for specifics. Please see the readme for details.

A lot of the underlying utilities have been ported across to the new libraries.

## About
Node framework using [nestjs](https://nestjs.com/) and integrating with Google App Engine, particularly Google Data Store.


## Releases

See the [changelog](./CHANGELOG.md).
npm package: @mondomob/gae-node-nestjs-bak
Description: Backup of @mondomob/gae-node-nestjs since npm corrupted our repo and will hopefully fix
Latest version: 7.1.2

# gae-node-nestjs

Node framework using [nestjs](https://nestjs.com/) and integrating with Google App Engine, particularly Google Data Store.


## Releases

See the [changelog](./CHANGELOG.md).
npm package: @mondomob/generator-gae-node-nestjs
Description: A generator for building nestjs apps on app engine node
Author: Glenn Molnar
Latest version: 2.3.1

# generator-gae-node-nestjs [![NPM version][npm-image]][npm-url]
> A generator for building nestjs apps on app engine node

## Installation

First, install [Yeoman](http://yeoman.io) and `@mondomob/generator-gae-node-nestjs` using [npm](https://www.npmjs.com/) (we assume you have pre-installed [node.js](https://nodejs.org/)).

```bash
npm install -g yo
npm install -g @mondomob/generator-gae-node-nestjs
```

Then generate your new project:

```bash
yo @mondomob/gae-node-nestjs
```

## Testing

Use `npm link` or whatever you prefer to locally keep up-to-date with the latest.

Once you've done that it's best to make all changes to a concrete project and then copy them back into this generator in order
to utilise your IDE and test the app first. There is a script that helps with this and does the following:
 * Given a working directory for your target project ...
 * Recursively delete the dir, and re-create it
 * Change into that dir and run the yo generator
 * Initialise a local git rep and commit all files so that you can track changes more easily

Usage for non-windows: `./etc/test-generate.sh /some/path/to/any-test-dir`   (dir does not need to exist

Be careful ... it recursively deletes from that point ... if you call it with a bad dir it's on you :).

## Releases

See the [changelog](./CHANGELOG.md)

## License

Apache-2.0 © [Glenn Molnar]()


[npm-image]: https://badge.fury.io/js/@mondomob/generator-gae-node-nestjs.svg
[npm-url]: https://npmjs.org/package/@mondomob/generator-gae-node-nestjs
npm package: @mondopower/eslint-config-mondo
Description: Common Eslint settings for the mondoubi project
Latest version: 2.0.1

# eslint-config-mondo
This package is responsible for housing the ubi development teams preferred eslint rules and configuration

## Publishing
This leverages an automation token generated against the npm organisation and is stored in the github secrets. The publish occurs via github action. If you wish to publish a new version of this project to NPM, you will need to increment the version number in the package.json any new commits without incrementing this number will not be published

## Setting up in your repo

- npm i @mondopower/eslint-config-mondo --save-dev
- npm uninstall eslint-config-stickler
- Goto your .eslintrc.js; The extends section array handles configuration extensions, replace eslint-config-stickler with @mondopower/eslint-config-mondo e.g.

```javascript
extends: [
    '@mondopower/eslint-config-mondo',
    'plugin:@typescript-eslint/eslint-recommended',
    'plugin:@typescript-eslint/recommended',
],
```