Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/elhebert/asyncapi-validation

Message validation package from YAML and JSON AsyncAPI document
https://github.com/elhebert/asyncapi-validation

api asyncapi asyncapi-specification asyncapi-tooling kafka rabbitmq validation validator

Last synced: 3 months ago
JSON representation

Message validation package from YAML and JSON AsyncAPI document

Awesome Lists containing this project

README

        

# AsyncAPI validation

[![Unit tests](https://github.com/Elhebert/asyncapi-validation/actions/workflows/unit-test.yml/badge.svg)](https://github.com/Elhebert/asyncapi-validation/actions/workflows/unit-test.yml)
[![codecov](https://codecov.io/gh/Elhebert/asyncapi-validation/graph/badge.svg?token=7QFPVL5DKN)](https://codecov.io/gh/Elhebert/asyncapi-validation)
[![CodeQL](https://github.com/Elhebert/asyncapi-validation/actions/workflows/codeql.yml/badge.svg)](https://github.com/Elhebert/asyncapi-validation/actions/workflows/codeql.yml)

Message validation package for YAML and JSON AsyncAPI documents.

This package:

- Load and parse your AsyncAPI documents from a file, an url or an in-line schema
- Support AsyncAPI documents v2.x.x and v3.x.x
- Support both YAML and JSON documents

## Installation

```bash
# NPM
npm install asyncapi-validation
# Yarn
yarn add asyncapi-validation
# PNPM
pnpm install asyncapi-validation
```

## Usage

### Parsing Functions



fromFile(path)Promise.<ValidationFunction>


Parses an AsyncAPI schema from a file and returns a validation function.




fromUrl(url)Promise.<ValidationFunction>


Parses an AsyncAPI schema from a URL and returns a validation function.




fromSchema(schema)Promise.<ValidationFunction>


Parses an AsyncAPI schema from a string and returns a validation function.



#### fromFile(path) ⇒ Promise.<ValidationFunction>

Parses an AsyncAPI schema from a file and returns a validation function.

**Kind**: global function
**Returns**: Promise.<ValidationFunction> - A promise that resolves to the validation function.
**Throws**:

- AsyncAPIParsingError if the schema is not valid or has governance issues.

| Param | Type | Description |
| ----- | ------------------- | ------------------------------------- |
| path | string | The path to the AsyncAPI schema file. |

**Example**

```js
const validator = await asyncApiValidation.parseFromFile('path/to/schema.yaml');
validator('messageKey', { foo: 'bar' });
```

#### fromUrl(url) ⇒ Promise.<ValidationFunction>

Parses an AsyncAPI schema from a URL and returns a validation function.

**Kind**: global function
**Returns**: Promise.<ValidationFunction> - A promise that resolves to the validation function.
**Throws**:

- AsyncAPIParsingError if the schema is not valid or has governance issues.

| Param | Type | Description |
| ----- | ------------------- | ------------------------------- |
| url | string | The URL of the AsyncAPI schema. |

**Example**

```js
const validator = await asyncApiValidation.fromUrl(
'https://example.org/schema.yaml'
);
validator('messageKey', { foo: 'bar' });
```

#### fromSchema(schema) ⇒ Promise.<ValidationFunction>

Parses an AsyncAPI schema from a string and returns a validation function.

**Kind**: global function
**Returns**: Promise.<ValidationFunction> - A promise that resolves to the validation function.
**Throws**:

- AsyncAPIParsingError if the schema is not valid or has governance issues.

| Param | Type | Description |
| ------ | ------------------- | -------------------------------- |
| schema | string | The AsyncAPI schema as a string. |

**Example**

```js
const validator = await asyncApiValidation.fromSchema('asyncapi: 2.0.0');
validator('messageKey', { foo: 'bar' });
```

### Validator Function

#### validate(schema) ⇒ ValidationFunction

Validates the provided AsyncAPI schema and returns a validation function.

**Kind**: global function
**Returns**: ValidationFunction - The validation function.

| Param | Type | Description |
| ------ | ------------------------ | --------------------------- |
| schema | ParseOutput | The parsed AsyncAPI schema. |

##### validate~validatorFunction(key, payload) ⇒ boolean

Validates the provided payload against the AsyncAPI schema.

**Kind**: inner method of [validate](#validate)
**Returns**: boolean - true if the payload is valid.
**Throws**:

- Error if no messages are found for the given key.
- AsyncAPIValidationError if the payload fails validation.

| Param | Type | Description |
| ------- | -------------------- | ----------------------------------- |
| key | string | The key of the message to validate. |
| payload | unknown | The payload to validate. |

**Example**

```js
const validator = await asyncApiValidation.fromSchema('asyncapi: 2.0.0');
validator('messageKey', { foo: 'bar' });
```

### Errors

#### AsyncAPIParsingError

Represents an error that occurs during the parsing of an AsyncAPI document.

**Kind**: global class

##### new AsyncAPIParsingError(message, [errors])

Represents an error that occurs during the parsing of an AsyncAPI document.

| Param | Type | Description |
| -------- | ------------------------------------- | ---------------------------------------------------------------------- |
| message | string | The error message. |
| [errors] | Array.<Diagnostic> | Optional array of diagnostic errors associated with the parsing error. |

#### AsyncAPIValidationError

Represents an error that occurs during AsyncAPI validation.

**Kind**: global class

##### new AsyncAPIValidationError(message, key, [errors])

Represents an error that occurs during AsyncAPI validation.

| Param | Type | Description |
| -------- | ----------------------------------------------------------- | -------------------------------------- |
| message | string | The error message. |
| key | string | The key associated with the error. |
| [errors] | Array.<ErrorObject> \| null | The array of validation error objects. |