@asyncapi/generator 3.1.2 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/docs/api_components.md +1233 -0
  3. package/docs/generator-template.md +75 -65
  4. package/docs/model-generation.md +1 -1
  5. package/docs/usage.md +9 -9
  6. package/docs/versioning.md +1 -2
  7. package/lib/conditionalGeneration.js +3 -6
  8. package/lib/templates/bakedInTemplates/core-template-client-kafka-java-quarkus/package.json +1 -2
  9. package/lib/templates/bakedInTemplates/core-template-client-websocket-dart/package.json +0 -1
  10. package/lib/templates/bakedInTemplates/core-template-client-websocket-java-quarkus/.ageneratorrc +1 -1
  11. package/lib/templates/bakedInTemplates/core-template-client-websocket-java-quarkus/package.json +2 -3
  12. package/lib/templates/bakedInTemplates/core-template-client-websocket-javascript/README.md +1 -1
  13. package/lib/templates/bakedInTemplates/core-template-client-websocket-javascript/package.json +4 -4
  14. package/lib/templates/bakedInTemplates/core-template-client-websocket-python/__transpiled/components/ReceiveOperationsDiscriminators.js +1 -5
  15. package/lib/templates/bakedInTemplates/core-template-client-websocket-python/__transpiled/components/ReceiveOperationsDiscriminators.js.map +1 -1
  16. package/lib/templates/bakedInTemplates/core-template-client-websocket-python/__transpiled/components/Send.js +2 -2
  17. package/lib/templates/bakedInTemplates/core-template-client-websocket-python/__transpiled/components/Send.js.map +1 -1
  18. package/lib/templates/bakedInTemplates/core-template-client-websocket-python/__transpiled/template/client.py.js +3 -7
  19. package/lib/templates/bakedInTemplates/core-template-client-websocket-python/__transpiled/template/client.py.js.map +1 -1
  20. package/lib/templates/bakedInTemplates/core-template-client-websocket-python/components/ReceiveOperationsDiscriminators.js +3 -6
  21. package/lib/templates/bakedInTemplates/core-template-client-websocket-python/components/Send.js +2 -2
  22. package/lib/templates/bakedInTemplates/core-template-client-websocket-python/package.json +0 -1
  23. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"client.py.js","sources":["../../../../../../../../packages/templates/clients/websocket/python/components/Requires.js","../../../../../../../../packages/templates/clients/websocket/python/components/Send.js","../../../../../../../../packages/templates/clients/websocket/python/components/QueryParamsArgumentsDocs.js","../../../../../../../../packages/templates/clients/websocket/python/components/InitSignature.js","../../../../../../../../packages/templates/clients/websocket/python/components/ReceiveOperationsDiscriminators.js","../../../../../../../../packages/templates/clients/websocket/python/components/Constructor.js","../../../../../../../../packages/templates/clients/websocket/python/components/RegisterOutgoingProcessor.js","../../../../../../../../packages/templates/clients/websocket/python/components/HandleError.js","../../../../../../../../packages/templates/clients/websocket/python/components/RegisterReceiveOperations.js","../../../../../../../../packages/templates/clients/websocket/python/components/ClientClass.js","../../../../../../../../packages/templates/clients/websocket/python/template/client.py.js"],"sourcesContent":["import { DependencyProvider } from '@asyncapi/generator-components';\n\nexport function Requires({ query }) {\n const additionalDependencies = [];\n if (query) {\n additionalDependencies.push('import os');\n additionalDependencies.push('from urllib.parse import urlencode');\n }\n return (\n <DependencyProvider\n language=\"python\"\n additionalDependencies={additionalDependencies}\n />\n );\n}","import { Text } from '@asyncapi/generator-react-sdk';\n\nexport function Send({ sendOperations }) {\n if (!sendOperations || sendOperations.length === 0) {\n return null;\n }\n\n return (\n <Text newLines={2} indent={2}>\n {\n `\n@staticmethod\nasync def _send(message, socket):\n \"\"\"\n Internal helper to handle the actual sending logic.\n\n Args:\n message (dict or str): The message to send.\n socket (websockets.WebSocketCommonProtocol): The WebSocket to send through.\n\n Notes:\n If message is a dictionary, it will be automatically converted to JSON.\n \"\"\"\n try:\n if isinstance(message, dict):\n message = json.dumps(message)\n await socket.send(message)\n except Exception as e:\n print(\"Error sending:\", e)`\n }\n </Text>\n );\n}\n","import { Text } from '@asyncapi/generator-react-sdk';\n\nexport function QueryParamsArgumentsDocs({ queryParams }) {\n if (!queryParams) {\n return null;\n }\n\n return queryParams.map((param) => {\n const paramName = param[0];\n const firstLine = `${paramName} (str, optional):`;\n const secondLine = `If provided (or if ${paramName.toUpperCase()} environment variable is set), added as ?${paramName}=… to URL`;\n return (\n <Text indent={1}>\n {firstLine}\n {secondLine}\n </Text>\n );\n });\n}\n","import { Text } from '@asyncapi/generator-react-sdk';\n\nexport function InitSignature({ queryParams, serverUrl }) {\n if (!queryParams) {\n return (\n <Text indent={2} newLines={2}>\n {`def __init__(self, url: str = \"${serverUrl}\"):`}\n </Text>\n );\n }\n \n const queryParamsArguments = queryParams?.map((param) => {\n const paramName = param[0];\n const paramDefaultValue = param[1];\n const defaultValue = paramDefaultValue ? `\"${paramDefaultValue}\"` : 'None';\n return `${paramName}: str = ${defaultValue}`;\n }).join(', ');\n \n return (\n <Text indent={2} newLines={2}>\n {`def __init__(self, url: str = \"${serverUrl}\", ${queryParamsArguments}):`}\n </Text>\n );\n}\n","import { Text } from '@asyncapi/generator-react-sdk';\nimport { getMessageDiscriminatorsFromOperations } from '@asyncapi/generator-helpers';\n\n/**\n * Component that generates initialization code for receive operation discriminators.\n * \n * @param {Object} props - Component properties\n * @param {Array<Object>} [props.receiveOperations] - Receive operations from AsyncAPI document\n * @returns {React.Element|null} Rendered initialization code or null.\n */\nexport function ReceiveOperationsDiscriminators({ receiveOperations }) {\n const hasOperations = Array.isArray(receiveOperations) && receiveOperations.length > 0;\n if (!hasOperations) {\n return null;\n }\n\n const operationDiscriminators = getMessageDiscriminatorsFromOperations(receiveOperations);\n const serializedDiscriminators = JSON.stringify(operationDiscriminators);\n\n return (\n <Text indent={2} newLines={2}>\n {`\n self.receive_operation_handlers = {}\n self.receive_operation_discriminators = ${serializedDiscriminators}`\n }\n </Text>\n );\n}\n","import { Text } from '@asyncapi/generator-react-sdk';\nimport { QueryParamsVariables } from '@asyncapi/generator-components';\nimport { QueryParamsArgumentsDocs } from './QueryParamsArgumentsDocs';\nimport { InitSignature } from './InitSignature';\nimport { ReceiveOperationsDiscriminators } from './ReceiveOperationsDiscriminators';\n\nexport function Constructor({ serverUrl, query, receiveOperations }) {\n const queryParamsArray = query && Array.from(query.entries());\n\n return (\n <>\n <InitSignature queryParams={queryParamsArray} serverUrl={serverUrl} />\n <Text indent={2}>\n {`\n \"\"\"\n Constructor to initialize the WebSocket client.\n\n Args:\n url (str, optional): The WebSocket server URL. Use it if the server URL is \n different from the default one taken from the AsyncAPI document.`}\n </Text>\n <QueryParamsArgumentsDocs queryParams={queryParamsArray} />\n <Text indent={2}>\n {`\n \"\"\"\n self.ws_app = None # Instance of WebSocketApp\n self.message_handlers = [] # Callables for incoming messages\n self.error_handlers = [] # Callables for errors\n self.outgoing_processors = [] # Callables to process outgoing messages\n self._stop_event = threading.Event()\n ${ query ? 'params = {}' : ''}`\n }\n </Text>\n <ReceiveOperationsDiscriminators receiveOperations={receiveOperations} />\n <QueryParamsVariables\n language=\"python\"\n queryParams={queryParamsArray} \n />\n <Text newLines={2}>\n {`\n ${query ? 'qs = urlencode(params) if params else \"\"' : ''}\n ${query ? 'self.url = f\"{url}{f\\'?{qs}\\' if qs else \\'\\'}\"' : 'self.url = url'}`}\n </Text>\n </>\n );\n}","import { Text } from '@asyncapi/generator-react-sdk';\n\nexport function RegisterOutgoingProcessor() {\n return (\n <Text newLines={2} indent={2}>\n {\n `def register_outgoing_processor(self, processor):\n \"\"\"\n Register a callable that processes outgoing messages automatically.\n These processors run in sequence before each message is sent.\n \"\"\"\n if callable(processor):\n self.outgoing_processors.append(processor)\n else:\n print(\"Outgoing processor must be callable\")`\n }\n </Text>\n );\n}\n","import { Text } from '@asyncapi/generator-react-sdk';\n\nexport function HandleError() {\n return (\n <Text newLines={2} indent={2}>\n {\n `def handle_error(self, error):\n \"\"\"Pass the error to all registered error handlers. Generic log message is printed if no handlers are registered.\"\"\"\n if len(self.error_handlers) == 0:\n print(\"\\\\033[91mError occurred:\\\\033[0m\", error)\n else:\n # Call custom error handlers\n for handler in self.error_handlers:\n handler(error)`\n }\n </Text>\n );\n}\n","import { Text } from '@asyncapi/generator-react-sdk';\nimport { toSnakeCase } from '@asyncapi/generator-helpers';\n\n/**\n * Component for rendering receive operation handler registration methods\n * Generates one specific method per operation for better DX\n * \n* @param {Object} props - Component props\n* @param {Array} props.receiveOperations - Array of receive operations from AsyncAPI document\n* @returns {Array<React.Element>|null} Array of Text components containing Python handler registration methods, or null if no operations\n */\nexport function RegisterReceiveOperations({ receiveOperations }) {\n if (!receiveOperations || receiveOperations.length === 0) {\n return null;\n }\n\n return receiveOperations.map((operation) => {\n const operationId = operation.id();\n const methodName = `register_${toSnakeCase(operationId)}_handler`;\n\n return (\n <Text indent={2} newLines={2} key={operationId}>\n {`def ${methodName}(self, handler, discriminator_key=None, discriminator_value=None):\n \"\"\"\n Register a handler for ${operationId} operation.\n\n Args:\n handler (callable): Handler function that receives raw_message as argument\n discriminator_key (str): Message field to use for routing (e.g., 'type', 'event_type')\n discriminator_value (str): Expected value for routing (e.g., 'hello', 'user_joined')\n \"\"\"\n if not callable(handler):\n print(\"Handler must be callable\")\n return\n\n # Validate that either both discriminator_key and discriminator_value are provided or neither\n if (discriminator_key is not None and discriminator_value is None) or (discriminator_key is None and discriminator_value is not None):\n print(\"Error: Both discriminator_key and discriminator_value must be provided together\")\n return\n\n # Register handler\n self.receive_operation_handlers[\"${operationId}\"] = handler\n\n # Add discriminator entry to the list if both key and value are provided\n if discriminator_key is not None and discriminator_value is not None:\n discriminator_entry = {\n \"key\": discriminator_key,\n \"value\": discriminator_value,\n \"operation_id\": \"${operationId}\"\n }\n \n # Check if this discriminator already exists\n exists = any(\n d.get(\"key\") == discriminator_key and \n d.get(\"value\") == discriminator_value and \n d.get(\"operation_id\") == \"${operationId}\" \n for d in self.receive_operation_discriminators\n )\n\n if not exists:\n self.receive_operation_discriminators.append(discriminator_entry)`}\n </Text>\n );\n });\n}","import { Text } from '@asyncapi/generator-react-sdk';\nimport { getClientName, getServerUrl, getServer, getQueryParams, getTitle } from '@asyncapi/generator-helpers';\nimport { Send } from './Send';\nimport { Constructor } from './Constructor';\nimport { CloseConnection, RegisterMessageHandler, RegisterErrorHandler, SendOperations, Connect, HandleMessage } from '@asyncapi/generator-components';\nimport { RegisterOutgoingProcessor } from './RegisterOutgoingProcessor';\nimport { HandleError } from './HandleError';\nimport { RegisterReceiveOperations } from './RegisterReceiveOperations';\n\nexport function ClientClass({ asyncapi, params }) {\n const server = getServer(asyncapi.servers(), params.server);\n const title = getTitle(asyncapi);\n const queryParams = getQueryParams(asyncapi.channels());\n const clientName = getClientName(asyncapi, params.appendClientSuffix, params.customClientName);\n const serverUrl = getServerUrl(server);\n const operations = asyncapi.operations();\n const sendOperations = operations.filterBySend();\n const receiveOperations = operations.filterByReceive();\n\n return (\n <Text>\n <Text newLines={2}>\n {`class ${clientName}:`}\n </Text>\n <Constructor serverUrl={serverUrl} query={queryParams} receiveOperations={receiveOperations} />\n <Connect language=\"python\" title={title} />\n <RegisterMessageHandler\n language=\"python\"\n methodName='register_message_handler'\n methodParams={['self', 'handler']}\n preExecutionCode='\"\"\"Register a callable to process incoming messages.\"\"\"'\n />\n <RegisterErrorHandler\n language=\"python\"\n methodName='register_error_handler'\n methodParams={['self', 'handler']}\n preExecutionCode='\"\"\"Register a callable to process errors.\"\"\"'\n />\n <RegisterOutgoingProcessor />\n <HandleMessage\n language=\"python\"\n methodName='handle_message'\n methodParams={['self', 'message']}\n preExecutionCode='\"\"\"Pass the incoming message to all registered message handlers. \"\"\"'\n />\n <HandleError />\n <RegisterReceiveOperations receiveOperations={receiveOperations} />\n <SendOperations \n language=\"python\"\n sendOperations={sendOperations} \n clientName={clientName} \n />\n <Send sendOperations={sendOperations} />\n <CloseConnection \n language=\"python\" \n methodParams={['self']}\n preExecutionCode='\"\"\"Cleanly close the WebSocket connection.\"\"\"'\n />\n </Text>\n );\n}\n","import { File } from '@asyncapi/generator-react-sdk';\nimport { getServer, getQueryParams, getInfo } from '@asyncapi/generator-helpers';\nimport { FileHeaderInfo } from '@asyncapi/generator-components';\nimport { Requires } from '../components/Requires';\nimport { ClientClass } from '../components/ClientClass';\n\nexport default function ({ asyncapi, params }) {\n const server = getServer(asyncapi.servers(), params.server);\n const info = getInfo(asyncapi);\n const queryParams = getQueryParams(asyncapi.channels());\n return (\n // The clientFileName default values can be found and modified under the .ageneratorrc\n <File name={params.clientFileName}>\n <FileHeaderInfo\n info={info}\n server={server}\n language=\"python\"\n />\n <Requires query={queryParams} />\n <ClientClass asyncapi={asyncapi} params={params} />\n </File>\n );\n}\n"],"names":["Requires","query","additionalDependencies","push","_jsx","DependencyProvider","language","Send","sendOperations","length","Text","newLines","indent","children","QueryParamsArgumentsDocs","queryParams","map","param","paramName","firstLine","secondLine","toUpperCase","_jsxs","InitSignature","serverUrl","queryParamsArguments","paramDefaultValue","defaultValue","join","ReceiveOperationsDiscriminators","receiveOperations","hasOperations","Array","isArray","operationDiscriminators","getMessageDiscriminatorsFromOperations","serializedDiscriminators","JSON","stringify","Constructor","queryParamsArray","from","entries","_Fragment","QueryParamsVariables","RegisterOutgoingProcessor","HandleError","RegisterReceiveOperations","operation","operationId","id","methodName","toSnakeCase","ClientClass","asyncapi","params","server","getServer","servers","title","getTitle","getQueryParams","channels","clientName","getClientName","appendClientSuffix","customClientName","getServerUrl","operations","filterBySend","filterByReceive","Connect","RegisterMessageHandler","methodParams","preExecutionCode","RegisterErrorHandler","HandleMessage","SendOperations","CloseConnection","info","getInfo","File","name","clientFileName","FileHeaderInfo"],"mappings":"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"}
