asyncapi / parser-js

AsyncAPI parser for Javascript (browser-compatible too).
Apache License 2.0
119 stars 97 forks source link

Payload property named message breaks with null value #863

Closed ly29 closed 4 months ago

ly29 commented 1 year ago

Payload property named message breaks with null value

          "type": "object",
          "properties": {
            "message": {
              "type": ["string", "null"],
              "maxLength": 50
            }
          },
          "required": ["message"],
        },
        "examples": [{
            "name": "return",
            "payload": {
              "message": null
            }
          }
        ]
      }

It breaks rendering of the asyncapi spec, validation does not give valid errors and studio.asyncapi.com breaks

Expected result It works and renders. Note that this works if the message property is renamed or given a non null example value.

Actual result

The following error is given

    Error thrown during AsyncAPI document validation. Name: Error, message: jsonPath: Cannot read properties of null (reading 'schemaFormat'): _$_property === 'message' && _$_v.schemaFormat === void 0, stack: Error: jsonPath: Cannot read properties of null (reading 'schemaFormat'): _$_property === 'message' && _$_v.schemaFormat === void 0 at v._eval (https://studio.asyncapi.com/static/js/main.f7f7093d.js:2:4494941) at https://studio.asyncapi.com/static/js/main.f7f7093d.js:2:4491179 at https://studio.asyncapi.com/static/js/main.f7f7093d.js:2:4493697 at Array.forEach (<anonymous>) at v._walk (https://studio.asyncapi.com/static/js/main.f7f7093d.js:2:4493676) at v._trace (https://studio.asyncapi.com/static/js/main.f7f7093d.js:2:4491130) at v._trace (https://studio.asyncapi.com/static/js/main.f7f7093d.js:2:4490522) at https://studio.asyncapi.com/static/js/main.f7f7093d.js:2:4490621 at https://studio.asyncapi.com/static/js/main.f7f7093d.js:2:4493697 at Array.forEach (<anonymous>)

Steps to reproduce

Paste the following gist into the asyncapi studio https://gist.github.com/ly29/6b56cc8252ad48ac681f19ea468d540f

Troubleshooting I have reduced the issue down to one specific property that breaks.

github-actions[bot] commented 1 year ago

Welcome to AsyncAPI. Thanks a lot for reporting your first issue. Please check out our contributors guide and the instructions about a basic recommended setup useful for opening a pull request.
Keep in mind there are also other channels you can use to interact with AsyncAPI community. For more details check out this issue.

derberg commented 1 year ago

thanks for the issue,

so basically even though the message type is a tuple of string and null the example with "message": null throws an issue, but if you change to "message": "test" it works fine

this is a validation issue, cannot be fixed in the react component. Moving to parser

github-actions[bot] commented 1 year ago

Welcome to AsyncAPI. Thanks a lot for reporting your first issue. Please check out our contributors guide and the instructions about a basic recommended setup useful for opening a pull request.
Keep in mind there are also other channels you can use to interact with AsyncAPI community. For more details check out this issue.

ly29 commented 1 year ago

Yeah it was not clear to me where to report, thank you taking care of that.

ly29 commented 1 year ago

So this looks like a bug to me. Any pointers to where to fix. Should be a reasonably small fix I imagine...

jonaslagoni commented 12 months ago

Without being 100% sure, I think its https://github.com/asyncapi/parser-js/blob/0a765c1ed46af605707d9e37f71d76192b950602/src/ruleset/v2/ruleset.ts#L119 that might be complaining.

github-actions[bot] commented 8 months ago

This issue has been automatically marked as stale because it has not had recent activity :sleeping:

It will be closed in 120 days if no further activity occurs. To unstale this issue, add a comment with a detailed explanation.

There can be many reasons why some specific issue has no activity. The most probable cause is lack of time, not lack of interest. AsyncAPI Initiative is a Linux Foundation project not owned by a single for-profit company. It is a community-driven initiative ruled under open governance model.

Let us figure out together how to push this issue forward. Connect with us through one of many communication channels we established here.

Thank you for your patience :heart: