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

Generator with parameter sidebarOrganization=byTags throws error: Found non-callable @@iterator #1059

Closed
lenartgolob opened this issue Nov 3, 2023 · 8 comments
Labels
bug Something isn't working

Comments

@lenartgolob
Copy link

lenartgolob commented Nov 3, 2023

Describe the bug

I added tags to all my channels/operations and when I try to generate the file with command:
asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template -p sidebarOrganization=byTags --force-write
I get this error:
[BABEL] Note: The code generator has deoptimised the styling of C:\Users\GolobL\AppData\Roaming\npm\node_modules@asyncapi\cli\node_modules@asyncapi\generator\node_modules@asyncapi\html-template\template\js\asyncapi-ui.min.js as it exceeds the max of 500KB.
Generation in progress. Keep calm and wait a bit... done
Generator Error: Found non-callable @@iterator

If I try to generate documentation without the parameter or with other parameters it works fine.

Replicate

I call my tags like this:
"{operatorId}..session.started":
description: desc.
parameters:
operatorId:
$ref: './common/parameters.yaml#/operatorId'
publish:
operationId: "{operatorId}.
.session.started"
traits:
- $ref: '#/components/operationTraits/kafka'
message:
$ref: './common/messages.yaml#/SessionStarted'
tags:
- name: session

I also tried moving the tags to messages but I get the same error

Expected behavior

A generated html file with side bar organization based on tags

@lenartgolob lenartgolob added the bug Something isn't working label Nov 3, 2023
Copy link
Contributor

github-actions bot commented Nov 3, 2023

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.

Copy link
Member

derberg commented Nov 7, 2023

Hey there, please provide examples and errors formatted with markdown code. Best, please provide full AsyncAPI documents examples for testing so we can easily replicate

@lenartgolob
Copy link
Author

lenartgolob commented Nov 7, 2023

@derberg It works on html/template@0.28.4 version, but not on the 1.0.0 version. You can add tags to the streetlights project and you will get the same error if you execute:
asyncapi generate fromTemplate asyncapi.yaml @asyncapi/html-template -p sidebarOrganization=byTags --force-write
Generator Error: Found non-callable @@iterator

Streetlights project with added tags:

asyncapi: '2.0.0'
info:
  title: Streetlights API
  version: '1.0.0'
  description: |
    The Smartylighting Streetlights API allows you to remotely manage the city lights.

    ### Check out its awesome features:

    * Turn a specific streetlight on/off 🌃
    * Dim a specific streetlight 😎
    * Receive real-time information about environmental lighting conditions 📈
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0

servers:
  production:
    url: test.mosquitto.org:{port}
    protocol: mqtt
    description: Test broker
    variables:
      port:
        description: Secure connection (TLS) is available through port 8883.
        default: '1883'
        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:
    description: The topic on which measured values may be produced and consumed.
    parameters:
      streetlightId:
        $ref: '#/components/parameters/streetlightId'
    publish:
      summary: Inform about environmental lighting conditions of a particular streetlight.
      operationId: receiveLightMeasurement
      traits:
        - $ref: '#/components/operationTraits/kafka'
      message:
        $ref: '#/components/messages/lightMeasured'
      tags:
        - name: One     

  smartylighting/streetlights/1/0/action/{streetlightId}/turn/on:
    parameters:
      streetlightId:
        $ref: '#/components/parameters/streetlightId'
    subscribe:
      operationId: turnOn
      traits:
        - $ref: '#/components/operationTraits/kafka'
      message:
        $ref: '#/components/messages/turnOnOff'
      tags:
        - name: Two          

  smartylighting/streetlights/1/0/action/{streetlightId}/turn/off:
    parameters:
      streetlightId:
        $ref: '#/components/parameters/streetlightId'
    subscribe:
      operationId: turnOff
      traits:
        - $ref: '#/components/operationTraits/kafka'
      message:
        $ref: '#/components/messages/turnOnOff'
      tags:
        - name: One          

  smartylighting/streetlights/1/0/action/{streetlightId}/dim:
    parameters:
      streetlightId:
        $ref: '#/components/parameters/streetlightId'
    subscribe:
      operationId: dimLight
      traits:
        - $ref: '#/components/operationTraits/kafka'
      message:
        $ref: '#/components/messages/dimLight'
      tags:
        - name: Two          

