diff --git a/.prettierignore b/.prettierignore
index 8b1c374f5..764aff77b 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -3,3 +3,4 @@ coverage
.github
examples
node_modules
+docs
diff --git a/assets/glee_resp.png b/assets/glee_resp.png
new file mode 100644
index 000000000..c1301e52d
Binary files /dev/null and b/assets/glee_resp.png differ
diff --git a/assets/glee_struct.png b/assets/glee_struct.png
new file mode 100644
index 000000000..73002726b
Binary files /dev/null and b/assets/glee_struct.png differ
diff --git a/docs/auth/bearerToken.md b/docs/auth/bearerToken.md
new file mode 100644
index 000000000..094614875
--- /dev/null
+++ b/docs/auth/bearerToken.md
@@ -0,0 +1,104 @@
+## Getting started with Bearer Token authentication
+
+Bearer Token authentication is one of the most popular forms of authentication and is widely used because of its percieved security. This guide will walk through how to implement bearer token authentication in Glee.
+
+A sample `asyncapi.yaml` for a server with security requirements and user password security scheme is shown below:
+
+```yaml
+##server asyncAPI schema
+asyncapi: 2.6.0
+info:
+ title: AsyncAPI IMDB server
+ version: 1.0.0
+ description: This app is a dummy server that would stream the trending/upcoming anime.
+servers:
+ trendingAnimeServer:
+ url: 'http://localhost:8081'
+ protocol: http
+ security:
+ - token: []
+
+ ...
+
+components:
+ securitySchemes:
+ token:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+
+```
+
+A sample `asyncapi.yaml` for a client that implements some of the requirements of the server above:
+
+```yaml
+##client asyncAPI schema
+servers:
+ trendingAnime:
+ url: http://localhost:8081
+ protocol: http
+ security:
+ - token: []
+ testwebhook:
+ url: ws://localhost:9000
+ protocol: ws
+x-remoteServers:
+ - trendingAnime
+
+ ...
+
+components:
+ securitySchemes:
+ token:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+
+```
+
+**The Client asyncapi.yaml file does't need to implement all the security requirements in the server, it only needs to implement the ones that it uses.**
+
+### Client Side
+
+Following the client `asyncapi.yaml` file above, create a file named `trendingAnime.ts` in the `auth` directory, since that is the server that has the security Property.
+
+```bash
+touch auth/trendingAnime.ts
+```
+
+When using the `token` security scheme, it is important that you pass the parameters as follows:
+
+```js
+export async clientAuth({ parsedAsyncAPI, serverName }) {
+ return {
+ token: process.env.TOKEN
+ }
+}
+```
+
+`token` should be the name of the security requirement as specified in your `asyncapi.yaml` file, and it's value should be a string.
+
+### Server side
+
+From the server `asyncapi.yaml` file above, create a file named `trendingAnimeServer.ts` in the `auth` directory, since that is the server that has the security Property.
+
+```bash
+touch auth/trendingAnimeServer.ts
+```
+
+On the server side, you can retrieve the values as follows
+
+```js
+
+export async serverAuth({ authProps, done }) {
+ authProps.getToken()
+
+ done(true)
+}
+
+```
+
+`getToken()` return a string which contains the token that was sent from the client.
+
+
+
diff --git a/docs/auth/httpApiKey.md b/docs/auth/httpApiKey.md
new file mode 100644
index 000000000..a2d7d3951
--- /dev/null
+++ b/docs/auth/httpApiKey.md
@@ -0,0 +1,108 @@
+## Getting started with httpAPIKey authentication
+
+This guide will walk through how to implement authentication using the `httpAPiKey` security scheme in Glee.
+
+A sample `asyncapi.yaml` for a server with security requirements and user `HttpApiKey` security scheme is shown below:
+
+```yaml
+##server asyncAPI schema
+asyncapi: 2.6.0
+info:
+ title: AsyncAPI IMDB server
+ version: 1.0.0
+ description: This app is a dummy server that would stream the trending/upcoming anime.
+servers:
+ trendingAnimeServer:
+ url: 'http://localhost:8081'
+ protocol: http
+ security:
+ - apiKey: []
+
+ ...
+
+components:
+ securitySchemes:
+ apiKey:
+ type: httpApiKey
+ name: api_key
+ in: query
+
+```
+
+A sample `asyncapi.yaml` for a client that implements some of the requirements of the server above:
+
+```yaml
+##client asyncAPI schema
+servers:
+ trendingAnime:
+ url: http://localhost:8081
+ protocol: http
+ security:
+ - apiKey: []
+ testwebhook:
+ url: ws://localhost:9000
+ protocol: ws
+x-remoteServers:
+ - trendingAnime
+
+ ...
+
+components:
+ securitySchemes:
+ apiKey:
+ type: httpApiKey
+ name: api_key
+ in: query
+
+
+```
+
+The `httpApiKey` could be in either the header or query parameter.
+
+**The Client asyncapi.yaml file does not need to implement all the security requirements in the server, it only needs to implement the ones that it uses.**
+
+### Client Side
+
+Following the client `asyncapi.yaml` file above, create a file named `trendingAnime.ts` in the `auth` directory, since that is the server that has the security Property.
+
+```bash
+touch auth/trendingAnime.ts
+```
+
+When using the `HttpApiKey` security scheme, it is important that you pass the parameters as follows:
+
+```js
+export async clientAuth({ parsedAsyncAPI, serverName }) {
+ return {
+ apiKey: process.env.APIKEY
+ }
+}
+```
+
+`apiKey` should be the name of the security requirement as specified in your `asyncapi.yaml` file, and it's value should be a string.
+
+
+### Server side
+
+From the server `asyncapi.yaml` file above, create a file named `trendingAnimeServer.ts` in the `auth` directory, since that is the server that has the security Property.
+
+```bash
+touch auth/trendingAnimeServer.ts
+```
+
+On the server side, you can retrieve the values as follows
+
+```js
+
+export async serverAuth({ authProps, done }) {
+ authProps.getHttpAPIKeys('api_key')()
+
+ done(true)
+}
+
+```
+
+`getHttpAPIKeys(name)` takes a name parameter to specify the name of the httpApiKey that is desired. Then it returns an object containing the httpApiKey value that was sent from the client.
+
+
+
diff --git a/docs/auth/introduction.md b/docs/auth/introduction.md
new file mode 100644
index 000000000..7431e4bcc
--- /dev/null
+++ b/docs/auth/introduction.md
@@ -0,0 +1,176 @@
+# Authentication
+
+Authentication in Glee can be done using authentication functions. Authentication functions are files that export either one or both of the `clientAuth` and `serverAuth` Node.js functions:
+
+```js
+/* websocket.js */
+
+export async function serverAuth({ authProps, done }) {
+ //server auth logic
+}
+
+export async function clientAuth({ parsedAsyncAPI, serverName }) {
+ //client auth logic
+}
+```
+
+Glee looks for authentication files in the `auth` directory by default but it can be configured using [glee config file](../config-file.md).
+The name of the authentication file should be the name of the targeted server that the authentication logic should work for.
+
+## Supported Authentication Values in asyncapi.yaml file
+
+AsyncAPI currently supports a variety of authentication formats as specified in the [documentation](https://www.asyncapi.com/docs/reference/specification/v2.6.0#securitySchemeObject), however Glee supports the following authentication schemas.
+
+- userPassword
+- Bearer token
+- HttpPApiKey
+- ApiKey
+
+A sample `asyncapi.yaml` for a server with security requirements and a `userPassword` security schemes is shown below:
+
+```yaml
+##server asyncAPI schema
+asyncapi: 2.6.0
+info:
+ title: AsyncAPI IMDB server
+ version: 1.0.0
+ description: This app is a dummy server that would stream the trending/upcoming anime.
+servers:
+ trendingAnimeServer:
+ url: 'http://localhost:8081'
+ protocol: http
+ security:
+ - userPass: []
+
+ ...
+
+components:
+ securitySchemes:
+ userPass:
+ type: userPassword
+
+```
+
+A sample `asyncapi.yaml` for a client that implements some of the requirements of the server above:
+
+```yaml
+##client asyncAPI schema
+servers:
+ trendingAnime:
+ url: http://localhost:8081
+ protocol: http
+ security:
+ - userPass: []
+ testwebhook:
+ url: ws://localhost:9000
+ protocol: ws
+x-remoteServers:
+ - trendingAnime
+
+ ...
+
+components:
+ securitySchemes:
+ userPass:
+ type: userPassword
+
+```
+
+**The Client asyncapi.yaml file does not need to implement all the security requirements in the server, it only needs to implement the ones that it uses.**
+
+
+Glee can act as both a server and a client at the same time. Hence the need for `serverAuth` and `clientAuth`. Glee acts as a client when the `x-remoteServers` property is present in the `asyncapi.yaml` file.
+
+When Glee acts as a client, it can connect to a Glee server, and when Glee acts as a server it accepts connection from other Glee clients. Hence a Glee application can both accept connections from clients while also sending requests to other Glee applications (servers) ath the same time.
+
+When a security requirement is specified in the `asyncapi.yaml` file and Glee acts as a server, the `serverAuth` function should be implemented, if Glee acts as a client then the `clientAuth` function should be implemented. If Glee is being used as both client and server, then it should have both the `clientAuth` and `serverAuth` functions.
+
+## Server Authentication in Glee
+
+The `serverAuth` function takes an argument that can be destructured as follows
+
+| Attribute | Description |
+| ---------- | --------------------------------------------------------------- |
+| done | The done function that tells the server to proceed. |
+| authProps | The authentication parameters recieved from the client. |
+| serverName | The name of the server/broker from which the event was emitted. |
+| doc | The parsedAsyncAPI schema |
+
+### done()
+
+The `done` parameter in the `serverAuth` function allows the broker/server to know what to do next depending on the boolean value you pass to it.
+
+```js
+/* websocket.js */
+
+export async function serverAuth({ authProps, done }) {
+ // done(true)
+ //done(false, 401, "Unauthorized")
+ // done(false)
+}
+```
+
+When `true` is passed to the done parameter, the server/broker knows to go ahead and allow the client to connect, which means authentication has succeeded. However if the `done` parameter is called with `false` then the server knows to throw an error message and reject the client, which means authenticatio has failed.
+
+`done()` should always be the last thing called in a `serverAuth` function, Glee won't execute any logic beyond the `done()` call.
+
+### authProps
+
+`authProps` implements a couple of methods that allows the server to retrieve the authentication parameters from the client, below are the current available methods;
+
+```js
+export async function serverAuth({ authProps, done }) {
+ //some network request
+
+ authProps.getOauthToken()
+ authProps.getHttpAPIKeys('api_key')
+ authProps.getToken()
+ authProps.getUserPass()
+
+ // done(false, 401, "Unauthorized");
+ done(false)
+}
+```
+
+| Method | Description |
+| ---------------------- | ------------------------------------------------------------------------------------------------ |
+| `getOauthToken()` | returns the oauth authentication parameter |
+| `getHttpAPIKeys(name)` | returns the HttpAPIKeys parameter with the specified name from either headers or query parameter |
+| `getToken()` | returns the http bearer token parameter |
+| `getUserPass()` | returns username and password parameters |
+
+## Client Authentication in Glee
+
+The `clientAuth` function also takes an argument, and it's argument can be destructured as follows
+
+| Attribute | Description |
+| -------------- | ------------------------------------------------------------------------------------- |
+| parsedAsyncAPI | The parsedAsyncAPI schema. |
+| serverName | The name of the server/broker from with the authentication parameters are being sent. |
+
+### possible authentication parameters
+
+The possible authentication parameters are shown in the code snippet below:
+
+```js
+export async function clientAuth({ serverName }) {
+ return {
+ token: process.env.TOKEN,
+ oauth: process.env.OAUTH2,
+ apiKey: process.env.APIKEY,
+ userPass: {
+ user: process.env.user,
+ password: process.env.password,
+ },
+ }
+}
+```
+
+**The name of the authentication parameters should be the same as the names specified in the asyncAPI.yaml file.**
+
+| auth type | values |
+| ------------------------------------- | ---------------------------------------------------------------------- |
+| http bearer (JWT) | Value should be a JWT string |
+| Oauth2 | The value should should be a string |
+| httpApiKey in headers or query params | The value should be a string |
+| userPass | The value should be an object with the user and password as properties |
diff --git a/docs/auth/userPassword.md b/docs/auth/userPassword.md
new file mode 100644
index 000000000..f74b62a5d
--- /dev/null
+++ b/docs/auth/userPassword.md
@@ -0,0 +1,104 @@
+## Getting started with username and password authentication
+
+User and password authentication is one of the most basic forms of authentication. This guide will walk through how to implement username and password authentication in Glee.
+
+A sample `asyncapi.yaml` for a server with security requirements and user password security scheme is shown below:
+
+```yaml
+##server asyncAPI schema
+asyncapi: 2.6.0
+info:
+ title: AsyncAPI IMDB server
+ version: 1.0.0
+ description: This app is a dummy server that would stream the trending/upcoming anime.
+servers:
+ trendingAnimeServer:
+ url: 'http://localhost:8081'
+ protocol: http
+ security:
+ - userPass: []
+
+ ...
+
+components:
+ securitySchemes:
+ userPass:
+ type: userPassword
+
+```
+
+A sample `asyncapi.yaml` for a client that implements some of the requirements of the server above:
+
+```yaml
+##client asyncAPI schema
+servers:
+ trendingAnime:
+ url: http://localhost:8081
+ protocol: http
+ security:
+ - userPass: []
+ testwebhook:
+ url: ws://localhost:9000
+ protocol: ws
+x-remoteServers:
+ - trendingAnime
+
+ ...
+
+components:
+ securitySchemes:
+ userPass:
+ type: userPassword
+
+```
+
+**The Client asyncapi.yaml file does not need to implement all the security requirements in the server, it only needs to implement the ones that it uses.**
+
+### Client Side
+
+Following the client `asyncapi.yaml` file above, create a file named `trendingAnime.ts` in the `auth` directory, since that is the server that has the security Property.
+
+```bash
+touch auth/trendingAnime.ts
+```
+
+When using the `userPassword` security scheme, it is important that you pass the parameters as follows:
+
+```js
+export async clientAuth({ parsedAsyncAPI, serverName }) {
+ return {
+ userPass: {
+ user: process.env.user,
+ password: process.env.password,
+ },
+ }
+}
+```
+
+`userPass` should be the name of the security requirement as specified in your `asyncapi.yaml` file, then pass `user` and `password` as it's properties
+
+
+### Server side
+
+From the server `asyncapi.yaml` file above, create a file named `trendingAnimeServer.ts` in the `auth` directory, since that is the server that has the security Property.
+
+```bash
+touch auth/trendingAnimeServer.ts
+```
+
+On the server side, you can retrieve the values as follows
+
+```js
+
+export async serverAuth({ authProps, done }) {
+ authProps.getUserPass()
+
+ done(true)
+}
+
+```
+
+`getUserPass()` return an object containing the username and password that was sent from the client.
+
+
+
diff --git a/docs/config-file.md b/docs/config-file.md
index ba8a57883..713df350a 100644
--- a/docs/config-file.md
+++ b/docs/config-file.md
@@ -18,10 +18,11 @@ This function must return an object with the following shape:
export default async function () {
return {
glee: {},
+ docs: {},
+ cluster: {},
kafka: {},
websocket: {},
mqtt: {},
- cluster: {},
http: {}
}
}
diff --git a/docs/getting-started.md b/docs/getting-started.md
new file mode 100644
index 000000000..59ed85f73
--- /dev/null
+++ b/docs/getting-started.md
@@ -0,0 +1,142 @@
+---
+title: Getting Started
+weight: 80
+---
+
+## Introduction
+
+[Glee](https://github.com/asyncapi/glee) is a spec-first framework that helps you build server-side applications. That means it operates on the principle of defining the API specification (AsyncAPI) before diving into the actual implementation of the application logic. It leverages that principle to make you more productive:
+
+- Glee ensures your code and AsyncAPI definition are on par, eliminating the problem of outdated documentation. By having both the code and the AsyncAPI definition in sync, you can ensure that the API documentation is always up to date, accurate, and reflects the current state of the application. Glee takes care of this automatically for you.
+- Glee lets you focus on what matters and handles the rest for you. You only write the code for your business use-case. Glee takes care of performance, scalability, resilience, and everything you need to make your application production-ready.
+- Glee validates the schema of the payload that it receives, if it doesn't conform to the schema that is defined in the AsyncAPI document, it throw an error telling user that the server received an invalid payload.
+
+Now, before you get started with a glee project, let's take a high level view of Application structure what glee resonates with.
+
+## Application structure
+
+Glee expects your project to have some files and folders with special names. When you run `asyncapi new glee`, [AsyncAPI CLI](https://github.com/asyncapi/cli) generates a boilerplate application structure by creating a new folder and populating an initial set of files as shown below. You can continue working in this default structure, adding new components, as described throughout the documentation of asyncapi cli.
+
+```
+├─ functions (required)
+│ ├─ onHello.js
+│ └─ ...
+├─ lifecycle (optional)
+│ ├─ onConnect.js
+│ └─ ...
+├─ .env (optional)
+├─ asyncapi.(yaml | yml | json) (required)
+├─ glee.config.js (optional)
+├─ package.json (required)
+```
+
+|File/Directory|Description|
+|---|---|
+|functions|**Required.** This directory contains all the functions that Glee must execute when it receives a message from the server. Each file must export a default async function.
+|lifecycle|This directory contains application lifecycle functions. These functions will be executed when certain events happen in the application. E.g., `onConnect`, `onServerReady`, `onDisconnect`, etc.
+|.env|The environment variables of your application. **DO NOT PUT SECRETS HERE**.
+|asyncapi.(yaml or json or yml)|**Required.** The [AsyncAPI](https://www.asyncapi.com/docs/specifications/latest) file defines your API. Make sure all the `publish` operations have an assigned `operationId` that matches a file name (excluding the extension) in the `functions` directory.
+|glee.config.js| The Glee configuration file.
+|package.json|**Required.** The Node.js package definition file. Make sure you include `@asyncapi/glee` as a dependency and add two scripts: `dev` and `start`. They should be running `glee dev` and `glee start` respectively.
+
+To understand the structure in a broader way, please refer to the associated page's links.
+
+### Let's create a glee project to simplify the app structure
+
+We will consider a simple WebSocket API using glee to understand its magic. We will create a simple WebSocket server that receives a current time from the client and then send a "good morning", "good evening" or "good night" respectively.
+
+To setup a project, you should follow our installation page on how to setup glee on your environment.
+
+We recommend creating a new Glee app using our official CLI which sets up everything automatically. (You don't need to create an empty directory. create-glee-app will make one for you.) To create a project, run: `asyncapi new glee`
+
+Once the process is completed, you should have a new Glee app ready for development and see these files that were made.
+
+![glee_structure](/assets/glee_struct.png)
+
+#### Define our Spec for our API
+
+Glee being a spec-first framework, development starts with defining your API spec. To know more details into it, you can follow glee template to understand it step by step. For our case we will define our API:
+
+```yaml
+asyncapi: 2.1.0
+info:
+ title: Greet Bot
+ version: 0.1.0
+servers:
+ websockets:
+ url: ws://0.0.0.0:3000
+ protocol: ws
+channels:
+ greet:
+ publish:
+ operationId: onGreet
+ message:
+ $ref: '#/components/messages/time'
+ subscribe:
+ message:
+ $ref: '#/components/messages/greet'
+components:
+ messages:
+ time:
+ payload:
+ type: object
+ properties:
+ currentTime:
+ type: number
+ name:
+ type: string
+ greet:
+ payload:
+ type: string
+
+```
+
+This will be the Specification that defines our API, in our case, it is very simple, as we will be sending a name and the time of the day, and our API will greet us accordingly.
+
+One thing to note here is the `operationId`, this is needed and is a crucial part of glee, as this is how we will be connecting our business logic with our spec, `operationId` is the name of the function that will be called every time a certain operation occurs. In our case whenever `/greet` channel received a message.
+
+#### Define our operation function
+
+Now for our case, we will be adding a file `functions/onGreet.js` and writing up the logic for parsing our time and sending a response.
+
+```javascript
+export default async function (event) {
+ const { name, time } = event.payload
+ const t = new Date(time)
+ const curHr = t.getHours()
+ let response = ''
+ if (curHr < 12) {
+ response = `Good Morning ${name}`
+ } else if (curHr < 18) {
+ response = `Good Afternoon ${name}`
+ } else {
+ response = `Good Evening ${name}`
+ }
+ return {
+ reply: [
+ {
+ payload: response,
+ },
+ ],
+ }
+}
+
+```
+
+Every file in the functions folder acts as a handler to develop business logic for glee, every file should export an async function that receives an event parameter, where you have access to payload and server details.
+
+Running and testing your application
+We will not execute the application and carry out testing with Postman to ensure that it is functioning as intended.
+
+Now to run your glee application, just run:
+
+```
+npm run dev
+# or
+npm run start
+```
+To send a WebSocket request with a payload e.g. `{"name":"john", "time": "1567906535"}` to `ws://localhost:3000/greet`, open Postman and checkout the endpoint:
+
+![glee_response](/assets/glee_resp.png)
+
+So, this is how easy it is to build a WebSocket API using Glee. You can also check out the example code [here](https://github.com/Souvikns/greet-bot).
diff --git a/docs/glee-template.md b/docs/glee-template.md
new file mode 100644
index 000000000..5dac9ea6d
--- /dev/null
+++ b/docs/glee-template.md
@@ -0,0 +1,89 @@
+---
+title: "Create AsyncAPI Glee template"
+weight: 170
+---
+This tutorial teaches you how to create a simple glee template. You'll use the AsyncAPI Glee template you develop to generate Javascript code. Additionally, you'll create a template code with a reusable component to reuse the custom functionality you create and test your code using an WS server.
+
+
+{`asyncapi: '2.1.0'
+info:
+ title: Hello, Glee!
+ version: 0.1.0
+
+servers:
+ websockets:
+ url: ws://0.0.0.0:3000
+ protocol: ws
+
+channels:
+ hello:
+ publish:
+ operationId: onHello
+ message:
+ $ref: '#/components/messages/hello'
+ subscribe:
+ message:
+ $ref: '#/components/messages/hello'
+
+components:
+ messages:
+ hello:
+ payload:
+ type: string`}
+
+
+Let's break it down into pieces:
+
+
+{`info:
+ title: Hello, Glee!
+ version: 0.1.0`}
+
+
+The `info` section provides general information about the API, including its title and version.
+
+Moving on, let's talk about the `servers` section.
+
+
+{`servers:
+ mosquitto:
+ url: ws://0.0.0.0:3000
+ protocol: ws`}
+
+
+The servers section defines the different servers where the API can be accessed. In this case, there is a single server named "websockets" that uses the WebSocket protocol (`ws`) and listens on the address `ws://0.0.0.0:3000`.
+
+Now lets move on to the `channels` section. This section is used to describe the event names your API will be publishing and/or subscribing to.
+
+
+{`channels:
+ hello:
+ publish:
+ operationId: onHello
+ message:
+ $ref: '#/components/messages/hello'
+ subscribe:
+ message:
+ $ref: '#/components/messages/hello'`}
+
+
+The channels section defines the communication channels available in the API. In this case, there's a channel named "hello". This channel supports both publishing and subscribing.
+
+The `publish` section specifies that the operation with ID onHello is used for publishing to the `hello` channel. The message structure is referenced from the hello message component.
+The `subscribe` section indicates that messages received on the `hello` channel should follow the structure defined in the hello message component.
+
+Next is the `payload` property under `hello` message component which is used to understand how the event should look like when publishing to that channel:
+
+
+{`components:
+ messages:
+ hello:
+ payload:
+ type: string`}
+
+
+The components section contains reusable elements, in this case, a definition for the "hello" message. It specifies that the payload of the "hello" message should be of type string.
+
+## Summary
+
+In this tutorial, you learned how to create an AsyncAPI specification document via a simple example with a glee template.
diff --git a/docs/pages/installation.md b/docs/pages/installation.md
new file mode 100644
index 000000000..cc7e724be
--- /dev/null
+++ b/docs/pages/installation.md
@@ -0,0 +1,127 @@
+---
+title: 'Installation guide'
+weight: 30
+---
+
+## Glee Installation
+
+Before installing Glee into your project, make sure you have pre-installed NPM, NodeJs and [AsyncAPI CLI](https://github.com/asyncapi/cli) tools on your system.
+
+### Automatic Installation
+
+The best way to get started with Glee is by using AsyncAPI CLI, which sets up everything automatically for you.
+To create a project, run:
+
+```sh
+asyncapi new glee
+```
+
+> For more information on how to install the AsynAPI CLI, you can review the [CLI installation guide](https://www.asyncapi.com/docs/tools/cli/installation).
+
+On installation, you'll find next steps after your project created:
+
+```
+Your project "project" has been created successfully!
+
+Next steps:
+
+ cd project
+ npm install
+ npm run dev
+
+Also, you can already open the project in your favorite editor and start tweaking it
+```
+
+While making twists to your application, you can follow along with our getting started guide on the relevant page.
+
+### Manual Installation
+
+To manually create a new app, create a new folder e.g. `myapp` so the folder structure would look like below;
+
+```
+├─ functions (required)
+│ ├─ onHello.js
+│ └─ ...
+├─ lifecycle (optional)
+│ ├─ onConnect.js
+│ └─ ...
+├─ .env (optional)
+├─ asyncapi.(yaml | yml | json) (required)
+├─ glee.config.js (optional)
+├─ package.json (required)
+```
+
+Install the required packages inside a new folder:
+
+```js
+npm init -y
+npm install @asyncapi/glee
+```
+
+Open your package.json file and add the following scripts:
+
+```js
+{
+ "scripts": {
+ "docs": "glee docs",
+ "dev": "glee dev",
+ "start": "glee start",
+ }
+}
+```
+
+These scripts refer to the different stages of developing an application.
+
+- `glee docs`: This script generates documentation for your project using the "Glee" documentation tool. This documentation includes information about your project's APIs, modules, and usage instructions.
+
+- `glee dev`: This script is used for starting a development server. It launches a local development server, build your project in development mode, or perform other development-related tasks.
+
+- `glee start`: This script is responsible for starting your project or application. It is used to launch a production-ready server or application instance.
+
+#### Creating `asyncapi.yaml` file and other required directories
+
+Create a yaml file that supports capable of receiving a "hello {name}" message with the protocol as `ws` and the channel name as `hello` the hello API will subscribe to. The operationId property is `onHello` that's the name of function and the payload property is type string publishing to that channel.
+
+```yaml
+asyncapi: 2.6.0
+info:
+ title: Hello, Glee!
+ version: 0.1.0
+
+servers:
+ websockets:
+ url: ws://0.0.0.0:3000
+ protocol: ws
+
+channels:
+ hello:
+ publish:
+ operationId: onHello
+ message:
+ $ref: '#/components/messages/hello'
+ subscribe:
+ message:
+ $ref: '#/components/messages/hello'
+
+components:
+ messages:
+ hello:
+ payload:
+ type: string
+```
+
+Create an operation function `onHello.js` inside `myapp/functions`:
+
+```js
+export default async function (event) {
+ return {
+ reply: [{
+ payload: `Hello from Glee! You said: "${event.payload}".`
+ }]
+ }
+}
+
+#### Run the Development Server
+
+- Run `npm run dev` to start the development server.
+- Connect to `ws://localhost:3000/hello` and send a WebSocket request with a payload e.g. {"john"}
diff --git a/docs/reference/README.md b/docs/reference/README.md
index fac47330e..45f8c9a10 100644
--- a/docs/reference/README.md
+++ b/docs/reference/README.md
@@ -35,7 +35,9 @@
- [lib/message](modules/lib_message.md)
- [lib/router](modules/lib_router.md)
- [lib/servers](modules/lib_servers.md)
+- [lib/userAuth](modules/lib_userAuth.md)
- [lib/util](modules/lib_util.md)
+- [lib/wsHttpAuth](modules/lib_wsHttpAuth.md)
- [middlewares](modules/middlewares.md)
- [middlewares/buffer2string](modules/middlewares_buffer2string.md)
- [middlewares/errorLogger](modules/middlewares_errorLogger.md)
diff --git a/docs/reference/classes/adapters_cluster_redis.default.md b/docs/reference/classes/adapters_cluster_redis.default.md
index 6025f766e..48d617cdf 100644
--- a/docs/reference/classes/adapters_cluster_redis.default.md
+++ b/docs/reference/classes/adapters_cluster_redis.default.md
@@ -82,7 +82,7 @@ Instantiates a Glee Cluster adapter.
#### Defined in
-[src/lib/cluster.ts:46](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L46)
+[src/lib/cluster.ts:46](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L46)
## Properties
@@ -92,7 +92,7 @@ Instantiates a Glee Cluster adapter.
#### Defined in
-[src/adapters/cluster/redis/index.ts:9](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/cluster/redis/index.ts#L9)
+[src/adapters/cluster/redis/index.ts:9](https://github.com/asyncapi/glee/blob/e143955/src/adapters/cluster/redis/index.ts#L9)
___
@@ -102,7 +102,7 @@ ___
#### Defined in
-[src/adapters/cluster/redis/index.ts:10](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/cluster/redis/index.ts#L10)
+[src/adapters/cluster/redis/index.ts:10](https://github.com/asyncapi/glee/blob/e143955/src/adapters/cluster/redis/index.ts#L10)
___
@@ -186,7 +186,7 @@ ClusterAdapter.glee
#### Defined in
-[src/lib/cluster.ts:100](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L100)
+[src/lib/cluster.ts:100](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L100)
___
@@ -204,7 +204,7 @@ ClusterAdapter.instanceId
#### Defined in
-[src/lib/cluster.ts:112](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L112)
+[src/lib/cluster.ts:112](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L112)
___
@@ -222,7 +222,7 @@ ClusterAdapter.serverName
#### Defined in
-[src/lib/cluster.ts:104](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L104)
+[src/lib/cluster.ts:104](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L104)
___
@@ -240,7 +240,7 @@ ClusterAdapter.serverUrlExpanded
#### Defined in
-[src/lib/cluster.ts:108](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L108)
+[src/lib/cluster.ts:108](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L108)
## Methods
@@ -254,7 +254,7 @@ ClusterAdapter.serverUrlExpanded
#### Defined in
-[src/adapters/cluster/redis/index.ts:24](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/cluster/redis/index.ts#L24)
+[src/adapters/cluster/redis/index.ts:24](https://github.com/asyncapi/glee/blob/e143955/src/adapters/cluster/redis/index.ts#L24)
___
@@ -274,7 +274,7 @@ ___
#### Defined in
-[src/adapters/cluster/redis/index.ts:67](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/cluster/redis/index.ts#L67)
+[src/adapters/cluster/redis/index.ts:67](https://github.com/asyncapi/glee/blob/e143955/src/adapters/cluster/redis/index.ts#L67)
___
@@ -325,7 +325,7 @@ Connects to the remote server.
#### Defined in
-[src/adapters/cluster/redis/index.ts:16](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/cluster/redis/index.ts#L16)
+[src/adapters/cluster/redis/index.ts:16](https://github.com/asyncapi/glee/blob/e143955/src/adapters/cluster/redis/index.ts#L16)
___
@@ -353,7 +353,7 @@ The deserialized message.
#### Defined in
-[src/lib/cluster.ts:158](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L158)
+[src/lib/cluster.ts:158](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L158)
___
@@ -565,7 +565,7 @@ ___
#### Defined in
-[src/adapters/cluster/redis/index.ts:12](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/cluster/redis/index.ts#L12)
+[src/adapters/cluster/redis/index.ts:12](https://github.com/asyncapi/glee/blob/e143955/src/adapters/cluster/redis/index.ts#L12)
___
@@ -1009,7 +1009,7 @@ Sends a message to the remote server.
#### Defined in
-[src/adapters/cluster/redis/index.ts:20](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/cluster/redis/index.ts#L20)
+[src/adapters/cluster/redis/index.ts:20](https://github.com/asyncapi/glee/blob/e143955/src/adapters/cluster/redis/index.ts#L20)
___
@@ -1037,7 +1037,7 @@ The serialized message,
#### Defined in
-[src/lib/cluster.ts:138](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L138)
+[src/lib/cluster.ts:138](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L138)
___
diff --git a/docs/reference/classes/adapters_http_client.default.md b/docs/reference/classes/adapters_http_client.default.md
index 122f5529f..fe3ded15c 100644
--- a/docs/reference/classes/adapters_http_client.default.md
+++ b/docs/reference/classes/adapters_http_client.default.md
@@ -86,7 +86,7 @@ Instantiates a Glee adapter.
#### Defined in
-[src/lib/adapter.ts:33](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L33)
+[src/lib/adapter.ts:41](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L41)
## Properties
@@ -170,7 +170,7 @@ Adapter.AsyncAPIServer
#### Defined in
-[src/lib/adapter.ts:160](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L160)
+[src/lib/adapter.ts:185](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L185)
___
@@ -188,7 +188,7 @@ Adapter.channelNames
#### Defined in
-[src/lib/adapter.ts:168](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L168)
+[src/lib/adapter.ts:193](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L193)
___
@@ -206,7 +206,7 @@ Adapter.connections
#### Defined in
-[src/lib/adapter.ts:172](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L172)
+[src/lib/adapter.ts:197](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L197)
___
@@ -224,7 +224,7 @@ Adapter.glee
#### Defined in
-[src/lib/adapter.ts:152](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L152)
+[src/lib/adapter.ts:177](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L177)
___
@@ -242,7 +242,7 @@ Adapter.parsedAsyncAPI
#### Defined in
-[src/lib/adapter.ts:164](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L164)
+[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L189)
___
@@ -260,7 +260,7 @@ Adapter.serverName
#### Defined in
-[src/lib/adapter.ts:156](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L156)
+[src/lib/adapter.ts:181](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L181)
___
@@ -278,7 +278,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/lib/adapter.ts:176](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L176)
+[src/lib/adapter.ts:201](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L201)
## Methods
@@ -329,7 +329,7 @@ Connects to the remote server.
#### Defined in
-[src/adapters/http/client.ts:10](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/http/client.ts#L10)
+[src/adapters/http/client.ts:12](https://github.com/asyncapi/glee/blob/e143955/src/adapters/http/client.ts#L12)
___
@@ -350,7 +350,7 @@ ___
#### Defined in
-[src/adapters/http/client.ts:54](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/http/client.ts#L54)
+[src/adapters/http/client.ts:73](https://github.com/asyncapi/glee/blob/e143955/src/adapters/http/client.ts#L73)
___
@@ -479,7 +479,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L189)
+[src/lib/adapter.ts:214](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L214)
___
@@ -524,7 +524,7 @@ Returns a list of the channels a given adapter has to subscribe to.
#### Defined in
-[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L205)
+[src/lib/adapter.ts:230](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L230)
___
@@ -606,7 +606,7 @@ ___
#### Defined in
-[src/adapters/http/client.ts:7](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/http/client.ts#L7)
+[src/adapters/http/client.ts:9](https://github.com/asyncapi/glee/blob/e143955/src/adapters/http/client.ts#L9)
___
@@ -1048,7 +1048,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:180](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L180)
+[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L205)
___
@@ -1074,7 +1074,7 @@ Sends a message to the remote server.
#### Defined in
-[src/adapters/http/client.ts:20](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/http/client.ts#L20)
+[src/adapters/http/client.ts:22](https://github.com/asyncapi/glee/blob/e143955/src/adapters/http/client.ts#L22)
___
diff --git a/docs/reference/classes/adapters_http_server.default.md b/docs/reference/classes/adapters_http_server.default.md
index c0ca50369..bdd1521fb 100644
--- a/docs/reference/classes/adapters_http_server.default.md
+++ b/docs/reference/classes/adapters_http_server.default.md
@@ -90,7 +90,7 @@ Instantiates a Glee adapter.
#### Defined in
-[src/lib/adapter.ts:33](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L33)
+[src/lib/adapter.ts:41](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L41)
## Properties
@@ -100,7 +100,7 @@ Instantiates a Glee adapter.
#### Defined in
-[src/adapters/http/server.ts:9](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/http/server.ts#L9)
+[src/adapters/http/server.ts:10](https://github.com/asyncapi/glee/blob/e143955/src/adapters/http/server.ts#L10)
___
@@ -184,7 +184,7 @@ Adapter.AsyncAPIServer
#### Defined in
-[src/lib/adapter.ts:160](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L160)
+[src/lib/adapter.ts:185](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L185)
___
@@ -202,7 +202,7 @@ Adapter.channelNames
#### Defined in
-[src/lib/adapter.ts:168](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L168)
+[src/lib/adapter.ts:193](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L193)
___
@@ -220,7 +220,7 @@ Adapter.connections
#### Defined in
-[src/lib/adapter.ts:172](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L172)
+[src/lib/adapter.ts:197](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L197)
___
@@ -238,7 +238,7 @@ Adapter.glee
#### Defined in
-[src/lib/adapter.ts:152](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L152)
+[src/lib/adapter.ts:177](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L177)
___
@@ -256,7 +256,7 @@ Adapter.parsedAsyncAPI
#### Defined in
-[src/lib/adapter.ts:164](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L164)
+[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L189)
___
@@ -274,7 +274,7 @@ Adapter.serverName
#### Defined in
-[src/lib/adapter.ts:156](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L156)
+[src/lib/adapter.ts:181](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L181)
___
@@ -292,7 +292,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/lib/adapter.ts:176](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L176)
+[src/lib/adapter.ts:201](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L201)
## Methods
@@ -317,7 +317,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/adapters/http/server.ts:84](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/http/server.ts#L84)
+[src/adapters/http/server.ts:135](https://github.com/asyncapi/glee/blob/e143955/src/adapters/http/server.ts#L135)
___
@@ -331,7 +331,7 @@ ___
#### Defined in
-[src/adapters/http/server.ts:23](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/http/server.ts#L23)
+[src/adapters/http/server.ts:24](https://github.com/asyncapi/glee/blob/e143955/src/adapters/http/server.ts#L24)
___
@@ -353,7 +353,7 @@ ___
#### Defined in
-[src/adapters/http/server.ts:130](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/http/server.ts#L130)
+[src/adapters/http/server.ts:181](https://github.com/asyncapi/glee/blob/e143955/src/adapters/http/server.ts#L181)
___
@@ -373,7 +373,7 @@ ___
#### Defined in
-[src/adapters/http/server.ts:124](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/http/server.ts#L124)
+[src/adapters/http/server.ts:175](https://github.com/asyncapi/glee/blob/e143955/src/adapters/http/server.ts#L175)
___
@@ -424,7 +424,7 @@ Connects to the remote server.
#### Defined in
-[src/adapters/http/server.ts:15](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/http/server.ts#L15)
+[src/adapters/http/server.ts:16](https://github.com/asyncapi/glee/blob/e143955/src/adapters/http/server.ts#L16)
___
@@ -553,7 +553,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L189)
+[src/lib/adapter.ts:214](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L214)
___
@@ -598,7 +598,7 @@ Returns a list of the channels a given adapter has to subscribe to.
#### Defined in
-[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L205)
+[src/lib/adapter.ts:230](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L230)
___
@@ -680,7 +680,7 @@ ___
#### Defined in
-[src/adapters/http/server.ts:11](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/http/server.ts#L11)
+[src/adapters/http/server.ts:12](https://github.com/asyncapi/glee/blob/e143955/src/adapters/http/server.ts#L12)
___
@@ -1122,7 +1122,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:180](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L180)
+[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L205)
___
@@ -1148,7 +1148,7 @@ Sends a message to the remote server.
#### Defined in
-[src/adapters/http/server.ts:19](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/http/server.ts#L19)
+[src/adapters/http/server.ts:20](https://github.com/asyncapi/glee/blob/e143955/src/adapters/http/server.ts#L20)
___
diff --git a/docs/reference/classes/adapters_kafka.default.md b/docs/reference/classes/adapters_kafka.default.md
index 0b8a6817c..7ca7c8842 100644
--- a/docs/reference/classes/adapters_kafka.default.md
+++ b/docs/reference/classes/adapters_kafka.default.md
@@ -88,7 +88,7 @@ Instantiates a Glee adapter.
#### Defined in
-[src/lib/adapter.ts:33](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L33)
+[src/lib/adapter.ts:41](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L41)
## Properties
@@ -98,7 +98,7 @@ Instantiates a Glee adapter.
#### Defined in
-[src/adapters/kafka/index.ts:8](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/kafka/index.ts#L8)
+[src/adapters/kafka/index.ts:8](https://github.com/asyncapi/glee/blob/e143955/src/adapters/kafka/index.ts#L8)
___
@@ -108,7 +108,7 @@ ___
#### Defined in
-[src/adapters/kafka/index.ts:7](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/kafka/index.ts#L7)
+[src/adapters/kafka/index.ts:7](https://github.com/asyncapi/glee/blob/e143955/src/adapters/kafka/index.ts#L7)
___
@@ -192,7 +192,7 @@ Adapter.AsyncAPIServer
#### Defined in
-[src/lib/adapter.ts:160](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L160)
+[src/lib/adapter.ts:185](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L185)
___
@@ -210,7 +210,7 @@ Adapter.channelNames
#### Defined in
-[src/lib/adapter.ts:168](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L168)
+[src/lib/adapter.ts:193](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L193)
___
@@ -228,7 +228,7 @@ Adapter.connections
#### Defined in
-[src/lib/adapter.ts:172](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L172)
+[src/lib/adapter.ts:197](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L197)
___
@@ -246,7 +246,7 @@ Adapter.glee
#### Defined in
-[src/lib/adapter.ts:152](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L152)
+[src/lib/adapter.ts:177](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L177)
___
@@ -264,7 +264,7 @@ Adapter.parsedAsyncAPI
#### Defined in
-[src/lib/adapter.ts:164](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L164)
+[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L189)
___
@@ -282,7 +282,7 @@ Adapter.serverName
#### Defined in
-[src/lib/adapter.ts:156](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L156)
+[src/lib/adapter.ts:181](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L181)
___
@@ -300,7 +300,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/lib/adapter.ts:176](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L176)
+[src/lib/adapter.ts:201](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L201)
## Methods
@@ -322,7 +322,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/adapters/kafka/index.ts:95](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/kafka/index.ts#L95)
+[src/adapters/kafka/index.ts:95](https://github.com/asyncapi/glee/blob/e143955/src/adapters/kafka/index.ts#L95)
___
@@ -373,7 +373,7 @@ Connects to the remote server.
#### Defined in
-[src/adapters/kafka/index.ts:13](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/kafka/index.ts#L13)
+[src/adapters/kafka/index.ts:13](https://github.com/asyncapi/glee/blob/e143955/src/adapters/kafka/index.ts#L13)
___
@@ -502,7 +502,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L189)
+[src/lib/adapter.ts:214](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L214)
___
@@ -547,7 +547,7 @@ Returns a list of the channels a given adapter has to subscribe to.
#### Defined in
-[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L205)
+[src/lib/adapter.ts:230](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L230)
___
@@ -629,7 +629,7 @@ ___
#### Defined in
-[src/adapters/kafka/index.ts:9](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/kafka/index.ts#L9)
+[src/adapters/kafka/index.ts:9](https://github.com/asyncapi/glee/blob/e143955/src/adapters/kafka/index.ts#L9)
___
@@ -1071,7 +1071,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:180](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L180)
+[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L205)
___
@@ -1097,7 +1097,7 @@ Sends a message to the remote server.
#### Defined in
-[src/adapters/kafka/index.ts:79](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/kafka/index.ts#L79)
+[src/adapters/kafka/index.ts:79](https://github.com/asyncapi/glee/blob/e143955/src/adapters/kafka/index.ts#L79)
___
diff --git a/docs/reference/classes/adapters_mqtt.default.md b/docs/reference/classes/adapters_mqtt.default.md
index 1e6bc636a..738f220e6 100644
--- a/docs/reference/classes/adapters_mqtt.default.md
+++ b/docs/reference/classes/adapters_mqtt.default.md
@@ -96,7 +96,7 @@ Instantiates a Glee adapter.
#### Defined in
-[src/lib/adapter.ts:33](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L33)
+[src/lib/adapter.ts:41](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L41)
## Properties
@@ -106,7 +106,7 @@ Instantiates a Glee adapter.
#### Defined in
-[src/adapters/mqtt/index.ts:29](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L29)
+[src/adapters/mqtt/index.ts:29](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L29)
___
@@ -116,7 +116,7 @@ ___
#### Defined in
-[src/adapters/mqtt/index.ts:30](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L30)
+[src/adapters/mqtt/index.ts:30](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L30)
___
@@ -200,7 +200,7 @@ Adapter.AsyncAPIServer
#### Defined in
-[src/lib/adapter.ts:160](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L160)
+[src/lib/adapter.ts:185](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L185)
___
@@ -218,7 +218,7 @@ Adapter.channelNames
#### Defined in
-[src/lib/adapter.ts:168](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L168)
+[src/lib/adapter.ts:193](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L193)
___
@@ -236,7 +236,7 @@ Adapter.connections
#### Defined in
-[src/lib/adapter.ts:172](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L172)
+[src/lib/adapter.ts:197](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L197)
___
@@ -254,7 +254,7 @@ Adapter.glee
#### Defined in
-[src/lib/adapter.ts:152](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L152)
+[src/lib/adapter.ts:177](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L177)
___
@@ -272,7 +272,7 @@ Adapter.parsedAsyncAPI
#### Defined in
-[src/lib/adapter.ts:164](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L164)
+[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L189)
___
@@ -290,7 +290,7 @@ Adapter.serverName
#### Defined in
-[src/lib/adapter.ts:156](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L156)
+[src/lib/adapter.ts:181](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L181)
___
@@ -308,7 +308,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/lib/adapter.ts:176](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L176)
+[src/lib/adapter.ts:201](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L201)
## Methods
@@ -322,7 +322,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/adapters/mqtt/index.ts:151](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L151)
+[src/adapters/mqtt/index.ts:151](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L151)
___
@@ -342,7 +342,7 @@ ___
#### Defined in
-[src/adapters/mqtt/index.ts:229](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L229)
+[src/adapters/mqtt/index.ts:229](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L229)
___
@@ -365,7 +365,7 @@ ___
#### Defined in
-[src/adapters/mqtt/index.ts:245](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L245)
+[src/adapters/mqtt/index.ts:245](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L245)
___
@@ -385,7 +385,7 @@ ___
#### Defined in
-[src/adapters/mqtt/index.ts:206](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L206)
+[src/adapters/mqtt/index.ts:206](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L206)
___
@@ -430,7 +430,7 @@ ___
#### Defined in
-[src/adapters/mqtt/index.ts:118](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L118)
+[src/adapters/mqtt/index.ts:118](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L118)
___
@@ -450,7 +450,7 @@ Connects to the remote server.
#### Defined in
-[src/adapters/mqtt/index.ts:36](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L36)
+[src/adapters/mqtt/index.ts:36](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L36)
___
@@ -579,7 +579,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L189)
+[src/lib/adapter.ts:214](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L214)
___
@@ -623,7 +623,7 @@ ___
#### Defined in
-[src/adapters/mqtt/index.ts:44](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L44)
+[src/adapters/mqtt/index.ts:44](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L44)
___
@@ -643,7 +643,7 @@ Returns a list of the channels a given adapter has to subscribe to.
#### Defined in
-[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L205)
+[src/lib/adapter.ts:230](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L230)
___
@@ -663,7 +663,7 @@ ___
#### Defined in
-[src/adapters/mqtt/index.ts:64](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L64)
+[src/adapters/mqtt/index.ts:64](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L64)
___
@@ -683,7 +683,7 @@ ___
#### Defined in
-[src/adapters/mqtt/index.ts:95](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L95)
+[src/adapters/mqtt/index.ts:95](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L95)
___
@@ -765,7 +765,7 @@ ___
#### Defined in
-[src/adapters/mqtt/index.ts:32](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L32)
+[src/adapters/mqtt/index.ts:32](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L32)
___
@@ -1207,7 +1207,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:180](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L180)
+[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L205)
___
@@ -1233,7 +1233,7 @@ Sends a message to the remote server.
#### Defined in
-[src/adapters/mqtt/index.ts:40](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L40)
+[src/adapters/mqtt/index.ts:40](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L40)
___
@@ -1288,7 +1288,7 @@ ___
#### Defined in
-[src/adapters/mqtt/index.ts:128](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/mqtt/index.ts#L128)
+[src/adapters/mqtt/index.ts:128](https://github.com/asyncapi/glee/blob/e143955/src/adapters/mqtt/index.ts#L128)
___
diff --git a/docs/reference/classes/adapters_socket_io.default.md b/docs/reference/classes/adapters_socket_io.default.md
index 3dd44d584..fd53d69b5 100644
--- a/docs/reference/classes/adapters_socket_io.default.md
+++ b/docs/reference/classes/adapters_socket_io.default.md
@@ -89,7 +89,7 @@ Instantiates a Glee adapter.
#### Defined in
-[src/lib/adapter.ts:33](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L33)
+[src/lib/adapter.ts:41](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L41)
## Properties
@@ -99,7 +99,7 @@ Instantiates a Glee adapter.
#### Defined in
-[src/adapters/socket.io/index.ts:6](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/socket.io/index.ts#L6)
+[src/adapters/socket.io/index.ts:6](https://github.com/asyncapi/glee/blob/e143955/src/adapters/socket.io/index.ts#L6)
___
@@ -183,7 +183,7 @@ Adapter.AsyncAPIServer
#### Defined in
-[src/lib/adapter.ts:160](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L160)
+[src/lib/adapter.ts:185](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L185)
___
@@ -201,7 +201,7 @@ Adapter.channelNames
#### Defined in
-[src/lib/adapter.ts:168](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L168)
+[src/lib/adapter.ts:193](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L193)
___
@@ -219,7 +219,7 @@ Adapter.connections
#### Defined in
-[src/lib/adapter.ts:172](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L172)
+[src/lib/adapter.ts:197](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L197)
___
@@ -237,7 +237,7 @@ Adapter.glee
#### Defined in
-[src/lib/adapter.ts:152](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L152)
+[src/lib/adapter.ts:177](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L177)
___
@@ -255,7 +255,7 @@ Adapter.parsedAsyncAPI
#### Defined in
-[src/lib/adapter.ts:164](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L164)
+[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L189)
___
@@ -273,7 +273,7 @@ Adapter.serverName
#### Defined in
-[src/lib/adapter.ts:156](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L156)
+[src/lib/adapter.ts:181](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L181)
___
@@ -291,7 +291,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/lib/adapter.ts:176](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L176)
+[src/lib/adapter.ts:201](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L201)
## Methods
@@ -305,7 +305,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/adapters/socket.io/index.ts:20](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/socket.io/index.ts#L20)
+[src/adapters/socket.io/index.ts:20](https://github.com/asyncapi/glee/blob/e143955/src/adapters/socket.io/index.ts#L20)
___
@@ -326,7 +326,7 @@ ___
#### Defined in
-[src/adapters/socket.io/index.ts:97](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/socket.io/index.ts#L97)
+[src/adapters/socket.io/index.ts:97](https://github.com/asyncapi/glee/blob/e143955/src/adapters/socket.io/index.ts#L97)
___
@@ -346,7 +346,7 @@ ___
#### Defined in
-[src/adapters/socket.io/index.ts:78](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/socket.io/index.ts#L78)
+[src/adapters/socket.io/index.ts:78](https://github.com/asyncapi/glee/blob/e143955/src/adapters/socket.io/index.ts#L78)
___
@@ -397,7 +397,7 @@ Connects to the remote server.
#### Defined in
-[src/adapters/socket.io/index.ts:12](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/socket.io/index.ts#L12)
+[src/adapters/socket.io/index.ts:12](https://github.com/asyncapi/glee/blob/e143955/src/adapters/socket.io/index.ts#L12)
___
@@ -526,7 +526,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L189)
+[src/lib/adapter.ts:214](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L214)
___
@@ -571,7 +571,7 @@ Returns a list of the channels a given adapter has to subscribe to.
#### Defined in
-[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L205)
+[src/lib/adapter.ts:230](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L230)
___
@@ -653,7 +653,7 @@ ___
#### Defined in
-[src/adapters/socket.io/index.ts:8](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/socket.io/index.ts#L8)
+[src/adapters/socket.io/index.ts:8](https://github.com/asyncapi/glee/blob/e143955/src/adapters/socket.io/index.ts#L8)
___
@@ -1095,7 +1095,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:180](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L180)
+[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L205)
___
@@ -1121,7 +1121,7 @@ Sends a message to the remote server.
#### Defined in
-[src/adapters/socket.io/index.ts:16](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/socket.io/index.ts#L16)
+[src/adapters/socket.io/index.ts:16](https://github.com/asyncapi/glee/blob/e143955/src/adapters/socket.io/index.ts#L16)
___
diff --git a/docs/reference/classes/adapters_ws_client.default.md b/docs/reference/classes/adapters_ws_client.default.md
index 4dfc91d63..da9f724e8 100644
--- a/docs/reference/classes/adapters_ws_client.default.md
+++ b/docs/reference/classes/adapters_ws_client.default.md
@@ -90,7 +90,7 @@ Instantiates a Glee adapter.
#### Defined in
-[src/lib/adapter.ts:33](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L33)
+[src/lib/adapter.ts:41](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L41)
## Properties
@@ -100,7 +100,7 @@ Instantiates a Glee adapter.
#### Defined in
-[src/adapters/ws/client.ts:14](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/client.ts#L14)
+[src/adapters/ws/client.ts:15](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/client.ts#L15)
___
@@ -184,7 +184,7 @@ Adapter.AsyncAPIServer
#### Defined in
-[src/lib/adapter.ts:160](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L160)
+[src/lib/adapter.ts:185](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L185)
___
@@ -202,7 +202,7 @@ Adapter.channelNames
#### Defined in
-[src/lib/adapter.ts:168](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L168)
+[src/lib/adapter.ts:193](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L193)
___
@@ -220,7 +220,7 @@ Adapter.connections
#### Defined in
-[src/lib/adapter.ts:172](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L172)
+[src/lib/adapter.ts:197](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L197)
___
@@ -238,7 +238,7 @@ Adapter.glee
#### Defined in
-[src/lib/adapter.ts:152](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L152)
+[src/lib/adapter.ts:177](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L177)
___
@@ -256,7 +256,7 @@ Adapter.parsedAsyncAPI
#### Defined in
-[src/lib/adapter.ts:164](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L164)
+[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L189)
___
@@ -274,7 +274,7 @@ Adapter.serverName
#### Defined in
-[src/lib/adapter.ts:156](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L156)
+[src/lib/adapter.ts:181](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L181)
___
@@ -292,7 +292,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/lib/adapter.ts:176](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L176)
+[src/lib/adapter.ts:201](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L201)
## Methods
@@ -306,7 +306,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/adapters/ws/client.ts:28](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/client.ts#L28)
+[src/adapters/ws/client.ts:29](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/client.ts#L29)
___
@@ -327,7 +327,7 @@ ___
#### Defined in
-[src/adapters/ws/client.ts:105](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/client.ts#L105)
+[src/adapters/ws/client.ts:112](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/client.ts#L112)
___
@@ -347,7 +347,7 @@ ___
#### Defined in
-[src/adapters/ws/client.ts:92](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/client.ts#L92)
+[src/adapters/ws/client.ts:99](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/client.ts#L99)
___
@@ -398,7 +398,7 @@ Connects to the remote server.
#### Defined in
-[src/adapters/ws/client.ts:20](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/client.ts#L20)
+[src/adapters/ws/client.ts:21](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/client.ts#L21)
___
@@ -527,7 +527,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L189)
+[src/lib/adapter.ts:214](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L214)
___
@@ -572,7 +572,7 @@ Returns a list of the channels a given adapter has to subscribe to.
#### Defined in
-[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L205)
+[src/lib/adapter.ts:230](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L230)
___
@@ -586,7 +586,7 @@ ___
#### Defined in
-[src/adapters/ws/client.ts:70](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/client.ts#L70)
+[src/adapters/ws/client.ts:77](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/client.ts#L77)
___
@@ -668,7 +668,7 @@ ___
#### Defined in
-[src/adapters/ws/client.ts:16](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/client.ts#L16)
+[src/adapters/ws/client.ts:17](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/client.ts#L17)
___
@@ -1110,7 +1110,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:180](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L180)
+[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L205)
___
@@ -1136,7 +1136,7 @@ Sends a message to the remote server.
#### Defined in
-[src/adapters/ws/client.ts:24](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/client.ts#L24)
+[src/adapters/ws/client.ts:25](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/client.ts#L25)
___
diff --git a/docs/reference/classes/adapters_ws_server.default.md b/docs/reference/classes/adapters_ws_server.default.md
index f470ead65..e2cb429fb 100644
--- a/docs/reference/classes/adapters_ws_server.default.md
+++ b/docs/reference/classes/adapters_ws_server.default.md
@@ -68,6 +68,8 @@
- [resolveProtocolConfig](adapters_ws_server.default.md#resolveprotocolconfig)
- [send](adapters_ws_server.default.md#send)
- [setMaxListeners](adapters_ws_server.default.md#setmaxlisteners)
+- [verifyClientFunc](adapters_ws_server.default.md#verifyclientfunc)
+- [wrapCallbackDecorator](adapters_ws_server.default.md#wrapcallbackdecorator)
- [getEventListeners](adapters_ws_server.default.md#geteventlisteners)
- [listenerCount](adapters_ws_server.default.md#listenercount-1)
- [on](adapters_ws_server.default.md#on-1)
@@ -97,7 +99,7 @@ Instantiates a Glee adapter.
#### Defined in
-[src/lib/adapter.ts:33](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L33)
+[src/lib/adapter.ts:41](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L41)
## Properties
@@ -181,7 +183,7 @@ Adapter.AsyncAPIServer
#### Defined in
-[src/lib/adapter.ts:160](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L160)
+[src/lib/adapter.ts:185](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L185)
___
@@ -199,7 +201,7 @@ Adapter.channelNames
#### Defined in
-[src/lib/adapter.ts:168](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L168)
+[src/lib/adapter.ts:193](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L193)
___
@@ -217,7 +219,7 @@ Adapter.connections
#### Defined in
-[src/lib/adapter.ts:172](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L172)
+[src/lib/adapter.ts:197](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L197)
___
@@ -235,7 +237,7 @@ Adapter.glee
#### Defined in
-[src/lib/adapter.ts:152](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L152)
+[src/lib/adapter.ts:177](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L177)
___
@@ -253,7 +255,7 @@ Adapter.parsedAsyncAPI
#### Defined in
-[src/lib/adapter.ts:164](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L164)
+[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L189)
___
@@ -271,7 +273,7 @@ Adapter.serverName
#### Defined in
-[src/lib/adapter.ts:156](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L156)
+[src/lib/adapter.ts:181](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L181)
___
@@ -289,7 +291,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/lib/adapter.ts:176](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L176)
+[src/lib/adapter.ts:201](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L201)
## Methods
@@ -303,7 +305,7 @@ Adapter.serverUrlExpanded
#### Defined in
-[src/adapters/ws/server.ts:174](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L174)
+[src/adapters/ws/server.ts:197](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L197)
___
@@ -324,7 +326,7 @@ ___
#### Defined in
-[src/adapters/ws/server.ts:245](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L245)
+[src/adapters/ws/server.ts:287](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L287)
___
@@ -344,7 +346,7 @@ ___
#### Defined in
-[src/adapters/ws/server.ts:225](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L225)
+[src/adapters/ws/server.ts:265](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L265)
___
@@ -381,7 +383,7 @@ ___
### checkBindings
-▸ `Private` **checkBindings**(`socket`, `bindingOpts`): `boolean`
+▸ `Private` **checkBindings**(`socket`, `bindingOpts`): `Promise`<`boolean`\>
#### Parameters
@@ -392,11 +394,11 @@ ___
#### Returns
-`boolean`
+`Promise`<`boolean`\>
#### Defined in
-[src/adapters/ws/server.ts:144](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L144)
+[src/adapters/ws/server.ts:145](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L145)
___
@@ -416,7 +418,7 @@ ___
#### Defined in
-[src/adapters/ws/server.ts:53](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L53)
+[src/adapters/ws/server.ts:54](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L54)
___
@@ -436,7 +438,7 @@ ___
#### Defined in
-[src/adapters/ws/server.ts:42](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L42)
+[src/adapters/ws/server.ts:43](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L43)
___
@@ -456,7 +458,7 @@ Connects to the remote server.
#### Defined in
-[src/adapters/ws/server.ts:19](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L19)
+[src/adapters/ws/server.ts:20](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L20)
___
@@ -544,7 +546,7 @@ ___
#### Defined in
-[src/adapters/ws/server.ts:36](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L36)
+[src/adapters/ws/server.ts:37](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L37)
___
@@ -565,7 +567,7 @@ ___
#### Defined in
-[src/adapters/ws/server.ts:27](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L27)
+[src/adapters/ws/server.ts:28](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L28)
___
@@ -627,7 +629,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L189)
+[src/lib/adapter.ts:214](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L214)
___
@@ -672,7 +674,7 @@ Returns a list of the channels a given adapter has to subscribe to.
#### Defined in
-[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L205)
+[src/lib/adapter.ts:230](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L230)
___
@@ -686,7 +688,7 @@ ___
#### Defined in
-[src/adapters/ws/server.ts:126](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L126)
+[src/adapters/ws/server.ts:127](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L127)
___
@@ -706,7 +708,7 @@ ___
#### Defined in
-[src/adapters/ws/server.ts:58](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L58)
+[src/adapters/ws/server.ts:59](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L59)
___
@@ -788,7 +790,7 @@ ___
#### Defined in
-[src/adapters/ws/server.ts:15](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L15)
+[src/adapters/ws/server.ts:16](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L16)
___
@@ -949,7 +951,7 @@ ___
#### Defined in
-[src/adapters/ws/server.ts:77](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L77)
+[src/adapters/ws/server.ts:78](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L78)
___
@@ -969,7 +971,7 @@ ___
#### Defined in
-[src/adapters/ws/server.ts:108](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L108)
+[src/adapters/ws/server.ts:109](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L109)
___
@@ -1272,7 +1274,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:180](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L180)
+[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L205)
___
@@ -1298,7 +1300,7 @@ Sends a message to the remote server.
#### Defined in
-[src/adapters/ws/server.ts:23](https://github.com/asyncapi/glee/blob/f9c7c95/src/adapters/ws/server.ts#L23)
+[src/adapters/ws/server.ts:24](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L24)
___
@@ -1337,6 +1339,62 @@ node_modules/@types/node/events.d.ts:520
___
+### verifyClientFunc
+
+▸ `Private` **verifyClientFunc**(`gleeAuth`, `info`, `cb`): `void`
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `gleeAuth` | `any` |
+| `info` | `any` |
+| `cb` | `any` |
+
+#### Returns
+
+`void`
+
+#### Defined in
+
+[src/adapters/ws/server.ts:186](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L186)
+
+___
+
+### wrapCallbackDecorator
+
+▸ `Private` **wrapCallbackDecorator**(`cb`): (`val`: `boolean`, `code`: `number`, `message`: `string`) => `void`
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `cb` | `any` |
+
+#### Returns
+
+`fn`
+
+▸ (`val`, `code?`, `message?`): `void`
+
+##### Parameters
+
+| Name | Type | Default value |
+| :------ | :------ | :------ |
+| `val` | `boolean` | `undefined` |
+| `code` | `number` | `401` |
+| `message` | `string` | `'Unauthorized'` |
+
+##### Returns
+
+`void`
+
+#### Defined in
+
+[src/adapters/ws/server.ts:176](https://github.com/asyncapi/glee/blob/e143955/src/adapters/ws/server.ts#L176)
+
+___
+
### getEventListeners
▸ `Static` **getEventListeners**(`emitter`, `name`): `Function`[]
diff --git a/docs/reference/classes/errors_glee_error.default.md b/docs/reference/classes/errors_glee_error.default.md
index ecb032ed2..388e7d9c6 100644
--- a/docs/reference/classes/errors_glee_error.default.md
+++ b/docs/reference/classes/errors_glee_error.default.md
@@ -53,7 +53,7 @@ Error.constructor
#### Defined in
-[src/errors/glee-error.ts:5](https://github.com/asyncapi/glee/blob/f9c7c95/src/errors/glee-error.ts#L5)
+[src/errors/glee-error.ts:5](https://github.com/asyncapi/glee/blob/e143955/src/errors/glee-error.ts#L5)
## Properties
@@ -63,7 +63,7 @@ Error.constructor
#### Defined in
-[src/errors/glee-error.ts:3](https://github.com/asyncapi/glee/blob/f9c7c95/src/errors/glee-error.ts#L3)
+[src/errors/glee-error.ts:3](https://github.com/asyncapi/glee/blob/e143955/src/errors/glee-error.ts#L3)
___
@@ -73,7 +73,7 @@ ___
#### Defined in
-[src/errors/glee-error.ts:2](https://github.com/asyncapi/glee/blob/f9c7c95/src/errors/glee-error.ts#L2)
+[src/errors/glee-error.ts:2](https://github.com/asyncapi/glee/blob/e143955/src/errors/glee-error.ts#L2)
___
@@ -178,7 +178,7 @@ node_modules/@types/node/globals.d.ts:13
#### Defined in
-[src/errors/glee-error.ts:16](https://github.com/asyncapi/glee/blob/f9c7c95/src/errors/glee-error.ts#L16)
+[src/errors/glee-error.ts:16](https://github.com/asyncapi/glee/blob/e143955/src/errors/glee-error.ts#L16)
___
@@ -192,7 +192,7 @@ ___
#### Defined in
-[src/errors/glee-error.ts:12](https://github.com/asyncapi/glee/blob/f9c7c95/src/errors/glee-error.ts#L12)
+[src/errors/glee-error.ts:12](https://github.com/asyncapi/glee/blob/e143955/src/errors/glee-error.ts#L12)
## Methods
diff --git a/docs/reference/classes/lib_adapter.default.md b/docs/reference/classes/lib_adapter.default.md
index cea1d8d74..4413df9d8 100644
--- a/docs/reference/classes/lib_adapter.default.md
+++ b/docs/reference/classes/lib_adapter.default.md
@@ -105,7 +105,7 @@ EventEmitter.constructor
#### Defined in
-[src/lib/adapter.ts:33](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L33)
+[src/lib/adapter.ts:41](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L41)
## Properties
@@ -115,7 +115,7 @@ EventEmitter.constructor
#### Defined in
-[src/lib/adapter.ts:19](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L19)
+[src/lib/adapter.ts:27](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L27)
___
@@ -125,7 +125,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:21](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L21)
+[src/lib/adapter.ts:29](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L29)
___
@@ -135,7 +135,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:22](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L22)
+[src/lib/adapter.ts:30](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L30)
___
@@ -145,7 +145,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:17](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L17)
+[src/lib/adapter.ts:25](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L25)
___
@@ -155,7 +155,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:20](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L20)
+[src/lib/adapter.ts:28](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L28)
___
@@ -165,7 +165,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:18](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L18)
+[src/lib/adapter.ts:26](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L26)
___
@@ -175,7 +175,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:23](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L23)
+[src/lib/adapter.ts:31](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L31)
___
@@ -255,7 +255,7 @@ node_modules/@types/node/events.d.ts:327
#### Defined in
-[src/lib/adapter.ts:160](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L160)
+[src/lib/adapter.ts:185](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L185)
___
@@ -269,7 +269,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:168](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L168)
+[src/lib/adapter.ts:193](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L193)
___
@@ -283,7 +283,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:172](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L172)
+[src/lib/adapter.ts:197](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L197)
___
@@ -297,7 +297,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:152](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L152)
+[src/lib/adapter.ts:177](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L177)
___
@@ -311,7 +311,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:164](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L164)
+[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L189)
___
@@ -325,7 +325,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:156](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L156)
+[src/lib/adapter.ts:181](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L181)
___
@@ -339,7 +339,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:176](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L176)
+[src/lib/adapter.ts:201](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L201)
## Methods
@@ -386,7 +386,7 @@ Connects to the remote server.
#### Defined in
-[src/lib/adapter.ts:220](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L220)
+[src/lib/adapter.ts:245](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L245)
___
@@ -511,7 +511,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:189](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L189)
+[src/lib/adapter.ts:214](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L214)
___
@@ -552,7 +552,7 @@ Returns a list of the channels a given adapter has to subscribe to.
#### Defined in
-[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L205)
+[src/lib/adapter.ts:230](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L230)
___
@@ -1058,7 +1058,7 @@ ___
#### Defined in
-[src/lib/adapter.ts:180](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L180)
+[src/lib/adapter.ts:205](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L205)
___
@@ -1080,7 +1080,7 @@ Sends a message to the remote server.
#### Defined in
-[src/lib/adapter.ts:229](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L229)
+[src/lib/adapter.ts:255](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L255)
___
diff --git a/docs/reference/classes/lib_cluster.default.md b/docs/reference/classes/lib_cluster.default.md
index f692a607f..992842f02 100644
--- a/docs/reference/classes/lib_cluster.default.md
+++ b/docs/reference/classes/lib_cluster.default.md
@@ -83,7 +83,7 @@ EventEmitter.constructor
#### Defined in
-[src/lib/cluster.ts:46](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L46)
+[src/lib/cluster.ts:46](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L46)
## Properties
@@ -93,7 +93,7 @@ EventEmitter.constructor
#### Defined in
-[src/lib/cluster.ts:36](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L36)
+[src/lib/cluster.ts:36](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L36)
___
@@ -103,7 +103,7 @@ ___
#### Defined in
-[src/lib/cluster.ts:39](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L39)
+[src/lib/cluster.ts:39](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L39)
___
@@ -113,7 +113,7 @@ ___
#### Defined in
-[src/lib/cluster.ts:37](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L37)
+[src/lib/cluster.ts:37](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L37)
___
@@ -123,7 +123,7 @@ ___
#### Defined in
-[src/lib/cluster.ts:38](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L38)
+[src/lib/cluster.ts:38](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L38)
___
@@ -203,7 +203,7 @@ node_modules/@types/node/events.d.ts:327
#### Defined in
-[src/lib/cluster.ts:100](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L100)
+[src/lib/cluster.ts:100](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L100)
___
@@ -217,7 +217,7 @@ ___
#### Defined in
-[src/lib/cluster.ts:112](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L112)
+[src/lib/cluster.ts:112](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L112)
___
@@ -231,7 +231,7 @@ ___
#### Defined in
-[src/lib/cluster.ts:104](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L104)
+[src/lib/cluster.ts:104](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L104)
___
@@ -245,7 +245,7 @@ ___
#### Defined in
-[src/lib/cluster.ts:108](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L108)
+[src/lib/cluster.ts:108](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L108)
## Methods
@@ -292,7 +292,7 @@ Connects to the remote server.
#### Defined in
-[src/lib/cluster.ts:119](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L119)
+[src/lib/cluster.ts:119](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L119)
___
@@ -316,7 +316,7 @@ The deserialized message.
#### Defined in
-[src/lib/cluster.ts:158](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L158)
+[src/lib/cluster.ts:158](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L158)
___
@@ -954,7 +954,7 @@ Sends a message to the remote server.
#### Defined in
-[src/lib/cluster.ts:128](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L128)
+[src/lib/cluster.ts:128](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L128)
___
@@ -978,7 +978,7 @@ The serialized message,
#### Defined in
-[src/lib/cluster.ts:138](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L138)
+[src/lib/cluster.ts:138](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L138)
___
diff --git a/docs/reference/classes/lib_connection.default.md b/docs/reference/classes/lib_connection.default.md
index 3d0da3906..bbb2ca99b 100644
--- a/docs/reference/classes/lib_connection.default.md
+++ b/docs/reference/classes/lib_connection.default.md
@@ -47,7 +47,7 @@ Instantiates a Glee connection.
#### Defined in
-[src/lib/connection.ts:28](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L28)
+[src/lib/connection.ts:28](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L28)
## Properties
@@ -57,7 +57,7 @@ Instantiates a Glee connection.
#### Defined in
-[src/lib/connection.ts:15](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L15)
+[src/lib/connection.ts:15](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L15)
___
@@ -67,7 +67,7 @@ ___
#### Defined in
-[src/lib/connection.ts:13](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L13)
+[src/lib/connection.ts:13](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L13)
___
@@ -77,7 +77,7 @@ ___
#### Defined in
-[src/lib/connection.ts:16](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L16)
+[src/lib/connection.ts:16](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L16)
___
@@ -87,7 +87,7 @@ ___
#### Defined in
-[src/lib/connection.ts:12](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L12)
+[src/lib/connection.ts:12](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L12)
___
@@ -97,7 +97,7 @@ ___
#### Defined in
-[src/lib/connection.ts:14](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L14)
+[src/lib/connection.ts:14](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L14)
## Accessors
@@ -111,7 +111,7 @@ ___
#### Defined in
-[src/lib/connection.ts:54](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L54)
+[src/lib/connection.ts:54](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L54)
___
@@ -125,7 +125,7 @@ ___
#### Defined in
-[src/lib/connection.ts:46](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L46)
+[src/lib/connection.ts:46](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L46)
___
@@ -139,7 +139,7 @@ ___
#### Defined in
-[src/lib/connection.ts:58](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L58)
+[src/lib/connection.ts:58](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L58)
___
@@ -153,7 +153,7 @@ ___
#### Defined in
-[src/lib/connection.ts:42](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L42)
+[src/lib/connection.ts:42](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L42)
___
@@ -167,7 +167,7 @@ ___
#### Defined in
-[src/lib/connection.ts:50](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L50)
+[src/lib/connection.ts:50](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L50)
## Methods
@@ -183,7 +183,7 @@ Returns the real connection object.
#### Defined in
-[src/lib/connection.ts:77](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L77)
+[src/lib/connection.ts:77](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L77)
___
@@ -205,4 +205,4 @@ Checks whether a channel is associated with this connection.
#### Defined in
-[src/lib/connection.ts:68](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/connection.ts#L68)
+[src/lib/connection.ts:68](https://github.com/asyncapi/glee/blob/e143955/src/lib/connection.ts#L68)
diff --git a/docs/reference/classes/lib_glee.default.md b/docs/reference/classes/lib_glee.default.md
index 091f316ff..ff8ff71f5 100644
--- a/docs/reference/classes/lib_glee.default.md
+++ b/docs/reference/classes/lib_glee.default.md
@@ -89,7 +89,7 @@ EventEmitter.constructor
#### Defined in
-[src/lib/glee.ts:44](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L44)
+[src/lib/glee.ts:45](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L45)
## Properties
@@ -99,7 +99,7 @@ EventEmitter.constructor
#### Defined in
-[src/lib/glee.ts:36](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L36)
+[src/lib/glee.ts:37](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L37)
___
@@ -109,7 +109,7 @@ ___
#### Defined in
-[src/lib/glee.ts:37](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L37)
+[src/lib/glee.ts:38](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L38)
___
@@ -119,7 +119,7 @@ ___
#### Defined in
-[src/lib/glee.ts:34](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L34)
+[src/lib/glee.ts:35](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L35)
___
@@ -129,7 +129,7 @@ ___
#### Defined in
-[src/lib/glee.ts:35](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L35)
+[src/lib/glee.ts:36](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L36)
___
@@ -209,7 +209,7 @@ node_modules/@types/node/events.d.ts:327
#### Defined in
-[src/lib/glee.ts:58](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L58)
+[src/lib/glee.ts:59](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L59)
___
@@ -223,7 +223,7 @@ ___
#### Defined in
-[src/lib/glee.ts:62](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L62)
+[src/lib/glee.ts:63](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L63)
___
@@ -237,7 +237,7 @@ ___
#### Defined in
-[src/lib/glee.ts:54](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L54)
+[src/lib/glee.ts:55](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L55)
## Methods
@@ -260,7 +260,7 @@ ___
#### Defined in
-[src/lib/glee.ts:304](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L304)
+[src/lib/glee.ts:307](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L307)
___
@@ -284,7 +284,7 @@ Starts executing the middlewares for the given error and message.
#### Defined in
-[src/lib/glee.ts:291](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L291)
+[src/lib/glee.ts:294](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L294)
___
@@ -308,7 +308,7 @@ Starts executing the middlewares for the given message.
#### Defined in
-[src/lib/glee.ts:221](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L221)
+[src/lib/glee.ts:224](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L224)
___
@@ -334,7 +334,7 @@ Adds a connection adapter.
#### Defined in
-[src/lib/glee.ts:74](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L74)
+[src/lib/glee.ts:75](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L75)
___
@@ -381,7 +381,7 @@ Tells the adapters to connect.
#### Defined in
-[src/lib/glee.ts:140](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L140)
+[src/lib/glee.ts:143](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L143)
___
@@ -534,7 +534,7 @@ Injects an error into the Glee inbound error middleware chain.
#### Defined in
-[src/lib/glee.ts:192](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L192)
+[src/lib/glee.ts:195](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L195)
___
@@ -558,7 +558,7 @@ Injects a message into the Glee inbound middleware chain.
#### Defined in
-[src/lib/glee.ts:170](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L170)
+[src/lib/glee.ts:173](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L173)
___
@@ -574,7 +574,7 @@ Alias for `connect`.
#### Defined in
-[src/lib/glee.ts:159](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L159)
+[src/lib/glee.ts:162](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L162)
___
@@ -1082,7 +1082,7 @@ Send a message to the adapters.
#### Defined in
-[src/lib/glee.ts:127](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L127)
+[src/lib/glee.ts:130](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L130)
___
@@ -1104,7 +1104,7 @@ Sets the cluster adapter to use.
#### Defined in
-[src/lib/glee.ts:90](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L90)
+[src/lib/glee.ts:91](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L91)
___
@@ -1161,7 +1161,7 @@ Synchronizes the other instances in the cluster with the message.
#### Defined in
-[src/lib/glee.ts:205](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L205)
+[src/lib/glee.ts:208](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L208)
___
@@ -1183,7 +1183,7 @@ Use a middleware for inbound messages.
#### Defined in
-[src/lib/glee.ts:101](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L101)
+[src/lib/glee.ts:102](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L102)
▸ **use**(`channel`, `...middlewares`): `void`
@@ -1200,7 +1200,7 @@ Use a middleware for inbound messages.
#### Defined in
-[src/lib/glee.ts:102](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L102)
+[src/lib/glee.ts:103](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L103)
___
@@ -1222,7 +1222,7 @@ Use a middleware for outbound messages.
#### Defined in
-[src/lib/glee.ts:112](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L112)
+[src/lib/glee.ts:116](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L116)
▸ **useOutbound**(`channel`, `...middlewares`): `void`
@@ -1239,7 +1239,7 @@ Use a middleware for outbound messages.
#### Defined in
-[src/lib/glee.ts:113](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/glee.ts#L113)
+[src/lib/glee.ts:117](https://github.com/asyncapi/glee/blob/e143955/src/lib/glee.ts#L117)
___
diff --git a/docs/reference/classes/lib_message.default.md b/docs/reference/classes/lib_message.default.md
index b0926d07e..986d82c0f 100644
--- a/docs/reference/classes/lib_message.default.md
+++ b/docs/reference/classes/lib_message.default.md
@@ -97,7 +97,7 @@ EventEmitter.constructor
#### Defined in
-[src/lib/message.ts:51](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L51)
+[src/lib/message.ts:51](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L51)
## Properties
@@ -107,7 +107,7 @@ EventEmitter.constructor
#### Defined in
-[src/lib/message.ts:31](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L31)
+[src/lib/message.ts:31](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L31)
___
@@ -117,7 +117,7 @@ ___
#### Defined in
-[src/lib/message.ts:28](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L28)
+[src/lib/message.ts:28](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L28)
___
@@ -127,7 +127,7 @@ ___
#### Defined in
-[src/lib/message.ts:34](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L34)
+[src/lib/message.ts:34](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L34)
___
@@ -137,7 +137,7 @@ ___
#### Defined in
-[src/lib/message.ts:30](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L30)
+[src/lib/message.ts:30](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L30)
___
@@ -151,7 +151,7 @@ ___
#### Defined in
-[src/lib/message.ts:27](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L27)
+[src/lib/message.ts:27](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L27)
___
@@ -161,7 +161,7 @@ ___
#### Defined in
-[src/lib/message.ts:32](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L32)
+[src/lib/message.ts:32](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L32)
___
@@ -171,7 +171,7 @@ ___
#### Defined in
-[src/lib/message.ts:33](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L33)
+[src/lib/message.ts:33](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L33)
___
@@ -185,7 +185,7 @@ ___
#### Defined in
-[src/lib/message.ts:35](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L35)
+[src/lib/message.ts:35](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L35)
___
@@ -195,7 +195,7 @@ ___
#### Defined in
-[src/lib/message.ts:26](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L26)
+[src/lib/message.ts:26](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L26)
___
@@ -205,7 +205,7 @@ ___
#### Defined in
-[src/lib/message.ts:36](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L36)
+[src/lib/message.ts:36](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L36)
___
@@ -215,7 +215,7 @@ ___
#### Defined in
-[src/lib/message.ts:29](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L29)
+[src/lib/message.ts:29](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L29)
___
@@ -295,7 +295,7 @@ node_modules/@types/node/events.d.ts:327
#### Defined in
-[src/lib/message.ts:113](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L113)
+[src/lib/message.ts:113](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L113)
___
@@ -309,7 +309,7 @@ ___
#### Defined in
-[src/lib/message.ts:89](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L89)
+[src/lib/message.ts:89](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L89)
• `set` **channel**(`value`): `void`
@@ -325,7 +325,7 @@ ___
#### Defined in
-[src/lib/message.ts:93](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L93)
+[src/lib/message.ts:93](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L93)
___
@@ -339,7 +339,7 @@ ___
#### Defined in
-[src/lib/message.ts:125](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L125)
+[src/lib/message.ts:125](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L125)
• `set` **cluster**(`value`): `void`
@@ -355,7 +355,7 @@ ___
#### Defined in
-[src/lib/message.ts:129](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L129)
+[src/lib/message.ts:129](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L129)
___
@@ -369,7 +369,7 @@ ___
#### Defined in
-[src/lib/message.ts:105](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L105)
+[src/lib/message.ts:105](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L105)
• `set` **connection**(`value`): `void`
@@ -385,7 +385,7 @@ ___
#### Defined in
-[src/lib/message.ts:109](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L109)
+[src/lib/message.ts:109](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L109)
___
@@ -399,7 +399,7 @@ ___
#### Defined in
-[src/lib/message.ts:81](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L81)
+[src/lib/message.ts:81](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L81)
• `set` **headers**(`value`): `void`
@@ -415,7 +415,7 @@ ___
#### Defined in
-[src/lib/message.ts:85](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L85)
+[src/lib/message.ts:85](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L85)
___
@@ -429,7 +429,7 @@ ___
#### Defined in
-[src/lib/message.ts:117](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L117)
+[src/lib/message.ts:117](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L117)
• `set` **params**(`value`): `void`
@@ -445,7 +445,7 @@ ___
#### Defined in
-[src/lib/message.ts:121](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L121)
+[src/lib/message.ts:121](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L121)
___
@@ -459,7 +459,7 @@ ___
#### Defined in
-[src/lib/message.ts:73](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L73)
+[src/lib/message.ts:73](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L73)
• `set` **payload**(`value`): `void`
@@ -475,7 +475,7 @@ ___
#### Defined in
-[src/lib/message.ts:77](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L77)
+[src/lib/message.ts:77](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L77)
___
@@ -489,7 +489,7 @@ ___
#### Defined in
-[src/lib/message.ts:133](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L133)
+[src/lib/message.ts:133](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L133)
• `set` **query**(`value`): `void`
@@ -505,7 +505,7 @@ ___
#### Defined in
-[src/lib/message.ts:137](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L137)
+[src/lib/message.ts:137](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L137)
___
@@ -519,7 +519,7 @@ ___
#### Defined in
-[src/lib/message.ts:97](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L97)
+[src/lib/message.ts:97](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L97)
• `set` **serverName**(`value`): `void`
@@ -535,7 +535,7 @@ ___
#### Defined in
-[src/lib/message.ts:101](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L101)
+[src/lib/message.ts:101](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L101)
## Methods
@@ -712,7 +712,7 @@ Checks if it's an inbound message.
#### Defined in
-[src/lib/message.ts:194](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L194)
+[src/lib/message.ts:194](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L194)
___
@@ -728,7 +728,7 @@ Checks if it's an outbound message.
#### Defined in
-[src/lib/message.ts:201](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L201)
+[src/lib/message.ts:201](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L201)
___
@@ -812,7 +812,7 @@ Indicates failure in processing the message
#### Defined in
-[src/lib/message.ts:222](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L222)
+[src/lib/message.ts:222](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L222)
___
@@ -828,7 +828,7 @@ Indicates successfully processed the message
#### Defined in
-[src/lib/message.ts:215](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L215)
+[src/lib/message.ts:215](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L215)
___
@@ -1268,7 +1268,7 @@ Sends the message back to the server/broker.
#### Defined in
-[src/lib/message.ts:149](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L149)
+[src/lib/message.ts:149](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L149)
___
@@ -1284,7 +1284,7 @@ Tells Glee to send the message.
#### Defined in
-[src/lib/message.ts:208](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L208)
+[src/lib/message.ts:208](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L208)
___
@@ -1300,7 +1300,7 @@ Makes the message suitable only for the inbound pipeline.
#### Defined in
-[src/lib/message.ts:178](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L178)
+[src/lib/message.ts:178](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L178)
___
@@ -1351,7 +1351,7 @@ Makes the message suitable only for the outbound pipeline.
#### Defined in
-[src/lib/message.ts:186](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/message.ts#L186)
+[src/lib/message.ts:186](https://github.com/asyncapi/glee/blob/e143955/src/lib/message.ts#L186)
___
diff --git a/docs/reference/classes/lib_router.default.md b/docs/reference/classes/lib_router.default.md
index a369540bd..66c7c8a81 100644
--- a/docs/reference/classes/lib_router.default.md
+++ b/docs/reference/classes/lib_router.default.md
@@ -42,7 +42,7 @@ Instantiates a GleeRouter.
#### Defined in
-[src/lib/router.ts:27](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L27)
+[src/lib/router.ts:27](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L27)
## Properties
@@ -52,7 +52,7 @@ Instantiates a GleeRouter.
#### Defined in
-[src/lib/router.ts:21](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L21)
+[src/lib/router.ts:21](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L21)
___
@@ -62,7 +62,7 @@ ___
#### Defined in
-[src/lib/router.ts:19](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L19)
+[src/lib/router.ts:19](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L19)
___
@@ -72,7 +72,7 @@ ___
#### Defined in
-[src/lib/router.ts:22](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L22)
+[src/lib/router.ts:22](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L22)
___
@@ -82,7 +82,7 @@ ___
#### Defined in
-[src/lib/router.ts:20](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L20)
+[src/lib/router.ts:20](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L20)
## Methods
@@ -106,7 +106,7 @@ Adds a normalized middleware to a target collection.
#### Defined in
-[src/lib/router.ts:140](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L140)
+[src/lib/router.ts:140](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L140)
___
@@ -129,7 +129,7 @@ Adds a normalized middleware to the inbound error middlewares collection.
#### Defined in
-[src/lib/router.ts:186](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L186)
+[src/lib/router.ts:186](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L186)
___
@@ -152,7 +152,7 @@ Adds a normalized middleware to the inbound middlewares collection.
#### Defined in
-[src/lib/router.ts:163](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L163)
+[src/lib/router.ts:163](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L163)
___
@@ -175,7 +175,7 @@ Adds a normalized middleware to the outbound error middlewares collection.
#### Defined in
-[src/lib/router.ts:199](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L199)
+[src/lib/router.ts:199](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L199)
___
@@ -198,7 +198,7 @@ Adds a normalized middleware to the outbound middlewares collection.
#### Defined in
-[src/lib/router.ts:173](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L173)
+[src/lib/router.ts:173](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L173)
___
@@ -214,7 +214,7 @@ Returns all the inbound error middlewares.
#### Defined in
-[src/lib/router.ts:120](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L120)
+[src/lib/router.ts:120](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L120)
___
@@ -230,7 +230,7 @@ Returns all the inbound middlewares.
#### Defined in
-[src/lib/router.ts:104](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L104)
+[src/lib/router.ts:104](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L104)
___
@@ -246,7 +246,7 @@ Returns all the outbound error middlewares.
#### Defined in
-[src/lib/router.ts:128](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L128)
+[src/lib/router.ts:128](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L128)
___
@@ -262,7 +262,7 @@ Returns all the outbound middlewares.
#### Defined in
-[src/lib/router.ts:112](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L112)
+[src/lib/router.ts:112](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L112)
___
@@ -283,7 +283,7 @@ ___
#### Defined in
-[src/lib/router.ts:83](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L83)
+[src/lib/router.ts:83](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L83)
___
@@ -306,7 +306,7 @@ this function will make use of inbound and outbound middlewares.
#### Defined in
-[src/lib/router.ts:41](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L41)
+[src/lib/router.ts:41](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L41)
▸ **use**(`channel`, `...middlewares`): `void`
@@ -323,7 +323,7 @@ this function will make use of inbound and outbound middlewares.
#### Defined in
-[src/lib/router.ts:42](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L42)
+[src/lib/router.ts:42](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L42)
___
@@ -345,7 +345,7 @@ Use a middleware for outbound messages.
#### Defined in
-[src/lib/router.ts:65](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L65)
+[src/lib/router.ts:65](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L65)
▸ **useOutbound**(`channel`, `...middlewares`): `void`
@@ -362,4 +362,4 @@ Use a middleware for outbound messages.
#### Defined in
-[src/lib/router.ts:66](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L66)
+[src/lib/router.ts:66](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L66)
diff --git a/docs/reference/classes/lib_wsHttpAuth.default.md b/docs/reference/classes/lib_wsHttpAuth.default.md
new file mode 100644
index 000000000..f21db5765
--- /dev/null
+++ b/docs/reference/classes/lib_wsHttpAuth.default.md
@@ -0,0 +1,1412 @@
+[@asyncapi/glee](../README.md) / [lib/wsHttpAuth](../modules/lib_wsHttpAuth.md) / default
+
+# Class: default
+
+[lib/wsHttpAuth](../modules/lib_wsHttpAuth.md).default
+
+## Hierarchy
+
+- `EventEmitter`
+
+ ↳ **`default`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](lib_wsHttpAuth.default.md#constructor)
+
+### Properties
+
+- [AsyncAPIServer](lib_wsHttpAuth.default.md#asyncapiserver)
+- [auth](lib_wsHttpAuth.default.md#auth)
+- [authConfig](lib_wsHttpAuth.default.md#authconfig)
+- [parsedAsyncAPI](lib_wsHttpAuth.default.md#parsedasyncapi)
+- [secReqs](lib_wsHttpAuth.default.md#secreqs)
+- [serverName](lib_wsHttpAuth.default.md#servername)
+- [captureRejectionSymbol](lib_wsHttpAuth.default.md#capturerejectionsymbol)
+- [captureRejections](lib_wsHttpAuth.default.md#capturerejections)
+- [defaultMaxListeners](lib_wsHttpAuth.default.md#defaultmaxlisteners)
+- [errorMonitor](lib_wsHttpAuth.default.md#errormonitor)
+
+### Methods
+
+- [addListener](lib_wsHttpAuth.default.md#addlistener)
+- [checkAuthPresense](lib_wsHttpAuth.default.md#checkauthpresense)
+- [checkClientAuthConfig](lib_wsHttpAuth.default.md#checkclientauthconfig)
+- [emit](lib_wsHttpAuth.default.md#emit)
+- [eventNames](lib_wsHttpAuth.default.md#eventnames)
+- [formClientAuth](lib_wsHttpAuth.default.md#formclientauth)
+- [getAuthConfig](lib_wsHttpAuth.default.md#getauthconfig)
+- [getMaxListeners](lib_wsHttpAuth.default.md#getmaxlisteners)
+- [getServerAuthProps](lib_wsHttpAuth.default.md#getserverauthprops)
+- [httpApiKeyLogic](lib_wsHttpAuth.default.md#httpapikeylogic)
+- [listenerCount](lib_wsHttpAuth.default.md#listenercount)
+- [listeners](lib_wsHttpAuth.default.md#listeners)
+- [off](lib_wsHttpAuth.default.md#off)
+- [on](lib_wsHttpAuth.default.md#on)
+- [once](lib_wsHttpAuth.default.md#once)
+- [prependListener](lib_wsHttpAuth.default.md#prependlistener)
+- [prependOnceListener](lib_wsHttpAuth.default.md#prependoncelistener)
+- [processClientAuth](lib_wsHttpAuth.default.md#processclientauth)
+- [rawListeners](lib_wsHttpAuth.default.md#rawlisteners)
+- [removeAllListeners](lib_wsHttpAuth.default.md#removealllisteners)
+- [removeListener](lib_wsHttpAuth.default.md#removelistener)
+- [setMaxListeners](lib_wsHttpAuth.default.md#setmaxlisteners)
+- [userPassApiKeyLogic](lib_wsHttpAuth.default.md#userpassapikeylogic)
+- [getEventListeners](lib_wsHttpAuth.default.md#geteventlisteners)
+- [listenerCount](lib_wsHttpAuth.default.md#listenercount-1)
+- [on](lib_wsHttpAuth.default.md#on-1)
+- [once](lib_wsHttpAuth.default.md#once-1)
+- [setMaxListeners](lib_wsHttpAuth.default.md#setmaxlisteners-1)
+
+## Constructors
+
+### constructor
+
+• **new default**(`AsyncAPIServer`, `parsedAsyncAPI`, `serverName`, `authConfig?`)
+
+Instantiates authentication.
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `AsyncAPIServer` | `Server` |
+| `parsedAsyncAPI` | `AsyncAPIDocument` |
+| `serverName` | `string` |
+| `authConfig?` | `any` |
+
+#### Overrides
+
+EventEmitter.constructor
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:17](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L17)
+
+## Properties
+
+### AsyncAPIServer
+
+• `Private` **AsyncAPIServer**: `Server`
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:10](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L10)
+
+___
+
+### auth
+
+• `Private` **auth**: { `[key: string]`: `string`; } \| { `[key: string]`: `string`[]; }
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:12](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L12)
+
+___
+
+### authConfig
+
+• `Private` **authConfig**: [`WsAuthConfig`](../interfaces/lib.WsAuthConfig.md) \| [`HttpAuthConfig`](../interfaces/lib.HttpAuthConfig.md)
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:11](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L11)
+
+___
+
+### parsedAsyncAPI
+
+• `Private` **parsedAsyncAPI**: `AsyncAPIDocument`
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:8](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L8)
+
+___
+
+### secReqs
+
+• `Private` **secReqs**: { `[key: string]`: `SecurityScheme`; }[]
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:7](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L7)
+
+___
+
+### serverName
+
+• `Private` **serverName**: `string`
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:9](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L9)
+
+___
+
+### captureRejectionSymbol
+
+▪ `Static` `Readonly` **captureRejectionSymbol**: typeof [`captureRejectionSymbol`](adapters_cluster_redis.default.md#capturerejectionsymbol)
+
+#### Inherited from
+
+EventEmitter.captureRejectionSymbol
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:328
+
+___
+
+### captureRejections
+
+▪ `Static` **captureRejections**: `boolean`
+
+Sets or gets the default captureRejection value for all emitters.
+
+#### Inherited from
+
+EventEmitter.captureRejections
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:333
+
+___
+
+### defaultMaxListeners
+
+▪ `Static` **defaultMaxListeners**: `number`
+
+#### Inherited from
+
+EventEmitter.defaultMaxListeners
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:334
+
+___
+
+### errorMonitor
+
+▪ `Static` `Readonly` **errorMonitor**: typeof [`errorMonitor`](adapters_cluster_redis.default.md#errormonitor)
+
+This symbol shall be used to install a listener for only monitoring `'error'`
+events. Listeners installed using this symbol are called before the regular
+`'error'` listeners are called.
+
+Installing a listener using this symbol does not change the behavior once an
+`'error'` event is emitted, therefore the process will still crash if no
+regular `'error'` listener is installed.
+
+#### Inherited from
+
+EventEmitter.errorMonitor
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:327
+
+## Methods
+
+### addListener
+
+▸ **addListener**(`eventName`, `listener`): [`default`](lib_wsHttpAuth.default.md)
+
+Alias for `emitter.on(eventName, listener)`.
+
+**`Since`**
+
+v0.1.26
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `eventName` | `string` \| `symbol` |
+| `listener` | (...`args`: `any`[]) => `void` |
+
+#### Returns
+
+[`default`](lib_wsHttpAuth.default.md)
+
+#### Inherited from
+
+EventEmitter.addListener
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:354
+
+___
+
+### checkAuthPresense
+
+▸ **checkAuthPresense**(): `boolean`
+
+#### Returns
+
+`boolean`
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:168](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L168)
+
+___
+
+### checkClientAuthConfig
+
+▸ **checkClientAuthConfig**(): `string`[]
+
+#### Returns
+
+`string`[]
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:31](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L31)
+
+___
+
+### emit
+
+▸ **emit**(`eventName`, `...args`): `boolean`
+
+Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments
+to each.
+
+Returns `true` if the event had listeners, `false` otherwise.
+
+```js
+const EventEmitter = require('events');
+const myEmitter = new EventEmitter();
+
+// First listener
+myEmitter.on('event', function firstListener() {
+ console.log('Helloooo! first listener');
+});
+// Second listener
+myEmitter.on('event', function secondListener(arg1, arg2) {
+ console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
+});
+// Third listener
+myEmitter.on('event', function thirdListener(...args) {
+ const parameters = args.join(', ');
+ console.log(`event with parameters ${parameters} in third listener`);
+});
+
+console.log(myEmitter.listeners('event'));
+
+myEmitter.emit('event', 1, 2, 3, 4, 5);
+
+// Prints:
+// [
+// [Function: firstListener],
+// [Function: secondListener],
+// [Function: thirdListener]
+// ]
+// Helloooo! first listener
+// event with parameters 1, 2 in second listener
+// event with parameters 1, 2, 3, 4, 5 in third listener
+```
+
+**`Since`**
+
+v0.1.26
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `eventName` | `string` \| `symbol` |
+| `...args` | `any`[] |
+
+#### Returns
+
+`boolean`
+
+#### Inherited from
+
+EventEmitter.emit
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:610
+
+___
+
+### eventNames
+
+▸ **eventNames**(): (`string` \| `symbol`)[]
+
+Returns an array listing the events for which the emitter has registered
+listeners. The values in the array are strings or `Symbol`s.
+
+```js
+const EventEmitter = require('events');
+const myEE = new EventEmitter();
+myEE.on('foo', () => {});
+myEE.on('bar', () => {});
+
+const sym = Symbol('symbol');
+myEE.on(sym, () => {});
+
+console.log(myEE.eventNames());
+// Prints: [ 'foo', 'bar', Symbol(symbol) ]
+```
+
+**`Since`**
+
+v6.0.0
+
+#### Returns
+
+(`string` \| `symbol`)[]
+
+#### Inherited from
+
+EventEmitter.eventNames
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:669
+
+___
+
+### formClientAuth
+
+▸ **formClientAuth**(`authKeys`, `«destructured»`): { `headers`: `any` ; `query`: `undefined` ; `url`: `any` } \| { `headers`: `any` ; `query`: `any` ; `url`: `any` }
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `authKeys` | `any` |
+| `«destructured»` | `Object` |
+
+#### Returns
+
+{ `headers`: `any` ; `query`: `undefined` ; `url`: `any` } \| { `headers`: `any` ; `query`: `any` ; `url`: `any` }
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:71](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L71)
+
+___
+
+### getAuthConfig
+
+▸ **getAuthConfig**(`auth`): `Promise`<`any`\>
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `auth` | `any` |
+
+#### Returns
+
+`Promise`<`any`\>
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:58](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L58)
+
+___
+
+### getMaxListeners
+
+▸ **getMaxListeners**(): `number`
+
+Returns the current max listener value for the `EventEmitter` which is either
+set by `emitter.setMaxListeners(n)` or defaults to [defaultMaxListeners](lib_wsHttpAuth.default.md#defaultmaxlisteners).
+
+**`Since`**
+
+v1.0.0
+
+#### Returns
+
+`number`
+
+#### Inherited from
+
+EventEmitter.getMaxListeners
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:526
+
+___
+
+### getServerAuthProps
+
+▸ **getServerAuthProps**(`headers`, `query`): [`AuthProps`](../modules/lib.md#authprops)
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `headers` | `any` |
+| `query` | `any` |
+
+#### Returns
+
+[`AuthProps`](../modules/lib.md#authprops)
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:126](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L126)
+
+___
+
+### httpApiKeyLogic
+
+▸ `Private` **httpApiKeyLogic**(`scheme`, `headers`, `query`, `authKey`): `Object`
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `scheme` | `any` |
+| `headers` | `any` |
+| `query` | `any` |
+| `authKey` | `any` |
+
+#### Returns
+
+`Object`
+
+| Name | Type |
+| :------ | :------ |
+| `headers` | `any` |
+| `query` | `any` |
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:113](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L113)
+
+___
+
+### listenerCount
+
+▸ **listenerCount**(`eventName`): `number`
+
+Returns the number of listeners listening to the event named `eventName`.
+
+**`Since`**
+
+v3.2.0
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `eventName` | `string` \| `symbol` | The name of the event being listened for |
+
+#### Returns
+
+`number`
+
+#### Inherited from
+
+EventEmitter.listenerCount
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:616
+
+___
+
+### listeners
+
+▸ **listeners**(`eventName`): `Function`[]
+
+Returns a copy of the array of listeners for the event named `eventName`.
+
+```js
+server.on('connection', (stream) => {
+ console.log('someone connected!');
+});
+console.log(util.inspect(server.listeners('connection')));
+// Prints: [ [Function] ]
+```
+
+**`Since`**
+
+v0.1.26
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `eventName` | `string` \| `symbol` |
+
+#### Returns
+
+`Function`[]
+
+#### Inherited from
+
+EventEmitter.listeners
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:539
+
+___
+
+### off
+
+▸ **off**(`eventName`, `listener`): [`default`](lib_wsHttpAuth.default.md)
+
+Alias for `emitter.removeListener()`.
+
+**`Since`**
+
+v10.0.0
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `eventName` | `string` \| `symbol` |
+| `listener` | (...`args`: `any`[]) => `void` |
+
+#### Returns
+
+[`default`](lib_wsHttpAuth.default.md)
+
+#### Inherited from
+
+EventEmitter.off
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:499
+
+___
+
+### on
+
+▸ **on**(`eventName`, `listener`): [`default`](lib_wsHttpAuth.default.md)
+
+Adds the `listener` function to the end of the listeners array for the
+event named `eventName`. No checks are made to see if the `listener` has
+already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple
+times.
+
+```js
+server.on('connection', (stream) => {
+ console.log('someone connected!');
+});
+```
+
+Returns a reference to the `EventEmitter`, so that calls can be chained.
+
+By default, event listeners are invoked in the order they are added. The`emitter.prependListener()` method can be used as an alternative to add the
+event listener to the beginning of the listeners array.
+
+```js
+const myEE = new EventEmitter();
+myEE.on('foo', () => console.log('a'));
+myEE.prependListener('foo', () => console.log('b'));
+myEE.emit('foo');
+// Prints:
+// b
+// a
+```
+
+**`Since`**
+
+v0.1.101
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `eventName` | `string` \| `symbol` | The name of the event. |
+| `listener` | (...`args`: `any`[]) => `void` | The callback function |
+
+#### Returns
+
+[`default`](lib_wsHttpAuth.default.md)
+
+#### Inherited from
+
+EventEmitter.on
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:385
+
+___
+
+### once
+
+▸ **once**(`eventName`, `listener`): [`default`](lib_wsHttpAuth.default.md)
+
+Adds a **one-time**`listener` function for the event named `eventName`. The
+next time `eventName` is triggered, this listener is removed and then invoked.
+
+```js
+server.once('connection', (stream) => {
+ console.log('Ah, we have our first user!');
+});
+```
+
+Returns a reference to the `EventEmitter`, so that calls can be chained.
+
+By default, event listeners are invoked in the order they are added. The`emitter.prependOnceListener()` method can be used as an alternative to add the
+event listener to the beginning of the listeners array.
+
+```js
+const myEE = new EventEmitter();
+myEE.once('foo', () => console.log('a'));
+myEE.prependOnceListener('foo', () => console.log('b'));
+myEE.emit('foo');
+// Prints:
+// b
+// a
+```
+
+**`Since`**
+
+v0.3.0
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `eventName` | `string` \| `symbol` | The name of the event. |
+| `listener` | (...`args`: `any`[]) => `void` | The callback function |
+
+#### Returns
+
+[`default`](lib_wsHttpAuth.default.md)
+
+#### Inherited from
+
+EventEmitter.once
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:414
+
+___
+
+### prependListener
+
+▸ **prependListener**(`eventName`, `listener`): [`default`](lib_wsHttpAuth.default.md)
+
+Adds the `listener` function to the _beginning_ of the listeners array for the
+event named `eventName`. No checks are made to see if the `listener` has
+already been added. Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple
+times.
+
+```js
+server.prependListener('connection', (stream) => {
+ console.log('someone connected!');
+});
+```
+
+Returns a reference to the `EventEmitter`, so that calls can be chained.
+
+**`Since`**
+
+v6.0.0
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `eventName` | `string` \| `symbol` | The name of the event. |
+| `listener` | (...`args`: `any`[]) => `void` | The callback function |
+
+#### Returns
+
+[`default`](lib_wsHttpAuth.default.md)
+
+#### Inherited from
+
+EventEmitter.prependListener
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:634
+
+___
+
+### prependOnceListener
+
+▸ **prependOnceListener**(`eventName`, `listener`): [`default`](lib_wsHttpAuth.default.md)
+
+Adds a **one-time**`listener` function for the event named `eventName` to the _beginning_ of the listeners array. The next time `eventName` is triggered, this
+listener is removed, and then invoked.
+
+```js
+server.prependOnceListener('connection', (stream) => {
+ console.log('Ah, we have our first user!');
+});
+```
+
+Returns a reference to the `EventEmitter`, so that calls can be chained.
+
+**`Since`**
+
+v6.0.0
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `eventName` | `string` \| `symbol` | The name of the event. |
+| `listener` | (...`args`: `any`[]) => `void` | The callback function |
+
+#### Returns
+
+[`default`](lib_wsHttpAuth.default.md)
+
+#### Inherited from
+
+EventEmitter.prependOnceListener
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:650
+
+___
+
+### processClientAuth
+
+▸ **processClientAuth**(`url`, `headers`, `query`): `Promise`<{ `headers`: `any` ; `query`: `undefined` ; `url`: `any` } \| { `headers`: `any` ; `query`: `any` ; `url`: `any` }\>
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `url` | `any` |
+| `headers` | `any` |
+| `query` | `any` |
+
+#### Returns
+
+`Promise`<{ `headers`: `any` ; `query`: `undefined` ; `url`: `any` } \| { `headers`: `any` ; `query`: `any` ; `url`: `any` }\>
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:161](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L161)
+
+___
+
+### rawListeners
+
+▸ **rawListeners**(`eventName`): `Function`[]
+
+Returns a copy of the array of listeners for the event named `eventName`,
+including any wrappers (such as those created by `.once()`).
+
+```js
+const emitter = new EventEmitter();
+emitter.once('log', () => console.log('log once'));
+
+// Returns a new Array with a function `onceWrapper` which has a property
+// `listener` which contains the original listener bound above
+const listeners = emitter.rawListeners('log');
+const logFnWrapper = listeners[0];
+
+// Logs "log once" to the console and does not unbind the `once` event
+logFnWrapper.listener();
+
+// Logs "log once" to the console and removes the listener
+logFnWrapper();
+
+emitter.on('log', () => console.log('log persistently'));
+// Will return a new Array with a single function bound by `.on()` above
+const newListeners = emitter.rawListeners('log');
+
+// Logs "log persistently" twice
+newListeners[0]();
+emitter.emit('log');
+```
+
+**`Since`**
+
+v9.4.0
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `eventName` | `string` \| `symbol` |
+
+#### Returns
+
+`Function`[]
+
+#### Inherited from
+
+EventEmitter.rawListeners
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:569
+
+___
+
+### removeAllListeners
+
+▸ **removeAllListeners**(`event?`): [`default`](lib_wsHttpAuth.default.md)
+
+Removes all listeners, or those of the specified `eventName`.
+
+It is bad practice to remove listeners added elsewhere in the code,
+particularly when the `EventEmitter` instance was created by some other
+component or module (e.g. sockets or file streams).
+
+Returns a reference to the `EventEmitter`, so that calls can be chained.
+
+**`Since`**
+
+v0.1.26
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `event?` | `string` \| `symbol` |
+
+#### Returns
+
+[`default`](lib_wsHttpAuth.default.md)
+
+#### Inherited from
+
+EventEmitter.removeAllListeners
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:510
+
+___
+
+### removeListener
+
+▸ **removeListener**(`eventName`, `listener`): [`default`](lib_wsHttpAuth.default.md)
+
+Removes the specified `listener` from the listener array for the event named`eventName`.
+
+```js
+const callback = (stream) => {
+ console.log('someone connected!');
+};
+server.on('connection', callback);
+// ...
+server.removeListener('connection', callback);
+```
+
+`removeListener()` will remove, at most, one instance of a listener from the
+listener array. If any single listener has been added multiple times to the
+listener array for the specified `eventName`, then `removeListener()` must be
+called multiple times to remove each instance.
+
+Once an event is emitted, all listeners attached to it at the
+time of emitting are called in order. This implies that any`removeListener()` or `removeAllListeners()` calls _after_ emitting and _before_ the last listener finishes execution
+will not remove them from`emit()` in progress. Subsequent events behave as expected.
+
+```js
+const myEmitter = new MyEmitter();
+
+const callbackA = () => {
+ console.log('A');
+ myEmitter.removeListener('event', callbackB);
+};
+
+const callbackB = () => {
+ console.log('B');
+};
+
+myEmitter.on('event', callbackA);
+
+myEmitter.on('event', callbackB);
+
+// callbackA removes listener callbackB but it will still be called.
+// Internal listener array at time of emit [callbackA, callbackB]
+myEmitter.emit('event');
+// Prints:
+// A
+// B
+
+// callbackB is now removed.
+// Internal listener array [callbackA]
+myEmitter.emit('event');
+// Prints:
+// A
+```
+
+Because listeners are managed using an internal array, calling this will
+change the position indices of any listener registered _after_ the listener
+being removed. This will not impact the order in which listeners are called,
+but it means that any copies of the listener array as returned by
+the `emitter.listeners()` method will need to be recreated.
+
+When a single function has been added as a handler multiple times for a single
+event (as in the example below), `removeListener()` will remove the most
+recently added instance. In the example the `once('ping')`listener is removed:
+
+```js
+const ee = new EventEmitter();
+
+function pong() {
+ console.log('pong');
+}
+
+ee.on('ping', pong);
+ee.once('ping', pong);
+ee.removeListener('ping', pong);
+
+ee.emit('ping');
+ee.emit('ping');
+```
+
+Returns a reference to the `EventEmitter`, so that calls can be chained.
+
+**`Since`**
+
+v0.1.26
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `eventName` | `string` \| `symbol` |
+| `listener` | (...`args`: `any`[]) => `void` |
+
+#### Returns
+
+[`default`](lib_wsHttpAuth.default.md)
+
+#### Inherited from
+
+EventEmitter.removeListener
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:494
+
+___
+
+### setMaxListeners
+
+▸ **setMaxListeners**(`n`): [`default`](lib_wsHttpAuth.default.md)
+
+By default `EventEmitter`s will print a warning if more than `10` listeners are
+added for a particular event. This is a useful default that helps finding
+memory leaks. The `emitter.setMaxListeners()` method allows the limit to be
+modified for this specific `EventEmitter` instance. The value can be set to`Infinity` (or `0`) to indicate an unlimited number of listeners.
+
+Returns a reference to the `EventEmitter`, so that calls can be chained.
+
+**`Since`**
+
+v0.3.5
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `n` | `number` |
+
+#### Returns
+
+[`default`](lib_wsHttpAuth.default.md)
+
+#### Inherited from
+
+EventEmitter.setMaxListeners
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:520
+
+___
+
+### userPassApiKeyLogic
+
+▸ `Private` **userPassApiKeyLogic**(`url`, `authKey`): `any`
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `url` | `any` |
+| `authKey` | `any` |
+
+#### Returns
+
+`any`
+
+#### Defined in
+
+[src/lib/wsHttpAuth.ts:97](https://github.com/asyncapi/glee/blob/e143955/src/lib/wsHttpAuth.ts#L97)
+
+___
+
+### getEventListeners
+
+▸ `Static` **getEventListeners**(`emitter`, `name`): `Function`[]
+
+Returns a copy of the array of listeners for the event named `eventName`.
+
+For `EventEmitter`s this behaves exactly the same as calling `.listeners` on
+the emitter.
+
+For `EventTarget`s this is the only way to get the event listeners for the
+event target. This is useful for debugging and diagnostic purposes.
+
+```js
+const { getEventListeners, EventEmitter } = require('events');
+
+{
+ const ee = new EventEmitter();
+ const listener = () => console.log('Events are fun');
+ ee.on('foo', listener);
+ getEventListeners(ee, 'foo'); // [listener]
+}
+{
+ const et = new EventTarget();
+ const listener = () => console.log('Events are fun');
+ et.addEventListener('foo', listener);
+ getEventListeners(et, 'foo'); // [listener]
+}
+```
+
+**`Since`**
+
+v15.2.0, v14.17.0
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `emitter` | `EventEmitter` \| `_DOMEventTarget` |
+| `name` | `string` \| `symbol` |
+
+#### Returns
+
+`Function`[]
+
+#### Inherited from
+
+EventEmitter.getEventListeners
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:299
+
+___
+
+### listenerCount
+
+▸ `Static` **listenerCount**(`emitter`, `eventName`): `number`
+
+A class method that returns the number of listeners for the given `eventName`registered on the given `emitter`.
+
+```js
+const { EventEmitter, listenerCount } = require('events');
+const myEmitter = new EventEmitter();
+myEmitter.on('event', () => {});
+myEmitter.on('event', () => {});
+console.log(listenerCount(myEmitter, 'event'));
+// Prints: 2
+```
+
+**`Since`**
+
+v0.9.12
+
+**`Deprecated`**
+
+Since v3.2.0 - Use `listenerCount` instead.
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `emitter` | `EventEmitter` | The emitter to query |
+| `eventName` | `string` \| `symbol` | The event name |
+
+#### Returns
+
+`number`
+
+#### Inherited from
+
+EventEmitter.listenerCount
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:271
+
+___
+
+### on
+
+▸ `Static` **on**(`emitter`, `eventName`, `options?`): `AsyncIterableIterator`<`any`\>
+
+```js
+const { on, EventEmitter } = require('events');
+
+(async () => {
+ const ee = new EventEmitter();
+
+ // Emit later on
+ process.nextTick(() => {
+ ee.emit('foo', 'bar');
+ ee.emit('foo', 42);
+ });
+
+ for await (const event of on(ee, 'foo')) {
+ // The execution of this inner block is synchronous and it
+ // processes one event at a time (even with await). Do not use
+ // if concurrent execution is required.
+ console.log(event); // prints ['bar'] [42]
+ }
+ // Unreachable here
+})();
+```
+
+Returns an `AsyncIterator` that iterates `eventName` events. It will throw
+if the `EventEmitter` emits `'error'`. It removes all listeners when
+exiting the loop. The `value` returned by each iteration is an array
+composed of the emitted event arguments.
+
+An `AbortSignal` can be used to cancel waiting on events:
+
+```js
+const { on, EventEmitter } = require('events');
+const ac = new AbortController();
+
+(async () => {
+ const ee = new EventEmitter();
+
+ // Emit later on
+ process.nextTick(() => {
+ ee.emit('foo', 'bar');
+ ee.emit('foo', 42);
+ });
+
+ for await (const event of on(ee, 'foo', { signal: ac.signal })) {
+ // The execution of this inner block is synchronous and it
+ // processes one event at a time (even with await). Do not use
+ // if concurrent execution is required.
+ console.log(event); // prints ['bar'] [42]
+ }
+ // Unreachable here
+})();
+
+process.nextTick(() => ac.abort());
+```
+
+**`Since`**
+
+v13.6.0, v12.16.0
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `emitter` | `EventEmitter` | - |
+| `eventName` | `string` | The name of the event being listened for |
+| `options?` | `StaticEventEmitterOptions` | - |
+
+#### Returns
+
+`AsyncIterableIterator`<`any`\>
+
+that iterates `eventName` events emitted by the `emitter`
+
+#### Inherited from
+
+EventEmitter.on
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:254
+
+___
+
+### once
+
+▸ `Static` **once**(`emitter`, `eventName`, `options?`): `Promise`<`any`[]\>
+
+Creates a `Promise` that is fulfilled when the `EventEmitter` emits the given
+event or that is rejected if the `EventEmitter` emits `'error'` while waiting.
+The `Promise` will resolve with an array of all the arguments emitted to the
+given event.
+
+This method is intentionally generic and works with the web platform [EventTarget](https://dom.spec.whatwg.org/#interface-eventtarget) interface, which has no special`'error'` event
+semantics and does not listen to the `'error'` event.
+
+```js
+const { once, EventEmitter } = require('events');
+
+async function run() {
+ const ee = new EventEmitter();
+
+ process.nextTick(() => {
+ ee.emit('myevent', 42);
+ });
+
+ const [value] = await once(ee, 'myevent');
+ console.log(value);
+
+ const err = new Error('kaboom');
+ process.nextTick(() => {
+ ee.emit('error', err);
+ });
+
+ try {
+ await once(ee, 'myevent');
+ } catch (err) {
+ console.log('error happened', err);
+ }
+}
+
+run();
+```
+
+The special handling of the `'error'` event is only used when `events.once()`is used to wait for another event. If `events.once()` is used to wait for the
+'`error'` event itself, then it is treated as any other kind of event without
+special handling:
+
+```js
+const { EventEmitter, once } = require('events');
+
+const ee = new EventEmitter();
+
+once(ee, 'error')
+ .then(([err]) => console.log('ok', err.message))
+ .catch((err) => console.log('error', err.message));
+
+ee.emit('error', new Error('boom'));
+
+// Prints: ok boom
+```
+
+An `AbortSignal` can be used to cancel waiting for the event:
+
+```js
+const { EventEmitter, once } = require('events');
+
+const ee = new EventEmitter();
+const ac = new AbortController();
+
+async function foo(emitter, event, signal) {
+ try {
+ await once(emitter, event, { signal });
+ console.log('event emitted!');
+ } catch (error) {
+ if (error.name === 'AbortError') {
+ console.error('Waiting for the event was canceled!');
+ } else {
+ console.error('There was an error', error.message);
+ }
+ }
+}
+
+foo(ee, 'foo', ac.signal);
+ac.abort(); // Abort waiting for the event
+ee.emit('foo'); // Prints: Waiting for the event was canceled!
+```
+
+**`Since`**
+
+v11.13.0, v10.16.0
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `emitter` | `_NodeEventTarget` |
+| `eventName` | `string` \| `symbol` |
+| `options?` | `StaticEventEmitterOptions` |
+
+#### Returns
+
+`Promise`<`any`[]\>
+
+#### Inherited from
+
+EventEmitter.once
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:194
+
+▸ `Static` **once**(`emitter`, `eventName`, `options?`): `Promise`<`any`[]\>
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `emitter` | `_DOMEventTarget` |
+| `eventName` | `string` |
+| `options?` | `StaticEventEmitterOptions` |
+
+#### Returns
+
+`Promise`<`any`[]\>
+
+#### Inherited from
+
+EventEmitter.once
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:195
+
+___
+
+### setMaxListeners
+
+▸ `Static` **setMaxListeners**(`n?`, `...eventTargets`): `void`
+
+```js
+const {
+ setMaxListeners,
+ EventEmitter
+} = require('events');
+
+const target = new EventTarget();
+const emitter = new EventEmitter();
+
+setMaxListeners(5, target, emitter);
+```
+
+**`Since`**
+
+v15.4.0
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `n?` | `number` | A non-negative number. The maximum number of listeners per `EventTarget` event. |
+| `...eventTargets` | (`EventEmitter` \| `_DOMEventTarget`)[] | - |
+
+#### Returns
+
+`void`
+
+#### Inherited from
+
+EventEmitter.setMaxListeners
+
+#### Defined in
+
+node_modules/@types/node/events.d.ts:317
diff --git a/docs/reference/interfaces/lib.HttpAuthConfig.md b/docs/reference/interfaces/lib.HttpAuthConfig.md
index b62548bdf..66ece0f8a 100644
--- a/docs/reference/interfaces/lib.HttpAuthConfig.md
+++ b/docs/reference/interfaces/lib.HttpAuthConfig.md
@@ -8,14 +8,36 @@
### Properties
+- [password](lib.HttpAuthConfig.md#password)
- [token](lib.HttpAuthConfig.md#token)
+- [username](lib.HttpAuthConfig.md#username)
## Properties
+### password
+
+• `Optional` **password**: `string`
+
+#### Defined in
+
+[src/lib/index.d.ts:35](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L35)
+
+___
+
### token
• `Optional` **token**: `string`
#### Defined in
-[src/lib/index.d.ts:31](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L31)
+[src/lib/index.d.ts:33](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L33)
+
+___
+
+### username
+
+• `Optional` **username**: `string`
+
+#### Defined in
+
+[src/lib/index.d.ts:34](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L34)
diff --git a/docs/reference/interfaces/lib.KafkaAuthConfig.md b/docs/reference/interfaces/lib.KafkaAuthConfig.md
index ab23ca983..28cd65928 100644
--- a/docs/reference/interfaces/lib.KafkaAuthConfig.md
+++ b/docs/reference/interfaces/lib.KafkaAuthConfig.md
@@ -23,7 +23,7 @@
#### Defined in
-[src/lib/index.d.ts:36](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L36)
+[src/lib/index.d.ts:54](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L54)
___
@@ -33,7 +33,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:37](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L37)
+[src/lib/index.d.ts:55](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L55)
___
@@ -43,7 +43,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:35](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L35)
+[src/lib/index.d.ts:53](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L53)
___
@@ -53,7 +53,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:40](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L40)
+[src/lib/index.d.ts:58](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L58)
___
@@ -63,7 +63,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:38](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L38)
+[src/lib/index.d.ts:56](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L56)
___
@@ -73,4 +73,4 @@ ___
#### Defined in
-[src/lib/index.d.ts:39](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L39)
+[src/lib/index.d.ts:57](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L57)
diff --git a/docs/reference/interfaces/lib.MqttAuthConfig.md b/docs/reference/interfaces/lib.MqttAuthConfig.md
index 1e65925dc..c41297368 100644
--- a/docs/reference/interfaces/lib.MqttAuthConfig.md
+++ b/docs/reference/interfaces/lib.MqttAuthConfig.md
@@ -21,7 +21,7 @@
#### Defined in
-[src/lib/index.d.ts:20](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L20)
+[src/lib/index.d.ts:20](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L20)
___
@@ -31,7 +31,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:23](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L23)
+[src/lib/index.d.ts:23](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L23)
___
@@ -41,7 +41,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:22](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L22)
+[src/lib/index.d.ts:22](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L22)
___
@@ -51,4 +51,4 @@ ___
#### Defined in
-[src/lib/index.d.ts:21](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L21)
+[src/lib/index.d.ts:21](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L21)
diff --git a/docs/reference/interfaces/lib.WsAuthConfig.md b/docs/reference/interfaces/lib.WsAuthConfig.md
index 6ee0f9826..5d1dfccd5 100644
--- a/docs/reference/interfaces/lib.WsAuthConfig.md
+++ b/docs/reference/interfaces/lib.WsAuthConfig.md
@@ -8,14 +8,36 @@
### Properties
+- [password](lib.WsAuthConfig.md#password)
- [token](lib.WsAuthConfig.md#token)
+- [username](lib.WsAuthConfig.md#username)
## Properties
+### password
+
+• `Optional` **password**: `string`
+
+#### Defined in
+
+[src/lib/index.d.ts:29](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L29)
+
+___
+
### token
• `Optional` **token**: `string`
#### Defined in
-[src/lib/index.d.ts:27](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L27)
+[src/lib/index.d.ts:27](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L27)
+
+___
+
+### username
+
+• `Optional` **username**: `string`
+
+#### Defined in
+
+[src/lib/index.d.ts:28](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L28)
diff --git a/docs/reference/modules/docs.md b/docs/reference/modules/docs.md
index bca38d504..26c6b2dff 100644
--- a/docs/reference/modules/docs.md
+++ b/docs/reference/modules/docs.md
@@ -20,4 +20,4 @@
#### Defined in
-[src/docs.ts:5](https://github.com/asyncapi/glee/blob/f9c7c95/src/docs.ts#L5)
+[src/docs.ts:5](https://github.com/asyncapi/glee/blob/e143955/src/docs.ts#L5)
diff --git a/docs/reference/modules/index.md b/docs/reference/modules/index.md
index 3d8573274..be0952d49 100644
--- a/docs/reference/modules/index.md
+++ b/docs/reference/modules/index.md
@@ -20,4 +20,4 @@
#### Defined in
-[src/index.ts:33](https://github.com/asyncapi/glee/blob/f9c7c95/src/index.ts#L33)
+[src/index.ts:37](https://github.com/asyncapi/glee/blob/e143955/src/index.ts#L37)
diff --git a/docs/reference/modules/lib.md b/docs/reference/modules/lib.md
index 43bd03f03..cf248e9bf 100644
--- a/docs/reference/modules/lib.md
+++ b/docs/reference/modules/lib.md
@@ -14,7 +14,10 @@
### Type Aliases
- [AuthFunction](lib.md#authfunction)
+- [AuthProps](lib.md#authprops)
- [CoreGleeConfig](lib.md#coregleeconfig)
+- [GleeAuthFunction](lib.md#gleeauthfunction)
+- [GleeAuthFunctionEvent](lib.md#gleeauthfunctionevent)
- [GleeClusterAdapterConfig](lib.md#gleeclusteradapterconfig)
- [GleeConfig](lib.md#gleeconfig)
- [GleeFunction](lib.md#gleefunction)
@@ -30,6 +33,7 @@
- [QueryParam](lib.md#queryparam)
- [WebSocketServerType](lib.md#websocketservertype)
- [WebsocketAdapterConfig](lib.md#websocketadapterconfig)
+- [WsHttpAuth](lib.md#wshttpauth)
## Type Aliases
@@ -76,7 +80,28 @@
#### Defined in
-[src/lib/index.d.ts:11](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L11)
+[src/lib/index.d.ts:11](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L11)
+
+___
+
+### AuthProps
+
+Ƭ **AuthProps**: `Object`
+
+#### Type declaration
+
+| Name | Type |
+| :------ | :------ |
+| `getAPIKeys` | () => `string` |
+| `getCert` | () => `string` |
+| `getHttpAPIKeys` | (`name`: `string`) => `string` |
+| `getOauthToken` | () => `string` |
+| `getToken` | () => `string` |
+| `getUserPass` | () => { `password`: `string` ; `username`: `string` } |
+
+#### Defined in
+
+[src/lib/index.d.ts:38](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L38)
___
@@ -95,7 +120,51 @@ ___
#### Defined in
-[src/lib/index.d.ts:80](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L80)
+[src/lib/index.d.ts:98](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L98)
+
+___
+
+### GleeAuthFunction
+
+Ƭ **GleeAuthFunction**: (`event`: [`GleeAuthFunctionEvent`](lib.md#gleeauthfunctionevent)) => `Promise`<[`GleeAuthFunctionEvent`](lib.md#gleeauthfunctionevent)\>
+
+#### Type declaration
+
+▸ (`event`): `Promise`<[`GleeAuthFunctionEvent`](lib.md#gleeauthfunctionevent)\>
+
+##### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `event` | [`GleeAuthFunctionEvent`](lib.md#gleeauthfunctionevent) |
+
+##### Returns
+
+`Promise`<[`GleeAuthFunctionEvent`](lib.md#gleeauthfunctionevent)\>
+
+#### Defined in
+
+[src/lib/index.d.ts:153](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L153)
+
+___
+
+### GleeAuthFunctionEvent
+
+Ƭ **GleeAuthFunctionEvent**: `Object`
+
+#### Type declaration
+
+| Name | Type |
+| :------ | :------ |
+| `authProps` | [`AuthProps`](lib.md#authprops) |
+| `doc` | `any` |
+| `done` | `any` |
+| `glee` | [`default`](../classes/lib_glee.default.md) |
+| `serverName` | `string` |
+
+#### Defined in
+
+[src/lib/index.d.ts:130](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L130)
___
@@ -113,7 +182,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:43](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L43)
+[src/lib/index.d.ts:61](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L61)
___
@@ -134,7 +203,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:87](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L87)
+[src/lib/index.d.ts:105](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L105)
___
@@ -158,7 +227,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:123](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L123)
+[src/lib/index.d.ts:149](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L149)
___
@@ -180,7 +249,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:102](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L102)
+[src/lib/index.d.ts:120](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L120)
___
@@ -198,7 +267,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:96](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L96)
+[src/lib/index.d.ts:114](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L114)
___
@@ -208,7 +277,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:121](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L121)
+[src/lib/index.d.ts:147](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L147)
___
@@ -218,7 +287,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:120](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L120)
+[src/lib/index.d.ts:146](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L146)
___
@@ -238,7 +307,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:112](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L112)
+[src/lib/index.d.ts:138](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L138)
___
@@ -260,7 +329,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:61](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L61)
+[src/lib/index.d.ts:79](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L79)
___
@@ -270,7 +339,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:8](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L8)
+[src/lib/index.d.ts:8](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L8)
___
@@ -286,7 +355,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:76](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L76)
+[src/lib/index.d.ts:94](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L94)
___
@@ -302,7 +371,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:72](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L72)
+[src/lib/index.d.ts:90](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L90)
___
@@ -312,7 +381,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:9](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L9)
+[src/lib/index.d.ts:9](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L9)
___
@@ -322,7 +391,7 @@ ___
#### Defined in
-[src/lib/index.d.ts:7](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L7)
+[src/lib/index.d.ts:7](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L7)
___
@@ -344,4 +413,14 @@ ___
#### Defined in
-[src/lib/index.d.ts:49](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/index.d.ts#L49)
+[src/lib/index.d.ts:67](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L67)
+
+___
+
+### WsHttpAuth
+
+Ƭ **WsHttpAuth**: [`WsAuthConfig`](../interfaces/lib.WsAuthConfig.md) \| [`HttpAuthConfig`](../interfaces/lib.HttpAuthConfig.md)
+
+#### Defined in
+
+[src/lib/index.d.ts:50](https://github.com/asyncapi/glee/blob/e143955/src/lib/index.d.ts#L50)
diff --git a/docs/reference/modules/lib_adapter.md b/docs/reference/modules/lib_adapter.md
index 2835b2218..ca9f731e9 100644
--- a/docs/reference/modules/lib_adapter.md
+++ b/docs/reference/modules/lib_adapter.md
@@ -10,10 +10,30 @@
### Type Aliases
+- [AuthEvent](lib_adapter.md#authevent)
- [EnrichedEvent](lib_adapter.md#enrichedevent)
## Type Aliases
+### AuthEvent
+
+Ƭ **AuthEvent**: `Object`
+
+#### Type declaration
+
+| Name | Type |
+| :------ | :------ |
+| `authProps` | [`AuthProps`](lib.md#authprops) |
+| `doc` | `any` |
+| `done` | `any` |
+| `serverName` | `string` |
+
+#### Defined in
+
+[src/lib/adapter.ts:17](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L17)
+
+___
+
### EnrichedEvent
Ƭ **EnrichedEvent**: `Object`
@@ -28,4 +48,4 @@
#### Defined in
-[src/lib/adapter.ts:10](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/adapter.ts#L10)
+[src/lib/adapter.ts:11](https://github.com/asyncapi/glee/blob/e143955/src/lib/adapter.ts#L11)
diff --git a/docs/reference/modules/lib_asyncapiFile.md b/docs/reference/modules/lib_asyncapiFile.md
index 8e2499e13..850268e90 100644
--- a/docs/reference/modules/lib_asyncapiFile.md
+++ b/docs/reference/modules/lib_asyncapiFile.md
@@ -20,4 +20,4 @@
#### Defined in
-[src/lib/asyncapiFile.ts:5](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/asyncapiFile.ts#L5)
+[src/lib/asyncapiFile.ts:5](https://github.com/asyncapi/glee/blob/e143955/src/lib/asyncapiFile.ts#L5)
diff --git a/docs/reference/modules/lib_cluster.md b/docs/reference/modules/lib_cluster.md
index 54cb61330..79e9a54d5 100644
--- a/docs/reference/modules/lib_cluster.md
+++ b/docs/reference/modules/lib_cluster.md
@@ -27,4 +27,4 @@
#### Defined in
-[src/lib/cluster.ts:9](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/cluster.ts#L9)
+[src/lib/cluster.ts:9](https://github.com/asyncapi/glee/blob/e143955/src/lib/cluster.ts#L9)
diff --git a/docs/reference/modules/lib_compiler.md b/docs/reference/modules/lib_compiler.md
index 8267e8857..427822674 100644
--- a/docs/reference/modules/lib_compiler.md
+++ b/docs/reference/modules/lib_compiler.md
@@ -26,4 +26,4 @@
#### Defined in
-[src/lib/compiler.ts:23](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/compiler.ts#L23)
+[src/lib/compiler.ts:23](https://github.com/asyncapi/glee/blob/e143955/src/lib/compiler.ts#L23)
diff --git a/docs/reference/modules/lib_configs.md b/docs/reference/modules/lib_configs.md
index 70a516ae0..4c977d832 100644
--- a/docs/reference/modules/lib_configs.md
+++ b/docs/reference/modules/lib_configs.md
@@ -9,6 +9,7 @@
- [findSpecFile](lib_configs.md#findspecfile)
- [getConfigs](lib_configs.md#getconfigs)
- [initializeConfigs](lib_configs.md#initializeconfigs)
+- [loadConfigsFromFile](lib_configs.md#loadconfigsfromfile)
## Functions
@@ -28,7 +29,7 @@
#### Defined in
-[src/lib/configs.ts:98](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/configs.ts#L98)
+[src/lib/configs.ts:112](https://github.com/asyncapi/glee/blob/e143955/src/lib/configs.ts#L112)
___
@@ -42,7 +43,7 @@ ___
#### Defined in
-[src/lib/configs.ts:116](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/configs.ts#L116)
+[src/lib/configs.ts:130](https://github.com/asyncapi/glee/blob/e143955/src/lib/configs.ts#L130)
___
@@ -62,4 +63,20 @@ ___
#### Defined in
-[src/lib/configs.ts:20](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/configs.ts#L20)
+[src/lib/configs.ts:23](https://github.com/asyncapi/glee/blob/e143955/src/lib/configs.ts#L23)
+
+___
+
+### loadConfigsFromFile
+
+▸ **loadConfigsFromFile**(): `Promise`<`any`\>
+
+Loads the configuration from glee project.
+
+#### Returns
+
+`Promise`<`any`\>
+
+#### Defined in
+
+[src/lib/configs.ts:81](https://github.com/asyncapi/glee/blob/e143955/src/lib/configs.ts#L81)
diff --git a/docs/reference/modules/lib_docs.md b/docs/reference/modules/lib_docs.md
index 1b155a896..79bc25991 100644
--- a/docs/reference/modules/lib_docs.md
+++ b/docs/reference/modules/lib_docs.md
@@ -28,4 +28,4 @@
#### Defined in
-[src/lib/docs.ts:5](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/docs.ts#L5)
+[src/lib/docs.ts:5](https://github.com/asyncapi/glee/blob/e143955/src/lib/docs.ts#L5)
diff --git a/docs/reference/modules/lib_experimentalFlags.md b/docs/reference/modules/lib_experimentalFlags.md
index 3a09354e8..0b323e50c 100644
--- a/docs/reference/modules/lib_experimentalFlags.md
+++ b/docs/reference/modules/lib_experimentalFlags.md
@@ -16,4 +16,4 @@
#### Defined in
-[src/lib/experimentalFlags.ts:3](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/experimentalFlags.ts#L3)
+[src/lib/experimentalFlags.ts:3](https://github.com/asyncapi/glee/blob/e143955/src/lib/experimentalFlags.ts#L3)
diff --git a/docs/reference/modules/lib_functions.md b/docs/reference/modules/lib_functions.md
index bb8ba01e5..bc92407e8 100644
--- a/docs/reference/modules/lib_functions.md
+++ b/docs/reference/modules/lib_functions.md
@@ -21,7 +21,7 @@
#### Defined in
-[src/lib/functions.ts:53](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/functions.ts#L53)
+[src/lib/functions.ts:53](https://github.com/asyncapi/glee/blob/e143955/src/lib/functions.ts#L53)
## Functions
@@ -41,7 +41,7 @@
#### Defined in
-[src/lib/functions.ts:55](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/functions.ts#L55)
+[src/lib/functions.ts:55](https://github.com/asyncapi/glee/blob/e143955/src/lib/functions.ts#L55)
___
@@ -64,4 +64,4 @@ ___
#### Defined in
-[src/lib/functions.ts:84](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/functions.ts#L84)
+[src/lib/functions.ts:84](https://github.com/asyncapi/glee/blob/e143955/src/lib/functions.ts#L84)
diff --git a/docs/reference/modules/lib_lifecycleEvents.md b/docs/reference/modules/lib_lifecycleEvents.md
index c61ebfb5d..16732d9c6 100644
--- a/docs/reference/modules/lib_lifecycleEvents.md
+++ b/docs/reference/modules/lib_lifecycleEvents.md
@@ -21,7 +21,7 @@
#### Defined in
-[src/lib/lifecycleEvents.ts:18](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/lifecycleEvents.ts#L18)
+[src/lib/lifecycleEvents.ts:18](https://github.com/asyncapi/glee/blob/e143955/src/lib/lifecycleEvents.ts#L18)
## Functions
@@ -41,7 +41,7 @@
#### Defined in
-[src/lib/lifecycleEvents.ts:20](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/lifecycleEvents.ts#L20)
+[src/lib/lifecycleEvents.ts:20](https://github.com/asyncapi/glee/blob/e143955/src/lib/lifecycleEvents.ts#L20)
___
@@ -62,4 +62,4 @@ ___
#### Defined in
-[src/lib/lifecycleEvents.ts:60](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/lifecycleEvents.ts#L60)
+[src/lib/lifecycleEvents.ts:60](https://github.com/asyncapi/glee/blob/e143955/src/lib/lifecycleEvents.ts#L60)
diff --git a/docs/reference/modules/lib_logger.md b/docs/reference/modules/lib_logger.md
index 2bd825bed..64853e2c2 100644
--- a/docs/reference/modules/lib_logger.md
+++ b/docs/reference/modules/lib_logger.md
@@ -89,7 +89,7 @@ ___
#### Defined in
-[src/lib/logger.ts:43](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/logger.ts#L43)
+[src/lib/logger.ts:43](https://github.com/asyncapi/glee/blob/e143955/src/lib/logger.ts#L43)
___
@@ -110,7 +110,7 @@ ___
#### Defined in
-[src/lib/logger.ts:206](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/logger.ts#L206)
+[src/lib/logger.ts:206](https://github.com/asyncapi/glee/blob/e143955/src/lib/logger.ts#L206)
___
@@ -131,7 +131,7 @@ ___
#### Defined in
-[src/lib/logger.ts:195](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/logger.ts#L195)
+[src/lib/logger.ts:195](https://github.com/asyncapi/glee/blob/e143955/src/lib/logger.ts#L195)
___
@@ -151,7 +151,7 @@ ___
#### Defined in
-[src/lib/logger.ts:170](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/logger.ts#L170)
+[src/lib/logger.ts:170](https://github.com/asyncapi/glee/blob/e143955/src/lib/logger.ts#L170)
___
@@ -172,7 +172,7 @@ ___
#### Defined in
-[src/lib/logger.ts:139](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/logger.ts#L139)
+[src/lib/logger.ts:139](https://github.com/asyncapi/glee/blob/e143955/src/lib/logger.ts#L139)
___
@@ -194,7 +194,7 @@ ___
#### Defined in
-[src/lib/logger.ts:158](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/logger.ts#L158)
+[src/lib/logger.ts:158](https://github.com/asyncapi/glee/blob/e143955/src/lib/logger.ts#L158)
___
@@ -216,7 +216,7 @@ ___
#### Defined in
-[src/lib/logger.ts:116](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/logger.ts#L116)
+[src/lib/logger.ts:116](https://github.com/asyncapi/glee/blob/e143955/src/lib/logger.ts#L116)
___
@@ -236,7 +236,7 @@ ___
#### Defined in
-[src/lib/logger.ts:180](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/logger.ts#L180)
+[src/lib/logger.ts:180](https://github.com/asyncapi/glee/blob/e143955/src/lib/logger.ts#L180)
___
@@ -260,7 +260,7 @@ ___
#### Defined in
-[src/lib/logger.ts:232](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/logger.ts#L232)
+[src/lib/logger.ts:232](https://github.com/asyncapi/glee/blob/e143955/src/lib/logger.ts#L232)
___
@@ -280,7 +280,7 @@ ___
#### Defined in
-[src/lib/logger.ts:228](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/logger.ts#L228)
+[src/lib/logger.ts:228](https://github.com/asyncapi/glee/blob/e143955/src/lib/logger.ts#L228)
___
@@ -301,7 +301,7 @@ ___
#### Defined in
-[src/lib/logger.ts:148](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/logger.ts#L148)
+[src/lib/logger.ts:148](https://github.com/asyncapi/glee/blob/e143955/src/lib/logger.ts#L148)
___
@@ -321,4 +321,4 @@ ___
#### Defined in
-[src/lib/logger.ts:49](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/logger.ts#L49)
+[src/lib/logger.ts:49](https://github.com/asyncapi/glee/blob/e143955/src/lib/logger.ts#L49)
diff --git a/docs/reference/modules/lib_router.md b/docs/reference/modules/lib_router.md
index 4e165bf52..de33f680c 100644
--- a/docs/reference/modules/lib_router.md
+++ b/docs/reference/modules/lib_router.md
@@ -30,7 +30,7 @@
#### Defined in
-[src/lib/router.ts:8](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L8)
+[src/lib/router.ts:8](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L8)
___
@@ -47,7 +47,7 @@ ___
#### Defined in
-[src/lib/router.ts:3](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L3)
+[src/lib/router.ts:3](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L3)
___
@@ -57,7 +57,7 @@ ___
#### Defined in
-[src/lib/router.ts:14](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L14)
+[src/lib/router.ts:14](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L14)
___
@@ -67,4 +67,4 @@ ___
#### Defined in
-[src/lib/router.ts:13](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/router.ts#L13)
+[src/lib/router.ts:13](https://github.com/asyncapi/glee/blob/e143955/src/lib/router.ts#L13)
diff --git a/docs/reference/modules/lib_servers.md b/docs/reference/modules/lib_servers.md
index be1cfe90f..697156805 100644
--- a/docs/reference/modules/lib_servers.md
+++ b/docs/reference/modules/lib_servers.md
@@ -20,4 +20,4 @@
#### Defined in
-[src/lib/servers.ts:3](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/servers.ts#L3)
+[src/lib/servers.ts:3](https://github.com/asyncapi/glee/blob/e143955/src/lib/servers.ts#L3)
diff --git a/docs/reference/modules/lib_userAuth.md b/docs/reference/modules/lib_userAuth.md
new file mode 100644
index 000000000..5893b9944
--- /dev/null
+++ b/docs/reference/modules/lib_userAuth.md
@@ -0,0 +1,85 @@
+[@asyncapi/glee](../README.md) / lib/userAuth
+
+# Module: lib/userAuth
+
+## Table of contents
+
+### Variables
+
+- [authFunctions](lib_userAuth.md#authfunctions)
+
+### Functions
+
+- [clientAuthConfig](lib_userAuth.md#clientauthconfig)
+- [register](lib_userAuth.md#register)
+- [triggerAuth](lib_userAuth.md#triggerauth)
+
+## Variables
+
+### authFunctions
+
+• `Const` **authFunctions**: `Map`<`string`, `AuthFunctionInfo`\>
+
+#### Defined in
+
+[src/lib/userAuth.ts:13](https://github.com/asyncapi/glee/blob/e143955/src/lib/userAuth.ts#L13)
+
+## Functions
+
+### clientAuthConfig
+
+▸ **clientAuthConfig**(`serverName`): `Promise`<[`GleeAuthFunction`](lib.md#gleeauthfunction)\>
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `serverName` | `string` |
+
+#### Returns
+
+`Promise`<[`GleeAuthFunction`](lib.md#gleeauthfunction)\>
+
+#### Defined in
+
+[src/lib/userAuth.ts:76](https://github.com/asyncapi/glee/blob/e143955/src/lib/userAuth.ts#L76)
+
+___
+
+### register
+
+▸ **register**(`dir`): `Promise`<`void`[]\>
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `dir` | `string` |
+
+#### Returns
+
+`Promise`<`void`[]\>
+
+#### Defined in
+
+[src/lib/userAuth.ts:15](https://github.com/asyncapi/glee/blob/e143955/src/lib/userAuth.ts#L15)
+
+___
+
+### triggerAuth
+
+▸ **triggerAuth**(`params`): `Promise`<`void`\>
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `params` | [`GleeAuthFunctionEvent`](lib.md#gleeauthfunctionevent) |
+
+#### Returns
+
+`Promise`<`void`\>
+
+#### Defined in
+
+[src/lib/userAuth.ts:47](https://github.com/asyncapi/glee/blob/e143955/src/lib/userAuth.ts#L47)
diff --git a/docs/reference/modules/lib_util.md b/docs/reference/modules/lib_util.md
index 99d63ba18..20b534849 100644
--- a/docs/reference/modules/lib_util.md
+++ b/docs/reference/modules/lib_util.md
@@ -33,7 +33,7 @@
#### Defined in
-[src/lib/util.ts:118](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/util.ts#L118)
+[src/lib/util.ts:118](https://github.com/asyncapi/glee/blob/e143955/src/lib/util.ts#L118)
___
@@ -55,7 +55,7 @@ Duplicates a GleeMessage.
#### Defined in
-[src/lib/util.ts:52](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/util.ts#L52)
+[src/lib/util.ts:52](https://github.com/asyncapi/glee/blob/e143955/src/lib/util.ts#L52)
___
@@ -78,7 +78,7 @@ Determines if a path matches a channel, and returns the matching params and its
#### Defined in
-[src/lib/util.ts:22](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/util.ts#L22)
+[src/lib/util.ts:22](https://github.com/asyncapi/glee/blob/e143955/src/lib/util.ts#L22)
___
@@ -99,7 +99,7 @@ ___
#### Defined in
-[src/lib/util.ts:122](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/util.ts#L122)
+[src/lib/util.ts:122](https://github.com/asyncapi/glee/blob/e143955/src/lib/util.ts#L122)
___
@@ -120,7 +120,7 @@ ___
#### Defined in
-[src/lib/util.ts:137](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/util.ts#L137)
+[src/lib/util.ts:137](https://github.com/asyncapi/glee/blob/e143955/src/lib/util.ts#L137)
___
@@ -143,7 +143,7 @@ Determines if a path matches a channel.
#### Defined in
-[src/lib/util.ts:81](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/util.ts#L81)
+[src/lib/util.ts:81](https://github.com/asyncapi/glee/blob/e143955/src/lib/util.ts#L81)
___
@@ -163,7 +163,7 @@ ___
#### Defined in
-[src/lib/util.ts:148](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/util.ts#L148)
+[src/lib/util.ts:148](https://github.com/asyncapi/glee/blob/e143955/src/lib/util.ts#L148)
___
@@ -188,4 +188,4 @@ Object
#### Defined in
-[src/lib/util.ts:93](https://github.com/asyncapi/glee/blob/f9c7c95/src/lib/util.ts#L93)
+[src/lib/util.ts:93](https://github.com/asyncapi/glee/blob/e143955/src/lib/util.ts#L93)
diff --git a/docs/reference/modules/lib_wsHttpAuth.md b/docs/reference/modules/lib_wsHttpAuth.md
new file mode 100644
index 000000000..4bddd43be
--- /dev/null
+++ b/docs/reference/modules/lib_wsHttpAuth.md
@@ -0,0 +1,9 @@
+[@asyncapi/glee](../README.md) / lib/wsHttpAuth
+
+# Module: lib/wsHttpAuth
+
+## Table of contents
+
+### Classes
+
+- [default](../classes/lib_wsHttpAuth.default.md)
diff --git a/docs/reference/modules/middlewares.md b/docs/reference/modules/middlewares.md
index 7ea588637..6aa170759 100644
--- a/docs/reference/modules/middlewares.md
+++ b/docs/reference/modules/middlewares.md
@@ -34,7 +34,7 @@
#### Defined in
-[src/middlewares/index.d.ts:7](https://github.com/asyncapi/glee/blob/f9c7c95/src/middlewares/index.d.ts#L7)
+[src/middlewares/index.d.ts:7](https://github.com/asyncapi/glee/blob/e143955/src/middlewares/index.d.ts#L7)
___
@@ -59,7 +59,7 @@ ___
#### Defined in
-[src/middlewares/index.d.ts:3](https://github.com/asyncapi/glee/blob/f9c7c95/src/middlewares/index.d.ts#L3)
+[src/middlewares/index.d.ts:3](https://github.com/asyncapi/glee/blob/e143955/src/middlewares/index.d.ts#L3)
___
@@ -84,4 +84,4 @@ ___
#### Defined in
-[src/middlewares/index.d.ts:12](https://github.com/asyncapi/glee/blob/f9c7c95/src/middlewares/index.d.ts#L12)
+[src/middlewares/index.d.ts:12](https://github.com/asyncapi/glee/blob/e143955/src/middlewares/index.d.ts#L12)
diff --git a/docs/reference/modules/middlewares_buffer2string.md b/docs/reference/modules/middlewares_buffer2string.md
index c7759355b..87729b454 100644
--- a/docs/reference/modules/middlewares_buffer2string.md
+++ b/docs/reference/modules/middlewares_buffer2string.md
@@ -27,4 +27,4 @@
#### Defined in
-[src/middlewares/buffer2string.ts:4](https://github.com/asyncapi/glee/blob/f9c7c95/src/middlewares/buffer2string.ts#L4)
+[src/middlewares/buffer2string.ts:4](https://github.com/asyncapi/glee/blob/e143955/src/middlewares/buffer2string.ts#L4)
diff --git a/docs/reference/modules/middlewares_errorLogger.md b/docs/reference/modules/middlewares_errorLogger.md
index 96013cc38..ad7995275 100644
--- a/docs/reference/modules/middlewares_errorLogger.md
+++ b/docs/reference/modules/middlewares_errorLogger.md
@@ -28,4 +28,4 @@
#### Defined in
-[src/middlewares/errorLogger.ts:6](https://github.com/asyncapi/glee/blob/f9c7c95/src/middlewares/errorLogger.ts#L6)
+[src/middlewares/errorLogger.ts:6](https://github.com/asyncapi/glee/blob/e143955/src/middlewares/errorLogger.ts#L6)
diff --git a/docs/reference/modules/middlewares_existsInAsyncAPI.md b/docs/reference/modules/middlewares_existsInAsyncAPI.md
index e4f51e849..a96ce24fa 100644
--- a/docs/reference/modules/middlewares_existsInAsyncAPI.md
+++ b/docs/reference/modules/middlewares_existsInAsyncAPI.md
@@ -39,4 +39,4 @@
#### Defined in
-[src/middlewares/existsInAsyncAPI.ts:5](https://github.com/asyncapi/glee/blob/f9c7c95/src/middlewares/existsInAsyncAPI.ts#L5)
+[src/middlewares/existsInAsyncAPI.ts:5](https://github.com/asyncapi/glee/blob/e143955/src/middlewares/existsInAsyncAPI.ts#L5)
diff --git a/docs/reference/modules/middlewares_json2string.md b/docs/reference/modules/middlewares_json2string.md
index 10595947c..ea3b6579f 100644
--- a/docs/reference/modules/middlewares_json2string.md
+++ b/docs/reference/modules/middlewares_json2string.md
@@ -27,4 +27,4 @@
#### Defined in
-[src/middlewares/json2string.ts:4](https://github.com/asyncapi/glee/blob/f9c7c95/src/middlewares/json2string.ts#L4)
+[src/middlewares/json2string.ts:4](https://github.com/asyncapi/glee/blob/e143955/src/middlewares/json2string.ts#L4)
diff --git a/docs/reference/modules/middlewares_logger.md b/docs/reference/modules/middlewares_logger.md
index 9da2b0c2f..a8bcfa24c 100644
--- a/docs/reference/modules/middlewares_logger.md
+++ b/docs/reference/modules/middlewares_logger.md
@@ -27,4 +27,4 @@
#### Defined in
-[src/middlewares/logger.ts:5](https://github.com/asyncapi/glee/blob/f9c7c95/src/middlewares/logger.ts#L5)
+[src/middlewares/logger.ts:5](https://github.com/asyncapi/glee/blob/e143955/src/middlewares/logger.ts#L5)
diff --git a/docs/reference/modules/middlewares_string2json.md b/docs/reference/modules/middlewares_string2json.md
index 3172a53d0..eca641682 100644
--- a/docs/reference/modules/middlewares_string2json.md
+++ b/docs/reference/modules/middlewares_string2json.md
@@ -27,4 +27,4 @@
#### Defined in
-[src/middlewares/string2json.ts:4](https://github.com/asyncapi/glee/blob/f9c7c95/src/middlewares/string2json.ts#L4)
+[src/middlewares/string2json.ts:4](https://github.com/asyncapi/glee/blob/e143955/src/middlewares/string2json.ts#L4)
diff --git a/docs/reference/modules/middlewares_validate.md b/docs/reference/modules/middlewares_validate.md
index fa0a7f65f..6193e3307 100644
--- a/docs/reference/modules/middlewares_validate.md
+++ b/docs/reference/modules/middlewares_validate.md
@@ -39,4 +39,4 @@
#### Defined in
-[src/middlewares/validate.ts:7](https://github.com/asyncapi/glee/blob/f9c7c95/src/middlewares/validate.ts#L7)
+[src/middlewares/validate.ts:7](https://github.com/asyncapi/glee/blob/e143955/src/middlewares/validate.ts#L7)
diff --git a/docs/reference/modules/middlewares_validateConnection.md b/docs/reference/modules/middlewares_validateConnection.md
index 8ce389f46..92cb35a44 100644
--- a/docs/reference/modules/middlewares_validateConnection.md
+++ b/docs/reference/modules/middlewares_validateConnection.md
@@ -27,4 +27,4 @@
#### Defined in
-[src/middlewares/validateConnection.ts:4](https://github.com/asyncapi/glee/blob/f9c7c95/src/middlewares/validateConnection.ts#L4)
+[src/middlewares/validateConnection.ts:4](https://github.com/asyncapi/glee/blob/e143955/src/middlewares/validateConnection.ts#L4)
diff --git a/docs/reference/modules/registerAdapters.md b/docs/reference/modules/registerAdapters.md
index 2464802c8..c0c1e8c51 100644
--- a/docs/reference/modules/registerAdapters.md
+++ b/docs/reference/modules/registerAdapters.md
@@ -28,4 +28,4 @@
#### Defined in
-[src/registerAdapters.ts:14](https://github.com/asyncapi/glee/blob/f9c7c95/src/registerAdapters.ts#L14)
+[src/registerAdapters.ts:14](https://github.com/asyncapi/glee/blob/e143955/src/registerAdapters.ts#L14)
diff --git a/examples/anime-http/client/.env b/examples/anime-http/client/.env
new file mode 100644
index 000000000..f04bbcf20
--- /dev/null
+++ b/examples/anime-http/client/.env
@@ -0,0 +1,3 @@
+TOKEN=arb-valueFromClientAuth
+OAUTH2=arb-OAUTH_access_token
+APIKEY=arb-APIKEY_token
\ No newline at end of file
diff --git a/examples/anime-http/client/asyncapi.yaml b/examples/anime-http/client/asyncapi.yaml
index d98da36e2..2ea9787da 100644
--- a/examples/anime-http/client/asyncapi.yaml
+++ b/examples/anime-http/client/asyncapi.yaml
@@ -7,6 +7,14 @@ servers:
trendingAnime:
url: http://localhost:8081
protocol: http
+ security:
+ - token: []
+ - userPass: []
+ - apiKey: []
+ - UserOrPassKey: []
+ - oauth:
+ - write:pets
+ - read:pets
testwebhook:
url: ws://localhost:9000
protocol: ws
@@ -43,3 +51,32 @@ components:
summary: ping client
payload:
type: object
+ securitySchemes:
+ token:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+ userPass:
+ type: userPassword
+ apiKey:
+ type: httpApiKey
+ name: api_key
+ in: query
+ UserOrPassKey:
+ type: apiKey
+ in: user
+ oauth:
+ type: oauth2
+ flows:
+ implicit:
+ authorizationUrl: https://example.com/api/oauth/dialog
+ scopes:
+ write:pets: modify pets in your account
+ read:pets: read your pets
+ authorizationCode:
+ authorizationUrl: https://example.com/api/oauth/dialog
+ tokenUrl: https://example.com/api/oauth/dialog
+ scopes:
+ delete:pets: modify pets in your account
+ update:pets: read your pets
+
diff --git a/examples/anime-http/client/auth/trendingAnime.ts b/examples/anime-http/client/auth/trendingAnime.ts
new file mode 100644
index 000000000..eb93b81a6
--- /dev/null
+++ b/examples/anime-http/client/auth/trendingAnime.ts
@@ -0,0 +1,15 @@
+/* eslint-disable no-undef */
+
+export async function clientAuth({ serverName }) {
+ console.log("serverName", serverName)
+
+ return {
+ token: process.env.TOKEN,
+ oauth: process.env.OAUTH2,
+ apiKey: process.env.APIKEY,
+ userPass: {
+ user: process.env.USERNAME,
+ password: process.env.PASSWORD
+ }
+ }
+ }
\ No newline at end of file
diff --git a/examples/anime-http/client/docs/asyncapi.md b/examples/anime-http/client/docs/asyncapi.md
new file mode 100644
index 000000000..1182c0e8f
--- /dev/null
+++ b/examples/anime-http/client/docs/asyncapi.md
@@ -0,0 +1,181 @@
+# AsyncAPI IMDB client 1.0.0 documentation
+
+This app creates a client that subscribes to the server for getting the top 10 trending/upcoming anime.
+
+## Table of Contents
+
+* [Servers](#servers)
+ * [trendingAnime](#trendinganime-server)
+ * [testwebhook](#testwebhook-server)
+* [Operations](#operations)
+ * [PUB /test](#pub-test-operation)
+ * [PUB trendingAnime](#pub-trendinganime-operation)
+ * [SUB trendingAnime](#sub-trendinganime-operation)
+
+## Servers
+
+### `trendingAnime` Server
+
+* URL: `http://localhost:8081`
+* Protocol: `http`
+
+
+#### Security
+
+##### Security Requirement 1
+
+* Type: `HTTP`
+ * Scheme: bearer
+ * Bearer format: JWT
+
+
+
+
+##### Security Requirement 2
+
+* Type: `User/Password`
+
+
+
+##### Security Requirement 3
+
+* Type: `HTTP API key`
+ * Name: api_key
+ * In: query
+
+
+
+
+##### Security Requirement 4
+
+* Type: `API key`
+ * In: user
+
+
+
+
+##### Security Requirement 5
+
+* Type: `OAuth2`
+ * Flows:
+
+ Required scopes: `write:pets`, `read:pets`
+
+ | Flow | Auth URL | Token URL | Refresh URL | Scopes |
+ |---|---|---|---|---|
+ | Implicit | [https://example.com/api/oauth/dialog](https://example.com/api/oauth/dialog) | - | - | `write:pets`, `read:pets` |
+ | Authorization Code | [https://example.com/api/oauth/dialog](https://example.com/api/oauth/dialog) | [https://example.com/api/oauth/dialog](https://example.com/api/oauth/dialog) | - | `delete:pets`, `update:pets` |
+
+
+
+
+
+
+
+
+
+### `testwebhook` Server
+
+* URL: `ws://localhost:9000`
+* Protocol: `ws`
+
+
+
+## Operations
+
+### PUB `/test` Operation
+
+* Operation ID: `index`
+
+#### `ws` Channel specific information
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| bindingVersion | - | - | `"0.1.0"` | - | - |
+
+#### Message `test`
+
+*ping client*
+
+##### Payload
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| (root) | object | - | - | - | **additional properties are allowed** |
+
+> Examples of payload _(generated)_
+
+```json
+{}
+```
+
+
+
+### PUB `trendingAnime` Operation
+
+* Operation ID: `trendingAnimeListRecieverController`
+* Available only on servers: [trendingAnime](#trendinganime-server)
+
+#### `http` Channel specific information
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| type | - | - | `"request"` | - | - |
+| method | - | - | `"POST"` | - | - |
+| bindingVersion | - | - | `"0.1.0"` | - | - |
+
+#### Message ``
+
+*Data required to populate trending anime*
+
+##### Payload
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| (root) | object | - | - | - | **additional properties are allowed** |
+| name | string | Name of the anime. | - | - | **required** |
+| rating | string | Rating of the show. | - | - | **required** |
+| genre | string | The genre of anime. | - | - | **required** |
+| studio | string | The studio of anime. | - | - | **required** |
+
+> Examples of payload _(generated)_
+
+```json
+{
+ "name": "string",
+ "rating": "string",
+ "genre": "string",
+ "studio": "string"
+}
+```
+
+
+
+### SUB `trendingAnime` Operation
+
+* Available only on servers: [trendingAnime](#trendinganime-server)
+
+#### `http` Channel specific information
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| type | - | - | `"request"` | - | - |
+| method | - | - | `"POST"` | - | - |
+| bindingVersion | - | - | `"0.1.0"` | - | - |
+
+#### Message ``
+
+##### Payload
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| (root) | object | - | - | - | **additional properties are allowed** |
+
+> Examples of payload _(generated)_
+
+```json
+{}
+```
+
+
+
diff --git a/examples/anime-http/client/functions/index.ts b/examples/anime-http/client/func/index.ts
similarity index 100%
rename from examples/anime-http/client/functions/index.ts
rename to examples/anime-http/client/func/index.ts
diff --git a/examples/anime-http/client/functions/trendingAnimeListRecieverController.ts b/examples/anime-http/client/func/trendingAnimeListRecieverController.ts
similarity index 100%
rename from examples/anime-http/client/functions/trendingAnimeListRecieverController.ts
rename to examples/anime-http/client/func/trendingAnimeListRecieverController.ts
diff --git a/examples/anime-http/client/glee.config.ts b/examples/anime-http/client/glee.config.ts
new file mode 100644
index 000000000..ee1b1d5da
--- /dev/null
+++ b/examples/anime-http/client/glee.config.ts
@@ -0,0 +1,8 @@
+export default async function () {
+ return {
+ glee: { // Glee core configurations
+ lifecycleDir: './lifecycle',
+ functionsDir: './functions',
+ }
+ }
+}
\ No newline at end of file
diff --git a/examples/anime-http/server/asyncapi.yaml b/examples/anime-http/server/asyncapi.yaml
index 7601f29b6..9930a3838 100644
--- a/examples/anime-http/server/asyncapi.yaml
+++ b/examples/anime-http/server/asyncapi.yaml
@@ -1,12 +1,19 @@
-asyncapi: 2.4.0
+asyncapi: 2.6.0
info:
title: AsyncAPI IMDB server
version: 1.0.0
description: This app is a dummy server that would stream the trending/upcoming anime.
servers:
trendingAnimeServer:
- url: http://localhost:8081
+ url: 'http://localhost:8081'
protocol: http
+ security:
+ - token: []
+ - userPass: []
+ - apiKey: []
+ - UserOrPassKey: []
+ - cert: []
+ - oauth: []
channels:
trendingAnime:
bindings:
@@ -15,13 +22,13 @@ channels:
method: POST
bindingVersion: 0.1.0
query:
- $ref: "#/components/schemas/request"
+ $ref: '#/components/schemas/request'
body:
- $ref: "#/components/schemas/request"
+ $ref: '#/components/schemas/request'
publish:
operationId: trendingAnimeController
message:
- $ref: "#/components/messages/trendingAnime"
+ $ref: '#/components/messages/trendingAnime'
subscribe:
message:
payload:
@@ -31,7 +38,7 @@ components:
trendingAnime:
summary: Data required to populate trending anime
payload:
- $ref: "#/components/schemas/request"
+ $ref: '#/components/schemas/request'
schemas:
request:
type: object
@@ -53,3 +60,27 @@ components:
studio:
type: string
description: The studio of anime.
+ securitySchemes:
+ token:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+ userPass:
+ type: userPassword
+ apiKey:
+ type: httpApiKey
+ name: api_key
+ in: query
+ UserOrPassKey:
+ type: apiKey
+ in: user
+ cert:
+ type: X509
+ oauth:
+ type: oauth2
+ flows:
+ clientCredentials:
+ tokenUrl: https://example.com/api/oauth/dialog
+ scopes:
+ delete:pets: modify pets in your account
+ update:pets: read your pets
\ No newline at end of file
diff --git a/examples/anime-http/server/auth/trendingAnimeServer.ts b/examples/anime-http/server/auth/trendingAnimeServer.ts
new file mode 100644
index 000000000..d0690aa62
--- /dev/null
+++ b/examples/anime-http/server/auth/trendingAnimeServer.ts
@@ -0,0 +1,25 @@
+// /* eslint-disable no-undef */
+
+// //@ts-ignore
+import axios from "axios"
+
+export async function serverAuth({ authProps, done }) {
+ await axios.get("https://jsonplaceholder.typicode.com/todos/1", {
+ timeout: 5000,
+ })
+
+ console.log("oauth props", authProps.getOauthToken())
+ console.log("httpAPIkey", authProps.getHttpAPIKeys("api_key"))
+ console.log("token", authProps.getToken())
+ console.log("userpassword", authProps.getUserPass())
+
+ done(true)
+}
+
+export async function clientAuth({ serverName }) {
+ if (serverName === "websockets") {
+ return {
+ token: process.env.TOKEN,
+ }
+ }
+}
diff --git a/examples/anime-http/server/docs/asyncapi.md b/examples/anime-http/server/docs/asyncapi.md
new file mode 100644
index 000000000..41c10f8dc
--- /dev/null
+++ b/examples/anime-http/server/docs/asyncapi.md
@@ -0,0 +1,164 @@
+# AsyncAPI IMDB server 1.0.0 documentation
+
+This app is a dummy server that would stream the trending/upcoming anime.
+
+## Table of Contents
+
+* [Servers](#servers)
+ * [trendingAnimeServer](#trendinganimeserver-server)
+* [Operations](#operations)
+ * [PUB trendingAnime](#pub-trendinganime-operation)
+ * [SUB trendingAnime](#sub-trendinganime-operation)
+
+## Servers
+
+### `trendingAnimeServer` Server
+
+* URL: `http://localhost:8081`
+* Protocol: `http`
+
+
+#### Security
+
+##### Security Requirement 1
+
+* Type: `HTTP`
+ * Scheme: bearer
+ * Bearer format: JWT
+
+
+
+
+##### Security Requirement 2
+
+* Type: `User/Password`
+
+
+
+##### Security Requirement 3
+
+* Type: `HTTP API key`
+ * Name: api_key
+ * In: query
+
+
+
+
+##### Security Requirement 4
+
+* Type: `API key`
+ * In: user
+
+
+
+
+##### Security Requirement 5
+
+* Type: `X509`
+
+
+
+##### Security Requirement 6
+
+* Type: `OAuth2`
+ * Flows:
+
+ | Flow | Auth URL | Token URL | Refresh URL | Scopes |
+ |---|---|---|---|---|
+ | Client credentials | - | [https://example.com/api/oauth/dialog](https://example.com/api/oauth/dialog) | - | `delete:pets`, `update:pets` |
+
+
+
+
+
+
+
+
+
+## Operations
+
+### PUB `trendingAnime` Operation
+
+* Operation ID: `trendingAnimeController`
+
+#### `http` Channel specific information
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| type | - | - | `"request"` | - | - |
+| method | - | - | `"POST"` | - | - |
+| bindingVersion | - | - | `"0.1.0"` | - | - |
+| query | object | - | - | - | **additional properties are allowed** |
+| query.name | string | Name of the anime. | - | - | **required** |
+| query.rating | string | Rating of the show. | - | - | **required** |
+| query.genre | string | The genre of anime. | - | - | **required** |
+| query.studio | string | The studio of anime. | - | - | **required** |
+| body | object | - | - | - | **additional properties are allowed** |
+| body.name | string | Name of the anime. | - | - | **required** |
+| body.rating | string | Rating of the show. | - | - | **required** |
+| body.genre | string | The genre of anime. | - | - | **required** |
+| body.studio | string | The studio of anime. | - | - | **required** |
+
+#### Message `trendingAnime`
+
+*Data required to populate trending anime*
+
+##### Payload
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| (root) | object | - | - | - | **additional properties are allowed** |
+| name | string | Name of the anime. | - | - | **required** |
+| rating | string | Rating of the show. | - | - | **required** |
+| genre | string | The genre of anime. | - | - | **required** |
+| studio | string | The studio of anime. | - | - | **required** |
+
+> Examples of payload _(generated)_
+
+```json
+{
+ "name": "string",
+ "rating": "string",
+ "genre": "string",
+ "studio": "string"
+}
+```
+
+
+
+### SUB `trendingAnime` Operation
+
+#### `http` Channel specific information
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| type | - | - | `"request"` | - | - |
+| method | - | - | `"POST"` | - | - |
+| bindingVersion | - | - | `"0.1.0"` | - | - |
+| query | object | - | - | - | **additional properties are allowed** |
+| query.name | string | Name of the anime. | - | - | **required** |
+| query.rating | string | Rating of the show. | - | - | **required** |
+| query.genre | string | The genre of anime. | - | - | **required** |
+| query.studio | string | The studio of anime. | - | - | **required** |
+| body | object | - | - | - | **additional properties are allowed** |
+| body.name | string | Name of the anime. | - | - | **required** |
+| body.rating | string | Rating of the show. | - | - | **required** |
+| body.genre | string | The genre of anime. | - | - | **required** |
+| body.studio | string | The studio of anime. | - | - | **required** |
+
+#### Message ``
+
+##### Payload
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| (root) | object | - | - | - | **additional properties are allowed** |
+
+> Examples of payload _(generated)_
+
+```json
+{}
+```
+
+
+
diff --git a/examples/crypto-websockets/client/asyncapi.yaml b/examples/crypto-websockets/client/asyncapi.yaml
index 458851740..b728f7a54 100644
--- a/examples/crypto-websockets/client/asyncapi.yaml
+++ b/examples/crypto-websockets/client/asyncapi.yaml
@@ -8,6 +8,11 @@ servers:
websockets:
url: ws://localhost:3000
protocol: ws
+ security:
+ - token: []
+ - userPass: []
+ - apiKey: []
+ - cert: []
x-remoteServers:
- websockets
channels:
@@ -31,3 +36,17 @@ components:
type: number
price:
type: number
+ securitySchemes:
+ token:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+ userPass:
+ type: userPassword
+ apiKey:
+ type: httpApiKey
+ name: api_key
+ in: header
+ cert:
+ type: apiKey
+ in: user
\ No newline at end of file
diff --git a/examples/crypto-websockets/client/auth/websockets.ts b/examples/crypto-websockets/client/auth/websockets.ts
new file mode 100644
index 000000000..856a126c7
--- /dev/null
+++ b/examples/crypto-websockets/client/auth/websockets.ts
@@ -0,0 +1,8 @@
+export async function clientAuth({ parsedAsyncAPI, serverName }) {
+ return {
+ token: process.env.TOKEN,
+ userPass: {
+ user: "alec", password: "oviecodes"
+ }
+ }
+}
\ No newline at end of file
diff --git a/examples/crypto-websockets/client/db.json b/examples/crypto-websockets/client/db.json
index 578124390..5102a11ff 100644
--- a/examples/crypto-websockets/client/db.json
+++ b/examples/crypto-websockets/client/db.json
@@ -1 +1 @@
-[{"time":1663935946665,"price":130,"status":"started"},{"time":1663935947684,"price":140,"status":"intransit"},{"time":1663935948690,"price":130,"status":"intransit"},{"time":1663935949698,"price":140,"status":"intransit"},{"time":1663935950710,"price":150,"status":"intransit"},{"time":1663935951716,"price":130,"status":"intransit"},{"time":1663935952724,"price":100,"status":"intransit"},{"time":1663935953737,"price":110,"status":"intransit"},{"time":1663935954742,"price":140,"status":"intransit"}]
\ No newline at end of file
+[{"time":1692154441640,"price":130,"status":"started"},{"time":1692154442650,"price":140,"status":"intransit"},{"time":1692154442650,"price":140,"status":"intransit"},{"time":1692154443663,"price":180,"status":"intransit"},{"time":1692154443663,"price":180,"status":"intransit"},{"time":1692154444668,"price":180,"status":"intransit"},{"time":1692154444668,"price":180,"status":"intransit"},{"time":1692154445678,"price":160,"status":"intransit"},{"time":1692154445678,"price":160,"status":"intransit"},{"time":1692154446687,"price":120,"status":"intransit"},{"time":1692154446687,"price":120,"status":"intransit"},{"time":1692154447695,"price":110,"status":"intransit"},{"time":1692154447695,"price":110,"status":"intransit"},{"time":1692154448703,"price":130,"status":"intransit"},{"time":1692154448703,"price":130,"status":"intransit"},{"time":1692154449713,"price":130,"status":"intransit"},{"time":1692154449713,"price":130,"status":"intransit"}]
\ No newline at end of file
diff --git a/examples/crypto-websockets/client/docs/asyncapi.md b/examples/crypto-websockets/client/docs/asyncapi.md
new file mode 100644
index 000000000..8a8935633
--- /dev/null
+++ b/examples/crypto-websockets/client/docs/asyncapi.md
@@ -0,0 +1,56 @@
+# asyncapicoin client 1.0.0 documentation
+
+This app creates a client that subscribes to the server for the price change.
+
+
+## Table of Contents
+
+* [Servers](#servers)
+ * [websockets](#websockets-server)
+* [Operations](#operations)
+ * [PUB /price](#pub-price-operation)
+
+## Servers
+
+### `websockets` Server
+
+* URL: `ws://localhost:3000`
+* Protocol: `ws`
+
+
+
+## Operations
+
+### PUB `/price` Operation
+
+* Operation ID: `index`
+
+#### `ws` Channel specific information
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| bindingVersion | - | - | `"0.1.0"` | - | - |
+
+#### Message `indexGraph`
+
+##### Payload
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| (root) | object | - | - | - | **additional properties are allowed** |
+| status | string | - | - | - | - |
+| time | number | - | - | - | - |
+| price | number | - | - | - | - |
+
+> Examples of payload _(generated)_
+
+```json
+{
+ "status": "string",
+ "time": 0,
+ "price": 0
+}
+```
+
+
+
diff --git a/examples/crypto-websockets/server/asyncapi.yaml b/examples/crypto-websockets/server/asyncapi.yaml
index f500b6503..4ffade405 100644
--- a/examples/crypto-websockets/server/asyncapi.yaml
+++ b/examples/crypto-websockets/server/asyncapi.yaml
@@ -8,6 +8,14 @@ servers:
websocket:
url: ws://localhost:3000
protocol: ws
+ security:
+ - token: []
+ - userPass: []
+ - apiKey: []
+ - cert: []
+ ws-websocket:
+ url: ws://localhost:4000
+ protocol: ws
channels:
/price:
bindings:
@@ -33,4 +41,18 @@ components:
time:
type: number
price:
- type: number
\ No newline at end of file
+ type: number
+ securitySchemes:
+ token:
+ type: http
+ scheme: bearer
+ bearerFormat: JWT
+ userPass:
+ type: userPassword
+ apiKey:
+ type: httpApiKey
+ name: api_key
+ in: header
+ cert:
+ type: apiKey
+ in: user
\ No newline at end of file
diff --git a/examples/crypto-websockets/server/auth/websocket.ts b/examples/crypto-websockets/server/auth/websocket.ts
new file mode 100644
index 000000000..89506aa8e
--- /dev/null
+++ b/examples/crypto-websockets/server/auth/websocket.ts
@@ -0,0 +1,22 @@
+// /* eslint-disable no-undef */
+
+import axios from "axios"
+
+export async function serverAuth({ authProps, done }) {
+ await axios.get("https://jsonplaceholder.typicode.com/todos/1", {
+ timeout: 5000,
+ })
+
+ console.log("token", authProps.getToken())
+ console.log("userpass", authProps.getUserPass())
+
+ done(false)
+}
+
+export async function clientAuth({ parsedAsyncAPI, serverName }) {
+ return {
+ token: process.env.TOKEN,
+ username: process.env.USERNAME,
+ password: process.env.PASSWORD,
+ }
+}
diff --git a/examples/crypto-websockets/server/docs/asyncapi.md b/examples/crypto-websockets/server/docs/asyncapi.md
new file mode 100644
index 000000000..5161cc040
--- /dev/null
+++ b/examples/crypto-websockets/server/docs/asyncapi.md
@@ -0,0 +1,88 @@
+# asyncapicoin server 1.0.0 documentation
+
+This app is a dummy server that would stream the price of a fake cryptocurrency
+
+
+## Table of Contents
+
+* [Servers](#servers)
+ * [websocket](#websocket-server)
+ * [ws-websocket](#ws-websocket-server)
+* [Operations](#operations)
+ * [SUB /price](#sub-price-operation)
+
+## Servers
+
+### `websocket` Server
+
+* URL: `ws://localhost:3000`
+* Protocol: `ws`
+
+
+#### Security
+
+##### Security Requirement 1
+
+* Type: `HTTP`
+ * Scheme: bearer
+ * Bearer format: JWT
+
+
+
+
+##### Security Requirement 2
+
+* Type: `HTTP`
+ * Scheme: bearer
+ * Bearer format: JWT
+
+
+
+
+
+
+
+### `ws-websocket` Server
+
+* URL: `ws://localhost:4000`
+* Protocol: `ws`
+
+
+
+## Operations
+
+### SUB `/price` Operation
+
+#### `ws` Channel specific information
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| bindingVersion | - | - | `"0.1.0"` | - | - |
+| headers | object | - | - | - | **additional properties are allowed** |
+| headers.token | string | - | - | - | - |
+
+#### Message `indexGraph`
+
+*Data required for drawing index graph*
+
+##### Payload
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| (root) | object | - | - | - | **additional properties are allowed** |
+| status | string | - | - | - | - |
+| time | number | - | - | - | - |
+| price | number | - | - | - | - |
+
+> Examples of payload _(generated)_
+
+```json
+{
+ "status": "string",
+ "time": 0,
+ "price": 0
+}
+```
+
+
+
diff --git a/examples/kafka-test/package-lock.json b/examples/kafka-test/package-lock.json
index 3556fffd0..d3405f8e4 100644
--- a/examples/kafka-test/package-lock.json
+++ b/examples/kafka-test/package-lock.json
@@ -15,12 +15,12 @@
},
"../..": {
"name": "@asyncapi/glee",
- "version": "0.10.17",
+ "version": "0.26.2",
"license": "Apache-2.0",
"dependencies": {
- "@asyncapi/generator": "^1.9.14",
- "@asyncapi/html-template": "^0.24.10",
- "@asyncapi/markdown-template": "^1.1.1",
+ "@asyncapi/generator": "^1.10.14",
+ "@asyncapi/html-template": "^0.28.4",
+ "@asyncapi/markdown-template": "^1.3.3",
"@asyncapi/parser": "^1.13.1",
"@types/jest": "^27.4.0",
"@types/qs": "^6.9.7",
@@ -36,8 +36,9 @@
"emojis": "^1.0.10",
"eslint-plugin-github": "^4.3.5",
"eslint-plugin-security": "^1.4.0",
+ "got": "^12.5.3",
"kafkajs": "^2.2.3",
- "mqtt": "^4.2.6",
+ "mqtt": "^4.3.7",
"path-to-regexp": "^6.2.0",
"qs": "^6.11.0",
"redis": "^4.0.2",
@@ -55,10 +56,6 @@
"glee": "dist/cli/index.js"
},
"devDependencies": {
- "@semantic-release/commit-analyzer": "^8.0.1",
- "@semantic-release/github": "^7.0.4",
- "@semantic-release/npm": "^7.0.6",
- "@semantic-release/release-notes-generator": "^9.0.1",
"@tsconfig/node14": "^1.0.1",
"@types/async": "^3.2.11",
"@types/debug": "^4.1.7",
@@ -68,20 +65,18 @@
"@typescript-eslint/eslint-plugin": "^5.9.0",
"@typescript-eslint/parser": "^5.9.0",
"all-contributors-cli": "^6.14.2",
- "conventional-changelog-conventionalcommits": "^4.4.0",
"eslint": "^8.6.0",
"eslint-plugin-jest": "^23.8.2",
- "eslint-plugin-sonarjs": "^0.5.0",
+ "eslint-plugin-sonarjs": "^0.19.0",
"fs-extra": "^10.1.0",
"jest": "^27.4.7",
"jest-extended": "^1.2.0",
"jsdoc-to-markdown": "^5.0.3",
"markdown-toc": "^1.2.0",
"rimraf": "^3.0.2",
- "semantic-release": "^17.2.2",
"ts-jest": "^27.1.2",
"tsc-watch": "^4.5.0",
- "typedoc": "^0.22.10",
+ "typedoc": "^0.23.28",
"typedoc-plugin-markdown": "^3.11.8",
"unixify": "^1.0.0"
},
@@ -7599,14 +7594,10 @@
"@asyncapi/glee": {
"version": "file:../..",
"requires": {
- "@asyncapi/generator": "^1.9.14",
- "@asyncapi/html-template": "^0.24.10",
- "@asyncapi/markdown-template": "^1.1.1",
+ "@asyncapi/generator": "^1.10.14",
+ "@asyncapi/html-template": "^0.28.4",
+ "@asyncapi/markdown-template": "^1.3.3",
"@asyncapi/parser": "^1.13.1",
- "@semantic-release/commit-analyzer": "^8.0.1",
- "@semantic-release/github": "^7.0.4",
- "@semantic-release/npm": "^7.0.6",
- "@semantic-release/release-notes-generator": "^9.0.1",
"@tsconfig/node14": "^1.0.1",
"@types/async": "^3.2.11",
"@types/debug": "^4.1.7",
@@ -7623,7 +7614,6 @@
"better-ajv-errors": "^0.7.0",
"bufferutil": "^4.0.3",
"chalk": "^4.1.1",
- "conventional-changelog-conventionalcommits": "^4.4.0",
"cross-spawn": "^7.0.3",
"debug": "^4.3.1",
"dotenv": "^10.0.0",
@@ -7633,24 +7623,24 @@
"eslint-plugin-github": "^4.3.5",
"eslint-plugin-jest": "^23.8.2",
"eslint-plugin-security": "^1.4.0",
- "eslint-plugin-sonarjs": "^0.5.0",
+ "eslint-plugin-sonarjs": "^0.19.0",
"fs-extra": "^10.1.0",
+ "got": "^12.5.3",
"jest": "^27.4.7",
"jest-extended": "^1.2.0",
"jsdoc-to-markdown": "^5.0.3",
"kafkajs": "^2.2.3",
"markdown-toc": "^1.2.0",
- "mqtt": "^4.2.6",
+ "mqtt": "^4.3.7",
"path-to-regexp": "^6.2.0",
"qs": "^6.11.0",
"redis": "^4.0.2",
"rimraf": "^3.0.2",
- "semantic-release": "^17.2.2",
"socket.io": "^4.1.2",
"terminal-image": "^2.0.0",
"ts-jest": "^27.1.2",
"tsc-watch": "^4.5.0",
- "typedoc": "^0.22.10",
+ "typedoc": "^0.23.28",
"typedoc-plugin-markdown": "^3.11.8",
"typescript": "^4.5.4",
"unixify": "^1.0.0",
@@ -11351,8 +11341,7 @@
}
},
"mqtt": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.4.tgz",
+ "version": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.4.tgz",
"integrity": "sha512-yAVDfVHz3Cjn6K68z54mf7fTni/AWsPhiEsRwZSvet2wO47R6NFUn2psWxYIph2JxWtL3ZKa/da8pjJKSaXPdQ==",
"requires": {
"commist": "^1.0.0",
diff --git a/examples/social-network/websocket-server/docs/asyncapi.md b/examples/social-network/websocket-server/docs/asyncapi.md
new file mode 100644
index 000000000..ed7252d0a
--- /dev/null
+++ b/examples/social-network/websocket-server/docs/asyncapi.md
@@ -0,0 +1,123 @@
+# The Social Network 0.1.0 documentation
+
+
+## Table of Contents
+
+* [Servers](#servers)
+ * [websockets](#websockets-server)
+ * [mosquitto](#mosquitto-server)
+* [Operations](#operations)
+ * [PUB /](#pub--operation)
+ * [SUB /](#sub--operation)
+ * [SUB post/liked](#sub-postliked-operation)
+
+## Servers
+
+### `websockets` Server
+
+* URL: `ws://0.0.0.0:3001`
+* Protocol: `ws`
+
+
+
+### `mosquitto` Server
+
+* URL: `mqtt://test.mosquitto.org`
+* Protocol: `mqtt`
+
+
+#### `mqtt` Server specific information
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| clientId | - | - | `"the-social-network"` | - | - |
+
+
+## Operations
+
+### PUB `/` Operation
+
+* Operation ID: `onLikeDislike`
+* Available only on servers: [websockets](#websockets-server)
+
+#### Message `likeOrDislike`
+
+##### Payload
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| (root) | object | - | - | - | **additional properties are allowed** |
+| type | string | Type of the message | allowed (`"like"`, `"dislike"`) | - | **required** |
+| data | object | - | - | - | **additional properties are allowed** |
+| data.postId | integer | The id of the post the user (dis)liked. | - | - | **required** |
+| data.userId | integer | The user who clicked the Like button. | - | - | **required** |
+
+> Examples of payload _(generated)_
+
+```json
+{
+ "type": "like",
+ "data": {
+ "postId": 0,
+ "userId": 0
+ }
+}
+```
+
+
+
+### SUB `/` Operation
+
+* Available only on servers: [websockets](#websockets-server)
+
+#### Message `likeCountUpdated`
+
+##### Payload
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| (root) | object | - | - | - | **additional properties are allowed** |
+| type | string | Type of the message | - | - | **required** |
+| data | object | - | - | - | **additional properties are allowed** |
+| data.postId | integer | The id of the post which likes count has been updated. | - | - | **required** |
+| data.totalCount | integer | The number of likes for this post. | - | - | **required** |
+
+> Examples of payload _(generated)_
+
+```json
+{
+ "type": "string",
+ "data": {
+ "postId": 0,
+ "totalCount": 0
+ }
+}
+```
+
+
+
+### SUB `post/liked` Operation
+
+* Available only on servers: [mosquitto](#mosquitto-server)
+
+#### Message `notifyPostLiked`
+
+##### Payload
+
+| Name | Type | Description | Value | Constraints | Notes |
+|---|---|---|---|---|---|
+| (root) | object | - | - | - | **additional properties are NOT allowed** |
+| postId | integer | The id of the post that has been liked. | - | - | **required** |
+| userId | integer | The user who liked the post. | - | - | **required** |
+
+> Examples of payload _(generated)_
+
+```json
+{
+ "postId": 0,
+ "userId": 0
+}
+```
+
+
+
diff --git a/jest.config.js b/jest.config.js
index 426dca83c..9682d97af 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -13,5 +13,9 @@ export default {
},
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1',
+ '^nimma/legacy$': '/node_modules/nimma/dist/legacy/cjs/index.js',
+ '^nimma/fallbacks$':
+ '/node_modules/nimma/dist/legacy/cjs/fallbacks/index.js',
},
-}
\ No newline at end of file
+ transform: {},
+}
diff --git a/package-lock.json b/package-lock.json
index 9d54ca490..88d9fee15 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,17 +1,17 @@
{
"name": "@asyncapi/glee",
- "version": "0.24.0",
+ "version": "0.26.7",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@asyncapi/glee",
- "version": "0.24.0",
+ "version": "0.26.7",
"license": "Apache-2.0",
"dependencies": {
- "@asyncapi/generator": "^1.9.18",
- "@asyncapi/html-template": "^0.24.10",
- "@asyncapi/markdown-template": "^1.3.2",
+ "@asyncapi/generator": "^1.13.1",
+ "@asyncapi/html-template": "^0.28.4",
+ "@asyncapi/markdown-template": "^1.3.3",
"@asyncapi/parser": "^1.13.1",
"ajv": "^6.12.6",
"async": "^3.2.0",
@@ -120,20 +120,17 @@
}
},
"node_modules/@asyncapi/generator": {
- "version": "1.9.18",
- "resolved": "https://registry.npmjs.org/@asyncapi/generator/-/generator-1.9.18.tgz",
- "integrity": "sha512-mxduTRaU1tPVEKDY0cv7ysnYoqGdVFwRhr2V6Q1J1Um8VDpTZWiRdoPMoauyGtRQ4+udlKayJd3B2G14K7Vw1A==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/@asyncapi/generator/-/generator-1.13.1.tgz",
+ "integrity": "sha512-+6pQE9OlXue79AO0hMJwlzwH48vED/rPGU1NAQlDyuTvo8599JTd3zUPFDafExRn/arQltJPDE+Z5jtNBifXjw==",
"dependencies": {
- "@asyncapi/avro-schema-parser": "^1.1.0",
"@asyncapi/generator-react-sdk": "^0.2.23",
- "@asyncapi/openapi-schema-parser": "^2.0.3",
- "@asyncapi/parser": "^1.18.0",
- "@asyncapi/raml-dt-schema-parser": "^2.0.1",
+ "@asyncapi/parser": "2.1.0",
"@npmcli/arborist": "^2.2.4",
- "ajv": "^6.10.2",
+ "@smoya/multi-parser": "^4.0.0",
+ "ajv": "^8.12.0",
"chokidar": "^3.4.0",
"commander": "^6.1.0",
- "conventional-changelog-conventionalcommits": "^5.0.0",
"filenamify": "^4.1.0",
"fs.extra": "^1.3.2",
"global-dirs": "^3.0.0",
@@ -217,6 +214,151 @@
}
},
"node_modules/@asyncapi/generator-react-sdk": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/generator-react-sdk/-/generator-react-sdk-1.0.0.tgz",
+ "integrity": "sha512-QK88mxnxk1ptgXJ4Os2GoS+G/lR8n4zAdtKRvDyPRZzoUZG9/ACtlGhJam3+8DB6H5vZ6zb5Ak56Y6OTDRTX5w==",
+ "dependencies": {
+ "@asyncapi/parser": "^2.1.0-next-major-spec.9",
+ "@babel/core": "7.12.9",
+ "@babel/preset-env": "^7.12.7",
+ "@babel/preset-react": "^7.12.7",
+ "@rollup/plugin-babel": "^5.2.1",
+ "babel-plugin-source-map-support": "^2.1.3",
+ "prop-types": "^15.7.2",
+ "react": "^17.0.1",
+ "rollup": "^2.60.1",
+ "source-map-support": "^0.5.19"
+ }
+ },
+ "node_modules/@asyncapi/generator-react-sdk/node_modules/@asyncapi/parser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz",
+ "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==",
+ "dependencies": {
+ "@asyncapi/specs": "^5.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ }
+ },
+ "node_modules/@asyncapi/generator-react-sdk/node_modules/@asyncapi/specs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz",
+ "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "node_modules/@asyncapi/generator-react-sdk/node_modules/@babel/core": {
+ "version": "7.12.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz",
+ "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==",
+ "dependencies": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/generator": "^7.12.5",
+ "@babel/helper-module-transforms": "^7.12.1",
+ "@babel/helpers": "^7.12.5",
+ "@babel/parser": "^7.12.7",
+ "@babel/template": "^7.12.7",
+ "@babel/traverse": "^7.12.9",
+ "@babel/types": "^7.12.7",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.1",
+ "json5": "^2.1.2",
+ "lodash": "^4.17.19",
+ "resolve": "^1.3.2",
+ "semver": "^5.4.1",
+ "source-map": "^0.5.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@asyncapi/generator-react-sdk/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@asyncapi/generator-react-sdk/node_modules/ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "peerDependencies": {
+ "ajv": "^8.0.1"
+ }
+ },
+ "node_modules/@asyncapi/generator-react-sdk/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@asyncapi/generator-react-sdk/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node_modules/@asyncapi/generator-react-sdk/node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@asyncapi/generator-react-sdk/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/@asyncapi/generator/node_modules/@asyncapi/generator-react-sdk": {
"version": "0.2.25",
"resolved": "https://registry.npmjs.org/@asyncapi/generator-react-sdk/-/generator-react-sdk-0.2.25.tgz",
"integrity": "sha512-zmVdNaMPTDoUHnAIp33+dkGspEuLIi3BaaHFXY5lmL1XmaD9bU1rK/HLpNKhV32Os6Wp50CuskOwDsoRCeSGow==",
@@ -233,7 +375,86 @@
"source-map-support": "^0.5.19"
}
},
- "node_modules/@asyncapi/generator-react-sdk/node_modules/@babel/core": {
+ "node_modules/@asyncapi/generator/node_modules/@asyncapi/generator-react-sdk/node_modules/@asyncapi/parser": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.18.1.tgz",
+ "integrity": "sha512-7sU9DajLV+vA2vShTYmD5lbtbTY6TOcGxB4Z4IcpRp8x5pejOsN32iU05eIYCnuamsi5SMscFxoi6fIO2vPK3Q==",
+ "dependencies": {
+ "@apidevtools/json-schema-ref-parser": "^9.0.6",
+ "@asyncapi/specs": "^4.1.1",
+ "@fmvilas/pseudo-yaml-ast": "^0.3.1",
+ "ajv": "^6.10.1",
+ "js-yaml": "^3.13.1",
+ "json-to-ast": "^2.1.0",
+ "lodash.clonedeep": "^4.5.0",
+ "node-fetch": "^2.6.0",
+ "tiny-merge-patch": "^0.1.2"
+ }
+ },
+ "node_modules/@asyncapi/generator/node_modules/@asyncapi/generator-react-sdk/node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@asyncapi/generator/node_modules/@asyncapi/generator-react-sdk/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "node_modules/@asyncapi/generator/node_modules/@asyncapi/parser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz",
+ "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==",
+ "dependencies": {
+ "@asyncapi/specs": "^5.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ }
+ },
+ "node_modules/@asyncapi/generator/node_modules/@asyncapi/parser/node_modules/@asyncapi/specs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz",
+ "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "node_modules/@asyncapi/generator/node_modules/@asyncapi/parser/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@asyncapi/generator/node_modules/@babel/core": {
"version": "7.12.9",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz",
"integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==",
@@ -263,22 +484,70 @@
"url": "https://opencollective.com/babel"
}
},
- "node_modules/@asyncapi/generator-react-sdk/node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "node_modules/@asyncapi/generator/node_modules/@babel/core/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"bin": {
"semver": "bin/semver"
}
},
+ "node_modules/@asyncapi/generator/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@asyncapi/generator/node_modules/ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "peerDependencies": {
+ "ajv": "^8.0.1"
+ }
+ },
+ "node_modules/@asyncapi/generator/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node_modules/@asyncapi/generator/node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@asyncapi/html-template": {
- "version": "0.24.10",
- "resolved": "https://registry.npmjs.org/@asyncapi/html-template/-/html-template-0.24.10.tgz",
- "integrity": "sha512-hw2/iwNvkUM5Pq1+T8roA6gAVI6MhlVSTR8qMbsxcTemKuX9d5NFRfOwNKYfmGv1pbIFR+FiF6ha60AvJmuYsg==",
+ "version": "0.28.4",
+ "resolved": "https://registry.npmjs.org/@asyncapi/html-template/-/html-template-0.28.4.tgz",
+ "integrity": "sha512-gzUX9hv+zRz+zVZ6ccvWMVmSAa/AbI9xKnYcrIWT5CJototHsTg9Wx+Y0d/nWCZi6QE/lW6HSs77mbUbnn/nFg==",
"dependencies": {
- "@asyncapi/parser": "^1.15.0",
- "@asyncapi/react-component": "^1.0.0-next.37",
+ "@asyncapi/parser": "^1.17.0",
+ "@asyncapi/react-component": "1.0.0-next.47",
"highlight.js": "10.7.3",
+ "node-fetch": "^2.6.7",
"puppeteer": "^14.1.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
@@ -286,12 +555,12 @@
}
},
"node_modules/@asyncapi/markdown-template": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@asyncapi/markdown-template/-/markdown-template-1.3.2.tgz",
- "integrity": "sha512-C3oKLu+v1Krvc4kciQIygoQumft829ayq20AjAcbT7sIN1f9cB7Xla/tYe1aCLE+7XMJuQrLCM2qpsx3iRI2dA==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@asyncapi/markdown-template/-/markdown-template-1.3.3.tgz",
+ "integrity": "sha512-7gRo1yVMf6TCrOJOi8q8HxkZOJGWtQHQOElXTi9gUbl710b/3SYxlPN8hiS8JuX7d9oOD5JHg0MvRXlq4YxiLw==",
"dependencies": {
"@asyncapi/generator-filters": "^2.1.0",
- "@asyncapi/generator-react-sdk": "^0.2.23",
+ "@asyncapi/generator-react-sdk": "^1.0.0",
"@asyncapi/parser": "^2.1.0",
"openapi-sampler": "^1.3.0",
"yaml": "^1.10.2"
@@ -412,13 +681,205 @@
"tiny-merge-patch": "^0.1.2"
}
},
- "node_modules/@asyncapi/raml-dt-schema-parser": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@asyncapi/raml-dt-schema-parser/-/raml-dt-schema-parser-2.0.1.tgz",
- "integrity": "sha512-R7i35IbVbvGyPNm3t5ToPDtYUwDtVjWF/oCgCVPK/wLpNQ0uVZX5Y0JFhO78VUHEep0NKuuI2CZh6oLz0ebMVQ==",
+ "node_modules/@asyncapi/protobuf-schema-parser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/protobuf-schema-parser/-/protobuf-schema-parser-3.0.0.tgz",
+ "integrity": "sha512-kjoLrll611K+xYC/iBUlSnZsCHbrhL999ItVHZhObUOjUB991XgonqbSAaihiiDXTYgceOLhJKAN5llkV/LOOA==",
"dependencies": {
- "js-yaml": "^3.13.1",
- "ramldt2jsonschema": "^1.1.0"
+ "@asyncapi/parser": "^2.1.0",
+ "@types/protocol-buffers-schema": "^3.4.1",
+ "protocol-buffers-schema": "^3.6.0"
+ }
+ },
+ "node_modules/@asyncapi/protobuf-schema-parser/node_modules/@asyncapi/parser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz",
+ "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==",
+ "dependencies": {
+ "@asyncapi/specs": "^5.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ }
+ },
+ "node_modules/@asyncapi/protobuf-schema-parser/node_modules/@asyncapi/specs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz",
+ "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "node_modules/@asyncapi/protobuf-schema-parser/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@asyncapi/protobuf-schema-parser/node_modules/ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "peerDependencies": {
+ "ajv": "^8.0.1"
+ }
+ },
+ "node_modules/@asyncapi/protobuf-schema-parser/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@asyncapi/protobuf-schema-parser/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node_modules/@asyncapi/protobuf-schema-parser/node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@asyncapi/raml-dt-schema-parser": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@asyncapi/raml-dt-schema-parser/-/raml-dt-schema-parser-4.0.4.tgz",
+ "integrity": "sha512-kKam4jwYYdwqoV5zkEb3YEb8VOrN0785fc4ByazxRd+BT/RnkQTLspjTY/akdDs9DLmU4ChP73Z0vqpek6wojA==",
+ "dependencies": {
+ "@asyncapi/parser": "^2.1.0",
+ "js-yaml": "^4.1.0",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ }
+ },
+ "node_modules/@asyncapi/raml-dt-schema-parser/node_modules/@asyncapi/parser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz",
+ "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==",
+ "dependencies": {
+ "@asyncapi/specs": "^5.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ }
+ },
+ "node_modules/@asyncapi/raml-dt-schema-parser/node_modules/@asyncapi/specs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz",
+ "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "node_modules/@asyncapi/raml-dt-schema-parser/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@asyncapi/raml-dt-schema-parser/node_modules/ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "peerDependencies": {
+ "ajv": "^8.0.1"
+ }
+ },
+ "node_modules/@asyncapi/raml-dt-schema-parser/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@asyncapi/raml-dt-schema-parser/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node_modules/@asyncapi/raml-dt-schema-parser/node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
}
},
"node_modules/@asyncapi/react-component": {
@@ -3441,65 +3902,190 @@
"@sinonjs/commons": "^1.7.0"
}
},
- "node_modules/@socket.io/component-emitter": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
- "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
+ "node_modules/@smoya/multi-parser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smoya/multi-parser/-/multi-parser-4.0.0.tgz",
+ "integrity": "sha512-NgPxSaB3YqwrIVe7AtQ/wh9I2J0BHR4lP0PdqirYYrc0XXRwdDjIRrywEc2jjECWsL7tuGU/QtGMGIVaJe6ZYA==",
+ "dependencies": {
+ "@asyncapi/avro-schema-parser": "^3.0.3",
+ "@asyncapi/openapi-schema-parser": "^3.0.4",
+ "@asyncapi/protobuf-schema-parser": "^3.0.0",
+ "@asyncapi/raml-dt-schema-parser": "^4.0.4",
+ "parserv2": "npm:@asyncapi/parser@^2.1.0",
+ "parserv3": "npm:@asyncapi/parser@^3.0.0-next-major-spec.3"
+ }
},
- "node_modules/@stoplight/json": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.0.tgz",
- "integrity": "sha512-5O0apqJ/t4sIevXCO3SBN9AHCEKKR/Zb4gaj7wYe5863jme9g02Q0n/GhM7ZCALkL+vGPTe4ZzTETP8TFtsw3g==",
+ "node_modules/@smoya/multi-parser/node_modules/@asyncapi/avro-schema-parser": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@asyncapi/avro-schema-parser/-/avro-schema-parser-3.0.3.tgz",
+ "integrity": "sha512-XprbDYPFJ0nc963hPCjbEmM3iu6ypKg/70EFVl0MZJCLbLw/+gBbPy95uV3Qaofm5UQgSI+aTobGhc8rMre4VA==",
"dependencies": {
- "@stoplight/ordered-object-literal": "^1.0.3",
- "@stoplight/path": "^1.3.2",
- "@stoplight/types": "^13.6.0",
- "jsonc-parser": "~2.2.1",
- "lodash": "^4.17.21",
- "safe-stable-stringify": "^1.1"
- },
- "engines": {
- "node": ">=8.3.0"
+ "@asyncapi/parser": "^2.1.0",
+ "@types/json-schema": "^7.0.11",
+ "avsc": "^5.7.6"
}
},
- "node_modules/@stoplight/json-ref-readers": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@stoplight/json-ref-readers/-/json-ref-readers-1.2.2.tgz",
- "integrity": "sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==",
+ "node_modules/@smoya/multi-parser/node_modules/@asyncapi/openapi-schema-parser": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@asyncapi/openapi-schema-parser/-/openapi-schema-parser-3.0.4.tgz",
+ "integrity": "sha512-nfZbL3dTpIQ3K+/V05FBpgOPi7dDWZkqZG8e7pKwtNhwZ0YLBFWTw6RpocztlBlcieFggxZqLm4BT5I1cQbK+Q==",
"dependencies": {
- "node-fetch": "^2.6.0",
- "tslib": "^1.14.1"
- },
- "engines": {
- "node": ">=8.3.0"
+ "@asyncapi/parser": "^2.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1"
}
},
- "node_modules/@stoplight/json-ref-resolver": {
- "version": "3.1.6",
- "resolved": "https://registry.npmjs.org/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.6.tgz",
- "integrity": "sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==",
+ "node_modules/@smoya/multi-parser/node_modules/@asyncapi/parser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz",
+ "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==",
"dependencies": {
- "@stoplight/json": "^3.21.0",
- "@stoplight/path": "^1.3.2",
- "@stoplight/types": "^12.3.0 || ^13.0.0",
+ "@asyncapi/specs": "^5.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
"@types/urijs": "^1.19.19",
- "dependency-graph": "~0.11.0",
- "fast-memoize": "^2.5.2",
- "immer": "^9.0.6",
- "lodash": "^4.17.21",
- "tslib": "^2.6.0",
- "urijs": "^1.19.11"
- },
- "engines": {
- "node": ">=8.3.0"
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
}
},
- "node_modules/@stoplight/json-ref-resolver/node_modules/tslib": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
- "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
- },
- "node_modules/@stoplight/json/node_modules/jsonc-parser": {
+ "node_modules/@smoya/multi-parser/node_modules/@asyncapi/specs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz",
+ "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "node_modules/@smoya/multi-parser/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@smoya/multi-parser/node_modules/ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "peerDependencies": {
+ "ajv": "^8.0.1"
+ }
+ },
+ "node_modules/@smoya/multi-parser/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/@smoya/multi-parser/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node_modules/@smoya/multi-parser/node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
+ "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg=="
+ },
+ "node_modules/@stoplight/json": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.0.tgz",
+ "integrity": "sha512-5O0apqJ/t4sIevXCO3SBN9AHCEKKR/Zb4gaj7wYe5863jme9g02Q0n/GhM7ZCALkL+vGPTe4ZzTETP8TFtsw3g==",
+ "dependencies": {
+ "@stoplight/ordered-object-literal": "^1.0.3",
+ "@stoplight/path": "^1.3.2",
+ "@stoplight/types": "^13.6.0",
+ "jsonc-parser": "~2.2.1",
+ "lodash": "^4.17.21",
+ "safe-stable-stringify": "^1.1"
+ },
+ "engines": {
+ "node": ">=8.3.0"
+ }
+ },
+ "node_modules/@stoplight/json-ref-readers": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@stoplight/json-ref-readers/-/json-ref-readers-1.2.2.tgz",
+ "integrity": "sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==",
+ "dependencies": {
+ "node-fetch": "^2.6.0",
+ "tslib": "^1.14.1"
+ },
+ "engines": {
+ "node": ">=8.3.0"
+ }
+ },
+ "node_modules/@stoplight/json-ref-resolver": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.6.tgz",
+ "integrity": "sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==",
+ "dependencies": {
+ "@stoplight/json": "^3.21.0",
+ "@stoplight/path": "^1.3.2",
+ "@stoplight/types": "^12.3.0 || ^13.0.0",
+ "@types/urijs": "^1.19.19",
+ "dependency-graph": "~0.11.0",
+ "fast-memoize": "^2.5.2",
+ "immer": "^9.0.6",
+ "lodash": "^4.17.21",
+ "tslib": "^2.6.0",
+ "urijs": "^1.19.11"
+ },
+ "engines": {
+ "node": ">=8.3.0"
+ }
+ },
+ "node_modules/@stoplight/json-ref-resolver/node_modules/tslib": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
+ "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig=="
+ },
+ "node_modules/@stoplight/json/node_modules/jsonc-parser": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz",
"integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w=="
@@ -4077,6 +4663,14 @@
"integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==",
"dev": true
},
+ "node_modules/@types/protocol-buffers-schema": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@types/protocol-buffers-schema/-/protocol-buffers-schema-3.4.1.tgz",
+ "integrity": "sha512-CBpqIDa1+/F3Z5EL8Uz/t+1eygIinJiMS37KP8O9TN+n38OlckYQhU+t/vYpsF7XhSDuiZS0zAJyfRrAeDKDUw==",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/qs": {
"version": "6.9.7",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
@@ -12703,88 +13297,270 @@
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
},
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/parserv2": {
+ "name": "@asyncapi/parser",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz",
+ "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==",
+ "dependencies": {
+ "@asyncapi/specs": "^5.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
}
},
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "engines": {
- "node": ">=8"
+ "node_modules/parserv2/node_modules/@asyncapi/specs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz",
+ "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.11"
}
},
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
- },
- "node_modules/path-to-regexp": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
- "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw=="
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
- "engines": {
- "node": ">=8"
+ "node_modules/parserv2/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/pause-stream": {
- "version": "0.0.11",
- "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
- "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==",
- "dev": true,
- "dependencies": {
- "through": "~2.3"
+ "node_modules/parserv2/node_modules/ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "peerDependencies": {
+ "ajv": "^8.0.1"
}
},
- "node_modules/peek-readable": {
+ "node_modules/parserv2/node_modules/js-yaml": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz",
- "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==",
- "engines": {
- "node": ">=8"
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/pegjs": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz",
- "integrity": "sha512-qI5+oFNEGi3L5HAxDwN2LA4Gg7irF70Zs25edhjld9QemOgp0CbvMtbFcMvFtEo1OityPrcCzkQFB8JP/hxgow==",
- "dev": true,
- "bin": {
- "pegjs": "bin/pegjs"
+ "node_modules/parserv2/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node_modules/parserv2/node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
},
"engines": {
- "node": ">=0.10"
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
}
},
- "node_modules/pend": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
- },
- "node_modules/performance-now": {
+ "node_modules/parserv3": {
+ "name": "@asyncapi/parser",
+ "version": "3.0.0-next-major-spec.3",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-3.0.0-next-major-spec.3.tgz",
+ "integrity": "sha512-LCrAQqJpGxraMyU2k1Nh1X6Q1dz7a/YhTRRFFrQHOEo+TUT/kRdoUkRDP++e58dO7h9MBN+/hZK5TaqE+/jQiw==",
+ "dependencies": {
+ "@asyncapi/specs": "^6.0.0-next-major-spec.6",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ }
+ },
+ "node_modules/parserv3/node_modules/@asyncapi/specs": {
+ "version": "6.0.0-next-major-spec.8",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-6.0.0-next-major-spec.8.tgz",
+ "integrity": "sha512-WVhzeJepkqO6abDprz9bk9zR/ESidanQncPP7jFRUJQ71ED4/XQMjaSKLE5MB09eUUZoY5EqoccUQJWfc54SMg==",
+ "dependencies": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "node_modules/parserv3/node_modules/ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/parserv3/node_modules/ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "peerDependencies": {
+ "ajv": "^8.0.1"
+ }
+ },
+ "node_modules/parserv3/node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/parserv3/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node_modules/parserv3/node_modules/node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "node_modules/path-to-regexp": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz",
+ "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw=="
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pause-stream": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
+ "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==",
+ "dev": true,
+ "dependencies": {
+ "through": "~2.3"
+ }
+ },
+ "node_modules/peek-readable": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz",
+ "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/pegjs": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz",
+ "integrity": "sha512-qI5+oFNEGi3L5HAxDwN2LA4Gg7irF70Zs25edhjld9QemOgp0CbvMtbFcMvFtEo1OityPrcCzkQFB8JP/hxgow==",
+ "dev": true,
+ "bin": {
+ "pegjs": "bin/pegjs"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
+ },
+ "node_modules/performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
@@ -13047,6 +13823,11 @@
"react-is": "^16.13.1"
}
},
+ "node_modules/protocol-buffers-schema": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
+ "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
+ },
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
@@ -16755,20 +17536,17 @@
}
},
"@asyncapi/generator": {
- "version": "1.9.18",
- "resolved": "https://registry.npmjs.org/@asyncapi/generator/-/generator-1.9.18.tgz",
- "integrity": "sha512-mxduTRaU1tPVEKDY0cv7ysnYoqGdVFwRhr2V6Q1J1Um8VDpTZWiRdoPMoauyGtRQ4+udlKayJd3B2G14K7Vw1A==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/@asyncapi/generator/-/generator-1.13.1.tgz",
+ "integrity": "sha512-+6pQE9OlXue79AO0hMJwlzwH48vED/rPGU1NAQlDyuTvo8599JTd3zUPFDafExRn/arQltJPDE+Z5jtNBifXjw==",
"requires": {
- "@asyncapi/avro-schema-parser": "^1.1.0",
"@asyncapi/generator-react-sdk": "^0.2.23",
- "@asyncapi/openapi-schema-parser": "^2.0.3",
- "@asyncapi/parser": "^1.18.0",
- "@asyncapi/raml-dt-schema-parser": "^2.0.1",
+ "@asyncapi/parser": "2.1.0",
"@npmcli/arborist": "^2.2.4",
- "ajv": "^6.10.2",
+ "@smoya/multi-parser": "^4.0.0",
+ "ajv": "^8.12.0",
"chokidar": "^3.4.0",
"commander": "^6.1.0",
- "conventional-changelog-conventionalcommits": "^5.0.0",
"filenamify": "^4.1.0",
"fs.extra": "^1.3.2",
"global-dirs": "^3.0.0",
@@ -16787,6 +17565,161 @@
"source-map-support": "^0.5.19",
"ts-node": "^10.9.1",
"typescript": "^4.9.3"
+ },
+ "dependencies": {
+ "@asyncapi/generator-react-sdk": {
+ "version": "0.2.25",
+ "resolved": "https://registry.npmjs.org/@asyncapi/generator-react-sdk/-/generator-react-sdk-0.2.25.tgz",
+ "integrity": "sha512-zmVdNaMPTDoUHnAIp33+dkGspEuLIi3BaaHFXY5lmL1XmaD9bU1rK/HLpNKhV32Os6Wp50CuskOwDsoRCeSGow==",
+ "requires": {
+ "@asyncapi/parser": "^1.15.1",
+ "@babel/core": "7.12.9",
+ "@babel/preset-env": "^7.12.7",
+ "@babel/preset-react": "^7.12.7",
+ "@rollup/plugin-babel": "^5.2.1",
+ "babel-plugin-source-map-support": "^2.1.3",
+ "prop-types": "^15.7.2",
+ "react": "^17.0.1",
+ "rollup": "^2.60.1",
+ "source-map-support": "^0.5.19"
+ },
+ "dependencies": {
+ "@asyncapi/parser": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-1.18.1.tgz",
+ "integrity": "sha512-7sU9DajLV+vA2vShTYmD5lbtbTY6TOcGxB4Z4IcpRp8x5pejOsN32iU05eIYCnuamsi5SMscFxoi6fIO2vPK3Q==",
+ "requires": {
+ "@apidevtools/json-schema-ref-parser": "^9.0.6",
+ "@asyncapi/specs": "^4.1.1",
+ "@fmvilas/pseudo-yaml-ast": "^0.3.1",
+ "ajv": "^6.10.1",
+ "js-yaml": "^3.13.1",
+ "json-to-ast": "^2.1.0",
+ "lodash.clonedeep": "^4.5.0",
+ "node-fetch": "^2.6.0",
+ "tiny-merge-patch": "^0.1.2"
+ }
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ }
+ }
+ },
+ "@asyncapi/parser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz",
+ "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==",
+ "requires": {
+ "@asyncapi/specs": "^5.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ },
+ "dependencies": {
+ "@asyncapi/specs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz",
+ "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==",
+ "requires": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ }
+ }
+ },
+ "@babel/core": {
+ "version": "7.12.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz",
+ "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==",
+ "requires": {
+ "@babel/code-frame": "^7.10.4",
+ "@babel/generator": "^7.12.5",
+ "@babel/helper-module-transforms": "^7.12.1",
+ "@babel/helpers": "^7.12.5",
+ "@babel/parser": "^7.12.7",
+ "@babel/template": "^7.12.7",
+ "@babel/traverse": "^7.12.9",
+ "@babel/types": "^7.12.7",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.1",
+ "json5": "^2.1.2",
+ "lodash": "^4.17.19",
+ "resolve": "^1.3.2",
+ "semver": "^5.4.1",
+ "source-map": "^0.5.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
+ }
+ }
+ },
+ "ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "requires": {}
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
+ }
}
},
"@asyncapi/generator-filters": {
@@ -16843,11 +17776,11 @@
}
},
"@asyncapi/generator-react-sdk": {
- "version": "0.2.25",
- "resolved": "https://registry.npmjs.org/@asyncapi/generator-react-sdk/-/generator-react-sdk-0.2.25.tgz",
- "integrity": "sha512-zmVdNaMPTDoUHnAIp33+dkGspEuLIi3BaaHFXY5lmL1XmaD9bU1rK/HLpNKhV32Os6Wp50CuskOwDsoRCeSGow==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/generator-react-sdk/-/generator-react-sdk-1.0.0.tgz",
+ "integrity": "sha512-QK88mxnxk1ptgXJ4Os2GoS+G/lR8n4zAdtKRvDyPRZzoUZG9/ACtlGhJam3+8DB6H5vZ6zb5Ak56Y6OTDRTX5w==",
"requires": {
- "@asyncapi/parser": "^1.15.1",
+ "@asyncapi/parser": "^2.1.0-next-major-spec.9",
"@babel/core": "7.12.9",
"@babel/preset-env": "^7.12.7",
"@babel/preset-react": "^7.12.7",
@@ -16859,6 +17792,38 @@
"source-map-support": "^0.5.19"
},
"dependencies": {
+ "@asyncapi/parser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz",
+ "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==",
+ "requires": {
+ "@asyncapi/specs": "^5.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ }
+ },
+ "@asyncapi/specs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz",
+ "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==",
+ "requires": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
"@babel/core": {
"version": "7.12.9",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz",
@@ -16882,21 +17847,60 @@
"source-map": "^0.5.0"
}
},
+ "ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "requires": {}
+ },
+ "js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
+ },
"semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
}
}
},
"@asyncapi/html-template": {
- "version": "0.24.10",
- "resolved": "https://registry.npmjs.org/@asyncapi/html-template/-/html-template-0.24.10.tgz",
- "integrity": "sha512-hw2/iwNvkUM5Pq1+T8roA6gAVI6MhlVSTR8qMbsxcTemKuX9d5NFRfOwNKYfmGv1pbIFR+FiF6ha60AvJmuYsg==",
+ "version": "0.28.4",
+ "resolved": "https://registry.npmjs.org/@asyncapi/html-template/-/html-template-0.28.4.tgz",
+ "integrity": "sha512-gzUX9hv+zRz+zVZ6ccvWMVmSAa/AbI9xKnYcrIWT5CJototHsTg9Wx+Y0d/nWCZi6QE/lW6HSs77mbUbnn/nFg==",
"requires": {
- "@asyncapi/parser": "^1.15.0",
- "@asyncapi/react-component": "^1.0.0-next.37",
+ "@asyncapi/parser": "^1.17.0",
+ "@asyncapi/react-component": "1.0.0-next.47",
"highlight.js": "10.7.3",
+ "node-fetch": "^2.6.7",
"puppeteer": "^14.1.0",
"react": "^17.0.2",
"react-dom": "^17.0.2",
@@ -16904,12 +17908,12 @@
}
},
"@asyncapi/markdown-template": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@asyncapi/markdown-template/-/markdown-template-1.3.2.tgz",
- "integrity": "sha512-C3oKLu+v1Krvc4kciQIygoQumft829ayq20AjAcbT7sIN1f9cB7Xla/tYe1aCLE+7XMJuQrLCM2qpsx3iRI2dA==",
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@asyncapi/markdown-template/-/markdown-template-1.3.3.tgz",
+ "integrity": "sha512-7gRo1yVMf6TCrOJOi8q8HxkZOJGWtQHQOElXTi9gUbl710b/3SYxlPN8hiS8JuX7d9oOD5JHg0MvRXlq4YxiLw==",
"requires": {
"@asyncapi/generator-filters": "^2.1.0",
- "@asyncapi/generator-react-sdk": "^0.2.23",
+ "@asyncapi/generator-react-sdk": "^1.0.0",
"@asyncapi/parser": "^2.1.0",
"openapi-sampler": "^1.3.0",
"yaml": "^1.10.2"
@@ -17012,13 +18016,169 @@
"tiny-merge-patch": "^0.1.2"
}
},
+ "@asyncapi/protobuf-schema-parser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/protobuf-schema-parser/-/protobuf-schema-parser-3.0.0.tgz",
+ "integrity": "sha512-kjoLrll611K+xYC/iBUlSnZsCHbrhL999ItVHZhObUOjUB991XgonqbSAaihiiDXTYgceOLhJKAN5llkV/LOOA==",
+ "requires": {
+ "@asyncapi/parser": "^2.1.0",
+ "@types/protocol-buffers-schema": "^3.4.1",
+ "protocol-buffers-schema": "^3.6.0"
+ },
+ "dependencies": {
+ "@asyncapi/parser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz",
+ "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==",
+ "requires": {
+ "@asyncapi/specs": "^5.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ }
+ },
+ "@asyncapi/specs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz",
+ "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==",
+ "requires": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "requires": {}
+ },
+ "js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
+ }
+ }
+ },
"@asyncapi/raml-dt-schema-parser": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@asyncapi/raml-dt-schema-parser/-/raml-dt-schema-parser-2.0.1.tgz",
- "integrity": "sha512-R7i35IbVbvGyPNm3t5ToPDtYUwDtVjWF/oCgCVPK/wLpNQ0uVZX5Y0JFhO78VUHEep0NKuuI2CZh6oLz0ebMVQ==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@asyncapi/raml-dt-schema-parser/-/raml-dt-schema-parser-4.0.4.tgz",
+ "integrity": "sha512-kKam4jwYYdwqoV5zkEb3YEb8VOrN0785fc4ByazxRd+BT/RnkQTLspjTY/akdDs9DLmU4ChP73Z0vqpek6wojA==",
"requires": {
- "js-yaml": "^3.13.1",
- "ramldt2jsonschema": "^1.1.0"
+ "@asyncapi/parser": "^2.1.0",
+ "js-yaml": "^4.1.0",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ },
+ "dependencies": {
+ "@asyncapi/parser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz",
+ "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==",
+ "requires": {
+ "@asyncapi/specs": "^5.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ }
+ },
+ "@asyncapi/specs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz",
+ "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==",
+ "requires": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "requires": {}
+ },
+ "js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
+ }
}
},
"@asyncapi/react-component": {
@@ -19215,6 +20375,113 @@
"@sinonjs/commons": "^1.7.0"
}
},
+ "@smoya/multi-parser": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@smoya/multi-parser/-/multi-parser-4.0.0.tgz",
+ "integrity": "sha512-NgPxSaB3YqwrIVe7AtQ/wh9I2J0BHR4lP0PdqirYYrc0XXRwdDjIRrywEc2jjECWsL7tuGU/QtGMGIVaJe6ZYA==",
+ "requires": {
+ "@asyncapi/avro-schema-parser": "^3.0.3",
+ "@asyncapi/openapi-schema-parser": "^3.0.4",
+ "@asyncapi/protobuf-schema-parser": "^3.0.0",
+ "@asyncapi/raml-dt-schema-parser": "^4.0.4",
+ "parserv2": "npm:@asyncapi/parser@^2.1.0",
+ "parserv3": "npm:@asyncapi/parser@^3.0.0-next-major-spec.3"
+ },
+ "dependencies": {
+ "@asyncapi/avro-schema-parser": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@asyncapi/avro-schema-parser/-/avro-schema-parser-3.0.3.tgz",
+ "integrity": "sha512-XprbDYPFJ0nc963hPCjbEmM3iu6ypKg/70EFVl0MZJCLbLw/+gBbPy95uV3Qaofm5UQgSI+aTobGhc8rMre4VA==",
+ "requires": {
+ "@asyncapi/parser": "^2.1.0",
+ "@types/json-schema": "^7.0.11",
+ "avsc": "^5.7.6"
+ }
+ },
+ "@asyncapi/openapi-schema-parser": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@asyncapi/openapi-schema-parser/-/openapi-schema-parser-3.0.4.tgz",
+ "integrity": "sha512-nfZbL3dTpIQ3K+/V05FBpgOPi7dDWZkqZG8e7pKwtNhwZ0YLBFWTw6RpocztlBlcieFggxZqLm4BT5I1cQbK+Q==",
+ "requires": {
+ "@asyncapi/parser": "^2.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1"
+ }
+ },
+ "@asyncapi/parser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz",
+ "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==",
+ "requires": {
+ "@asyncapi/specs": "^5.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ }
+ },
+ "@asyncapi/specs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz",
+ "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==",
+ "requires": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "requires": {}
+ },
+ "js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
+ }
+ }
+ },
"@socket.io/component-emitter": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz",
@@ -19778,6 +21045,14 @@
"integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==",
"dev": true
},
+ "@types/protocol-buffers-schema": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/@types/protocol-buffers-schema/-/protocol-buffers-schema-3.4.1.tgz",
+ "integrity": "sha512-CBpqIDa1+/F3Z5EL8Uz/t+1eygIinJiMS37KP8O9TN+n38OlckYQhU+t/vYpsF7XhSDuiZS0zAJyfRrAeDKDUw==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@types/qs": {
"version": "6.9.7",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
@@ -26341,6 +27616,150 @@
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
},
+ "parserv2": {
+ "version": "npm:@asyncapi/parser@2.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-2.1.0.tgz",
+ "integrity": "sha512-78jjN3eW4ZmgJEa6Ap15lofzADCeItO4wHcAY2Jod3qLB1xf1zFDZQdtm3VSHYLeLhwoC1A33bAtzEf7M5P2bg==",
+ "requires": {
+ "@asyncapi/specs": "^5.1.0",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ },
+ "dependencies": {
+ "@asyncapi/specs": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-5.1.0.tgz",
+ "integrity": "sha512-yffhETqehkim43luMnPKOwzY0D0YtU4bKpORIXIaid6p5Y5kDLrMGJaEPkNieQp03HMjhjFrnUPtT8kvqe0+aQ==",
+ "requires": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "requires": {}
+ },
+ "js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
+ }
+ }
+ },
+ "parserv3": {
+ "version": "npm:@asyncapi/parser@3.0.0-next-major-spec.3",
+ "resolved": "https://registry.npmjs.org/@asyncapi/parser/-/parser-3.0.0-next-major-spec.3.tgz",
+ "integrity": "sha512-LCrAQqJpGxraMyU2k1Nh1X6Q1dz7a/YhTRRFFrQHOEo+TUT/kRdoUkRDP++e58dO7h9MBN+/hZK5TaqE+/jQiw==",
+ "requires": {
+ "@asyncapi/specs": "^6.0.0-next-major-spec.6",
+ "@openapi-contrib/openapi-schema-to-json-schema": "~3.2.0",
+ "@stoplight/json-ref-resolver": "^3.1.5",
+ "@stoplight/spectral-core": "^1.16.1",
+ "@stoplight/spectral-functions": "^1.7.2",
+ "@stoplight/spectral-parsers": "^1.0.2",
+ "@types/json-schema": "^7.0.11",
+ "@types/urijs": "^1.19.19",
+ "ajv": "^8.11.0",
+ "ajv-errors": "^3.0.0",
+ "ajv-formats": "^2.1.1",
+ "avsc": "^5.7.5",
+ "js-yaml": "^4.1.0",
+ "jsonpath-plus": "^7.2.0",
+ "node-fetch": "2.6.7",
+ "ramldt2jsonschema": "^1.2.3",
+ "webapi-parser": "^0.5.0"
+ },
+ "dependencies": {
+ "@asyncapi/specs": {
+ "version": "6.0.0-next-major-spec.8",
+ "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-6.0.0-next-major-spec.8.tgz",
+ "integrity": "sha512-WVhzeJepkqO6abDprz9bk9zR/ESidanQncPP7jFRUJQ71ED4/XQMjaSKLE5MB09eUUZoY5EqoccUQJWfc54SMg==",
+ "requires": {
+ "@types/json-schema": "^7.0.11"
+ }
+ },
+ "ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz",
+ "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==",
+ "requires": {}
+ },
+ "js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "requires": {
+ "argparse": "^2.0.1"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "node-fetch": {
+ "version": "2.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
+ }
+ }
+ },
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -26586,6 +28005,11 @@
"react-is": "^16.13.1"
}
},
+ "protocol-buffers-schema": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz",
+ "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw=="
+ },
"proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
diff --git a/package.json b/package.json
index e87175df6..a31c443b6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@asyncapi/glee",
- "version": "0.24.0",
+ "version": "0.26.7",
"description": "The AsyncAPI framework",
"exports": "./dist/moduleIndex.js",
"type": "module",
@@ -32,17 +32,11 @@
"publishConfig": {
"access": "public"
},
- "jest": {
- "moduleNameMapper": {
- "^nimma/legacy$": "/../../node_modules/nimma/dist/legacy/cjs/index.js",
- "^nimma/(.*)": "/../../node_modules/nimma/dist/cjs/$1"
- }
- },
"license": "Apache-2.0",
"dependencies": {
- "@asyncapi/generator": "^1.9.18",
- "@asyncapi/html-template": "^0.24.10",
- "@asyncapi/markdown-template": "^1.3.2",
+ "@asyncapi/generator": "^1.13.1",
+ "@asyncapi/html-template": "^0.28.4",
+ "@asyncapi/markdown-template": "^1.3.3",
"@asyncapi/parser": "^1.13.1",
"ajv": "^6.12.6",
"async": "^3.2.0",
diff --git a/src/adapters/http/client.ts b/src/adapters/http/client.ts
index d8b35aefa..efb53b4c2 100644
--- a/src/adapters/http/client.ts
+++ b/src/adapters/http/client.ts
@@ -1,8 +1,10 @@
-import Adapter from '../../lib/adapter.js'
-import GleeMessage from '../../lib/message.js'
import got from 'got'
-import { HttpAuthConfig, HttpAdapterConfig } from '../../lib/index.js'
import http from 'http'
+import Adapter from '../../lib/adapter.js'
+import GleeMessage from '../../lib/message.js'
+import { clientAuthConfig } from '../../lib/userAuth.js'
+import GleeAuth from '../../lib/wsHttpAuth.js'
+
class HttpClientAdapter extends Adapter {
name(): string {
return 'HTTP client'
@@ -18,10 +20,8 @@ class HttpClientAdapter extends Adapter {
}
async send(message: GleeMessage): Promise {
- const headers = {}
- const config: HttpAdapterConfig = await this.resolveProtocolConfig('http')
- const auth: HttpAuthConfig = await this.getAuthConfig(config.client.auth)
- headers['Authentication'] = auth?.token
+ let headers = {}
+ const authConfig = await clientAuthConfig(this.serverName)
const serverUrl = this.serverUrlExpanded
for (const channelName of this.channelNames) {
const channelInfo = this.parsedAsyncAPI.channel(channelName)
@@ -31,15 +31,34 @@ class HttpClientAdapter extends Adapter {
!channelServers.length || channelServers.includes(message.serverName)
if (httpChannelBinding && isChannelServers) {
const method = httpChannelBinding.method
- const url = `${serverUrl}/${channelName}`
+ let url = `${serverUrl}/${channelName}`
+ const gleeAuth = new GleeAuth(
+ this.AsyncAPIServer,
+ this.parsedAsyncAPI,
+ this.serverName,
+ authConfig
+ )
const body: any = message.payload
- const query: { [key: string]: string } | { [key: string]: string[] } =
+ let query: { [key: string]: string } | { [key: string]: string[] } =
message.query
+
+ if (authConfig) {
+ const modedAuth = await gleeAuth.processClientAuth(
+ url,
+ headers,
+ query
+ )
+ headers = modedAuth.headers
+ url = modedAuth.url.href
+ query = modedAuth.query
+ }
+
got({
method,
url,
json: body,
searchParams: JSON.parse(JSON.stringify(query)),
+ headers,
})
.then((res) => {
const msg = this.createMessage(channelName, res.body)
diff --git a/src/adapters/http/server.ts b/src/adapters/http/server.ts
index d207d2dad..be9c27975 100644
--- a/src/adapters/http/server.ts
+++ b/src/adapters/http/server.ts
@@ -4,6 +4,7 @@ import http from 'http'
import { validateData } from '../../lib/util.js'
import GleeError from '../../errors/glee-error.js'
import * as url from 'url'
+import GleeAuth from '../../lib/wsHttpAuth.js'
class HttpAdapter extends Adapter {
private httpResponses = new Map()
@@ -30,14 +31,64 @@ class HttpAdapter extends Adapter {
const optionsPort = httpOptions?.port
const port = optionsPort || asyncapiServerPort
- httpServer.on('request', (req, res) => {
+ httpServer.on('request', async (req, res) => {
res.setHeader('Content-Type', 'application/json')
+
const bodyBuffer = []
let body: object
req.on('data', (chunk) => {
bodyBuffer.push(chunk)
})
- req.on('end', () => {
+
+ function done() {
+ let resolveFunc, rejectFunc
+ const promise = new Promise((resolve, reject) => {
+ resolveFunc = resolve
+ rejectFunc = reject
+ })
+ return {
+ promise,
+ done: (val: boolean, code = 401, message = 'Unauthorized') => {
+ if (val) {
+ resolveFunc(true)
+ } else {
+ rejectFunc({ code, message })
+ }
+ },
+ }
+ }
+
+ const gleeAuth = new GleeAuth(
+ this.AsyncAPIServer,
+ this.parsedAsyncAPI,
+ this.serverName,
+ req.headers
+ )
+
+ const { promise, done: callback } = done()
+
+ if (gleeAuth.checkAuthPresense()) {
+ this.emit('auth', {
+ authProps: gleeAuth.getServerAuthProps(
+ req.headers,
+ url.parse(req.url, true).query
+ ),
+ server: this.serverName,
+ done: callback,
+ doc: this.AsyncAPIServer,
+ })
+ }
+
+ req.on('end', async () => {
+ try {
+ if (gleeAuth.checkAuthPresense()) await promise
+ } catch (e) {
+ res.statusCode = e.code
+ res.end()
+ this.emit('error', new Error(`${e.code} ${e.message}`))
+ return
+ }
+
body = JSON.parse(Buffer.concat(bodyBuffer).toString())
this.httpResponses.set(this.serverName, res)
let { pathname } = new URL(req.url, serverUrl)
diff --git a/src/adapters/kafka/index.ts b/src/adapters/kafka/index.ts
index c856a328a..27fd8f1d4 100644
--- a/src/adapters/kafka/index.ts
+++ b/src/adapters/kafka/index.ts
@@ -14,7 +14,7 @@ class KafkaAdapter extends Adapter {
const kafkaOptions: KafkaAdapterConfig = await this.resolveProtocolConfig(
'kafka'
)
- const auth: KafkaAuthConfig = await this.getAuthConfig(kafkaOptions.auth)
+ const auth: KafkaAuthConfig = await this.getAuthConfig(kafkaOptions?.auth)
const securityRequirements = (this.AsyncAPIServer.security() || []).map(
(sec) => {
const secName = Object.keys(sec.json())[0]
diff --git a/src/adapters/mqtt/index.ts b/src/adapters/mqtt/index.ts
index 0cb42f1b1..379288646 100644
--- a/src/adapters/mqtt/index.ts
+++ b/src/adapters/mqtt/index.ts
@@ -152,7 +152,7 @@ class MqttAdapter extends Adapter {
const mqttOptions: MqttAdapterConfig = await this.resolveProtocolConfig(
'mqtt'
)
- const auth: MqttAuthConfig = await this.getAuthConfig(mqttOptions.auth)
+ const auth: MqttAuthConfig = await this.getAuthConfig(mqttOptions?.auth)
const subscribedChannels = this.getSubscribedChannels()
const mqttServerBinding = this.AsyncAPIServer.binding('mqtt')
const mqtt5ServerBinding = this.AsyncAPIServer.binding('mqtt5')
diff --git a/src/adapters/ws/client.ts b/src/adapters/ws/client.ts
index 133927074..a6949a5fd 100644
--- a/src/adapters/ws/client.ts
+++ b/src/adapters/ws/client.ts
@@ -2,7 +2,8 @@
import Adapter from '../../lib/adapter.js'
import GleeMessage from '../../lib/message.js'
import ws from 'ws'
-import { WsAuthConfig, WebsocketAdapterConfig } from '../../lib/index.js'
+import { clientAuthConfig } from '../../lib/userAuth.js'
+import GleeAuth from '../../lib/wsHttpAuth.js'
interface Client {
channel: string
@@ -29,14 +30,20 @@ class WsClientAdapter extends Adapter {
const channelsOnThisServer = this.getWsChannels()
for (const channel of channelsOnThisServer) {
- const headers = {}
- const wsOptions: WebsocketAdapterConfig =
- await this.resolveProtocolConfig('ws')
- const auth: WsAuthConfig = await this.getAuthConfig(wsOptions.client.auth)
- headers['Authentication'] = `bearer ${auth?.token}`
-
- const url = new URL(this.AsyncAPIServer.url() + channel)
-
+ let headers = {}
+ const authConfig = await clientAuthConfig(this.serverName)
+ const gleeAuth = new GleeAuth(
+ this.AsyncAPIServer,
+ this.parsedAsyncAPI,
+ this.serverName,
+ authConfig
+ )
+ let url = new URL(this.AsyncAPIServer.url() + channel)
+ if (authConfig) {
+ const modedAuth = await gleeAuth.processClientAuth(url, headers, {})
+ headers = modedAuth.headers
+ url = modedAuth.url
+ }
this.clients.push({
channel,
client: new ws(url, { headers }),
diff --git a/src/adapters/ws/server.ts b/src/adapters/ws/server.ts
index 4591b74f0..ea46db276 100644
--- a/src/adapters/ws/server.ts
+++ b/src/adapters/ws/server.ts
@@ -5,6 +5,7 @@ import Adapter from '../../lib/adapter.js'
import GleeConnection from '../../lib/connection.js'
import GleeMessage from '../../lib/message.js'
import GleeError from '../../errors/glee-error.js'
+import GleeAuth from '../../lib/wsHttpAuth.js'
type QueryData = {
searchParams: URLSearchParams
@@ -141,7 +142,7 @@ class WebSocketsAdapter extends Adapter {
}
}
- private checkBindings(socket, bindingOpts) {
+ private async checkBindings(socket, bindingOpts) {
const { wsChannelBinding, request, searchParams } = bindingOpts
const { query, headers } = wsChannelBinding
@@ -162,6 +163,7 @@ class WebSocketsAdapter extends Adapter {
request,
headers,
})
+
if (!isValid) {
this.emitGleeError(socket, { humanReadableError, errors })
return false
@@ -171,18 +173,55 @@ class WebSocketsAdapter extends Adapter {
return true
}
+ private wrapCallbackDecorator(cb) {
+ return function done(val: boolean, code = 401, message = 'Unauthorized') {
+ cb(val, code, message)
+ if (val === false) {
+ const err = new Error(`${code} ${message}`)
+ this.emit('error', err)
+ }
+ }
+ }
+
+ private verifyClientFunc(gleeAuth, info, cb) {
+ const authProps = gleeAuth.getServerAuthProps(info.req.headers, {})
+ const done = this.wrapCallbackDecorator(cb).bind(this)
+ this.emit('auth', {
+ authProps,
+ server: this.serverName,
+ done,
+ doc: this.AsyncAPIServer,
+ })
+ }
+
async _connect(): Promise {
const { config, serverUrl, wsHttpServer, optionsPort, port } =
await this.initializeConstants()
this.portChecks({ port, config, optionsPort, wsHttpServer })
+ const gleeAuth = new GleeAuth(
+ this.AsyncAPIServer,
+ this.parsedAsyncAPI,
+ this.serverName
+ )
+
const servers = new Map()
this.channelNames.forEach((channelName) => {
- servers.set(channelName, new WebSocket.Server({ noServer: true }))
+ servers.set(
+ channelName,
+ new WebSocket.Server({
+ noServer: true,
+ verifyClient: gleeAuth.checkAuthPresense()
+ ? (info, cb) => {
+ this.verifyClientFunc(gleeAuth, info, cb)
+ }
+ : null,
+ })
+ )
})
- wsHttpServer.on('upgrade', (request, socket, head) => {
+ wsHttpServer.on('upgrade', async (request, socket, head) => {
let { pathname } = new URL(request.url, `ws://${request.headers.host}`)
pathname = this.pathnameChecks(socket, pathname, { serverUrl, servers })
@@ -191,12 +230,13 @@ class WebSocketsAdapter extends Adapter {
request.url,
`ws://${request.headers.host}`
)
+
const wsChannelBinding = this.parsedAsyncAPI
.channel(pathname)
.binding('ws')
if (wsChannelBinding) {
- const correctBindings = this.checkBindings(socket, {
+ const correctBindings = await this.checkBindings(socket, {
wsChannelBinding,
request,
searchParams,
@@ -232,12 +272,14 @@ class WebSocketsAdapter extends Adapter {
connection.getRaw().send(message.payload)
})
} else {
- if (!message.connection)
- {throw new Error(
+ if (!message.connection) {
+ throw new Error(
'There is no WebSocket connection to send the message yet.'
- )}
- if (!(message.connection instanceof GleeConnection))
- {throw new Error('Connection object is not of GleeConnection type.')}
+ )
+ }
+ if (!(message.connection instanceof GleeConnection)) {
+ throw new Error('Connection object is not of GleeConnection type.')
+ }
message.connection.getRaw().send(message.payload)
}
}
diff --git a/src/index.ts b/src/index.ts
index 7dcbded8a..73ffd8d82 100755
--- a/src/index.ts
+++ b/src/index.ts
@@ -13,6 +13,10 @@ import {
register as registerFunctions,
trigger as triggerFunction,
} from './lib/functions.js'
+import {
+ register as registerAuth,
+ triggerAuth as runAuth,
+} from './lib/userAuth.js'
import buffer2string from './middlewares/buffer2string.js'
import string2json from './middlewares/string2json.js'
import json2string from './middlewares/json2string.js'
@@ -25,15 +29,20 @@ import validateConnection from './middlewares/validateConnection.js'
import { initializeConfigs } from './lib/configs.js'
import { getParsedAsyncAPI } from './lib/asyncapiFile.js'
import { getSelectedServerNames } from './lib/servers.js'
-import { EnrichedEvent } from './lib/adapter.js'
+import { EnrichedEvent, AuthEvent } from './lib/adapter.js'
import { ClusterEvent } from './lib/cluster.js'
dotenvExpand(dotenv.config())
export default async function GleeAppInitializer() {
const config = await initializeConfigs()
- const { GLEE_DIR, GLEE_PROJECT_DIR, GLEE_LIFECYCLE_DIR, GLEE_FUNCTIONS_DIR } =
- config
+ const {
+ GLEE_DIR,
+ GLEE_PROJECT_DIR,
+ GLEE_LIFECYCLE_DIR,
+ GLEE_FUNCTIONS_DIR,
+ GLEE_AUTH_DIR,
+ } = config
logWelcome({
dev: process.env.NODE_ENV === 'development',
@@ -47,6 +56,7 @@ export default async function GleeAppInitializer() {
await registerFunctions(GLEE_FUNCTIONS_DIR)
await registerLifecycleEvents(GLEE_LIFECYCLE_DIR)
+ await registerAuth(GLEE_AUTH_DIR)
const parsedAsyncAPI = await getParsedAsyncAPI()
const channelNames = parsedAsyncAPI.channelNames()
@@ -57,6 +67,7 @@ export default async function GleeAppInitializer() {
app.use(existsInAsyncAPI(parsedAsyncAPI))
app.useOutbound(existsInAsyncAPI(parsedAsyncAPI))
+
app.useOutbound(validateConnection)
app.use(buffer2string)
app.use(string2json)
@@ -99,6 +110,23 @@ export default async function GleeAppInitializer() {
}
})
+ app.on('adapter:auth', async (e: AuthEvent) => {
+ logLineWithIcon(
+ ':zap:',
+ `Running authentication on server ${e.serverName}.`,
+ {
+ highlightedWords: [e.serverName],
+ }
+ )
+ await runAuth({
+ glee: app,
+ serverName: e.serverName,
+ authProps: e.authProps,
+ done: e.done,
+ doc: e.doc,
+ })
+ })
+
app.on('adapter:connect', async (e: EnrichedEvent) => {
logLineWithIcon(':zap:', `Connected to server ${e.serverName}.`, {
highlightedWords: [e.serverName],
@@ -138,7 +166,9 @@ export default async function GleeAppInitializer() {
app.on('adapter:server:ready', async (e: EnrichedEvent) => {
logLineWithIcon(
':zap:',
- `Server ${e.serverName} is ready to accept connections on ${e.server.url()}.`,
+ `Server ${
+ e.serverName
+ } is ready to accept connections on ${e.server.url()}.`,
{
highlightedWords: [e.serverName],
}
diff --git a/src/lib/adapter.ts b/src/lib/adapter.ts
index c8bac0482..2119d53df 100644
--- a/src/lib/adapter.ts
+++ b/src/lib/adapter.ts
@@ -6,6 +6,7 @@ import GleeConnection from './connection.js'
import Glee from './glee.js'
import GleeMessage from './message.js'
import { resolveFunctions } from './util.js'
+import { AuthProps } from './index.js'
export type EnrichedEvent = {
connection?: GleeConnection
@@ -13,6 +14,13 @@ export type EnrichedEvent = {
server: Server
}
+export type AuthEvent = {
+ serverName: string
+ authProps: AuthProps
+ done: any
+ doc: any
+}
+
class GleeAdapter extends EventEmitter {
private _glee: Glee
private _serverName: string
@@ -49,8 +57,9 @@ class GleeAdapter extends EventEmitter {
const uriTemplateValues = new Map()
process.env.GLEE_SERVER_VARIABLES?.split(',').forEach((t) => {
const [localServerName, variable, value] = t.split(':')
- if (localServerName === this._serverName)
- {uriTemplateValues.set(variable, value)}
+ if (localServerName === this._serverName) {
+ uriTemplateValues.set(variable, value)
+ }
})
this._serverUrlExpanded = uriTemplates(this._AsyncAPIServer.url()).fill(
Object.fromEntries(uriTemplateValues.entries())
@@ -81,6 +90,18 @@ class GleeAdapter extends EventEmitter {
}
}
+ function enrichAuthEvent(ev): AuthEvent {
+ return {
+ ...ev,
+ ...{
+ serverName,
+ authProps: ev.authProps,
+ callback: ev.callback,
+ doc: ev.doc,
+ },
+ }
+ }
+
function createConnection(ev: {
channels?: string[]
channel?: string
@@ -98,6 +119,10 @@ class GleeAdapter extends EventEmitter {
})
}
+ this.on('auth', (ev) => {
+ this._glee.emit('adapter:auth', enrichAuthEvent(ev))
+ })
+
this.on('connect', (ev) => {
const conn = createConnection(ev)
this._connections.push(conn)
@@ -226,7 +251,10 @@ class GleeAdapter extends EventEmitter {
*
* @param {GleeMessage} message The message to send.
*/
- async send(message: GleeMessage): Promise { // eslint-disable-line @typescript-eslint/no-unused-vars
+
+ async send(
+ message: GleeMessage /* eslint-disable-line @typescript-eslint/no-unused-vars */
+ ): Promise {
throw new Error('Method `send` is not implemented.')
}
}
diff --git a/src/lib/configs.ts b/src/lib/configs.ts
index 438582581..9ea4cf027 100644
--- a/src/lib/configs.ts
+++ b/src/lib/configs.ts
@@ -5,12 +5,15 @@ import { logErrorLine, logWarningMessage } from './logger.js'
interface Config {
functionsDir?: string
+ lifecycleDir?: string
+ authDir?: string
}
let GLEE_DIR: string
let GLEE_PROJECT_DIR: string
let GLEE_LIFECYCLE_DIR: string
let GLEE_FUNCTIONS_DIR: string
+let GLEE_AUTH_DIR: string
let GLEE_CONFIG_FILE_PATH: string
let GLEE_CONFIG_FILE_PATH_JS: string
let GLEE_CONFIG_FILE_PATH_TS: string
@@ -28,8 +31,9 @@ export async function initializeConfigs(
)
GLEE_FUNCTIONS_DIR = path.resolve(
GLEE_DIR,
- config.functionsDir || 'functions'
+ config.lifecycleDir || 'functions'
)
+ GLEE_AUTH_DIR = path.resolve(GLEE_DIR, config.authDir || 'auth')
GLEE_CONFIG_FILE_PATH_TS = path.resolve(GLEE_DIR, 'glee.config.ts')
GLEE_CONFIG_FILE_PATH_JS = path.resolve(GLEE_DIR, 'glee.config.js')
@@ -74,19 +78,29 @@ function isFileReadable(filePath: string) {
/**
* Loads the configuration from glee project.
*/
-async function loadConfigsFromFile() {
+export async function loadConfigsFromFile() {
if (!isFileReadable(GLEE_CONFIG_FILE_PATH)) return
try {
let { default: projectConfigs } = await import(
pathToFileURL(GLEE_CONFIG_FILE_PATH).href
)
- if (typeof projectConfigs === 'function')
- {projectConfigs = await projectConfigs()}
+ if (typeof projectConfigs === 'function') {
+ projectConfigs = await projectConfigs()
+ }
if (!projectConfigs) return
- GLEE_DIR = projectConfigs.glee?.gleeDir || GLEE_DIR
- GLEE_LIFECYCLE_DIR = projectConfigs.glee?.lifecycleDir ?? GLEE_LIFECYCLE_DIR
- GLEE_FUNCTIONS_DIR = projectConfigs.glee?.functionsDir ?? GLEE_FUNCTIONS_DIR
+ GLEE_DIR = projectConfigs.glee?.gleeDir
+ ? path.resolve(GLEE_PROJECT_DIR, projectConfigs.glee?.gleeDir)
+ : GLEE_DIR
+ GLEE_FUNCTIONS_DIR = projectConfigs.glee?.functionsDir
+ ? path.resolve(GLEE_DIR, projectConfigs.glee?.functionsDir)
+ : GLEE_FUNCTIONS_DIR
+ GLEE_LIFECYCLE_DIR = projectConfigs.glee?.lifecycleDir
+ ? path.resolve(GLEE_DIR, projectConfigs.glee?.lifecycleDir)
+ : GLEE_LIFECYCLE_DIR
+ GLEE_AUTH_DIR = projectConfigs.glee?.authDir
+ ? path.resolve(GLEE_DIR, projectConfigs.glee?.authDir)
+ : GLEE_AUTH_DIR
ASYNCAPI_FILE_PATH =
projectConfigs.glee?.asyncapiFilePath ?? ASYNCAPI_FILE_PATH
return projectConfigs
@@ -120,6 +134,7 @@ export function getConfigs(): { [key: string]: string } {
GLEE_LIFECYCLE_DIR,
GLEE_FUNCTIONS_DIR,
GLEE_CONFIG_FILE_PATH,
+ GLEE_AUTH_DIR,
ASYNCAPI_FILE_PATH,
}
}
diff --git a/src/lib/glee.ts b/src/lib/glee.ts
index c144248e9..514881f88 100644
--- a/src/lib/glee.ts
+++ b/src/lib/glee.ts
@@ -1,3 +1,4 @@
+/* eslint-disable @typescript-eslint/no-unused-vars */
import EventEmitter from 'events'
import async from 'async'
import Debug from 'debug'
@@ -100,7 +101,10 @@ export default class Glee extends EventEmitter {
*/
use(...middlewares: GenericMiddleware[]): void
use(channel: string, ...middlewares: GenericMiddleware[]): void
- use(channel: string | GenericMiddleware, ...middlewares: GenericMiddleware[]): void { // eslint-disable-line @typescript-eslint/no-unused-vars
+ use(
+ channel: string | GenericMiddleware,
+ ...middlewares: GenericMiddleware[]
+ ): void {
this._router.use(...arguments) // eslint-disable-line prefer-rest-params
}
@@ -115,7 +119,6 @@ export default class Glee extends EventEmitter {
channel: string | GenericMiddleware,
...middlewares: GenericMiddleware[]
): void {
- // eslint-disable-line @typescript-eslint/no-unused-vars
this._router.useOutbound(...arguments) // eslint-disable-line prefer-rest-params
}
diff --git a/src/lib/index.d.ts b/src/lib/index.d.ts
index 2d258e205..c461f1724 100644
--- a/src/lib/index.d.ts
+++ b/src/lib/index.d.ts
@@ -30,12 +30,30 @@ export interface GleeFunctionReturnInvoke extends OptionsOfJSONResponseBody {
export interface WsAuthConfig {
token?: string
+ username?: string
+ password?: string
}
export interface HttpAuthConfig {
token?: string
+ username?: string
+ password?: string
+}
+
+export type AuthProps = {
+ getToken: () => string
+ getUserPass: () => {
+ username: string
+ password: string
+ }
+ getCert: () => string
+ getOauthToken: () => string
+ getHttpAPIKeys: (name: string) => string
+ getAPIKeys: () => string
}
+export type WsHttpAuth = WsAuthConfig | HttpAuthConfig
+
export interface KafkaAuthConfig {
key?: string
cert?: string
@@ -115,6 +133,14 @@ export type GleeFunctionEvent = {
channel?: string
}
+export type GleeAuthFunctionEvent = {
+ glee: Glee
+ authProps: AuthProps
+ done: any
+ serverName: string
+ doc: any
+}
+
export type GleeFunctionReturnSend = {
payload?: any
query?: QueryParam
@@ -128,4 +154,8 @@ export type GleeFunctionReturnBroadcast = GleeFunctionReturnSend
export type GleeFunction = (
event: GleeFunctionEvent
-) => Promise
\ No newline at end of file
+) => Promise
+
+export type GleeAuthFunction = (
+ event: GleeAuthFunctionEvent
+) => Promise
diff --git a/src/lib/userAuth.ts b/src/lib/userAuth.ts
new file mode 100644
index 000000000..25d57803c
--- /dev/null
+++ b/src/lib/userAuth.ts
@@ -0,0 +1,79 @@
+import { basename, extname } from 'path'
+import { stat } from 'fs/promises'
+import walkdir from 'walkdir'
+import { logWarningMessage } from './logger.js'
+import { GleeAuthFunction, GleeAuthFunctionEvent } from './index.js'
+import { pathToFileURL } from 'url'
+
+interface AuthFunctionInfo {
+ clientAuth?: GleeAuthFunction
+ serverAuth?: GleeAuthFunction
+}
+
+export const authFunctions: Map = new Map()
+
+export async function register(dir: string) {
+ try {
+ const statsDir = await stat(dir)
+ if (!statsDir.isDirectory()) return
+ } catch (e) {
+ if (e.code === 'ENOENT') return
+ throw e
+ }
+
+ //get serverAuth and ClientAuth
+ try {
+ const files = await walkdir.async(dir, { return_object: true })
+ return await Promise.all(
+ Object.keys(files).map(async (filePath) => {
+ try {
+ const serverName = basename(filePath, extname(filePath))
+ const { clientAuth, serverAuth } = await import(
+ pathToFileURL(filePath).href
+ )
+ authFunctions.set(serverName, {
+ clientAuth,
+ serverAuth,
+ })
+ } catch (e) {
+ console.error(e)
+ }
+ })
+ )
+ } catch (e) {
+ console.error(e)
+ }
+}
+export async function triggerAuth(params: GleeAuthFunctionEvent) {
+ const { serverName, done } = params
+
+ try {
+ const auth = authFunctions.get(serverName)
+ if (!auth) {
+ logWarningMessage(
+ `Missing Authentication function file. Cannot find ${serverName}.ts or ${serverName}.js`,
+ {
+ highlightedWords: [serverName],
+ }
+ )
+ done(false, 422, 'Cannot find authentication file')
+ return
+ }
+ //run serverAuth function with passed parameters
+ await auth.serverAuth(params)
+ return
+ } catch (err) {
+ if (err.code === 'ERR_MODULE_NOT_FOUND') {
+ logWarningMessage(`Missing function file ${serverName}.`, {
+ highlightedWords: [serverName],
+ })
+ } else {
+ throw err
+ }
+ }
+}
+
+export async function clientAuthConfig(serverName: string) {
+ //get client credentials
+ return authFunctions.get(serverName)?.clientAuth
+}
diff --git a/src/lib/wsHttpAuth.ts b/src/lib/wsHttpAuth.ts
new file mode 100644
index 000000000..60e438f73
--- /dev/null
+++ b/src/lib/wsHttpAuth.ts
@@ -0,0 +1,180 @@
+import { AsyncAPIDocument, SecurityScheme, Server } from '@asyncapi/parser'
+import { resolveFunctions } from './util.js'
+import { EventEmitter } from 'events'
+import { HttpAuthConfig, WsAuthConfig, AuthProps } from './index.js'
+
+class GleeAuth extends EventEmitter {
+ private secReqs: { [key: string]: SecurityScheme }[]
+ private parsedAsyncAPI: AsyncAPIDocument
+ private serverName: string
+ private AsyncAPIServer: Server
+ private authConfig: WsAuthConfig | HttpAuthConfig
+ private auth: { [key: string]: string } | { [key: string]: string[] }
+
+ /**
+ * Instantiates authentication.
+ */
+ constructor(
+ AsyncAPIServer: Server,
+ parsedAsyncAPI: AsyncAPIDocument,
+ serverName: string,
+ authConfig?
+ ) {
+ super()
+ this.secReqs = []
+ this.parsedAsyncAPI = parsedAsyncAPI
+ this.serverName = serverName
+ this.AsyncAPIServer = AsyncAPIServer
+ this.authConfig = authConfig
+ }
+
+ checkClientAuthConfig() {
+ this.secReqs = (this.AsyncAPIServer.security() || []).map((sec) => {
+ const secName = Object.keys(sec.json())[0]
+ return {
+ [secName]: this.parsedAsyncAPI.components().securityScheme(secName),
+ }
+ })
+
+ const authKeys = Object.keys(this.auth)
+ const secNames = this.secReqs.map((el) => Object.keys(el)[0])
+
+ authKeys.forEach((el) => {
+ const allowed = secNames.includes(el)
+ if (!allowed) {
+ const err = new Error(
+ `${el} securityScheme is not defined in your asyncapi.yaml config`
+ )
+ this.emit('error', err)
+ }
+ })
+
+ return authKeys
+
+ //checkClientUnimplementedSecScheme()
+ //raise a warning about any unimplemented securityScheme
+ }
+
+ async getAuthConfig(auth) {
+ if (!auth) return
+ if (typeof auth !== 'function') {
+ await resolveFunctions(auth)
+ return auth
+ }
+
+ return await auth({
+ serverName: this.serverName,
+ parsedAsyncAPI: this.parsedAsyncAPI,
+ })
+ }
+
+ formClientAuth(authKeys, { url, headers, query }) {
+ if (!authKeys) return { url, headers }
+ authKeys.map((authKey) => {
+ const scheme = this.secReqs.find((sec) => Object.keys(sec) == authKey)
+ const currentScheme = scheme[String(authKey)].scheme()
+ const currentType = scheme[String(authKey)].type()
+ if (currentScheme == 'bearer') {
+ headers.authentication = `bearer ${this.auth[String(authKey)]}`
+ return
+ }
+ if (currentType == 'userPassword' || currentType == 'apiKey') {
+ url = this.userPassApiKeyLogic(url, authKey)
+ return
+ }
+ if (currentType == 'oauth2') {
+ headers.oauthToken = this.auth[String(authKey)]
+ }
+ if (currentType == 'httpApiKey') {
+ const conf = this.httpApiKeyLogic(scheme, headers, query, authKey)
+ headers = conf.headers
+ query = conf.query
+ }
+ })
+ return { url, headers, query }
+ }
+
+ private userPassApiKeyLogic(url, authKey) {
+ const password = this.auth[String(authKey)]['password']
+ const username = this.auth[String(authKey)]['user']
+
+ if (typeof url == 'object') {
+ url.password = password
+ url.username = username
+ return url
+ }
+
+ const myURL = new URL(url)
+ myURL.password = password
+ myURL.username = username
+ return myURL
+ }
+
+ private httpApiKeyLogic(scheme, headers, query, authKey) {
+ const loc = scheme[String(authKey)].json('in')
+ if (loc == 'header') {
+ headers[scheme[String(authKey)].json('name')] = this.auth[String(authKey)]
+ } else if (loc == 'query') {
+ query[scheme[String(authKey)].json('name')] = this.auth[String(authKey)]
+ }
+
+ return { headers, query }
+ }
+
+ // getServerAuthReq() {}
+
+ getServerAuthProps(headers, query) {
+ const authProps: AuthProps = {
+ getToken: () => {
+ return headers.authentication
+ },
+ getUserPass: () => {
+ const buf = headers.authorization
+ ? Buffer.from(headers.authorization?.split(' ')[1], 'base64')
+ : undefined
+
+ if (!buf) return
+
+ const [username, password] = buf.toString().split(':')
+ return {
+ username,
+ password,
+ }
+ },
+ getCert: () => {
+ return headers.cert
+ },
+ getOauthToken: () => {
+ return headers.oauthtoken
+ },
+ getHttpAPIKeys: (name: string) => {
+ return headers[String(name)] ?? query[String(name)]
+ },
+ getAPIKeys: () => {
+ return `keys`
+ },
+ }
+
+ return authProps
+ }
+
+ async processClientAuth(url, headers, query) {
+ this.auth = await this.getAuthConfig(this.authConfig)
+ const authKeys = this.checkClientAuthConfig()
+ if (!authKeys) return
+ return this.formClientAuth(authKeys, { url, headers, query })
+ }
+
+ checkAuthPresense(): boolean {
+ return (
+ this.AsyncAPIServer.security() &&
+ Object.keys(this.AsyncAPIServer.security()).length > 0
+ )
+ }
+
+ // checkClientUnimplementedSecScheme() {}
+
+ // getSchemes(type) {}
+}
+
+export default GleeAuth
diff --git a/test/lib/adapter.test.ts b/test/lib/adapter.test.ts
index 1c28c9865..d901fca7a 100644
--- a/test/lib/adapter.test.ts
+++ b/test/lib/adapter.test.ts
@@ -1,11 +1,12 @@
import 'jest-extended'
import AsyncAPIDocument from '@asyncapi/parser/lib/models/asyncapi'
-import {Server} from '@asyncapi/parser'
+import { Server } from '@asyncapi/parser'
import GleeConnection from '../../src/lib/connection.js'
import Glee from '../../src/lib/glee.js'
import GleeMessage from '../../src/lib/message.js'
import GleeAdapter from '../../src/lib/adapter.js'
-import {jest} from '@jest/globals'
+import { MiddlewareCallback } from '../../src/middlewares/index.d'
+import { jest } from '@jest/globals'
const TEST_SERVER_NAME = 'test'
const ANOTHER_TEST_SERVER_NAME = 'another'
@@ -22,9 +23,9 @@ const TEST_ASYNCAPI_DOCUMENT = new AsyncAPIDocument({
protocol: 'ws',
variables: {
port: {
- default: '7000'
- }
- }
+ default: '7000',
+ },
+ },
},
},
channels: {
@@ -33,18 +34,25 @@ const TEST_ASYNCAPI_DOCUMENT = new AsyncAPIDocument({
message: {
payload: {
type: 'string',
- }
- }
- }
- }
- }
+ },
+ },
+ },
+ },
+ },
})
const TEST_SERVER: Server = TEST_ASYNCAPI_DOCUMENT.server(TEST_SERVER_NAME)
-const ANOTHER_TEST_SERVER: Server = TEST_ASYNCAPI_DOCUMENT.server(ANOTHER_TEST_SERVER_NAME)
+const ANOTHER_TEST_SERVER: Server = TEST_ASYNCAPI_DOCUMENT.server(
+ ANOTHER_TEST_SERVER_NAME
+)
const RAW_CONN = { fake: 'conn' }
class TEST_ADAPTER extends GleeAdapter {
async connect() {
- this.emit('connect', { name: 'TEST_ADAPTER', adapter: this, connection: RAW_CONN, channels: [] })
+ this.emit('connect', {
+ name: 'TEST_ADAPTER',
+ adapter: this,
+ connection: RAW_CONN,
+ channels: [],
+ })
}
}
class ANOTHER_TEST_ADAPTER extends GleeAdapter {}
@@ -57,54 +65,108 @@ const fakeConnection = new GleeConnection({
parsedAsyncAPI: TEST_ASYNCAPI_DOCUMENT,
})
+const initializeAdapter = () => {
+ const app = new Glee()
+ const adapter = new GleeAdapter(
+ app,
+ TEST_SERVER_NAME,
+ TEST_SERVER,
+ TEST_ASYNCAPI_DOCUMENT
+ )
+ app.on('adapter:server:connection:open', (ev) => {
+ expect(ev.serverName).toStrictEqual(TEST_SERVER_NAME)
+ expect(ev.server).toStrictEqual(TEST_SERVER)
+ expect(ev.connection).toBeInstanceOf(GleeConnection)
+ expect(ev.connection.AsyncAPIServer).toStrictEqual(TEST_SERVER)
+ expect(ev.connection.rawConnection).toStrictEqual(RAW_CONN)
+ expect(ev.connection.channels).toStrictEqual(['fake/channel'])
+ expect(ev.connection.serverName).toStrictEqual(TEST_SERVER_NAME)
+ expect(ev.connection.parsedAsyncAPI).toStrictEqual(TEST_ASYNCAPI_DOCUMENT)
+ })
+
+ return adapter
+}
+
describe('adapter', () => {
describe('glee', () => {
it('returns the glee app passed on constructor', async () => {
const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
+ const adapter = new GleeAdapter(
+ app,
+ TEST_SERVER_NAME,
+ TEST_SERVER,
+ TEST_ASYNCAPI_DOCUMENT
+ )
expect(adapter.glee).toStrictEqual(app)
})
})
-
+
describe('serverName', () => {
it('returns the server name passed on constructor', async () => {
const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
+ const adapter = new GleeAdapter(
+ app,
+ TEST_SERVER_NAME,
+ TEST_SERVER,
+ TEST_ASYNCAPI_DOCUMENT
+ )
expect(adapter.serverName).toStrictEqual(TEST_SERVER_NAME)
})
})
-
+
describe('AsyncAPIServer', () => {
it('returns the AsyncAPI server object passed on constructor', async () => {
const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
+ const adapter = new GleeAdapter(
+ app,
+ TEST_SERVER_NAME,
+ TEST_SERVER,
+ TEST_ASYNCAPI_DOCUMENT
+ )
expect(adapter.AsyncAPIServer).toStrictEqual(TEST_SERVER)
})
})
-
+
describe('parsedAsyncAPI', () => {
it('returns the AsyncAPI document object passed on constructor', async () => {
const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
+ const adapter = new GleeAdapter(
+ app,
+ TEST_SERVER_NAME,
+ TEST_SERVER,
+ TEST_ASYNCAPI_DOCUMENT
+ )
expect(adapter.parsedAsyncAPI).toStrictEqual(TEST_ASYNCAPI_DOCUMENT)
})
})
-
+
describe('channelNames', () => {
it('returns the list of associated channel names', async () => {
const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
- expect(adapter.channelNames).toStrictEqual(TEST_ASYNCAPI_DOCUMENT.channelNames())
+ const adapter = new GleeAdapter(
+ app,
+ TEST_SERVER_NAME,
+ TEST_SERVER,
+ TEST_ASYNCAPI_DOCUMENT
+ )
+ expect(adapter.channelNames).toStrictEqual(
+ TEST_ASYNCAPI_DOCUMENT.channelNames()
+ )
})
})
-
+
describe('connections', () => {
it('returns an empty array when the adapter is just initialized', async () => {
const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
+ const adapter = new GleeAdapter(
+ app,
+ TEST_SERVER_NAME,
+ TEST_SERVER,
+ TEST_ASYNCAPI_DOCUMENT
+ )
expect(adapter.connections).toStrictEqual([])
})
-
+
it('returns a array with the associated connections', async () => {
const app = new Glee()
app.addAdapter(TEST_ADAPTER, {
@@ -113,11 +175,13 @@ describe('adapter', () => {
parsedAsyncAPI: TEST_ASYNCAPI_DOCUMENT,
})
await app.connect()
-
+
expect(app.adapters.length).toStrictEqual(1)
expect(app.adapters[0].instance).toBeTruthy()
expect(app.adapters[0].instance.connections.length).toStrictEqual(1)
- expect(app.adapters[0].instance.connections[0].rawConnection).toStrictEqual(RAW_CONN)
+ expect(
+ app.adapters[0].instance.connections[0].rawConnection
+ ).toStrictEqual(RAW_CONN)
})
})
@@ -128,25 +192,32 @@ describe('adapter', () => {
jest.resetModules() // Most important - it clears the cache
process.env = {
...OLD_ENV,
- GLEE_SERVER_VARIABLES: 'another:port:8000'
+ GLEE_SERVER_VARIABLES: 'another:port:8000',
}
})
afterAll(() => {
process.env = OLD_ENV // Restore old environment
})
-
+
it('returns the server URL with variables expanded', async () => {
const app = new Glee()
- const adapter = new GleeAdapter(app, ANOTHER_TEST_SERVER_NAME, ANOTHER_TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
- expect(adapter.serverUrlExpanded).toStrictEqual('ws://fake-url-with-vars:8000')
+ const adapter = new GleeAdapter(
+ app,
+ ANOTHER_TEST_SERVER_NAME,
+ ANOTHER_TEST_SERVER,
+ TEST_ASYNCAPI_DOCUMENT
+ )
+ expect(adapter.serverUrlExpanded).toStrictEqual(
+ 'ws://fake-url-with-vars:8000'
+ )
})
})
-
+
describe('on("message")', () => {
it('injects the message on the Glee app', async () => {
const msg = new GleeMessage({
- payload: 'test'
+ payload: 'test',
})
const app = new Glee()
app.addAdapter(TEST_ADAPTER, {
@@ -162,103 +233,90 @@ describe('adapter', () => {
expect(app.adapters.length).toStrictEqual(1)
expect(app.adapters[0].instance).toBeTruthy()
- app.adapters[0].instance.emit('message', msg, RAW_CONN)
+ app.adapters[0].instance.emit('message', msg, RAW_CONN)
})
})
-
+
describe('on("server:ready")', () => {
it('notifies the Glee app', async () => {
- const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
- app.on('adapter:server:ready', (ev) => {
- expect(ev).toStrictEqual({
- fake: 'object',
- serverName: TEST_SERVER_NAME,
- server: TEST_SERVER,
- })
- })
+ const adapter = initializeAdapter()
adapter.emit('server:ready', { fake: 'object' })
})
})
-
+
describe('on("server:connection:open")', () => {
it('notifies the Glee app', async () => {
- const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
- app.on('adapter:server:connection:open', (ev) => {
- expect(ev.serverName).toStrictEqual(TEST_SERVER_NAME)
- expect(ev.server).toStrictEqual(TEST_SERVER)
- expect(ev.connection).toBeInstanceOf(GleeConnection)
- expect(ev.connection.AsyncAPIServer).toStrictEqual(TEST_SERVER)
- expect(ev.connection.rawConnection).toStrictEqual(RAW_CONN)
- expect(ev.connection.channels).toStrictEqual(['fake/channel'])
- expect(ev.connection.serverName).toStrictEqual(TEST_SERVER_NAME)
- expect(ev.connection.parsedAsyncAPI).toStrictEqual(TEST_ASYNCAPI_DOCUMENT)
+ const adapter = initializeAdapter()
+ adapter.emit('server:connection:open', {
+ channels: ['fake/channel'],
+ connection: RAW_CONN,
})
- adapter.emit('server:connection:open', { channels: ['fake/channel'], connection: RAW_CONN })
})
})
-
+
describe('on("close")', () => {
it('notifies the Glee app', async () => {
- const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
- app.on('adapter:close', (ev) => {
- expect(ev.serverName).toStrictEqual(TEST_SERVER_NAME)
- expect(ev.server).toStrictEqual(TEST_SERVER)
- expect(ev.connection).toBeInstanceOf(GleeConnection)
- expect(ev.connection.AsyncAPIServer).toStrictEqual(TEST_SERVER)
- expect(ev.connection.rawConnection).toStrictEqual(RAW_CONN)
- expect(ev.connection.channels).toStrictEqual(['fake/channel'])
- expect(ev.connection.serverName).toStrictEqual(TEST_SERVER_NAME)
- expect(ev.connection.parsedAsyncAPI).toStrictEqual(TEST_ASYNCAPI_DOCUMENT)
+ const adapter = initializeAdapter()
+ adapter.emit('close', {
+ channels: ['fake/channel'],
+ connection: RAW_CONN,
})
- adapter.emit('close', { channels: ['fake/channel'], connection: RAW_CONN })
})
})
-
+
describe('on("reconnect")', () => {
it('notifies the Glee app', async () => {
- const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
- app.on('adapter:reconnect', (ev) => {
- expect(ev.serverName).toStrictEqual(TEST_SERVER_NAME)
- expect(ev.server).toStrictEqual(TEST_SERVER)
- expect(ev.connection).toBeInstanceOf(GleeConnection)
- expect(ev.connection.AsyncAPIServer).toStrictEqual(TEST_SERVER)
- expect(ev.connection.rawConnection).toStrictEqual(RAW_CONN)
- expect(ev.connection.channels).toStrictEqual(['fake/channel'])
- expect(ev.connection.serverName).toStrictEqual(TEST_SERVER_NAME)
- expect(ev.connection.parsedAsyncAPI).toStrictEqual(TEST_ASYNCAPI_DOCUMENT)
+ const adapter = initializeAdapter()
+ adapter.emit('reconnect', {
+ channels: ['fake/channel'],
+ connection: RAW_CONN,
})
- adapter.emit('reconnect', { channels: ['fake/channel'], connection: RAW_CONN })
})
})
-
+
describe('getSubscribedChannels()', () => {
it('returns the list of channels to which the adapter is subscribed', async () => {
const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
+ const adapter = new GleeAdapter(
+ app,
+ TEST_SERVER_NAME,
+ TEST_SERVER,
+ TEST_ASYNCAPI_DOCUMENT
+ )
expect(adapter.getSubscribedChannels()).toStrictEqual(['test/channel'])
})
})
-
+
describe('connect()', () => {
it('throws', async () => {
const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
- await expect(adapter.connect()).rejects.toThrowError(new Error('Method `connect` is not implemented.'))
+ const adapter = new GleeAdapter(
+ app,
+ TEST_SERVER_NAME,
+ TEST_SERVER,
+ TEST_ASYNCAPI_DOCUMENT
+ )
+ await expect(adapter.connect()).rejects.toThrowError(
+ new Error('Method `connect` is not implemented.')
+ )
})
})
-
+
describe('send()', () => {
it('throws', async () => {
const msg = new GleeMessage({
- payload: 'test'
+ payload: 'test',
})
const app = new Glee()
- const adapter = new GleeAdapter(app, TEST_SERVER_NAME, TEST_SERVER, TEST_ASYNCAPI_DOCUMENT)
- await expect(adapter.send(msg)).rejects.toThrowError(new Error('Method `send` is not implemented.'))
+ const adapter = new GleeAdapter(
+ app,
+ TEST_SERVER_NAME,
+ TEST_SERVER,
+ TEST_ASYNCAPI_DOCUMENT
+ )
+ await expect(adapter.send(msg)).rejects.toThrowError(
+ new Error('Method `send` is not implemented.')
+ )
})
})
-})
\ No newline at end of file
+})
diff --git a/test/lib/config.spec.ts b/test/lib/config.spec.ts
index 7ff72fdec..1e3e7854a 100644
--- a/test/lib/config.spec.ts
+++ b/test/lib/config.spec.ts
@@ -1,34 +1,133 @@
import fs from 'fs'
import path from 'path'
-import { findSpecFile } from '../../src/lib/configs.js'
+import {
+ findSpecFile,
+ loadConfigsFromFile,
+ initializeConfigs,
+ getConfigs,
+} from '../../src/lib/configs.js'
const yamlPath = path.resolve('./asyncapi.yaml')
const jsonPath = path.resolve('./asyncapi.json')
+
+const gleePath = './.glee'
+const configFile = '/glee.config.js'
+const configsPath = path.join(gleePath, configFile)
+const [lifecycleDir, functionDir, authDir] = ['./lifecy', './func', './authSec']
+// const cwd = process.cwd()
+
describe('Tests resolving the AsyncAPI file path.', () => {
- afterEach(async () => {
- const promises = [jsonPath, yamlPath].map(async (file) => fs.unlinkSync(file))
- await Promise.allSettled(promises)
- })
+ afterEach(async () => {
+ const promises = [jsonPath, yamlPath].map(async (file) =>
+ fs.unlinkSync(file)
+ )
+ await Promise.allSettled(promises)
+ })
- test('Should return undefined if AsyncAPI file doesn\'t exists.', async () => {
- expect(findSpecFile("")).toBe(undefined)
- })
+ test("Should return undefined if AsyncAPI file doesn't exists.", async () => {
+ expect(findSpecFile('')).toBe(undefined)
+ })
- test('Should return undefined if there are multiple AsyncAPI spec files.', async () => {
- fs.writeFileSync(jsonPath, '')
- fs.writeFileSync(yamlPath, '')
- expect(findSpecFile("")).toBe(undefined)
- })
+ test('Should return undefined if there are multiple AsyncAPI spec files.', async () => {
+ fs.writeFileSync(jsonPath, '')
+ fs.writeFileSync(yamlPath, '')
+ expect(findSpecFile('')).toBe(undefined)
+ })
- test('Should fails if asyncapi.json is a folder.', async () => {
- fs.mkdirSync(jsonPath)
- expect(findSpecFile("")).toBe(undefined)
- fs.rmdirSync(jsonPath)
- })
+ test('Should fails if asyncapi.json is a folder.', async () => {
+ fs.mkdirSync(jsonPath)
+ expect(findSpecFile('')).toBe(undefined)
+ fs.rmdirSync(jsonPath)
+ })
+
+ test('Should succeed in finding AsyncAPI spec if there is only one.', async () => {
+ fs.writeFileSync(jsonPath, '')
+ const resultingPath = findSpecFile('')
+ expect(resultingPath).toBe(jsonPath)
+ })
+})
+
+describe('Test resolving the config file path when no config is initialized', () => {
+ beforeEach(async () => {})
+
+ test('getConfigs function should return undefined for configs', () => {
+ expect(getConfigs().GLEE_CONFIG_FILE_PATH).toBe(undefined)
+ expect(getConfigs().ASYNCAPI_FILE_PATH).toBe(undefined)
+ })
+
+ test('getConfigs function should return undefined for config file properties', () => {
+ expect(getConfigs().GLEE_LIFECYCLE_DIR).toBeUndefined()
+ expect(getConfigs().GLEE_FUNCTIONS_DIR).toBeUndefined()
+ expect(getConfigs().GLEE_AUTH_DIR).toBeUndefined()
+ })
- test('Should succeed in finding AsyncAPI spec if there is only one.', async () => {
- fs.writeFileSync(jsonPath, '')
- const resultingPath = findSpecFile('')
- expect(resultingPath).toBe(jsonPath)
+ test('if no config file is found return undefined', async () => {
+ expect(await loadConfigsFromFile()).toBeUndefined()
+ })
+})
+
+describe('check config features when config is initialized', () => {
+ beforeEach(async () => {
+ fs.writeFileSync(yamlPath, '')
+ const conf = `export default async function () {
+ return {
+ glee: { // Glee core configurations
+ lifecycleDir: '${lifecycleDir}',
+ functionsDir: '${functionDir}',
+ authDir: '${authDir}'
+ }
+ }
+ }`
+ fs.mkdirSync(gleePath)
+ fs.writeFileSync(configsPath, conf)
+ await initializeConfigs()
+ })
+
+ afterEach(async () => {
+ const promises = [configsPath, yamlPath].map(async (file) =>
+ fs.unlinkSync(file)
+ )
+ await Promise.allSettled(promises)
+ fs.rmSync(gleePath, {
+ recursive: true,
+ force: true,
})
-})
\ No newline at end of file
+ })
+
+ test('loadConfigFromFile should return defined value when there is a config file', async () => {
+ expect(await loadConfigsFromFile()).toBeDefined()
+ })
+
+ test('Should read config data from the current working directory', () => {
+ console.log('config_file_path', getConfigs())
+ expect(getConfigs().GLEE_PROJECT_DIR).toBe(process.cwd())
+ })
+
+ test('expect glee dir to be /.glee in current working directory', () => {
+ expect(getConfigs().GLEE_DIR).toBe(path.join(process.cwd(), gleePath))
+ })
+
+ test('GLEE_CONFIG_FILE_PATH should be glee.config.js', () => {
+ expect(getConfigs().GLEE_CONFIG_FILE_PATH).toBe(
+ path.join(process.cwd(), configsPath)
+ )
+ })
+
+ test('lifecycle folder should be same as set in config file', () => {
+ expect(getConfigs().GLEE_LIFECYCLE_DIR).toBe(
+ path.join(process.cwd(), gleePath, lifecycleDir)
+ )
+ })
+
+ test('function folder should be same as set in config file', () => {
+ expect(getConfigs().GLEE_FUNCTIONS_DIR).toBe(
+ path.join(process.cwd(), gleePath, functionDir)
+ )
+ })
+
+ test('Auth folder should be same as set in config file', () => {
+ expect(getConfigs().GLEE_AUTH_DIR).toBe(
+ path.join(process.cwd(), gleePath, authDir)
+ )
+ })
+})