API/Build.js

const { BuildChange } = require("./BuildChange");
const { List } = require("./List");

/**
 * @class Build
 *
 * @param {Object} $b
 * @param {string} $b.versionNumber
 * @param {string} $b.alternateVersionNumber
 * @param {List<BuildChange>} $b.changes
 * @param {List<string>} $b.knownIssues
 * @param {List<string>} $b.notes
 */
class Build {
	constructor($b) {
		if (!$b) $b = {};
		/**@type {string} */
		this.VersionNumber = $b.versionNumber;
		/**@type {string} */
		this.AlternateVersionNumber = $b.alternateVersionNumber;
		/**@type {List<BuildChange>} */
		this.Changes =
			$b.changes instanceof List
				? $b.changes
				: (() => {
					let ch = new List();
					for (let change of $b.changes) {
						ch.Add(new BuildChange(change));
					}
					return ch;
				  })();
		/**@type {List<string>} */
		this.KnownIssues =
			$b.knownIssues instanceof List
				? $b.knownIssues
				: List.ToList($b.knownIssues);
		/**@type {List<string>} */
		this.Notes = $b.notes instanceof List ? $b.notes : List.ToList($b.notes);
	}
}
module.exports = {
	Build,
};