Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/elhebert/asyncapi-validation
- Owner: Elhebert
- License: mit
- Created: 2023-12-19T07:06:42.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-16T13:18:27.000Z (4 months ago)
- Last Synced: 2024-10-18T08:39:34.241Z (3 months ago)
- Topics: api, asyncapi, asyncapi-specification, asyncapi-tooling, kafka, rabbitmq, validation, validator
- Language: TypeScript
- Homepage:
- Size: 193 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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.
##### 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.
##### 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. |