components:
  messages:
    lightMeasured:
      name: lightMeasured
      title: Light measured
      summary: Inform about environmental lighting conditions of a particular streetlight.
      contentType: application/json
      traits:
        - $ref: '#/components/messageTraits/commonHeaders'
      payload:
        $ref: "#/components/schemas/lightMeasuredPayload"
    turnOnOff:
      name: turnOnOff
      title: Turn on/off
      summary: Command a particular streetlight to turn the lights on or off.
      traits:
        - $ref: '#/components/messageTraits/commonHeaders'
      payload:
        $ref: "#/components/schemas/turnOnOffPayload"
    dimLight:
      name: dimLight
      title: Dim light
      summary: Command a particular streetlight to dim the lights.
      traits:
        - $ref: '#/components/messageTraits/commonHeaders'
      payload:
        $ref: "#/components/schemas/dimLightPayload"

  schemas:
    lightMeasuredPayload:
      type: object
      properties:
        lumens:
          type: integer
          minimum: 0
          description: Light intensity measured in lumens.
        sentAt:
          $ref: "#/components/schemas/sentAt"
    turnOnOffPayload:
      type: object
      properties:
        command:
          type: string
          enum:
            - on
            - off
          description: Whether to turn on or off the light.
        sentAt:
          $ref: "#/components/schemas/sentAt"
    dimLightPayload:
      type: object
      properties:
        percentage:
          type: integer
          description: Percentage to which the light should be dimmed to.
          minimum: 0
          maximum: 100
        sentAt:
          $ref: "#/components/schemas/sentAt"
    sentAt:
      type: string
      format: date-time
      description: Date and time when the message was sent.

  securitySchemes:
    apiKey:
      type: apiKey
      in: user
      description: Provide your API key as the user and leave the password empty.
    supportedOauthFlows:
      type: oauth2
      description: Flows to support OAuth 2.0
      flows:
        implicit:
          authorizationUrl: 'https://authserver.example/auth'
          scopes:
            'streetlights:on': Ability to switch lights on
            'streetlights:off': Ability to switch lights off
            'streetlights:dim': Ability to dim the lights
        password:
          tokenUrl: 'https://authserver.example/token'
          scopes:
            'streetlights:on': Ability to switch lights on
            'streetlights:off': Ability to switch lights off
            'streetlights:dim': Ability to dim the lights
        clientCredentials:
          tokenUrl: 'https://authserver.example/token'
          scopes:
            'streetlights:on': Ability to switch lights on
            'streetlights:off': Ability to switch lights off
            'streetlights:dim': Ability to dim the lights
        authorizationCode:
          authorizationUrl: 'https://authserver.example/auth'
          tokenUrl: 'https://authserver.example/token'
          refreshUrl: 'https://authserver.example/refresh'
          scopes:
            'streetlights:on': Ability to switch lights on
            'streetlights:off': Ability to switch lights off
            'streetlights:dim': Ability to dim the lights
    openIdConnectWellKnown:
      type: openIdConnect
      openIdConnectUrl: 'https://authserver.example/.well-known'

  parameters:
    streetlightId:
      description: The ID of the streetlight.
      schema:
        type: string

  messageTraits:
    commonHeaders:
      headers:
        type: object
        properties:
          my-app-header:
            type: integer
            minimum: 0
            maximum: 100
  
  operationTraits:
    kafka:
      bindings:
        kafka:
          clientId: my-app-id

@michaelyali
Copy link

Same issue here

@jonaslagoni
Copy link
Member

Taking a look at this now.

@jonaslagoni
Copy link
Member

I cannot reproduce this issue anymore, pretty sure it's one of the recent changes to the underlying parser that has been fixed.

@michaelyali @lenartgolob are you folks still experiencing it?

@derberg
Copy link
Member

derberg commented Jan 17, 2024

no further feedback - assuming fixed

@derberg derberg closed this as completed Jan 17, 2024
@jonaslagoni
Copy link
Member

This was fixed as part of asyncapi/github-action-for-cli#368 (comment)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants