UNPKG

qwc2

Version:
9 lines 4.34 kB
#!/usr/bin/env node /** * Copyright 2024 Sourcepole AG * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t["return"]&&(u=t["return"](),Object(u)!==u))return}finally{if(o)throw n}}return a}}function _arrayWithHoles(r){if(Array.isArray(r))return r}var fs=require("fs");var path=require("path");var reactDocs=require("react-docgen");var qwcPluginDir=__dirname+"/../plugins";var pluginData=[];fs.readdirSync(qwcPluginDir).forEach(function(entry){if(entry.endsWith(".jsx")){var file=path.resolve(qwcPluginDir,entry);var contents=fs.readFileSync(file);pluginData.push(reactDocs.parse(contents,reactDocs.resolver.findAllComponentDefinitions))}});fs.readdirSync(qwcPluginDir+"/map").forEach(function(entry){if(entry.endsWith(".jsx")){var file=path.resolve(qwcPluginDir,"map",entry);var contents=fs.readFileSync(file);pluginData.push(reactDocs.parse(contents,reactDocs.resolver.findAllComponentDefinitions))}});pluginData=pluginData.flat();function parsePropType(type){if(type.name==="shape"){return"{\n"+Object.entries(type.value).map(function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],value=_ref2[1];return" "+key+": "+parsePropType(value)+",\n"}).join("")+"}"}else if(type.name==="arrayOf"){return"["+parsePropType(type.value)+"]"}else if(type.name==="union"){return"{"+type.value.map(function(entry){return parsePropType(entry)}).join(", ")+"}"}else{return type.name}}// Write markdown output var output="";output+="Plugin reference\n";output+="================\n";output+="\n";pluginData.forEach(function(plugin){if(!plugin.description){return}output+="* [".concat(plugin.displayName,"](#").concat(plugin.displayName.toLowerCase(),")\n")});output+="\n";output+="---\n";pluginData.forEach(function(plugin){if(!plugin.description){return}output+="".concat(plugin.displayName,"<a name=\"").concat(plugin.displayName.toLowerCase(),"\"></a>\n");output+="----------------------------------------------------------------\n";output+=plugin.description+"\n\n";var props=Object.entries(plugin.props||{}).filter(function(entry){return entry[1].description});if(props.length>0){output+="| Property | Type | Description | Default value |\n";output+="|----------|------|-------------|---------------|\n";props.forEach(function(_ref3){var _ref4=_slicedToArray(_ref3,2),name=_ref4[0],prop=_ref4[1];if(!prop.description){return}var defaultValue=prop.defaultValue?prop.defaultValue.value.split("\n").map(function(x){return"`"+x.replace(" ","\xA0")+"`"}).join("<br />"):"`undefined`";var type="`"+parsePropType(prop.type).replaceAll(" ","\xA0").replaceAll("\n","`<br />`")+"`";output+="| ".concat(name," | ").concat(type," | ").concat(prop.description.replaceAll("\n","<br />")," | ").concat(defaultValue," |\n")});output+="\n"}plugin.methods.forEach(function(method){if(method.docblock){var params=method.params.map(function(param){return param.name}).join(",");output+="**".concat(method.name,"(").concat(params,")**\n\n");output+=(method.docblock||"")+"\n";output+="\n"}})});fs.writeFileSync(__dirname+"/../doc/plugins.md",output);/* eslint-disable-next-line */console.log("Plugin documentation written to doc/plugins.md!");