code: async function({sourcePath, targetPath, tmpPath, options} = {}) {
  	if (!sourcePath || !targetPath || !tmpPath || !options.projectName || !options.namespace || !options.version) {
  		throw new Error("[jsdocGenerator]: One or more mandatory parameters not provided");
  	}
  
  	if (!options.variants || options.variants.length === 0) {
  		options.variants = ["apijson"];
  	}
  
  	const config = await jsdocGenerator._generateJsdocConfig({
  		targetPath,
  		tmpPath,
  		namespace: options.namespace,
  		projectName: options.projectName,
  		version: options.version,
  		variants: options.variants
  	});
  
  	const configPath = await jsdocGenerator._writeJsdocConfig(tmpPath, config);
  
  	await jsdocGenerator._buildJsdoc({
  		sourcePath,
  		configPath
  	});
  
  	const fsTarget = resourceFactory.createAdapter({
  		fsBasePath: targetPath,
  		virBasePath: "/"
  	});
  
  	// create resources from the output files
  	return Promise.all([
  		fsTarget.byPath(`/test-resources/${options.namespace}/designtime/api.json`)
  		// fsTarget.byPath(`/libraries/${options.projectName}.js`)
  	]).then((res) => res.filter(($)=>$));
  }
docs: JSDoc generator
  
  @public
  @alias module:@ui5/builder.processors.jsdocGenerator
  @param {Object} parameters Parameters
  @param {string} parameters.sourcePath Path of the source files to be processed
  @param {string} parameters.targetPath Path to write any output files
  @param {string} parameters.tmpPath Path to write temporary and debug files
  @param {Object} parameters.options Options
  @param {string} parameters.options.projectName Project name
  @param {string} parameters.options.namespace Namespace to build (e.g. <code>some/project/name</code>)
  @param {string} parameters.options.version Project version
  @param {Array} [parameters.options.variants=["apijson"]] JSDoc variants to be built
  @returns {Promise<module:@ui5/fs.Resource[]>} Promise resolving with newly created resources