60 lines
1.3 KiB
JavaScript
60 lines
1.3 KiB
JavaScript
const MessageTrait = require('./message-trait');
|
|
const MessageTraitable = require('./message-traitable');
|
|
const Schema = require('./schema');
|
|
|
|
/**
|
|
* Implements functions to deal with a Message object.
|
|
* @class
|
|
* @alias module:@asyncapi/parser#Message
|
|
* @extends MessageTraitable
|
|
* @returns {Message}
|
|
*/
|
|
class Message extends MessageTraitable {
|
|
/**
|
|
* @returns {string}
|
|
*/
|
|
uid() {
|
|
return this.id() || this.name() || this.ext('x-parser-message-name') || Buffer.from(JSON.stringify(this._json)).toString('base64');
|
|
}
|
|
|
|
/**
|
|
* @returns {Schema}
|
|
*/
|
|
payload() {
|
|
if (!this._json.payload) return null;
|
|
return new Schema(this._json.payload);
|
|
}
|
|
|
|
/**
|
|
* @returns {MessageTrait[]}
|
|
*/
|
|
traits() {
|
|
const traits = this._json['x-parser-original-traits'] || this._json.traits;
|
|
if (!traits) return [];
|
|
return traits.map(t => new MessageTrait(t));
|
|
}
|
|
|
|
/**
|
|
* @returns {boolean}
|
|
*/
|
|
hasTraits() {
|
|
return !!this._json['x-parser-original-traits'] || !!this._json.traits;
|
|
}
|
|
|
|
/**
|
|
* @returns {any}
|
|
*/
|
|
originalPayload() {
|
|
return this._json['x-parser-original-payload'] || this.payload();
|
|
}
|
|
|
|
/**
|
|
* @returns {string}
|
|
*/
|
|
originalSchemaFormat() {
|
|
return this._json['x-parser-original-schema-format'] || this.schemaFormat();
|
|
}
|
|
}
|
|
|
|
module.exports = Message;
|