Source: model/sourceData.js

'use strict';

/** @namespace model **/

/**
 * @typeDef {Object} Author
 * @prop {string} firstName - The First name of the Author. May be null.
 * @prop {string} middleName - The Middle of the Author. May be null. 
 * @prop {string} lastName - The Last name of the Author. May be null.
 * @prop {string} email - The email address of the author
 * @memberof model
 */

/**
* @typeDef {Object} UID
* @memberof model
* @prop {string} type - Only DOI for now
* @prop {string} value - The actual DOI value
*/

/**
 * An object representing a Code Source Data.
 * @class
 * @memberof model
 * @prop {string} name - Name of the project
 * @prop {Array<model.Author>} authors - List of author objects
 * @prop {string} version - The version number of the software at the time of generation
 * @prop {Date} releaseDate - The latest date the software was released in a date object
 * @prop {string} url - the URL to the source. Not necessarily the URL used to generate this data
 * @prop {string} licence - The name of the licence 
 * @prop {string} description - A short string describing the project
 * @prop {model.UID} uid - A unique identifier for the source.  Could be DOI etc.
 */
class SourceData {
	constructor() {
		this.name = '';
		this.version = null;
		this.releaseDate = null;
		this.url = '';
		this.licence = '';
		this.description = '';
		this.authors = [];
		this.uid = null;
	}
}

module.exports = SourceData;