Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: update to parser API v3 #459

Merged
merged 8 commits into from
Nov 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion helpers/all.js
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,9 @@ export function includeFile(pathFile) {
* and annotates that specification is parsed.
*/
export function stringifySpec(asyncapi) {
return stringify(asyncapi);
const stringifiedDoc = stringify(asyncapi);
if(stringifiedDoc === undefined) throw new Error("Unable to stringify parsed AsyncAPI document passed by the generator. Please report an issue in https://github.com/asyncapi/html-template repository.")
return stringifiedDoc
}

/**
Expand Down
3,812 changes: 1,937 additions & 1,875 deletions package-lock.json

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,24 +39,24 @@
"dependencies": {
"@asyncapi/generator-react-sdk": "^1.0.0",
"@asyncapi/react-component": "^1.0.1",
"@asyncapi/parser": "^3.0.0-next-major-spec.3",
"@asyncapi/parser": "^3.0.0-next-major-spec.14",
"highlight.js": "10.7.3",
"puppeteer": "^14.1.0",
"react-dom": "^17.0.2",
"rimraf": "^3.0.2",
"sync-fetch": "^0.5.2"
},
"devDependencies": {
"@asyncapi/cli": "^0.58.5",
"@asyncapi/cli": "^1.1.8",
"cross-env": "^7.0.3",
"jest": "^26.6.3",
"jest-esm-transformer": "^1.0.0",
"markdown-toc": "^1.2.0"
},
"generator": {
"renderer": "react",
"apiVersion": "v2",
"generator": ">=1.13.0 <2.0.0",
"apiVersion": "v3",
"generator": ">=1.15.0 <2.0.0",
"parameters": {
"sidebarOrganization": {
"description": "Defines how the sidebar should be organized. 'byTags' to categorize operations by tags in the root of the document, `byTagsNoRoot` does the same but for pub/sub tags.",
Expand Down
1,417 changes: 674 additions & 743 deletions test/components/__snapshots__/index.test.js.snap

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion test/components/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ const parser = new Parser();

describe('Index component', () => {
it('should render AsyncAPI v3 document', async () => {
const { document } = await fromFile(parser, asyncapi_v3_path).parse();
const { document, diagnostics } = await fromFile(parser, asyncapi_v3_path).parse();
console.log(diagnostics);
expect(document).not.toBeUndefined();
const result = render(<Index asyncapi={document} params={{}}/>);
const actual = result.trim();
Expand Down
93 changes: 22 additions & 71 deletions test/spec/asyncapi_v2.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ info:

servers:
production:
url: mqtt://test.mosquitto.org:{port}
url: test.mosquitto.org:{port}
protocol: mqtt
description: Test broker
variables:
Expand All @@ -26,8 +26,18 @@ servers:
enum:
- '1883'
- '8883'
security:
- apiKey: []
- supportedOauthFlows:
- streetlights:on
- streetlights:off
- streetlights:dim
- openIdConnectWellKnown: []

defaultContentType: application/json
tags:
- name: One
- name: Two

channels:
smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured:
Expand All @@ -37,30 +47,13 @@ channels:
$ref: '#/components/parameters/streetlightId'
publish:
summary: Inform about environmental lighting conditions of a particular streetlight.
description: |
This is the description with **bold** text.

On multiple lines.
operationId: receiveLightMeasurement
tags:
- name: oparation-tag1
externalDocs:
description: External docs description 1
url: https://www.asyncapi.com/
- name: oparation-tag2
description: Description 2
externalDocs:
url: "https://www.asyncapi.com/"
- name: oparation-tag3
- name: oparation-tag4
description: Description 4
- name: message-tag5
externalDocs:
url: "https://www.asyncapi.com/"
traits:
- $ref: '#/components/operationTraits/kafka'
message:
$ref: '#/components/messages/lightMeasured'
tags:
- name: One

smartylighting/streetlights/1/0/action/{streetlightId}/turn/on:
parameters:
Expand All @@ -72,6 +65,8 @@ channels:
- $ref: '#/components/operationTraits/kafka'
message:
$ref: '#/components/messages/turnOnOff'
tags:
- name: Two

smartylighting/streetlights/1/0/action/{streetlightId}/turn/off:
parameters:
Expand All @@ -83,6 +78,8 @@ channels:
- $ref: '#/components/operationTraits/kafka'
message:
$ref: '#/components/messages/turnOnOff'
tags:
- name: One

smartylighting/streetlights/1/0/action/{streetlightId}/dim:
parameters:
Expand All @@ -94,13 +91,8 @@ channels:
- $ref: '#/components/operationTraits/kafka'
message:
$ref: '#/components/messages/dimLight'
some.channel:
subscribe:
description: this description shows in markdown
message:
oneOf:
- $ref: '#/components/messages/successMessage'
- $ref: '#/components/messages/failureMessage'
tags:
- name: Two

components:
messages:
Expand All @@ -109,21 +101,6 @@ components:
title: Light measured
summary: Inform about environmental lighting conditions of a particular streetlight.
contentType: application/json
tags:
- name: message-tag1
externalDocs:
description: External docs description 1
url: https://www.asyncapi.com/
- name: message-tag2
description: Description 2
externalDocs:
url: "https://www.asyncapi.com/"
- name: message-tag3
- name: message-tag4
description: Description 4
- name: message-tag5
externalDocs:
url: "https://www.asyncapi.com/"
traits:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
Expand All @@ -144,31 +121,7 @@ components:
- $ref: '#/components/messageTraits/commonHeaders'
payload:
$ref: "#/components/schemas/dimLightPayload"
successMessage:
name: Success
payload:
type: object
properties:
result:
type: string
examples:
- success
failureMessage:
name: Failure
payload:
type: object
properties:
error:
type: object
properties:
errorCode:
type: integer
errorMessage:
type: string
examples:
- error:
errorCode: 404
errorMessage: Something messed up

schemas:
lightMeasuredPayload:
type: object
Expand All @@ -177,7 +130,6 @@ components:
type: integer
minimum: 0
description: Light intensity measured in lumens.
x-pi: false
sentAt:
$ref: "#/components/schemas/sentAt"
turnOnOffPayload:
Expand All @@ -189,7 +141,6 @@ components:
- on
- off
description: Whether to turn on or off the light.
x-pi: false
sentAt:
$ref: "#/components/schemas/sentAt"
dimLightPayload:
Expand Down Expand Up @@ -261,9 +212,9 @@ components:
type: integer
minimum: 0
maximum: 100

operationTraits:
kafka:
bindings:
kafka:
clientId: my-app-id
clientId: my-app-id
Loading