Befor generating

This commit is contained in:
marys
2026-06-01 13:17:37 +02:00
parent 3383f4bf4a
commit 1aa1b5f625
6756 changed files with 649946 additions and 1 deletions
+102
View File
@@ -0,0 +1,102 @@
const { createMapOfType, getMapValueOfType, mix } = require('./utils');
const Base = require('./base');
const ChannelParameter = require('./channel-parameter');
const PublishOperation = require('./publish-operation');
const SubscribeOperation = require('./subscribe-operation');
const MixinDescription = require('../mixins/description');
const MixinBindings = require('../mixins/bindings');
const MixinSpecificationExtensions = require('../mixins/specification-extensions');
/**
* Implements functions to deal with a Channel object.
* @class
* @alias module:@asyncapi/parser#Channel
* @extends Base
* @mixes MixinDescription
* @mixes MixinBindings
* @mixes MixinSpecificationExtensions
* @returns {Channel}
*/
class Channel extends Base {
/**
* @returns {Object<string, ChannelParameter>}
*/
parameters() {
return createMapOfType(this._json.parameters, ChannelParameter);
}
/**
* @param {string} name - Name of the parameter.
* @returns {ChannelParameter}
*/
parameter(name) {
return getMapValueOfType(this._json.parameters, name, ChannelParameter);
}
/**
* @returns {boolean}
*/
hasParameters() {
return !!this._json.parameters;
}
/**
* @returns {boolean}
*/
hasServers() {
return !!this._json.servers;
}
/**
* @returns {String[]}
*/
servers() {
if (!this._json.servers) return [];
return this._json.servers;
}
/**
* @param {number} index - Index of the server.
* @returns {String}
*/
server(index) {
if (!this._json.servers) return null;
if (typeof index !== 'number') return null;
if (index > this._json.servers.length - 1) return null;
return this._json.servers[+index];
}
/**
* @returns {PublishOperation}
*/
publish() {
if (!this._json.publish) return null;
return new PublishOperation(this._json.publish);
}
/**
* @returns {SubscribeOperation}
*/
subscribe() {
if (!this._json.subscribe) return null;
return new SubscribeOperation(this._json.subscribe);
}
/**
* @returns {boolean}
*/
hasPublish() {
return !!this._json.publish;
}
/**
* @returns {boolean}
*/
hasSubscribe() {
return !!this._json.subscribe;
}
}
module.exports = mix(Channel, MixinDescription, MixinBindings, MixinSpecificationExtensions);