diff --git a/.github/workflows/add-good-first-issue-labels.yml b/.github/workflows/add-good-first-issue-labels.yml
index dee10e72..20234526 100644
--- a/.github/workflows/add-good-first-issue-labels.yml
+++ b/.github/workflows/add-good-first-issue-labels.yml
@@ -28,8 +28,10 @@ jobs:
break;
case 'js':
values[1] = 'javascript';
+ break;
case 'markdown':
values[1] = 'docs';
+ break;
}
if(values.length != 2 || !areas.includes(values[1])){
const message = `Hey @${context.payload.sender.login}, your message doesn't follow the requirements, you can try \`/help\`.`
diff --git a/.github/workflows/automerge-for-humans-add-ready-to-merge-or-do-not-merge-label.yml b/.github/workflows/automerge-for-humans-add-ready-to-merge-or-do-not-merge-label.yml
index e00a45fa..79c8079e 100644
--- a/.github/workflows/automerge-for-humans-add-ready-to-merge-or-do-not-merge-label.yml
+++ b/.github/workflows/automerge-for-humans-add-ready-to-merge-or-do-not-merge-label.yml
@@ -7,14 +7,14 @@
name: Label PRs # if proper comment added
-on:
- issue_comment:
- types:
- - created
+on:
+ issue_comment:
+ types:
+ - created
jobs:
add-ready-to-merge-label:
- if: >
+ if: >
github.event.issue.pull_request &&
github.event.issue.state != 'closed' &&
github.actor != 'asyncapi-bot' &&
@@ -25,7 +25,6 @@ jobs:
runs-on: ubuntu-latest
steps:
-
- name: Add ready-to-merge label
uses: actions/github-script@v5
with:
@@ -64,7 +63,7 @@ jobs:
Thanks 😄`
})
}
-
+
add-do-not-merge-label:
if: >
github.event.issue.pull_request &&
@@ -86,7 +85,7 @@ jobs:
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['do-not-merge']
- })
+ })
add-autoupdate-label:
if: >
github.event.issue.pull_request &&
@@ -108,4 +107,4 @@ jobs:
owner: context.repo.owner,
repo: context.repo.repo,
labels: ['autoupdate']
- })
+ })
diff --git a/.github/workflows/automerge-for-humans-remove-ready-to-merge-label-on-edit.yml b/.github/workflows/automerge-for-humans-remove-ready-to-merge-label-on-edit.yml
index f38296c8..b8fc9904 100644
--- a/.github/workflows/automerge-for-humans-remove-ready-to-merge-label-on-edit.yml
+++ b/.github/workflows/automerge-for-humans-remove-ready-to-merge-label-on-edit.yml
@@ -22,14 +22,11 @@ jobs:
script: |
const labelToRemove = 'ready-to-merge';
const labels = context.payload.pull_request.labels;
-
const isLabelPresent = labels.some(label => label.name === labelToRemove)
-
if(!isLabelPresent) return;
-
github.rest.issues.removeLabel({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
name: labelToRemove
- })
+ })
diff --git a/.github/workflows/if-go-pr-testing.yml b/.github/workflows/if-go-pr-testing.yml
deleted file mode 100644
index 606e689b..00000000
--- a/.github/workflows/if-go-pr-testing.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-# This action is centrally managed in https://github.com/asyncapi/.github/
-# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
-
-# It does magic only if there is go.mod file in the root of the project
-name: PR testing - if Go project
-
-on:
- pull_request:
- types: [opened, reopened, synchronize, ready_for_review]
-
-jobs:
- lint-go-pr:
- name: Lint Go PR
- runs-on: ubuntu-latest
- steps:
- - if: "github.event.pull_request.draft == false &&!((github.actor == 'asyncapi-bot' && startsWith(github.event.pull_request.title, 'ci: update global workflows')) || (github.actor == 'asyncapi-bot' && startsWith(github.event.pull_request.title, 'chore(release):')) || (github.actor == 'allcontributors' && startsWith(github.event.pull_request.title, 'docs: add')))"
- id: should_run
- name: Should Run
- run: echo "::set-output name=shouldrun::true"
- - if: steps.should_run.outputs.shouldrun == 'true'
- name: Checkout repository
- uses: actions/checkout@v2
- - if: steps.should_run.outputs.shouldrun == 'true'
- name: Check if Go project and has go.mod
- id: gomod
- run: test -e ./go.mod && echo "::set-output name=exists::true" || echo "::set-output name=exists::false"
- shell: bash
- - if: steps.gomod.outputs.exists == 'true'
- name: Setup Go
- uses: actions/setup-go@v2.1.3
- with:
- go-version: 1.16
- - if: steps.gomod.outputs.exists == 'true'
- name: golangci-lint
- uses: golangci/golangci-lint-action@v2 # golangci-lint version extracted from go.mod. `latest` if missing.
- with:
- skip-go-installation: true # we wanna control the version of Go in use
-
- test-go-pr:
- name: Test Go PR - ${{ matrix.os }}
- runs-on: ${{ matrix.os }}
- strategy:
- matrix:
- os: [ubuntu-latest, macos-latest, windows-latest]
- steps:
- - if: "github.event.pull_request.draft == false &&!((github.actor == 'asyncapi-bot' && startsWith(github.event.pull_request.title, 'ci: update global workflows')) || (github.actor == 'asyncapi-bot' && startsWith(github.event.pull_request.title, 'chore(release):')) || (github.actor == 'allcontributors' && startsWith(github.event.pull_request.title, 'docs: add')))"
- id: should_run
- name: Should Run
- run: echo "::set-output name=shouldrun::true"
- - if: steps.should_run.outputs.shouldrun == 'true'
- name: Checkout repository
- uses: actions/checkout@v2
- - if: steps.should_run.outputs.shouldrun == 'true'
- name: Check if Go project and has go.mod
- id: gomod
- run: test -e ./go.mod && echo "::set-output name=exists::true" || echo "::set-output name=exists::false"
- shell: bash
- - if: steps.gomod.outputs.exists == 'true'
- name: Setup Go
- uses: actions/setup-go@v2.1.3
- with:
- go-version: 1.16
- - if: steps.gomod.outputs.exists == 'true'
- name: Build
- run: go build -v ./...
- - if: steps.gomod.outputs.exists == 'true'
- name: Test
- run: go test -v ./...
-
diff --git a/.github/workflows/if-nodejs-release.yml b/.github/workflows/if-nodejs-release.yml
index 948edb89..73bffb04 100644
--- a/.github/workflows/if-nodejs-release.yml
+++ b/.github/workflows/if-nodejs-release.yml
@@ -19,6 +19,15 @@ on:
jobs:
test-nodejs:
+ # We just check the message of first commit as there is always just one commit because we squash into one before merging
+ # "commits" contains array of objects where one of the properties is commit "message"
+ # Release workflow will be skipped if release conventional commits are not used
+ if: |
+ startsWith( github.repository, 'asyncapi/' ) &&
+ (startsWith( github.event.commits[0].message , 'fix:' ) ||
+ startsWith( github.event.commits[0].message, 'fix!:' ) ||
+ startsWith( github.event.commits[0].message, 'feat:' ) ||
+ startsWith( github.event.commits[0].message, 'feat!:' ))
name: Test NodeJS release on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
diff --git a/.github/workflows/issues-prs-notifications.yml b/.github/workflows/issues-prs-notifications.yml
index 576b2bac..ca665404 100644
--- a/.github/workflows/issues-prs-notifications.yml
+++ b/.github/workflows/issues-prs-notifications.yml
@@ -5,7 +5,6 @@
name: Notify slack
on:
-
issues:
types: [opened, reopened]
@@ -16,57 +15,56 @@ on:
types: [created]
jobs:
+ issue:
+ if: github.event_name == 'issues' && github.actor != 'asyncapi-bot' && github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]'
+ name: Notify slack on every new issue
+ runs-on: ubuntu-latest
+ steps:
+ - name: Convert markdown to slack markdown for issue
+ uses: LoveToKnow/slackify-markdown-action@v1.0.0
+ id: issuemarkdown
+ with:
+ text: "[${{github.event.issue.title}}](${{github.event.issue.html_url}}) \n ${{github.event.issue.body}}"
+ - name: Send info about issue
+ uses: rtCamp/action-slack-notify@v2
+ env:
+ SLACK_WEBHOOK: ${{secrets.SLACK_GITHUB_NEWISSUEPR}}
+ SLACK_TITLE: 🐛 New Issue in ${{github.repository}} 🐛
+ SLACK_MESSAGE: ${{steps.issuemarkdown.outputs.text}}
+ MSG_MINIMAL: true
- issue:
- if: github.event_name == 'issues' && github.actor != 'asyncapi-bot' && github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]'
- name: Notify slack on every new issue
- runs-on: ubuntu-latest
- steps:
- - name: Convert markdown to slack markdown for issue
- uses: LoveToKnow/slackify-markdown-action@v1.0.0
- id: issuemarkdown
- with:
- text: "[${{github.event.issue.title}}](${{github.event.issue.html_url}}) \n ${{github.event.issue.body}}"
- - name: Send info about issue
- uses: rtCamp/action-slack-notify@v2
- env:
- SLACK_WEBHOOK: ${{secrets.SLACK_GITHUB_NEWISSUEPR}}
- SLACK_TITLE: 🐛 New Issue in ${{github.repository}} 🐛
- SLACK_MESSAGE: ${{steps.issuemarkdown.outputs.text}}
- MSG_MINIMAL: true
+ pull_request:
+ if: github.event_name == 'pull_request_target' && github.actor != 'asyncapi-bot' && github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]'
+ name: Notify slack on every new pull request
+ runs-on: ubuntu-latest
+ steps:
+ - name: Convert markdown to slack markdown for pull request
+ uses: LoveToKnow/slackify-markdown-action@v1.0.0
+ id: prmarkdown
+ with:
+ text: "[${{github.event.pull_request.title}}](${{github.event.pull_request.html_url}}) \n ${{github.event.pull_request.body}}"
+ - name: Send info about pull request
+ uses: rtCamp/action-slack-notify@v2
+ env:
+ SLACK_WEBHOOK: ${{secrets.SLACK_GITHUB_NEWISSUEPR}}
+ SLACK_TITLE: 💪 New Pull Request in ${{github.repository}} 💪
+ SLACK_MESSAGE: ${{steps.prmarkdown.outputs.text}}
+ MSG_MINIMAL: true
- pull_request:
- if: github.event_name == 'pull_request_target' && github.actor != 'asyncapi-bot' && github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]'
- name: Notify slack on every new pull request
- runs-on: ubuntu-latest
- steps:
- - name: Convert markdown to slack markdown for pull request
- uses: LoveToKnow/slackify-markdown-action@v1.0.0
- id: prmarkdown
- with:
- text: "[${{github.event.pull_request.title}}](${{github.event.pull_request.html_url}}) \n ${{github.event.pull_request.body}}"
- - name: Send info about pull request
- uses: rtCamp/action-slack-notify@v2
- env:
- SLACK_WEBHOOK: ${{secrets.SLACK_GITHUB_NEWISSUEPR}}
- SLACK_TITLE: 💪 New Pull Request in ${{github.repository}} 💪
- SLACK_MESSAGE: ${{steps.prmarkdown.outputs.text}}
- MSG_MINIMAL: true
-
- discussion:
- if: github.event_name == 'discussion' && github.actor != 'asyncapi-bot' && github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]'
- name: Notify slack on every new pull request
- runs-on: ubuntu-latest
- steps:
- - name: Convert markdown to slack markdown for pull request
- uses: LoveToKnow/slackify-markdown-action@v1.0.0
- id: discussionmarkdown
- with:
- text: "[${{github.event.discussion.title}}](${{github.event.discussion.html_url}}) \n ${{github.event.discussion.body}}"
- - name: Send info about pull request
- uses: rtCamp/action-slack-notify@v2
- env:
- SLACK_WEBHOOK: ${{secrets.SLACK_GITHUB_NEWISSUEPR}}
- SLACK_TITLE: 💬 New Discussion in ${{github.repository}} 💬
- SLACK_MESSAGE: ${{steps.discussionmarkdown.outputs.text}}
- MSG_MINIMAL: true
+ discussion:
+ if: github.event_name == 'discussion' && github.actor != 'asyncapi-bot' && github.actor != 'dependabot[bot]' && github.actor != 'dependabot-preview[bot]'
+ name: Notify slack on every new pull request
+ runs-on: ubuntu-latest
+ steps:
+ - name: Convert markdown to slack markdown for pull request
+ uses: LoveToKnow/slackify-markdown-action@v1.0.0
+ id: discussionmarkdown
+ with:
+ text: "[${{github.event.discussion.title}}](${{github.event.discussion.html_url}}) \n ${{github.event.discussion.body}}"
+ - name: Send info about pull request
+ uses: rtCamp/action-slack-notify@v2
+ env:
+ SLACK_WEBHOOK: ${{secrets.SLACK_GITHUB_NEWISSUEPR}}
+ SLACK_TITLE: 💬 New Discussion in ${{github.repository}} 💬
+ SLACK_MESSAGE: ${{steps.discussionmarkdown.outputs.text}}
+ MSG_MINIMAL: true
diff --git a/.github/workflows/link-check-cron.yml b/.github/workflows/link-check-cron.yml
index e992e2d6..873d4297 100644
--- a/.github/workflows/link-check-cron.yml
+++ b/.github/workflows/link-check-cron.yml
@@ -8,30 +8,30 @@ on:
schedule:
# At 00:00 UTC on every Monday
- cron: '0 0 * * 0'
-
+
jobs:
External-link-validation-weekly:
if: startsWith(github.repository, 'asyncapi/')
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v3
+
+ # Checks the status of hyperlinks in .md files
+ - name: Check links
+ uses: gaurav-nelson/github-action-markdown-link-check@0a51127e9955b855a9bbfa1ff5577f1d1338c9a5 #1.0.14 but pointing to commit for security reasons
+ with:
+ use-quiet-mode: 'yes'
+ use-verbose-mode: 'yes'
- # Checks the status of hyperlinks in .md files
- - name: Check links
- uses: gaurav-nelson/github-action-markdown-link-check@0a51127e9955b855a9bbfa1ff5577f1d1338c9a5 #1.0.14 but pointing to commit for security reasons
- with:
- use-quiet-mode: 'yes'
- use-verbose-mode: 'yes'
-
- # A configuration file can be included, indicating the properties of the link check action
- # More information can be found here: https://github.com/tcort/markdown-link-check#config-file-format
- # Create mlc_config.json file in the root of the directory
+ # A configuration file can be included, indicating the properties of the link check action
+ # More information can be found here: https://github.com/tcort/markdown-link-check#config-file-format
+ # Create mlc_config.json file in the root of the directory
- - name: Report workflow run status to Slack
- uses: 8398a7/action-slack@v3
- with:
- status: ${{ job.status }}
- fields: repo,action,workflow
- env:
+ - name: Report workflow run status to Slack
+ uses: 8398a7/action-slack@v3
+ with:
+ status: ${{ job.status }}
+ fields: repo,action,workflow
+ env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CI_FAIL_NOTIFY }}
- if: failure() # Only, on failure, send a message on the 94_bot-failing-ci slack channel
+ if: failure() # Only, on failure, send a message on the 94_bot-failing-ci slack channel
diff --git a/.github/workflows/link-check-pr.yml b/.github/workflows/link-check-pr.yml
index deb425cb..51f6cf78 100644
--- a/.github/workflows/link-check-pr.yml
+++ b/.github/workflows/link-check-pr.yml
@@ -3,7 +3,7 @@
name: Check Markdown links
-on:
+on:
pull_request_target:
types: [synchronize, ready_for_review, opened, reopened]
paths:
@@ -13,15 +13,16 @@ jobs:
External-link-validation-on-PR:
runs-on: ubuntu-latest
steps:
- - name: Checkout repo
- uses: actions/checkout@v3
- - name: Check links
- uses: gaurav-nelson/github-action-markdown-link-check@0a51127e9955b855a9bbfa1ff5577f1d1338c9a5 #1.0.14 but pointing to commit for security reasons
- with:
- use-quiet-mode: 'yes'
- use-verbose-mode: 'yes'
- check-modified-files-only: 'yes' # Only modified files are checked on PRs
-
- # A configuration file can be included, indicating the properties of the link check action
- # More information can be found here: https://github.com/tcort/markdown-link-check#config-file-format
- # Create mlc_config.json file in the root of the directory
+ - name: Checkout repo
+ uses: actions/checkout@v3
+ - name: Check links
+ uses: gaurav-nelson/github-action-markdown-link-check@0a51127e9955b855a9bbfa1ff5577f1d1338c9a5 #1.0.14 but pointing to commit for security reasons
+ with:
+ use-quiet-mode: 'yes'
+ use-verbose-mode: 'yes'
+ check-modified-files-only: 'yes' # Only modified files are checked on PRs
+
+
+ # A configuration file can be included, indicating the properties of the link check action
+ # More information can be found here: https://github.com/tcort/markdown-link-check#config-file-format
+ # Create mlc_config.json file in the root of the directory
diff --git a/.github/workflows/lint-pr-title.yml b/.github/workflows/lint-pr-title.yml
index 61835288..c4a942a9 100644
--- a/.github/workflows/lint-pr-title.yml
+++ b/.github/workflows/lint-pr-title.yml
@@ -1,22 +1,20 @@
# This action is centrally managed in https://github.com/asyncapi/.github/
# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
-
-
name: Lint PR title
on:
pull_request_target:
types: [opened, reopened, synchronize, edited, ready_for_review]
-
+
jobs:
lint-pr-title:
- name: Lint PR title
- runs-on: ubuntu-latest
- steps:
+ name: Lint PR title
+ runs-on: ubuntu-latest
+ steps:
# Since this workflow is REQUIRED for a PR to be mergable, we have to have this 'if' statement in step level instead of job level.
- if: ${{ !contains(fromJson('["asyncapi-bot", "dependabot[bot]", "dependabot-preview[bot]", "allcontributors"]'), github.actor) }}
- uses: amannn/action-semantic-pull-request@505e44b4f33b4c801f063838b3f053990ee46ea7 #version 4.6.0
+ uses: amannn/action-semantic-pull-request@505e44b4f33b4c801f063838b3f053990ee46ea7 #version 4.6.0
id: lint_pr_title
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
@@ -24,26 +22,26 @@ jobs:
subjectPattern: ^(?![A-Z]).+$
subjectPatternError: |
The subject "{subject}" found in the pull request title "{title}" should start with a lowercase character.
-
- # Comments the error message from the above lint_pr_title action
- - if: ${{always() && !contains(fromJson('["asyncapi-bot", "dependabot[bot]", "dependabot-preview[bot]", "allcontributors"]'), github.actor)}}
+
+ # Comments the error message from the above lint_pr_title action
+ - if: ${{ always() && steps.lint_pr_title.outputs.error_message != null && !contains(fromJson('["asyncapi-bot", "dependabot[bot]", "dependabot-preview[bot]", "allcontributors"]'), github.actor)}}
name: Comment on PR
- uses: marocchino/sticky-pull-request-comment@39c5b5dc7717447d0cba270cd115037d32d28443 #version 2.2
+ uses: marocchino/sticky-pull-request-comment@39c5b5dc7717447d0cba270cd115037d32d28443 #version 2.2
with:
header: pr-title-lint-error
GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
message: |
-
- We require all PRs to follow [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/).
- More details 👇🏼
- ```
- ${{ steps.lint_pr_title.outputs.error_message}}
- ```
- # deletes the error comment if the title is correct
+
+ We require all PRs to follow [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/).
+ More details 👇🏼
+ ```
+ ${{ steps.lint_pr_title.outputs.error_message}}
+ ```
+ # deletes the error comment if the title is correct
- if: ${{ steps.lint_pr_title.outputs.error_message == null }}
name: delete the comment
- uses: marocchino/sticky-pull-request-comment@39c5b5dc7717447d0cba270cd115037d32d28443 #version 2.2
- with:
+ uses: marocchino/sticky-pull-request-comment@39c5b5dc7717447d0cba270cd115037d32d28443 #version 2.2
+ with:
header: pr-title-lint-error
delete: true
GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
diff --git a/.github/workflows/notify-tsc-members-mention.yml b/.github/workflows/notify-tsc-members-mention.yml
index e33b2625..e681c18a 100644
--- a/.github/workflows/notify-tsc-members-mention.yml
+++ b/.github/workflows/notify-tsc-members-mention.yml
@@ -2,141 +2,296 @@
# Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
# This action notifies community on slack whenever there is a new issue, PR or discussion started in given repository
-name: Notify slack whenever TSC members are mentioned in GitHub
+name: Notify slack and email subscribers whenever TSC members are mentioned in GitHub
on:
- issue_comment:
- types:
- - created
- - edited
-
- discussion_comment:
- types:
- - created
- - edited
-
- issues:
- types:
- - opened
- - reopened
+ issue_comment:
+ types:
+ - created
- pull_request_target:
- types:
- - opened
- - reopened
- - ready_for_review
+ discussion_comment:
+ types:
+ - created
- discussion:
- types:
- - created
- - edited
+ issues:
+ types:
+ - opened
+
+ pull_request_target:
+ types:
+ - opened
+
+ discussion:
+ types:
+ - created
jobs:
+ issue:
+ if: github.event_name == 'issues' && contains(github.event.issue.body, '@asyncapi/tsc_members')
+ name: TSC notification on every new issue
+ runs-on: ubuntu-latest
+ steps:
+ #########
+ # Handling Slack notifications
+ #########
+ - name: Convert markdown to slack markdown
+ uses: LoveToKnow/slackify-markdown-action@v1.0.0
+ id: issuemarkdown
+ with:
+ text: "[${{github.event.issue.title}}](${{github.event.issue.html_url}}) \n ${{github.event.issue.body}}"
+ - name: Send info about issue
+ uses: rtCamp/action-slack-notify@v2
+ env:
+ SLACK_WEBHOOK: ${{secrets.SLACK_TSC_MEMBERS_NOTIFY}}
+ SLACK_TITLE: 🆘 New issue that requires TSC Members attention 🆘
+ SLACK_MESSAGE: ${{steps.issuemarkdown.outputs.text}}
+ MSG_MINIMAL: true
+ #########
+ # Handling Mailchimp notifications
+ #########
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ - name: Setup Node.js
+ uses: actions/setup-node@v2
+ with:
+ node-version: 16
+ cache: 'npm'
+ cache-dependency-path: '**/package-lock.json'
+ - name: Install deps
+ run: npm install
+ working-directory: ./.github/workflows/scripts/mailchimp
+ - name: Send email with MailChimp
+ uses: actions/github-script@v4
+ env:
+ CALENDAR_ID: ${{ secrets.CALENDAR_ID }}
+ CALENDAR_SERVICE_ACCOUNT: ${{ secrets.CALENDAR_SERVICE_ACCOUNT }}
+ MAILCHIMP_API_KEY: ${{ secrets.MAILCHIMP_API_KEY }}
+ with:
+ script: |
+ const sendEmail = require('./.github/workflows/scripts/mailchimp/index.js');
+ sendEmail('${{github.event.issue.html_url}}', '${{github.event.issue.title}}');
- issue:
- if: github.event_name == 'issues' && contains(github.event.issue.body, '@asyncapi/tsc_members')
- name: TSC notification on every new issue
- runs-on: ubuntu-latest
- steps:
- - name: Convert markdown to slack markdown
- uses: LoveToKnow/slackify-markdown-action@v1.0.0
- id: issuemarkdown
- with:
- text: "[${{github.event.issue.title}}](${{github.event.issue.html_url}}) \n ${{github.event.issue.body}}"
- - name: Send info about issue
- uses: rtCamp/action-slack-notify@v2
- env:
- SLACK_WEBHOOK: ${{secrets.SLACK_TSC_MEMBERS_NOTIFY}}
- SLACK_TITLE: 🆘 New issue that requires TSC Members attention 🆘
- SLACK_MESSAGE: ${{steps.issuemarkdown.outputs.text}}
- MSG_MINIMAL: true
+ pull_request:
+ if: github.event_name == 'pull_request_target' && contains(github.event.pull_request.body, '@asyncapi/tsc_members')
+ name: TSC notification on every new pull request
+ runs-on: ubuntu-latest
+ steps:
+ #########
+ # Handling Slack notifications
+ #########
+ - name: Convert markdown to slack markdown
+ uses: LoveToKnow/slackify-markdown-action@v1.0.0
+ id: prmarkdown
+ with:
+ text: "[${{github.event.pull_request.title}}](${{github.event.pull_request.html_url}}) \n ${{github.event.pull_request.body}}"
+ - name: Send info about pull request
+ uses: rtCamp/action-slack-notify@v2
+ env:
+ SLACK_WEBHOOK: ${{secrets.SLACK_TSC_MEMBERS_NOTIFY}}
+ SLACK_TITLE: 🆘 New PR that requires TSC Members attention 🆘
+ SLACK_MESSAGE: ${{steps.prmarkdown.outputs.text}}
+ MSG_MINIMAL: true
+ #########
+ # Handling Mailchimp notifications
+ #########
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ - name: Setup Node.js
+ uses: actions/setup-node@v2
+ with:
+ node-version: 16
+ cache: 'npm'
+ cache-dependency-path: '**/package-lock.json'
+ - name: Install deps
+ run: npm install
+ working-directory: ./.github/workflows/scripts/mailchimp
+ - name: Send email with MailChimp
+ uses: actions/github-script@v4
+ env:
+ CALENDAR_ID: ${{ secrets.CALENDAR_ID }}
+ CALENDAR_SERVICE_ACCOUNT: ${{ secrets.CALENDAR_SERVICE_ACCOUNT }}
+ MAILCHIMP_API_KEY: ${{ secrets.MAILCHIMP_API_KEY }}
+ with:
+ script: |
+ const sendEmail = require('./.github/workflows/scripts/mailchimp/index.js');
+ sendEmail('${{github.event.pull_request.html_url}}', '${{github.event.pull_request.title}}');
- pull_request:
- if: github.event_name == 'pull_request_target' && contains(github.event.pull_request.body, '@asyncapi/tsc_members')
- name: TSC notification on every new pull request
- runs-on: ubuntu-latest
- steps:
- - name: Convert markdown to slack markdown
- uses: LoveToKnow/slackify-markdown-action@v1.0.0
- id: prmarkdown
- with:
- text: "[${{github.event.pull_request.title}}](${{github.event.pull_request.html_url}}) \n ${{github.event.pull_request.body}}"
- - name: Send info about pull request
- uses: rtCamp/action-slack-notify@v2
- env:
- SLACK_WEBHOOK: ${{secrets.SLACK_TSC_MEMBERS_NOTIFY}}
- SLACK_TITLE: 🆘 New PR that requires TSC Members attention 🆘
- SLACK_MESSAGE: ${{steps.prmarkdown.outputs.text}}
- MSG_MINIMAL: true
-
- discussion:
- if: github.event_name == 'discussion' && contains(github.event.discussion.body, '@asyncapi/tsc_members')
- name: TSC notification on every new discussion
- runs-on: ubuntu-latest
- steps:
- - name: Convert markdown to slack markdown
- uses: LoveToKnow/slackify-markdown-action@v1.0.0
- id: discussionmarkdown
- with:
- text: "[${{github.event.discussion.title}}](${{github.event.discussion.html_url}}) \n ${{github.event.discussion.body}}"
- - name: Send info about pull request
- uses: rtCamp/action-slack-notify@v2
- env:
- SLACK_WEBHOOK: ${{secrets.SLACK_TSC_MEMBERS_NOTIFY}}
- SLACK_TITLE: 🆘 New discussion that requires TSC Members attention 🆘
- SLACK_MESSAGE: ${{steps.discussionmarkdown.outputs.text}}
- MSG_MINIMAL: true
+ discussion:
+ if: github.event_name == 'discussion' && contains(github.event.discussion.body, '@asyncapi/tsc_members')
+ name: TSC notification on every new discussion
+ runs-on: ubuntu-latest
+ steps:
+ #########
+ # Handling Slack notifications
+ #########
+ - name: Convert markdown to slack markdown
+ uses: LoveToKnow/slackify-markdown-action@v1.0.0
+ id: discussionmarkdown
+ with:
+ text: "[${{github.event.discussion.title}}](${{github.event.discussion.html_url}}) \n ${{github.event.discussion.body}}"
+ - name: Send info about pull request
+ uses: rtCamp/action-slack-notify@v2
+ env:
+ SLACK_WEBHOOK: ${{secrets.SLACK_TSC_MEMBERS_NOTIFY}}
+ SLACK_TITLE: 🆘 New discussion that requires TSC Members attention 🆘
+ SLACK_MESSAGE: ${{steps.discussionmarkdown.outputs.text}}
+ MSG_MINIMAL: true
+ #########
+ # Handling Mailchimp notifications
+ #########
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ - name: Setup Node.js
+ uses: actions/setup-node@v2
+ with:
+ node-version: 16
+ cache: 'npm'
+ cache-dependency-path: '**/package-lock.json'
+ - name: Install deps
+ run: npm install
+ working-directory: ./.github/workflows/scripts/mailchimp
+ - name: Send email with MailChimp
+ uses: actions/github-script@v4
+ env:
+ CALENDAR_ID: ${{ secrets.CALENDAR_ID }}
+ CALENDAR_SERVICE_ACCOUNT: ${{ secrets.CALENDAR_SERVICE_ACCOUNT }}
+ MAILCHIMP_API_KEY: ${{ secrets.MAILCHIMP_API_KEY }}
+ with:
+ script: |
+ const sendEmail = require('./.github/workflows/scripts/mailchimp/index.js');
+ sendEmail('${{github.event.discussion.html_url}}', '${{github.event.discussion.title}}');
- issue_comment:
- if: ${{ github.event_name == 'issue_comment' && !github.event.issue.pull_request && contains(github.event.comment.body, '@asyncapi/tsc_members') }}
- name: TSC notification on every new comment in issue
- runs-on: ubuntu-latest
- steps:
- - name: Convert markdown to slack markdown
- uses: LoveToKnow/slackify-markdown-action@v1.0.0
- id: issuemarkdown
- with:
- text: "[${{github.event.issue.title}}](${{github.event.comment.html_url}}) \n ${{github.event.comment.body}}"
- - name: Send info about issue comment
- uses: rtCamp/action-slack-notify@v2
- env:
- SLACK_WEBHOOK: ${{secrets.SLACK_TSC_MEMBERS_NOTIFY}}
- SLACK_TITLE: 🆘 New comment under existing issue that requires TSC Members attention 🆘
- SLACK_MESSAGE: ${{steps.issuemarkdown.outputs.text}}
- MSG_MINIMAL: true
+ issue_comment:
+ if: ${{ github.event_name == 'issue_comment' && !github.event.issue.pull_request && contains(github.event.comment.body, '@asyncapi/tsc_members') }}
+ name: TSC notification on every new comment in issue
+ runs-on: ubuntu-latest
+ steps:
+ #########
+ # Handling Slack notifications
+ #########
+ - name: Convert markdown to slack markdown
+ uses: LoveToKnow/slackify-markdown-action@v1.0.0
+ id: issuemarkdown
+ with:
+ text: "[${{github.event.issue.title}}](${{github.event.comment.html_url}}) \n ${{github.event.comment.body}}"
+ - name: Send info about issue comment
+ uses: rtCamp/action-slack-notify@v2
+ env:
+ SLACK_WEBHOOK: ${{secrets.SLACK_TSC_MEMBERS_NOTIFY}}
+ SLACK_TITLE: 🆘 New comment under existing issue that requires TSC Members attention 🆘
+ SLACK_MESSAGE: ${{steps.issuemarkdown.outputs.text}}
+ MSG_MINIMAL: true
+ #########
+ # Handling Mailchimp notifications
+ #########
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ - name: Setup Node.js
+ uses: actions/setup-node@v2
+ with:
+ node-version: 16
+ cache: 'npm'
+ cache-dependency-path: '**/package-lock.json'
+ - name: Install deps
+ run: npm install
+ working-directory: ./.github/workflows/scripts/mailchimp
+ - name: Send email with MailChimp
+ uses: actions/github-script@v4
+ env:
+ CALENDAR_ID: ${{ secrets.CALENDAR_ID }}
+ CALENDAR_SERVICE_ACCOUNT: ${{ secrets.CALENDAR_SERVICE_ACCOUNT }}
+ MAILCHIMP_API_KEY: ${{ secrets.MAILCHIMP_API_KEY }}
+ with:
+ script: |
+ const sendEmail = require('./.github/workflows/scripts/mailchimp/index.js');
+ sendEmail('${{github.event.comment.html_url}}', '${{github.event.issue.title}}');
- pr_comment:
- if: github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, '@asyncapi/tsc_members')
- name: TSC notification on every new comment in pr
- runs-on: ubuntu-latest
- steps:
- - name: Convert markdown to slack markdown
- uses: LoveToKnow/slackify-markdown-action@v1.0.0
- id: prmarkdown
- with:
- text: "[${{github.event.issue.title}}](${{github.event.comment.html_url}}) \n ${{github.event.comment.body}}"
- - name: Send info about PR comment
- uses: rtCamp/action-slack-notify@v2
- env:
- SLACK_WEBHOOK: ${{secrets.SLACK_TSC_MEMBERS_NOTIFY}}
- SLACK_TITLE: 🆘 New comment under existing PR that requires TSC Members attention 🆘
- SLACK_MESSAGE: ${{steps.prmarkdown.outputs.text}}
- MSG_MINIMAL: true
+ pr_comment:
+ if: github.event_name == 'issue_comment' && github.event.issue.pull_request && contains(github.event.comment.body, '@asyncapi/tsc_members')
+ name: TSC notification on every new comment in pr
+ runs-on: ubuntu-latest
+ steps:
+ #########
+ # Handling Slack notifications
+ #########
+ - name: Convert markdown to slack markdown
+ uses: LoveToKnow/slackify-markdown-action@v1.0.0
+ id: prmarkdown
+ with:
+ text: "[${{github.event.issue.title}}](${{github.event.comment.html_url}}) \n ${{github.event.comment.body}}"
+ - name: Send info about PR comment
+ uses: rtCamp/action-slack-notify@v2
+ env:
+ SLACK_WEBHOOK: ${{secrets.SLACK_TSC_MEMBERS_NOTIFY}}
+ SLACK_TITLE: 🆘 New comment under existing PR that requires TSC Members attention 🆘
+ SLACK_MESSAGE: ${{steps.prmarkdown.outputs.text}}
+ MSG_MINIMAL: true
+ #########
+ # Handling Mailchimp notifications
+ #########
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ - name: Setup Node.js
+ uses: actions/setup-node@v2
+ with:
+ node-version: 16
+ cache: 'npm'
+ cache-dependency-path: '**/package-lock.json'
+ - name: Install deps
+ run: npm install
+ working-directory: ./.github/workflows/scripts/mailchimp
+ - name: Send email with MailChimp
+ uses: actions/github-script@v4
+ env:
+ CALENDAR_ID: ${{ secrets.CALENDAR_ID }}
+ CALENDAR_SERVICE_ACCOUNT: ${{ secrets.CALENDAR_SERVICE_ACCOUNT }}
+ MAILCHIMP_API_KEY: ${{ secrets.MAILCHIMP_API_KEY }}
+ with:
+ script: |
+ const sendEmail = require('./.github/workflows/scripts/mailchimp/index.js');
+ sendEmail('${{github.event.comment.html_url}}', '${{github.event.issue.title}}');
- discussion_comment:
- if: github.event_name == 'discussion_comment' && contains(github.event.comment.body, '@asyncapi/tsc_members')
- name: TSC notification on every new comment in discussion
- runs-on: ubuntu-latest
- steps:
- - name: Convert markdown to slack markdown
- uses: LoveToKnow/slackify-markdown-action@v1.0.0
- id: discussionmarkdown
- with:
- text: "[${{github.event.discussion.title}}](${{github.event.comment.html_url}}) \n ${{github.event.comment.body}}"
- - name: Send info about discussion comment
- uses: rtCamp/action-slack-notify@v2
- env:
- SLACK_WEBHOOK: ${{secrets.SLACK_TSC_MEMBERS_NOTIFY}}
- SLACK_TITLE: 🆘 New comment under existing discussion that requires TSC Members attention 🆘
- SLACK_MESSAGE: ${{steps.discussionmarkdown.outputs.text}}
- MSG_MINIMAL: true
\ No newline at end of file
+ discussion_comment:
+ if: github.event_name == 'discussion_comment' && contains(github.event.comment.body, '@asyncapi/tsc_members')
+ name: TSC notification on every new comment in discussion
+ runs-on: ubuntu-latest
+ steps:
+ #########
+ # Handling Slack notifications
+ #########
+ - name: Convert markdown to slack markdown
+ uses: LoveToKnow/slackify-markdown-action@v1.0.0
+ id: discussionmarkdown
+ with:
+ text: "[${{github.event.discussion.title}}](${{github.event.comment.html_url}}) \n ${{github.event.comment.body}}"
+ - name: Send info about discussion comment
+ uses: rtCamp/action-slack-notify@v2
+ env:
+ SLACK_WEBHOOK: ${{secrets.SLACK_TSC_MEMBERS_NOTIFY}}
+ SLACK_TITLE: 🆘 New comment under existing discussion that requires TSC Members attention 🆘
+ SLACK_MESSAGE: ${{steps.discussionmarkdown.outputs.text}}
+ MSG_MINIMAL: true
+ #########
+ # Handling Mailchimp notifications
+ #########
+ - name: Checkout repository
+ uses: actions/checkout@v2
+ - name: Setup Node.js
+ uses: actions/setup-node@v2
+ with:
+ node-version: 16
+ cache: 'npm'
+ cache-dependency-path: '**/package-lock.json'
+ - name: Install deps
+ run: npm install
+ working-directory: ./.github/workflows/scripts/mailchimp
+ - name: Send email with MailChimp
+ uses: actions/github-script@v4
+ env:
+ CALENDAR_ID: ${{ secrets.CALENDAR_ID }}
+ CALENDAR_SERVICE_ACCOUNT: ${{ secrets.CALENDAR_SERVICE_ACCOUNT }}
+ MAILCHIMP_API_KEY: ${{ secrets.MAILCHIMP_API_KEY }}
+ with:
+ script: |
+ const sendEmail = require('./.github/workflows/scripts/mailchimp/index.js');
+ sendEmail('${{github.event.comment.html_url}}', '${{github.event.discussion.title}}');
diff --git a/.github/workflows/scripts/README.md b/.github/workflows/scripts/README.md
new file mode 100644
index 00000000..ba97dca0
--- /dev/null
+++ b/.github/workflows/scripts/README.md
@@ -0,0 +1 @@
+The entire `scripts` directory is centrally managed in [.github](https://github.com/asyncapi/.github/) repository. Any changes in this folder should be done in central repository.
\ No newline at end of file
diff --git a/.github/workflows/scripts/mailchimp/htmlContent.js b/.github/workflows/scripts/mailchimp/htmlContent.js
new file mode 100644
index 00000000..d132c72f
--- /dev/null
+++ b/.github/workflows/scripts/mailchimp/htmlContent.js
@@ -0,0 +1,495 @@
+/**
+ * This code is centrally managed in https://github.com/asyncapi/.github/
+ * Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
+ */
+module.exports = (link, title) => {
+
+ return `
+
+
+
+
+
+
+
+ *|MC:SUBJECT|*
+
+
+
+
+ *|MC_PREVIEW_TEXT|*
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cheers,
+AsyncAPI Initiative
+ |
+
+
+
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+`
+}
\ No newline at end of file
diff --git a/.github/workflows/scripts/mailchimp/index.js b/.github/workflows/scripts/mailchimp/index.js
new file mode 100644
index 00000000..4a200c6c
--- /dev/null
+++ b/.github/workflows/scripts/mailchimp/index.js
@@ -0,0 +1,79 @@
+/**
+ * This code is centrally managed in https://github.com/asyncapi/.github/
+ * Don't make changes to this file in this repo as they will be overwritten with changes made to the same file in above mentioned repo
+ */
+const mailchimp = require('@mailchimp/mailchimp_marketing');
+const core = require('@actions/core');
+const htmlContent = require('./htmlContent.js');
+
+/**
+ * Sending API request to mailchimp to schedule email to subscribers
+ * Input is the URL to issue/discussion or other resource
+ */
+module.exports = async (link, title) => {
+
+ let newCampaign;
+
+ mailchimp.setConfig({
+ apiKey: process.env.MAILCHIMP_API_KEY,
+ server: 'us12'
+ });
+
+ /*
+ * First we create campaign
+ */
+ try {
+ newCampaign = await mailchimp.campaigns.create({
+ type: 'regular',
+ recipients: {
+ list_id: '6e3e437abe',
+ segment_opts: {
+ match: 'any',
+ conditions: [{
+ condition_type: 'Interests',
+ field: 'interests-2801e38b9f',
+ op: 'interestcontains',
+ value: ['f7204f9b90']
+ }]
+ }
+ },
+ settings: {
+ subject_line: `TSC attention required: ${ title }`,
+ preview_text: 'Check out the latest topic that TSC members have to be aware of',
+ title: `New topic info - ${ new Date(Date.now()).toUTCString()}`,
+ from_name: 'AsyncAPI Initiative',
+ reply_to: 'info@asyncapi.io',
+ }
+ });
+ } catch (error) {
+ return core.setFailed(`Failed creating campaign: ${ JSON.stringify(error) }`);
+ }
+
+ /*
+ * Content of the email is added separately after campaign creation
+ */
+ try {
+ await mailchimp.campaigns.setContent(newCampaign.id, { html: htmlContent(link, title) });
+ } catch (error) {
+ return core.setFailed(`Failed adding content to campaign: ${ JSON.stringify(error) }`);
+ }
+
+ /*
+ * We schedule an email to send it immediately
+ */
+ try {
+ //schedule for next hour
+ //so if this code was created by new issue creation at 9:46, the email is scheduled for 10:00
+ //is it like this as schedule has limitiations and you cannot schedule email for 9:48
+ const scheduleDate = new Date(Date.parse(new Date(Date.now()).toISOString()) + 1 * 1 * 60 * 60 * 1000);
+ scheduleDate.setUTCMinutes(00);
+
+ await mailchimp.campaigns.schedule(newCampaign.id, {
+ schedule_time: scheduleDate.toISOString(),
+ });
+ } catch (error) {
+ return core.setFailed(`Failed scheduling email: ${ JSON.stringify(error) }`);
+ }
+
+ core.info(`New email campaign created`);
+}
\ No newline at end of file
diff --git a/.github/workflows/scripts/mailchimp/package-lock.json b/.github/workflows/scripts/mailchimp/package-lock.json
new file mode 100644
index 00000000..e7f57038
--- /dev/null
+++ b/.github/workflows/scripts/mailchimp/package-lock.json
@@ -0,0 +1,612 @@
+{
+ "name": "schedule-email",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "schedule-email",
+ "license": "Apache 2.0",
+ "dependencies": {
+ "@actions/core": "1.9.1",
+ "@mailchimp/mailchimp_marketing": "3.0.74"
+ }
+ },
+ "node_modules/@actions/core": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz",
+ "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==",
+ "dependencies": {
+ "@actions/http-client": "^2.0.1",
+ "uuid": "^8.3.2"
+ }
+ },
+ "node_modules/@actions/http-client": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
+ "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
+ "dependencies": {
+ "tunnel": "^0.0.6"
+ }
+ },
+ "node_modules/@mailchimp/mailchimp_marketing": {
+ "version": "3.0.74",
+ "resolved": "https://registry.npmjs.org/@mailchimp/mailchimp_marketing/-/mailchimp_marketing-3.0.74.tgz",
+ "integrity": "sha512-039iu4GRr7wpXqweBLuS05wvOBtPxSa31cjxgftBYSt7031f0sHEi8Up2DicfbSuQK0AynPDeVyuxrb31Lx+yQ==",
+ "dependencies": {
+ "dotenv": "^8.2.0",
+ "superagent": "3.8.1"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
+ },
+ "node_modules/cookiejar": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz",
+ "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ=="
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
+ "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "node_modules/form-data": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
+ "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
+ }
+ },
+ "node_modules/formidable": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz",
+ "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==",
+ "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau",
+ "funding": {
+ "url": "https://ko-fi.com/tunnckoCore/commissions"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+ "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
+ "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "node_modules/qs": {
+ "version": "6.10.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
+ "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/readable-stream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string_decoder/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/superagent": {
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.1.tgz",
+ "integrity": "sha512-VMBFLYgFuRdfeNQSMLbxGSLfmXL/xc+OO+BZp41Za/NRDBet/BNbkRJrYzCUu0u4GU0i/ml2dtT8b9qgkw9z6Q==",
+ "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .",
+ "dependencies": {
+ "component-emitter": "^1.2.0",
+ "cookiejar": "^2.1.0",
+ "debug": "^3.1.0",
+ "extend": "^3.0.0",
+ "form-data": "^2.3.1",
+ "formidable": "^1.1.1",
+ "methods": "^1.1.1",
+ "mime": "^1.4.1",
+ "qs": "^6.5.1",
+ "readable-stream": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 4.0"
+ }
+ },
+ "node_modules/superagent/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "engines": {
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "node_modules/uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
+ "bin": {
+ "uuid": "dist/bin/uuid"
+ }
+ }
+ },
+ "dependencies": {
+ "@actions/core": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz",
+ "integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==",
+ "requires": {
+ "@actions/http-client": "^2.0.1",
+ "uuid": "^8.3.2"
+ }
+ },
+ "@actions/http-client": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
+ "integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
+ "requires": {
+ "tunnel": "^0.0.6"
+ }
+ },
+ "@mailchimp/mailchimp_marketing": {
+ "version": "3.0.74",
+ "resolved": "https://registry.npmjs.org/@mailchimp/mailchimp_marketing/-/mailchimp_marketing-3.0.74.tgz",
+ "integrity": "sha512-039iu4GRr7wpXqweBLuS05wvOBtPxSa31cjxgftBYSt7031f0sHEi8Up2DicfbSuQK0AynPDeVyuxrb31Lx+yQ==",
+ "requires": {
+ "dotenv": "^8.2.0",
+ "superagent": "3.8.1"
+ }
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+ },
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
+ },
+ "cookiejar": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz",
+ "integrity": "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ=="
+ },
+ "core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+ },
+ "dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz",
+ "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g=="
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "form-data": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz",
+ "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "formidable": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz",
+ "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ=="
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "get-intrinsic": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+ "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "object-inspect": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
+ "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g=="
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "qs": {
+ "version": "6.10.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
+ "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ }
+ }
+ },
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ }
+ }
+ },
+ "superagent": {
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.1.tgz",
+ "integrity": "sha512-VMBFLYgFuRdfeNQSMLbxGSLfmXL/xc+OO+BZp41Za/NRDBet/BNbkRJrYzCUu0u4GU0i/ml2dtT8b9qgkw9z6Q==",
+ "requires": {
+ "component-emitter": "^1.2.0",
+ "cookiejar": "^2.1.0",
+ "debug": "^3.1.0",
+ "extend": "^3.0.0",
+ "form-data": "^2.3.1",
+ "formidable": "^1.1.1",
+ "methods": "^1.1.1",
+ "mime": "^1.4.1",
+ "qs": "^6.5.1",
+ "readable-stream": "^2.0.5"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ }
+ }
+ },
+ "tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
+ }
+ }
+}
diff --git a/.github/workflows/scripts/mailchimp/package.json b/.github/workflows/scripts/mailchimp/package.json
new file mode 100644
index 00000000..28b447ff
--- /dev/null
+++ b/.github/workflows/scripts/mailchimp/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "schedule-email",
+ "description": "This code is responsible for scheduling an email campaign. This file is centrally managed in https://github.com/asyncapi/.github/",
+ "license": "Apache 2.0",
+ "dependencies": {
+ "@actions/core": "1.9.1",
+ "@mailchimp/mailchimp_marketing": "3.0.74"
+ }
+}
\ No newline at end of file
diff --git a/CODEOWNERS b/CODEOWNERS
index 864dbb4b..23129c54 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -6,4 +6,4 @@
# The default owners are automatically added as reviewers when you open a pull request unless different owners are specified in the file.
-* @fmvilas @derberg @dalelane @asyncapi-bot-eve
\ No newline at end of file
+* @fmvilas @derberg @dalelane @smoya @char0n @asyncapi-bot-eve
\ No newline at end of file
diff --git a/README.md b/README.md
index d15d343a..26e3dc99 100644
--- a/README.md
+++ b/README.md
@@ -1,18 +1,23 @@
![npm](https://img.shields.io/npm/v/@asyncapi/specs?style=for-the-badge) ![npm](https://img.shields.io/npm/dt/@asyncapi/specs?style=for-the-badge)
-> If you are currently using version 2, check out [migration guideline to version 3](./migrations/Migrate%20to%20version%203.md). You might be able to update it without any change.
+
# AsyncAPI
+
This is a mono repository, which provides all the JSON Schema documents for validating AsyncAPI documents.
+
## Overview
+
* This repository contains [JSON Schema](https://json-schema.org) files for all the versions of AsyncAPI specification.
* These JSON Schema files do not reflect 1:1 the specification and shouldn't be treated as specification itself but rather as a tool (e.g., for validation).
* These JSON Schema files shouldn't be used as the only tool for validating AsyncAPI documents because some rules described in the AsyncAPI specification can't be described with JSON Schema.
* In addition, this repo provides JavaScript and Go modules that make it easier to access JSON Schema files through code.
## Custom Validation Needs
+
If you decide to validate AsyncAPI documents only with the JSON Schema files provided in this repo, your AsyncAPI documents will not be properly validated.
It's recommended to use [AsyncAPI JavaScript Parser](https://github.com/asyncapi/parser-js) that uses the AsyncAPI JSON Schema files for validation but also implements additional custom validations.
- The following additional custom validations need to be provided:
+The following additional custom validations need to be provided:
+
* Variables provided in the URL property have a corresponding variable object defined and its example is correct.
* operationIds are not duplicated in the document.
* messageIds are not duplicated in the document.
@@ -29,14 +34,19 @@ All test cases and parsers coverage can be found [here](https://asyncapi.github.
## Installation
### NodeJS
+
```bash
npm install @asyncapi/specs
+// OR by Yarn
+yarn add @asyncapi/specs
```
### Go
+
```bash
go get github.com/asyncapi/spec-json-schemas/v2
```
+
## Usage
### NodeJS
@@ -49,7 +59,7 @@ const asyncapi = require('@asyncapi/specs/schemas/2.0.0');
// Do something with the schema.
```
-Get a list of versions:
+Get a list of supported versions:
```js
const versions = require('@asyncapi/specs');
@@ -66,7 +76,12 @@ const asyncapi = versions['1.1.0'];
// Do something with the schema.
```
+
+> **Note**
+> The main export of the package provides only supported versions of AsyncAPI (newer or equal to `2.0.0`). To use older ones (e.g. `1.2.0`) please import an absolute path like `@asyncapi/specs/schemas/1.2.0`;
+
### Go
+
Grab a specific AsyncAPI version:
```go
@@ -81,13 +96,22 @@ func Do() {
// Do something with the schema
}
```
+
+## Migration guidelines
+
+If you are currently using version 2, check out [migration guideline to version 3](./migrations/migrate-to-version-3.md).
+If you are currently using version 3, check out [migration guideline to version 4](./migrations/migrate-to-version-4.md).
+
## Repository structure
-This is the current project structure explained.
+
+This is the current project structure explained:
+
- [./definitions](./definitions) - contain all the individual schemas that will automatically be bundled together to provide the schemas in [./schemas](./schemas).
- [./tools/bundler](./tools/bundler) - is the tool that bundles all the individual schemas together.
- [./schemas](./schemas) - contain all automatically bundled and complete schemas for each AsyncAPI version. These schemas should **NOT** be manually changed as they are automatically generated. Any changes should be done in [./definitions](./definitions).
## Schema Bundling
+
Changes should not be done manually to the schemas in [./schemas](./schemas), but instead be done in their individual definitions located in [./definitions](./definitions).
These definitions are automatically bundled together on new releases through the npm script `prepublishOnly`, which ensures the project is build. This is where the [bundler](./tools/bundler) is called.
@@ -95,10 +119,13 @@ These definitions are automatically bundled together on new releases through the
For example, for [2.2.0](./definitions/2.2.0), the [bundler](./tools/bundler/index.js) starts with the [asyncapi.json](definitions/2.2.0/asyncapi.json) file and recursively goes through all references (`$ref`) to create the [appropriate bundled version](./schemas/2.2.0.json).
### Creating a new version
+
To create a new version, simply run the following command:
-```
+
+```bash
npm run startNewVersion --new-version=x.x.x
```
+
Where `x.x.x` is the new version you want to create.
The manual process of creating a new version is to:
@@ -106,7 +133,9 @@ The manual process of creating a new version is to:
2. Rename the folder to the new version (`x.x.x`).
3. Search and replace in the new duplicated folder for `y.y.y` and replace it with `x.x.x`.
4. Edit the [index.js](./index.js) file adding a new line with the new version. I.e. `'2.5.0': require('./schemas/2.5.0.json'),`.
-5. Edit the [schemas/all.schema-store.json](./schemas/all.schema-store.json) file adding a new entry under the `oneOf` keyword with the new version. I.e.:
+5. Edit the [index.d.ts](./index.d.ts) file adding a new line with the types for the new version. I.e. `'2.5.0': JSONSchema7,`.
+6. Edit the [schemas/all.schema-store.json](./schemas/all.schema-store.json) file adding a new entry under the `oneOf` keyword with the new version. I.e.:
+
```json
{
"allOf":[
@@ -122,7 +151,4 @@ The manual process of creating a new version is to:
}
]
}
- ```
-
-
-
+ ```
\ No newline at end of file
diff --git a/definitions/2.5.0/APIKeyHTTPSecurityScheme.json b/definitions/2.5.0/APIKeyHTTPSecurityScheme.json
new file mode 100644
index 00000000..ad524dfe
--- /dev/null
+++ b/definitions/2.5.0/APIKeyHTTPSecurityScheme.json
@@ -0,0 +1,38 @@
+{
+ "type": "object",
+ "required": [
+ "type",
+ "name",
+ "in"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "httpApiKey"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "in": {
+ "type": "string",
+ "enum": [
+ "header",
+ "query",
+ "cookie"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/APIKeyHTTPSecurityScheme.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/BearerHTTPSecurityScheme.json b/definitions/2.5.0/BearerHTTPSecurityScheme.json
new file mode 100644
index 00000000..f1536a5a
--- /dev/null
+++ b/definitions/2.5.0/BearerHTTPSecurityScheme.json
@@ -0,0 +1,35 @@
+{
+ "type": "object",
+ "required": [
+ "type",
+ "scheme"
+ ],
+ "properties": {
+ "scheme": {
+ "type": "string",
+ "enum": [
+ "bearer"
+ ]
+ },
+ "bearerFormat": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "http"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/BearerHTTPSecurityScheme.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/HTTPSecurityScheme.json b/definitions/2.5.0/HTTPSecurityScheme.json
new file mode 100644
index 00000000..1ce09df2
--- /dev/null
+++ b/definitions/2.5.0/HTTPSecurityScheme.json
@@ -0,0 +1,15 @@
+{
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/NonBearerHTTPSecurityScheme.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/BearerHTTPSecurityScheme.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/APIKeyHTTPSecurityScheme.json"
+ }
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/HTTPSecurityScheme.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/NonBearerHTTPSecurityScheme.json b/definitions/2.5.0/NonBearerHTTPSecurityScheme.json
new file mode 100644
index 00000000..21d127cf
--- /dev/null
+++ b/definitions/2.5.0/NonBearerHTTPSecurityScheme.json
@@ -0,0 +1,40 @@
+{
+ "not": {
+ "type": "object",
+ "properties": {
+ "scheme": {
+ "type": "string",
+ "enum": [
+ "bearer"
+ ]
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "scheme",
+ "type"
+ ],
+ "properties": {
+ "scheme": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "http"
+ ]
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/NonBearerHTTPSecurityScheme.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/Reference.json b/definitions/2.5.0/Reference.json
new file mode 100644
index 00000000..5249b422
--- /dev/null
+++ b/definitions/2.5.0/Reference.json
@@ -0,0 +1,13 @@
+{
+ "type": "object",
+ "required": [
+ "$ref"
+ ],
+ "properties": {
+ "$ref": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/ReferenceObject.json"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/ReferenceObject.json b/definitions/2.5.0/ReferenceObject.json
new file mode 100644
index 00000000..92ff26f4
--- /dev/null
+++ b/definitions/2.5.0/ReferenceObject.json
@@ -0,0 +1,6 @@
+{
+ "type": "string",
+ "format": "uri-reference",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/ReferenceObject.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/SaslGssapiSecurityScheme.json b/definitions/2.5.0/SaslGssapiSecurityScheme.json
new file mode 100644
index 00000000..ad22b0a0
--- /dev/null
+++ b/definitions/2.5.0/SaslGssapiSecurityScheme.json
@@ -0,0 +1,25 @@
+{
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "gssapi"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/SaslGssapiSecurityScheme.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/SaslPlainSecurityScheme.json b/definitions/2.5.0/SaslPlainSecurityScheme.json
new file mode 100644
index 00000000..c2457894
--- /dev/null
+++ b/definitions/2.5.0/SaslPlainSecurityScheme.json
@@ -0,0 +1,25 @@
+{
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "plain"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/SaslPlainSecurityScheme.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/SaslScramSecurityScheme.json b/definitions/2.5.0/SaslScramSecurityScheme.json
new file mode 100644
index 00000000..9c9f52c8
--- /dev/null
+++ b/definitions/2.5.0/SaslScramSecurityScheme.json
@@ -0,0 +1,26 @@
+{
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "scramSha256",
+ "scramSha512"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/SaslScramSecurityScheme.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/SaslSecurityScheme.json b/definitions/2.5.0/SaslSecurityScheme.json
new file mode 100644
index 00000000..fdcb02c6
--- /dev/null
+++ b/definitions/2.5.0/SaslSecurityScheme.json
@@ -0,0 +1,15 @@
+{
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SaslPlainSecurityScheme.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SaslScramSecurityScheme.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SaslGssapiSecurityScheme.json"
+ }
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/SaslSecurityScheme.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/SecurityRequirement.json b/definitions/2.5.0/SecurityRequirement.json
new file mode 100644
index 00000000..04f6b485
--- /dev/null
+++ b/definitions/2.5.0/SecurityRequirement.json
@@ -0,0 +1,12 @@
+{
+ "type": "object",
+ "additionalProperties": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/SecurityRequirement.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/SecurityScheme.json b/definitions/2.5.0/SecurityScheme.json
new file mode 100644
index 00000000..5f923079
--- /dev/null
+++ b/definitions/2.5.0/SecurityScheme.json
@@ -0,0 +1,33 @@
+{
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/userPassword.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/apiKey.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/X509.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/symmetricEncryption.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/asymmetricEncryption.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/HTTPSecurityScheme.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/oauth2Flows.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/openIdConnect.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SaslSecurityScheme.json"
+ }
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/SecurityScheme.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/X509.json b/definitions/2.5.0/X509.json
new file mode 100644
index 00000000..9b660902
--- /dev/null
+++ b/definitions/2.5.0/X509.json
@@ -0,0 +1,25 @@
+{
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "X509"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/X509.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/apiKey.json b/definitions/2.5.0/apiKey.json
new file mode 100644
index 00000000..5b18fd7b
--- /dev/null
+++ b/definitions/2.5.0/apiKey.json
@@ -0,0 +1,33 @@
+{
+ "type": "object",
+ "required": [
+ "type",
+ "in"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "apiKey"
+ ]
+ },
+ "in": {
+ "type": "string",
+ "enum": [
+ "user",
+ "password"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/apiKey.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/asymmetricEncryption.json b/definitions/2.5.0/asymmetricEncryption.json
new file mode 100644
index 00000000..d8f01ae7
--- /dev/null
+++ b/definitions/2.5.0/asymmetricEncryption.json
@@ -0,0 +1,25 @@
+{
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "asymmetricEncryption"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/asymmetricEncryption.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/asyncapi.json b/definitions/2.5.0/asyncapi.json
new file mode 100644
index 00000000..0fc8db14
--- /dev/null
+++ b/definitions/2.5.0/asyncapi.json
@@ -0,0 +1,56 @@
+{
+ "title": "AsyncAPI 2.5.0 schema.",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/asyncapi.json",
+ "type": "object",
+ "required": [
+ "asyncapi",
+ "info",
+ "channels"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "asyncapi": {
+ "type": "string",
+ "enum": [
+ "2.5.0"
+ ],
+ "description": "The AsyncAPI specification version of this document."
+ },
+ "id": {
+ "type": "string",
+ "description": "A unique id representing the application.",
+ "format": "uri"
+ },
+ "info": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/info.json"
+ },
+ "servers": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/servers.json"
+ },
+ "defaultContentType": {
+ "type": "string"
+ },
+ "channels": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/channels.json"
+ },
+ "components": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/components.json"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/tag.json"
+ },
+ "uniqueItems": true
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ }
+ }
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/bindingsObject.json b/definitions/2.5.0/bindingsObject.json
new file mode 100644
index 00000000..3f75a27d
--- /dev/null
+++ b/definitions/2.5.0/bindingsObject.json
@@ -0,0 +1,24 @@
+{
+ "type": "object",
+ "additionalProperties": true,
+ "properties": {
+ "http": {},
+ "ws": {},
+ "amqp": {},
+ "amqp1": {},
+ "mqtt": {},
+ "mqtt5": {},
+ "kafka": {},
+ "anypointmq": {},
+ "nats": {},
+ "jms": {},
+ "sns": {},
+ "sqs": {},
+ "stomp": {},
+ "redis": {},
+ "ibmmq": {},
+ "solace": {}
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/channelItem.json b/definitions/2.5.0/channelItem.json
new file mode 100644
index 00000000..bc3eb667
--- /dev/null
+++ b/definitions/2.5.0/channelItem.json
@@ -0,0 +1,47 @@
+{
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "$ref": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/ReferenceObject.json"
+ },
+ "parameters": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/parameter.json"
+ }
+ },
+ "description": {
+ "type": "string",
+ "description": "A description of the channel."
+ },
+ "servers": {
+ "type": "array",
+ "description": "The names of the servers on which this channel is available. If absent or empty then this channel must be available on all servers.",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true
+ },
+ "publish": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/operation.json"
+ },
+ "subscribe": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/operation.json"
+ },
+ "deprecated": {
+ "type": "boolean",
+ "default": false
+ },
+ "bindings": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/channelItem.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/channels.json b/definitions/2.5.0/channels.json
new file mode 100644
index 00000000..2d0d0b8f
--- /dev/null
+++ b/definitions/2.5.0/channels.json
@@ -0,0 +1,13 @@
+{
+ "type": "object",
+ "propertyNames": {
+ "type": "string",
+ "format": "uri-template",
+ "minLength": 1
+ },
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/channelItem.json"
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/channels.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/components.json b/definitions/2.5.0/components.json
new file mode 100644
index 00000000..ab081d87
--- /dev/null
+++ b/definitions/2.5.0/components.json
@@ -0,0 +1,98 @@
+{
+ "type": "object",
+ "description": "An object to hold a set of reusable objects for different aspects of the AsyncAPI Specification.",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "schemas": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schemas.json"
+ },
+ "servers": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/servers.json"
+ },
+ "channels": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/channels.json"
+ },
+ "serverVariables": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/serverVariables.json"
+ },
+ "messages": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/messages.json"
+ },
+ "securitySchemes": {
+ "type": "object",
+ "patternProperties": {
+ "^[\\w\\d\\.\\-_]+$": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SecurityScheme.json"
+ }
+ ]
+ }
+ }
+ },
+ "parameters": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/parameters.json"
+ },
+ "correlationIds": {
+ "type": "object",
+ "patternProperties": {
+ "^[\\w\\d\\.\\-_]+$": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/correlationId.json"
+ }
+ ]
+ }
+ }
+ },
+ "operationTraits": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/operationTrait.json"
+ }
+ },
+ "messageTraits": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/messageTrait.json"
+ }
+ },
+ "serverBindings": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ },
+ "channelBindings": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ },
+ "operationBindings": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ },
+ "messageBindings": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/components.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/contact.json b/definitions/2.5.0/contact.json
new file mode 100644
index 00000000..e07cf9f8
--- /dev/null
+++ b/definitions/2.5.0/contact.json
@@ -0,0 +1,28 @@
+{
+ "type": "object",
+ "description": "Contact information for the owners of the API.",
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The identifying name of the contact person/organization."
+ },
+ "url": {
+ "type": "string",
+ "description": "The URL pointing to the contact information.",
+ "format": "uri"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact person/organization.",
+ "format": "email"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/contact.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/correlationId.json b/definitions/2.5.0/correlationId.json
new file mode 100644
index 00000000..5a9e392b
--- /dev/null
+++ b/definitions/2.5.0/correlationId.json
@@ -0,0 +1,25 @@
+{
+ "type": "object",
+ "required": [
+ "location"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "description": {
+ "type": "string",
+ "description": "A optional description of the correlation ID. GitHub Flavored Markdown is allowed."
+ },
+ "location": {
+ "type": "string",
+ "description": "A runtime expression that specifies the location of the correlation ID",
+ "pattern": "^\\$message\\.(header|payload)#(\\/(([^\\/~])|(~[01]))*)*"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/correlationId.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/external.json b/definitions/2.5.0/external.json
new file mode 100644
index 00000000..75dfbc16
--- /dev/null
+++ b/definitions/2.5.0/external.json
@@ -0,0 +1,5 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/http://something.example.com/schemas/external.json",
+ "type": "string"
+ }
\ No newline at end of file
diff --git a/definitions/2.5.0/externalDocs.json b/definitions/2.5.0/externalDocs.json
new file mode 100644
index 00000000..3f07f40d
--- /dev/null
+++ b/definitions/2.5.0/externalDocs.json
@@ -0,0 +1,24 @@
+{
+ "type": "object",
+ "additionalProperties": false,
+ "description": "information about external documentation",
+ "required": [
+ "url"
+ ],
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string",
+ "format": "uri"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/info.json b/definitions/2.5.0/info.json
new file mode 100644
index 00000000..7b74ab39
--- /dev/null
+++ b/definitions/2.5.0/info.json
@@ -0,0 +1,41 @@
+{
+ "type": "object",
+ "description": "General information about the API.",
+ "required": [
+ "version",
+ "title"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "title": {
+ "type": "string",
+ "description": "A unique and precise title of the API."
+ },
+ "version": {
+ "type": "string",
+ "description": "A semantic version number of the API."
+ },
+ "description": {
+ "type": "string",
+ "description": "A longer description of the API. Should be different from the title. CommonMark is allowed."
+ },
+ "termsOfService": {
+ "type": "string",
+ "description": "A URL to the Terms of Service for the API. MUST be in the format of a URL.",
+ "format": "uri"
+ },
+ "contact": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/contact.json"
+ },
+ "license": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/license.json"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/info.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/license.json b/definitions/2.5.0/license.json
new file mode 100644
index 00000000..fdb96a7d
--- /dev/null
+++ b/definitions/2.5.0/license.json
@@ -0,0 +1,25 @@
+{
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the license type. It's encouraged to use an OSI compatible license."
+ },
+ "url": {
+ "type": "string",
+ "description": "The URL pointing to the license.",
+ "format": "uri"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/license.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/message.json b/definitions/2.5.0/message.json
new file mode 100644
index 00000000..1789212c
--- /dev/null
+++ b/definitions/2.5.0/message.json
@@ -0,0 +1,171 @@
+{
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "oneOf": [
+ {
+ "type": "object",
+ "required": [
+ "oneOf"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "oneOf": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/message.json"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "schemaFormat": {
+ "type": "string"
+ },
+ "contentType": {
+ "type": "string"
+ },
+ "headers": {
+ "allOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ {
+ "properties": {
+ "type": {
+ "const": "object"
+ }
+ }
+ }
+ ]
+ },
+ "messageId": {
+ "type": "string"
+ },
+ "payload": {},
+ "correlationId": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/correlationId.json"
+ }
+ ]
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/tag.json"
+ },
+ "uniqueItems": true
+ },
+ "summary": {
+ "type": "string",
+ "description": "A brief summary of the message."
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the message."
+ },
+ "title": {
+ "type": "string",
+ "description": "A human-friendly title for the message."
+ },
+ "description": {
+ "type": "string",
+ "description": "A longer description of the message. CommonMark is allowed."
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ },
+ "deprecated": {
+ "type": "boolean",
+ "default": false
+ },
+ "examples": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "anyOf": [
+ {
+ "required": [
+ "payload"
+ ]
+ },
+ {
+ "required": [
+ "headers"
+ ]
+ }
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Machine readable name of the message example."
+ },
+ "summary": {
+ "type": "string",
+ "description": "A brief summary of the message example."
+ },
+ "headers": {
+ "type": "object"
+ },
+ "payload": {}
+ }
+ }
+ },
+ "bindings": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ },
+ "traits": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/messageTrait.json"
+ },
+ {
+ "type": "array",
+ "items": [
+ {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/messageTrait.json"
+ }
+ ]
+ },
+ {
+ "type": "object",
+ "additionalItems": true
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/message.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/messageTrait.json b/definitions/2.5.0/messageTrait.json
new file mode 100644
index 00000000..74df670a
--- /dev/null
+++ b/definitions/2.5.0/messageTrait.json
@@ -0,0 +1,85 @@
+{
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "schemaFormat": {
+ "type": "string"
+ },
+ "contentType": {
+ "type": "string"
+ },
+ "headers": {
+ "allOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ {
+ "properties": {
+ "type": {
+ "const": "object"
+ }
+ }
+ }
+ ]
+ },
+ "messageId": {
+ "type": "string"
+ },
+ "correlationId": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/correlationId.json"
+ }
+ ]
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/tag.json"
+ },
+ "uniqueItems": true
+ },
+ "summary": {
+ "type": "string",
+ "description": "A brief summary of the message."
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the message."
+ },
+ "title": {
+ "type": "string",
+ "description": "A human-friendly title for the message."
+ },
+ "description": {
+ "type": "string",
+ "description": "A longer description of the message. CommonMark is allowed."
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ },
+ "deprecated": {
+ "type": "boolean",
+ "default": false
+ },
+ "examples": {
+ "type": "array",
+ "items": {
+ "type": "object"
+ }
+ },
+ "bindings": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/messageTrait.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/messages.json b/definitions/2.5.0/messages.json
new file mode 100644
index 00000000..e7f650f4
--- /dev/null
+++ b/definitions/2.5.0/messages.json
@@ -0,0 +1,9 @@
+{
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/message.json"
+ },
+ "description": "JSON objects describing the messages being consumed and produced by the API.",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/messages.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/oauth2Flow.json b/definitions/2.5.0/oauth2Flow.json
new file mode 100644
index 00000000..4b9b199e
--- /dev/null
+++ b/definitions/2.5.0/oauth2Flow.json
@@ -0,0 +1,28 @@
+{
+ "type": "object",
+ "properties": {
+ "authorizationUrl": {
+ "type": "string",
+ "format": "uri"
+ },
+ "tokenUrl": {
+ "type": "string",
+ "format": "uri"
+ },
+ "refreshUrl": {
+ "type": "string",
+ "format": "uri"
+ },
+ "scopes": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/oauth2Scopes.json"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/oauth2Flow.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/oauth2Flows.json b/definitions/2.5.0/oauth2Flows.json
new file mode 100644
index 00000000..c1b3facf
--- /dev/null
+++ b/definitions/2.5.0/oauth2Flows.json
@@ -0,0 +1,105 @@
+{
+ "type": "object",
+ "required": [
+ "type",
+ "flows"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "oauth2"
+ ]
+ },
+ "description": {
+ "type": "string"
+ },
+ "flows": {
+ "type": "object",
+ "properties": {
+ "implicit": {
+ "allOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/oauth2Flow.json"
+ },
+ {
+ "required": [
+ "authorizationUrl",
+ "scopes"
+ ]
+ },
+ {
+ "not": {
+ "required": [
+ "tokenUrl"
+ ]
+ }
+ }
+ ]
+ },
+ "password": {
+ "allOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/oauth2Flow.json"
+ },
+ {
+ "required": [
+ "tokenUrl",
+ "scopes"
+ ]
+ },
+ {
+ "not": {
+ "required": [
+ "authorizationUrl"
+ ]
+ }
+ }
+ ]
+ },
+ "clientCredentials": {
+ "allOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/oauth2Flow.json"
+ },
+ {
+ "required": [
+ "tokenUrl",
+ "scopes"
+ ]
+ },
+ {
+ "not": {
+ "required": [
+ "authorizationUrl"
+ ]
+ }
+ }
+ ]
+ },
+ "authorizationCode": {
+ "allOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/oauth2Flow.json"
+ },
+ {
+ "required": [
+ "authorizationUrl",
+ "tokenUrl",
+ "scopes"
+ ]
+ }
+ ]
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/oauth2Flows.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/oauth2Scopes.json b/definitions/2.5.0/oauth2Scopes.json
new file mode 100644
index 00000000..b785410a
--- /dev/null
+++ b/definitions/2.5.0/oauth2Scopes.json
@@ -0,0 +1,8 @@
+{
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/oauth2Scopes.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/openIdConnect.json b/definitions/2.5.0/openIdConnect.json
new file mode 100644
index 00000000..22abe2ff
--- /dev/null
+++ b/definitions/2.5.0/openIdConnect.json
@@ -0,0 +1,30 @@
+{
+ "type": "object",
+ "required": [
+ "type",
+ "openIdConnectUrl"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "openIdConnect"
+ ]
+ },
+ "description": {
+ "type": "string"
+ },
+ "openIdConnectUrl": {
+ "type": "string",
+ "format": "uri"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/openIdConnect.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/operation.json b/definitions/2.5.0/operation.json
new file mode 100644
index 00000000..69598ac7
--- /dev/null
+++ b/definitions/2.5.0/operation.json
@@ -0,0 +1,76 @@
+{
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "traits": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/operationTrait.json"
+ },
+ {
+ "type": "array",
+ "items": [
+ {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/operationTrait.json"
+ }
+ ]
+ },
+ {
+ "type": "object",
+ "additionalItems": true
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "summary": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "security": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SecurityRequirement.json"
+ }
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/tag.json"
+ },
+ "uniqueItems": true
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ },
+ "operationId": {
+ "type": "string"
+ },
+ "bindings": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ },
+ "message": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/message.json"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/operation.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/operationTrait.json b/definitions/2.5.0/operationTrait.json
new file mode 100644
index 00000000..6bf07d9a
--- /dev/null
+++ b/definitions/2.5.0/operationTrait.json
@@ -0,0 +1,41 @@
+{
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "summary": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/tag.json"
+ },
+ "uniqueItems": true
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ },
+ "operationId": {
+ "type": "string"
+ },
+ "security": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SecurityRequirement.json"
+ }
+ },
+ "bindings": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/operationTrait.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/parameter.json b/definitions/2.5.0/parameter.json
new file mode 100644
index 00000000..8feb89c1
--- /dev/null
+++ b/definitions/2.5.0/parameter.json
@@ -0,0 +1,24 @@
+{
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "description": {
+ "type": "string",
+ "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."
+ },
+ "schema": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "location": {
+ "type": "string",
+ "description": "A runtime expression that specifies the location of the parameter value",
+ "pattern": "^\\$message\\.(header|payload)#(\\/(([^\\/~])|(~[01]))*)*"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/parameter.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/parameters.json b/definitions/2.5.0/parameters.json
new file mode 100644
index 00000000..0b427834
--- /dev/null
+++ b/definitions/2.5.0/parameters.json
@@ -0,0 +1,16 @@
+{
+ "type": "object",
+ "additionalProperties": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/parameter.json"
+ }
+ ]
+ },
+ "description": "JSON objects describing re-usable channel parameters.",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/parameters.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/schema.json b/definitions/2.5.0/schema.json
new file mode 100644
index 00000000..055796a9
--- /dev/null
+++ b/definitions/2.5.0/schema.json
@@ -0,0 +1,98 @@
+{
+ "allOf": [
+ {
+ "$ref": "http://json-schema.org/draft-07/schema#"
+ },
+ {
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "additionalProperties": {
+ "anyOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": {}
+ },
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ }
+ }
+ ],
+ "default": {}
+ },
+ "allOf": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ }
+ },
+ "oneOf": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ }
+ },
+ "anyOf": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ }
+ },
+ "not": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "properties": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "default": {}
+ },
+ "patternProperties": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "default": {}
+ },
+ "propertyNames": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "contains": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "discriminator": {
+ "type": "string"
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ },
+ "deprecated": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ }
+ ],
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/schema.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/schemas.json b/definitions/2.5.0/schemas.json
new file mode 100644
index 00000000..6dfad569
--- /dev/null
+++ b/definitions/2.5.0/schemas.json
@@ -0,0 +1,9 @@
+{
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "description": "JSON objects describing schemas the API uses.",
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/schemas.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/server.json b/definitions/2.5.0/server.json
new file mode 100644
index 00000000..f469bbb6
--- /dev/null
+++ b/definitions/2.5.0/server.json
@@ -0,0 +1,50 @@
+{
+ "type": "object",
+ "description": "An object representing a Server.",
+ "required": [
+ "url",
+ "protocol"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "url": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "protocol": {
+ "type": "string",
+ "description": "The transfer protocol."
+ },
+ "protocolVersion": {
+ "type": "string"
+ },
+ "variables": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/serverVariables.json"
+ },
+ "security": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SecurityRequirement.json"
+ }
+ },
+ "bindings": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/tag.json"
+ },
+ "uniqueItems": true
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/server.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/serverVariable.json b/definitions/2.5.0/serverVariable.json
new file mode 100644
index 00000000..75b44b2d
--- /dev/null
+++ b/definitions/2.5.0/serverVariable.json
@@ -0,0 +1,33 @@
+{
+ "type": "object",
+ "description": "An object representing a Server Variable for server URL template substitution.",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "enum": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true
+ },
+ "default": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "examples": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/serverVariable.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/serverVariables.json b/definitions/2.5.0/serverVariables.json
new file mode 100644
index 00000000..f030c344
--- /dev/null
+++ b/definitions/2.5.0/serverVariables.json
@@ -0,0 +1,15 @@
+{
+ "type": "object",
+ "additionalProperties": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/serverVariable.json"
+ }
+ ]
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/serverVariables.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/servers.json b/definitions/2.5.0/servers.json
new file mode 100644
index 00000000..1c5059cb
--- /dev/null
+++ b/definitions/2.5.0/servers.json
@@ -0,0 +1,16 @@
+{
+ "description": "An object representing multiple servers.",
+ "type": "object",
+ "additionalProperties": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/server.json"
+ }
+ ]
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/servers.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/specificationExtension.json b/definitions/2.5.0/specificationExtension.json
new file mode 100644
index 00000000..79df0d63
--- /dev/null
+++ b/definitions/2.5.0/specificationExtension.json
@@ -0,0 +1,7 @@
+{
+ "description": "Any property starting with x- is valid.",
+ "additionalProperties": true,
+ "additionalItems": true,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/symmetricEncryption.json b/definitions/2.5.0/symmetricEncryption.json
new file mode 100644
index 00000000..b1f29e36
--- /dev/null
+++ b/definitions/2.5.0/symmetricEncryption.json
@@ -0,0 +1,25 @@
+{
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "symmetricEncryption"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/symmetricEncryption.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/tag.json b/definitions/2.5.0/tag.json
new file mode 100644
index 00000000..91f99d49
--- /dev/null
+++ b/definitions/2.5.0/tag.json
@@ -0,0 +1,25 @@
+{
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/tag.json"
+}
\ No newline at end of file
diff --git a/definitions/2.5.0/userPassword.json b/definitions/2.5.0/userPassword.json
new file mode 100644
index 00000000..74342059
--- /dev/null
+++ b/definitions/2.5.0/userPassword.json
@@ -0,0 +1,25 @@
+{
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "userPassword"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false,
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "$id": "http://asyncapi.com/definitions/2.5.0/userPassword.json"
+}
\ No newline at end of file
diff --git a/index.d.ts b/index.d.ts
new file mode 100644
index 00000000..36e37f47
--- /dev/null
+++ b/index.d.ts
@@ -0,0 +1,11 @@
+import type { JSONSchema7 } from 'json-schema';
+
+declare const _exports: {
+ '2.0.0': JSONSchema7;
+ '2.1.0': JSONSchema7;
+ '2.2.0': JSONSchema7;
+ '2.3.0': JSONSchema7;
+ '2.4.0': JSONSchema7;
+ '2.5.0': JSONSchema7;
+};
+export = _exports;
diff --git a/index.js b/index.js
index 5293dab3..ccc50bf6 100644
--- a/index.js
+++ b/index.js
@@ -1,13 +1,9 @@
module.exports = {
- '1.0.0': require('./schemas/1.0.0.json'),
- '1.1.0': require('./schemas/1.1.0.json'),
- '1.2.0': require('./schemas/1.2.0.json'),
- '2.0.0-rc1': require('./schemas/2.0.0-rc1.json'),
- '2.0.0-rc2': require('./schemas/2.0.0-rc2.json'),
'2.0.0': require('./schemas/2.0.0.json'),
'2.1.0': require('./schemas/2.1.0.json'),
'2.2.0': require('./schemas/2.2.0.json'),
'2.3.0': require('./schemas/2.3.0.json'),
'2.4.0': require('./schemas/2.4.0.json'),
+ '2.5.0': require('./schemas/2.5.0.json'),
'3.0.0': require('./schemas/3.0.0.json'),
};
diff --git a/migrations/Migrate to version 3.md b/migrations/migrate-to-version-3.md
similarity index 100%
rename from migrations/Migrate to version 3.md
rename to migrations/migrate-to-version-3.md
diff --git a/migrations/migrate-to-version-4.md b/migrations/migrate-to-version-4.md
new file mode 100644
index 00000000..a2c61534
--- /dev/null
+++ b/migrations/migrate-to-version-4.md
@@ -0,0 +1,3 @@
+# Migrating to version 4
+
+In version 4, we removed unsupported versions of AsyncAPI from the package: `1.0.0`, `1.1.0`, `1.2.0`, `2.0.0-rc1` and `2.0.0-rc2`. In addition, we added [Typescript](https://www.typescriptlang.org/) types to the existing specifications.
diff --git a/package-lock.json b/package-lock.json
index 7cca6536..7f55f229 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -56,6 +56,12 @@
"js-tokens": "^4.0.0"
}
},
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -621,6 +627,11 @@
"integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==",
"dev": true
},
+ "@types/json-schema": {
+ "version": "7.0.11",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ=="
+ },
"@types/minimist": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
@@ -695,12 +706,6 @@
"type-fest": "^1.0.2"
}
},
- "ansi-regex": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
- "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
- "dev": true
- },
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -877,6 +882,17 @@
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
}
},
"chokidar": {
@@ -911,17 +927,6 @@
"string-width": "^4.2.0"
}
},
- "cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -943,16 +948,6 @@
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
"dev": true
},
- "compare-func": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz",
- "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=",
- "dev": true,
- "requires": {
- "array-ify": "^1.0.0",
- "dot-prop": "^3.0.0"
- }
- },
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -960,24 +955,78 @@
"dev": true
},
"conventional-changelog-angular": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.6.tgz",
- "integrity": "sha512-QDEmLa+7qdhVIv8sFZfVxU1VSyVvnXPsxq8Vam49mKUcO1Z8VTLEJk9uI21uiJUsnmm0I4Hrsdc9TgkOQo9WSA==",
+ "version": "5.0.13",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz",
+ "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==",
"dev": true,
"requires": {
- "compare-func": "^1.3.1",
+ "compare-func": "^2.0.0",
"q": "^1.5.1"
+ },
+ "dependencies": {
+ "compare-func": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
+ "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
+ "dev": true,
+ "requires": {
+ "array-ify": "^1.0.0",
+ "dot-prop": "^5.1.0"
+ }
+ },
+ "dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^2.0.0"
+ }
+ },
+ "is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true
+ }
}
},
"conventional-changelog-conventionalcommits": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.2.3.tgz",
- "integrity": "sha512-atGa+R4vvEhb8N/8v3IoW59gCBJeeFiX6uIbPu876ENAmkMwsenyn0R21kdDHJFLQdy6zW4J6b4xN8KI3b9oww==",
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz",
+ "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==",
"dev": true,
"requires": {
- "compare-func": "^1.3.1",
+ "compare-func": "^2.0.0",
"lodash": "^4.17.15",
"q": "^1.5.1"
+ },
+ "dependencies": {
+ "compare-func": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
+ "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
+ "dev": true,
+ "requires": {
+ "array-ify": "^1.0.0",
+ "dot-prop": "^5.1.0"
+ }
+ },
+ "dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^2.0.0"
+ }
+ },
+ "is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true
+ }
}
},
"conventional-changelog-writer": {
@@ -1238,15 +1287,6 @@
}
}
},
- "dot-prop": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
- "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
- "dev": true,
- "requires": {
- "is-obj": "^1.0.0"
- }
- },
"duplexer2": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
@@ -1439,15 +1479,6 @@
"pkg-dir": "^4.1.0"
}
},
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
"find-versions": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz",
@@ -1915,12 +1946,6 @@
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true
},
- "is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
- "dev": true
- },
"is-path-cwd": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
@@ -2094,6 +2119,12 @@
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
},
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "dev": true
+ },
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
@@ -2217,6 +2248,14 @@
"requires": {
"graceful-fs": "^4.1.6",
"universalify": "^1.0.0"
+ },
+ "dependencies": {
+ "universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+ "dev": true
+ }
}
},
"jsonparse": {
@@ -2247,16 +2286,24 @@
"parse-json": "^4.0.0",
"pify": "^3.0.0",
"strip-bom": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true
+ }
}
},
"lodash": {
@@ -2526,9 +2573,9 @@
"dev": true
},
"minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
@@ -2876,6 +2923,14 @@
"resolve": "^1.10.0",
"semver": "2 || 3 || 4 || 5",
"validate-npm-package-license": "^3.0.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ }
}
},
"normalize-path": {
@@ -3267,8 +3322,7 @@
},
"balanced-match": {
"version": "1.0.2",
- "bundled": true,
- "dev": true
+ "bundled": true
},
"bcrypt-pbkdf": {
"version": "1.0.2",
@@ -3299,7 +3353,6 @@
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
- "dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -3482,8 +3535,7 @@
},
"concat-map": {
"version": "0.0.1",
- "bundled": true,
- "dev": true
+ "bundled": true
},
"console-control-strings": {
"version": "1.1.0",
@@ -4102,14 +4154,6 @@
"mime-db": "1.49.0"
}
},
- "minimatch": {
- "version": "3.0.4",
- "bundled": true,
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
"minipass": {
"version": "3.1.5",
"bundled": true,
@@ -5022,6 +5066,41 @@
"yargs": "^15.0.2"
},
"dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
"find-up": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
@@ -5059,26 +5138,51 @@
"p-limit": "^2.2.0"
}
},
- "p-map": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
- "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dev": true,
"requires": {
- "aggregate-error": "^3.0.0"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
}
},
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true
},
- "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==",
- "dev": true
+ "yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "dev": true,
+ "requires": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
}
}
},
@@ -5092,9 +5196,9 @@
}
},
"onetime": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
- "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
"dev": true,
"requires": {
"mimic-fn": "^2.1.0"
@@ -5113,6 +5217,14 @@
"dev": true,
"requires": {
"p-map": "^2.0.0"
+ },
+ "dependencies": {
+ "p-map": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
+ "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
+ "dev": true
+ }
}
},
"p-is-promise": {
@@ -5121,30 +5233,15 @@
"integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==",
"dev": true
},
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "p-map": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+ "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
"dev": true,
"requires": {
- "p-limit": "^1.1.0"
+ "aggregate-error": "^3.0.0"
}
},
- "p-map": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
- "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
- "dev": true
- },
"p-reduce": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz",
@@ -5162,9 +5259,9 @@
}
},
"p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
"package-hash": {
@@ -5188,20 +5285,10 @@
"callsites": "^3.0.0"
}
},
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
"path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true
},
"path-is-absolute": {
@@ -5242,6 +5329,57 @@
"requires": {
"find-up": "^2.0.0",
"load-json-file": "^4.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true
+ }
}
},
"pkg-dir": {
@@ -5289,18 +5427,6 @@
"requires": {
"p-limit": "^2.2.0"
}
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "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==",
- "dev": true
}
}
},
@@ -5542,12 +5668,14 @@
"dev": true
},
"resolve": {
- "version": "1.15.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz",
- "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==",
+ "version": "1.22.1",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
"dev": true,
"requires": {
- "path-parse": "^1.0.6"
+ "is-core-module": "^2.9.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
}
},
"resolve-from": {
@@ -5735,6 +5863,15 @@
"color-convert": "^2.0.1"
}
},
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
"cliui": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
@@ -5818,6 +5955,15 @@
"integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
"dev": true
},
+ "minimatch": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
+ "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ },
"npm": {
"version": "8.12.1",
"resolved": "https://registry.npmjs.org/npm/-/npm-8.12.1.tgz",
@@ -6159,8 +6305,7 @@
},
"balanced-match": {
"version": "1.0.2",
- "bundled": true,
- "dev": true
+ "bundled": true
},
"bin-links": {
"version": "3.0.1",
@@ -6183,7 +6328,6 @@
"brace-expansion": {
"version": "2.0.1",
"bundled": true,
- "dev": true,
"requires": {
"balanced-match": "^1.0.0"
}
@@ -6791,14 +6935,6 @@
"ssri": "^9.0.0"
}
},
- "minimatch": {
- "version": "5.1.0",
- "bundled": true,
- "dev": true,
- "requires": {
- "brace-expansion": "^2.0.1"
- }
- },
"minipass": {
"version": "3.1.6",
"bundled": true,
@@ -6939,7 +7075,8 @@
},
"minimatch": {
"version": "3.1.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
@@ -7263,7 +7400,8 @@
},
"minimatch": {
"version": "3.1.2",
- "bundled": true,
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
@@ -7563,12 +7701,6 @@
}
}
},
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
"semver-diff": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
@@ -7623,9 +7755,9 @@
"dev": true
},
"signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
"dev": true
},
"signale": {
@@ -7639,6 +7771,47 @@
"pkg-conf": "^2.1.0"
},
"dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true
+ },
"figures": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
@@ -7647,6 +7820,21 @@
"requires": {
"escape-string-regexp": "^1.0.5"
}
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
}
}
},
@@ -7680,23 +7868,12 @@
"rimraf": "^3.0.0",
"signal-exit": "^3.0.2",
"which": "^2.0.1"
- },
- "dependencies": {
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
}
},
"spdx-correct": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
- "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
+ "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
"dev": true,
"requires": {
"spdx-expression-parse": "^3.0.0",
@@ -7704,15 +7881,15 @@
}
},
"spdx-exceptions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
- "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
"dev": true
},
"spdx-expression-parse": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
"requires": {
"spdx-exceptions": "^2.1.0",
@@ -7720,9 +7897,9 @@
}
},
"spdx-license-ids": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
- "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
+ "version": "3.0.12",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz",
+ "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==",
"dev": true
},
"split": {
@@ -7793,20 +7970,22 @@
}
},
"strip-ansi": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
- "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": {
- "ansi-regex": "^5.0.0"
+ "ansi-regex": "^5.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ }
}
},
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- },
"strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
@@ -7828,19 +8007,10 @@
"integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
"dev": true
},
- "supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
"supports-hyperlinks": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz",
- "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz",
+ "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==",
"dev": true,
"requires": {
"has-flag": "^4.0.0",
@@ -7864,6 +8034,12 @@
}
}
},
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true
+ },
"temp-dir": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz",
@@ -8006,12 +8182,6 @@
"integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
"dev": true
},
- "universalify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
- "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
- "dev": true
- },
"url-join": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz",
@@ -8024,12 +8194,6 @@
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "dev": true
- },
"validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -8083,43 +8247,6 @@
"integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
"dev": true
},
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- }
- }
- },
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -8144,12 +8271,6 @@
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true
},
- "y18n": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
- "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
- "dev": true
- },
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -8162,86 +8283,6 @@
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
"dev": true
},
- "yargs": {
- "version": "15.4.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
- "dev": true,
- "requires": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "dependencies": {
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "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==",
- "dev": true
- },
- "yargs-parser": {
- "version": "18.1.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
- }
- },
"yargs-parser": {
"version": "20.2.9",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
diff --git a/package.json b/package.json
index 8dafd55e..d876372c 100644
--- a/package.json
+++ b/package.json
@@ -3,6 +3,7 @@
"version": "4.0.0-next-major-spec.1",
"description": "AsyncAPI schema versions",
"main": "index.js",
+ "types": "index.d.ts",
"scripts": {
"test": "npm run build && nyc mocha",
"build": "npm run bundle",
@@ -82,5 +83,8 @@
"@semantic-release/npm",
"@semantic-release/github"
]
+ },
+ "dependencies": {
+ "@types/json-schema": "^7.0.11"
}
}
diff --git a/schemas/2.5.0.json b/schemas/2.5.0.json
new file mode 100644
index 00000000..0d83b1a9
--- /dev/null
+++ b/schemas/2.5.0.json
@@ -0,0 +1,1845 @@
+{
+ "$id": "http://asyncapi.com/definitions/2.5.0/asyncapi.json",
+ "$schema": "http://json-schema.org/draft-07/schema",
+ "title": "AsyncAPI 2.5.0 schema.",
+ "type": "object",
+ "required": [
+ "asyncapi",
+ "info",
+ "channels"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "asyncapi": {
+ "type": "string",
+ "enum": [
+ "2.5.0"
+ ],
+ "description": "The AsyncAPI specification version of this document."
+ },
+ "id": {
+ "type": "string",
+ "description": "A unique id representing the application.",
+ "format": "uri"
+ },
+ "info": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/info.json"
+ },
+ "servers": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/servers.json"
+ },
+ "defaultContentType": {
+ "type": "string"
+ },
+ "channels": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/channels.json"
+ },
+ "components": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/components.json"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/tag.json"
+ },
+ "uniqueItems": true
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ }
+ },
+ "definitions": {
+ "http://asyncapi.com/definitions/2.5.0/specificationExtension.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json",
+ "description": "Any property starting with x- is valid.",
+ "additionalProperties": true,
+ "additionalItems": true
+ },
+ "http://asyncapi.com/definitions/2.5.0/info.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/info.json",
+ "type": "object",
+ "description": "General information about the API.",
+ "required": [
+ "version",
+ "title"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "title": {
+ "type": "string",
+ "description": "A unique and precise title of the API."
+ },
+ "version": {
+ "type": "string",
+ "description": "A semantic version number of the API."
+ },
+ "description": {
+ "type": "string",
+ "description": "A longer description of the API. Should be different from the title. CommonMark is allowed."
+ },
+ "termsOfService": {
+ "type": "string",
+ "description": "A URL to the Terms of Service for the API. MUST be in the format of a URL.",
+ "format": "uri"
+ },
+ "contact": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/contact.json"
+ },
+ "license": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/license.json"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/contact.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/contact.json",
+ "type": "object",
+ "description": "Contact information for the owners of the API.",
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The identifying name of the contact person/organization."
+ },
+ "url": {
+ "type": "string",
+ "description": "The URL pointing to the contact information.",
+ "format": "uri"
+ },
+ "email": {
+ "type": "string",
+ "description": "The email address of the contact person/organization.",
+ "format": "email"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/license.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/license.json",
+ "type": "object",
+ "required": [
+ "name"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the license type. It's encouraged to use an OSI compatible license."
+ },
+ "url": {
+ "type": "string",
+ "description": "The URL pointing to the license.",
+ "format": "uri"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/servers.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/servers.json",
+ "description": "An object representing multiple servers.",
+ "type": "object",
+ "additionalProperties": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/server.json"
+ }
+ ]
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/Reference.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/Reference.json",
+ "type": "object",
+ "required": [
+ "$ref"
+ ],
+ "properties": {
+ "$ref": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/ReferenceObject.json"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/ReferenceObject.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/ReferenceObject.json",
+ "type": "string",
+ "format": "uri-reference"
+ },
+ "http://asyncapi.com/definitions/2.5.0/server.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/server.json",
+ "type": "object",
+ "description": "An object representing a Server.",
+ "required": [
+ "url",
+ "protocol"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "url": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "protocol": {
+ "type": "string",
+ "description": "The transfer protocol."
+ },
+ "protocolVersion": {
+ "type": "string"
+ },
+ "variables": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/serverVariables.json"
+ },
+ "security": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SecurityRequirement.json"
+ }
+ },
+ "bindings": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/tag.json"
+ },
+ "uniqueItems": true
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/serverVariables.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/serverVariables.json",
+ "type": "object",
+ "additionalProperties": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/serverVariable.json"
+ }
+ ]
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/serverVariable.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/serverVariable.json",
+ "type": "object",
+ "description": "An object representing a Server Variable for server URL template substitution.",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "enum": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true
+ },
+ "default": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "examples": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/SecurityRequirement.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/SecurityRequirement.json",
+ "type": "object",
+ "additionalProperties": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/bindingsObject.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json",
+ "type": "object",
+ "additionalProperties": true,
+ "properties": {
+ "http": {},
+ "ws": {},
+ "amqp": {},
+ "amqp1": {},
+ "mqtt": {},
+ "mqtt5": {},
+ "kafka": {},
+ "anypointmq": {},
+ "nats": {},
+ "jms": {},
+ "sns": {},
+ "sqs": {},
+ "stomp": {},
+ "redis": {},
+ "ibmmq": {},
+ "solace": {}
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/tag.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/tag.json",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "name"
+ ],
+ "properties": {
+ "name": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/externalDocs.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/externalDocs.json",
+ "type": "object",
+ "additionalProperties": false,
+ "description": "information about external documentation",
+ "required": [
+ "url"
+ ],
+ "properties": {
+ "description": {
+ "type": "string"
+ },
+ "url": {
+ "type": "string",
+ "format": "uri"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/channels.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/channels.json",
+ "type": "object",
+ "propertyNames": {
+ "type": "string",
+ "format": "uri-template",
+ "minLength": 1
+ },
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/channelItem.json"
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/channelItem.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/channelItem.json",
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "$ref": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/ReferenceObject.json"
+ },
+ "parameters": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/parameter.json"
+ }
+ },
+ "description": {
+ "type": "string",
+ "description": "A description of the channel."
+ },
+ "servers": {
+ "type": "array",
+ "description": "The names of the servers on which this channel is available. If absent or empty then this channel must be available on all servers.",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true
+ },
+ "publish": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/operation.json"
+ },
+ "subscribe": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/operation.json"
+ },
+ "deprecated": {
+ "type": "boolean",
+ "default": false
+ },
+ "bindings": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/parameter.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/parameter.json",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "description": {
+ "type": "string",
+ "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."
+ },
+ "schema": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "location": {
+ "type": "string",
+ "description": "A runtime expression that specifies the location of the parameter value",
+ "pattern": "^\\$message\\.(header|payload)#(\\/(([^\\/~])|(~[01]))*)*"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/schema.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/schema.json",
+ "allOf": [
+ {
+ "$ref": "http://json-schema.org/draft-07/schema#"
+ },
+ {
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "additionalProperties": {
+ "anyOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ {
+ "type": "boolean"
+ }
+ ],
+ "default": {}
+ },
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ }
+ }
+ ],
+ "default": {}
+ },
+ "allOf": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ }
+ },
+ "oneOf": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ }
+ },
+ "anyOf": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ }
+ },
+ "not": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "properties": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "default": {}
+ },
+ "patternProperties": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "default": {}
+ },
+ "propertyNames": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "contains": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "discriminator": {
+ "type": "string"
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ },
+ "deprecated": {
+ "type": "boolean",
+ "default": false
+ }
+ }
+ }
+ ]
+ },
+ "http://json-schema.org/draft-07/schema": {
+ "$id": "http://json-schema.org/draft-07/schema",
+ "title": "Core schema meta-schema",
+ "definitions": {
+ "schemaArray": {
+ "type": "array",
+ "minItems": 1,
+ "items": {
+ "$ref": "#"
+ }
+ },
+ "nonNegativeInteger": {
+ "type": "integer",
+ "minimum": 0
+ },
+ "nonNegativeIntegerDefault0": {
+ "allOf": [
+ {
+ "$ref": "#/definitions/nonNegativeInteger"
+ },
+ {
+ "default": 0
+ }
+ ]
+ },
+ "simpleTypes": {
+ "enum": [
+ "array",
+ "boolean",
+ "integer",
+ "null",
+ "number",
+ "object",
+ "string"
+ ]
+ },
+ "stringArray": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "uniqueItems": true,
+ "default": []
+ }
+ },
+ "type": [
+ "object",
+ "boolean"
+ ],
+ "properties": {
+ "$id": {
+ "type": "string",
+ "format": "uri-reference"
+ },
+ "$schema": {
+ "type": "string",
+ "format": "uri"
+ },
+ "$ref": {
+ "type": "string",
+ "format": "uri-reference"
+ },
+ "$comment": {
+ "type": "string"
+ },
+ "title": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "default": true,
+ "readOnly": {
+ "type": "boolean",
+ "default": false
+ },
+ "writeOnly": {
+ "type": "boolean",
+ "default": false
+ },
+ "examples": {
+ "type": "array",
+ "items": true
+ },
+ "multipleOf": {
+ "type": "number",
+ "exclusiveMinimum": 0
+ },
+ "maximum": {
+ "type": "number"
+ },
+ "exclusiveMaximum": {
+ "type": "number"
+ },
+ "minimum": {
+ "type": "number"
+ },
+ "exclusiveMinimum": {
+ "type": "number"
+ },
+ "maxLength": {
+ "$ref": "#/definitions/nonNegativeInteger"
+ },
+ "minLength": {
+ "$ref": "#/definitions/nonNegativeIntegerDefault0"
+ },
+ "pattern": {
+ "type": "string",
+ "format": "regex"
+ },
+ "additionalItems": {
+ "$ref": "#"
+ },
+ "items": {
+ "anyOf": [
+ {
+ "$ref": "#"
+ },
+ {
+ "$ref": "#/definitions/schemaArray"
+ }
+ ],
+ "default": true
+ },
+ "maxItems": {
+ "$ref": "#/definitions/nonNegativeInteger"
+ },
+ "minItems": {
+ "$ref": "#/definitions/nonNegativeIntegerDefault0"
+ },
+ "uniqueItems": {
+ "type": "boolean",
+ "default": false
+ },
+ "contains": {
+ "$ref": "#"
+ },
+ "maxProperties": {
+ "$ref": "#/definitions/nonNegativeInteger"
+ },
+ "minProperties": {
+ "$ref": "#/definitions/nonNegativeIntegerDefault0"
+ },
+ "required": {
+ "$ref": "#/definitions/stringArray"
+ },
+ "additionalProperties": {
+ "$ref": "#"
+ },
+ "definitions": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#"
+ },
+ "default": {}
+ },
+ "properties": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#"
+ },
+ "default": {}
+ },
+ "patternProperties": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "#"
+ },
+ "propertyNames": {
+ "format": "regex"
+ },
+ "default": {}
+ },
+ "dependencies": {
+ "type": "object",
+ "additionalProperties": {
+ "anyOf": [
+ {
+ "$ref": "#"
+ },
+ {
+ "$ref": "#/definitions/stringArray"
+ }
+ ]
+ }
+ },
+ "propertyNames": {
+ "$ref": "#"
+ },
+ "const": true,
+ "enum": {
+ "type": "array",
+ "items": true,
+ "minItems": 1,
+ "uniqueItems": true
+ },
+ "type": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/simpleTypes"
+ },
+ {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/simpleTypes"
+ },
+ "minItems": 1,
+ "uniqueItems": true
+ }
+ ]
+ },
+ "format": {
+ "type": "string"
+ },
+ "contentMediaType": {
+ "type": "string"
+ },
+ "contentEncoding": {
+ "type": "string"
+ },
+ "if": {
+ "$ref": "#"
+ },
+ "then": {
+ "$ref": "#"
+ },
+ "else": {
+ "$ref": "#"
+ },
+ "allOf": {
+ "$ref": "#/definitions/schemaArray"
+ },
+ "anyOf": {
+ "$ref": "#/definitions/schemaArray"
+ },
+ "oneOf": {
+ "$ref": "#/definitions/schemaArray"
+ },
+ "not": {
+ "$ref": "#"
+ }
+ },
+ "default": true
+ },
+ "http://asyncapi.com/definitions/2.5.0/operation.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/operation.json",
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "traits": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/operationTrait.json"
+ },
+ {
+ "type": "array",
+ "items": [
+ {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/operationTrait.json"
+ }
+ ]
+ },
+ {
+ "type": "object",
+ "additionalItems": true
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "summary": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "security": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SecurityRequirement.json"
+ }
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/tag.json"
+ },
+ "uniqueItems": true
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ },
+ "operationId": {
+ "type": "string"
+ },
+ "bindings": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ },
+ "message": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/message.json"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/operationTrait.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/operationTrait.json",
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "summary": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/tag.json"
+ },
+ "uniqueItems": true
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ },
+ "operationId": {
+ "type": "string"
+ },
+ "security": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SecurityRequirement.json"
+ }
+ },
+ "bindings": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/message.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/message.json",
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "oneOf": [
+ {
+ "type": "object",
+ "required": [
+ "oneOf"
+ ],
+ "additionalProperties": false,
+ "properties": {
+ "oneOf": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/message.json"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "schemaFormat": {
+ "type": "string"
+ },
+ "contentType": {
+ "type": "string"
+ },
+ "headers": {
+ "allOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ {
+ "properties": {
+ "type": {
+ "const": "object"
+ }
+ }
+ }
+ ]
+ },
+ "messageId": {
+ "type": "string"
+ },
+ "payload": {},
+ "correlationId": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/correlationId.json"
+ }
+ ]
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/tag.json"
+ },
+ "uniqueItems": true
+ },
+ "summary": {
+ "type": "string",
+ "description": "A brief summary of the message."
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the message."
+ },
+ "title": {
+ "type": "string",
+ "description": "A human-friendly title for the message."
+ },
+ "description": {
+ "type": "string",
+ "description": "A longer description of the message. CommonMark is allowed."
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ },
+ "deprecated": {
+ "type": "boolean",
+ "default": false
+ },
+ "examples": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "anyOf": [
+ {
+ "required": [
+ "payload"
+ ]
+ },
+ {
+ "required": [
+ "headers"
+ ]
+ }
+ ],
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Machine readable name of the message example."
+ },
+ "summary": {
+ "type": "string",
+ "description": "A brief summary of the message example."
+ },
+ "headers": {
+ "type": "object"
+ },
+ "payload": {}
+ }
+ }
+ },
+ "bindings": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ },
+ "traits": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/messageTrait.json"
+ },
+ {
+ "type": "array",
+ "items": [
+ {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/messageTrait.json"
+ }
+ ]
+ },
+ {
+ "type": "object",
+ "additionalItems": true
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "http://asyncapi.com/definitions/2.5.0/correlationId.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/correlationId.json",
+ "type": "object",
+ "required": [
+ "location"
+ ],
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "description": {
+ "type": "string",
+ "description": "A optional description of the correlation ID. GitHub Flavored Markdown is allowed."
+ },
+ "location": {
+ "type": "string",
+ "description": "A runtime expression that specifies the location of the correlation ID",
+ "pattern": "^\\$message\\.(header|payload)#(\\/(([^\\/~])|(~[01]))*)*"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/messageTrait.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/messageTrait.json",
+ "type": "object",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "schemaFormat": {
+ "type": "string"
+ },
+ "contentType": {
+ "type": "string"
+ },
+ "headers": {
+ "allOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ {
+ "properties": {
+ "type": {
+ "const": "object"
+ }
+ }
+ }
+ ]
+ },
+ "messageId": {
+ "type": "string"
+ },
+ "correlationId": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/correlationId.json"
+ }
+ ]
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/tag.json"
+ },
+ "uniqueItems": true
+ },
+ "summary": {
+ "type": "string",
+ "description": "A brief summary of the message."
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the message."
+ },
+ "title": {
+ "type": "string",
+ "description": "A human-friendly title for the message."
+ },
+ "description": {
+ "type": "string",
+ "description": "A longer description of the message. CommonMark is allowed."
+ },
+ "externalDocs": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/externalDocs.json"
+ },
+ "deprecated": {
+ "type": "boolean",
+ "default": false
+ },
+ "examples": {
+ "type": "array",
+ "items": {
+ "type": "object"
+ }
+ },
+ "bindings": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/components.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/components.json",
+ "type": "object",
+ "description": "An object to hold a set of reusable objects for different aspects of the AsyncAPI Specification.",
+ "additionalProperties": false,
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "properties": {
+ "schemas": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schemas.json"
+ },
+ "servers": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/servers.json"
+ },
+ "channels": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/channels.json"
+ },
+ "serverVariables": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/serverVariables.json"
+ },
+ "messages": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/messages.json"
+ },
+ "securitySchemes": {
+ "type": "object",
+ "patternProperties": {
+ "^[\\w\\d\\.\\-_]+$": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SecurityScheme.json"
+ }
+ ]
+ }
+ }
+ },
+ "parameters": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/parameters.json"
+ },
+ "correlationIds": {
+ "type": "object",
+ "patternProperties": {
+ "^[\\w\\d\\.\\-_]+$": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/correlationId.json"
+ }
+ ]
+ }
+ }
+ },
+ "operationTraits": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/operationTrait.json"
+ }
+ },
+ "messageTraits": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/messageTrait.json"
+ }
+ },
+ "serverBindings": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ },
+ "channelBindings": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ },
+ "operationBindings": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ },
+ "messageBindings": {
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/bindingsObject.json"
+ }
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/schemas.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/schemas.json",
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/schema.json"
+ },
+ "description": "JSON objects describing schemas the API uses."
+ },
+ "http://asyncapi.com/definitions/2.5.0/messages.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/messages.json",
+ "type": "object",
+ "additionalProperties": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/message.json"
+ },
+ "description": "JSON objects describing the messages being consumed and produced by the API."
+ },
+ "http://asyncapi.com/definitions/2.5.0/SecurityScheme.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/SecurityScheme.json",
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/userPassword.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/apiKey.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/X509.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/symmetricEncryption.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/asymmetricEncryption.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/HTTPSecurityScheme.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/oauth2Flows.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/openIdConnect.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SaslSecurityScheme.json"
+ }
+ ]
+ },
+ "http://asyncapi.com/definitions/2.5.0/userPassword.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/userPassword.json",
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "userPassword"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/apiKey.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/apiKey.json",
+ "type": "object",
+ "required": [
+ "type",
+ "in"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "apiKey"
+ ]
+ },
+ "in": {
+ "type": "string",
+ "enum": [
+ "user",
+ "password"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/X509.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/X509.json",
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "X509"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/symmetricEncryption.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/symmetricEncryption.json",
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "symmetricEncryption"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/asymmetricEncryption.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/asymmetricEncryption.json",
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "asymmetricEncryption"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/HTTPSecurityScheme.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/HTTPSecurityScheme.json",
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/NonBearerHTTPSecurityScheme.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/BearerHTTPSecurityScheme.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/APIKeyHTTPSecurityScheme.json"
+ }
+ ]
+ },
+ "http://asyncapi.com/definitions/2.5.0/NonBearerHTTPSecurityScheme.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/NonBearerHTTPSecurityScheme.json",
+ "not": {
+ "type": "object",
+ "properties": {
+ "scheme": {
+ "type": "string",
+ "enum": [
+ "bearer"
+ ]
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "scheme",
+ "type"
+ ],
+ "properties": {
+ "scheme": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "http"
+ ]
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/BearerHTTPSecurityScheme.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/BearerHTTPSecurityScheme.json",
+ "type": "object",
+ "required": [
+ "type",
+ "scheme"
+ ],
+ "properties": {
+ "scheme": {
+ "type": "string",
+ "enum": [
+ "bearer"
+ ]
+ },
+ "bearerFormat": {
+ "type": "string"
+ },
+ "type": {
+ "type": "string",
+ "enum": [
+ "http"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/APIKeyHTTPSecurityScheme.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/APIKeyHTTPSecurityScheme.json",
+ "type": "object",
+ "required": [
+ "type",
+ "name",
+ "in"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "httpApiKey"
+ ]
+ },
+ "name": {
+ "type": "string"
+ },
+ "in": {
+ "type": "string",
+ "enum": [
+ "header",
+ "query",
+ "cookie"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/oauth2Flows.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/oauth2Flows.json",
+ "type": "object",
+ "required": [
+ "type",
+ "flows"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "oauth2"
+ ]
+ },
+ "description": {
+ "type": "string"
+ },
+ "flows": {
+ "type": "object",
+ "properties": {
+ "implicit": {
+ "allOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/oauth2Flow.json"
+ },
+ {
+ "required": [
+ "authorizationUrl",
+ "scopes"
+ ]
+ },
+ {
+ "not": {
+ "required": [
+ "tokenUrl"
+ ]
+ }
+ }
+ ]
+ },
+ "password": {
+ "allOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/oauth2Flow.json"
+ },
+ {
+ "required": [
+ "tokenUrl",
+ "scopes"
+ ]
+ },
+ {
+ "not": {
+ "required": [
+ "authorizationUrl"
+ ]
+ }
+ }
+ ]
+ },
+ "clientCredentials": {
+ "allOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/oauth2Flow.json"
+ },
+ {
+ "required": [
+ "tokenUrl",
+ "scopes"
+ ]
+ },
+ {
+ "not": {
+ "required": [
+ "authorizationUrl"
+ ]
+ }
+ }
+ ]
+ },
+ "authorizationCode": {
+ "allOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/oauth2Flow.json"
+ },
+ {
+ "required": [
+ "authorizationUrl",
+ "tokenUrl",
+ "scopes"
+ ]
+ }
+ ]
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/oauth2Flow.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/oauth2Flow.json",
+ "type": "object",
+ "properties": {
+ "authorizationUrl": {
+ "type": "string",
+ "format": "uri"
+ },
+ "tokenUrl": {
+ "type": "string",
+ "format": "uri"
+ },
+ "refreshUrl": {
+ "type": "string",
+ "format": "uri"
+ },
+ "scopes": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/oauth2Scopes.json"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/oauth2Scopes.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/oauth2Scopes.json",
+ "type": "object",
+ "additionalProperties": {
+ "type": "string"
+ }
+ },
+ "http://asyncapi.com/definitions/2.5.0/openIdConnect.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/openIdConnect.json",
+ "type": "object",
+ "required": [
+ "type",
+ "openIdConnectUrl"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "openIdConnect"
+ ]
+ },
+ "description": {
+ "type": "string"
+ },
+ "openIdConnectUrl": {
+ "type": "string",
+ "format": "uri"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/SaslSecurityScheme.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/SaslSecurityScheme.json",
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SaslPlainSecurityScheme.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SaslScramSecurityScheme.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/SaslGssapiSecurityScheme.json"
+ }
+ ]
+ },
+ "http://asyncapi.com/definitions/2.5.0/SaslPlainSecurityScheme.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/SaslPlainSecurityScheme.json",
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "plain"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/SaslScramSecurityScheme.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/SaslScramSecurityScheme.json",
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "scramSha256",
+ "scramSha512"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/SaslGssapiSecurityScheme.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/SaslGssapiSecurityScheme.json",
+ "type": "object",
+ "required": [
+ "type"
+ ],
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": [
+ "gssapi"
+ ]
+ },
+ "description": {
+ "type": "string"
+ }
+ },
+ "patternProperties": {
+ "^x-[\\w\\d\\.\\x2d_]+$": {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/specificationExtension.json"
+ }
+ },
+ "additionalProperties": false
+ },
+ "http://asyncapi.com/definitions/2.5.0/parameters.json": {
+ "$id": "http://asyncapi.com/definitions/2.5.0/parameters.json",
+ "type": "object",
+ "additionalProperties": {
+ "oneOf": [
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/Reference.json"
+ },
+ {
+ "$ref": "http://asyncapi.com/definitions/2.5.0/parameter.json"
+ }
+ ]
+ },
+ "description": "JSON objects describing re-usable channel parameters."
+ }
+ },
+ "description": "!!Auto generated!! \n Do not manually edit. "
+}
\ No newline at end of file
diff --git a/schemas/all.schema-store.json b/schemas/all.schema-store.json
index 27f71a2b..837813fa 100644
--- a/schemas/all.schema-store.json
+++ b/schemas/all.schema-store.json
@@ -144,6 +144,20 @@
"$ref": "http://asyncapi.com/schema-store/2.4.0.json"
}
]
+ },
+ {
+ "allOf": [
+ {
+ "properties": {
+ "asyncapi": {
+ "const": "2.5.0"
+ }
+ }
+ },
+ {
+ "$ref": "http://asyncapi.com/schema-store/2.5.0.json"
+ }
+ ]
}
]
-}
\ No newline at end of file
+}
diff --git a/test/index.js b/test/index.js
index af2b4ad3..c36f8340 100644
--- a/test/index.js
+++ b/test/index.js
@@ -9,7 +9,7 @@ describe('AsyncAPI', () => {
});
it('should check if json schema is exported and if it matches the original file', () => {
- const skipFiles = ["README", "all.schema-store"];
+ const skipFiles = ["README", "all.schema-store", "1.0.0", "1.1.0", "1.2.0", "2.0.0-rc1", "2.0.0-rc2"];
const files = fs.readdirSync('schemas');
files.forEach(file => {
const fileName = path.parse(file).name;