1
+ {"version":3,"file":"client.py.js","sources":["../../../../../../../../packages/templates/clients/websocket/python/components/Requires.js","../../../../../../../../packages/templates/clients/websocket/python/components/Send.js","../../../../../../../../packages/templates/clients/websocket/python/components/QueryParamsArgumentsDocs.js","../../../../../../../../packages/templates/clients/websocket/python/components/InitSignature.js","../../../../../../../../packages/templates/clients/websocket/python/components/ReceiveOperationsDiscriminators.js","../../../../../../../../packages/templates/clients/websocket/python/components/Constructor.js","../../../../../../../../packages/templates/clients/websocket/python/components/RegisterOutgoingProcessor.js","../../../../../../../../packages/templates/clients/websocket/python/components/HandleError.js","../../../../../../../../packages/templates/clients/websocket/python/components/RegisterReceiveOperations.js","../../../../../../../../packages/templates/clients/websocket/python/components/ClientClass.js","../../../../../../../../packages/templates/clients/websocket/python/template/client.py.js"],"sourcesContent":["import { DependencyProvider } from '@asyncapi/generator-components';\n\nexport function Requires({ query }) {\n const additionalDependencies = [];\n if (query) {\n additionalDependencies.push('import os');\n additionalDependencies.push('from urllib.parse import urlencode');\n }\n return (\n <DependencyProvider\n language=\"python\"\n additionalDependencies={additionalDependencies}\n />\n );\n}","import { Text } from '@asyncapi/generator-react-sdk';\n\nexport function Send({ sendOperations }) {\n if (!sendOperations || sendOperations.length === 0) {\n return null;\n }\n\n return (\n <Text newLines={2} indent={2}>\n {\n `\n@staticmethod\ndef _send(message, socket):\n \"\"\"\n Internal helper to handle the actual sending logic.\n\n Args:\n message (dict or str): The message to send.\n socket (websockets.WebSocketCommonProtocol): The WebSocket to send through.\n\n Notes:\n If message is a dictionary, it will be automatically converted to JSON.\n \"\"\"\n try:\n if isinstance(message, dict):\n message = json.dumps(message)\n socket.send(message)\n except Exception as e:\n print(\"Error sending:\", e)`\n }\n </Text>\n );\n}\n","import { Text } from '@asyncapi/generator-react-sdk';\n\nexport function QueryParamsArgumentsDocs({ queryParams }) {\n if (!queryParams) {\n return null;\n }\n\n return queryParams.map((param) => {\n const paramName = param[0];\n const firstLine = `${paramName} (str, optional):`;\n const secondLine = `If provided (or if ${paramName.toUpperCase()} environment variable is set), added as ?${paramName}=… to URL`;\n return (\n <Text indent={1}>\n {firstLine}\n {secondLine}\n </Text>\n );\n });\n}\n","import { Text } from '@asyncapi/generator-react-sdk';\n\nexport function InitSignature({ queryParams, serverUrl }) {\n if (!queryParams) {\n return (\n <Text indent={2} newLines={2}>\n {`def __init__(self, url: str = \"${serverUrl}\"):`}\n </Text>\n );\n }\n \n const queryParamsArguments = queryParams?.map((param) => {\n const paramName = param[0];\n const paramDefaultValue = param[1];\n const defaultValue = paramDefaultValue ? `\"${paramDefaultValue}\"` : 'None';\n return `${paramName}: str = ${defaultValue}`;\n }).join(', ');\n \n return (\n <Text indent={2} newLines={2}>\n {`def __init__(self, url: str = \"${serverUrl}\", ${queryParamsArguments}):`}\n </Text>\n );\n}\n","import { Text } from '@asyncapi/generator-react-sdk';\nimport { getMessageDiscriminatorsFromOperations } from '@asyncapi/generator-helpers';\n\n/**\n * Component that generates initialization code for receive operation discriminators.\n * \n * @param {Object} props - Component properties\n * @param {Array<Object>} [props.receiveOperations] - Receive operations from AsyncAPI document\n * @returns {React.Element|null} Rendered initialization code or null.\n */\nexport function ReceiveOperationsDiscriminators({ receiveOperations }) {\n const operationDiscriminators = Array.isArray(receiveOperations) && receiveOperations.length > 0\n ? getMessageDiscriminatorsFromOperations(receiveOperations)\n : [];\n const serializedDiscriminators = JSON.stringify(operationDiscriminators);\n\n return (\n <Text indent={2} newLines={2}>\n {`\n self.receive_operation_handlers = {}\n self.receive_operation_discriminators = ${serializedDiscriminators}`\n }\n </Text>\n );\n}\n","import { Text } from '@asyncapi/generator-react-sdk';\nimport { QueryParamsVariables } from '@asyncapi/generator-components';\nimport { QueryParamsArgumentsDocs } from './QueryParamsArgumentsDocs';\nimport { InitSignature } from './InitSignature';\nimport { ReceiveOperationsDiscriminators } from './ReceiveOperationsDiscriminators';\n\nexport function Constructor({ serverUrl, query, receiveOperations }) {\n const queryParamsArray = query && Array.from(query.entries());\n\n return (\n <>\n <InitSignature queryParams={queryParamsArray} serverUrl={serverUrl} />\n <Text indent={2}>\n {`\n \"\"\"\n Constructor to initialize the WebSocket client.\n\n Args:\n url (str, optional): The WebSocket server URL. Use it if the server URL is \n different from the default one taken from the AsyncAPI document.`}\n </Text>\n <QueryParamsArgumentsDocs queryParams={queryParamsArray} />\n <Text indent={2}>\n {`\n \"\"\"\n self.ws_app = None # Instance of WebSocketApp\n self.message_handlers = [] # Callables for incoming messages\n self.error_handlers = [] # Callables for errors\n self.outgoing_processors = [] # Callables to process outgoing messages\n self._stop_event = threading.Event()\n ${ query ? 'params = {}' : ''}`\n }\n </Text>\n <ReceiveOperationsDiscriminators receiveOperations={receiveOperations} />\n <QueryParamsVariables\n language=\"python\"\n queryParams={queryParamsArray} \n />\n <Text newLines={2}>\n {`\n ${query ? 'qs = urlencode(params) if params else \"\"' : ''}\n ${query ? 'self.url = f\"{url}{f\\'?{qs}\\' if qs else \\'\\'}\"' : 'self.url = url'}`}\n </Text>\n </>\n );\n}","import { Text } from '@asyncapi/generator-react-sdk';\n\nexport function RegisterOutgoingProcessor() {\n return (\n <Text newLines={2} indent={2}>\n {\n `def register_outgoing_processor(self, processor):\n \"\"\"\n Register a callable that processes outgoing messages automatically.\n These processors run in sequence before each message is sent.\n \"\"\"\n if callable(processor):\n self.outgoing_processors.append(processor)\n else:\n print(\"Outgoing processor must be callable\")`\n }\n </Text>\n );\n}\n","import { Text } from '@asyncapi/generator-react-sdk';\n\nexport function HandleError() {\n return (\n <Text newLines={2} indent={2}>\n {\n `def handle_error(self, error):\n \"\"\"Pass the error to all registered error handlers. Generic log message is printed if no handlers are registered.\"\"\"\n if len(self.error_handlers) == 0:\n print(\"\\\\033[91mError occurred:\\\\033[0m\", error)\n else:\n # Call custom error handlers\n for handler in self.error_handlers:\n handler(error)`\n }\n </Text>\n );\n}\n","import { Text } from '@asyncapi/generator-react-sdk';\nimport { toSnakeCase } from '@asyncapi/generator-helpers';\n\n/**\n * Component for rendering receive operation handler registration methods\n * Generates one specific method per operation for better DX\n * \n* @param {Object} props - Component props\n* @param {Array} props.receiveOperations - Array of receive operations from AsyncAPI document\n* @returns {Array<React.Element>|null} Array of Text components containing Python handler registration methods, or null if no operations\n */\nexport function RegisterReceiveOperations({ receiveOperations }) {\n if (!receiveOperations || receiveOperations.length === 0) {\n return null;\n }\n\n return receiveOperations.map((operation) => {\n const operationId = operation.id();\n const methodName = `register_${toSnakeCase(operationId)}_handler`;\n\n return (\n <Text indent={2} newLines={2} key={operationId}>\n {`def ${methodName}(self, handler, discriminator_key=None, discriminator_value=None):\n \"\"\"\n Register a handler for ${operationId} operation.\n\n Args:\n handler (callable): Handler function that receives raw_message as argument\n discriminator_key (str): Message field to use for routing (e.g., 'type', 'event_type')\n discriminator_value (str): Expected value for routing (e.g., 'hello', 'user_joined')\n \"\"\"\n if not callable(handler):\n print(\"Handler must be callable\")\n return\n\n # Validate that either both discriminator_key and discriminator_value are provided or neither\n if (discriminator_key is not None and discriminator_value is None) or (discriminator_key is None and discriminator_value is not None):\n print(\"Error: Both discriminator_key and discriminator_value must be provided together\")\n return\n\n # Register handler\n self.receive_operation_handlers[\"${operationId}\"] = handler\n\n # Add discriminator entry to the list if both key and value are provided\n if discriminator_key is not None and discriminator_value is not None:\n discriminator_entry = {\n \"key\": discriminator_key,\n \"value\": discriminator_value,\n \"operation_id\": \"${operationId}\"\n }\n \n # Check if this discriminator already exists\n exists = any(\n d.get(\"key\") == discriminator_key and \n d.get(\"value\") == discriminator_value and \n d.get(\"operation_id\") == \"${operationId}\" \n for d in self.receive_operation_discriminators\n )\n\n if not exists:\n self.receive_operation_discriminators.append(discriminator_entry)`}\n </Text>\n );\n });\n}","import { Text } from '@asyncapi/generator-react-sdk';\nimport { getClientName, getServerUrl, getServer, getQueryParams, getTitle } from '@asyncapi/generator-helpers';\nimport { Send } from './Send';\nimport { Constructor } from './Constructor';\nimport { CloseConnection, RegisterMessageHandler, RegisterErrorHandler, SendOperations, Connect, HandleMessage } from '@asyncapi/generator-components';\nimport { RegisterOutgoingProcessor } from './RegisterOutgoingProcessor';\nimport { HandleError } from './HandleError';\nimport { RegisterReceiveOperations } from './RegisterReceiveOperations';\n\nexport function ClientClass({ asyncapi, params }) {\n const server = getServer(asyncapi.servers(), params.server);\n const title = getTitle(asyncapi);\n const queryParams = getQueryParams(asyncapi.channels());\n const clientName = getClientName(asyncapi, params.appendClientSuffix, params.customClientName);\n const serverUrl = getServerUrl(server);\n const operations = asyncapi.operations();\n const sendOperations = operations.filterBySend();\n const receiveOperations = operations.filterByReceive();\n\n return (\n <Text>\n <Text newLines={2}>\n {`class ${clientName}:`}\n </Text>\n <Constructor serverUrl={serverUrl} query={queryParams} receiveOperations={receiveOperations} />\n <Connect language=\"python\" title={title} />\n <RegisterMessageHandler\n language=\"python\"\n methodName='register_message_handler'\n methodParams={['self', 'handler']}\n preExecutionCode='\"\"\"Register a callable to process incoming messages.\"\"\"'\n />\n <RegisterErrorHandler\n language=\"python\"\n methodName='register_error_handler'\n methodParams={['self', 'handler']}\n preExecutionCode='\"\"\"Register a callable to process errors.\"\"\"'\n />\n <RegisterOutgoingProcessor />\n <HandleMessage\n language=\"python\"\n methodName='handle_message'\n methodParams={['self', 'message']}\n preExecutionCode='\"\"\"Pass the incoming message to all registered message handlers. \"\"\"'\n />\n <HandleError />\n <RegisterReceiveOperations receiveOperations={receiveOperations} />\n <SendOperations \n language=\"python\"\n sendOperations={sendOperations} \n clientName={clientName} \n />\n <Send sendOperations={sendOperations} />\n <CloseConnection \n language=\"python\" \n methodParams={['self']}\n preExecutionCode='\"\"\"Cleanly close the WebSocket connection.\"\"\"'\n />\n </Text>\n );\n}\n","import { File } from '@asyncapi/generator-react-sdk';\nimport { getServer, getQueryParams, getInfo } from '@asyncapi/generator-helpers';\nimport { FileHeaderInfo } from '@asyncapi/generator-components';\nimport { Requires } from '../components/Requires';\nimport { ClientClass } from '../components/ClientClass';\n\nexport default function ({ asyncapi, params }) {\n const server = getServer(asyncapi.servers(), params.server);\n const info = getInfo(asyncapi);\n const queryParams = getQueryParams(asyncapi.channels());\n return (\n // The clientFileName default values can be found and modified under the .ageneratorrc\n <File name={params.clientFileName}>\n <FileHeaderInfo\n info={info}\n server={server}\n language=\"python\"\n />\n <Requires query={queryParams} />\n <ClientClass asyncapi={asyncapi} params={params} />\n </File>\n );\n}\n"],"names":["Requires","query","additionalDependencies","push","_jsx","DependencyProvider","language","Send","sendOperations","length","Text","newLines","indent","children","QueryParamsArgumentsDocs","queryParams","map","param","paramName","firstLine","secondLine","toUpperCase","_jsxs","InitSignature","serverUrl","queryParamsArguments","paramDefaultValue","defaultValue","join","ReceiveOperationsDiscriminators","receiveOperations","operationDiscriminators","Array","isArray","getMessageDiscriminatorsFromOperations","serializedDiscriminators","JSON","stringify","Constructor","queryParamsArray","from","entries","_Fragment","QueryParamsVariables","RegisterOutgoingProcessor","HandleError","RegisterReceiveOperations","operation","operationId","id","methodName","toSnakeCase","ClientClass","asyncapi","params","server","getServer","servers","title","getTitle","getQueryParams","channels","clientName","getClientName","appendClientSuffix","customClientName","getServerUrl","operations","filterBySend","filterByReceive","Connect","RegisterMessageHandler","methodParams","preExecutionCode","RegisterErrorHandler","HandleMessage","SendOperations","CloseConnection","info","getInfo","File","name","clientFileName","FileHeaderInfo"],"mappings":"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"}
@@ -9,12 +9,9 @@ import { getMessageDiscriminatorsFromOperations } from '@asyncapi/generator-help
9
9
  * @returns {React.Element|null} Rendered initialization code or null.
10
10
  */
11
11
  export function ReceiveOperationsDiscriminators({ receiveOperations }) {
12
- const hasOperations = Array.isArray(receiveOperations) && receiveOperations.length > 0;
13
- if (!hasOperations) {
14
- return null;
15
- }
16
-
17
- const operationDiscriminators = getMessageDiscriminatorsFromOperations(receiveOperations);
12
+ const operationDiscriminators = Array.isArray(receiveOperations) && receiveOperations.length > 0
13
+ ? getMessageDiscriminatorsFromOperations(receiveOperations)
14
+ : [];
18
15
  const serializedDiscriminators = JSON.stringify(operationDiscriminators);
19
16
 
20
17
  return (
@@ -10,7 +10,7 @@ export function Send({ sendOperations }) {
10
10
  {
11
11
  `
12
12
  @staticmethod
13
- async def _send(message, socket):
13
+ def _send(message, socket):
14
14
  """
15
15
  Internal helper to handle the actual sending logic.
16
16
 
@@ -24,7 +24,7 @@ async def _send(message, socket):
24
24
  try:
25
25
  if isinstance(message, dict):
26
26
  message = json.dumps(message)
27
- await socket.send(message)
27
+ socket.send(message)
28
28
  except Exception as e:
29
29
  print("Error sending:", e)`
30
30
  }
@@ -21,7 +21,6 @@
21
21
  "@babel/core": "^7.26.0",
22
22
  "@babel/preset-env": "^7.26.0",
23
23
  "@babel/preset-react": "^7.25.9",
24
- "jest-esm-transformer": "^1.0.0",
25
24
  "eslint": "^6.8.0",
26
25
  "eslint-plugin-jest": "^23.8.2",
27
26
  "eslint-plugin-react": "^7.34.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asyncapi/generator",
3
- "version": "3.1.2",
3
+ "version": "3.2.0",
4
4
  "description": "The AsyncAPI generator. It can generate documentation, code, anything!",
5
5
  "main": "./lib/generator.js",
6
6
  "engines": {
@@ -54,7 +54,7 @@
54
54
  "@asyncapi/generator-react-sdk": "*",
55
55
  "@asyncapi/multi-parser": "^2.2.0",
56
56
  "@asyncapi/parser": "^3.6.0",
57
- "@npmcli/arborist": "5.6.3",
57
+ "@npmcli/arborist": "^9.2.0",
58
58
  "@npmcli/config": "^8.0.2",
59
59
  "ajv": "^8.12.0",
60
60
  "commander": "^6.1.0",
@@ -81,7 +81,7 @@
81
81
  "eslint-plugin-react": "^7.34.1",
82
82
  "eslint-plugin-sonarjs": "^0.5.0",
83
83
  "fs-extra": "11.2.0",
84
- "jest": "^27.3.1",
84
+ "jest": "^28.1.3",
85
85
  "jsdoc-to-markdown": "^7.1.1",
86
86
  "markdown-toc": "^1.2.0",
87
87
  "rimraf": "^3.0.2",