{"_id":"better-docs","_rev":"60-6914b6c8734e8a0077f97619704e6659","name":"better-docs","dist-tags":{"latest":"2.7.3","beta":"2.4.0-beta.9","dev":"2.7.4-dev.1"},"versions":{"1.0.0":{"name":"better-docs","version":"1.0.0","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","browser-sync":"^2.26.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.1","bulma":"^0.7.2"},"_id":"better-docs@1.0.0","_npmVersion":"5.10.0","_nodeVersion":"10.7.0","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-SCDfpxaE9cB/pShKEJxB4yepyMsLqmPcncNxCjNt/Oy7utBk/5QP2SPfLKAHgV+WV36dwzkGyuhEmNlvryqq9g==","shasum":"3dcd293b7c03f768b856f9162c1af7e36d3278e7","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.0.0.tgz","fileCount":58,"unpackedSize":1060304,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQ3JkCRA9TVsSAnZWagAASlAP/i7ulLovEm0LMwP/EYPo\nvi/qCZg2sUb5P2cBCv+aNnVYK9c9XmXS0/0Q8wU5kM3V5zUzr9nQO6B02wxD\nf96bq5l8tMgZXSDcSCevUrEMKlnxKfmrlhNSbSt91HPpeitS5E9/ixoBncWd\nGhNNXoPMWBs//tN4Wkzz9znPS6Q0Xz0j8fSXevCyjWxH9zs0vqDxioy7k1Lm\nO3sRucJJNDW5jdTvHs6hBSNWjBG93N1xw8l6Z0BGnx0QKRJTbxlphDxFekgC\nOxS5nx6DAZrqiZQd8KHUMB1g0o8XOalJiKv18wXLMRVSdgAjQnlV1nE5TL56\ncK7xtuBHB2uCShgADXOBIB00p9EeIv53Bty26kkl7O9keplq1ei5eGbw+IiY\nwep4e9bPI1V999Bmy+IXXHh6WBskqCDB7X4Cq+TMqV2ObmSdkve1sqyjTEie\nc1Q3HTq7A8jWxH8EwWLhnltvcLQnMlZasxHKdE7HHu7iIdCY0lLPN73CaoID\nB/4xRY05mDiSPwV1iTUGW71/6+IlQoT8asYJsBapFwPlifuZ2pH0eqGiB7C+\nUbVfCKekUaQhKkv3KgViPk4Z2vWMcZC6slH9zHMZ6qDFHM3y44vRas5RUJQW\nrc+aAXRu2ydkdKNmMsO5QJ/2e0kuYIuCrKgv2lHd0AxfcXidDHHnnV6E7Tn5\nsKjK\r\n=koLH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtR6BNRztAtGioJV4fkuCk7E4Twm9R6BciiCMnqnyrWAIhAKFIem5UyLhJyYCEu6d32D52gnu4gF6U5YWHDxSdKOLp"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.0.0_1547924068220_0.5696585526901123"},"_hasShrinkwrap":false},"1.0.2":{"name":"better-docs","version":"1.0.2","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"gulp sass js"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","browser-sync":"^2.26.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.1","bulma":"^0.7.2"},"gitHead":"98a936d03c8415b0ce8c1c937839e0cdbd74ca8b","_id":"better-docs@1.0.2","_npmVersion":"6.4.1","_nodeVersion":"8.15.0","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-eoIJ6U6we2+2lHz2hCpdu8Zm94mPDc7nPuQOrgjhkJtCzN/1tnkMCGEVKJA6h+mPyM3HdiWByvGFFLb+VLGbFg==","shasum":"bff3aff37708ffbe26f75b0c96d8ebff6b6617b8","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.0.2.tgz","fileCount":58,"unpackedSize":1062116,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcRyJwCRA9TVsSAnZWagAAkZYP/1NGiI2oZqIfCI1ZW0n5\nkpa6sW08PFY7n4vKmllp+wPDRWAKHRhYx3Jm3YltNBU2qUoeL7SBLC47+N01\nsOFV0bNn7x9lKsRRDG6Or/QcoKzD5EDnSuAcx4t/w6M92vMTCxC9JuwEHS1K\n96ahmTQfe/uVsWC2pIQnDg7QebCXbSIZErC2BJILS5u7gs2py7jQezEG+cwk\npirA1uEqxJIIhdYhsI79KJvguUeW979jqA/bVYT5M1NVQ553mqj3VxSa3hsm\nt/IkEzmpjJccY9hG3R7MGD7Z5dD7NQib7hYk0sFuBzKnVhhzjMCXdfxXOuNS\nbs6zyLa5Yu7CEVfNkgI41bi/+WxL+TJFIgLiwT4QgBwRa9reO6Ota4vby4XK\nkLSC+K+vXhLVkucKx+nmPRuWnPNhnf7Zhn3bHstPALzSMVwkdi0IW1faUZqG\nJVMYREsN7V+qADhTri+0YIY2IXQ+E2a3Vizfe2q5Ufs4U68pQidn7RDxXqv3\nKEJ4SD2CR3yUAd9q5tVMOPPSbwtw6Ax7xP2HZwkUdWhMv/YZpGV71AP7+PKl\n8m8TSfkV89ahWJP+aEmMw/oLacF+35/WINERSZk1xmYrLaleaTmBkPVMhIIr\neUdWoo94edod12aKd9QVXSh7hKFzDubvvBNGoIUNoPL01dIlNQHJTnwdD7Y7\neZtZ\r\n=46PX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAEECXXvekvUxfsLc3XSw69iASvxn/eslnRGdgD2Ty0wIgfPDC+XPy73A26fSvfT5q4KFj5WvWxauUAdiC3hBTlSQ="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.0.2_1548165743607_0.17517983619056476"},"_hasShrinkwrap":false},"1.1.0":{"name":"better-docs","version":"1.1.0","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"gulp sass js"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","browser-sync":"^2.26.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.1","bulma":"^0.7.2"},"gitHead":"00bbecbbf0cae0b2fec8da289f9af139de837228","_id":"better-docs@1.1.0","_npmVersion":"6.4.1","_nodeVersion":"8.15.0","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-t/sA0gGzysALoryiEBwM+pyQBc/jwgzPdm7cv3QO2RL7hs0eB7ZzTcanYMBUZOjK54fuMe1okRgyuYbt2dNW0A==","shasum":"28776d4fa8410fd198a3534edff2432cac0afdf6","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.1.0.tgz","fileCount":59,"unpackedSize":1065967,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUDKzCRA9TVsSAnZWagAAG4sP/jZtWZLEOWTTHsUItN/V\nreF7m+Lmq8uRkYIsW43pHy9rzxlyXDSR3ELrKM2xDtgUBdRSmJ4Aw3+/3lme\nzDR/GqB8/L6xtLFK06ctMjsOPAp/3lanhC3ykD44N7NXst5oehcBdXigmzRk\n7Od1iJloGhQEyU55N5alFtj6Gpdw3PCiXnBQ/YwEqfmXWl9y+FvuZ2VFuEy0\nMuaOpbQksRabHQ8H8NglXQXVSfEcvMJB5ypUsBlvXIjLPXVCMRBwMjKnbal6\nYsjncLn4uHQx8GwteiK2uwKL+uaRyKQAfz2rgQzsB0/hNUTyCWxR1yq5zqEC\n5NvCw/4Xmg9J1Pf8LG8K5QWZpNuac0MxQWiPM3MS64aaqvTPqbGYY9hBKB7K\nVCqP1EpTOZa2vfAn2C3MUklxTZax+/fUdrpg/+nydVaQzo/3QVXu4XW2w0cB\neyPTYZalDUINwskKovkBDfvnIKLrpM6ff4iQP4rTEQNRZVbOhXK4C+pagRE+\nngrfMDbtPSDBc9zElgcT7PnPY+fJM/SsrpKbyPS/AKixw6zkVnEyXdJhmMIB\nM/Q0fz1NmQVXrXBvnJW1RFkUK7AUMycSBtB5boW2X1LPhAdTvBghjA8LXeNM\nMoCSg4/Bzr/HRIFeemvLYwe4j9fjHlBjZGACTk8ufpwcn1woQx4UPH50Btyn\nYe75\r\n=eOe3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGqvMw4Df10m6TB6aL3LbG9sUrDQsCpW8xLA0wMKLFeLAiEAokUpY1qrSX+lApbOU6iNXrKYhqspNXsgzrqyn+gfNA8="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.1.0_1548759731173_0.4136201042170884"},"_hasShrinkwrap":false},"1.1.2":{"name":"better-docs","version":"1.1.2","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"gulp sass js"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","browser-sync":"^2.26.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.1","bulma":"^0.7.2"},"gitHead":"b276afede3cca0636b098bf5626327d87014caf5","_id":"better-docs@1.1.2","_npmVersion":"6.4.1","_nodeVersion":"8.15.0","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-jAK95zF0JqKl1luXaR4T75r/vs/8BA8yChW7jslihXI/uRyTQaOv5hBVrGtID4VtAWSYTFLh0v1mjcWPlg4UXA==","shasum":"11686e825b2f93d29210d87069caf337ccc38cc2","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.1.2.tgz","fileCount":59,"unpackedSize":1065967,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUDLBCRA9TVsSAnZWagAA1B4QAJSYr1FNH9vn+OQSaQkN\nU7hY6cYXcPt0HfJACmaGKhySabzqT5AJEv7nwG0Ptw1xy0wnHJPC2FvHk+kK\nfInDjv+yO/QxOk+LPjuGwa5KXgtyFZwuRAnXCxjMjbLyxgganJRFlwzaTAET\nSobRcPH59kPWGTAQiw9zSUhsTaVGyGGig8Tba91iFXA5eeHcgEZ9/0rueBen\ntjQVGAdzF8m8GauqpSWWxVYIjHlx1cfOeoeQcVBLOszQcD9q+bYG8PecWynW\nXYFylER3MTfUxwIxCHYyXBnb+bYrVO7KDbSxJ3ZTieTrUOxvwXa3ZxNYd4c5\n4l4j5F4MQsWd7Jk01dYPs7YRSn/LOszzwPvE5JP+00tExNHZmWti9U+vYUSa\nhwdlvDNORTRzBp757bTLZDKbJtCLJ1NFdz+pR+zdDcMpOA+m6TyaJGzMwxow\nvzdnayQTfB5MGndoQxFrkzwpZmTO64XREbdL/ifVBzJ0N373KATRGGqL/FNY\nyUIDyCEE8w27yE222H0ERjoOHkAY3i8YA7ROKlq4bfTkRR7gJknxNgMO52LA\nFhbLuhte5MitOc4xmrcQek+V0hRoB5UXIZhZt7nI+g/bo4KUbIDIjvlvdjkK\nsc8SjJXOoFyUN0E0k1gW177XxBlwjlWgiitNfdfxnmtKnKxzaG9i0w+NWAlI\nYbIP\r\n=r4XY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGBGXPeGI0UKjzC5nsJ6f2HNygJ/S3Dt7P6EoBUyRXTUAiA0spLKNBlJwhJKsAKv0Zx7TUzPl5bsljSwuTnxb7wxQQ=="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.1.2_1548759744994_0.7905616054746276"},"_hasShrinkwrap":false},"1.1.3":{"name":"better-docs","version":"1.1.3","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"gulp sass js"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","browser-sync":"^2.26.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.1","bulma":"^0.7.2"},"gitHead":"c31b2b7591fba019dea3e9c809b1c8a708bc3020","_id":"better-docs@1.1.3","_npmVersion":"6.4.1","_nodeVersion":"8.15.0","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-CsdaIUz0IKtOBl7A7wyKhCa+enwBHz0+iWyRmzSFQ01nPQV3bq/4vv1lEFdIurg7o9tXeEoi31OJXz2s5nWjTw==","shasum":"c8491173c1d85d7e4b1c6a17ca2e9ffceb45def6","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.1.3.tgz","fileCount":59,"unpackedSize":1066680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcVCltCRA9TVsSAnZWagAAPTsP/00aPVS0SWagDzV9NLl/\nI9WKvPati5VsHE50z2iv4gKySS8D4LcfI6+6tsWQVwzdzESHHPJzon0EoStF\nfJLRdunfmw9kbTusW3Q0x/vLcxQnRW8PSGAO7KGHRMxPwsgfAGJTYaLI2PQl\niOGxAtPObM5Gx2pLry8yEOwYaHZylHDGImAyh8vwD24aPG60jfvx5WHQvShu\nndwK24KLaYjBNCNeP4G72RNesMVLIS1VUjGx8W8hdYZrYPoSXLDRDkWB4jmU\nMCXNTtaTqg4utpmjGO25gRjvuOKiY202osOI04ngUGJjLcLGTp3jDh3DVAZC\n+wDOFJ8gC4aPIyokmZoov+MwB6K2P0BCUb0Cb+KWVCInyerKYLqt45XJ6O1t\nkHMjrgFkNLcTV4HdT1eemXgx8YzIkD7R1VXz3bgLpScq+sLZ4YD7sSDeLnoC\nh7UKobfNTA9g89WMagfdJnzVbjP4y/BaxW08VoNHAJruDduX5wYV1Kx21LeX\n0hTgsZ/MXcx8a8ZKiVpoHRL37nd6mkwHIJzHiCdIaUBlznFJFf1+1liBn8HR\nqdM/3p4dAMB6soEvNkvMXYhEn+a8vYx0hqo9f1m0ASIWnlacLJ/UeurPkWTQ\ngsyiAlhDKB/giXXa5/8ME65Y8Lm+pfnpC2HXdNPFESoHPhlAV3Ynspi3r6gh\nsA3R\r\n=nAN0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6T9/zXHBsrMy70TxXXJNj1kO5Es0opnnD1JWmN/5HIgIhAK35Jpz447fcrqYtPqot64rrU2d58zFxV8b1GiqnABIV"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.1.3_1549019500561_0.18274480310267727"},"_hasShrinkwrap":false},"1.1.4":{"name":"better-docs","version":"1.1.4","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"gulp sass js"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","browser-sync":"^2.26.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.1","bulma":"^0.7.2"},"gitHead":"f08ff759aa95d41f1eb82cbf977b255a7ead6263","_id":"better-docs@1.1.4","_npmVersion":"6.4.1","_nodeVersion":"8.15.0","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-ldpS+DQ1z4LV14aNCLZMe9Qm+A8ozG7MO4XwTGHcsvP7yBejhRQXgAe0yUYGE9sH45Vt0fiLqbR+JE+7DnWxYA==","shasum":"192a5f3998a3ac354fb0a2cd8fcf3312506c973a","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.1.4.tgz","fileCount":59,"unpackedSize":1067094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcWBWCCRA9TVsSAnZWagAARjEP/A0rl0UWePZYoRoEjQBb\ni0Fnp4eUfdGb4GjuZtQTb8LuiER12HyWt4PZOcRWV7EvVyeuAjVQI/WezZN1\nF9R6a/aaQ0jotjYiv7M9sRMfhazZm8dLv5ZQhE10i9UZDsCmuU1osgrk95w9\n/WJWacy7nqsMHOeHH8NzK6Vbq/NpsEyAdOwjgtXbKt25CItZbiA/SqG4AriP\n7GDT/Y5rvbUI7t4JGC8tGFkq6RymLb+db+A997JIgDvR4nq4bGlb2MuTQiqv\nv8ZgZdOoPhoBZ36mJq68fbnYk1ILdSnUri9sdEkdEBs2kStbHyx0EWtaYDBD\nZygNogvCSJBqRw8NyhPLPnUmXmINi2DMtc7WAed57EW3x7E3tisNxKW/Q56s\nICnQybQWkvLtqJ/oBKZH1aLcqhfTIpc9f7ZY27pBWx2lMxlsCY4cXToTXd2n\nacklrVJANZDALGqlu+S/7nNMCgoWvDQiVh2bp98J07zApYztCKq0J+idaYhJ\nDGjuuHgTm0k0AfuFm+3g2pqDwUDAFKeO7g8eEOI5v9qo1JUL+COSai1P7d6z\n+9vVQTva5jvC3JMugAJkZfqCbrPebxrnPkm1sZs5PJFOY5i0PyWU0Q8SA2IO\nQ25Zv9llkp5TXOFqLrzy3xNbrbbqlVVcxvfkv4VHZIgUycOotHjhxTjPZc7q\ni+TA\r\n=XKYP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB2Loe8WWyUo6/rkBl9YE9g337qisUCm183qm7MXJA27AiEAwZu2hUQwSOr39YnoHNyu1yZjOHR8iN6+qMosM8WzijM="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.1.4_1549276545685_0.7635091168254549"},"_hasShrinkwrap":false},"1.1.5":{"name":"better-docs","version":"1.1.5","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"gulp sass js"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","browser-sync":"^2.26.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.1","bulma":"^0.7.2"},"gitHead":"0f61001083871c8043a9398b0bbfab382ad8ce94","_id":"better-docs@1.1.5","_npmVersion":"6.4.1","_nodeVersion":"8.15.0","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-mdIW7yfmnPjWGHYBwbxZX5SC7ydSy7waWWJvL+cdpdwTcrsfTQu0jR251mUYn0xSBy4rBXJAAZ02r63LNxp6Fw==","shasum":"e0bb6e175c33f1013a8f7e36113fb19884c2f94d","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.1.5.tgz","fileCount":59,"unpackedSize":1067185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcdDBHCRA9TVsSAnZWagAA5fsP/0J9tvR8ItYvlPga3HA+\ndacXEJW3KKABsXt7LYcrvRwlhN/ID3zOEhVFtpUQ+YjY2U0QohFN2MBqWY4Q\nFxD2KSk/EW5HS+W5S1ydewOvg2DR5tZQK5AKNR0v08LYw8/xrLWXy7NVU1fZ\nPElSR+IkII2qAxvM/9W6OhXqQyosJgzIPs9ZO+p72dI2wmZ2iz7wyKYGuaXo\nlkAT4pPAuVUEzBDrjeZObIGGtglMPQu3GXmB0J6YLutpWYmR8RrGzzANHj6H\nVu2gP0Klh1jaN82WY7iVI/pmXG5UjZGfd/GZgDRTTk1KKKFSPYRH/rt/KOdr\nzlwlyt9W2RdQAwq5527Fd4Vy135ivmobgBids5S0J8qrq9ctAKffCScIaf+J\nfVK2NrEPTS83n7NJEE3AGyKkQFZveGKAghdepB7ZeDd6KxBvWdHzXuhG3Bpo\nqOf6gcO2FitawElwEaGDbYDfy/q0qoHmSFoSLAgpjUIp9xrDQf9vitMgPDyN\n6knJGpfcVN5c96FEtAA/ZBre0R34bH56A6m9gys2iifmzCZrrMGg3IVMEMOq\nHeAPRWPpw1/060H8wlhfK5H6nVEU7gQXwylPdylyA5s0zEARGMZ/UvTltMDB\nKM9/2gOAWB2Hh/7un+uiT31G2pSCOX4RWmkwLzOvyz+Sx5cdD1PifYk73Y3k\nq8pL\r\n=00l/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDeJ3V1N+gbmB0kx5Ob5eDEOb73a3lkEgCSbMGSGt9IXAIhAK56sXxeXKY80ZmDnj1NqkLHa4mnDIpdZCr8QKhaJ74/"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.1.5_1551118406641_0.21772246521719674"},"_hasShrinkwrap":false},"1.1.6":{"name":"better-docs","version":"1.1.6","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"gulp sass js"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/core":"^7.2.2","@babel/preset-env":"^7.2.3","browser-sync":"^2.26.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.1","bulma":"^0.7.2"},"gitHead":"a0a4b046f7ae77e49931338b85f125a0ae71a878","_id":"better-docs@1.1.6","_npmVersion":"6.4.1","_nodeVersion":"8.15.1","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-2mSRSThIIIM/RLatcrFRfTJ6tKNGV8vzSLmM/2hWOwDZWtsyG9WttrQpzmA/izCcqxL0o8DpKfjlAxq8fuaHSw==","shasum":"c86473b7ffc2c4abf031e561da0b0b382a0a4f9a","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.1.6.tgz","fileCount":59,"unpackedSize":1067196,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcnLbGCRA9TVsSAnZWagAAdTwP/Auv2IDMIlsZw9dpNb3+\nQD1AjlI6yd0blQevEh59Y6PUA19OGMo3FxdnKZK8XOUMZrVFpt9l2fLEWofB\n988BylrzjfpRBCTaaB4Nu0dwq/UpU2CUYj6+DSvbFUmOxW/+VU8n9wn+z69Y\n4vhxi5R3pncokhgB5EIgpL4JXAhbGlQHE2uSlF5w4EkVC0Kbij4luXwGqXYh\n6JVBPas3kO/4vQyqM48PphAVjdETCP3UKOuLQLEdZyvC/j/A1IZoEhbCvgvg\nbAS2RRpF+JzJ/5rIeBrlvWOqJwyLp4DRvZoYtk+dVkEYpDzZbS0BAfxgynCZ\nKBC1z9cAkixVFbQmqZH1QO5X6uaQHmF3azlTEu9EzCTWM3sETWg73XPWPOIg\nx1bqyJgQXxyc9HfyQ55SjFZy6KwvZwRp8RTQ0nELMvGuY1i6g0Yhgv2b/m/h\nompmftpBajTH49jGStJOFHWCHAJqcQxCyZXTbb0oU0D+F81AZS6kSM3g8ifu\ndSnciebkFmrwnGvmMkrkzWaROeSV4luge21bflpC1FKfqT2+k0sgZO2sj/xm\nwBfGN8kiqoXTVZKL7ex5NBbBX9nQPcv9RBAKgfMWeW4lSeRiyrIEuQ1f1Zux\nFFN38TQEKRZ15lrvChdepg0lTsGMKoYSYdpzcC9JlkSaQ3PWEJ5M+izb+ExF\nPW3d\r\n=qzlN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHxD6e1CAx8neRFSU5o5WZ9sFoVa1lYljhRwKUL6q0ekAiBSSdJbUXpU35ResNMXem85b4XK7GmEmAcP09B5DFnf9A=="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.1.6_1553774278195_0.230610745865383"},"_hasShrinkwrap":false},"1.2.0":{"name":"better-docs","version":"1.2.0","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"gulp sass js"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/core":"^7.4.4","browser-sync":"^2.26.3","bulma":"^0.7.5","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1"},"gitHead":"289a60e6d881b3de053d5579e9c435df9d1ddda5","_id":"better-docs@1.2.0","_npmVersion":"6.4.1","_nodeVersion":"8.16.1","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-mi0a/Rq3/y7CHk8PtkOvunOvFzDZNAykx3OerhZ2NxE2d5yIcXK0E3WbiMUXk1NY8lAZdo0zMDB4HUoWX6BKlA==","shasum":"107555f2821787c67d4b296dd981503ba5df05d4","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.2.0.tgz","fileCount":62,"unpackedSize":1047774,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbsGZCRA9TVsSAnZWagAA8VEQAJ+Zml13tPQJbQC3IjNx\nPCZSvyC7vlogyq5qMh/frm49XoBGCY7amGGEq70waBtF7JsvDS//6SsoYaJZ\n+b4R0cWNHZCJ/EWZPCPbdpgAAkMNtTMzREvfsYCIHjFw2V4kqOMJla2YxQTn\nvBng8PtExGADrjLAAUn0tHJLSoRI2/mbY7WTqizRfjMbAOclng0yiahvsL7a\n3IoVnuIF3+EFUHh6XRaChTcFjAp0Y/K47jEtVn3x98QlmQVUASp7nTTIUMgE\nfk0yZh/827NFWJnKMK9Cm1bcpVAfR9s88E6XWEVZR09j2n4cWz6mWurlchk0\nwIKyTrPmkBRLE+t8mEB8ZvWJxOF70HbSjnEXyxdGBwKzRZE+y7QD8OvbQ51R\nDAb6I3m/kk3mMsvNbeyUjNNKfp6pix+8j+yjv7sV2FTrgiNYRdrwwvjFa71t\n86hbbz8LwvA+LUPA1mDoVWOByeMUkIvTca3FLA3UQQOINAWqwcpsTvpxf5s8\nVFvTy7ffObjefLA6CwYahteZsYUim9+S4TIno2Xd1gdsv6r2bRGh9boIPWul\nfeSKLINTMGo0Jl95+6/t8B4XfWXEo+YynzbMvgAWwXt5i68NPn2Bbibbh7Rr\nxq4d6sUVsBksJVzfOglc9PTee1F1s9dKE3Zvaj15IG6ex5FAcTsQ1aWITHc8\njZDT\r\n=K8+L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBa2S+j0clXXik+7BzH/rT5RzdOs4YW9j8Imh3Xh34HMAiEAjsRjvx4kOKY4nHqldA8XotLgyE0d0mV8svkxvEnohRs="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.2.0_1567539608792_0.04360413835216015"},"_hasShrinkwrap":false},"1.2.1":{"name":"better-docs","version":"1.2.1","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"gulp sass js"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/core":"^7.4.4","browser-sync":"^2.26.3","bulma":"^0.7.5","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1"},"gitHead":"224012cb4133df82d9fdb7d49a902440c3deb19f","_id":"better-docs@1.2.1","_npmVersion":"6.4.1","_nodeVersion":"8.16.1","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-o2RpflNqMzKHVXdwCfumD4vPrL8PLmvn0PCws63sJi8kX1XoU9XxJeTvnWWhz/TKieM+5pRWFCl9PH2/8hIyow==","shasum":"d608c50c574369d4d92ae8296053b740371ccdad","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.2.1.tgz","fileCount":62,"unpackedSize":1047854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbtXvCRA9TVsSAnZWagAA1ZkQAJBX66yFzj/hXsHfcA3r\n8m7KIaiiFYvwu8eppHZ5MheNuZK1dvNTPdM4X0QxV6v4ctp/KLDGTc1pgQRL\nvxkfPHdlCztzeULpcy0esOyHEjrpCckG8mP2mE7mHvkF9/9xqmxWH3nR6exF\nQlnUoqA8haTR+Clh9FrBp5EswAv9wMc8R+kReNZIfPh3hZhwP9p7k55fe7kM\nDiSwQFajramiXP+bF16nt9qZeXXI2wpqodIO6BObc2O/GJ/fuWcrF5ELa9az\n+20cF90SWNaCQkVuwVZaVogRF0IVRYpuYvmmfx3IKbaQCiri6iHcHnlz4X5/\nhyE9mxk58+sM5dzTBOO/RJSeekI2DNz8g93EckwiJEzzhJxFz2FkwI2vMkgY\n0DnOzPRQBhI7y+lyxHrt34yR3Yvlu0cn7/QlKcEo/FC4WUUFq5j/seWV/OP3\nejW76FaIajDDFV+qSHGy/v6ICnM26zHeRN36b2Hq3L5RXWWFecE3Ro7JxJzh\naR0ijvYYooOA3SBgv9xY7sBOzgrlWogvlYnc6J+3BgN5o0ay32y0sgN2Eo4L\nFmRUc78ojSlsoY3DVOw4PbM3O97wGYaZNMPcVyVJ2u9Bx6fPlhaTQ14Ub/up\nZT9tiOXzSvbfcDPUsPDds+q4H4Ni7PIFlsc5BM9/gAva9exbPmixa5T1BlqD\nZl3Z\r\n=/ugv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDpUDPXaebkTnnGqX9gXBh0VfsKW9M41SuBccHY9NmyHQIhALYAxx07OICTl+DAlymS64oTeXssX2yhU9u/2kxzA8xo"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.2.1_1567544815194_0.5143209661215096"},"_hasShrinkwrap":false},"1.2.2":{"name":"better-docs","version":"1.2.2","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"gulp sass js","build":"babel src --out-dir lib"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1"},"gitHead":"6eaee641409f8ca38742b6407b3d24e499a65e45","_id":"better-docs@1.2.2","_npmVersion":"6.4.1","_nodeVersion":"8.16.1","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-kckBwyPOHtq3Bg0uLNnTioMBGfo36qjPb39+IY7Hr4MTrG5+avI4dR4cFEq8h0KGTlq4haBSXZ/wr259NeysEw==","shasum":"f49dc322624eab0725539b932809cc6b4eb85a70","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.2.2.tgz","fileCount":65,"unpackedSize":1091246,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdbuFACRA9TVsSAnZWagAACdYP/0fV7U/nqjvsn0UWvtPd\nXUn28Y56SaxjcCCg8Urwk8Vq6ID3S8BBam6GD3k20bFLmlUAiZyyS1KJ08eq\nuXSQboN6bfdJnTLtnitj1DboNlAaFmio57viDQ8qxLTCxckeOlwP+2OjVuiL\nVq8I9ReaAAl6uZR87cro+V0Rm8Ujmca3B4yCBthnyzkVvAhMVaLWd8UHrUf3\nzKK3hPTnh5q9bKp4bGHh4ec27dgXt6K4IUYI85ROgfavDXvme5PAtZOuvY63\nIPFymJm1WroZv5NnvlTH4fb5SHy+5TvtTA6eTt2Wx6aWiGL0Acw5Ua+/2PHh\nZG/qIraKMF6msL9FIqaV28ANQj/uUahBy3R2fG1I459ZW9Se1/Wfz7z2/As5\noABhOQJePLdRWBf0eREELhcJlPwRLB/QOV3d/Fa/XUzwiOqL8DGojumzAKzi\nU8f0vGg/dZWYQ+Ws/R2op210DZxWlMEIRfsbD9kLenZhtGrH71sQo4ip3HnN\noGYlfl7eXfhjcfeq1hSpMxvGNJ16XpR9loHcvLImmbGidTeFB+Bz6PzUr58w\nkOk8fZpAiaoqw6VbjYjPa22K5CNd0q5u1Pf867c0kAZYKp2MuHTVJ+kB5g6i\nd3k/DuB7zXMpElr6ONKmN4fOrhxoUAb6aew5P8OSYOgcHOaFla24Xkt78jMD\nsxIA\r\n=M/7D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE+yceG0tJJNXL1U9QfaRywVLQjjfN3AZAWxPVQJjoJzAiEAwxZDOqaTcyjqbVImOtaFKslfwgcuM8XLZHQ7aXCEtyM="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.2.2_1567547711377_0.751631546635585"},"_hasShrinkwrap":false},"1.3.0-beta.1":{"name":"better-docs","version":"1.3.0-beta.1","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js'","build":"babel src --out-dir lib"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","eslint-config-airbnb-base":"^14.0.0","mocha":"^6.2.0","eslint-plugin-react":"^7.14.3"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0"},"dependencies":{"brace":"^0.11.1","vue-docgen-api":"^3.22.0","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue2-ace-editor":"^0.0.13"},"gitHead":"4c2f1fc03f42138ed5184a047a033abc610c854a","readme":"# better-docs\n\nBeautiful and simple documentation template for JSDoc 3 with @category plugin.\n\n<img src=\"./readme/class.png\" />\n<img src=\"./readme/with-mermaid.png\" />\n\n## Example\n\nSimple example documentation can be found here: https://softwarebrothers.github.io/admin-bro-dev/index.html\n\n## Installation\n\n```sh\nnpm install --save-dev better-docs\n```\n\n## Theme Usage\n\n### With command line\n\nAssuming that you have jsdoc installed globally:\n\n```\njsdoc your-documented-file.js -t ./node_modules/better-docs\n```\n\n### With npm and configuration file\n\nIn your projects package.json file - add a new script:\n\n```\n\"script\": {\n  \"docs\": \"node_modules/.bin/jsdoc -c jsdoc.json\"\n}\n```\n\nin your `jsdoc.json` file, set the template:\n\n```json\n\"opts\": {\n  \"template\": \"node_modules/better-docs\"\n}\n```\n\n## @category plugin\n\nbetter-docs also allows you to nest your documentation into categories in the sidebar menu.\n\n### Usage\n\nTo add a plugin - update `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"category\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/category\"\n],\n...\n```\n\nand then you can use `@category` tag in your code:\n\n```\n/**\n * Class description\n * @category Category\n */\nclass YourClass {\n  ....\n}\n```\n\n## @component plugin [BETA]\n\nBetter-docs also allows you to document your [React](https://reactjs.org/) ([Vue](https://vuejs.org/) coming soon) components automatically. The only thing you have to do is to add a `@component` tag. It will take all props from your components and along with an `@example` tag - will generate a __live preview__.\n\n### Installation instructions\n\nSimilar as before to add a plugin - you have to update the `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"component\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/component\"\n],\n...\n```\n\nSince __component__ plugin uses [parcel](https://parceljs.org) as a bundler you have to install it globally. To do this run:\n\n```\n# if you use npm\nnpm install -g parcel-bundler\n\n# or yarn\nyarn global add parcel-bundler\n```\n\n### Usage\n\nTo document components simply add `@component` in your JSDoc documentation:\n\n```\n/**\n * Some documented component\n * \n * @component\n */\nconst Documented = (props) => {\n  const { text } = props\n  return (\n    <div>{text}</div>\n  )\n}\n\nDocumented.propTypes = {\n  /**\n   * Text is a text\n   */\n  text: PropTypes.string.isRequired,\n}\n\nexport default Documented\n```\n\nThe plugin will take the information from your [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) and put them into an array.\n\n### Preview\n\n`@component` plugin also modifies the behaviour of `@example` tag in a way that it can generate an actual __component preview__. What you have to do is to ad an `@example` tag and return component from it:\n\n```javacript\n/**\n * Some documented component\n * \n * @component\n * @example\n * const text = 'some example text'\n * return (\n *   <Documented text={text} />\n * )\n */\nconst Documented = (props) => {\n  ///...\n}\n```\n\nYou can put as many `@example` tags as you like in one component.\n\n### Mixing components in preview\n\nAlso you can use multiple components which are documented with `@component` tag together. So lets say you have 2 components and in the seccond component you want to use the first one as a wrapper like this:\n\n```javascript\n// component-1.js\n/**\n * Component 1\n * @component\n * \n */\nconst Component1 = (props) => {...}\n\n// component-2.js\n/**\n * Component 2\n * @component\n * @example\n * return (\n *   <Component1>\n *     <Component2 prop1={'some value'}/>\n *     <Component2 prop1={'some other value'}/>\n *   </Component1>\n * )\n */\nconst Component2 = (props) => {...}\n```\n\n### Wrapper components\n\nMost probably your components will have to be run within a particular context, like within redux store provider or with custom CSS libraries.\nYou can simulate this by passing a `component.wrapper` in your `jsdoc.json`:\n_(To read more about passing options - scroll down to __Customization__ section)_\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n              \"wrapper\": \"./path/to/your/wrapper-component.js\",\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\nWrapper component can look like this:\n\n```javascript\n// wrapper-component.js\nimport React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\n\nconst store = createStore(() => ({}), {})\n\nconst Component = (props) => {\n  return (\n    <React.Fragment>\n      <head>\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.css\" />\n      </head>\n      <Provider store={store}>\n        <BrowserRouter>\n          {props.children}\n        </BrowserRouter>\n      </Provider>\n    </React.Fragment>\n  )\n}\n\nexport default Component\n```\n\n### Styling examples\n\nBetter-docs inserts all examples within an `iframe`. This results in following styling options:\n\n1. If you pass styles inline - they will work right away.\n\n2. For `css modules` to work with `parcel` bundler - you have to install `postcss-modules` package:\n\n```\nyarn add postcss-modules\n```\n\nand create a `.postcssrc` file:\n\n\n```json\n// .postcssrc\n{\n\t\"modules\": true\n}\n```\n\n3. For [styled-components](https://www.styled-components.com/) you have to use wrapper component which looks like this:\n\n```jsx\nimport React from 'react'\nimport { StyleSheetManager } from 'styled-components'\n\nconst Component = (props) => {\n  const { frameContext } = props\n  return (\n    <StyleSheetManager target={frameContext.document.head}>\n      {props.children}\n    </StyleSheetManager>\n  )\n}\n\nexport default Component\n```\n\n### Adding commands to bundle entry file\n\n`@component` plugin creates an entry file: `.entry.js` in your _docs_ output folder. Sometimes you might want to add something to it. You can do this by passing: `component.entry` option, which is an array of strings.\n\nSo let's say you want to add `babel-polyfill` to your bundle. You can do it like this:\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n                \"entry\": [\n                    \"import \\\"babel-polyfill\\\"\"\n                ]\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\n### Document Vue components\n\n_Vue is coming soon_\n\n## Customization\n\nFirst of all, let me state that better-docs extends the `default` template. That is why default template parameters are also handled.\n\nTo customize the better-docs pass `options` to `templates['better-docs']`. section in your `jsdoc confuguration file`.\n\nExample configuration file with settings for both `default` and `better-docs` templates:\n\n```json\n{\n    \"tags\": {\n        \"allowUnknownTags\": [\"category\"]\n    },\n    \"source\": {\n        \"include\": [\"./src\"],\n        \"includePattern\": \".js$\",\n        \"excludePattern\": \"(node_modules/|docs)\"\n    },\n    \"plugins\": [\n        \"plugins/markdown\",\n        \"jsdoc-mermaid\",\n        \"node_modules/better-docs/category\"\n    ],\n    \"opts\": {\n        \"encoding\": \"utf8\",\n        \"destination\": \"docs/\",\n        \"readme\": \"readme.md\",\n        \"recurse\": true,\n        \"verbose\": true,\n        \"tutorials\": \"./docs-src/tutorials\",\n        \"template\": \"better-docs\"\n    },\n    \"templates\": {\n        \"cleverLinks\": false,\n        \"monospaceLinks\": false,\n        \"default\": {\n            \"staticFiles\": {\n              \"include\": [\n                  \"./docs-src/statics\"\n              ]\n            }\n        },\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"logo\": \"images/logo.png\",\n            \"trackingCode\": \"tracking-code-which-will-go-to-the-HEAD\",\n            \"navigation\": [\n                {\n                    \"label\": \"Github\",\n                    \"href\": \"https://github.com/SoftwareBrothers/admin-bro\"\n                },\n                {\n                    \"label\": \"Example Application\",\n                    \"href\": \"https://admin-bro-example-app.herokuapp.com/admin\"\n                }\n            ]\n        }\n    }\n}\n```\n\n## Setting up for the development\n\nIf you want to change the theme locally follow the steps:\n\n1. Clone the repo to the folder where you have the project:\n\n```\ncd your-project\ngit clone git@github.com:SoftwareBrothers/better-docs.git\n```\n\nor add it as a git submodule:\n\n```\ngit submodule add git@github.com:SoftwareBrothers/better-docs.git\n```\n\n2. Install the packages\n\n```\ncd better-docs\n\nnpm install\n\n# or\n\nyarn\n```\n\n3. Within the better-docs folder run the gulp script. It will regenerate documentation every time you change something.\n\nIt supports following EVN variables:\n\n* `DOCS_COMMAND` - a command in your root repo which you use to generate documentation: i.e. `DOCS_COMMAND='jsdoc -c jsdoc.json'` or `npm run docs` if you have `docs` command defined in `package.json` file\n* `DOCS_OUTPUT` - where your documentation is generated. It should point to the same folder your jsdoc `--destination` conf. But make sure that it is relative to the path where you cloned `better-docs`.\n* `DOCS` - list of folders from your original repo what you want to watch for changes. Separated by comma.\n\n```\ncd better-docs\nDOCS_COMMAND='npm run docs' DOCS=../src/**/*,../config/**/* DOCS_OUTPUT=../docs cd better-docs && gulp\n```\n\nThe script should launch the browser and refresh it whenever you change something in the template or in `DOCS`.\n\n## Setting up the jsdoc in your project\n\nIf you want to see how to setup jsdoc in your project - take a look at these brief tutorials: \n\n- JSDoc - https://www.youtube.com/watch?v=Yl6WARA3IhQ\n- better-docs and Mermaid: https://www.youtube.com/watch?v=UBMYogTzsBk\n\n## License\n\nbetter-docs is Copyright © 2019 SoftwareBrothers.co. It is free software and may be redistributed under the terms specified in the [LICENSE](LICENSE) file.\n\n## About SoftwareBrothers.co\n\n<img src=\"https://softwarebrothers.co/assets/images/software-brothers-logo-full.svg\" width=240>\n\n\nWe’re an open, friendly team that helps clients from all over the world to transform their businesses and create astonishing products.\n\n* We are available to [hire](https://softwarebrothers.co/contact).\n* If you want to work for us - check out the [career page](https://softwarebrothers.co/career).\n","readmeFilename":"README.md","_id":"better-docs@1.3.0-beta.1","_npmVersion":"6.4.1","_nodeVersion":"8.16.1","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-f77rKLIDLa1iU4amYYZnkf7Zd9J+utsTxnU0YpvJzvIy95FfHcgy6Vpyh3rd/8M9pdgl96YJj6YJyzyBq1cODA==","shasum":"32ab974868f21d5017e4eaf5d1900766905908f3","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.3.0-beta.1.tgz","fileCount":71,"unpackedSize":1169801,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddVBbCRA9TVsSAnZWagAAGW0QAJprCveUopojMYCZ5l9D\n6bCE7UsJ5r8wYGGuGVCIchSwohhUl0pYpstSYJZpgRFVkiWFibtHS28Ss+ov\nC0H96xQg+61sadwk8jwzRVlDY0yCtNSoAJ+bvTuhGtWz6JsdvZXwkS6n6zcq\nnukgqoE/Xdy/aAyxj+a4GUKmMQS+LtyvcYQZuL8oh/OpwF9KbeLeQbQjTVAJ\neoWlcxSJBd7x4cqL32Am7K18SBZ3ZLNDrCIrc6vLQysiX4mBK/4jSYrfdEn0\ntbkHpo2/O1LGnFnscQ/Ul/bfpLOFizE3Rn/ydftU2y8OXOK1SrTk4NFlEmLL\nLJ79H4UA/Zg3T5MbdHEQhdfi0Qvnm8d3anQTBRldwGtP0BA5201tCeLoGeIA\nQAsLTHXAQvuGwt5AYMoWfRB20sZwgDRHT92p5UY0oTmzhjSAi5ornOeDOVRR\ncfB0eUOAE7lDRv+8/4BlM4vSIHwDm5p8IeIDMCTwZaPKsbFr6csQ6I+SloIP\nqSI2knkPOhH9TUJZ4+1nCp3HPNcuRm4xK2prfL/Oij92B+sKXDtwjJtVXRKj\nxcTHimimWiDj7m+sXqOtNg1XYoyrCK5cyjMg33bRocs13YqCPLOJ6yYSdi1B\n+hpSYEeFZ05Bp9HWi/gFA44J6MKRYr3JuHcuDlnj90XrSLBXEL6nifCBJhUe\nl4Op\r\n=aAKp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBMMLT0Z/s2yLT+IfdGwZ5QPTUQ/uGRURyeSrXAAa/9uAiA41WBxtB3dUBnllasLinxbLTQ5zQxCTQizHMalarjLKA=="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.3.0-beta.1_1567969371065_0.12855052541814915"},"_hasShrinkwrap":false},"1.3.0-beta.2":{"name":"better-docs","version":"1.3.0-beta.2","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js'","build":"babel src --out-dir lib"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","eslint-config-airbnb-base":"^14.0.0","mocha":"^6.2.0","eslint-plugin-react":"^7.14.3"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0"},"dependencies":{"brace":"^0.11.1","vue-docgen-api":"^3.22.0","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue2-ace-editor":"^0.0.13"},"gitHead":"b1f1d885b9c52981883b36ef215fd59097852f50","readme":"# better-docs\n\nBeautiful and simple documentation template for JSDoc 3 with @category plugin.\n\n<img src=\"./readme/class.png\" />\n<img src=\"./readme/with-mermaid.png\" />\n\n## Example\n\nSimple example documentation can be found here: https://softwarebrothers.github.io/admin-bro-dev/index.html\n\n## Installation\n\n```sh\nnpm install --save-dev better-docs\n```\n\n## Theme Usage\n\n### With command line\n\nAssuming that you have jsdoc installed globally:\n\n```\njsdoc your-documented-file.js -t ./node_modules/better-docs\n```\n\n### With npm and configuration file\n\nIn your projects package.json file - add a new script:\n\n```\n\"script\": {\n  \"docs\": \"node_modules/.bin/jsdoc -c jsdoc.json\"\n}\n```\n\nin your `jsdoc.json` file, set the template:\n\n```json\n\"opts\": {\n  \"template\": \"node_modules/better-docs\"\n}\n```\n\n## @category plugin\n\nbetter-docs also allows you to nest your documentation into categories in the sidebar menu.\n\n### Usage\n\nTo add a plugin - update `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"category\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/category\"\n],\n...\n```\n\nand then you can use `@category` tag in your code:\n\n```\n/**\n * Class description\n * @category Category\n */\nclass YourClass {\n  ....\n}\n```\n\n## @component plugin [BETA]\n\nBetter-docs also allows you to document your [React](https://reactjs.org/) ([Vue](https://vuejs.org/) coming soon) components automatically. The only thing you have to do is to add a `@component` tag. It will take all props from your components and along with an `@example` tag - will generate a __live preview__.\n\n### Installation instructions\n\nSimilar as before to add a plugin - you have to update the `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"component\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/component\"\n],\n...\n```\n\nSince __component__ plugin uses [parcel](https://parceljs.org) as a bundler you have to install it globally. To do this run:\n\n```\n# if you use npm\nnpm install -g parcel-bundler\n\n# or yarn\nyarn global add parcel-bundler\n```\n\n### Usage\n\nTo document components simply add `@component` in your JSDoc documentation:\n\n```\n/**\n * Some documented component\n * \n * @component\n */\nconst Documented = (props) => {\n  const { text } = props\n  return (\n    <div>{text}</div>\n  )\n}\n\nDocumented.propTypes = {\n  /**\n   * Text is a text\n   */\n  text: PropTypes.string.isRequired,\n}\n\nexport default Documented\n```\n\nThe plugin will take the information from your [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) and put them into an array.\n\n### Preview\n\n`@component` plugin also modifies the behaviour of `@example` tag in a way that it can generate an actual __component preview__. What you have to do is to ad an `@example` tag and return component from it:\n\n```javacript\n/**\n * Some documented component\n * \n * @component\n * @example\n * const text = 'some example text'\n * return (\n *   <Documented text={text} />\n * )\n */\nconst Documented = (props) => {\n  ///...\n}\n```\n\nYou can put as many `@example` tags as you like in one component.\n\n### Mixing components in preview\n\nAlso you can use multiple components which are documented with `@component` tag together. So lets say you have 2 components and in the seccond component you want to use the first one as a wrapper like this:\n\n```javascript\n// component-1.js\n/**\n * Component 1\n * @component\n * \n */\nconst Component1 = (props) => {...}\n\n// component-2.js\n/**\n * Component 2\n * @component\n * @example\n * return (\n *   <Component1>\n *     <Component2 prop1={'some value'}/>\n *     <Component2 prop1={'some other value'}/>\n *   </Component1>\n * )\n */\nconst Component2 = (props) => {...}\n```\n\n### Wrapper components\n\nMost probably your components will have to be run within a particular context, like within redux store provider or with custom CSS libraries.\nYou can simulate this by passing a `component.wrapper` in your `jsdoc.json`:\n_(To read more about passing options - scroll down to __Customization__ section)_\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n              \"wrapper\": \"./path/to/your/wrapper-component.js\",\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\nWrapper component can look like this:\n\n```javascript\n// wrapper-component.js\nimport React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\n\nconst store = createStore(() => ({}), {})\n\nconst Component = (props) => {\n  return (\n    <React.Fragment>\n      <head>\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.css\" />\n      </head>\n      <Provider store={store}>\n        <BrowserRouter>\n          {props.children}\n        </BrowserRouter>\n      </Provider>\n    </React.Fragment>\n  )\n}\n\nexport default Component\n```\n\n### Styling examples\n\nBetter-docs inserts all examples within an `iframe`. This results in following styling options:\n\n1. If you pass styles inline - they will work right away.\n\n2. For `css modules` to work with `parcel` bundler - you have to install `postcss-modules` package:\n\n```\nyarn add postcss-modules\n```\n\nand create a `.postcssrc` file:\n\n\n```json\n// .postcssrc\n{\n\t\"modules\": true\n}\n```\n\n3. For [styled-components](https://www.styled-components.com/) you have to use wrapper component which looks like this:\n\n```jsx\nimport React from 'react'\nimport { StyleSheetManager } from 'styled-components'\n\nconst Component = (props) => {\n  const { frameContext } = props\n  return (\n    <StyleSheetManager target={frameContext.document.head}>\n      {props.children}\n    </StyleSheetManager>\n  )\n}\n\nexport default Component\n```\n\n### Adding commands to bundle entry file\n\n`@component` plugin creates an entry file: `.entry.js` in your _docs_ output folder. Sometimes you might want to add something to it. You can do this by passing: `component.entry` option, which is an array of strings.\n\nSo let's say you want to add `babel-polyfill` to your bundle. You can do it like this:\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n                \"entry\": [\n                    \"import \\\"babel-polyfill\\\"\"\n                ]\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\n### Document Vue components\n\n_Vue is coming soon_\n\n## Customization\n\nFirst of all, let me state that better-docs extends the `default` template. That is why default template parameters are also handled.\n\nTo customize the better-docs pass `options` to `templates['better-docs']`. section in your `jsdoc confuguration file`.\n\nExample configuration file with settings for both `default` and `better-docs` templates:\n\n```json\n{\n    \"tags\": {\n        \"allowUnknownTags\": [\"category\"]\n    },\n    \"source\": {\n        \"include\": [\"./src\"],\n        \"includePattern\": \".js$\",\n        \"excludePattern\": \"(node_modules/|docs)\"\n    },\n    \"plugins\": [\n        \"plugins/markdown\",\n        \"jsdoc-mermaid\",\n        \"node_modules/better-docs/category\"\n    ],\n    \"opts\": {\n        \"encoding\": \"utf8\",\n        \"destination\": \"docs/\",\n        \"readme\": \"readme.md\",\n        \"recurse\": true,\n        \"verbose\": true,\n        \"tutorials\": \"./docs-src/tutorials\",\n        \"template\": \"better-docs\"\n    },\n    \"templates\": {\n        \"cleverLinks\": false,\n        \"monospaceLinks\": false,\n        \"default\": {\n            \"staticFiles\": {\n              \"include\": [\n                  \"./docs-src/statics\"\n              ]\n            }\n        },\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"logo\": \"images/logo.png\",\n            \"trackingCode\": \"tracking-code-which-will-go-to-the-HEAD\",\n            \"navigation\": [\n                {\n                    \"label\": \"Github\",\n                    \"href\": \"https://github.com/SoftwareBrothers/admin-bro\"\n                },\n                {\n                    \"label\": \"Example Application\",\n                    \"href\": \"https://admin-bro-example-app.herokuapp.com/admin\"\n                }\n            ]\n        }\n    }\n}\n```\n\n## Setting up for the development\n\nIf you want to change the theme locally follow the steps:\n\n1. Clone the repo to the folder where you have the project:\n\n```\ncd your-project\ngit clone git@github.com:SoftwareBrothers/better-docs.git\n```\n\nor add it as a git submodule:\n\n```\ngit submodule add git@github.com:SoftwareBrothers/better-docs.git\n```\n\n2. Install the packages\n\n```\ncd better-docs\n\nnpm install\n\n# or\n\nyarn\n```\n\n3. Within the better-docs folder run the gulp script. It will regenerate documentation every time you change something.\n\nIt supports following EVN variables:\n\n* `DOCS_COMMAND` - a command in your root repo which you use to generate documentation: i.e. `DOCS_COMMAND='jsdoc -c jsdoc.json'` or `npm run docs` if you have `docs` command defined in `package.json` file\n* `DOCS_OUTPUT` - where your documentation is generated. It should point to the same folder your jsdoc `--destination` conf. But make sure that it is relative to the path where you cloned `better-docs`.\n* `DOCS` - list of folders from your original repo what you want to watch for changes. Separated by comma.\n\n```\ncd better-docs\nDOCS_COMMAND='npm run docs' DOCS=../src/**/*,../config/**/* DOCS_OUTPUT=../docs cd better-docs && gulp\n```\n\nThe script should launch the browser and refresh it whenever you change something in the template or in `DOCS`.\n\n## Setting up the jsdoc in your project\n\nIf you want to see how to setup jsdoc in your project - take a look at these brief tutorials: \n\n- JSDoc - https://www.youtube.com/watch?v=Yl6WARA3IhQ\n- better-docs and Mermaid: https://www.youtube.com/watch?v=UBMYogTzsBk\n\n## License\n\nbetter-docs is Copyright © 2019 SoftwareBrothers.co. It is free software and may be redistributed under the terms specified in the [LICENSE](LICENSE) file.\n\n## About SoftwareBrothers.co\n\n<img src=\"https://softwarebrothers.co/assets/images/software-brothers-logo-full.svg\" width=240>\n\n\nWe’re an open, friendly team that helps clients from all over the world to transform their businesses and create astonishing products.\n\n* We are available to [hire](https://softwarebrothers.co/contact).\n* If you want to work for us - check out the [career page](https://softwarebrothers.co/career).\n","readmeFilename":"README.md","_id":"better-docs@1.3.0-beta.2","_npmVersion":"6.4.1","_nodeVersion":"8.16.1","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-MzMqPpfJiH9jSV9+CkJWrlUOAFriBLf9RQyZqRIaZft3dWjABZjvuppezYUs/mLf69YQ4GgbKaDC17kMFdti+A==","shasum":"60b00584fc0db761a6defeb24c2280464d833adb","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.3.0-beta.2.tgz","fileCount":71,"unpackedSize":1169868,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJddhjGCRA9TVsSAnZWagAAEiAP/jL7JGXPRLEEbGhpMOsM\n2TuVLUaXL6zoRe7inju69Adz9QKl/IddDRPqGC5ZJ71VX0a98w1Knm8Hqjvm\nNfg+dZAKULkMldVAw6MAaWMMqA7lG2dY138N1/cwIt8eupW9a61Vi08cVkaw\nKWzrSO7DIQmsMLOhERRc4uz3mghHTSABCJQV5wG9qSHTvwDlKr82QDso0uMH\nSqpMvdGTx3XjTjAFnt8KI/k6NZ9Isai51usrOkNzMsvy+kAabLkuw5vRnG4V\n8K6i15J+xxdEV8I1QhrcBv4uSYA71CfquKOBCVAaVsz2hJKRA7SWbx9T+VOD\nbr/dFwXV7TAPDCP0Q6T58aYFNyrTNE6JfMoWUJSMwzaQEYqPtDGHtqzJIh4V\nwce2GFQ8f+josg4n7BA9wka5FZRCqsC9Ry9L/sX860dvOIy1EnB51k1SyC0N\n//I0JGhkzztyuqDKYLBr4BZeosYrcNDW5mmWQpR0x0buYX6bQVng7aQrU6kx\ntqdsttl2uPJbJ17FV4kOrdRLnoaU5yk9tUOtXkOoTj00IlsrxGQRX5Ay07tD\nGIG01MQm+udZABnI8XS67oDgp3IVW1DfMH/ATXevWYLQxgVAhTBasCpi3MPF\nOEpIRBgXXTycsfBdJbpdLBER5uhNILTolQQN6Un75vqUfSDcm0oFDGdk8df+\nI3/s\r\n=G/Uo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICcCy9rpfYyfv+fDXKg9OA3gE/sG2eqmYjaH9uBY635QAiBDc9vTXM0vdn3gRIDiGaW3i0oUwCPtJy00CTat0U92nA=="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.3.0-beta.2_1568020677724_0.6255272905744991"},"_hasShrinkwrap":false},"1.3.0":{"name":"better-docs","version":"1.3.0","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js'","build":"babel src --out-dir lib"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","eslint-config-airbnb-base":"^14.0.0","mocha":"^6.2.0","eslint-plugin-react":"^7.14.3"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0"},"dependencies":{"brace":"^0.11.1","vue-docgen-api":"^3.22.0","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue2-ace-editor":"^0.0.13"},"gitHead":"029c1620734a7e686326d99564a9decc2a7ae9e3","_id":"better-docs@1.3.0","_npmVersion":"6.4.1","_nodeVersion":"8.16.1","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-9OXVKJQ1jfmiZEdjG9C7wa7zieUt+tZPpH2DQSGvNlVHslSTJFGJ87okb7t0XXJpYvTYTWOkLoii1qjo1xSGcQ==","shasum":"54e242e2a67a8773d21009d25d3e07c8d3a451f2","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.3.0.tgz","fileCount":74,"unpackedSize":1177668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJde9fiCRA9TVsSAnZWagAAx6EP/31NzI5VOG2Exk4ROjIr\n+XGsdc9wPzlx6KYSzkB6I7H8v5xxHogZggrE957m2mF2aa3djWVUt94agMXK\nAk8VKBQLKpsOS9nB7x+w6QUrW4I9b4ItZcES0/nwTnRcWPxQ+246r2SHQRDl\nqqkQ6Xkxf7R6Uu341X/pragtCoTGMYOjpD/7O12IKKoUgIQT8k0hU1X9Epep\nLDex+TsHd5Rfa8khsMkPlH27W4LgLwuGNqkiN+xV10FuBA+a5CX5/3lM7NK4\nzXUWa2v66Y9eaJ65+P0OFrA0bih3L2rhi4N0MfuIWg004WKsMiMpw0fIoS2l\noK+f5HQ1o+GP0FYpsI2JSJOo6o50ryVewGtQX7evTgruTleY6DMpf7PhaKhH\nuy6pgugIwALVttZazO7V16dgL4N0lJpqjWDDipGsdvsTsWEwX7QPxp9QAYfB\nMM+0R35BBI56G5TyVCVUJzY1oXQyn6gCqD5Ii77FB94R07pvEFagftWPqk1l\nb6kmwiOIKb5LvQeo+KikoLyzEZKH04NuIvAfkLamz1hsVX3WZYYnCnX2rm+1\n0UIqZMu1ZDTDSI3ngDgcLsDVVmFNvm+hEWxQGxGdwYxN1xjbXJpStKwfm1ZJ\nX6ugJHNAhWZfHdp58e4FOSG7QikVUf/Sxvvc4E8pGvwKGp+dxnReZxFxKGzO\n2KAs\r\n=LMZ/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChSHKdzeO6lEJsalt0VNXguk0QZT0N6ModATpya24QkgIgetkTR+4QUrkOtrg7XNQTIFSrUc5o7vP2LpA4MvWMMF0="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.3.0_1568397282048_0.5067617900314241"},"_hasShrinkwrap":false},"1.3.1":{"name":"better-docs","version":"1.3.1","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js'","build":"babel src --out-dir lib"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","eslint-config-airbnb-base":"^14.0.0","mocha":"^6.2.0","eslint-plugin-react":"^7.14.3"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0"},"dependencies":{"brace":"^0.11.1","vue-docgen-api":"^3.22.0","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue2-ace-editor":"^0.0.13"},"gitHead":"1c1bf497e9300a5645c229995e2ab09e539be432","_id":"better-docs@1.3.1","_npmVersion":"6.4.1","_nodeVersion":"8.16.1","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-obuvlrMtXELW0HgdZTfBqrQYI32CJEEnXNX0VbzlFTL5MGw38cA0jqjaDhb2HfZ2ktmiI//Mnty2lUheg/yhYg==","shasum":"79548ad1473028c77e1ae8250e368c35a6fee8f9","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.3.1.tgz","fileCount":78,"unpackedSize":840817,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdi00oCRA9TVsSAnZWagAAp58P/1w+PZYz0sHwTXJEIuPR\nfvfyczNK9bx17RN0R7GbH86mKTGXC7jNu/hNbAibsIC8qeyghGYAOdTQDEYV\nNeV5Vgu+ueSaytA5cxj+3q1KXjMWLrnXvdU/tM6GIDlrPK3nlMvkzRfeivIe\nBxJvcIalGfh4drwneU3Va8ikOjbU8AHXhqR0Ckold2RlqlT4R6GMqOdV/R/C\nCXPtf1v71pKw6vnyDtgF/Xj3xXMFeatkCnng+N1EASkeWJBM//SujomDCSUE\nSLg2WKmjShQxL32fGThIArlrwrmq7PLW0Tpmm1a44DMc2ez/qOX30hNXmwDu\nX4FjEFmywTC0pdS4RPk5fKcw1ZMmbOM4zi34Z4/Z8HE73CMwEexN94mc1OzH\nmTuUB6GsyEZpDvlGeHqiRGazjPGvPtNt9JlRXjC3deCPlF++F8dqbqhO/UIL\ngAm+C0w2lYWxVo0kakl3Wsd5m2WpBpboN8XZT+TWSBQ5XSy8zKhW4CV8rTJJ\nLXDXAuyotf36KMuQ9MlFMv+3QvXwJVMLkdh85M/0of5KQXmcRBjhzROt8Zwj\nby0iGlEw+B3Pw9FiDPfrQlOmhNV5VB8mCEVCrwarvvcGrz60kD7KRU5w9vL7\nHAU/KT31mooajSIZouTEfL3cs8yeTDjFiglNH5gCgX66P8qJ4kn4Bry1lX6D\ncsw5\r\n=2vjx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFBqMPANYs6cdfK9wLP+Fbjp0Jyh9Ko6t5VejRQW6NpLAiEAoHf6FzPy7qDgJjEH/WRkSNVY9rrQ+pEAQYJBFnF7yI0="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.3.1_1569410343369_0.7400312459844021"},"_hasShrinkwrap":false},"1.3.2":{"name":"better-docs","version":"1.3.2","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js'","build":"babel src --out-dir lib"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","eslint-config-airbnb-base":"^14.0.0","mocha":"^6.2.0","eslint-plugin-react":"^7.14.3"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0"},"dependencies":{"brace":"^0.11.1","vue-docgen-api":"^3.22.0","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue2-ace-editor":"^0.0.13"},"gitHead":"bd81be2e3f6dc434461103bf4e53eb76fbd6cf18","_id":"better-docs@1.3.2","_npmVersion":"6.4.1","_nodeVersion":"8.16.1","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-NSq8twRLWx4nqIBDCPXz8uV//irCFV/een8c0NrKTJIM1urMeoBaGOIViJHi6lC3inj2SAkWmWuyTAc2TP0spg==","shasum":"2f518d5457f88c7551f6f52863ae582d3b54c811","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.3.2.tgz","fileCount":78,"unpackedSize":841186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdi1qLCRA9TVsSAnZWagAABy8P/3zoo7+ZkKxrNoDA+e0d\nPxcj7H2G4Nq5wvWVqfQPsLSAfdncAcvZY8DJV7O/xGhAoar0fN8mFqMP6YhS\nJD2E/AnWlUOGClWcU96LtwOaz7xAa3jvL34ck8sOrEqBBf6wU6hRFAKh7y81\nXkTphLgdpFNIwWWNcar7wfpv5nvw9EVaS1qBwmAK7/m/V75qQIbP4yFR+SoB\npijDj+2Wb9E8I41CZqrDmmi2cUPiEpHPguZ7sgCIP7aCGVIzDoOxyHb30AMa\nIq3iX1OV3V3VY7Z9Q2T/O/K/ZTzQb3DWesuGOTotdtLTneWrvRdDEBbFdfWp\nUnUTqbS8VCiZPXnyuMkR5UfVFIZ2JgBc6KM1Y774QoOWT95ZbE7beGyvaTFZ\nExFYkGSPPUMSGwZWpvBVLZ6tOBenCRWQH0oBGoJj12POGRaeEL5ZGnKP4vx4\nZqH4ZquzQ5ylk1FSuPLyswWjwdZB1lL2m5suA//g5DgaiR9Fzu6CtJnrr0Bm\nXbPwr8q1NT1Hy78Dny7uSXfhQPN7OiSGV8uZZy8Uz3riUbhSeXXz4VU7xR6X\n2xzM/gqabOkSOOAr9yIMR77BEcer56zapyIgWJeRjKgSX1q/bV0St+WjZOI2\nYROwx2DIFjoHgkzNDTABdT17K6OXOrveb/VFFlhg6jz+CrfyNKbs29OMxF3A\nDIML\r\n=WNhW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDV1whjmad++jPniQFVU2L55anzBRzyy4e5JHRYw7f1iAiEA84/C2Qoankw1llzChKhmgyL+Dx/IX3n0lc8tBXr5tyo="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.3.2_1569413769564_0.6194974963587012"},"_hasShrinkwrap":false},"1.3.3":{"name":"better-docs","version":"1.3.3","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js'","build":"babel src --out-dir lib"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","eslint-config-airbnb-base":"^14.0.0","mocha":"^6.2.0","eslint-plugin-react":"^7.14.3"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0"},"dependencies":{"brace":"^0.11.1","vue-docgen-api":"^3.22.0","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue2-ace-editor":"^0.0.13"},"gitHead":"b49516ce2c875e4040f024842f34bdd8c24c9fe2","_id":"better-docs@1.3.3","_npmVersion":"6.4.1","_nodeVersion":"8.16.1","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-VF3P7D9S13TiXHMXVLxjdMw0OFwA7yzhJ5jTMfZSf7LoWg99NtjY6CwslricEaiDjs4pb7g9h8UDkvKXVQvGUA==","shasum":"071cf63fe95a57a245f861f6e6e8df33e2b23331","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.3.3.tgz","fileCount":78,"unpackedSize":841306,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdi2EwCRA9TVsSAnZWagAAiYQP/iHUqcA6RQ826nJP+WPD\nc1urxwO5skGwsyWJgFuOmJGevBwgCA9qmPruGsarKVK7sWg/EnJSaKua8bAa\n/ogicS4hUYypJ9ra3CY85PkhPpfZ9wzpb8R032a3Gsf/rCiQgm9+24iXOZi0\n1vkC4HeIYmTLv+g4jVTGnSd25pzpaOtBMeBQSvULRdXIa6HAdR24hC5/NVFy\nyEwUgtREjUllHJI8ajqu6WcDI+yH1RXIHKLPgoJEXEDNJThwW1HOd8XOTE4t\nNlasl/Omm1AV20prC0ntZwFugacRtx10vADUBvvL9CXzh3yQYq0PMC04FB16\nDbsVMJWx9SdwynC7jd77mGaIree6h5UliLrMkoD4tza2HTZ7iHeXFAKX3w5g\nZfHruPfp+bRdv7K3GlJQhgxIj1D9tPrJYSpEaQ5IEQWeDrOKkhdjXcTx/hL/\nIQpKJ1R77gxyqokmIp13V32mKt96+uWWdrsyor4YeEoMNdNaLTX+J28VD1fj\nznv3/WbxjqGaV4i5rDLILD9hajGtCoqjbhOEtXrYIgZ/hrQ1JwyRe4vQgNQ+\n77hi/ovrzhjAqTseXAHQWeKgYNmwlWOKl+CVMwF3W2Eu/7V8D0yIc2AeHLXw\nHiolafJm9vol6+mCuJ//m2JtCat0vFeE/haE/IZzcXyx8RL4Skj+16Dg17Rr\nPRr/\r\n=gaZu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAXyjK7Yyb3vuJIJDCDYOxGCQP7QEtAHgQZBBOefbdjtAiEA+PzOLizkNhdblPH3ALM/DBIwefBXxTVqDBh87V+QA60="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.3.3_1569415471437_0.6767266429099585"},"_hasShrinkwrap":false},"1.4.0":{"name":"better-docs","version":"1.4.0","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","mocha":"^6.2.0"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0"},"dependencies":{"@typescript-eslint/parser":"^2.3.2","brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","typescript-parser":"^2.6.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"6c596bb8a73dcdddf3a067a52da92e0c69dba4be","_id":"better-docs@1.4.0","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-qR2KEHvsHGbaUjwTGiUeTmnMggfHfwOCeh9MC5Odecf1zUtGraKkZgMWDOmY7Euapgnz0eCPNphKdoEuMS1GRw==","shasum":"8e93091310af8ceef0d29a67052e6b64ea3a773a","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.0.tgz","fileCount":86,"unpackedSize":936552,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdvqkMCRA9TVsSAnZWagAA+n8P/jppNFckPjSyG3pY+Mg6\nFyD2+5C9ezhsaHE2Hsm6elYlRpTxX1AAhHYmO5WDOUzi8Jx145ZbGd/FzUtP\nrIuIYFJ/jpCmEJvqISj6jipkg70h8lVhjo7R5OxQW3nNW9qY7ikV1WpzgMlN\nqYKe/piXEehHupXA1XlO4/z9vQaWP4pXIn1FTjmRv3yoWmpo2BGp+Gm3GPRX\nPGBAQ0IZ0AkSEFC9+aoLSJ3gmGUUME28PEC9UbbWyekWBk5BvyN/LNEgTga4\nqkC5TJI6PkaH+NRjHmJl1ZeslIUbOLjLy4iEiDmNEaKYDgmxHA7V0O23OBXa\n0Y0BS/ZLXzubPi/uVUZd5YPEqKAWomBiAZvBf85PRk/EVCA9db/5DLAzsisa\nho2hhehZYUzg+j9fsCIl3jvKpCiHpgWINaRZFbApHWMvr3GOoo4VbM6lpYKU\nPP6XN68DBvuW+hZ4ATPNtKhBSgMJd2DNGbQpbFs97v6Sb+j9VCJJk7GBEimi\nKL8naWYiE7RmQG0U46Q/Ct6JBZyd/0bAnBsPmlBoIWnw+Xdy8Sa0CmjId58t\nYk9GCHNAWfQBDgwuJNQZCppLK1MWPSa4HjnUqTs1NpIk/w1R/Kf/wZiYseUf\nFKrXPVw1qMz6lXgtDplP3/pqnSE51cdoeFch3EFuRDaI+JW5x/Yx+mF70Wff\nR8c8\r\n=yi7q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDqq8yMyQtoeFT6ppcvDXnbwGcOFj7mYfPFhrVNwRv60wIgFzBhwFTzhugS4qnavB0WEqVwi0VnUWN6nXWwdOClViw="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.0_1572776204103_0.9336010521125919"},"_hasShrinkwrap":false},"1.4.1":{"name":"better-docs","version":"1.4.1","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","mocha":"^6.2.0"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0"},"dependencies":{"@typescript-eslint/parser":"^2.3.2","brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","typescript-parser":"^2.6.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"7213152d4f5f9ebdff384cde101059c4784a8a92","_id":"better-docs@1.4.1","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-LpeLqtJC+yR1yUHv+yTue5wcWvfxBA5z0nLKlgnhmHvOT7sRYACIOY4NRivLcV5cmL/XoPY5dhYsrpfNFPGDWw==","shasum":"0d998035834554ed059af2110c50b1df65d45419","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.1.tgz","fileCount":88,"unpackedSize":937734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdvrO5CRA9TVsSAnZWagAArioP/1UxJYI3CSZMq+Mhtop3\nf8te0WNxBT76wCF/je58fBgQUiUzJzjmK7VuxqQshzUSz8K/896NRhO+NOzX\naY8qEnI8FHg74LBX6LlQJ2qDRi2yvTY+WkPkT0YLgI+zjqKCF9dhRa9DQfYZ\nV1VzxCtjp4BlGm/eNIwP0lhy0DeZa0/vCHsJoMQYVLj9yS6kNUA4UlrK5dNe\nH0RGOmZQNWT5Zdq3lpJ9/1lrll+yzX4hMCfTWrhOG6WdTkWadfDaf7ccnBeG\nhA7Dhpyb4hBP60riwaZ2X6qo7oCurPBL5tKfy3pmMt8EMKYxjeQRmHSTQ4CD\nONt2kM3nPOgRXqOxU+TQt3w0oI7F6euS949By1aFWzQCZ12+9qySzpri5PIs\nGbQ4bZCNlmPQ9qeMLoD8GbfCPqNmcLNA+R8aaZrlHm2bPufYvmAkzyYUOunF\nD7Zcr83nO8iwcBvoJWIoFNGBflM1ZrKoC5hZAJnTGF+EBut4FrxnCuANZzl/\nymbpqANf/jmSXja7YoyJUmM4Ho+VRZhTkPAnUxlnO3TEKgReOvr3gzNF0xng\np2ajeyTXDuLmKH3A6mmjA3xOVz8GhdqIF58dACpkgONMZUx8HpmeiYwayjNP\nEaZWDW775wZazKRvgASkZ5TZpvu5WiECMpOr5hVTNzKULuv+k0XcAVJYqykI\nqPzj\r\n=o76f\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA7PtCMfssL/gpLBDq/jaoyFBZpZYXTJ0JYzrTXilHR5AiEA9kZs8W1eA/wYEtFGlnwR/YgnUOnc3OKdbQTTn790MWQ="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.1_1572778936837_0.8420022662819162"},"_hasShrinkwrap":false},"1.4.2":{"name":"better-docs","version":"1.4.2","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","mocha":"^6.2.0"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"131ba20aa1021f4ba912e2c7e439a8f473c5f20c","_id":"better-docs@1.4.2","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-LzSwYvC8z2jcCagjQWYbg5dKKigwhQ2FTPyDRYyxtVPKID2WDWRIV8G2nraVwIWNepSMcNorGTKvWq1II6pFyw==","shasum":"9932c67c0a0ddd9a38d3f1d5a61214dcec4ae2ef","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.2.tgz","fileCount":88,"unpackedSize":934451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdvrT8CRA9TVsSAnZWagAAshwP/j5+UK8/DXwWkJIMVNOh\nif2bMCmyT89a2TXtXYmifsiI7ry2+XHAyaZd2q0LPdc4iAdEvrvOQ1XV5jyr\ncTRPoPm3TxrXUVJfBcoZO6q7zJDV/BGBr4de+tkX82em+t0r0iYsyzXMQP22\naSBb7gcxPzdRrQ9Zs7w0+XHVk7Z2ead0G9idW7CrFrz0kuzjC2pdzHChx6tS\nJJlb14IqaWQGlM3k2NuiROvAjW4ZhKrCxnkmFEzqsOsltbMAPrQgN4b/dD5z\nLsebWrb6Gqad4EMgWsgJ06g+LirG+DaOPdKkJJX7FhbT0IurocNwMMSdTGvO\n2LLQTWtaovPXZZysNF3tWCAdmVHU4snuQTU/k8VF2OFYL4VxeJ8/40dU9eUZ\n56lmpVj04yke2yylqm6drZtvA0TPlfc3B4y22b05v7vgXINyDf3G/hBiZICA\nsg3VJ84iHaJV0FCKj0Fv1sryqVSePuiayIArzO999ujf9VCFfyIOUx7NSA/l\nQ6eIF9cjSgeCQ+yGT7wk/tCLUti92UcR90ASq8CNp5CX8H3rcDUalC2VrGau\n0mQvJMjhaZ+s1iOSErUulm+1zzDLNiF6YdUAeCTKw2s/1nzFJcerT4rb6u6e\nrU67UsrCOvSiEaAfvFx0oUQ3nZ5Qgi6HEbcD4vI+s3PTjChrnIVDuci+6NWv\nDT3g\r\n=q5I/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7wpYUUFIAWbHQaSHaQI5+l/l85O0ZtJEeBod9hTQacAIhAMLuzePN/ZSHwj5jj9Ub1+z2jddgQ/N5HziyK0NqaUiM"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.2_1572779259477_0.43267791974075775"},"_hasShrinkwrap":false},"1.4.3":{"name":"better-docs","version":"1.4.3","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"8c6d9250eadc702d4292ebe6349671eac87af9b1","_id":"better-docs@1.4.3","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-qT43hvgGc5cTNNHWzk6fehJfPXOKYT8STMCkSUhXC6hQcsCQpH6WT9k/Rg/0jrgXjs99ZP/Lgl2xZZC/ZUV/iA==","shasum":"c42c7bc293ace57e36e572f83c1cd30114a15e7b","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.3.tgz","fileCount":95,"unpackedSize":944930,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdydNpCRA9TVsSAnZWagAA9bIP/1DRAEuz08oXfNX79Q+6\nQA5XFHGLAGYD1tuVU+aHlM/fwwptNVHTW5SKnV/50wgJsuabneLu3wFOJylX\nafP62MHULKmbxwwK0yRvC07bKcjNh96LE0rPnTOln+4ECPcP1nHyuYyw8Srg\nijIb8CfRPE+VgwUPvOR712xm5y1Cl35P5OlSVBnclfwpdiO4mUnJW/QTDgw8\neBFmKNBs3ef8R8nGZQu1FR7CPzoiVNJEQnQfCIrh+XShe00sAVI5LOSRM1JU\nn93INeSpg7RSCP/RlT1GrVg8kU5NTesODRCW6w1FYKQet86DRJjUU3ddXmcH\nvn+dlOX+Igm2fi0KLciOd50R/w5vwrhI60qaBFoIt/6GzQqyX37nEYPHucac\nI97aEoXVng6R0/DwYs9rtej0Gi402w/iwgpGAj3NinS/4UglTJwE9BkH1lF9\n0LUO16pGJXUrlGTGDS/wAk6qsAE5He/eJruO/X7t3CpN8WvXWS3Uw40RN6Vc\nM9GL3OBXsDsJEJylHxiYshKy2V/fiZ/dDmB6g/In9S9+j3WDiSm4CzTKLcc3\nJfCs4vK3hf0Y0Sl0Dl9KVmAiHD2/s93x+icD+Sal9L+OMjgwHmDJPkt91qTd\nBuWDdl6kPAxdpSjLhTTPMvWAiXmM3eEHu412eFudyE4fX4xjz0vObsw41qaY\n8N5V\r\n=SRr5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC8xnGjZzGBElH37XzmPM5GoEVj5wQqsAnnzwCitnI3LgIhAPqTjXQ49W1w6dlhJR50q4rrKkHY76IOCG0AL2mRIVGv"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.3_1573507945521_0.5818434059354427"},"_hasShrinkwrap":false},"1.4.5":{"name":"better-docs","version":"1.4.5","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"4442cca656b67ea17a267bf0600601c7b5163469","_id":"better-docs@1.4.5","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-sTydRG2/Itgix5KvPS41bgMMw//tV2aUlJWiXxRAZKLzbAAbF+/n9jHaMVvkSEzBE33wLDLlTMCL6hZ6Bi/buA==","shasum":"e914e8115db5ab66dfbe20c8df3037c6e1651c29","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.5.tgz","fileCount":97,"unpackedSize":948908,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0CamCRA9TVsSAnZWagAAPCEP/i9kz6qu+JszgeyANbRA\na6mMkjYFtjPgMq9JLw/9BrZ3o4wwPVWWZ0XymMhKGk0wrmoY0TeuK5TGYdFw\nFyXqhY0Qiwsv3p3kj5+4yCF5dekzT6zV4urm/LTzlMLaPl7FE1PPAa44ReQ9\nQpwXPEc5vyX3UmxWtyVLB8t0EXHLOGX1c0EDmu2n9Y4PqO7JqWi2MN6FEWal\nZo5G6aG0Ayhu6cUfBXubXh56tv+m2n7Ka/ZPIUiFvECLpoqDqMmF2mfGd+F0\nfjh0OHWcSnSXxKHAbAgruhqWevjAytKNUxl+EI6yYsiZPhnow2gCXMTkefDo\nvmKPJ2UnnC2rlM8EZB/CQ9fq47f/MFPJiIzcwLuQ1tRoUHVajCw4qFwzDe7G\nnpwamzP4FOSFtNh5MGGz3gbA4ta2t9j4WPjMhMrvXE9Pi0WbSksEjxZvqYOd\nj1HrOUIlePZn1mYX0Yd4k8Hy1qOO52pskeBUgeBafl5j6MMvUcIHlOKFrqZw\nUNVWfQct4YMOHh16H9FZRvUfe3Hcys6A/OFz6HpWiwmfn+IA2VbZzmcbxBcU\nxueIyuy2NJ22j+CD1xo32ZZEwY6m9Nv76su4GldYI1c1zOx289mUNiWb+XzI\nI8kZAfwKHYMaOqlg8Is1mBzWO6z9Q/T499bzBJ67Wj5UTFCP/BO8JzkimMOv\ne5/C\r\n=aldi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH+ZlKgvu6faA4Jkv0BCd6/i2l0/wr/jFqsmU72Fq2OLAiEA96F32hEHARGffQIDTfrhaxAN+/obMKn7h0/4sBEJTw8="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.5_1573922470361_0.2790301184525361"},"_hasShrinkwrap":false},"1.4.4":{"name":"better-docs","version":"1.4.4","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"36f4927012dbded7a1fe558e85d143c2513154f1","_id":"better-docs@1.4.4","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-x80fN+0EbiIIaUJm9+6alk0m9xC1qfm9kj6ZSSTOKmw280TDoakZMv6I8nt68lylupY1j4LvAO47hmWWZuPeJA==","shasum":"2678c660edaea5940b2f665617eefd8ab0340ec1","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.4.tgz","fileCount":96,"unpackedSize":947057,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0CbhCRA9TVsSAnZWagAAaMMP+QC3L4jXXsqeduu8nAgI\npxgJBTC/OHoKaGUKt7ln7ERthb7U/IErSBG5IHIC4jwxXsK3uBSyv2ft5nu5\nT2GiDFSF4gi/URD6MkUQHDMvdMg5WMeon8U0nOpvNTfpmvsZOj87dhR1dtVM\nKZVkUJ/5Y1XiaSEvGpgv9rYYoNkOxhLruS7W+hjwzP/xcWw6bB9kg9LNGQbP\n6lR0fZ2bGG5NdpwwJSO/jXr8jeAZXyAhN26rGwUT3xJNLK1nUClHQH4EUxq5\nv3erDePWvDSLe9noMx4JPOzV29F4XkHjzamQT8uagoXnNrXbtkyN2qkbtjgl\ngmlcVjD00NdPxE89wyqxyb3OeGiPfGA+6QxWy1yjN9AaX0Z9XJwFM5XVAo71\ndD1JNZPmKr3el80+1BlIqKwOscU/3mQLfx5WcQnzXd7l/uMzFDRwap3Tyf9L\njTTsCwl/I4Dqm7KC0fcl0RmYH5qSLi19zoSTde/AMI1YYY/UqSN8PQfyj4Q3\n7MkpIk5IjGGZhZObt2NkHXvEAg+beHQGGpAkJR3X71EczWpetxx/6JcpifYE\nUnlmXOUiO9ycqrt/OJM+XgZrlGmkME3OALmCvQo0yfXY2RPIKAV8T3wfllah\nCiMiH2GpoSp6sUjJIFXBGKeeJq5wNg4TwpMWfH7a0+F4XbtB6KoFA+ZI+9Xz\nVJTl\r\n=Jfgj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGmLtP20MLFUUhJwSTTP7ps07NeXon/sOhwKKp4Ra1X1AiBesMKhI8Vh3fFuo3SQFEimi1juCosc12V6zy9ryvfxyQ=="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.4_1573922528909_0.8159022054236338"},"_hasShrinkwrap":false},"1.4.6":{"name":"better-docs","version":"1.4.6","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"8e3c3be85f4efa341669e62d650c2dbde30633e8","_id":"better-docs@1.4.6","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-kfSWdKV2crePOQ9qHYRja/NQ1Lwa6C2uZjOzyUgmQVL5+DNBUi8iPfUxCJWMd/EkeGFLEbd6JUBMZedT0fvvlA==","shasum":"5dbc9cde19c441597f8f1c7f67202a85ef427940","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.6.tgz","fileCount":98,"unpackedSize":950028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0SLqCRA9TVsSAnZWagAAJooP/RNjYKQpHAmpQ3xoDONf\nXAE13pR1jT4FmRKTe33w8xe1m1QNZzq/FqVjTBHWmeFK0hd7B4U6eOLMFiYa\nnGCdyZ3iewaSkk5zhLtwVsXrzpVMu6n5jTyRHWGqV8JVNsNBqInATZEqQQfb\nt+ACGJB6Lr+C5xsNURDG1CvvCMaz1K4SK3Y/M1Sxjdfsrq5YsK+ZSaPM5fDT\nFJzIM5ni9te7UafFeN3LG7s4Fa91lCldbjNglNkkNpnVIZMDo//rAbC8pqCm\nmxZ/gAEtMl3g12qVARGBqfP7pxGgblOWV28YV/yO+ZQ+FWIlfcpv2NdM9A8x\nwNg6Ue3yosvs7o7EZtZImasKjAZ/fLlaHGLcsjW8nTA8iabr3SDGC08gC6Gn\nnLYddcgtIrgXpLrNHcf/sebJv4lNtORKtZcboirirj6oVPmfYQY8rj6WZuGg\nk2hhpkQuzouB7ixOkQLmqJC1xS4ghyWlFlMqZLhD010/A9jc08Qz20DprwPi\n2yh49LJBj+pA9qCAZQwsLue0oDRsuppU8kGDGo3qd+ZwM5WeiF/IYgYViv3S\n6r4K9QwfpJKUdDw454r2eCkjMKq3SC1q6C0GlUzcEYopi1dUCbo+FvmgwS8x\nJ+I7mMwGdhl+7vxqddzX+vgQ1gDXxcSapleq0Y21FwBtlzKoynMQaf68vabN\nNT7H\r\n=u/LC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC1duljQmA2ESb2lBHfI7dleDcoVZusTXziayYov0KSsQIhAKm6S1nU9OJEJF9l4/d42GTVKMIGQa2USQWRJ2tKyQCg"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.6_1573987050088_0.1805157134277966"},"_hasShrinkwrap":false},"1.4.7":{"name":"better-docs","version":"1.4.7","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"fcaffdb873d67ad6e4c0e7a48142ec19214a4c41","_id":"better-docs@1.4.7","_npmVersion":"6.4.1","_nodeVersion":"8.16.2","_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"dist":{"integrity":"sha512-LQjdTcZT+G4IG6LihCtQqnGChghBRVy63f91YDFK8+ggPlVPt10mXEZTHwE56PMlisKlVb/1Ky6V+dZOoJ+qVw==","shasum":"a9033730672925073db74ce201410fd23f2b7888","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.7.tgz","fileCount":99,"unpackedSize":950666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0k+wCRA9TVsSAnZWagAAXjoQAIiEB9mhoAkIjriDBFW1\nc9omK8NqfI11ImlFp0rQ6zEeslZ59WqLSJWFgRV96/dM1N0w/dZK8n5GmfjA\ng/qKE1S5u18O18xH4ew2NsJGgpOsc6KonEEHgIu5P8EoE7Qs4I3j2Msu8bDO\ncX2vW/5vVq7pjzYIvXykZEpQnyDVbN5CD8IqzDf5bfHuKTV53L2yU78G725I\nFzNBznBewTvM7AHIVUj02mPSba2NJ2I+op/jgrdQwpjl7xlTXBQdZSpj89l9\nqHwmdzVdO6aCOceKFLfX9xZVY9m7n3GyNwBbxL+S80omJWzYyR7JHN0U+VoK\n0BljRsl9dRMoSNTmSDdYYNAmjIkae+iptDzUf8dnopzpeQ/XEg/wFtMRSKeo\nYZUxhhyEhJznB9bpBI+jnQPguLu53z5s5NZnWwB8PW12U8iQrYFLp4oebeDe\nJDYC2woEkoo1qDVQnwC3snAZXi8dgjsoyYlNzOF7vgi7Gg2RrAxFL68gZL8Z\n1liSQS74oZHR5kDxXun5ol3AqKKJICYR9zVlhZ+jANbGJfq0ZIyaspgATrvS\nHflnGnjaxHTT2YQ/oFFRUNE7YoygY4AYgawvsyvR/5BX0eMyoFNa5T0kfC24\nzBX9XLusK25BhtU3dqimJq5aZpWsaL7N1ZIdSEeQlSCnxxlgyuI9EZoUUcBa\nWAnl\r\n=K9/z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBQtc7Bw74lJ9CLxsRuWle2Z1NlE82We6mTvCAPtXlhtAiEApskkxJr4Bb4E9WCfqvszvsmav1ARjZbrEgFPQh+qzpY="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.7_1574064048199_0.980043168987607"},"_hasShrinkwrap":false},"1.4.8":{"name":"better-docs","version":"1.4.8","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0","typescript":"^3.7.3"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"a1215f85d8fe54981d99d8828c526160c62e43f0","_id":"better-docs@1.4.8","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-sWVVIhqNqy+dYkLM2VntifyTZ7VCydhIKeu5asrG0PPb4XROPJIYXv9WXa+6jJ6976P5rz84BKmMn9NoalJPgA==","shasum":"5bb63fb841df75498b1afe673c5cb39195dc7c5d","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.8.tgz","fileCount":100,"unpackedSize":656871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqJirCRA9TVsSAnZWagAApWgP/2/j040agYbE+z7Abyls\nGIhN2Bi8ZwBLTV5RvrpvgemegMJEUy8MOj1ZOTHbiiun6qQEQ5A6/9qFAqCU\ndPMpqpJ9HWg0IM5m9SvCJBr7pTIhsE6g2D5mp5ky0VvTwC0W8AHpcqQwCTIk\nNpKjYALDOdD/Xozb7PXucx0/WsIa/5jSbPmzEZF+cbx08ghVe1WBrd5OR3gg\naIzb2sLRmlgh8zJtZ86eY4ft9tOm9hkSENjFpH1njSFS2pO+DvTG/VrFieom\nA7yoeJJmKDvoFxeWow3Ks2+LaWy45BB+1IhOKkSMZw3/YmHeb5d8prqyp4Og\ngPJ/zIuu1OFfijPhSybdDLB+Dx0cpnB7PpR0ye9D61D21g0NinPc8deQ1Jkj\n2VaAxm43zUeuIjF/s+WnkOVAjGoVkwegeP6bwNauc36ASxY6/sKp5gj5cn/k\n92Q52//saJ/AMUDCHRs5irZv2Z2O2KakXXAVBGzBvSZtGgXoBrfwwF6OtLCA\nhD4s25d8JJJp0vKTD06S8pkA6wNk5dBW8eQX+Ex2XPFQ9GzgQi0TYS97tNXc\n3TxHjXbRTscdvSB9xwbpQprtGaqzIwDYq9FlIFlmTxbfJ6OFbQ/UbzaqPy0s\nCG6y4z3bRiNBDHceyyjuezyhEkhtuT3TVNHt5hZiryha/vZ51IQ44sJyTQTy\nOkmL\r\n=QiGF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG3lsv/Bv+RNE+yWdggO631gHiSGg2p82sezJJUMcw+bAiBGx6hAwTfeiq4yqUqC8sP5VDfxFt+5StPuIMblKFonjA=="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.8_1588107435112_0.995277774410773"},"_hasShrinkwrap":false},"1.4.10":{"name":"better-docs","version":"1.4.10","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0","typescript":"^3.7.3"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"1a582333e4b49767c3682cdd336952e69eb42158","_id":"better-docs@1.4.10","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-5Z2XexYquKiHw5vVrDp3bJBausaBN6EQd7oxdNmWrRzqgNT9G4w8xZTUgBH2TCgd1c4LUw3ht1fylaPTt7/J/Q==","shasum":"dd9ab31136386d40b7b74a03c1ad12539603888d","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.10.tgz","fileCount":100,"unpackedSize":657312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqJw6CRA9TVsSAnZWagAAMKYQAKOWOaQewZn+ous1uvTC\nfg8VuonKwavXiPcWdh96uiySQJz+ZE8EaBViUXfaxTexRVobUFSHPQPhXdeq\ne+N6If7GnWRVn4aqdPPmkwKq1S4SAUkeoQXDMSdxLE4IUmCK72nGukkQE08L\n/k73Wv4JYZlQyVXVA6hnmZbzXFLMY+mf2K0ZglVIacw4R/T8k9MRKQwPfUya\nH/EfhJM78DPfqMBPsSdrYObJGr/Rp5qFEpy/g8jW0msg97YkEW4bqXClhLhe\nik9fEUpZyWi7hAZd6VbKttfaLnI8qSLNgfiaDlMpPGJ+gLG4LC4xl0JXyYHV\niR7SADlHEzpeU3ruYlgmXR3B+Nhea+Kl5ykSC4D94UuVD3pz9NQ+uKViYLuc\n5emEUfb4T19o3CYswnNRKX7A0Jl3+i/7Kppj1JElX4grh44xL/+vYm+S1tzG\niWNZJgd2qJtbdu5PrAl/xBO/vy7dl3otFtZVcX59myv+zX8LgVmnVs4LToLP\njrfqBoSnaASEQ4CyPJA1Lm6xUOPVc+WrNqBX5EhDBMDFUxpDCzW2andmCscl\nyL/gcFjfBB8dpmXGJkanIp5wEQ419ysIKsoRvcn9Dl26yQYTfLYgDJz86YSq\nB+webXAqvWkaUL+nYhW75mzsgrQIlv0sPX6EGxyOV+6I5kE7i/HMq31Skujf\nJ7g7\r\n=gZRQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF6QI0haYH4YvfCZE0NIOAANGIxDWzPUxuLvfN2W/Pc3AiEAjskTWnKAt92g2rdkk3NJGYxtgM1Lj/lhPRiBq9qZ6x4="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.10_1588108346205_0.9603099958617936"},"_hasShrinkwrap":false},"1.4.11":{"name":"better-docs","version":"1.4.11","description":"JSdoc theme","main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0"},"peerDependencies":{"react":"^0.16.0","react-dom":"^0.16.0","typescript":"^3.7.3"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"c16ab58ea89f1631a0a69a4cc7814a05b2a1e7ab","_id":"better-docs@1.4.11","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-tCiLrbGbUjOc3LvWlpx6CLKE5CvdBehWZSIbN06De4GIs9BgQnHkKqXHJFm2Yn2xnmI0otVfPSJ09qmyInUZ1Q==","shasum":"367bc75d93df9295d526c2b9b24dddf78f63b179","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.11.tgz","fileCount":100,"unpackedSize":657446,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqJymCRA9TVsSAnZWagAADZsP/0jLQ2e6XSZgLOWAYx1v\nFJU4zJtP0AmuNETxD9V+eiLDG0F0pEG/anNiW/MgevyhnKDOKcZGem6xV98z\nhHT4xlmcpEwPiRQXDwDuovcewzCJlbCzz3svADxbKKjlJt9UTdtinSEgPCc4\n5Eo2HFy42SVxKtu2M9ysoHe6pdmYNXn0MrlQIU8Si/shZGrTHHAveG+3T/v2\nrarqOVENhGPOfoORbRdrBsAwWez81u3pFmOKVpVPZW5YLXMkhLx6guemfGRc\nHfKD6ieTc39WHCetZXM42Z5V5ybt64lpjcyRo1+gsOa0RnlcRW+ME/uyIQCV\ny9XkZZiKKYiFuYiHZ6ZKQt6L3KgRtpj8j4co/Ri22EgtQH64yvtukZ21Mbzv\n/yPpq5X6b61zK6U7PG5g0Boz2JKC4V+jYgsaQlgt5xqObdUn+vjK5yZzLTUn\nTnviU/25MX8BejLKffK2BvHFCTMzxtFdacMJ6IzAF3jHn2jyTGkiHrxPiVEv\nAnxxcqRFLztHdpxFaP6btwzxsaFfMwrTeLZtSRHr3QoSWv778qtT6n351fVn\n0xYXiVV2NvWeh8PKZ1SZ+3B8KU/wTRkr/XITQsLC3PdGelhfj2jIYL7ORlOZ\nEuM8+pnmh3vwPcXecZvYtWgdu0kL72yWDTa1uHuEoAbOd+n0DdLkEzCJXzba\nJF1O\r\n=YGQ/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8RT2NZoD05FJVBJqWwz0pWJd4iG6TjzSTfMxnOuUqpwIhAOah5FMMPrzYEVeqokvloOrSL1f6vgbZcXcNEJm/YRyY"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.11_1588108453472_0.6013262198541094"},"_hasShrinkwrap":false},"1.4.12":{"name":"better-docs","version":"1.4.12","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"e6fe47ee31878fb6f25c2c4a3185f114388a0e35","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@1.4.12","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-hP/IvyQZ2eXLUk8B2ZInKagbsUZd8NeNMnpZAWWvw3PJ6oz5XPJXvobjth4nPIdF0U3MIxyNstf0MQiZdK0idw==","shasum":"a94bcdd799685d09f809a2f9bf5bcfc58630b0a4","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.12.tgz","fileCount":100,"unpackedSize":657598,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqJ8cCRA9TVsSAnZWagAAko8QAIK3nE/v2Bl7Ayf6Xx9l\nViFbZuo5vwCx8VbnDqI41a+IT1NVHkcKEhnR57YtdirN1DiZZR/lZA9UtJ0u\nrIMmev5oOhG3pSnggUmjIEZ1yaBUlyVFtG5qGQMTckjsEI65zzunXgME+Cee\nxq4+n+W/rXCxlXyAQb4CCDI9FDc5v1r0E2a33HQr3nFEUx9WfhiZZshb31SW\naNWUfITfoDy/GLTdRb/ozN2XhPpaJvUs/ltLYjqKqUNZhxoaVmOxm3c63ZAK\nJ388XRBUrNZNREwWfX+C1tMWVE0QKpb4d/DNDkUzGWzPSjI0HvI4NBkLWHGX\nXQ7+hpq5cPiTvakeVsea92oBN4dpPMsWyCtjuGCD0iBbRDd0qHDndHjbMRRm\nfinQecaf6w6iJGrqPO0PXMmGukJ4V8YH3uantlcpiSwbSzlvOLEq697Wn0zU\nUhjRJWK5X3bKMpwoc1U0azXL9UNQtjqaGRTgHI7FOUvO9ayqiZ1wlabXGm/c\nplxBhuhb0D1pmIR730n8LSmvufXullQ1Rt+6LwZr2N8mPgKKSu2stkuDrmcU\nAdA7vlxh1uPUeWUqnaohuVEtQBaqBogA5iLlh//PMaMa78fY6Qhd6sQpb9xY\nnN+wGJ96Fj3jEz5VgZGmvMR1+0BDsWHFmsxH/rt0VGQvKUhd3sv49dx55PPv\n448y\r\n=L48a\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFltvk6Xgo2U6uGcPsDeAB56+iFzoXt0AxMU2IhEO1ZgIhAJRy4z/6DhYbtj2wjhVBqep9gTN49Q59GBlaHprx0kmW"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.12_1588109083886_0.6014992033131938"},"_hasShrinkwrap":false},"1.4.13":{"name":"better-docs","version":"1.4.13","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"cac024b265e351705d925a2606521c7d8ddc05c9","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@1.4.13","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-9lT9icIKOyOvZTs3M7yk05eg9EWsC7kpQK2VlsZlhkFLXaI8DUShkm9p9cv7NwLlGh1Q6p/bWeRxqmize+jBWg==","shasum":"6c9b44a27b31e536e5da5920cfac11e8720e4c5a","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-1.4.13.tgz","fileCount":100,"unpackedSize":657667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqJ+FCRA9TVsSAnZWagAA20YP/1dAgD7Ha+e5KwPK/w6Y\nuzS0bLAzBs50LxYoXyc9k4Zz0I4lAaKtD7YzwE3YfFw4Y4+CIOlX5EH9YZMB\nrq53ofUmcBEUfvbuM5dAckNcUkEos7ROjoxLOftZV+XExFrq77Ys6o/GLN+T\nULQdCZbES4p4NNHSW+auRKNgXV8TFtO/2AE7l4MjiKNunRMTpJuei5sjLLYo\n7ovUAHuNFHcFLFNYsFLpqly7BG4noFgl6Kqo8DGgxIPvp17RVnfwe5qTQGb8\nfjLtZ1Et0yk8crgWL95phn+keYQPCfsHlExxAbBVla/kFOYEDJGrx0IBKi6B\nH/ctKuGDsqkkDyI668E21TZW9xUD8jRf6pCFcwU271K1iISof3SWPkxmwUES\nlvPmfF13VNC0UfA6liXwnDNY29sopVka2vUzFZORE7B3M3JSxaogLq9eUZn8\nOGqg5BUmQIExcUa7ozM53ukrUrUy+7h6X3G+s0qpitmT3Zdiv5JXgl/9EvBo\nvr1Q+g4bJ66VxdUJ9UaFYSITPijFekYMpg6wlQFyvhGsQeQ5YS5A+77J1IfI\nTZC2gy/LFN/Los0sjCyOgyGXJMEPJdSZqbcpQkWH2WkgWDcRe3jYIpcWONay\n8Z6eWieI2Lsit9m33JIcJWCRBlJeNNp66QZTvz3jKKioy+L0l6283bgDMCPZ\nPqBN\r\n=7wMY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0H7fCfNeUPWbLLIc9omtja4L+QEVtuiHWhJc9qHPFMAIhAPHyWnruc+FsHoemjOwy+IfRhR2zptXzNfs+6r4Twtjh"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_1.4.13_1588109188779_0.4473503747625813"},"_hasShrinkwrap":false},"2.0.0":{"name":"better-docs","version":"2.0.0","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"gitHead":"31cf308899762b778e77dd59e728de345163d6cc","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.0.0","_nodeVersion":"8.17.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-8l7SH4+hccJh5mjthoFaLAt5HFBqQJnwK4zUII6v9IMKzVknN7Q3w6WrHj6H2PEbGqhSO7yC/pAvd76gWbzScw==","shasum":"48f0aefde3b33feaff95d6a1b870c725565a8523","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.0.0.tgz","fileCount":107,"unpackedSize":1391417,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeqLUkCRA9TVsSAnZWagAAn5wQAKTA4Ksv2r/GNVxIKWvf\n5lUXoR5/3toFfpsxb6Gg4YPFbGdtnDuYZ1guInS1AsDPsPxKlTzzHfnUwlx5\nEIum67Cj3wDMCAx8388/53mH4+FCbYDC16ijkvJBzSlLkVKYe8Aon6zO6d+v\nQQgjA/XoJT3RrE9Oh6lIKmbAEK/GcL3IqMgUpD14IN2bGvg2q8IhKtF3e2Ue\ndk1bAbIoQJP3Bx3uBAxco5LIMw9ttADdVZ0Wu2Od9YJQHIU5l+T+urdZRAd6\nS5rcBhl38uGlNcJZTbKnISkG+UpEMaVV6Ev32VR0FvQYsTVeafrfk0ASe6uY\nGQ5otk1sL4ftKrchZb6ksOAb1eJyuyWnZq5NOnbCNeuXGNDSAgmgl6P1ff1x\nPf7ZsAW/qnrCgwaw9206rLheHUFFBZHFgb5F2xtopiuvpSR1PVxrsGla5J83\nU8V7oWuMuSMrlvPvo6nBPEUMuQfJsrfFFxPbhK0WzDbRVfYmWoE1dJsFB7gM\nIq0+OlLYtTCbar/cG0LKNDk06ejvdwX4aW848jugFCox9gMQ/W46YigkV9K1\nulEYID1uhKSqX2NlZjN3r98nhY4s6v+SsfLPtT12DJhI5gjNv/usfmdvfM+F\nNufsOHcu4zbLGTQidWkBzKBCD5kS1JClIQkan+1QAMBePmMG8qrqRzjMbiHo\nC3iB\r\n=kiKh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSrEzHCRQTQ9Sa7rtGH3DGrkOuHRT6meqC1d3LzOAMZgIhAPH1CrWHnaMIGl4qnPcBJSbZ/fYx8CVE274rstJopb6l"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.0.0_1588114724428_0.9577577720749977"},"_hasShrinkwrap":false},"2.0.1":{"name":"better-docs","version":"2.0.1","description":"JSdoc theme","repository":{"type":"git","url":"https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"./node_modules/.bin/gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"licenseText":"Copyright 2019 SoftwareBrothers.co\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","_id":"better-docs@2.0.1","dist":{"shasum":"37b010d3db5985ccf954f1657fda99cc9af40d8f","integrity":"sha512-X9XLAhj+tKxkjVR+Jn/RcbYNSO5D8oN+TdF/4tdp6Tpd3BiCXj8ZvYUwj30MkhTkfzUQDPkANNHtLqqZbtkqig==","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.0.1.tgz","fileCount":127,"unpackedSize":1214040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJervmcCRA9TVsSAnZWagAASJoP/juqcwL95mknb/oisNG+\nM3/CuUlFbit5iT09gbJ5qPZShB9SqjBxCPeL49zHAQiYQMr5KK+MvrK7/qI3\npAb9Fb77DfPpSV/iFAvANribMpIdBF9toWG6+BNM8ERnX3WQ3wDe3m1lYC0U\nCwwT8qOW7WxW/C/N4YQXnM0hlZQuS++RRQP4Z48zJfOGDaS5/pKidvfzJENp\nBJq9g+ZUfMShzt9S8VWCDe4pdYxl/UwadpMBtSJ/ZVeIuI/2c9Z3tPl9TYi/\n6HLU3l9mg63+A+hmNmqFKyDJ8/gwbhOg6reubYYcBIHcoQzixCxN9aNQRuLU\n1A5wdJB+zElSG6Z9GjB7CGCxG6njmR6BWZdc/HN0koJkIn09/hn5Ec5muRC/\nhcJzhvQxHqlmczp64BLXE2SIWfQEplbTMXW+ZIrbgO//y2bqsFLFkyR6+uj+\nwNPlPMIX9/YJ4puT6iBi3HYhZ9/nqFkYVqe3/NeGYbBkYgq8bjnkMSbw3cCw\nJizvIJVwQF7DxG4O/LZ1LeyxpHLw2N2gAu1aTOWrtk5AgD8f7Q7Hh7WkId9D\n673A9Yly3A1PTKc2rg+dF5LcFs2iq5u91/6GUoI2rRprt1hJ0IVL8a6JYYKS\nAo5wfKziLZ+NdKLrVRNP2mf/LYrRYn4wzrpqgX+NEVZNN13TJTaVZaZc6vad\n1zd3\r\n=b+wY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB9ZzBectrFig9TyNBUbhItot35XwzAh62JCTQ1qZrIoAiBteRf/bY6N9sPcQetibRI2osrgowgWgb9FNEAwDW5c0g=="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.0.1_1588525467435_0.9390520022900564"},"_hasShrinkwrap":false},"2.0.2":{"name":"better-docs","version":"2.0.2","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0","semantic-release":"^17.0.7","@semantic-release/git":"^9.0.0","husky":"^4.2.5","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"d82e59276c7dc806b306819b0ecff23239d78a06","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.0.2","_nodeVersion":"10.21.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-QY7uH9ih1IMTUhpC+lUEaGkM/VhXdDX1VWzUZEyeuDaGfRLMeoh3yPyt09IenY+cgP+GxaAScTrXjv+gNfCjJg==","shasum":"9e50f7c66a072cceb13942d18cd9e1f6be38eb25","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.0.2.tgz","fileCount":109,"unpackedSize":817781,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/crUCRA9TVsSAnZWagAArQEP/RsC5g+3SeOu8ulTF5BG\nE54GbA4GTSW2pUllobcW/96aPCQZ9i0XAnnK33qH7sOTfhJTTzjSCFVrYqx3\n5/sDX7HqILNat+cz9b6PG95c+ftnCrZJ7zveIUcn8FjsfbVcOdUsBzhFTnuc\n3G/gtGdEWqG6dBJUdkP67zo1SFSpUVbFhXDXn2F4aeGTAn1i32XhkbYvc6mN\nHWEDxQh4Uztg6l5QsEtoryCWfnqsGEy/F41RtYFuEs1dLerB7/HUlyov3fUH\nA2SrE8ZE1n7NVdjE4HdSaov9F0PexQpqjSRTFKqFBFcCcmfoG55XJWoJYwxY\nmka/3w6Hq6l6gfRFMRSZKpEqXneIl8+cZkdQ2HIKBW8kw8sAK5EPWVqC2TFR\nHS19chGshdIjB8BiQDzsomOYV7EiAT5Yt4nS20ntuhJGxkp4bG2MOzxDiFcA\n5X+WM0qmG1EL75Xbwx1z/RgeRUl1UKNUjR5Feg6FzrnIxOuXPWAJ3Dj4U5N3\nJOi1yBuLIWnUwtRU5RkEUBM8CQgqzJPA51KZe+xRva+Q9eNYPBPLp+pFF7IQ\nMJiJqfGRyxGjpxM1L36le3eW59wEw4kpClbtdveoar8pUKUTRqiODOIwb+nV\nj7If0h9ZcvGYeKpXVwyh6KD93FOBD/Y2Jk1wyWsDOREH5H204cQ3kyzjvSLV\nMXlS\r\n=gZl4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBUzHYqsiRZR1UT5HYQO/kd+lFzypBmsVK9CioCsIW0UAiBYkOc9mml3LoRw2TPn0O88ywhHjjH9PKC/ulHtrYM3fQ=="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.0.2_1593690835985_0.23190734864411278"},"_hasShrinkwrap":false},"2.0.3":{"name":"better-docs","version":"2.0.3","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0","semantic-release":"^17.0.7","@semantic-release/git":"^9.0.0","husky":"^4.2.5","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"35ffe0981469157804b0644fec0cfb99e609d05e","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.0.3","_nodeVersion":"10.21.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-gXbv6xhGTKGiWjxgmA9P55HK1TvYLtDTJjJOMisL69e7lC9UggWA58HUKypw8Nx7aRO5nj8gbLpd92fTW6wGcA==","shasum":"c6e6000b1ccdffb570fa7d3821e8e9c766bafec0","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.0.3.tgz","fileCount":111,"unpackedSize":817960,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/cw9CRA9TVsSAnZWagAAtDsP/0sF3LPE2HfdoctwNjWU\neKnUSVomyy1RlBwRRMgyVQfDq6PvlTRZZfMj8XhwAhEWSjxpg7ElIkilDDqY\ntRGcZfRnjalQwo2s2/o91flLN8p7MCf876j+SL4T5p8jhBNedEM3mvxhqk8a\n4qcwAx11wHGvHLcBTpxoeLDaWWueee+MneTjDYOHsClA5nUdLNfY/ftVcVZd\nzrraqc0cVKV4ZuZ4FYyewFFQi6z33mow6xSIO+Gush+A43bw5jeQgLak9RRh\ng4eJgoU1WRurgYS0e21Onz9MROy/XuhizvN6DqshkpLmau/J7F7xwfhUyl52\nyvqwgSMQa4K2pn8jlI0wMIwN90k4HsudeSB8hkw5G71ibov4HPLXYas6TxJZ\nFXZlKFvF1/WNf1cPcIiwrCBqY/Dh2jMY4nQrLL+/jeHnQqFs17OxrGhHz54s\nW/x3Vt0NOjYbQYnJN54258PRdY3fcHNLsoc3NG1Hr7BVuqZ9YOyXKs669DBl\nv/7c1KdpBoTHw0uvKPGpXCaq5t8+pqovQs2JHk39s6NIY8ISH9GBnWKWPoXC\ng0DTmLphMV6cavBjrqgKLD+8Unof1tTXp1TYN8ZCNGjmnxSOylDSfjRr5RWm\nK6wDGppBbebR4V+uG7MBn18MC+v0MbQp8W5I17dWMTLNZGDDxFnfjETOwANN\nwMGf\r\n=79uX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE36LdDQYGB9NGg8AU41a2j+6PXtVNunNtgWKP5Jbk4/AiBVOy0k4Pguv0wOOiy/BIVBqlTLKXXlyP10bN0xu5ugHQ=="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.0.3_1593691197097_0.81976701736786"},"_hasShrinkwrap":false},"2.1.0":{"name":"better-docs","version":"2.1.0","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0","semantic-release":"^17.0.7","@semantic-release/git":"^9.0.0","husky":"^4.2.5","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^4.1.1","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"9573d615d5497ddf81ba9ab8850c5a39d93adf3c","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.1.0","_nodeVersion":"10.21.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-G3Cg7DTMdP19FK/63KF0pGjw8EGW8WFnMKpXwUY+rFoq/7yMhT0JPRonSzLWSQOslqVn4c8hAGgHDX2jWNEp5w==","shasum":"5acae751e6fb3ce57298c24b6484ec3ccb69d2a8","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.1.0.tgz","fileCount":111,"unpackedSize":817955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/c3gCRA9TVsSAnZWagAAhwUP/AgsMLY1LX9EQn+l5WdZ\nk2vaDgXvve6B725Kbe/qY2dafNnmGNc0hFNPYmN/eb8CIQWYkMrP2ThMGILL\nrBZXHB+n+gMl/Ch2bIsKGdnnnYkHjG7AzUnV2D1dOhRLTvSIOI2Lo0y4hclp\nLjtm6wKwvdMMs6cWnnwZBKBcFu1iIMVB2l5ETWR+pFpXXTRY0UOh0FPA++bD\n+OS4JZOkdWQS3kbX0OKZrW7RyM6nY74VDIx9BvrkllYv9Sle0jGWriG93A3M\nli2s+uSXYNiAnKzDvH0ntqc0VkWXjjqrJ1SegXb8VR5j46uU9fGr8GMNQWtP\n8jfCybUKY7PXU/fS+Oj9tEhWzxyAaSAf2X4LTzftoqIy+nU7YXRw/zy95/wc\nso11fO6ZXlPak0ufCL7KfXT2Q28trhTFRRQo4q6W5cJUXc54zEWb2aRW8efO\neanJdHQ7ulKnaFk7CF7YO53GYUDygVfxMlwo3GQYW7KNptvytein2t3DMy0j\nyBjKI0P9Jedo9uJRdXRQPVH8TtUQBQVKi7ikpFRL0MK3dEuTpxhdpkW69b46\nyhjfqmqPUBsCL2iIa6TfPIW5zwybwuOIHrAUFjYx7L18d7SGrI2tyXaT/fYQ\nKOUPK1XPMIbF1ZtnLYHexOV1X/pjPIF9FwaRNzh1up8TbRNIgUcv+tjwzmer\nUiqy\r\n=hmWx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHGWLuAx5UQIcFISvkDAWxFfMPb8g8hoMrPN+pphNS3+AiEAl7alr2H0wIAlJeZU4OfaKdFDDhkVHiY+mNGGqC95uSI="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.1.0_1593691615995_0.4855220461125693"},"_hasShrinkwrap":false},"2.2.0":{"name":"better-docs","version":"2.2.0","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0","semantic-release":"^17.0.7","@semantic-release/git":"^9.0.0","husky":"^4.2.5","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"70e4042e114adf6695b3ada992b988d5cca14fd3","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.2.0","_nodeVersion":"10.21.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-hs4c1Ml05d2u0LA0UnNWuFPw9H1j/bpr+7+Sz6x/feUOTSA/lnMw29Fnx4gTyynmBoIYfRhvZsoDFu+LmF18yg==","shasum":"c9fa10918c947dce59717106a2f7010e39ebd7a0","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.2.0.tgz","fileCount":111,"unpackedSize":817955,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/dlyCRA9TVsSAnZWagAABtgP/jsJqtoOJ/3Oa11ceZT8\nfRjW7otao9zxuC8Lm2TJ+Iic/L0Uog8bnt2bY5CHgl/NoTsHaluyyh/VxhAu\n3UdzYXMh+HFY1kmqcxPNKte3WfOsTG/iOTI1KP/Z8CzDg4zmMQWWD8iS58Zt\nEBN+eyheYvepu3LRQdxe7GB5lgdMal6ndn2xheSTuXwuUQU1QL6O/bl17RyI\nicNPgQju4OS8bgWD/GTWjqT5oTe0yXymmJGVHoNz8wkfPfiSO7j4K+Eig/YR\nfbrOv3edSa/YrHSjBUAjRkbPKLfosHddKyIf+KomNNTAM44dKP3xgEqd7h+H\nDrcTFscDUURe+yethg0mtDknqjs/tJIOSYJpZOUU+rVbxBlb/8LRacPSml9I\nsRaNM2Zdef/M6J1do7R5JnTUw7qZgR/dKNqfP6QuqqHKmeaMGSb2IQdgtZcY\n6EYVvbPp8D0Vh5TIaFFI15C0nTfKm6piNi/xpsDagE/F9U5aGEaQwMmpiKNz\n5nYVmySJdZnwS/iYnDMEmdotRu4x+ImptooTNerYKnyStK0C02+91fuWxsIt\n1BIYnE+itHo4R4xOUI6McygMed/7h2tmbsz0nIlVABa/6mLgRVLvX5c0apJq\nA7KJRSvb7j3GYTAazHw26GT9t51Yc3ezFZ29XTzT6swxOQiqg7DKGd27NlUP\nlYUU\r\n=p/Ft\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkGr4MhjUu+0eSpe/YcCr5hai9ZRD9fOug0BsZdOTeIgIhAJuQq2EvgvjwclRm9n2fcpi7RT3XcTTH3hKmgBycc0Ma"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.2.0_1593694577471_0.716744738070902"},"_hasShrinkwrap":false},"2.3.0":{"name":"better-docs","version":"2.3.0","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0","semantic-release":"^17.0.7","@semantic-release/git":"^9.0.0","husky":"^4.2.5","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"b2ff5bef8570b88f48f125397c2207d52d42d42c","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.3.0","_nodeVersion":"10.21.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-s+lvppWKGs9CU3r9bxnKAGbsW/rzSEeaEtVZE9qc+14098MiWy4pAAsXtTifkzgUnvDfWhnmPXZEc+fCAA0cBA==","shasum":"69bc2daafdef92e76bfb4c3092eb71243abf9724","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.3.0.tgz","fileCount":111,"unpackedSize":818764,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/hvXCRA9TVsSAnZWagAAisEP/jefVacsX1zFS/kXT+bw\nJnUSxjgpFaosFGx0IACyTnnvvaVAaub5yyRczg2bPLsWzIsnos53d7Z75P0g\nef0txvdXU9JPiXcMwcImsYvJAZOrI/kI0nZUewQNLUY/qvPbhpm3FirA07Kl\nESIerONTAhK7S2AeTeFASbHchO3/CQTJY6BonTBcQdvuWCqNqylrhEbZArvu\nH4ize4nq+wmhSj2J8D1SqvyFMhiBU9jpfTNkhHm8kzINCnle3bz+8tZAKeyE\ng0dtlB1bktLUiBBqyshAOqt4S9DI1XqQ4sOM+WqYhEfW4g2xkXRgv/Mfmdjs\nTNJkpjeQikszmQbcnr3Ifr8IL6+84moE8f4WXThjHty3f6H25m1/SnG041q/\na5TEOlQ7XOip8c5Qvf1Whw9Fk3IFV5kBARsYPd73g6mhC4PplQWc8GZbf/Sa\nyrzylbg/ZXzaU0m4w6/cW7BBCbFGo4iJeKlJChUb/BWZc48+BJF+Ou3ndelP\n26RQ4zz5t99J2jrTvBPK5N/z6S5hvlLpTZclpIqcHcxJsM/3M+rb5kpuVOVX\nzx85JDnCVzDIsdnXrDPg/4kZgPMwTHYjgYjQH5H8z4fGJbUTO/KYeUuBJFOq\neK/Jc7UxDw2GgpV+h3WWmB3y/3ECOI5Sgv7fdFuZ1w+2iEsK3B5xCjsU/RTJ\nYCEu\r\n=2+gs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEX9qc/aFzRo9C03+dv81InQnMShJNyFQGX2gLWNUiAEAiEArvHRt96DFPe2V3X/BFUckavDVa7AVvTp5C8+0jBbnlg="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.3.0_1593711575258_0.7099443890565862"},"_hasShrinkwrap":false},"2.3.1":{"name":"better-docs","version":"2.3.1","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0","semantic-release":"^17.0.7","@semantic-release/git":"^9.0.0","husky":"^4.2.5","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"dd0e105625fbccc04f3a227c8044801556d24d2c","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.3.1","_nodeVersion":"10.22.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-oi6AoHuj+cxYS/ChEauRf7dZD61e2ibCCz4MGitbHUYsYi9wqduFfEoeMLPCh773JCd+rrvAjd7BhJiCYUk1FA==","shasum":"b5f905f37b62fa6bfcd929a53ec16c47a6b21948","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.3.1.tgz","fileCount":111,"unpackedSize":818823,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQ8+kCRA9TVsSAnZWagAASvoP/jb/kOl1WPOR2soEDaOM\nXORg9hkNX/OhKQoD2liC1Wwf5mey42EU8Gat1SeQ5o/Cl13WQ5Q21MEBB6AT\n3RXjmNpyq8eW0AlxtaiVrg09VHvwY+b/1vfCAXBd1jNuYE6n2TcUmtCq7Nrk\n+D80eJLNOVrqjAy+pKQbeawI0FDs7UyEBb/vNpySsUnzVN5qgswX4NbvGsZk\nI6jpx1BDDx/vULxbeU4lK05tSaD3zwHe6cYfWoOK4q77BSdOjs4+GfEend5D\nM5PPGOXa3l12FurUaRYKhVF+YhDDMSAyJnY8e+jOGAjZgicwayMvHhDIQt9k\nWEMV2SAMNzkx1QIQK9Zyqbqchq6PQG+Sdb2gTtS+tPuf6rIxIDfTRkgXplFO\ns0MLnfhWetUtVcI66cZZ1lxaFQK5vyphWBc+ynnItQbL3uEarXaN5K8ri8SM\nopXdgJ6FgoBGQx1O2Ub8yS4jb6TvmPJc4fIT8QMNtVj+JPL98oAGu5nh6+I7\nVNvE21Ev0fnsLfoLSwEoc2Xf2qWTSxeNYl059Ua6PjI79Ouel2cn9N3e/aHQ\nQ4gTz1Z03s82ccVIqN9LrIWfEOpXojwLmN8w3RbSXHfcCqI8vEN+gXjlHUB2\n23LqkTr8KZqQ1dO0ILxoVnbDZ2nwB1qmvKscwkGsvMPN4Br2MNg/4C4Jm9Pd\n5GB4\r\n=CA/2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuZdlPL+dotoZ93YjXjOc9gENq8A49/TOSQIzVSQngdwIgLBD3abtJhrjsRNqis1etHo6YVFO+rP7rO+kPmWgqVuQ="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.3.1_1598279587641_0.6700468416569367"},"_hasShrinkwrap":false},"2.3.2":{"name":"better-docs","version":"2.3.2","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^6.3.0","eslint-config-airbnb":"^18.0.1","eslint-config-airbnb-base":"^14.0.0","eslint-plugin-import":"^2.18.2","eslint-plugin-jsx-a11y":"^6.2.3","eslint-plugin-react":"^7.14.3","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","jsdoc":"^3.6.3","mocha":"^6.2.0","semantic-release":"^17.0.7","@semantic-release/git":"^9.0.0","husky":"^4.2.5","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"gitHead":"fbcbaf6da5af257629d9254621aa08bfe580e767","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.3.2","_nodeVersion":"10.22.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-VlbXQgEftaynJSaPa853XB5WqTlPoQQr2TnxIkKi6OsyJJxF42Ke+9SIES/hqTe58aaBnuoDGrIzOso8RdNx6Q==","shasum":"0de059301c49669a4350409d8c235868cf8bcbf7","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.3.2.tgz","fileCount":111,"unpackedSize":819003,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTSUKCRA9TVsSAnZWagAANDIP/3O6EZ/rLDJFIvgBEN0W\n/0JjnwxJEdcV9YoFP+fcAynzsBxe/hmsIA3Q7xkt0jo+tqcn90ucAHgsbMbr\nFsTB2G54AP+KKyY7iV+ecW24ct1YwtmA4k2XSmyfb7p7rsudMN0Apz5VGw3C\nGZH9A7iv61wIkhfry45mA6XKJDaJWCbNSnfxRlUL7jyRkHGUwaZmYQVcrwIS\niOXu6Oahm0o3eAgXbYz4G9IwUxcOxLCh2swnAAiclNnbXZLqJNAJM4mnNAoR\n4/xOKHz+nywXaqg7Ujbxmhv90ch1aBuoRRs9cKr7xJBxlpnsy61u4C7xCqkG\nrBS7IYwoU+DO3DFKSQpgAFkuvRaKM5swy/4rXH0WoypUK/PiR9fPz0LV/SE/\n/uJGLJxWLPJcd9SrxfswwfCwJiEz+ZfJwnME4YBVd3w+HolORle2J4qciDPs\nrmOpISuomMT42rR3fYnQHU2XwewAPfaKIhC1xcAFnFtAHcqxcaKQQ0aFj3Ap\nbwzcc6gMIuWd1fIal27q+jGmfe3r3kCpmEI7lV1aN/QPj0oLvBmAciCtZ5ju\nIrwcy2FLWkS3ik/Omu8lZepI0d02Wpw73zLysKuiAjx77iNMYSopWtaEFRrh\nQ+twxSzsi3oau+/p8SSo0T9ZTpVxjEQIsoQmlz+VPH6y+xrUpSaWPhSYnQBV\ncizV\r\n=2xEH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF4px4XemreTyhAzWF/+49a4erll1JZmH56Mxid+4iXlAiEAj0HekeeW/DgMMnkGAIVS0kLclGK2qIfov96OW5246Wo="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.3.2_1598891273976_0.5565729997659339"},"_hasShrinkwrap":false},"2.4.0-beta.1":{"name":"better-docs","version":"2.4.0-beta.1","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","test:ts":"mocha -r ts-node/register -r tsconfig-paths/register src/**/*.spec.ts","build":"babel src/components --out-dir lib/components","build:ts":"tsc","build:css":"yarn run gulp build","build:all":"yarn build:css && yarn build:ts && yarn build","check:all":"yarn test && yarn test:ts && yarn build:all","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@semantic-release/git":"^9.0.0","@types/mocha":"^8.0.3","@typescript-eslint/eslint-plugin":"^2.3.1","@typescript-eslint/parser":"^2.3.1","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-mocha":"^6.2.2","eslint-plugin-react":"^7.12.4","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","husky":"^4.2.5","jsdoc":"^3.6.5","mocha":"^8.1.3","semantic-release":"^17.0.7","semantic-release-slack-bot":"^1.6.2","ts-node":"6.2.0","typescript":"^3.6.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"<img src=\"./readme/logo.png\" />\n\nDocumentation toolbox for your **javascript** / **typescript** projects based on JSDoc3 with **@category**, **@component** and **@optional** plugins.\n\nThis is how it looks:\n\n<table>\n  <tr>\n    <td>\n      <a href='./readme/class.png'><img src=\"./readme/class.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/with-mermaid.png'><img src=\"./readme/with-mermaid.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/component.png'><img src=\"./readme/component.png\" style=\"width: 300px\"/></a>\n    </td>\n  </tr>\n</table>\n\n# Example\n\nExample documentation can be found here: https://softwarebrothers.github.io/example-design-system/index.html\n\n# OpenSource SoftwareBrothers community\n\n- [Join the community](https://join.slack.com/t/adminbro/shared_invite/zt-czfb79t1-0U7pn_KCqd5Ts~lbJK0_RA) to get help and be inspired.\n- subscribe to our [newsletter](http://opensource.softwarebrothers.co)\n\n# Installation\n\n```sh\nnpm install --save-dev better-docs\n```\n\n# Theme Usage\n\n## With command line\n\nAssuming that you have [jsdoc](https://github.com/jsdoc/jsdoc) installed globally:\n\n```\njsdoc your-documented-file.js -t ./node_modules/better-docs\n```\n\n## With npm and configuration file\n\nIn your projects package.json file - add a new script:\n\n```\n\"script\": {\n  \"docs\": \"jsdoc -c jsdoc.json\"\n}\n```\n\nin your `jsdoc.json` file, set the template:\n\n```json\n\"opts\": {\n  \"template\": \"node_modules/better-docs\"\n}\n```\n\n# TypeScript support\n\nbetter-docs has a plugin which allows you to generate documentation from your TypeScript codebase.\n\n## Usage\n\nTo use it update your `jsdoc.json` file\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"optional\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/typescript\"\n],\n\"source\": {\n    \"includePattern\": \"\\\\.(jsx|js|ts|tsx)$\",\n},\n...\n```\n\nAnd now you can run your `jsdoc` command and parse TypeScript files.\n\n## How it works?\n\nIt performs 4 operations:\n\n* First of all it transpiles all .ts and .tsx files to .js, so that all comments used by you are treated\nas a regular JSDoc comments.\n\nFurthermore it:\n\n* Converts all your commented `type` aliases to `@typedef`\n* Converts all your commented `interface` definitions to `@interface`,\n* Converts descriptions for your public, protected, static class members\n\nso they can be printed by JSDoc automatically.\n\n## Examples\n\n```\n/**\n * ActionRequest\n * @memberof Action\n * @alias ActionRequest\n */\nexport type ActionRequest = {\n  /**\n   * parameters passed in an URL\n   */\n  params: {\n    /**\n     * Id of current resource\n     */\n    resourceId: string;\n    /**\n     * Id of current record\n     */\n    recordId?: string;\n    /**\n     * Name of an action\n     */\n    action: string;\n\n    [key: string]: any;\n  };\n}\n```\n\nis converted to:\n\n```\n/**\n * ActionRequest'\n * @memberof Action'\n * @alias ActionRequest'\n * @typedef {object} ActionRequest'\n * @property {object} params   parameters passed in an URL'\n * @property {string} params.resourceId   Id of current resource'\n * @property {string} [params.recordId]   Id of current record'\n * @property {string} params.action   Name of an action'\n * @property {any} params.{...}'\n */\n```\n\nAlso you can comment the interface in a similar fashion:\n\n```\n/**\n * JSON representation of an {@link Action}\n * @see Action\n */\nexport default interface ActionJSON {\n  /**\n   * Unique action name\n   */\n  name: string;\n  /**\n   * Type of an action\n   */\n  actionType: 'record' | 'resource' | Array<'record' | 'resource'>;\n  /**\n   * Action icon\n   */\n  icon?: string;\n  /**\n   * Action label - visible on the frontend\n   */\n  label: string;\n  /**\n   * Guarding message\n   */\n  guard?: string;\n  /**\n   * If action should have a filter (for resource actions)\n   */\n  showFilter: boolean;\n  /**\n   * Action component. When set to false action will be invoked immediately after clicking it,\n   * to put in another words: there wont be an action view\n   */\n  component?: string | false | null;\n}\n```\n\nor describe your class properties like that:\n\n```\n/**\n * Class name\n */\nclass ClassName {\n  /**\n   * Some private member which WONT be in jsdoc (because it is private)\n   */\n  private name: string\n\n  /**\n   * Some protected member which will go to the docs\n   */\n  protected somethingIsA: number\n\n  /**\n   * And static member which will goes to the docs.\n   */\n  static someStaticMember: number\n\n  public notCommentedWontBeInJSDoc: string\n\n  constructor(color: string) {}\n}\n```\n\n# @category plugin\n\nbetter-docs also allows you to nest your documentation into categories and subcategories in the sidebar menu.\n\n## Usage\n\nTo add a plugin - update `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"category\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/category\"\n],\n...\n```\n\nand then you can use `@category` and/or `@subcategory` tag in your code:\n\n```\n/**\n * Class description\n * @category Category\n * @subcategory All\n */\nclass YourClass {\n  ....\n}\n```\n\n# @component plugin [BETA]\n\nBetter-docs also allows you to document your [React](https://reactjs.org/) and [Vue](https://vuejs.org/) components automatically. The only thing you have to do is to add a `@component` tag. It will take all props from your components and along with an `@example` tag - will generate a __live preview__.\n\n## Installation instructions\n\nSimilar as before to add a plugin - you have to update the `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"component\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/component\"\n],\n...\n```\n\nSince __component__ plugin uses [parcel](https://parceljs.org) as a bundler you have to install it globally. To do this run:\n\n```\n# if you use npm\nnpm install -g parcel-bundler\n\n# or yarn\nyarn global add parcel-bundler\n```\n\n## Usage\n\nTo document components simply add `@component` in your JSDoc documentation:\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n */\nconst Documented = (props) => {\n  const { text } = props\n  return (\n    <div>{text}</div>\n  )\n}\n\nDocumented.propTypes = {\n  /**\n   * Text is a text\n   */\n  text: PropTypes.string.isRequired,\n}\n\nexport default Documented\n```\n\nThe plugin will take the information from your [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) and put them into an array.\n\nFor Vue it looks similar:\n\n```vue\n<script>\n/**\n * @component\n */\nexport default {\n  name: 'ExampleComponent',\n  props: {\n    spent: {\n      type: Number,\n      default: 30,\n    },\n    remaining: {\n      type: Number,\n      default: 40,\n    }\n  },\n}\n</script>\n```\n\nIn this case, props will be taken from `props` property.\n\n## Preview\n\n`@component` plugin also modifies the behaviour of `@example` tag in a way that it can generate an actual __component preview__. What you have to do is to add an `@example` tag and return component from it:\n\n**React example:**\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n * @example\n * const text = 'some example text'\n * return (\n *   <Documented text={text} />\n * )\n */\nconst Documented = (props) => {\n  ///...\n}\n```\n\n**Vue example 1:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * <ExampleComponent :spent=\"100\" :remaining=\"50\"></ExampleComponent>\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\n**Vue example 2:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * {\n *   template: `<Box>\n *     <ProgressBar :spent=\"spent\" :remaining=\"50\"></ProgressBar>\n *     <ProgressBar :spent=\"50\" :remaining=\"50\" style=\"margin-top: 20px\"></ProgressBar>\n *   </Box>`,\n *   data: function() {\n *     return {spent: 223};\n *   }\n * }\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\nYou can put as many `@example` tags as you like in one component and \"caption\" each of them like this:\n\n```javascript\n/**\n * @component\n * @example <caption>Example usage of method1.</caption>\n * // your example here\n */\n```\n\n## Mixing components in preview\n\nAlso you can use multiple components which are documented with `@component` tag together. So lets say you have 2 components and in the second component you want to use the first one as a wrapper like this:\n\n```javascript\n// component-1.js\n/**\n * Component 1\n * @component\n *\n */\nconst Component1 = (props) => {...}\n\n// component-2.js\n/**\n * Component 2\n * @component\n * @example\n * return (\n *   <Component1>\n *     <Component2 prop1={'some value'}/>\n *     <Component2 prop1={'some other value'}/>\n *   </Component1>\n * )\n */\nconst Component2 = (props) => {...}\n```\n\n## Wrapper component [only React]\n\nMost probably your components will have to be run within a particular context, like within redux store provider or with custom CSS libraries.\nYou can simulate this by passing a `component.wrapper` in your `jsdoc.json`:\n_(To read more about passing options - scroll down to __Customization__ section)_\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n              \"wrapper\": \"./path/to/your/wrapper-component.js\",\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\nWrapper component can look like this:\n\n```javascript\n// wrapper-component.js\nimport React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\n\nconst store = createStore(() => ({}), {})\n\nconst Component = (props) => {\n  return (\n    <React.Fragment>\n      <head>\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.css\" />\n      </head>\n      <Provider store={store}>\n        <BrowserRouter>\n          {props.children}\n        </BrowserRouter>\n      </Provider>\n    </React.Fragment>\n  )\n}\n\nexport default Component\n```\n\n## Styling React examples\n\nBetter-docs inserts all examples within an `iframe`. This results in the following styling options:\n\n1. If you pass styles inline - they will work right away.\n\n2. For `css modules` to work with `parcel` bundler - you have to install `postcss-modules` package:\n\n```\nyarn add postcss-modules\n```\n\nand create a `.postcssrc` file:\n\n\n```json\n// .postcssrc\n{\n\t\"modules\": true\n}\n```\n\n3. For [styled-components](https://www.styled-components.com/) you have to use wrapper component which looks like this:\n\n```jsx\nimport React from 'react'\nimport { StyleSheetManager } from 'styled-components'\n\nconst Component = (props) => {\n  const { frameContext } = props\n  return (\n    <StyleSheetManager target={frameContext.document.head}>\n      {props.children}\n    </StyleSheetManager>\n  )\n}\n\nexport default Component\n```\n\n## Adding commands to bundle entry file\n\n`@component` plugin creates an entry file: `.entry.js` in your _docs_ output folder. Sometimes you might want to add something to it. You can do this by passing: `component.entry` option, which is an array of strings.\n\nSo let's say you want to add `babel-polyfill` and 'bulma.css' framework to your bundle. You can do it like this:\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n                \"entry\": [\n                    \"import 'babel-polyfill';\",\n                    \"import 'bulma/css/bulma.css';\"\n                ]\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\n# Customization\n\nFirst of all, let me state that better-docs extends the `default` template. That is why default template parameters are also handled.\n\n[BETA]: You must explicitly set the `search` option of the `default` template to `true` to enable search\n\nTo customize the better-docs pass `options` to `templates['better-docs']`. section in your `jsdoc configuration file`.\n\nExample configuration file with settings for both `default` and `better-docs` templates:\n\n```json\n{\n    \"tags\": {\n        \"allowUnknownTags\": [\"category\"]\n    },\n    \"source\": {\n        \"include\": [\"./src\"],\n        \"includePattern\": \".js$\",\n        \"excludePattern\": \"(node_modules/|docs)\"\n    },\n    \"plugins\": [\n        \"plugins/markdown\",\n        \"jsdoc-mermaid\",\n        \"node_modules/better-docs/category\"\n    ],\n    \"opts\": {\n        \"encoding\": \"utf8\",\n        \"destination\": \"docs/\",\n        \"readme\": \"readme.md\",\n        \"recurse\": true,\n        \"verbose\": true,\n        \"tutorials\": \"./docs-src/tutorials\",\n        \"template\": \"better-docs\"\n    },\n    \"templates\": {\n        \"cleverLinks\": false,\n        \"monospaceLinks\": false,\n        \"search\": true,\n        \"default\": {\n            \"staticFiles\": {\n              \"include\": [\n                  \"./docs-src/statics\"\n              ]\n            }\n        },\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"logo\": \"images/logo.png\",\n            \"title\": \"\", // HTML title\n            \"css\": \"style.css\",\n            \"trackingCode\": \"tracking-code-which-will-go-to-the-HEAD\",\n\t    \"hideGenerator\": false,\n            \"navLinks\": [\n                {\n                    \"label\": \"Github\",\n                    \"href\": \"https://github.com/SoftwareBrothers/admin-bro\"\n                },\n                {\n                    \"label\": \"Example Application\",\n                    \"href\": \"https://admin-bro-example-app.herokuapp.com/admin\"\n                }\n            ]\n        }\n    }\n}\n```\n\n## Extras\n\n### typedef(import(...))\n\nbetter-docs also has one extra plugin for handling typescript'like types imports like (it has to be one-liner):\n\n```\n/** @typedef {import('./some-other-file').ExportedType} ExportedType */\n```\n\nIt simply removes that from the code so JSDoc wont throw an error. In order to use it add this plugin to your plugins section:\n\n```\n  \"plugins\": [\n        \"node_modules/better-docs/typedef-import\"\n    ],\n```\n\n# Setting up for the development\n\nIf you want to change the theme locally follow the steps:\n\n1. Clone the repo to the folder where you have the project:\n\n```\ncd your-project\ngit clone git@github.com:SoftwareBrothers/better-docs.git\n```\n\nor add it as a git submodule:\n\n```\ngit submodule add git@github.com:SoftwareBrothers/better-docs.git\n```\n\n2. Install the packages\n\n```\ncd better-docs\n\nnpm install\n\n# or\n\nyarn\n```\n\n3. Within the better-docs folder run the gulp script. It will regenerate documentation every time you change something.\n\nIt supports following EVN variables:\n\n* `DOCS_COMMAND` - a command in your root repo which you use to generate documentation: i.e. `DOCS_COMMAND='jsdoc -c jsdoc.json'` or `npm run docs` if you have `docs` command defined in `package.json` file\n* `DOCS_OUTPUT` - where your documentation is generated. It should point to the same folder your jsdoc `--destination` conf. But make sure that it is relative to the path where you cloned `better-docs`.\n* `DOCS` - list of folders from your original repo what you want to watch for changes. Separated by comma.\n\n```\ncd better-docs\nDOCS_COMMAND='npm run docs' DOCS=../src/**/*,../config/**/* DOCS_OUTPUT=../docs cd better-docs && gulp\n```\n\nThe script should launch the browser and refresh it whenever you change something in the template or in `DOCS`.\n\n# Setting up the jsdoc in your project\n\nIf you want to see how to setup jsdoc in your project - take a look at these brief tutorials:\n\n- JSDoc - https://www.youtube.com/watch?v=Yl6WARA3IhQ\n- better-docs and Mermaid: https://www.youtube.com/watch?v=UBMYogTzsBk\n\n# License\n\nbetter-docs is Copyright © 2019 SoftwareBrothers.co. It is free software and may be redistributed under the terms specified in the [LICENSE](LICENSE) file - MIT.\n\n# About SoftwareBrothers.co\n\n<img src=\"https://softwarebrothers.co/assets/images/software-brothers-logo-full.svg\" width=240>\n\n\nWe're an open, friendly team that helps clients from all over the world to transform their businesses and create astonishing products.\n\n* We are available for [hire](https://softwarebrothers.co/contact).\n* If you want to work for us - check out the [career page](https://softwarebrothers.co/career).\n","readmeFilename":"README.md","gitHead":"225529a8f33047801aaf20ed8de8fc2c7ccd478f","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.4.0-beta.1","_nodeVersion":"10.22.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-6bfH31wOIeU9y5Ir8Vv1R+eCzIi7Lwdomcx96tsVFqYMAWX/Vgr1tjOS2purFSEDuGXiPKYlepv/vhgxtFOhdA==","shasum":"d75a17c05a749fe4606145283e44d5071c486e29","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.4.0-beta.1.tgz","fileCount":137,"unpackedSize":860078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVeEUCRA9TVsSAnZWagAAGWsP/izvzBU9f6OQCSovR1oI\nfVW/S0BoXYPn7nPbuI7edg0zkSzQid0uMGe3WFLhemmu+mlt4oE2NRZEO32F\n4Cizenk9vjYvCCI+T5jbQVLfkek6DSIVRdcHXtKkB1Mw1J3guMvsuVsrCHHj\nXdYEq7UFzRw1ikYb6HLRfvbwTZjV7+0/PZDnT6CLZG2jJwe9xT2GWfM9VB1i\nxlksHFkoNxi182YgsuAOKbiqrYwOrTw8SqY4ffXzf8NVgeD9IVOY2q344a+J\n8UFpo7Cgzn3ia55y/2b7eEx+KSEq5t9crUM6CnD60CQPel+u6ZIZ8bUPSDya\nqpxhIMWXMYM6/xuGfkbJ609kqr0/FoYTKuLzWAaHZHH8QicBbYqQbkrhGsyw\ng+qeInuoNdYFtJMP1QjNc0OWOfrop+Z1v8ulBTnWq34bbmDBkQFWpeCdlOJp\nRC7gQkF1bmAGkZqOI/iJfUHRsFQmgZQoSYlmbK8lEoKbD/OWrks2wIa0OhjU\ngrLAlYOQ2L/MqeKMLUWtuEhlEdVwT5kXOkTVxfo7OfbtZxpcRd3+j59VleFx\nUxhaw1nsXo3uF/WStUMuC5ZR0ZviYRbXeci1cFNEK/1tS8MbCexzztvzr3+Q\nQUoQQQQMMhNnaeXV2KCiQjuyFs4AwkmJ0NdeYPID++/QgKCFD236yR+LYyh9\n0nL6\r\n=2fUS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCY3SLAG62XwOs1dQc2xbMm50VGq6k0DblgNXD10iV3TgIhAOFNcEgpWnsBORBGQd5lzVqmqWM+pTxvGZ6kxMAliB2h"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.4.0-beta.1_1599463700344_0.4887225377611828"},"_hasShrinkwrap":false},"2.4.0-beta.2":{"name":"better-docs","version":"2.4.0-beta.2","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","test:ts":"mocha -r ts-node/register -r tsconfig-paths/register src/**/*.spec.ts","build":"babel src/components --out-dir lib/components","build:ts":"tsc","build:css":"yarn run gulp build","build:all":"yarn build:css && yarn build:ts && yarn build","check:all":"yarn test && yarn test:ts && yarn build:all","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@semantic-release/git":"^9.0.0","@types/mocha":"^8.0.3","@typescript-eslint/eslint-plugin":"^2.3.1","@typescript-eslint/parser":"^2.3.1","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-mocha":"^6.2.2","eslint-plugin-react":"^7.12.4","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","husky":"^4.2.5","jsdoc":"^3.6.5","mocha":"^8.1.3","semantic-release":"^17.0.7","semantic-release-slack-bot":"^1.6.2","ts-node":"6.2.0","typescript":"^3.6.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"<img src=\"./readme/logo.png\" />\n\nDocumentation toolbox for your **javascript** / **typescript** projects based on JSDoc3 with **@category**, **@component** and **@optional** plugins.\n\nThis is how it looks:\n\n<table>\n  <tr>\n    <td>\n      <a href='./readme/class.png'><img src=\"./readme/class.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/with-mermaid.png'><img src=\"./readme/with-mermaid.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/component.png'><img src=\"./readme/component.png\" style=\"width: 300px\"/></a>\n    </td>\n  </tr>\n</table>\n\n# Example\n\nExample documentation can be found here: https://softwarebrothers.github.io/example-design-system/index.html\n\n# OpenSource SoftwareBrothers community\n\n- [Join the community](https://join.slack.com/t/adminbro/shared_invite/zt-czfb79t1-0U7pn_KCqd5Ts~lbJK0_RA) to get help and be inspired.\n- subscribe to our [newsletter](http://opensource.softwarebrothers.co)\n\n# Installation\n\n```sh\nnpm install --save-dev better-docs\n```\n\n# Theme Usage\n\n## With command line\n\nAssuming that you have [jsdoc](https://github.com/jsdoc/jsdoc) installed globally:\n\n```\njsdoc your-documented-file.js -t ./node_modules/better-docs\n```\n\n## With npm and configuration file\n\nIn your projects package.json file - add a new script:\n\n```\n\"script\": {\n  \"docs\": \"jsdoc -c jsdoc.json\"\n}\n```\n\nin your `jsdoc.json` file, set the template:\n\n```json\n\"opts\": {\n  \"template\": \"node_modules/better-docs\"\n}\n```\n\n# TypeScript support\n\nbetter-docs has a plugin which allows you to generate documentation from your TypeScript codebase.\n\n## Usage\n\nTo use it update your `jsdoc.json` file\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"optional\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/typescript\"\n],\n\"source\": {\n    \"includePattern\": \"\\\\.(jsx|js|ts|tsx)$\",\n},\n...\n```\n\nAnd now you can run your `jsdoc` command and parse TypeScript files.\n\n## How it works?\n\nIt performs 4 operations:\n\n* First of all it transpiles all .ts and .tsx files to .js, so that all comments used by you are treated\nas a regular JSDoc comments.\n\nFurthermore it:\n\n* Converts all your commented `type` aliases to `@typedef`\n* Converts all your commented `interface` definitions to `@interface`,\n* Converts descriptions for your public, protected, static class members\n\nso they can be printed by JSDoc automatically.\n\n## Examples\n\n```\n/**\n * ActionRequest\n * @memberof Action\n * @alias ActionRequest\n */\nexport type ActionRequest = {\n  /**\n   * parameters passed in an URL\n   */\n  params: {\n    /**\n     * Id of current resource\n     */\n    resourceId: string;\n    /**\n     * Id of current record\n     */\n    recordId?: string;\n    /**\n     * Name of an action\n     */\n    action: string;\n\n    [key: string]: any;\n  };\n}\n```\n\nis converted to:\n\n```\n/**\n * ActionRequest'\n * @memberof Action'\n * @alias ActionRequest'\n * @typedef {object} ActionRequest'\n * @property {object} params   parameters passed in an URL'\n * @property {string} params.resourceId   Id of current resource'\n * @property {string} [params.recordId]   Id of current record'\n * @property {string} params.action   Name of an action'\n * @property {any} params.{...}'\n */\n```\n\nAlso you can comment the interface in a similar fashion:\n\n```\n/**\n * JSON representation of an {@link Action}\n * @see Action\n */\nexport default interface ActionJSON {\n  /**\n   * Unique action name\n   */\n  name: string;\n  /**\n   * Type of an action\n   */\n  actionType: 'record' | 'resource' | Array<'record' | 'resource'>;\n  /**\n   * Action icon\n   */\n  icon?: string;\n  /**\n   * Action label - visible on the frontend\n   */\n  label: string;\n  /**\n   * Guarding message\n   */\n  guard?: string;\n  /**\n   * If action should have a filter (for resource actions)\n   */\n  showFilter: boolean;\n  /**\n   * Action component. When set to false action will be invoked immediately after clicking it,\n   * to put in another words: there wont be an action view\n   */\n  component?: string | false | null;\n}\n```\n\nor describe your class properties like that:\n\n```\n/**\n * Class name\n */\nclass ClassName {\n  /**\n   * Some private member which WONT be in jsdoc (because it is private)\n   */\n  private name: string\n\n  /**\n   * Some protected member which will go to the docs\n   */\n  protected somethingIsA: number\n\n  /**\n   * And static member which will goes to the docs.\n   */\n  static someStaticMember: number\n\n  public notCommentedWontBeInJSDoc: string\n\n  constructor(color: string) {}\n}\n```\n\n# @category plugin\n\nbetter-docs also allows you to nest your documentation into categories and subcategories in the sidebar menu.\n\n## Usage\n\nTo add a plugin - update `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"category\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/category\"\n],\n...\n```\n\nand then you can use `@category` and/or `@subcategory` tag in your code:\n\n```\n/**\n * Class description\n * @category Category\n * @subcategory All\n */\nclass YourClass {\n  ....\n}\n```\n\n# @component plugin [BETA]\n\nBetter-docs also allows you to document your [React](https://reactjs.org/) and [Vue](https://vuejs.org/) components automatically. The only thing you have to do is to add a `@component` tag. It will take all props from your components and along with an `@example` tag - will generate a __live preview__.\n\n## Installation instructions\n\nSimilar as before to add a plugin - you have to update the `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"component\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/component\"\n],\n...\n```\n\nSince __component__ plugin uses [parcel](https://parceljs.org) as a bundler you have to install it globally. To do this run:\n\n```\n# if you use npm\nnpm install -g parcel-bundler\n\n# or yarn\nyarn global add parcel-bundler\n```\n\n## Usage\n\nTo document components simply add `@component` in your JSDoc documentation:\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n */\nconst Documented = (props) => {\n  const { text } = props\n  return (\n    <div>{text}</div>\n  )\n}\n\nDocumented.propTypes = {\n  /**\n   * Text is a text\n   */\n  text: PropTypes.string.isRequired,\n}\n\nexport default Documented\n```\n\nThe plugin will take the information from your [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) and put them into an array.\n\nFor Vue it looks similar:\n\n```vue\n<script>\n/**\n * @component\n */\nexport default {\n  name: 'ExampleComponent',\n  props: {\n    spent: {\n      type: Number,\n      default: 30,\n    },\n    remaining: {\n      type: Number,\n      default: 40,\n    }\n  },\n}\n</script>\n```\n\nIn this case, props will be taken from `props` property.\n\n## Preview\n\n`@component` plugin also modifies the behaviour of `@example` tag in a way that it can generate an actual __component preview__. What you have to do is to add an `@example` tag and return component from it:\n\n**React example:**\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n * @example\n * const text = 'some example text'\n * return (\n *   <Documented text={text} />\n * )\n */\nconst Documented = (props) => {\n  ///...\n}\n```\n\n**Vue example 1:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * <ExampleComponent :spent=\"100\" :remaining=\"50\"></ExampleComponent>\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\n**Vue example 2:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * {\n *   template: `<Box>\n *     <ProgressBar :spent=\"spent\" :remaining=\"50\"></ProgressBar>\n *     <ProgressBar :spent=\"50\" :remaining=\"50\" style=\"margin-top: 20px\"></ProgressBar>\n *   </Box>`,\n *   data: function() {\n *     return {spent: 223};\n *   }\n * }\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\nYou can put as many `@example` tags as you like in one component and \"caption\" each of them like this:\n\n```javascript\n/**\n * @component\n * @example <caption>Example usage of method1.</caption>\n * // your example here\n */\n```\n\n## Mixing components in preview\n\nAlso you can use multiple components which are documented with `@component` tag together. So lets say you have 2 components and in the second component you want to use the first one as a wrapper like this:\n\n```javascript\n// component-1.js\n/**\n * Component 1\n * @component\n *\n */\nconst Component1 = (props) => {...}\n\n// component-2.js\n/**\n * Component 2\n * @component\n * @example\n * return (\n *   <Component1>\n *     <Component2 prop1={'some value'}/>\n *     <Component2 prop1={'some other value'}/>\n *   </Component1>\n * )\n */\nconst Component2 = (props) => {...}\n```\n\n## Wrapper component [only React]\n\nMost probably your components will have to be run within a particular context, like within redux store provider or with custom CSS libraries.\nYou can simulate this by passing a `component.wrapper` in your `jsdoc.json`:\n_(To read more about passing options - scroll down to __Customization__ section)_\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n              \"wrapper\": \"./path/to/your/wrapper-component.js\",\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\nWrapper component can look like this:\n\n```javascript\n// wrapper-component.js\nimport React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\n\nconst store = createStore(() => ({}), {})\n\nconst Component = (props) => {\n  return (\n    <React.Fragment>\n      <head>\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.css\" />\n      </head>\n      <Provider store={store}>\n        <BrowserRouter>\n          {props.children}\n        </BrowserRouter>\n      </Provider>\n    </React.Fragment>\n  )\n}\n\nexport default Component\n```\n\n## Styling React examples\n\nBetter-docs inserts all examples within an `iframe`. This results in the following styling options:\n\n1. If you pass styles inline - they will work right away.\n\n2. For `css modules` to work with `parcel` bundler - you have to install `postcss-modules` package:\n\n```\nyarn add postcss-modules\n```\n\nand create a `.postcssrc` file:\n\n\n```json\n// .postcssrc\n{\n\t\"modules\": true\n}\n```\n\n3. For [styled-components](https://www.styled-components.com/) you have to use wrapper component which looks like this:\n\n```jsx\nimport React from 'react'\nimport { StyleSheetManager } from 'styled-components'\n\nconst Component = (props) => {\n  const { frameContext } = props\n  return (\n    <StyleSheetManager target={frameContext.document.head}>\n      {props.children}\n    </StyleSheetManager>\n  )\n}\n\nexport default Component\n```\n\n## Adding commands to bundle entry file\n\n`@component` plugin creates an entry file: `.entry.js` in your _docs_ output folder. Sometimes you might want to add something to it. You can do this by passing: `component.entry` option, which is an array of strings.\n\nSo let's say you want to add `babel-polyfill` and 'bulma.css' framework to your bundle. You can do it like this:\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n                \"entry\": [\n                    \"import 'babel-polyfill';\",\n                    \"import 'bulma/css/bulma.css';\"\n                ]\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\n# Customization\n\nFirst of all, let me state that better-docs extends the `default` template. That is why default template parameters are also handled.\n\n[BETA]: You must explicitly set the `search` option of the `default` template to `true` to enable search\n\nTo customize the better-docs pass `options` to `templates['better-docs']`. section in your `jsdoc configuration file`.\n\nExample configuration file with settings for both `default` and `better-docs` templates:\n\n```json\n{\n    \"tags\": {\n        \"allowUnknownTags\": [\"category\"]\n    },\n    \"source\": {\n        \"include\": [\"./src\"],\n        \"includePattern\": \".js$\",\n        \"excludePattern\": \"(node_modules/|docs)\"\n    },\n    \"plugins\": [\n        \"plugins/markdown\",\n        \"jsdoc-mermaid\",\n        \"node_modules/better-docs/category\"\n    ],\n    \"opts\": {\n        \"encoding\": \"utf8\",\n        \"destination\": \"docs/\",\n        \"readme\": \"readme.md\",\n        \"recurse\": true,\n        \"verbose\": true,\n        \"tutorials\": \"./docs-src/tutorials\",\n        \"template\": \"better-docs\"\n    },\n    \"templates\": {\n        \"cleverLinks\": false,\n        \"monospaceLinks\": false,\n        \"search\": true,\n        \"default\": {\n            \"staticFiles\": {\n              \"include\": [\n                  \"./docs-src/statics\"\n              ]\n            }\n        },\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"logo\": \"images/logo.png\",\n            \"title\": \"\", // HTML title\n            \"css\": \"style.css\",\n            \"trackingCode\": \"tracking-code-which-will-go-to-the-HEAD\",\n\t    \"hideGenerator\": false,\n            \"navLinks\": [\n                {\n                    \"label\": \"Github\",\n                    \"href\": \"https://github.com/SoftwareBrothers/admin-bro\"\n                },\n                {\n                    \"label\": \"Example Application\",\n                    \"href\": \"https://admin-bro-example-app.herokuapp.com/admin\"\n                }\n            ]\n        }\n    }\n}\n```\n\n## Extras\n\n### typedef(import(...))\n\nbetter-docs also has one extra plugin for handling typescript'like types imports like (it has to be one-liner):\n\n```\n/** @typedef {import('./some-other-file').ExportedType} ExportedType */\n```\n\nIt simply removes that from the code so JSDoc wont throw an error. In order to use it add this plugin to your plugins section:\n\n```\n  \"plugins\": [\n        \"node_modules/better-docs/typedef-import\"\n    ],\n```\n\n# Setting up for the development\n\nIf you want to change the theme locally follow the steps:\n\n1. Clone the repo to the folder where you have the project:\n\n```\ncd your-project\ngit clone git@github.com:SoftwareBrothers/better-docs.git\n```\n\nor add it as a git submodule:\n\n```\ngit submodule add git@github.com:SoftwareBrothers/better-docs.git\n```\n\n2. Install the packages\n\n```\ncd better-docs\n\nnpm install\n\n# or\n\nyarn\n```\n\n3. Within the better-docs folder run the gulp script. It will regenerate documentation every time you change something.\n\nIt supports following EVN variables:\n\n* `DOCS_COMMAND` - a command in your root repo which you use to generate documentation: i.e. `DOCS_COMMAND='jsdoc -c jsdoc.json'` or `npm run docs` if you have `docs` command defined in `package.json` file\n* `DOCS_OUTPUT` - where your documentation is generated. It should point to the same folder your jsdoc `--destination` conf. But make sure that it is relative to the path where you cloned `better-docs`.\n* `DOCS` - list of folders from your original repo what you want to watch for changes. Separated by comma.\n\n```\ncd better-docs\nDOCS_COMMAND='npm run docs' DOCS=../src/**/*,../config/**/* DOCS_OUTPUT=../docs cd better-docs && gulp\n```\n\nThe script should launch the browser and refresh it whenever you change something in the template or in `DOCS`.\n\n# Setting up the jsdoc in your project\n\nIf you want to see how to setup jsdoc in your project - take a look at these brief tutorials:\n\n- JSDoc - https://www.youtube.com/watch?v=Yl6WARA3IhQ\n- better-docs and Mermaid: https://www.youtube.com/watch?v=UBMYogTzsBk\n\n# License\n\nbetter-docs is Copyright © 2019 SoftwareBrothers.co. It is free software and may be redistributed under the terms specified in the [LICENSE](LICENSE) file - MIT.\n\n# About SoftwareBrothers.co\n\n<img src=\"https://softwarebrothers.co/assets/images/software-brothers-logo-full.svg\" width=240>\n\n\nWe're an open, friendly team that helps clients from all over the world to transform their businesses and create astonishing products.\n\n* We are available for [hire](https://softwarebrothers.co/contact).\n* If you want to work for us - check out the [career page](https://softwarebrothers.co/career).\n","readmeFilename":"README.md","gitHead":"2f65d9589dcdb1125f9635ef8ab51599da88ee29","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.4.0-beta.2","_nodeVersion":"10.22.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-9DbL6sazSpsjD2J9imZzkamVFcKsfav8kGqtD9ZGir4+Yz4YIcQ62/XXyqr5ow67xBKiaRideYFAkEBCBqE8BQ==","shasum":"e4ada7e6b18bc83cf1ed74aa64eca0a0e07e2cd3","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.4.0-beta.2.tgz","fileCount":137,"unpackedSize":861151,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVexCCRA9TVsSAnZWagAAI18P/2kMDO/qgtFjB9s/hKG2\ncBAwEfF3gH0+TMDZ7Y4rTjrWDpbvtjGj9JICXZTJb6rPvRr8w8GMoL8jGJuN\nhv87SAkzm/IBTRFmggMti1gHK7QWaJr9RvXAd0oaOWHPhDni1IjJJXQYKYu7\n5+WtV5003uulTWRxQlLCmLNZzxyCcBckqjOwy8nicJE3lGlnRnnuAgYykuVZ\nDUEbelMmGrQcV2Ib8TgZ6XuyrJaogMj+QSRM8Yavvo2jKH/eS5d8lbMool08\nt3V7J7U9dPXXWKSLMsbcwb4xgIS/6VsS6Tgp6t5yzbkDXXsTadTlLXO0MFkZ\nzA3K3d8Txa+f3hX3NUHcQ+J0lr991n4PWFpH7Kjy7LxY9SMmKPb68mvC8egW\nwr1SyjpdX26cyKWyGixQV7aqGHGD2e/tHLdlcPyB6SP6hctPbRlktetfyj4C\nyjwL3pxrjnSNkEv6r6f14ka1F4FO+Ph+uTuGL3/4LYnJH73DliAlX4RfWdbb\nu0kdE89fnkpyJHnKJWSrjDr2sLBz/H713rTmflGZvRekh5Prr56wS+GDZ8CO\nNfiy4kV/dl0D/MCoiG2IelBXpPu83+9l3oOo74iXSPfGWlkHkQme31LS6JEm\n7iofcioMRx5D1cNmB0uAqfk6vU7IsGyabj8a89XZQqNRsI1uEbQzJFE3+tEu\n/3+K\r\n=tYcG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDD9J0/h3Dc+lkcJAj+bg01avLvXsQkVotJymer7LXvAAIhAKdzoBmNNG5Rs6SCeC5Ymt7iCsMLJ5an2AvzuJcouR/t"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.4.0-beta.2_1599466561486_0.6209515602442501"},"_hasShrinkwrap":false},"2.4.0-beta.3":{"name":"better-docs","version":"2.4.0-beta.3","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","test:ts":"mocha -r ts-node/register -r tsconfig-paths/register src/**/*.spec.ts","build":"babel src/components --out-dir lib/components","build:ts":"tsc","build:css":"yarn run gulp build","build:all":"yarn build:css && yarn build:ts && yarn build","check:all":"yarn test && yarn test:ts && yarn build:all","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@semantic-release/git":"^9.0.0","@types/mocha":"^8.0.3","@typescript-eslint/eslint-plugin":"^2.3.1","@typescript-eslint/parser":"^2.3.1","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-mocha":"^6.2.2","eslint-plugin-react":"^7.12.4","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","husky":"^4.2.5","jsdoc":"^3.6.5","mocha":"^8.1.3","semantic-release":"^17.0.7","semantic-release-slack-bot":"^1.6.2","ts-node":"6.2.0","typescript":"^3.6.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"<img src=\"./readme/logo.png\" />\n\nDocumentation toolbox for your **javascript** / **typescript** projects based on JSDoc3 with **@category**, **@component** and **@optional** plugins.\n\nThis is how it looks:\n\n<table>\n  <tr>\n    <td>\n      <a href='./readme/class.png'><img src=\"./readme/class.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/with-mermaid.png'><img src=\"./readme/with-mermaid.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/component.png'><img src=\"./readme/component.png\" style=\"width: 300px\"/></a>\n    </td>\n  </tr>\n</table>\n\n# Example\n\nExample documentation can be found here: https://softwarebrothers.github.io/example-design-system/index.html\n\n# OpenSource SoftwareBrothers community\n\n- [Join the community](https://join.slack.com/t/adminbro/shared_invite/zt-czfb79t1-0U7pn_KCqd5Ts~lbJK0_RA) to get help and be inspired.\n- subscribe to our [newsletter](http://opensource.softwarebrothers.co)\n\n# Installation\n\n```sh\nnpm install --save-dev better-docs\n```\n\n# Theme Usage\n\n## With command line\n\nAssuming that you have [jsdoc](https://github.com/jsdoc/jsdoc) installed globally:\n\n```\njsdoc your-documented-file.js -t ./node_modules/better-docs\n```\n\n## With npm and configuration file\n\nIn your projects package.json file - add a new script:\n\n```\n\"script\": {\n  \"docs\": \"jsdoc -c jsdoc.json\"\n}\n```\n\nin your `jsdoc.json` file, set the template:\n\n```json\n\"opts\": {\n  \"template\": \"node_modules/better-docs\"\n}\n```\n\n# TypeScript support\n\nbetter-docs has a plugin which allows you to generate documentation from your TypeScript codebase.\n\n## Usage\n\nTo use it update your `jsdoc.json` file\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"optional\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/typescript\"\n],\n\"source\": {\n    \"includePattern\": \"\\\\.(jsx|js|ts|tsx)$\",\n},\n...\n```\n\nAnd now you can run your `jsdoc` command and parse TypeScript files.\n\n## How it works?\n\nIt performs 4 operations:\n\n* First of all it transpiles all .ts and .tsx files to .js, so that all comments used by you are treated\nas a regular JSDoc comments.\n\nFurthermore it:\n\n* Converts all your commented `type` aliases to `@typedef`\n* Converts all your commented `interface` definitions to `@interface`,\n* Converts descriptions for your public, protected, static class members\n\nso they can be printed by JSDoc automatically.\n\n## Examples\n\n```\n/**\n * ActionRequest\n * @memberof Action\n * @alias ActionRequest\n */\nexport type ActionRequest = {\n  /**\n   * parameters passed in an URL\n   */\n  params: {\n    /**\n     * Id of current resource\n     */\n    resourceId: string;\n    /**\n     * Id of current record\n     */\n    recordId?: string;\n    /**\n     * Name of an action\n     */\n    action: string;\n\n    [key: string]: any;\n  };\n}\n```\n\nis converted to:\n\n```\n/**\n * ActionRequest'\n * @memberof Action'\n * @alias ActionRequest'\n * @typedef {object} ActionRequest'\n * @property {object} params   parameters passed in an URL'\n * @property {string} params.resourceId   Id of current resource'\n * @property {string} [params.recordId]   Id of current record'\n * @property {string} params.action   Name of an action'\n * @property {any} params.{...}'\n */\n```\n\nAlso you can comment the interface in a similar fashion:\n\n```\n/**\n * JSON representation of an {@link Action}\n * @see Action\n */\nexport default interface ActionJSON {\n  /**\n   * Unique action name\n   */\n  name: string;\n  /**\n   * Type of an action\n   */\n  actionType: 'record' | 'resource' | Array<'record' | 'resource'>;\n  /**\n   * Action icon\n   */\n  icon?: string;\n  /**\n   * Action label - visible on the frontend\n   */\n  label: string;\n  /**\n   * Guarding message\n   */\n  guard?: string;\n  /**\n   * If action should have a filter (for resource actions)\n   */\n  showFilter: boolean;\n  /**\n   * Action component. When set to false action will be invoked immediately after clicking it,\n   * to put in another words: there wont be an action view\n   */\n  component?: string | false | null;\n}\n```\n\nor describe your class properties like that:\n\n```\n/**\n * Class name\n */\nclass ClassName {\n  /**\n   * Some private member which WONT be in jsdoc (because it is private)\n   */\n  private name: string\n\n  /**\n   * Some protected member which will go to the docs\n   */\n  protected somethingIsA: number\n\n  /**\n   * And static member which will goes to the docs.\n   */\n  static someStaticMember: number\n\n  public notCommentedWontBeInJSDoc: string\n\n  constructor(color: string) {}\n}\n```\n\n# @category plugin\n\nbetter-docs also allows you to nest your documentation into categories and subcategories in the sidebar menu.\n\n## Usage\n\nTo add a plugin - update `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"category\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/category\"\n],\n...\n```\n\nand then you can use `@category` and/or `@subcategory` tag in your code:\n\n```\n/**\n * Class description\n * @category Category\n * @subcategory All\n */\nclass YourClass {\n  ....\n}\n```\n\n# @component plugin [BETA]\n\nBetter-docs also allows you to document your [React](https://reactjs.org/) and [Vue](https://vuejs.org/) components automatically. The only thing you have to do is to add a `@component` tag. It will take all props from your components and along with an `@example` tag - will generate a __live preview__.\n\n## Installation instructions\n\nSimilar as before to add a plugin - you have to update the `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"component\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/component\"\n],\n...\n```\n\nSince __component__ plugin uses [parcel](https://parceljs.org) as a bundler you have to install it globally. To do this run:\n\n```\n# if you use npm\nnpm install -g parcel-bundler\n\n# or yarn\nyarn global add parcel-bundler\n```\n\n## Usage\n\nTo document components simply add `@component` in your JSDoc documentation:\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n */\nconst Documented = (props) => {\n  const { text } = props\n  return (\n    <div>{text}</div>\n  )\n}\n\nDocumented.propTypes = {\n  /**\n   * Text is a text\n   */\n  text: PropTypes.string.isRequired,\n}\n\nexport default Documented\n```\n\nThe plugin will take the information from your [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) and put them into an array.\n\nFor Vue it looks similar:\n\n```vue\n<script>\n/**\n * @component\n */\nexport default {\n  name: 'ExampleComponent',\n  props: {\n    spent: {\n      type: Number,\n      default: 30,\n    },\n    remaining: {\n      type: Number,\n      default: 40,\n    }\n  },\n}\n</script>\n```\n\nIn this case, props will be taken from `props` property.\n\n## Preview\n\n`@component` plugin also modifies the behaviour of `@example` tag in a way that it can generate an actual __component preview__. What you have to do is to add an `@example` tag and return component from it:\n\n**React example:**\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n * @example\n * const text = 'some example text'\n * return (\n *   <Documented text={text} />\n * )\n */\nconst Documented = (props) => {\n  ///...\n}\n```\n\n**Vue example 1:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * <ExampleComponent :spent=\"100\" :remaining=\"50\"></ExampleComponent>\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\n**Vue example 2:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * {\n *   template: `<Box>\n *     <ProgressBar :spent=\"spent\" :remaining=\"50\"></ProgressBar>\n *     <ProgressBar :spent=\"50\" :remaining=\"50\" style=\"margin-top: 20px\"></ProgressBar>\n *   </Box>`,\n *   data: function() {\n *     return {spent: 223};\n *   }\n * }\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\nYou can put as many `@example` tags as you like in one component and \"caption\" each of them like this:\n\n```javascript\n/**\n * @component\n * @example <caption>Example usage of method1.</caption>\n * // your example here\n */\n```\n\n## Mixing components in preview\n\nAlso you can use multiple components which are documented with `@component` tag together. So lets say you have 2 components and in the second component you want to use the first one as a wrapper like this:\n\n```javascript\n// component-1.js\n/**\n * Component 1\n * @component\n *\n */\nconst Component1 = (props) => {...}\n\n// component-2.js\n/**\n * Component 2\n * @component\n * @example\n * return (\n *   <Component1>\n *     <Component2 prop1={'some value'}/>\n *     <Component2 prop1={'some other value'}/>\n *   </Component1>\n * )\n */\nconst Component2 = (props) => {...}\n```\n\n## Wrapper component [only React]\n\nMost probably your components will have to be run within a particular context, like within redux store provider or with custom CSS libraries.\nYou can simulate this by passing a `component.wrapper` in your `jsdoc.json`:\n_(To read more about passing options - scroll down to __Customization__ section)_\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n              \"wrapper\": \"./path/to/your/wrapper-component.js\",\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\nWrapper component can look like this:\n\n```javascript\n// wrapper-component.js\nimport React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\n\nconst store = createStore(() => ({}), {})\n\nconst Component = (props) => {\n  return (\n    <React.Fragment>\n      <head>\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.css\" />\n      </head>\n      <Provider store={store}>\n        <BrowserRouter>\n          {props.children}\n        </BrowserRouter>\n      </Provider>\n    </React.Fragment>\n  )\n}\n\nexport default Component\n```\n\n## Styling React examples\n\nBetter-docs inserts all examples within an `iframe`. This results in the following styling options:\n\n1. If you pass styles inline - they will work right away.\n\n2. For `css modules` to work with `parcel` bundler - you have to install `postcss-modules` package:\n\n```\nyarn add postcss-modules\n```\n\nand create a `.postcssrc` file:\n\n\n```json\n// .postcssrc\n{\n\t\"modules\": true\n}\n```\n\n3. For [styled-components](https://www.styled-components.com/) you have to use wrapper component which looks like this:\n\n```jsx\nimport React from 'react'\nimport { StyleSheetManager } from 'styled-components'\n\nconst Component = (props) => {\n  const { frameContext } = props\n  return (\n    <StyleSheetManager target={frameContext.document.head}>\n      {props.children}\n    </StyleSheetManager>\n  )\n}\n\nexport default Component\n```\n\n## Adding commands to bundle entry file\n\n`@component` plugin creates an entry file: `.entry.js` in your _docs_ output folder. Sometimes you might want to add something to it. You can do this by passing: `component.entry` option, which is an array of strings.\n\nSo let's say you want to add `babel-polyfill` and 'bulma.css' framework to your bundle. You can do it like this:\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n                \"entry\": [\n                    \"import 'babel-polyfill';\",\n                    \"import 'bulma/css/bulma.css';\"\n                ]\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\n# Customization\n\nFirst of all, let me state that better-docs extends the `default` template. That is why default template parameters are also handled.\n\n[BETA]: You must explicitly set the `search` option of the `default` template to `true` to enable search\n\nTo customize the better-docs pass `options` to `templates['better-docs']`. section in your `jsdoc configuration file`.\n\nExample configuration file with settings for both `default` and `better-docs` templates:\n\n```json\n{\n    \"tags\": {\n        \"allowUnknownTags\": [\"category\"]\n    },\n    \"source\": {\n        \"include\": [\"./src\"],\n        \"includePattern\": \".js$\",\n        \"excludePattern\": \"(node_modules/|docs)\"\n    },\n    \"plugins\": [\n        \"plugins/markdown\",\n        \"jsdoc-mermaid\",\n        \"node_modules/better-docs/category\"\n    ],\n    \"opts\": {\n        \"encoding\": \"utf8\",\n        \"destination\": \"docs/\",\n        \"readme\": \"readme.md\",\n        \"recurse\": true,\n        \"verbose\": true,\n        \"tutorials\": \"./docs-src/tutorials\",\n        \"template\": \"better-docs\"\n    },\n    \"templates\": {\n        \"cleverLinks\": false,\n        \"monospaceLinks\": false,\n        \"search\": true,\n        \"default\": {\n            \"staticFiles\": {\n              \"include\": [\n                  \"./docs-src/statics\"\n              ]\n            }\n        },\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"logo\": \"images/logo.png\",\n            \"title\": \"\", // HTML title\n            \"css\": \"style.css\",\n            \"trackingCode\": \"tracking-code-which-will-go-to-the-HEAD\",\n\t    \"hideGenerator\": false,\n            \"navLinks\": [\n                {\n                    \"label\": \"Github\",\n                    \"href\": \"https://github.com/SoftwareBrothers/admin-bro\"\n                },\n                {\n                    \"label\": \"Example Application\",\n                    \"href\": \"https://admin-bro-example-app.herokuapp.com/admin\"\n                }\n            ]\n        }\n    }\n}\n```\n\n## Extras\n\n### typedef(import(...))\n\nbetter-docs also has one extra plugin for handling typescript'like types imports like (it has to be one-liner):\n\n```\n/** @typedef {import('./some-other-file').ExportedType} ExportedType */\n```\n\nIt simply removes that from the code so JSDoc wont throw an error. In order to use it add this plugin to your plugins section:\n\n```\n  \"plugins\": [\n        \"node_modules/better-docs/typedef-import\"\n    ],\n```\n\n# Setting up for the development\n\nIf you want to change the theme locally follow the steps:\n\n1. Clone the repo to the folder where you have the project:\n\n```\ncd your-project\ngit clone git@github.com:SoftwareBrothers/better-docs.git\n```\n\nor add it as a git submodule:\n\n```\ngit submodule add git@github.com:SoftwareBrothers/better-docs.git\n```\n\n2. Install the packages\n\n```\ncd better-docs\n\nnpm install\n\n# or\n\nyarn\n```\n\n3. Within the better-docs folder run the gulp script. It will regenerate documentation every time you change something.\n\nIt supports following EVN variables:\n\n* `DOCS_COMMAND` - a command in your root repo which you use to generate documentation: i.e. `DOCS_COMMAND='jsdoc -c jsdoc.json'` or `npm run docs` if you have `docs` command defined in `package.json` file\n* `DOCS_OUTPUT` - where your documentation is generated. It should point to the same folder your jsdoc `--destination` conf. But make sure that it is relative to the path where you cloned `better-docs`.\n* `DOCS` - list of folders from your original repo what you want to watch for changes. Separated by comma.\n\n```\ncd better-docs\nDOCS_COMMAND='npm run docs' DOCS=../src/**/*,../config/**/* DOCS_OUTPUT=../docs cd better-docs && gulp\n```\n\nThe script should launch the browser and refresh it whenever you change something in the template or in `DOCS`.\n\n# Setting up the jsdoc in your project\n\nIf you want to see how to setup jsdoc in your project - take a look at these brief tutorials:\n\n- JSDoc - https://www.youtube.com/watch?v=Yl6WARA3IhQ\n- better-docs and Mermaid: https://www.youtube.com/watch?v=UBMYogTzsBk\n\n# License\n\nbetter-docs is Copyright © 2019 SoftwareBrothers.co. It is free software and may be redistributed under the terms specified in the [LICENSE](LICENSE) file - MIT.\n\n# About SoftwareBrothers.co\n\n<img src=\"https://softwarebrothers.co/assets/images/software-brothers-logo-full.svg\" width=240>\n\n\nWe're an open, friendly team that helps clients from all over the world to transform their businesses and create astonishing products.\n\n* We are available for [hire](https://softwarebrothers.co/contact).\n* If you want to work for us - check out the [career page](https://softwarebrothers.co/career).\n","readmeFilename":"README.md","gitHead":"f32b6675dbe3ddcd523b0c52d7ae73ff2b04962e","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.4.0-beta.3","_nodeVersion":"10.22.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-d07xN85a2YemZJxMvnhGgvGh9ApZjevI5ocCobyqKTn6p+jc/bDX4MLVvr9Zq8o6pWLZFOfpTzsDd5Czn1oD9Q==","shasum":"6fbf48b822f4baf6c106400082256fd619ef2d46","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.4.0-beta.3.tgz","fileCount":137,"unpackedSize":861151,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVfHjCRA9TVsSAnZWagAAnKEP/RZNnEg4HHTWEEBnUcHm\nXFIKiDYDox4XKoWvE09uVfb0Vu0LwRYJTM5F6PYv3wqHPFwuWQ3ieMklC5CU\nY9tyRwgm88iebvI+8FA6UQOzoH1W8pp50bUAsld8Kn1jNOUvV4YKJVJqR29S\nVPdP/E73kMYU0m6PxekWR99rByoIjy6a3rQdWgemQX6tD50XxbuS5qqOnchV\ncjXPCFqGMZMnCSRgfgiczQUkuoLv69DW3qct+QgFbRNZi88yHFCHAi+B0BqP\nx7GtvR4Wl3xSzeBgScTFW8n5XmdTEFrDDYSWZwrF9KLw1kAzMy4BdMn7dVOn\nr/8QOCQZkeI+R79Td9JZswNZnpZo3jQGOnR/SEfpoBqQDfTbGiyXm344FZjz\nXp80FRCWlPXNww0doJRwsNee6DsSuFmrh/aNZkNALGuhZ0jcmRJ3R8bRMCiJ\n3asuqdpZQtXJ9S09d5DApeWmVy0yiY3sBgiT6RERYNIcJVb9duTvbUgEGxZO\n0WKOeriLcpi6/iGqJx9D+fNI8wZeYEddD+/V6Lii+mmk6dLhQ/lJcRz59EsP\n1cmrhqN71tQ8KLOZRp32iJ5OacQuWoXLb4SGDlZNpSvNEnocHN5qIyP8kgEy\nGRGpymT0g7l5qtCPPccGGi3Yah8ux6FlHrOBEbyRGnYhBdILbSvWbdfsJren\nHhNg\r\n=YvsO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGCg1AKH9hoopA91cIP61GpP3x4rvudYmUh8xYayuW+7AiEAseqMWo95PBUiY7YcQGKDKv8SFu8yBTDAuSZ8je7BRYs="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.4.0-beta.3_1599468003000_0.03398977183468177"},"_hasShrinkwrap":false},"2.4.0-beta.4":{"name":"better-docs","version":"2.4.0-beta.4","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","test:ts":"mocha -r ts-node/register -r tsconfig-paths/register src/**/*.spec.ts","build":"babel src/components --out-dir lib/components","build:ts":"tsc","build:css":"yarn run gulp build","build:all":"yarn build:css && yarn build:ts && yarn build","check:all":"yarn test && yarn test:ts && yarn build:all","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@semantic-release/git":"^9.0.0","@types/mocha":"^8.0.3","@typescript-eslint/eslint-plugin":"^2.3.1","@typescript-eslint/parser":"^2.3.1","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-mocha":"^6.2.2","eslint-plugin-react":"^7.12.4","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","husky":"^4.2.5","jsdoc":"^3.6.5","mocha":"^8.1.3","semantic-release":"^17.0.7","semantic-release-slack-bot":"^1.6.2","ts-node":"6.2.0","typescript":"^3.6.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"<img src=\"./readme/logo.png\" />\n\nDocumentation toolbox for your **javascript** / **typescript** projects based on JSDoc3 with **@category**, **@component** and **@optional** plugins.\n\nThis is how it looks:\n\n<table>\n  <tr>\n    <td>\n      <a href='./readme/class.png'><img src=\"./readme/class.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/with-mermaid.png'><img src=\"./readme/with-mermaid.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/component.png'><img src=\"./readme/component.png\" style=\"width: 300px\"/></a>\n    </td>\n  </tr>\n</table>\n\n# Example\n\nExample documentation can be found here: https://softwarebrothers.github.io/example-design-system/index.html\n\n# OpenSource SoftwareBrothers community\n\n- [Join the community](https://join.slack.com/t/adminbro/shared_invite/zt-czfb79t1-0U7pn_KCqd5Ts~lbJK0_RA) to get help and be inspired.\n- subscribe to our [newsletter](http://opensource.softwarebrothers.co)\n\n# Installation\n\n```sh\nnpm install --save-dev better-docs\n```\n\n# Theme Usage\n\n## With command line\n\nAssuming that you have [jsdoc](https://github.com/jsdoc/jsdoc) installed globally:\n\n```\njsdoc your-documented-file.js -t ./node_modules/better-docs\n```\n\n## With npm and configuration file\n\nIn your projects package.json file - add a new script:\n\n```\n\"script\": {\n  \"docs\": \"jsdoc -c jsdoc.json\"\n}\n```\n\nin your `jsdoc.json` file, set the template:\n\n```json\n\"opts\": {\n  \"template\": \"node_modules/better-docs\"\n}\n```\n\n# TypeScript support\n\nbetter-docs has a plugin which allows you to generate documentation from your TypeScript codebase.\n\n## Usage\n\nTo use it update your `jsdoc.json` file\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"optional\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/typescript\"\n],\n\"source\": {\n    \"includePattern\": \"\\\\.(jsx|js|ts|tsx)$\",\n},\n...\n```\n\nAnd now you can run your `jsdoc` command and parse TypeScript files.\n\n## How it works?\n\nIt performs 4 operations:\n\n* First of all it transpiles all .ts and .tsx files to .js, so that all comments used by you are treated\nas a regular JSDoc comments.\n\nFurthermore it:\n\n* Converts all your commented `type` aliases to `@typedef`\n* Converts all your commented `interface` definitions to `@interface`,\n* Converts descriptions for your public, protected, static class members\n\nso they can be printed by JSDoc automatically.\n\n## Examples\n\n```\n/**\n * ActionRequest\n * @memberof Action\n * @alias ActionRequest\n */\nexport type ActionRequest = {\n  /**\n   * parameters passed in an URL\n   */\n  params: {\n    /**\n     * Id of current resource\n     */\n    resourceId: string;\n    /**\n     * Id of current record\n     */\n    recordId?: string;\n    /**\n     * Name of an action\n     */\n    action: string;\n\n    [key: string]: any;\n  };\n}\n```\n\nis converted to:\n\n```\n/**\n * ActionRequest'\n * @memberof Action'\n * @alias ActionRequest'\n * @typedef {object} ActionRequest'\n * @property {object} params   parameters passed in an URL'\n * @property {string} params.resourceId   Id of current resource'\n * @property {string} [params.recordId]   Id of current record'\n * @property {string} params.action   Name of an action'\n * @property {any} params.{...}'\n */\n```\n\nAlso you can comment the interface in a similar fashion:\n\n```\n/**\n * JSON representation of an {@link Action}\n * @see Action\n */\nexport default interface ActionJSON {\n  /**\n   * Unique action name\n   */\n  name: string;\n  /**\n   * Type of an action\n   */\n  actionType: 'record' | 'resource' | Array<'record' | 'resource'>;\n  /**\n   * Action icon\n   */\n  icon?: string;\n  /**\n   * Action label - visible on the frontend\n   */\n  label: string;\n  /**\n   * Guarding message\n   */\n  guard?: string;\n  /**\n   * If action should have a filter (for resource actions)\n   */\n  showFilter: boolean;\n  /**\n   * Action component. When set to false action will be invoked immediately after clicking it,\n   * to put in another words: there wont be an action view\n   */\n  component?: string | false | null;\n}\n```\n\nor describe your class properties like that:\n\n```\n/**\n * Class name\n */\nclass ClassName {\n  /**\n   * Some private member which WONT be in jsdoc (because it is private)\n   */\n  private name: string\n\n  /**\n   * Some protected member which will go to the docs\n   */\n  protected somethingIsA: number\n\n  /**\n   * And static member which will goes to the docs.\n   */\n  static someStaticMember: number\n\n  public notCommentedWontBeInJSDoc: string\n\n  constructor(color: string) {}\n}\n```\n\n# @category plugin\n\nbetter-docs also allows you to nest your documentation into categories and subcategories in the sidebar menu.\n\n## Usage\n\nTo add a plugin - update `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"category\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/category\"\n],\n...\n```\n\nand then you can use `@category` and/or `@subcategory` tag in your code:\n\n```\n/**\n * Class description\n * @category Category\n * @subcategory All\n */\nclass YourClass {\n  ....\n}\n```\n\n# @component plugin [BETA]\n\nBetter-docs also allows you to document your [React](https://reactjs.org/) and [Vue](https://vuejs.org/) components automatically. The only thing you have to do is to add a `@component` tag. It will take all props from your components and along with an `@example` tag - will generate a __live preview__.\n\n## Installation instructions\n\nSimilar as before to add a plugin - you have to update the `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"component\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/component\"\n],\n...\n```\n\nSince __component__ plugin uses [parcel](https://parceljs.org) as a bundler you have to install it globally. To do this run:\n\n```\n# if you use npm\nnpm install -g parcel-bundler\n\n# or yarn\nyarn global add parcel-bundler\n```\n\n## Usage\n\nTo document components simply add `@component` in your JSDoc documentation:\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n */\nconst Documented = (props) => {\n  const { text } = props\n  return (\n    <div>{text}</div>\n  )\n}\n\nDocumented.propTypes = {\n  /**\n   * Text is a text\n   */\n  text: PropTypes.string.isRequired,\n}\n\nexport default Documented\n```\n\nThe plugin will take the information from your [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) and put them into an array.\n\nFor Vue it looks similar:\n\n```vue\n<script>\n/**\n * @component\n */\nexport default {\n  name: 'ExampleComponent',\n  props: {\n    spent: {\n      type: Number,\n      default: 30,\n    },\n    remaining: {\n      type: Number,\n      default: 40,\n    }\n  },\n}\n</script>\n```\n\nIn this case, props will be taken from `props` property.\n\n## Preview\n\n`@component` plugin also modifies the behaviour of `@example` tag in a way that it can generate an actual __component preview__. What you have to do is to add an `@example` tag and return component from it:\n\n**React example:**\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n * @example\n * const text = 'some example text'\n * return (\n *   <Documented text={text} />\n * )\n */\nconst Documented = (props) => {\n  ///...\n}\n```\n\n**Vue example 1:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * <ExampleComponent :spent=\"100\" :remaining=\"50\"></ExampleComponent>\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\n**Vue example 2:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * {\n *   template: `<Box>\n *     <ProgressBar :spent=\"spent\" :remaining=\"50\"></ProgressBar>\n *     <ProgressBar :spent=\"50\" :remaining=\"50\" style=\"margin-top: 20px\"></ProgressBar>\n *   </Box>`,\n *   data: function() {\n *     return {spent: 223};\n *   }\n * }\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\nYou can put as many `@example` tags as you like in one component and \"caption\" each of them like this:\n\n```javascript\n/**\n * @component\n * @example <caption>Example usage of method1.</caption>\n * // your example here\n */\n```\n\n## Mixing components in preview\n\nAlso you can use multiple components which are documented with `@component` tag together. So lets say you have 2 components and in the second component you want to use the first one as a wrapper like this:\n\n```javascript\n// component-1.js\n/**\n * Component 1\n * @component\n *\n */\nconst Component1 = (props) => {...}\n\n// component-2.js\n/**\n * Component 2\n * @component\n * @example\n * return (\n *   <Component1>\n *     <Component2 prop1={'some value'}/>\n *     <Component2 prop1={'some other value'}/>\n *   </Component1>\n * )\n */\nconst Component2 = (props) => {...}\n```\n\n## Wrapper component [only React]\n\nMost probably your components will have to be run within a particular context, like within redux store provider or with custom CSS libraries.\nYou can simulate this by passing a `component.wrapper` in your `jsdoc.json`:\n_(To read more about passing options - scroll down to __Customization__ section)_\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n              \"wrapper\": \"./path/to/your/wrapper-component.js\",\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\nWrapper component can look like this:\n\n```javascript\n// wrapper-component.js\nimport React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\n\nconst store = createStore(() => ({}), {})\n\nconst Component = (props) => {\n  return (\n    <React.Fragment>\n      <head>\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.css\" />\n      </head>\n      <Provider store={store}>\n        <BrowserRouter>\n          {props.children}\n        </BrowserRouter>\n      </Provider>\n    </React.Fragment>\n  )\n}\n\nexport default Component\n```\n\n## Styling React examples\n\nBetter-docs inserts all examples within an `iframe`. This results in the following styling options:\n\n1. If you pass styles inline - they will work right away.\n\n2. For `css modules` to work with `parcel` bundler - you have to install `postcss-modules` package:\n\n```\nyarn add postcss-modules\n```\n\nand create a `.postcssrc` file:\n\n\n```json\n// .postcssrc\n{\n\t\"modules\": true\n}\n```\n\n3. For [styled-components](https://www.styled-components.com/) you have to use wrapper component which looks like this:\n\n```jsx\nimport React from 'react'\nimport { StyleSheetManager } from 'styled-components'\n\nconst Component = (props) => {\n  const { frameContext } = props\n  return (\n    <StyleSheetManager target={frameContext.document.head}>\n      {props.children}\n    </StyleSheetManager>\n  )\n}\n\nexport default Component\n```\n\n## Adding commands to bundle entry file\n\n`@component` plugin creates an entry file: `.entry.js` in your _docs_ output folder. Sometimes you might want to add something to it. You can do this by passing: `component.entry` option, which is an array of strings.\n\nSo let's say you want to add `babel-polyfill` and 'bulma.css' framework to your bundle. You can do it like this:\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n                \"entry\": [\n                    \"import 'babel-polyfill';\",\n                    \"import 'bulma/css/bulma.css';\"\n                ]\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\n# Customization\n\nFirst of all, let me state that better-docs extends the `default` template. That is why default template parameters are also handled.\n\n[BETA]: You must explicitly set the `search` option of the `default` template to `true` to enable search\n\nTo customize the better-docs pass `options` to `templates['better-docs']`. section in your `jsdoc configuration file`.\n\nExample configuration file with settings for both `default` and `better-docs` templates:\n\n```json\n{\n    \"tags\": {\n        \"allowUnknownTags\": [\"category\"]\n    },\n    \"source\": {\n        \"include\": [\"./src\"],\n        \"includePattern\": \".js$\",\n        \"excludePattern\": \"(node_modules/|docs)\"\n    },\n    \"plugins\": [\n        \"plugins/markdown\",\n        \"jsdoc-mermaid\",\n        \"node_modules/better-docs/category\"\n    ],\n    \"opts\": {\n        \"encoding\": \"utf8\",\n        \"destination\": \"docs/\",\n        \"readme\": \"readme.md\",\n        \"recurse\": true,\n        \"verbose\": true,\n        \"tutorials\": \"./docs-src/tutorials\",\n        \"template\": \"better-docs\"\n    },\n    \"templates\": {\n        \"cleverLinks\": false,\n        \"monospaceLinks\": false,\n        \"search\": true,\n        \"default\": {\n            \"staticFiles\": {\n              \"include\": [\n                  \"./docs-src/statics\"\n              ]\n            }\n        },\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"logo\": \"images/logo.png\",\n            \"title\": \"\", // HTML title\n            \"css\": \"style.css\",\n            \"trackingCode\": \"tracking-code-which-will-go-to-the-HEAD\",\n\t    \"hideGenerator\": false,\n            \"navLinks\": [\n                {\n                    \"label\": \"Github\",\n                    \"href\": \"https://github.com/SoftwareBrothers/admin-bro\"\n                },\n                {\n                    \"label\": \"Example Application\",\n                    \"href\": \"https://admin-bro-example-app.herokuapp.com/admin\"\n                }\n            ]\n        }\n    }\n}\n```\n\n## Extras\n\n### typedef(import(...))\n\nbetter-docs also has one extra plugin for handling typescript'like types imports like (it has to be one-liner):\n\n```\n/** @typedef {import('./some-other-file').ExportedType} ExportedType */\n```\n\nIt simply removes that from the code so JSDoc wont throw an error. In order to use it add this plugin to your plugins section:\n\n```\n  \"plugins\": [\n        \"node_modules/better-docs/typedef-import\"\n    ],\n```\n\n# Setting up for the development\n\nIf you want to change the theme locally follow the steps:\n\n1. Clone the repo to the folder where you have the project:\n\n```\ncd your-project\ngit clone git@github.com:SoftwareBrothers/better-docs.git\n```\n\nor add it as a git submodule:\n\n```\ngit submodule add git@github.com:SoftwareBrothers/better-docs.git\n```\n\n2. Install the packages\n\n```\ncd better-docs\n\nnpm install\n\n# or\n\nyarn\n```\n\n3. Within the better-docs folder run the gulp script. It will regenerate documentation every time you change something.\n\nIt supports following EVN variables:\n\n* `DOCS_COMMAND` - a command in your root repo which you use to generate documentation: i.e. `DOCS_COMMAND='jsdoc -c jsdoc.json'` or `npm run docs` if you have `docs` command defined in `package.json` file\n* `DOCS_OUTPUT` - where your documentation is generated. It should point to the same folder your jsdoc `--destination` conf. But make sure that it is relative to the path where you cloned `better-docs`.\n* `DOCS` - list of folders from your original repo what you want to watch for changes. Separated by comma.\n\n```\ncd better-docs\nDOCS_COMMAND='npm run docs' DOCS=../src/**/*,../config/**/* DOCS_OUTPUT=../docs cd better-docs && gulp\n```\n\nThe script should launch the browser and refresh it whenever you change something in the template or in `DOCS`.\n\n# Setting up the jsdoc in your project\n\nIf you want to see how to setup jsdoc in your project - take a look at these brief tutorials:\n\n- JSDoc - https://www.youtube.com/watch?v=Yl6WARA3IhQ\n- better-docs and Mermaid: https://www.youtube.com/watch?v=UBMYogTzsBk\n\n# License\n\nbetter-docs is Copyright © 2019 SoftwareBrothers.co. It is free software and may be redistributed under the terms specified in the [LICENSE](LICENSE) file - MIT.\n\n# About SoftwareBrothers.co\n\n<img src=\"https://softwarebrothers.co/assets/images/software-brothers-logo-full.svg\" width=240>\n\n\nWe're an open, friendly team that helps clients from all over the world to transform their businesses and create astonishing products.\n\n* We are available for [hire](https://softwarebrothers.co/contact).\n* If you want to work for us - check out the [career page](https://softwarebrothers.co/career).\n","readmeFilename":"README.md","gitHead":"eefa35c1871d82d75144bf5c7f496963b1387e63","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.4.0-beta.4","_nodeVersion":"10.22.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-tlx3PKTzlWFl37Usi4hBUsj9k5XmQdDhySFJRC8nbu7qyqnqpPd/+0IDrquXo/JS1e8FdVxwWtFHKuPPWzXmDQ==","shasum":"23b2d34f72efbe2172fbff27092a185fe694986b","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.4.0-beta.4.tgz","fileCount":137,"unpackedSize":862125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVfS+CRA9TVsSAnZWagAAug0QAJO1E7CmhOb0hhfPSC+V\na/Y0etRnfIAG9gnkyd4ZZ81Fy/E0TJ5jEyV62lU5EPjXLDTzer0XzYF6IxNX\nMkLlyJzXREYvsEiK+rra6Ktm/dsGLGcfD2ksjhGtSmiL2KmXijwv5UtRElEM\nUDygSIJfv1wYXqVTAYEu65iSswsBTdRkiz5yPWaLB0zp4UXVqVDE9ed6ZDCD\nPr71aFPQj8Tdh8aToUB5NSNcGgCAlu+N+aFDzuXX4O6dPijS8LqQdFf9gTzq\nI4OFQlh6vnbFjnnheF7+U6pjMIwop6Rwsnmvj7go67RU+4kdpT/elYVxa4/m\nzkuLTLqI95V0Vo8UYCzJo4s4n4pnXHFpW+2ROj0yUDqBKXpTksIEV1IP2xsk\nqV+m7o+slaofABfaRHFUFrOrE69waYBMTgELHN6bhAo2toL+O44Q4zD12AQc\nC21vCBwEfB0VmJip2/M6Zeb7utloo6JD/fEKYaHNepSXNrOpyN8+FXhhcX5y\n8DYbOFqfiMy894AHodmI8UPEkJlstR1RXwxIjMrmz/MuxkErKuYGknfWV1rJ\nXUlaeKzmvJtNdtCfjYip6xKhbAN/D71YlD44BYmE88iyfw4cdw85q0FEpxmD\ntdMiGm7NBccQqJUDJ/pUiRYocOof1+rb2in62btw1yGSnvfFDuoJrvmgccIO\nFcvK\r\n=VUnl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHSjKAszMPcii4Ow6Joe/egUgWprBLy8kAQqk/gBDRi3AiBqYJqSSoVBt2kzdKbWe/DpmvyFdXkH41PVpAaPqOO2CA=="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.4.0-beta.4_1599468734085_0.6907067589380129"},"_hasShrinkwrap":false},"2.4.0-beta.5":{"name":"better-docs","version":"2.4.0-beta.5","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","test:ts":"mocha -r ts-node/register -r tsconfig-paths/register src/**/*.spec.ts","build":"babel src/components --out-dir lib/components","build:ts":"tsc","build:css":"yarn run gulp build","build:all":"yarn build:css && yarn build:ts && yarn build","check:all":"yarn test && yarn test:ts && yarn build:all","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@semantic-release/git":"^9.0.0","@types/mocha":"^8.0.3","@typescript-eslint/eslint-plugin":"^2.3.1","@typescript-eslint/parser":"^2.3.1","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-mocha":"^6.2.2","eslint-plugin-react":"^7.12.4","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","husky":"^4.2.5","jsdoc":"^3.6.5","mocha":"^8.1.3","semantic-release":"^17.0.7","semantic-release-slack-bot":"^1.6.2","ts-node":"6.2.0","typescript":"^3.6.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"<img src=\"./readme/logo.png\" />\n\nDocumentation toolbox for your **javascript** / **typescript** projects based on JSDoc3 with **@category**, **@component** and **@optional** plugins.\n\nThis is how it looks:\n\n<table>\n  <tr>\n    <td>\n      <a href='./readme/class.png'><img src=\"./readme/class.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/with-mermaid.png'><img src=\"./readme/with-mermaid.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/component.png'><img src=\"./readme/component.png\" style=\"width: 300px\"/></a>\n    </td>\n  </tr>\n</table>\n\n# Example\n\nExample documentation can be found here: https://softwarebrothers.github.io/example-design-system/index.html\n\n# OpenSource SoftwareBrothers community\n\n- [Join the community](https://join.slack.com/t/adminbro/shared_invite/zt-czfb79t1-0U7pn_KCqd5Ts~lbJK0_RA) to get help and be inspired.\n- subscribe to our [newsletter](http://opensource.softwarebrothers.co)\n\n# Installation\n\n```sh\nnpm install --save-dev better-docs\n```\n\n# Theme Usage\n\n## With command line\n\nAssuming that you have [jsdoc](https://github.com/jsdoc/jsdoc) installed globally:\n\n```\njsdoc your-documented-file.js -t ./node_modules/better-docs\n```\n\n## With npm and configuration file\n\nIn your projects package.json file - add a new script:\n\n```\n\"script\": {\n  \"docs\": \"jsdoc -c jsdoc.json\"\n}\n```\n\nin your `jsdoc.json` file, set the template:\n\n```json\n\"opts\": {\n  \"template\": \"node_modules/better-docs\"\n}\n```\n\n# TypeScript support\n\nbetter-docs has a plugin which allows you to generate documentation from your TypeScript codebase.\n\n## Usage\n\nTo use it update your `jsdoc.json` file\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"optional\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/typescript\"\n],\n\"source\": {\n    \"includePattern\": \"\\\\.(jsx|js|ts|tsx)$\",\n},\n...\n```\n\nAnd now you can run your `jsdoc` command and parse TypeScript files.\n\n## How it works?\n\nIt performs 4 operations:\n\n* First of all it transpiles all .ts and .tsx files to .js, so that all comments used by you are treated\nas a regular JSDoc comments.\n\nFurthermore it:\n\n* Converts all your commented `type` aliases to `@typedef`\n* Converts all your commented `interface` definitions to `@interface`,\n* Converts descriptions for your public, protected, static class members\n\nso they can be printed by JSDoc automatically.\n\n## Examples\n\n```\n/**\n * ActionRequest\n * @memberof Action\n * @alias ActionRequest\n */\nexport type ActionRequest = {\n  /**\n   * parameters passed in an URL\n   */\n  params: {\n    /**\n     * Id of current resource\n     */\n    resourceId: string;\n    /**\n     * Id of current record\n     */\n    recordId?: string;\n    /**\n     * Name of an action\n     */\n    action: string;\n\n    [key: string]: any;\n  };\n}\n```\n\nis converted to:\n\n```\n/**\n * ActionRequest'\n * @memberof Action'\n * @alias ActionRequest'\n * @typedef {object} ActionRequest'\n * @property {object} params   parameters passed in an URL'\n * @property {string} params.resourceId   Id of current resource'\n * @property {string} [params.recordId]   Id of current record'\n * @property {string} params.action   Name of an action'\n * @property {any} params.{...}'\n */\n```\n\nAlso you can comment the interface in a similar fashion:\n\n```\n/**\n * JSON representation of an {@link Action}\n * @see Action\n */\nexport default interface ActionJSON {\n  /**\n   * Unique action name\n   */\n  name: string;\n  /**\n   * Type of an action\n   */\n  actionType: 'record' | 'resource' | Array<'record' | 'resource'>;\n  /**\n   * Action icon\n   */\n  icon?: string;\n  /**\n   * Action label - visible on the frontend\n   */\n  label: string;\n  /**\n   * Guarding message\n   */\n  guard?: string;\n  /**\n   * If action should have a filter (for resource actions)\n   */\n  showFilter: boolean;\n  /**\n   * Action component. When set to false action will be invoked immediately after clicking it,\n   * to put in another words: there wont be an action view\n   */\n  component?: string | false | null;\n}\n```\n\nor describe your class properties like that:\n\n```\n/**\n * Class name\n */\nclass ClassName {\n  /**\n   * Some private member which WONT be in jsdoc (because it is private)\n   */\n  private name: string\n\n  /**\n   * Some protected member which will go to the docs\n   */\n  protected somethingIsA: number\n\n  /**\n   * And static member which will goes to the docs.\n   */\n  static someStaticMember: number\n\n  public notCommentedWontBeInJSDoc: string\n\n  constructor(color: string) {}\n}\n```\n\n# @category plugin\n\nbetter-docs also allows you to nest your documentation into categories and subcategories in the sidebar menu.\n\n## Usage\n\nTo add a plugin - update `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"category\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/category\"\n],\n...\n```\n\nand then you can use `@category` and/or `@subcategory` tag in your code:\n\n```\n/**\n * Class description\n * @category Category\n * @subcategory All\n */\nclass YourClass {\n  ....\n}\n```\n\n# @component plugin [BETA]\n\nBetter-docs also allows you to document your [React](https://reactjs.org/) and [Vue](https://vuejs.org/) components automatically. The only thing you have to do is to add a `@component` tag. It will take all props from your components and along with an `@example` tag - will generate a __live preview__.\n\n## Installation instructions\n\nSimilar as before to add a plugin - you have to update the `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"component\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/component\"\n],\n...\n```\n\nSince __component__ plugin uses [parcel](https://parceljs.org) as a bundler you have to install it globally. To do this run:\n\n```\n# if you use npm\nnpm install -g parcel-bundler\n\n# or yarn\nyarn global add parcel-bundler\n```\n\n## Usage\n\nTo document components simply add `@component` in your JSDoc documentation:\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n */\nconst Documented = (props) => {\n  const { text } = props\n  return (\n    <div>{text}</div>\n  )\n}\n\nDocumented.propTypes = {\n  /**\n   * Text is a text\n   */\n  text: PropTypes.string.isRequired,\n}\n\nexport default Documented\n```\n\nThe plugin will take the information from your [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) and put them into an array.\n\nFor Vue it looks similar:\n\n```vue\n<script>\n/**\n * @component\n */\nexport default {\n  name: 'ExampleComponent',\n  props: {\n    spent: {\n      type: Number,\n      default: 30,\n    },\n    remaining: {\n      type: Number,\n      default: 40,\n    }\n  },\n}\n</script>\n```\n\nIn this case, props will be taken from `props` property.\n\n## Preview\n\n`@component` plugin also modifies the behaviour of `@example` tag in a way that it can generate an actual __component preview__. What you have to do is to add an `@example` tag and return component from it:\n\n**React example:**\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n * @example\n * const text = 'some example text'\n * return (\n *   <Documented text={text} />\n * )\n */\nconst Documented = (props) => {\n  ///...\n}\n```\n\n**Vue example 1:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * <ExampleComponent :spent=\"100\" :remaining=\"50\"></ExampleComponent>\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\n**Vue example 2:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * {\n *   template: `<Box>\n *     <ProgressBar :spent=\"spent\" :remaining=\"50\"></ProgressBar>\n *     <ProgressBar :spent=\"50\" :remaining=\"50\" style=\"margin-top: 20px\"></ProgressBar>\n *   </Box>`,\n *   data: function() {\n *     return {spent: 223};\n *   }\n * }\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\nYou can put as many `@example` tags as you like in one component and \"caption\" each of them like this:\n\n```javascript\n/**\n * @component\n * @example <caption>Example usage of method1.</caption>\n * // your example here\n */\n```\n\n## Mixing components in preview\n\nAlso you can use multiple components which are documented with `@component` tag together. So lets say you have 2 components and in the second component you want to use the first one as a wrapper like this:\n\n```javascript\n// component-1.js\n/**\n * Component 1\n * @component\n *\n */\nconst Component1 = (props) => {...}\n\n// component-2.js\n/**\n * Component 2\n * @component\n * @example\n * return (\n *   <Component1>\n *     <Component2 prop1={'some value'}/>\n *     <Component2 prop1={'some other value'}/>\n *   </Component1>\n * )\n */\nconst Component2 = (props) => {...}\n```\n\n## Wrapper component [only React]\n\nMost probably your components will have to be run within a particular context, like within redux store provider or with custom CSS libraries.\nYou can simulate this by passing a `component.wrapper` in your `jsdoc.json`:\n_(To read more about passing options - scroll down to __Customization__ section)_\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n              \"wrapper\": \"./path/to/your/wrapper-component.js\",\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\nWrapper component can look like this:\n\n```javascript\n// wrapper-component.js\nimport React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\n\nconst store = createStore(() => ({}), {})\n\nconst Component = (props) => {\n  return (\n    <React.Fragment>\n      <head>\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.css\" />\n      </head>\n      <Provider store={store}>\n        <BrowserRouter>\n          {props.children}\n        </BrowserRouter>\n      </Provider>\n    </React.Fragment>\n  )\n}\n\nexport default Component\n```\n\n## Styling React examples\n\nBetter-docs inserts all examples within an `iframe`. This results in the following styling options:\n\n1. If you pass styles inline - they will work right away.\n\n2. For `css modules` to work with `parcel` bundler - you have to install `postcss-modules` package:\n\n```\nyarn add postcss-modules\n```\n\nand create a `.postcssrc` file:\n\n\n```json\n// .postcssrc\n{\n\t\"modules\": true\n}\n```\n\n3. For [styled-components](https://www.styled-components.com/) you have to use wrapper component which looks like this:\n\n```jsx\nimport React from 'react'\nimport { StyleSheetManager } from 'styled-components'\n\nconst Component = (props) => {\n  const { frameContext } = props\n  return (\n    <StyleSheetManager target={frameContext.document.head}>\n      {props.children}\n    </StyleSheetManager>\n  )\n}\n\nexport default Component\n```\n\n## Adding commands to bundle entry file\n\n`@component` plugin creates an entry file: `.entry.js` in your _docs_ output folder. Sometimes you might want to add something to it. You can do this by passing: `component.entry` option, which is an array of strings.\n\nSo let's say you want to add `babel-polyfill` and 'bulma.css' framework to your bundle. You can do it like this:\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n                \"entry\": [\n                    \"import 'babel-polyfill';\",\n                    \"import 'bulma/css/bulma.css';\"\n                ]\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\n# Customization\n\nFirst of all, let me state that better-docs extends the `default` template. That is why default template parameters are also handled.\n\n[BETA]: You must explicitly set the `search` option of the `default` template to `true` to enable search\n\nTo customize the better-docs pass `options` to `templates['better-docs']`. section in your `jsdoc configuration file`.\n\nExample configuration file with settings for both `default` and `better-docs` templates:\n\n```json\n{\n    \"tags\": {\n        \"allowUnknownTags\": [\"category\"]\n    },\n    \"source\": {\n        \"include\": [\"./src\"],\n        \"includePattern\": \".js$\",\n        \"excludePattern\": \"(node_modules/|docs)\"\n    },\n    \"plugins\": [\n        \"plugins/markdown\",\n        \"jsdoc-mermaid\",\n        \"node_modules/better-docs/category\"\n    ],\n    \"opts\": {\n        \"encoding\": \"utf8\",\n        \"destination\": \"docs/\",\n        \"readme\": \"readme.md\",\n        \"recurse\": true,\n        \"verbose\": true,\n        \"tutorials\": \"./docs-src/tutorials\",\n        \"template\": \"better-docs\"\n    },\n    \"templates\": {\n        \"cleverLinks\": false,\n        \"monospaceLinks\": false,\n        \"search\": true,\n        \"default\": {\n            \"staticFiles\": {\n              \"include\": [\n                  \"./docs-src/statics\"\n              ]\n            }\n        },\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"logo\": \"images/logo.png\",\n            \"title\": \"\", // HTML title\n            \"css\": \"style.css\",\n            \"trackingCode\": \"tracking-code-which-will-go-to-the-HEAD\",\n\t    \"hideGenerator\": false,\n            \"navLinks\": [\n                {\n                    \"label\": \"Github\",\n                    \"href\": \"https://github.com/SoftwareBrothers/admin-bro\"\n                },\n                {\n                    \"label\": \"Example Application\",\n                    \"href\": \"https://admin-bro-example-app.herokuapp.com/admin\"\n                }\n            ]\n        }\n    }\n}\n```\n\n## Extras\n\n### typedef(import(...))\n\nbetter-docs also has one extra plugin for handling typescript'like types imports like (it has to be one-liner):\n\n```\n/** @typedef {import('./some-other-file').ExportedType} ExportedType */\n```\n\nIt simply removes that from the code so JSDoc wont throw an error. In order to use it add this plugin to your plugins section:\n\n```\n  \"plugins\": [\n        \"node_modules/better-docs/typedef-import\"\n    ],\n```\n\n# Setting up for the development\n\nIf you want to change the theme locally follow the steps:\n\n1. Clone the repo to the folder where you have the project:\n\n```\ncd your-project\ngit clone git@github.com:SoftwareBrothers/better-docs.git\n```\n\nor add it as a git submodule:\n\n```\ngit submodule add git@github.com:SoftwareBrothers/better-docs.git\n```\n\n2. Install the packages\n\n```\ncd better-docs\n\nnpm install\n\n# or\n\nyarn\n```\n\n3. Within the better-docs folder run the gulp script. It will regenerate documentation every time you change something.\n\nIt supports following EVN variables:\n\n* `DOCS_COMMAND` - a command in your root repo which you use to generate documentation: i.e. `DOCS_COMMAND='jsdoc -c jsdoc.json'` or `npm run docs` if you have `docs` command defined in `package.json` file\n* `DOCS_OUTPUT` - where your documentation is generated. It should point to the same folder your jsdoc `--destination` conf. But make sure that it is relative to the path where you cloned `better-docs`.\n* `DOCS` - list of folders from your original repo what you want to watch for changes. Separated by comma.\n\n```\ncd better-docs\nDOCS_COMMAND='npm run docs' DOCS=../src/**/*,../config/**/* DOCS_OUTPUT=../docs cd better-docs && gulp\n```\n\nThe script should launch the browser and refresh it whenever you change something in the template or in `DOCS`.\n\n# Setting up the jsdoc in your project\n\nIf you want to see how to setup jsdoc in your project - take a look at these brief tutorials:\n\n- JSDoc - https://www.youtube.com/watch?v=Yl6WARA3IhQ\n- better-docs and Mermaid: https://www.youtube.com/watch?v=UBMYogTzsBk\n\n# License\n\nbetter-docs is Copyright © 2019 SoftwareBrothers.co. It is free software and may be redistributed under the terms specified in the [LICENSE](LICENSE) file - MIT.\n\n# About SoftwareBrothers.co\n\n<img src=\"https://softwarebrothers.co/assets/images/software-brothers-logo-full.svg\" width=240>\n\n\nWe're an open, friendly team that helps clients from all over the world to transform their businesses and create astonishing products.\n\n* We are available for [hire](https://softwarebrothers.co/contact).\n* If you want to work for us - check out the [career page](https://softwarebrothers.co/career).\n","readmeFilename":"README.md","gitHead":"9f3ac25f4bd9045bb1b46e571c4ddc10e03ba260","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.4.0-beta.5","_nodeVersion":"10.22.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-AVbFe41nx2X4X4c2F2vltsyF5lLsIyLkeX7oumSsLaR1zMAw6mSc8HHlHWH6U6HaveVOrYLqtooxcmWhJos8Lg==","shasum":"7c8186be6614bf4984beddf1c34b1137d5352116","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.4.0-beta.5.tgz","fileCount":137,"unpackedSize":862130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVfvYCRA9TVsSAnZWagAAzFEP/1Q5Eut621nixNVGqVZu\n7PLeeSp2v7FEBswNgN9klUQRZrSI/YwyTZlefE7QUJ6O71VS5d1Uf5CAjUR+\nj9ez9egPl7xGpNZ8pcR/eR6ppC+hZhxHgW6DFSBm4FpeqhZTM1TDCXg1ysY6\nGujuZiqW8cRaoNArCL+RljRyRDvNZGFliFOCEzw7EVK8gcpS+LydZWXup1au\n4EbyTXd6F4xH02BxCYPK2J+gY/AlKScjQUpJp4Zo+NOj87MdYraniGpB93Io\nXmgnsbpy08Dr7ocfGCcqPbIdded/xlZRlz5JelVNQxvcC1AF75nPjGTnrLul\n1mXbV3QvrVpFPICMFPvGFziD3VGxNAQifGwFl/9sNqtptz7NT6cjAX42dDR9\n+nxE4O66iTBnecxUVnsfUtHS4e5CJZooOhzOw1lxrlMl1CB5myjhTx1ew+W1\ns7tD/cjYp+/9Cpx/SQKB6YX9Qq6bIh+qobUDeOcNX8p5wduheMQIQEvZcRuL\ncDQhwyTRI8lTJcduExdg3RO+fXc9h2YLk/3sADOYibFPqYafjLsRRAF1LlL2\n/+BQPZfz1p0y/A44YFsEGS+pwDAAf57W4q+LDps8veuipfeweccR+CWXAPvx\n7fY9hieiWk/0AJHz27yMaDHZPKI81Hq4IgXKw7UBrYLUkaZ0ATSeXy39Fjhr\npsB1\r\n=iqzW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHWuF9b6D97j5lZTGsb4E3AxDQTtQf4tWb7ebdEIbopOAiEAvJyD66MUt9XtRq63xmXSS8POprzYik/6CJ7dZMsGpqU="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.4.0-beta.5_1599470551618_0.4025546723880402"},"_hasShrinkwrap":false},"2.4.0-beta.6":{"name":"better-docs","version":"2.4.0-beta.6","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","test:ts":"mocha -r ts-node/register -r tsconfig-paths/register src/**/*.spec.ts","build":"babel src/components --out-dir lib/components","build:ts":"tsc","build:css":"yarn run gulp build","build:all":"yarn build:css && yarn build:ts && yarn build","check:all":"yarn test && yarn test:ts && yarn build:all","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@semantic-release/git":"^9.0.0","@types/mocha":"^8.0.3","@typescript-eslint/eslint-plugin":"^2.3.1","@typescript-eslint/parser":"^2.3.1","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-mocha":"^6.2.2","eslint-plugin-react":"^7.12.4","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","husky":"^4.2.5","jsdoc":"^3.6.5","mocha":"^8.1.3","semantic-release":"^17.0.7","semantic-release-slack-bot":"^1.6.2","ts-node":"6.2.0","typescript":"^3.6.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","marked":"^1.1.1","prism-react-renderer":"^1.1.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","react-live":"^2.2.2","react-simple-code-editor":"^0.11.0","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"<img src=\"./readme/logo.png\" />\n\nDocumentation toolbox for your **javascript** / **typescript** projects based on JSDoc3 with **@category**, **@component** and **@optional** plugins.\n\nThis is how it looks:\n\n<table>\n  <tr>\n    <td>\n      <a href='./readme/class.png'><img src=\"./readme/class.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/with-mermaid.png'><img src=\"./readme/with-mermaid.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/component.png'><img src=\"./readme/component.png\" style=\"width: 300px\"/></a>\n    </td>\n  </tr>\n</table>\n\n# Example\n\nExample documentation can be found here: https://softwarebrothers.github.io/example-design-system/index.html\n\n# OpenSource SoftwareBrothers community\n\n- [Join the community](https://join.slack.com/t/adminbro/shared_invite/zt-czfb79t1-0U7pn_KCqd5Ts~lbJK0_RA) to get help and be inspired.\n- subscribe to our [newsletter](http://opensource.softwarebrothers.co)\n\n# Installation\n\n```sh\nnpm install --save-dev better-docs\n```\n\n# Theme Usage\n\n## With command line\n\nAssuming that you have [jsdoc](https://github.com/jsdoc/jsdoc) installed globally:\n\n```\njsdoc your-documented-file.js -t ./node_modules/better-docs\n```\n\n## With npm and configuration file\n\nIn your projects package.json file - add a new script:\n\n```\n\"script\": {\n  \"docs\": \"jsdoc -c jsdoc.json\"\n}\n```\n\nin your `jsdoc.json` file, set the template:\n\n```json\n\"opts\": {\n  \"template\": \"node_modules/better-docs\"\n}\n```\n\n# TypeScript support\n\nbetter-docs has a plugin which allows you to generate documentation from your TypeScript codebase.\n\n## Usage\n\nTo use it update your `jsdoc.json` file\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"optional\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/typescript\"\n],\n\"source\": {\n    \"includePattern\": \"\\\\.(jsx|js|ts|tsx)$\",\n},\n...\n```\n\nAnd now you can run your `jsdoc` command and parse TypeScript files.\n\n## How it works?\n\nIt performs 4 operations:\n\n* First of all it transpiles all .ts and .tsx files to .js, so that all comments used by you are treated\nas a regular JSDoc comments.\n\nFurthermore it:\n\n* Converts all your commented `type` aliases to `@typedef`\n* Converts all your commented `interface` definitions to `@interface`,\n* Converts descriptions for your public, protected, static class members\n\nso they can be printed by JSDoc automatically.\n\n## Examples\n\n```\n/**\n * ActionRequest\n * @memberof Action\n * @alias ActionRequest\n */\nexport type ActionRequest = {\n  /**\n   * parameters passed in an URL\n   */\n  params: {\n    /**\n     * Id of current resource\n     */\n    resourceId: string;\n    /**\n     * Id of current record\n     */\n    recordId?: string;\n    /**\n     * Name of an action\n     */\n    action: string;\n\n    [key: string]: any;\n  };\n}\n```\n\nis converted to:\n\n```\n/**\n * ActionRequest'\n * @memberof Action'\n * @alias ActionRequest'\n * @typedef {object} ActionRequest'\n * @property {object} params   parameters passed in an URL'\n * @property {string} params.resourceId   Id of current resource'\n * @property {string} [params.recordId]   Id of current record'\n * @property {string} params.action   Name of an action'\n * @property {any} params.{...}'\n */\n```\n\nAlso you can comment the interface in a similar fashion:\n\n```\n/**\n * JSON representation of an {@link Action}\n * @see Action\n */\nexport default interface ActionJSON {\n  /**\n   * Unique action name\n   */\n  name: string;\n  /**\n   * Type of an action\n   */\n  actionType: 'record' | 'resource' | Array<'record' | 'resource'>;\n  /**\n   * Action icon\n   */\n  icon?: string;\n  /**\n   * Action label - visible on the frontend\n   */\n  label: string;\n  /**\n   * Guarding message\n   */\n  guard?: string;\n  /**\n   * If action should have a filter (for resource actions)\n   */\n  showFilter: boolean;\n  /**\n   * Action component. When set to false action will be invoked immediately after clicking it,\n   * to put in another words: there wont be an action view\n   */\n  component?: string | false | null;\n}\n```\n\nor describe your class properties like that:\n\n```\n/**\n * Class name\n */\nclass ClassName {\n  /**\n   * Some private member which WONT be in jsdoc (because it is private)\n   */\n  private name: string\n\n  /**\n   * Some protected member which will go to the docs\n   */\n  protected somethingIsA: number\n\n  /**\n   * And static member which will goes to the docs.\n   */\n  static someStaticMember: number\n\n  public notCommentedWontBeInJSDoc: string\n\n  constructor(color: string) {}\n}\n```\n\n# @category plugin\n\nbetter-docs also allows you to nest your documentation into categories and subcategories in the sidebar menu.\n\n## Usage\n\nTo add a plugin - update `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"category\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/category\"\n],\n...\n```\n\nand then you can use `@category` and/or `@subcategory` tag in your code:\n\n```\n/**\n * Class description\n * @category Category\n * @subcategory All\n */\nclass YourClass {\n  ....\n}\n```\n\n# @component plugin [BETA]\n\nBetter-docs also allows you to document your [React](https://reactjs.org/) and [Vue](https://vuejs.org/) components automatically. The only thing you have to do is to add a `@component` tag. It will take all props from your components and along with an `@example` tag - will generate a __live preview__.\n\n## Installation instructions\n\nSimilar as before to add a plugin - you have to update the `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"component\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/component\"\n],\n...\n```\n\nSince __component__ plugin uses [parcel](https://parceljs.org) as a bundler you have to install it globally. To do this run:\n\n```\n# if you use npm\nnpm install -g parcel-bundler\n\n# or yarn\nyarn global add parcel-bundler\n```\n\n## Usage\n\nTo document components simply add `@component` in your JSDoc documentation:\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n */\nconst Documented = (props) => {\n  const { text } = props\n  return (\n    <div>{text}</div>\n  )\n}\n\nDocumented.propTypes = {\n  /**\n   * Text is a text\n   */\n  text: PropTypes.string.isRequired,\n}\n\nexport default Documented\n```\n\nThe plugin will take the information from your [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) and put them into an array.\n\nFor Vue it looks similar:\n\n```vue\n<script>\n/**\n * @component\n */\nexport default {\n  name: 'ExampleComponent',\n  props: {\n    spent: {\n      type: Number,\n      default: 30,\n    },\n    remaining: {\n      type: Number,\n      default: 40,\n    }\n  },\n}\n</script>\n```\n\nIn this case, props will be taken from `props` property.\n\n## Preview\n\n`@component` plugin also modifies the behaviour of `@example` tag in a way that it can generate an actual __component preview__. What you have to do is to add an `@example` tag and return component from it:\n\n**React example:**\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n * @example\n * const text = 'some example text'\n * return (\n *   <Documented text={text} />\n * )\n */\nconst Documented = (props) => {\n  ///...\n}\n```\n\n**Vue example 1:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * <ExampleComponent :spent=\"100\" :remaining=\"50\"></ExampleComponent>\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\n**Vue example 2:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * {\n *   template: `<Box>\n *     <ProgressBar :spent=\"spent\" :remaining=\"50\"></ProgressBar>\n *     <ProgressBar :spent=\"50\" :remaining=\"50\" style=\"margin-top: 20px\"></ProgressBar>\n *   </Box>`,\n *   data: function() {\n *     return {spent: 223};\n *   }\n * }\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\nYou can put as many `@example` tags as you like in one component and \"caption\" each of them like this:\n\n```javascript\n/**\n * @component\n * @example <caption>Example usage of method1.</caption>\n * // your example here\n */\n```\n\n## Mixing components in preview\n\nAlso you can use multiple components which are documented with `@component` tag together. So lets say you have 2 components and in the second component you want to use the first one as a wrapper like this:\n\n```javascript\n// component-1.js\n/**\n * Component 1\n * @component\n *\n */\nconst Component1 = (props) => {...}\n\n// component-2.js\n/**\n * Component 2\n * @component\n * @example\n * return (\n *   <Component1>\n *     <Component2 prop1={'some value'}/>\n *     <Component2 prop1={'some other value'}/>\n *   </Component1>\n * )\n */\nconst Component2 = (props) => {...}\n```\n\n## Wrapper component [only React]\n\nMost probably your components will have to be run within a particular context, like within redux store provider or with custom CSS libraries.\nYou can simulate this by passing a `component.wrapper` in your `jsdoc.json`:\n_(To read more about passing options - scroll down to __Customization__ section)_\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n              \"wrapper\": \"./path/to/your/wrapper-component.js\",\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\nWrapper component can look like this:\n\n```javascript\n// wrapper-component.js\nimport React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\n\nconst store = createStore(() => ({}), {})\n\nconst Component = (props) => {\n  return (\n    <React.Fragment>\n      <head>\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.css\" />\n      </head>\n      <Provider store={store}>\n        <BrowserRouter>\n          {props.children}\n        </BrowserRouter>\n      </Provider>\n    </React.Fragment>\n  )\n}\n\nexport default Component\n```\n\n## Styling React examples\n\nBetter-docs inserts all examples within an `iframe`. This results in the following styling options:\n\n1. If you pass styles inline - they will work right away.\n\n2. For `css modules` to work with `parcel` bundler - you have to install `postcss-modules` package:\n\n```\nyarn add postcss-modules\n```\n\nand create a `.postcssrc` file:\n\n\n```json\n// .postcssrc\n{\n\t\"modules\": true\n}\n```\n\n3. For [styled-components](https://www.styled-components.com/) you have to use wrapper component which looks like this:\n\n```jsx\nimport React from 'react'\nimport { StyleSheetManager } from 'styled-components'\n\nconst Component = (props) => {\n  const { frameContext } = props\n  return (\n    <StyleSheetManager target={frameContext.document.head}>\n      {props.children}\n    </StyleSheetManager>\n  )\n}\n\nexport default Component\n```\n\n## Adding commands to bundle entry file\n\n`@component` plugin creates an entry file: `.entry.js` in your _docs_ output folder. Sometimes you might want to add something to it. You can do this by passing: `component.entry` option, which is an array of strings.\n\nSo let's say you want to add `babel-polyfill` and 'bulma.css' framework to your bundle. You can do it like this:\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n                \"entry\": [\n                    \"import 'babel-polyfill';\",\n                    \"import 'bulma/css/bulma.css';\"\n                ]\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\n# Customization\n\nFirst of all, let me state that better-docs extends the `default` template. That is why default template parameters are also handled.\n\n[BETA]: You must explicitly set the `search` option of the `default` template to `true` to enable search\n\nTo customize the better-docs pass `options` to `templates['better-docs']`. section in your `jsdoc configuration file`.\n\nExample configuration file with settings for both `default` and `better-docs` templates:\n\n```json\n{\n    \"tags\": {\n        \"allowUnknownTags\": [\"category\"]\n    },\n    \"source\": {\n        \"include\": [\"./src\"],\n        \"includePattern\": \".js$\",\n        \"excludePattern\": \"(node_modules/|docs)\"\n    },\n    \"plugins\": [\n        \"plugins/markdown\",\n        \"jsdoc-mermaid\",\n        \"node_modules/better-docs/category\"\n    ],\n    \"opts\": {\n        \"encoding\": \"utf8\",\n        \"destination\": \"docs/\",\n        \"readme\": \"readme.md\",\n        \"recurse\": true,\n        \"verbose\": true,\n        \"tutorials\": \"./docs-src/tutorials\",\n        \"template\": \"better-docs\"\n    },\n    \"templates\": {\n        \"cleverLinks\": false,\n        \"monospaceLinks\": false,\n        \"search\": true,\n        \"default\": {\n            \"staticFiles\": {\n              \"include\": [\n                  \"./docs-src/statics\"\n              ]\n            }\n        },\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"logo\": \"images/logo.png\",\n            \"title\": \"\", // HTML title\n            \"css\": \"style.css\",\n            \"trackingCode\": \"tracking-code-which-will-go-to-the-HEAD\",\n\t    \"hideGenerator\": false,\n            \"navLinks\": [\n                {\n                    \"label\": \"Github\",\n                    \"href\": \"https://github.com/SoftwareBrothers/admin-bro\"\n                },\n                {\n                    \"label\": \"Example Application\",\n                    \"href\": \"https://admin-bro-example-app.herokuapp.com/admin\"\n                }\n            ]\n        }\n    }\n}\n```\n\n## Extras\n\n### typedef(import(...))\n\nbetter-docs also has one extra plugin for handling typescript'like types imports like (it has to be one-liner):\n\n```\n/** @typedef {import('./some-other-file').ExportedType} ExportedType */\n```\n\nIt simply removes that from the code so JSDoc wont throw an error. In order to use it add this plugin to your plugins section:\n\n```\n  \"plugins\": [\n        \"node_modules/better-docs/typedef-import\"\n    ],\n```\n\n# Setting up for the development\n\nIf you want to change the theme locally follow the steps:\n\n1. Clone the repo to the folder where you have the project:\n\n```\ncd your-project\ngit clone git@github.com:SoftwareBrothers/better-docs.git\n```\n\nor add it as a git submodule:\n\n```\ngit submodule add git@github.com:SoftwareBrothers/better-docs.git\n```\n\n2. Install the packages\n\n```\ncd better-docs\n\nnpm install\n\n# or\n\nyarn\n```\n\n3. Within the better-docs folder run the gulp script. It will regenerate documentation every time you change something.\n\nIt supports following EVN variables:\n\n* `DOCS_COMMAND` - a command in your root repo which you use to generate documentation: i.e. `DOCS_COMMAND='jsdoc -c jsdoc.json'` or `npm run docs` if you have `docs` command defined in `package.json` file\n* `DOCS_OUTPUT` - where your documentation is generated. It should point to the same folder your jsdoc `--destination` conf. But make sure that it is relative to the path where you cloned `better-docs`.\n* `DOCS` - list of folders from your original repo what you want to watch for changes. Separated by comma.\n\n```\ncd better-docs\nDOCS_COMMAND='npm run docs' DOCS=../src/**/*,../config/**/* DOCS_OUTPUT=../docs cd better-docs && gulp\n```\n\nThe script should launch the browser and refresh it whenever you change something in the template or in `DOCS`.\n\n# Setting up the jsdoc in your project\n\nIf you want to see how to setup jsdoc in your project - take a look at these brief tutorials:\n\n- JSDoc - https://www.youtube.com/watch?v=Yl6WARA3IhQ\n- better-docs and Mermaid: https://www.youtube.com/watch?v=UBMYogTzsBk\n\n# License\n\nbetter-docs is Copyright © 2019 SoftwareBrothers.co. It is free software and may be redistributed under the terms specified in the [LICENSE](LICENSE) file - MIT.\n\n# About SoftwareBrothers.co\n\n<img src=\"https://softwarebrothers.co/assets/images/software-brothers-logo-full.svg\" width=240>\n\n\nWe're an open, friendly team that helps clients from all over the world to transform their businesses and create astonishing products.\n\n* We are available for [hire](https://softwarebrothers.co/contact).\n* If you want to work for us - check out the [career page](https://softwarebrothers.co/career).\n","readmeFilename":"README.md","gitHead":"ddb469b1541cc45c9cb04e37c24bd92d2f6e79ad","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.4.0-beta.6","_nodeVersion":"10.22.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-H1IULjfdrvnt9swg7frN6Tpg8lFhJu+JGRoZ2qshqx3bzrulzZ5UjI0znT2KLTBZCqjXA6tMo9xEkNULric4RA==","shasum":"88dd5c1c213c3391b54fb2b3b953c6fdd5c669d5","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.4.0-beta.6.tgz","fileCount":157,"unpackedSize":921090,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaFpUCRA9TVsSAnZWagAAhP8P/RtFfnkDx1gvvIgO4Dxo\n7DsvKNY1OJ1jFsiJ1Rn3RIIK499ftXk98cn2RC53TdGgZsfeW6Q59q+W/UKX\nfwEKNqSxma1ZLHhFPHuGCMVaOjaN/TvYl66MBdZOd7lfpsqoXAVboyXiRFit\nyErDUp+W402aNYSnvff3wIxI2wtD3bZN2zBYvgZGdUCtyc4IGZFCQQuwbZTR\nggpUL74ao7/beIuoiPnKHpKjF9xua5MbBXjvAwenptu6GSyQvtISAWukUXW1\nluomMEygQ43cc20Q9Cd9pF9+xUQhXGkMaQfxgqp9sGKpTNlD4p5viexFSlVt\ncpo5iA0sIQETS7qnKnICymYRa89UJtYzpJDccv0UwgU1Z4bsfhNeeFTjfbmJ\nRdqGiNZhzDxNCTUZL9/2vzbxcqHqyHOLEYCGQ8C22lSeCH3RmR78V2dLjZEY\n51bARGoWvj0b5GPbhFv3LTWJ7Ir6k7dYhmcIVmojvTrfltg4lE398jijYCTz\nCV9Qy1mZ6enrMYxDVH/0QGAavDPtYpdy2zrzeR2gzmCctAvZgqwraz66wlSB\n1KhwveTvHgb0A6lV+eyXichHvbihoZ1z1dLPLDEkCc1+WNO/rYI34UTOh9OP\ndKhHpjgXyQmGPn9GvxkQGNoH7jOl06yiA0Zltsi4adNMNWlv9kVO0RyXZjwh\nRVnL\r\n=FrRM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBdu4s3KGME3LUqsfDWEMX4pRSQ3SmXHRPer7Tb5HFwgAiEA2k72VV33mZFMCSzMaPQoq+mHlZz0qEBba+ua1E2M0J4="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.4.0-beta.6_1600674387910_0.21975086475471972"},"_hasShrinkwrap":false},"2.4.0-beta.7":{"name":"better-docs","version":"2.4.0-beta.7","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","test:ts":"mocha -r ts-node/register -r tsconfig-paths/register src/**/*.spec.ts","build":"babel src/components --out-dir lib/components","build:ts":"tsc","build:css":"yarn run gulp build","build:all":"yarn build:css && yarn build:ts && yarn build","check:all":"yarn test && yarn test:ts && yarn build:all","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@semantic-release/git":"^9.0.0","@types/mocha":"^8.0.3","@typescript-eslint/eslint-plugin":"^2.3.1","@typescript-eslint/parser":"^2.3.1","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-mocha":"^6.2.2","eslint-plugin-react":"^7.12.4","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","husky":"^4.2.5","jsdoc":"^3.6.5","mocha":"^8.1.3","semantic-release":"^17.0.7","semantic-release-slack-bot":"^1.6.2","ts-node":"6.2.0","typescript":"^3.6.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","marked":"^1.1.1","prism-react-renderer":"^1.1.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","react-live":"^2.2.2","react-simple-code-editor":"^0.11.0","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"<img src=\"./readme/logo.png\" />\n\nDocumentation toolbox for your **javascript** / **typescript** projects based on JSDoc3 with **@category**, **@component** and **@optional** plugins.\n\nThis is how it looks:\n\n<table>\n  <tr>\n    <td>\n      <a href='./readme/class.png'><img src=\"./readme/class.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/with-mermaid.png'><img src=\"./readme/with-mermaid.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/component.png'><img src=\"./readme/component.png\" style=\"width: 300px\"/></a>\n    </td>\n  </tr>\n</table>\n\n# Example\n\nExample documentation can be found here: https://softwarebrothers.github.io/example-design-system/index.html\n\n# OpenSource SoftwareBrothers community\n\n- [Join the community](https://join.slack.com/t/adminbro/shared_invite/zt-czfb79t1-0U7pn_KCqd5Ts~lbJK0_RA) to get help and be inspired.\n- subscribe to our [newsletter](http://opensource.softwarebrothers.co)\n\n# Installation\n\n```sh\nnpm install --save-dev better-docs\n```\n\n# Theme Usage\n\n## With command line\n\nAssuming that you have [jsdoc](https://github.com/jsdoc/jsdoc) installed globally:\n\n```\njsdoc your-documented-file.js -t ./node_modules/better-docs\n```\n\n## With npm and configuration file\n\nIn your projects package.json file - add a new script:\n\n```\n\"script\": {\n  \"docs\": \"jsdoc -c jsdoc.json\"\n}\n```\n\nin your `jsdoc.json` file, set the template:\n\n```json\n\"opts\": {\n  \"template\": \"node_modules/better-docs\"\n}\n```\n\n# TypeScript support\n\nbetter-docs has a plugin which allows you to generate documentation from your TypeScript codebase.\n\n## Usage\n\nTo use it update your `jsdoc.json` file\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"optional\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/typescript\"\n],\n\"source\": {\n    \"includePattern\": \"\\\\.(jsx|js|ts|tsx)$\",\n},\n...\n```\n\nAnd now you can run your `jsdoc` command and parse TypeScript files.\n\n## How it works?\n\nIt performs 4 operations:\n\n* First of all it transpiles all .ts and .tsx files to .js, so that all comments used by you are treated\nas a regular JSDoc comments.\n\nFurthermore it:\n\n* Converts all your commented `type` aliases to `@typedef`\n* Converts all your commented `interface` definitions to `@interface`,\n* Converts descriptions for your public, protected, static class members\n\nso they can be printed by JSDoc automatically.\n\n## Examples\n\n```\n/**\n * ActionRequest\n * @memberof Action\n * @alias ActionRequest\n */\nexport type ActionRequest = {\n  /**\n   * parameters passed in an URL\n   */\n  params: {\n    /**\n     * Id of current resource\n     */\n    resourceId: string;\n    /**\n     * Id of current record\n     */\n    recordId?: string;\n    /**\n     * Name of an action\n     */\n    action: string;\n\n    [key: string]: any;\n  };\n}\n```\n\nis converted to:\n\n```\n/**\n * ActionRequest'\n * @memberof Action'\n * @alias ActionRequest'\n * @typedef {object} ActionRequest'\n * @property {object} params   parameters passed in an URL'\n * @property {string} params.resourceId   Id of current resource'\n * @property {string} [params.recordId]   Id of current record'\n * @property {string} params.action   Name of an action'\n * @property {any} params.{...}'\n */\n```\n\nAlso you can comment the interface in a similar fashion:\n\n```\n/**\n * JSON representation of an {@link Action}\n * @see Action\n */\nexport default interface ActionJSON {\n  /**\n   * Unique action name\n   */\n  name: string;\n  /**\n   * Type of an action\n   */\n  actionType: 'record' | 'resource' | Array<'record' | 'resource'>;\n  /**\n   * Action icon\n   */\n  icon?: string;\n  /**\n   * Action label - visible on the frontend\n   */\n  label: string;\n  /**\n   * Guarding message\n   */\n  guard?: string;\n  /**\n   * If action should have a filter (for resource actions)\n   */\n  showFilter: boolean;\n  /**\n   * Action component. When set to false action will be invoked immediately after clicking it,\n   * to put in another words: there wont be an action view\n   */\n  component?: string | false | null;\n}\n```\n\nor describe your class properties like that:\n\n```\n/**\n * Class name\n */\nclass ClassName {\n  /**\n   * Some private member which WONT be in jsdoc (because it is private)\n   */\n  private name: string\n\n  /**\n   * Some protected member which will go to the docs\n   */\n  protected somethingIsA: number\n\n  /**\n   * And static member which will goes to the docs.\n   */\n  static someStaticMember: number\n\n  public notCommentedWontBeInJSDoc: string\n\n  constructor(color: string) {}\n}\n```\n\n# @category plugin\n\nbetter-docs also allows you to nest your documentation into categories and subcategories in the sidebar menu.\n\n## Usage\n\nTo add a plugin - update `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"category\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/category\"\n],\n...\n```\n\nand then you can use `@category` and/or `@subcategory` tag in your code:\n\n```\n/**\n * Class description\n * @category Category\n * @subcategory All\n */\nclass YourClass {\n  ....\n}\n```\n\n# @component plugin [BETA]\n\nBetter-docs also allows you to document your [React](https://reactjs.org/) and [Vue](https://vuejs.org/) components automatically. The only thing you have to do is to add a `@component` tag. It will take all props from your components and along with an `@example` tag - will generate a __live preview__.\n\n## Installation instructions\n\nSimilar as before to add a plugin - you have to update the `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"component\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/component\"\n],\n...\n```\n\nSince __component__ plugin uses [parcel](https://parceljs.org) as a bundler you have to install it globally. To do this run:\n\n```\n# if you use npm\nnpm install -g parcel-bundler\n\n# or yarn\nyarn global add parcel-bundler\n```\n\n## Usage\n\nTo document components simply add `@component` in your JSDoc documentation:\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n */\nconst Documented = (props) => {\n  const { text } = props\n  return (\n    <div>{text}</div>\n  )\n}\n\nDocumented.propTypes = {\n  /**\n   * Text is a text\n   */\n  text: PropTypes.string.isRequired,\n}\n\nexport default Documented\n```\n\nThe plugin will take the information from your [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) and put them into an array.\n\nFor Vue it looks similar:\n\n```vue\n<script>\n/**\n * @component\n */\nexport default {\n  name: 'ExampleComponent',\n  props: {\n    spent: {\n      type: Number,\n      default: 30,\n    },\n    remaining: {\n      type: Number,\n      default: 40,\n    }\n  },\n}\n</script>\n```\n\nIn this case, props will be taken from `props` property.\n\n## Preview\n\n`@component` plugin also modifies the behaviour of `@example` tag in a way that it can generate an actual __component preview__. What you have to do is to add an `@example` tag and return component from it:\n\n**React example:**\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n * @example\n * const text = 'some example text'\n * return (\n *   <Documented text={text} />\n * )\n */\nconst Documented = (props) => {\n  ///...\n}\n```\n\n**Vue example 1:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * <ExampleComponent :spent=\"100\" :remaining=\"50\"></ExampleComponent>\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\n**Vue example 2:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * {\n *   template: `<Box>\n *     <ProgressBar :spent=\"spent\" :remaining=\"50\"></ProgressBar>\n *     <ProgressBar :spent=\"50\" :remaining=\"50\" style=\"margin-top: 20px\"></ProgressBar>\n *   </Box>`,\n *   data: function() {\n *     return {spent: 223};\n *   }\n * }\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\nYou can put as many `@example` tags as you like in one component and \"caption\" each of them like this:\n\n```javascript\n/**\n * @component\n * @example <caption>Example usage of method1.</caption>\n * // your example here\n */\n```\n\n## Mixing components in preview\n\nAlso you can use multiple components which are documented with `@component` tag together. So lets say you have 2 components and in the second component you want to use the first one as a wrapper like this:\n\n```javascript\n// component-1.js\n/**\n * Component 1\n * @component\n *\n */\nconst Component1 = (props) => {...}\n\n// component-2.js\n/**\n * Component 2\n * @component\n * @example\n * return (\n *   <Component1>\n *     <Component2 prop1={'some value'}/>\n *     <Component2 prop1={'some other value'}/>\n *   </Component1>\n * )\n */\nconst Component2 = (props) => {...}\n```\n\n## Wrapper component [only React]\n\nMost probably your components will have to be run within a particular context, like within redux store provider or with custom CSS libraries.\nYou can simulate this by passing a `component.wrapper` in your `jsdoc.json`:\n_(To read more about passing options - scroll down to __Customization__ section)_\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n              \"wrapper\": \"./path/to/your/wrapper-component.js\",\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\nWrapper component can look like this:\n\n```javascript\n// wrapper-component.js\nimport React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\n\nconst store = createStore(() => ({}), {})\n\nconst Component = (props) => {\n  return (\n    <React.Fragment>\n      <head>\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.css\" />\n      </head>\n      <Provider store={store}>\n        <BrowserRouter>\n          {props.children}\n        </BrowserRouter>\n      </Provider>\n    </React.Fragment>\n  )\n}\n\nexport default Component\n```\n\n## Styling React examples\n\nBetter-docs inserts all examples within an `iframe`. This results in the following styling options:\n\n1. If you pass styles inline - they will work right away.\n\n2. For `css modules` to work with `parcel` bundler - you have to install `postcss-modules` package:\n\n```\nyarn add postcss-modules\n```\n\nand create a `.postcssrc` file:\n\n\n```json\n// .postcssrc\n{\n\t\"modules\": true\n}\n```\n\n3. For [styled-components](https://www.styled-components.com/) you have to use wrapper component which looks like this:\n\n```jsx\nimport React from 'react'\nimport { StyleSheetManager } from 'styled-components'\n\nconst Component = (props) => {\n  const { frameContext } = props\n  return (\n    <StyleSheetManager target={frameContext.document.head}>\n      {props.children}\n    </StyleSheetManager>\n  )\n}\n\nexport default Component\n```\n\n## Adding commands to bundle entry file\n\n`@component` plugin creates an entry file: `.entry.js` in your _docs_ output folder. Sometimes you might want to add something to it. You can do this by passing: `component.entry` option, which is an array of strings.\n\nSo let's say you want to add `babel-polyfill` and 'bulma.css' framework to your bundle. You can do it like this:\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n                \"entry\": [\n                    \"import 'babel-polyfill';\",\n                    \"import 'bulma/css/bulma.css';\"\n                ]\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\n# Customization\n\nFirst of all, let me state that better-docs extends the `default` template. That is why default template parameters are also handled.\n\n[BETA]: You must explicitly set the `search` option of the `default` template to `true` to enable search\n\nTo customize the better-docs pass `options` to `templates['better-docs']`. section in your `jsdoc configuration file`.\n\nExample configuration file with settings for both `default` and `better-docs` templates:\n\n```json\n{\n    \"tags\": {\n        \"allowUnknownTags\": [\"category\"]\n    },\n    \"source\": {\n        \"include\": [\"./src\"],\n        \"includePattern\": \".js$\",\n        \"excludePattern\": \"(node_modules/|docs)\"\n    },\n    \"plugins\": [\n        \"plugins/markdown\",\n        \"jsdoc-mermaid\",\n        \"node_modules/better-docs/category\"\n    ],\n    \"opts\": {\n        \"encoding\": \"utf8\",\n        \"destination\": \"docs/\",\n        \"readme\": \"readme.md\",\n        \"recurse\": true,\n        \"verbose\": true,\n        \"tutorials\": \"./docs-src/tutorials\",\n        \"template\": \"better-docs\"\n    },\n    \"templates\": {\n        \"cleverLinks\": false,\n        \"monospaceLinks\": false,\n        \"search\": true,\n        \"default\": {\n            \"staticFiles\": {\n              \"include\": [\n                  \"./docs-src/statics\"\n              ]\n            }\n        },\n        \"better-docs\": {\n            \"softwareBrothers\": \"slightly-paranoid\",\n            \"name\": \"AdminBro Documentation\",\n            \"logo\": \"images/logo.png\",\n            \"title\": \"\", // HTML title\n            \"css\": \"style.css\",\n            \"trackingCode\": \"tracking-code-which-will-go-to-the-HEAD\",\n\t    \"hideGenerator\": false,\n            \"navLinks\": [\n                {\n                    \"label\": \"Github\",\n                    \"href\": \"https://github.com/SoftwareBrothers/admin-bro\"\n                },\n                {\n                    \"label\": \"Example Application\",\n                    \"href\": \"https://admin-bro-example-app.herokuapp.com/admin\"\n                }\n            ]\n        }\n    }\n}\n```\n\n## Extras\n\n### typedef(import(...))\n\nbetter-docs also has one extra plugin for handling typescript'like types imports like (it has to be one-liner):\n\n```\n/** @typedef {import('./some-other-file').ExportedType} ExportedType */\n```\n\nIt simply removes that from the code so JSDoc wont throw an error. In order to use it add this plugin to your plugins section:\n\n```\n  \"plugins\": [\n        \"node_modules/better-docs/typedef-import\"\n    ],\n```\n\n# Setting up for the development\n\nIf you want to change the theme locally follow the steps:\n\n1. Clone the repo to the folder where you have the project:\n\n```\ncd your-project\ngit clone git@github.com:SoftwareBrothers/better-docs.git\n```\n\nor add it as a git submodule:\n\n```\ngit submodule add git@github.com:SoftwareBrothers/better-docs.git\n```\n\n2. Install the packages\n\n```\ncd better-docs\n\nnpm install\n\n# or\n\nyarn\n```\n\n3. Within the better-docs folder run the gulp script. It will regenerate documentation every time you change something.\n\nIt supports following EVN variables:\n\n* `DOCS_COMMAND` - a command in your root repo which you use to generate documentation: i.e. `DOCS_COMMAND='jsdoc -c jsdoc.json'` or `npm run docs` if you have `docs` command defined in `package.json` file\n* `DOCS_OUTPUT` - where your documentation is generated. It should point to the same folder your jsdoc `--destination` conf. But make sure that it is relative to the path where you cloned `better-docs`.\n* `DOCS` - list of folders from your original repo what you want to watch for changes. Separated by comma.\n\n```\ncd better-docs\nDOCS_COMMAND='npm run docs' DOCS=../src/**/*,../config/**/* DOCS_OUTPUT=../docs cd better-docs && gulp\n```\n\nThe script should launch the browser and refresh it whenever you change something in the template or in `DOCS`.\n\n# Setting up the jsdoc in your project\n\nIf you want to see how to setup jsdoc in your project - take a look at these brief tutorials:\n\n- JSDoc - https://www.youtube.com/watch?v=Yl6WARA3IhQ\n- better-docs and Mermaid: https://www.youtube.com/watch?v=UBMYogTzsBk\n\n# License\n\nbetter-docs is Copyright © 2019 SoftwareBrothers.co. It is free software and may be redistributed under the terms specified in the [LICENSE](LICENSE) file - MIT.\n\n# About SoftwareBrothers.co\n\n<img src=\"https://softwarebrothers.co/assets/images/software-brothers-logo-full.svg\" width=240>\n\n\nWe're an open, friendly team that helps clients from all over the world to transform their businesses and create astonishing products.\n\n* We are available for [hire](https://softwarebrothers.co/contact).\n* If you want to work for us - check out the [career page](https://softwarebrothers.co/career).\n","readmeFilename":"README.md","gitHead":"336baef0242a56e62384c7be75f101eed7634a00","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.4.0-beta.7","_nodeVersion":"10.22.0","_npmVersion":"6.14.5","dist":{"integrity":"sha512-HqGxkbrse472oew2jU+YKHoe72Z7obDUQ27b6kXzUhwn/BVbHMMnfrsYQWMGu+zxR36ofTBMlFCtTXpb2hAGEA==","shasum":"d85a6d6b614d6485e641688febae1bbc404db3f2","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.4.0-beta.7.tgz","fileCount":159,"unpackedSize":1134833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaHh6CRA9TVsSAnZWagAA0UYQAImITIZ9Y8F/IXvSda0y\nfbrU2cmuUFgSrYBWzqxfbjs47ljAGPLABinY7woTNEq8N03l4HxAm121NJ2m\ntI3Yva88WjOfJ6OTv8nJ94WSssJc/vc8MPlB2WbIgy/eVvz7Cmv8TfYugwDn\nw+hfjKQ2TSCohVWtCqvAZbn6buQRoGWjQzbti86K4rDg5IWMfy6ZwgREnY3d\na1NcrdTIj9PN8lkEFDsdrMJoXichV2SpzLAuTjOsQuyOkItDJRumrH0/o8/7\nZLgEwbjVWFeB/IWIl9fpD/cBD1uyrN0opW+AsYNdZbZa4Ygdwc7tV7n/HjW0\nKtlA9I7XRB0rd4zDHwjKLdZNj6cX91k5xrR/R3f8Yt2rNT4aPJdsQa/XvK9P\nQllm4EeBUy+s3iCYGB4wVsJgF0Epoo3xHIjElh15mLJ6nsFD0sNjnUbT3WOn\ntWIjk6zpp/sCOo2cyIJzdEGXqspkk2kKr2O7HvXscCjvPBRoJzeKsKhGHRtV\nhKiDgB6MpiazTTYc8zMeP8YpakmMcilgbAO78Aj6hfl28pwdr30cdinhpyZy\nvIxgK5Yl4q4f6k1byJcKnNuV7zz22EuYuEBxzYbJQeeKs72RQmdSTu1QEEVX\nMtAfWsK9pD1yStRNHvTq8K7z/gnk3jzHsPvZye71Gg6nfmPECxKU8r2XQUhr\nz2ig\r\n=HL8e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFG8EzyQEwwKmXVCpoLAx5XU/u3PrGMC5kQg1pxE8sxNAiEAyAUG6nvyZOPHPZph4mZtMJ5n2W0eSmNewW/B3CH0MXU="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.4.0-beta.7_1600682106381_0.08723045778664407"},"_hasShrinkwrap":false},"2.4.0-beta.8":{"name":"better-docs","version":"2.4.0-beta.8","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","test:ts":"mocha -r ts-node/register -r tsconfig-paths/register src/**/*.spec.ts","build":"babel src/components --out-dir lib/components","build:ts":"tsc","build:css":"yarn run gulp build","build:all":"yarn build:css && yarn build:ts && yarn build","check:all":"yarn test && yarn test:ts && yarn build:all","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@semantic-release/git":"^9.0.0","@types/mocha":"^8.0.3","@typescript-eslint/eslint-plugin":"^2.3.1","@typescript-eslint/parser":"^2.3.1","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-mocha":"^6.2.2","eslint-plugin-react":"^7.12.4","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","husky":"^4.2.5","jsdoc":"^3.6.5","mocha":"^8.1.3","semantic-release":"^17.0.7","semantic-release-slack-bot":"^1.6.2","ts-node":"6.2.0","typescript":"^3.6.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","marked":"^1.1.1","prism-react-renderer":"^1.1.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","react-live":"^2.2.2","react-simple-code-editor":"^0.11.0","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"<img src=\"./readme/logo.png\" />\n\nDocumentation toolbox for your **javascript** / **typescript** projects based on JSDoc3 with **@category**, **@component** and **@optional** plugins.\n\nThis is how it looks:\n\n<table>\n  <tr>\n    <td>\n      <a href='./readme/class.png'><img src=\"./readme/class.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/with-mermaid.png'><img src=\"./readme/with-mermaid.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/component.png'><img src=\"./readme/component.png\" style=\"width: 300px\"/></a>\n    </td>\n  </tr>\n</table>\n\n# Example\n\nExample documentation can be found here: https://softwarebrothers.github.io/example-design-system/index.html\n\n# OpenSource SoftwareBrothers community\n\n- [Join the community](https://join.slack.com/t/adminbro/shared_invite/zt-czfb79t1-0U7pn_KCqd5Ts~lbJK0_RA) to get help and be inspired.\n- subscribe to our [newsletter](http://opensource.softwarebrothers.co)\n\n# Installation\n\n```sh\nnpm install --save-dev better-docs\n```\n\n# Theme Usage\n\n## With command line\n\nAssuming that you have [jsdoc](https://github.com/jsdoc/jsdoc) installed globally:\n\n```\njsdoc your-documented-file.js -t ./node_modules/better-docs\n```\n\n## With npm and configuration file\n\nIn your projects package.json file - add a new script:\n\n```\n\"script\": {\n  \"docs\": \"jsdoc -c jsdoc.json\"\n}\n```\n\nin your `jsdoc.json` file, set the template:\n\n```json\n\"opts\": {\n  \"template\": \"node_modules/better-docs\"\n}\n```\n\n# TypeScript support\n\nbetter-docs has a plugin which allows you to generate documentation from your TypeScript codebase.\n\n## Usage\n\nTo use it update your `jsdoc.json` file\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"optional\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/typescript\"\n],\n\"source\": {\n    \"includePattern\": \"\\\\.(jsx|js|ts|tsx)$\",\n},\n...\n```\n\nAnd now you can run your `jsdoc` command and parse TypeScript files.\n\n## How it works?\n\nIt performs 4 operations:\n\n* First of all it transpiles all .ts and .tsx files to .js, so that all comments used by you are treated\nas a regular JSDoc comments.\n\nFurthermore it:\n\n* Converts all your commented `type` aliases to `@typedef`\n* Converts all your commented `interface` definitions to `@interface`,\n* Converts descriptions for your public, protected, static class members\n\nso they can be printed by JSDoc automatically.\n\n## Examples\n\n```\n/**\n * ActionRequest\n * @memberof Action\n * @alias ActionRequest\n */\nexport type ActionRequest = {\n  /**\n   * parameters passed in an URL\n   */\n  params: {\n    /**\n     * Id of current resource\n     */\n    resourceId: string;\n    /**\n     * Id of current record\n     */\n    recordId?: string;\n    /**\n     * Name of an action\n     */\n    action: string;\n\n    [key: string]: any;\n  };\n}\n```\n\nis converted to:\n\n```\n/**\n * ActionRequest'\n * @memberof Action'\n * @alias ActionRequest'\n * @typedef {object} ActionRequest'\n * @property {object} params   parameters passed in an URL'\n * @property {string} params.resourceId   Id of current resource'\n * @property {string} [params.recordId]   Id of current record'\n * @property {string} params.action   Name of an action'\n * @property {any} params.{...}'\n */\n```\n\nAlso you can comment the interface in a similar fashion:\n\n```\n/**\n * JSON representation of an {@link Action}\n * @see Action\n */\nexport default interface ActionJSON {\n  /**\n   * Unique action name\n   */\n  name: string;\n  /**\n   * Type of an action\n   */\n  actionType: 'record' | 'resource' | Array<'record' | 'resource'>;\n  /**\n   * Action icon\n   */\n  icon?: string;\n  /**\n   * Action label - visible on the frontend\n   */\n  label: string;\n  /**\n   * Guarding message\n   */\n  guard?: string;\n  /**\n   * If action should have a filter (for resource actions)\n   */\n  showFilter: boolean;\n  /**\n   * Action component. When set to false action will be invoked immediately after clicking it,\n   * to put in another words: there wont be an action view\n   */\n  component?: string | false | null;\n}\n```\n\nor describe your class properties like that:\n\n```\n/**\n * Class name\n */\nclass ClassName {\n  /**\n   * Some private member which WONT be in jsdoc (because it is private)\n   */\n  private name: string\n\n  /**\n   * Some protected member which will go to the docs\n   */\n  protected somethingIsA: number\n\n  /**\n   * And static member which will goes to the docs.\n   */\n  static someStaticMember: number\n\n  public notCommentedWontBeInJSDoc: string\n\n  constructor(color: string) {}\n}\n```\n\n# @category plugin\n\nbetter-docs also allows you to nest your documentation into categories and subcategories in the sidebar menu.\n\n## Usage\n\nTo add a plugin - update `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"category\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/category\"\n],\n...\n```\n\nand then you can use `@category` and/or `@subcategory` tag in your code:\n\n```\n/**\n * Class description\n * @category Category\n * @subcategory All\n */\nclass YourClass {\n  ....\n}\n```\n\n# @component plugin [BETA]\n\nBetter-docs also allows you to document your [React](https://reactjs.org/) and [Vue](https://vuejs.org/) components automatically. The only thing you have to do is to add a `@component` tag. It will take all props from your components and along with an `@example` tag - will generate a __live preview__.\n\n## Installation instructions\n\nSimilar as before to add a plugin - you have to update the `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"component\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/component\"\n],\n...\n```\n\nSince __component__ plugin uses [parcel](https://parceljs.org) as a bundler you have to install it globally. To do this run:\n\n```\n# if you use npm\nnpm install -g parcel-bundler\n\n# or yarn\nyarn global add parcel-bundler\n```\n\n## Usage\n\nTo document components simply add `@component` in your JSDoc documentation:\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n */\nconst Documented = (props) => {\n  const { text } = props\n  return (\n    <div>{text}</div>\n  )\n}\n\nDocumented.propTypes = {\n  /**\n   * Text is a text\n   */\n  text: PropTypes.string.isRequired,\n}\n\nexport default Documented\n```\n\nThe plugin will take the information from your [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) and put them into an array.\n\nFor Vue it looks similar:\n\n```vue\n<script>\n/**\n * @component\n */\nexport default {\n  name: 'ExampleComponent',\n  props: {\n    spent: {\n      type: Number,\n      default: 30,\n    },\n    remaining: {\n      type: Number,\n      default: 40,\n    }\n  },\n}\n</script>\n```\n\nIn this case, props will be taken from `props` property.\n\n## Preview\n\n`@component` plugin also modifies the behaviour of `@example` tag in a way that it can generate an actual __component preview__. What you have to do is to add an `@example` tag and return component from it:\n\n**React example:**\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n * @example\n * const text = 'some example text'\n * return (\n *   <Documented text={text} />\n * )\n */\nconst Documented = (props) => {\n  ///...\n}\n```\n\n**Vue example 1:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * <ExampleComponent :spent=\"100\" :remaining=\"50\"></ExampleComponent>\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\n**Vue example 2:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * {\n *   template: `<Box>\n *     <ProgressBar :spent=\"spent\" :remaining=\"50\"></ProgressBar>\n *     <ProgressBar :spent=\"50\" :remaining=\"50\" style=\"margin-top: 20px\"></ProgressBar>\n *   </Box>`,\n *   data: function() {\n *     return {spent: 223};\n *   }\n * }\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\nYou can put as many `@example` tags as you like in one component and \"caption\" each of them like this:\n\n```javascript\n/**\n * @component\n * @example <caption>Example usage of method1.</caption>\n * // your example here\n */\n```\n\n## Mixing components in preview\n\nAlso you can use multiple components which are documented with `@component` tag together. So lets say you have 2 components and in the second component you want to use the first one as a wrapper like this:\n\n```javascript\n// component-1.js\n/**\n * Component 1\n * @component\n *\n */\nconst Component1 = (props) => {...}\n\n// component-2.js\n/**\n * Component 2\n * @component\n * @example\n * return (\n *   <Component1>\n *     <Component2 prop1={'some value'}/>\n *     <Component2 prop1={'some other value'}/>\n *   </Component1>\n * )\n */\nconst Component2 = (props) => {...}\n```\n\n## Wrapper component [only React]\n\nMost probably your components will have to be run within a particular context, like within redux store provider or with custom CSS libraries.\nYou can simulate this by passing a `component.wrapper` in your `jsdoc.json`:\n_(To read more about passing options - scroll down to __Customization__ section)_\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n              \"wrapper\": \"./path/to/your/wrapper-component.js\",\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\nWrapper component can look like this:\n\n```javascript\n// wrapper-component.js\nimport React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\n\nconst store = createStore(() => ({}), {})\n\nconst Component = (props) => {\n  return (\n    <React.Fragment>\n      <head>\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.css\" />\n      </head>\n      <Provider store={store}>\n        <BrowserRouter>\n          {props.children}\n        </BrowserRouter>\n      </Provider>\n    </React.Fragment>\n  )\n}\n\nexport default Component\n```\n\n## Styling React examples\n\nBetter-docs inserts all examples within an `iframe`. This results in the following styling options:\n\n1. If you pass styles inline - they will work right away.\n\n2. For `css modules` to work with `parcel` bundler - you have to install `postcss-modules` package:\n\n```\nyarn add postcss-modules\n```\n\nand create a `.postcssrc` file:\n\n\n```json\n// .postcssrc\n{\n\t\"modules\": true\n}\n```\n\n3. For [styled-components](https://www.styled-components.com/) you have to use wrapper component which looks like this:\n\n```jsx\nimport React from 'react'\nimport { StyleSheetManager } from 'styled-components'\n\nconst Component = (props) => {\n  const { frameContext } = props\n  return (\n    <StyleSheetManager target={frameContext.document.head}>\n      {props.children}\n    </StyleSheetManager>\n  )\n}\n\nexport default Component\n```\n\n## Adding commands to bundle entry file\n\n`@component` plugin creates an entry file: `.entry.js` in your _docs_ output folder. Sometimes you might want to add something to it. You can do this by passing: `component.entry` option, which is an array of strings.\n\nSo let's say you want to add `babel-polyfill` and 'bulma.css' framework to your bundle. You can do it like this:\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n                \"entry\": [\n                    \"import 'babel-polyfill';\",\n                    \"import 'bulma/css/bulma.css';\"\n                ]\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\n# Customization\n\nFirst of all, let me state that better-docs extends the `default` template. That is why default template parameters are also handled.\n\n[BETA]: You must explicitly set the `search` option of the `default` template to `true` to enable search\n\nTo customize the better-docs pass `options` to `templates['better-docs']`. section in your `jsdoc configuration file`.\n\nExample configuration file with settings for both `default` and `better-docs` templates:\n\n```json\n{\n    \"tags\": {\n        \"allowUnknownTags\": [\"category\"]\n    },\n    \"source\": {\n        \"include\": [\"./src\"],\n        \"includePattern\": \".js$\",\n        \"excludePattern\": \"(node_modules/|docs)\"\n    },\n    \"plugins\": [\n        \"plugins/markdown\",\n        \"jsdoc-mermaid\",\n        \"node_modules/better-docs/category\"\n    ],\n    \"opts\": {\n        \"encoding\": \"utf8\",\n        \"destination\": \"docs/\",\n        \"readme\": \"readme.md\",\n        \"recurse\": true,\n        \"verbose\": true,\n        \"tutorials\": \"./docs-src/tutorials\",\n        \"template\": \"better-docs\"\n    },\n    \"templates\": {\n        \"cleverLinks\": false,\n        \"monospaceLinks\": false,\n        \"search\": true,\n        \"default\": {\n            \"staticFiles\": {\n              \"include\": [\n                  \"./docs-src/statics\"\n              ]\n            }\n        },\n        \"better-docs\": {\n            \"softwareBrothers\": \"slightly-paranoid\",\n            \"name\": \"AdminBro Documentation\",\n            \"logo\": \"images/logo.png\",\n            \"title\": \"\", // HTML title\n            \"css\": \"style.css\",\n            \"trackingCode\": \"tracking-code-which-will-go-to-the-HEAD\",\n\t    \"hideGenerator\": false,\n            \"navLinks\": [\n                {\n                    \"label\": \"Github\",\n                    \"href\": \"https://github.com/SoftwareBrothers/admin-bro\"\n                },\n                {\n                    \"label\": \"Example Application\",\n                    \"href\": \"https://admin-bro-example-app.herokuapp.com/admin\"\n                }\n            ]\n        }\n    }\n}\n```\n\n## Extras\n\n### typedef(import(...))\n\nbetter-docs also has one extra plugin for handling typescript'like types imports like (it has to be one-liner):\n\n```\n/** @typedef {import('./some-other-file').ExportedType} ExportedType */\n```\n\nIt simply removes that from the code so JSDoc wont throw an error. In order to use it add this plugin to your plugins section:\n\n```\n  \"plugins\": [\n        \"node_modules/better-docs/typedef-import\"\n    ],\n```\n\n# Setting up for the development\n\nIf you want to change the theme locally follow the steps:\n\n1. Clone the repo to the folder where you have the project:\n\n```\ncd your-project\ngit clone git@github.com:SoftwareBrothers/better-docs.git\n```\n\nor add it as a git submodule:\n\n```\ngit submodule add git@github.com:SoftwareBrothers/better-docs.git\n```\n\n2. Install the packages\n\n```\ncd better-docs\n\nnpm install\n\n# or\n\nyarn\n```\n\n3. Within the better-docs folder run the gulp script. It will regenerate documentation every time you change something.\n\nIt supports following EVN variables:\n\n* `DOCS_COMMAND` - a command in your root repo which you use to generate documentation: i.e. `DOCS_COMMAND='jsdoc -c jsdoc.json'` or `npm run docs` if you have `docs` command defined in `package.json` file\n* `DOCS_OUTPUT` - where your documentation is generated. It should point to the same folder your jsdoc `--destination` conf. But make sure that it is relative to the path where you cloned `better-docs`.\n* `DOCS` - list of folders from your original repo what you want to watch for changes. Separated by comma.\n\n```\ncd better-docs\nDOCS_COMMAND='npm run docs' DOCS=../src/**/*,../config/**/* DOCS_OUTPUT=../docs cd better-docs && gulp\n```\n\nThe script should launch the browser and refresh it whenever you change something in the template or in `DOCS`.\n\n# Setting up the jsdoc in your project\n\nIf you want to see how to setup jsdoc in your project - take a look at these brief tutorials:\n\n- JSDoc - https://www.youtube.com/watch?v=Yl6WARA3IhQ\n- better-docs and Mermaid: https://www.youtube.com/watch?v=UBMYogTzsBk\n\n# License\n\nbetter-docs is Copyright © 2019 SoftwareBrothers.co. It is free software and may be redistributed under the terms specified in the [LICENSE](LICENSE) file - MIT.\n\n# About SoftwareBrothers.co\n\n<img src=\"https://softwarebrothers.co/assets/images/software-brothers-logo-full.svg\" width=240>\n\n\nWe're an open, friendly team that helps clients from all over the world to transform their businesses and create astonishing products.\n\n* We are available for [hire](https://softwarebrothers.co/contact).\n* If you want to work for us - check out the [career page](https://softwarebrothers.co/career).\n","readmeFilename":"README.md","gitHead":"e98ed39154ee47a20f56af3f29ec85f4d8c6e5c6","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.4.0-beta.8","_nodeVersion":"10.22.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-CLOjiB+PPmPkCLtB5pHteyZi2kXngMXmvhDw5gIetDN0ArZALAge2ruhvNh8QKUitaclvKyWeCLuDe4uR/ekuw==","shasum":"b972bcbfcc677cf95e72429418e07ad8299cbdb8","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.4.0-beta.8.tgz","fileCount":162,"unpackedSize":1140761,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfa4Q0CRA9TVsSAnZWagAAdigP/11usEaXUS3VihFxE9SF\nLHQhNBqM2syqGa5StlmcGQ6ha2TmlPELXyS88pag6by3P8GB8Sc4wwe/nBLC\nv/MlpBy4Sd+3OtNgDE/W773T+ct03oafGt6PVZPFvGoTDOfhg4X3GcwokEIA\n1TDFaT/gIjx2nF+NKHHtO8M+mx1M/axjuI3+8dngkKDY2/oazPDfdlxJWz3C\now0LmUTpiqewFgId0NoI0frDXsjNy2RG4JzdZykCMP+PxaCka7rs++7XYoyc\nwZjvZAYYeOYnIfb+g1apBg2Is8If+MXA9bBCe4YoudQs4WBLJ/DfKOzTNUCr\n4kcUNts5fCkI+oFluSgW1oR+u34+ciSgbJQ3PDOfRaraPYdLDt1Ue1WO5VIv\nkkHvSofPSvjfqejl/BL9b8QXpttMbAiFbBC+uxZaSrvdxHVqIpVyVRc385Ga\nTaR+5LRULKszJKaA76FJ4L48au5Mvk9gpkZ2KR0AlwS5Nn5ETJnvcaz0kw68\nEW1JXYedEG0zrPbK5tYZKKNkvb5tiLVmsozeKuG260/FRijiFU5tEYHqNSwd\nFziCNPnK8zlfGkDhaagVp6wcRWMpY7pNTvhZQAoeaXrltgLGaetF3g++Ol45\nMtbAI1AEhQRcSUt2CNuVC/H5oN6xG/CpN1aBUvu730L4klO02xzwvQrlX+Of\njVmc\r\n=QDQS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF+3Vbo7z7m+7DXc/nC4qDRS5DnL+NymOQuyNv0bz9fiAiEAlyxfGbZCEgudIRyKeecyPl/+Brme/AKhHJXTHZGFQhk="}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.4.0-beta.8_1600881715389_0.5891064092182301"},"_hasShrinkwrap":false},"2.4.0-beta.9":{"name":"better-docs","version":"2.4.0-beta.9","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","test:ts":"mocha -r ts-node/register -r tsconfig-paths/register src/**/*.spec.ts","build":"babel src/components --out-dir lib/components","build:ts":"tsc","build:css":"yarn run gulp build","build:all":"yarn build:css && yarn build:ts && yarn build","check:all":"yarn test && yarn test:ts && yarn build:all","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.5.5","@babel/core":"^7.4.4","@babel/preset-env":"^7.5.5","@babel/preset-react":"^7.0.0","@commitlint/cli":"^8.3.5","@commitlint/config-conventional":"^8.3.4","@semantic-release/git":"^9.0.0","@types/mocha":"^8.0.3","@typescript-eslint/eslint-plugin":"^2.3.1","@typescript-eslint/parser":"^2.3.1","@vue/component-compiler-utils":"^3.0.0","browser-sync":"^2.26.3","bulma":"^0.7.5","chai":"^4.2.0","eslint":"^5.10.0","eslint-config-airbnb":"^17.1.0","eslint-plugin-import":"^2.14.0","eslint-plugin-jsx-a11y":"^6.2.1","eslint-plugin-mocha":"^6.2.2","eslint-plugin-react":"^7.12.4","eslint-plugin-vue":"^5.2.3","gulp":"^3.9.1","gulp-autoprefixer":"^6.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^1.4.0","gulp-run":"^1.7.1","gulp-sass":"^4.0.2","gulp-uglify":"^3.0.2","husky":"^4.2.5","jsdoc":"^3.6.5","mocha":"^8.1.3","semantic-release":"^17.0.7","semantic-release-slack-bot":"^1.6.2","ts-node":"6.2.0","typescript":"^3.6.4"},"peerDependencies":{"react":"^16.0.0","react-dom":"^16.0.0","typescript":"^3.6.4"},"dependencies":{"brace":"^0.11.1","marked":"^1.1.1","prism-react-renderer":"^1.1.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","react-live":"^2.2.2","react-simple-code-editor":"^0.11.0","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"readme":"<img src=\"./readme/logo.png\" />\n\nDocumentation toolbox for your **javascript** / **typescript** projects based on JSDoc3 with **@category**, **@component** and **@optional** plugins.\n\nThis is how it looks:\n\n<table>\n  <tr>\n    <td>\n      <a href='./readme/class.png'><img src=\"./readme/class.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/with-mermaid.png'><img src=\"./readme/with-mermaid.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/component.png'><img src=\"./readme/component.png\" style=\"width: 300px\"/></a>\n    </td>\n  </tr>\n</table>\n\n# Example\n\nExample documentation can be found here: https://softwarebrothers.github.io/example-design-system/index.html\n\n# OpenSource SoftwareBrothers community\n\n- [Join the community](https://join.slack.com/t/adminbro/shared_invite/zt-czfb79t1-0U7pn_KCqd5Ts~lbJK0_RA) to get help and be inspired.\n- subscribe to our [newsletter](http://opensource.softwarebrothers.co)\n\n# Installation\n\n```sh\nnpm install --save-dev better-docs\n```\n\n# Theme Usage\n\n## With command line\n\nAssuming that you have [jsdoc](https://github.com/jsdoc/jsdoc) installed globally:\n\n```\njsdoc your-documented-file.js -t ./node_modules/better-docs\n```\n\n## With npm and configuration file\n\nIn your projects package.json file - add a new script:\n\n```\n\"script\": {\n  \"docs\": \"jsdoc -c jsdoc.json\"\n}\n```\n\nin your `jsdoc.json` file, set the template:\n\n```json\n\"opts\": {\n  \"template\": \"node_modules/better-docs\"\n}\n```\n\n# TypeScript support\n\nbetter-docs has a plugin which allows you to generate documentation from your TypeScript codebase.\n\n## Usage\n\nTo use it update your `jsdoc.json` file\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"optional\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/typescript\"\n],\n\"source\": {\n    \"includePattern\": \"\\\\.(jsx|js|ts|tsx)$\",\n},\n...\n```\n\nAnd now you can run your `jsdoc` command and parse TypeScript files.\n\n## How it works?\n\nIt performs 4 operations:\n\n* First of all it transpiles all .ts and .tsx files to .js, so that all comments used by you are treated\nas a regular JSDoc comments.\n\nFurthermore it:\n\n* Converts all your commented `type` aliases to `@typedef`\n* Converts all your commented `interface` definitions to `@interface`,\n* Converts descriptions for your public, protected, static class members\n\nso they can be printed by JSDoc automatically.\n\n## Examples\n\n```\n/**\n * ActionRequest\n * @memberof Action\n * @alias ActionRequest\n */\nexport type ActionRequest = {\n  /**\n   * parameters passed in an URL\n   */\n  params: {\n    /**\n     * Id of current resource\n     */\n    resourceId: string;\n    /**\n     * Id of current record\n     */\n    recordId?: string;\n    /**\n     * Name of an action\n     */\n    action: string;\n\n    [key: string]: any;\n  };\n}\n```\n\nis converted to:\n\n```\n/**\n * ActionRequest'\n * @memberof Action'\n * @alias ActionRequest'\n * @typedef {object} ActionRequest'\n * @property {object} params   parameters passed in an URL'\n * @property {string} params.resourceId   Id of current resource'\n * @property {string} [params.recordId]   Id of current record'\n * @property {string} params.action   Name of an action'\n * @property {any} params.{...}'\n */\n```\n\nAlso you can comment the interface in a similar fashion:\n\n```\n/**\n * JSON representation of an {@link Action}\n * @see Action\n */\nexport default interface ActionJSON {\n  /**\n   * Unique action name\n   */\n  name: string;\n  /**\n   * Type of an action\n   */\n  actionType: 'record' | 'resource' | Array<'record' | 'resource'>;\n  /**\n   * Action icon\n   */\n  icon?: string;\n  /**\n   * Action label - visible on the frontend\n   */\n  label: string;\n  /**\n   * Guarding message\n   */\n  guard?: string;\n  /**\n   * If action should have a filter (for resource actions)\n   */\n  showFilter: boolean;\n  /**\n   * Action component. When set to false action will be invoked immediately after clicking it,\n   * to put in another words: there wont be an action view\n   */\n  component?: string | false | null;\n}\n```\n\nor describe your class properties like that:\n\n```\n/**\n * Class name\n */\nclass ClassName {\n  /**\n   * Some private member which WONT be in jsdoc (because it is private)\n   */\n  private name: string\n\n  /**\n   * Some protected member which will go to the docs\n   */\n  protected somethingIsA: number\n\n  /**\n   * And static member which will goes to the docs.\n   */\n  static someStaticMember: number\n\n  public notCommentedWontBeInJSDoc: string\n\n  constructor(color: string) {}\n}\n```\n\n# @category plugin\n\nbetter-docs also allows you to nest your documentation into categories and subcategories in the sidebar menu.\n\n## Usage\n\nTo add a plugin - update `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"category\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/category\"\n],\n...\n```\n\nand then you can use `@category` and/or `@subcategory` tag in your code:\n\n```\n/**\n * Class description\n * @category Category\n * @subcategory All\n */\nclass YourClass {\n  ....\n}\n```\n\n# @component plugin [BETA]\n\nBetter-docs also allows you to document your [React](https://reactjs.org/) and [Vue](https://vuejs.org/) components automatically. The only thing you have to do is to add a `@component` tag. It will take all props from your components and along with an `@example` tag - will generate a __live preview__.\n\n## Installation instructions\n\nSimilar as before to add a plugin - you have to update the `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"component\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/component\"\n],\n...\n```\n\nSince __component__ plugin uses [parcel](https://parceljs.org) as a bundler you have to install it globally. To do this run:\n\n```\n# if you use npm\nnpm install -g parcel-bundler\n\n# or yarn\nyarn global add parcel-bundler\n```\n\n## Usage\n\nTo document components simply add `@component` in your JSDoc documentation:\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n */\nconst Documented = (props) => {\n  const { text } = props\n  return (\n    <div>{text}</div>\n  )\n}\n\nDocumented.propTypes = {\n  /**\n   * Text is a text\n   */\n  text: PropTypes.string.isRequired,\n}\n\nexport default Documented\n```\n\nThe plugin will take the information from your [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) and put them into an array.\n\nFor Vue it looks similar:\n\n```vue\n<script>\n/**\n * @component\n */\nexport default {\n  name: 'ExampleComponent',\n  props: {\n    spent: {\n      type: Number,\n      default: 30,\n    },\n    remaining: {\n      type: Number,\n      default: 40,\n    }\n  },\n}\n</script>\n```\n\nIn this case, props will be taken from `props` property.\n\n## Preview\n\n`@component` plugin also modifies the behaviour of `@example` tag in a way that it can generate an actual __component preview__. What you have to do is to add an `@example` tag and return component from it:\n\n**React example:**\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n * @example\n * const text = 'some example text'\n * return (\n *   <Documented text={text} />\n * )\n */\nconst Documented = (props) => {\n  ///...\n}\n```\n\n**Vue example 1:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * <ExampleComponent :spent=\"100\" :remaining=\"50\"></ExampleComponent>\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\n**Vue example 2:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * {\n *   template: `<Box>\n *     <ProgressBar :spent=\"spent\" :remaining=\"50\"></ProgressBar>\n *     <ProgressBar :spent=\"50\" :remaining=\"50\" style=\"margin-top: 20px\"></ProgressBar>\n *   </Box>`,\n *   data: function() {\n *     return {spent: 223};\n *   }\n * }\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\nYou can put as many `@example` tags as you like in one component and \"caption\" each of them like this:\n\n```javascript\n/**\n * @component\n * @example <caption>Example usage of method1.</caption>\n * // your example here\n */\n```\n\n## Mixing components in preview\n\nAlso you can use multiple components which are documented with `@component` tag together. So lets say you have 2 components and in the second component you want to use the first one as a wrapper like this:\n\n```javascript\n// component-1.js\n/**\n * Component 1\n * @component\n *\n */\nconst Component1 = (props) => {...}\n\n// component-2.js\n/**\n * Component 2\n * @component\n * @example\n * return (\n *   <Component1>\n *     <Component2 prop1={'some value'}/>\n *     <Component2 prop1={'some other value'}/>\n *   </Component1>\n * )\n */\nconst Component2 = (props) => {...}\n```\n\n## Wrapper component [only React]\n\nMost probably your components will have to be run within a particular context, like within redux store provider or with custom CSS libraries.\nYou can simulate this by passing a `component.wrapper` in your `jsdoc.json`:\n_(To read more about passing options - scroll down to __Customization__ section)_\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n              \"wrapper\": \"./path/to/your/wrapper-component.js\",\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\nWrapper component can look like this:\n\n```javascript\n// wrapper-component.js\nimport React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\n\nconst store = createStore(() => ({}), {})\n\nconst Component = (props) => {\n  return (\n    <React.Fragment>\n      <head>\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.css\" />\n      </head>\n      <Provider store={store}>\n        <BrowserRouter>\n          {props.children}\n        </BrowserRouter>\n      </Provider>\n    </React.Fragment>\n  )\n}\n\nexport default Component\n```\n\n## Styling React examples\n\nBetter-docs inserts all examples within an `iframe`. This results in the following styling options:\n\n1. If you pass styles inline - they will work right away.\n\n2. For `css modules` to work with `parcel` bundler - you have to install `postcss-modules` package:\n\n```\nyarn add postcss-modules\n```\n\nand create a `.postcssrc` file:\n\n\n```json\n// .postcssrc\n{\n\t\"modules\": true\n}\n```\n\n3. For [styled-components](https://www.styled-components.com/) you have to use wrapper component which looks like this:\n\n```jsx\nimport React from 'react'\nimport { StyleSheetManager } from 'styled-components'\n\nconst Component = (props) => {\n  const { frameContext } = props\n  return (\n    <StyleSheetManager target={frameContext.document.head}>\n      {props.children}\n    </StyleSheetManager>\n  )\n}\n\nexport default Component\n```\n\n## Adding commands to bundle entry file\n\n`@component` plugin creates an entry file: `.entry.js` in your _docs_ output folder. Sometimes you might want to add something to it. You can do this by passing: `component.entry` option, which is an array of strings.\n\nSo let's say you want to add `babel-polyfill` and 'bulma.css' framework to your bundle. You can do it like this:\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"AdminBro Documentation\",\n            \"component\": {\n                \"entry\": [\n                    \"import 'babel-polyfill';\",\n                    \"import 'bulma/css/bulma.css';\"\n                ]\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\n# Customization\n\nFirst of all, let me state that better-docs extends the `default` template. That is why default template parameters are also handled.\n\n[BETA]: You must explicitly set the `search` option of the `default` template to `true` to enable search\n\nTo customize the better-docs pass `options` to `templates['better-docs']`. section in your `jsdoc configuration file`.\n\nExample configuration file with settings for both `default` and `better-docs` templates:\n\n```json\n{\n    \"tags\": {\n        \"allowUnknownTags\": [\"category\"]\n    },\n    \"source\": {\n        \"include\": [\"./src\"],\n        \"includePattern\": \".js$\",\n        \"excludePattern\": \"(node_modules/|docs)\"\n    },\n    \"plugins\": [\n        \"plugins/markdown\",\n        \"jsdoc-mermaid\",\n        \"node_modules/better-docs/category\"\n    ],\n    \"opts\": {\n        \"encoding\": \"utf8\",\n        \"destination\": \"docs/\",\n        \"readme\": \"readme.md\",\n        \"recurse\": true,\n        \"verbose\": true,\n        \"tutorials\": \"./docs-src/tutorials\",\n        \"template\": \"better-docs\"\n    },\n    \"templates\": {\n        \"cleverLinks\": false,\n        \"monospaceLinks\": false,\n        \"search\": true,\n        \"default\": {\n            \"staticFiles\": {\n              \"include\": [\n                  \"./docs-src/statics\"\n              ]\n            }\n        },\n        \"better-docs\": {\n            \"softwareBrothers\": \"slightly-paranoid\",\n            \"name\": \"AdminBro Documentation\",\n            \"logo\": \"images/logo.png\",\n            \"title\": \"\", // HTML title\n            \"css\": \"style.css\",\n            \"trackingCode\": \"tracking-code-which-will-go-to-the-HEAD\",\n\t    \"hideGenerator\": false,\n            \"navLinks\": [\n                {\n                    \"label\": \"Github\",\n                    \"href\": \"https://github.com/SoftwareBrothers/admin-bro\"\n                },\n                {\n                    \"label\": \"Example Application\",\n                    \"href\": \"https://admin-bro-example-app.herokuapp.com/admin\"\n                }\n            ]\n        }\n    }\n}\n```\n\n## Extras\n\n### typedef(import(...))\n\nbetter-docs also has one extra plugin for handling typescript'like types imports like (it has to be one-liner):\n\n```\n/** @typedef {import('./some-other-file').ExportedType} ExportedType */\n```\n\nIt simply removes that from the code so JSDoc wont throw an error. In order to use it add this plugin to your plugins section:\n\n```\n  \"plugins\": [\n        \"node_modules/better-docs/typedef-import\"\n    ],\n```\n\n# Setting up for the development\n\nIf you want to change the theme locally follow the steps:\n\n1. Clone the repo to the folder where you have the project:\n\n```\ncd your-project\ngit clone git@github.com:SoftwareBrothers/better-docs.git\n```\n\nor add it as a git submodule:\n\n```\ngit submodule add git@github.com:SoftwareBrothers/better-docs.git\n```\n\n2. Install the packages\n\n```\ncd better-docs\n\nnpm install\n\n# or\n\nyarn\n```\n\n3. Within the better-docs folder run the gulp script. It will regenerate documentation every time you change something.\n\nIt supports following EVN variables:\n\n* `DOCS_COMMAND` - a command in your root repo which you use to generate documentation: i.e. `DOCS_COMMAND='jsdoc -c jsdoc.json'` or `npm run docs` if you have `docs` command defined in `package.json` file\n* `DOCS_OUTPUT` - where your documentation is generated. It should point to the same folder your jsdoc `--destination` conf. But make sure that it is relative to the path where you cloned `better-docs`.\n* `DOCS` - list of folders from your original repo what you want to watch for changes. Separated by comma.\n\n```\ncd better-docs\nDOCS_COMMAND='npm run docs' DOCS=../src/**/*,../config/**/* DOCS_OUTPUT=../docs cd better-docs && gulp\n```\n\nThe script should launch the browser and refresh it whenever you change something in the template or in `DOCS`.\n\n# Setting up the jsdoc in your project\n\nIf you want to see how to setup jsdoc in your project - take a look at these brief tutorials:\n\n- JSDoc - https://www.youtube.com/watch?v=Yl6WARA3IhQ\n- better-docs and Mermaid: https://www.youtube.com/watch?v=UBMYogTzsBk\n\n# License\n\nbetter-docs is Copyright © 2019 SoftwareBrothers.co. It is free software and may be redistributed under the terms specified in the [LICENSE](LICENSE) file - MIT.\n\n# About SoftwareBrothers.co\n\n<img src=\"https://softwarebrothers.co/assets/images/software-brothers-logo-full.svg\" width=240>\n\n\nWe're an open, friendly team that helps clients from all over the world to transform their businesses and create astonishing products.\n\n* We are available for [hire](https://softwarebrothers.co/contact).\n* If you want to work for us - check out the [career page](https://softwarebrothers.co/career).\n","readmeFilename":"README.md","gitHead":"59bc67fd0adb4434240c7f48319947b637a6ba5d","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.4.0-beta.9","_nodeVersion":"10.22.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-ehR/4gxVE8+hIdiDN2sP/YOYxbOptUpuXcV0qMcN2snyn+gWAtFBqXmrRUcFJRj+e6HCdD3I2fK8Jy50+cvhVg==","shasum":"9ffa25b90b9a0fe4eb97528faedf53c04c416cfe","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.4.0-beta.9.tgz","fileCount":162,"unpackedSize":1142729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfdCHlCRA9TVsSAnZWagAA26UP/2Wja8Wt7fmWvfToVTaN\nv9KMLjqVjPpvc59BiqzMEykoXyNpohZ6INVvCY7AqT3idQq5rYQaQcydVfEi\nBg2fHLALiv+LN/OclezBJJ15yjsTK4ixUCJ596+rRTKHl+MvweRtpYKoc/0k\nb1k/5/jXlMCZnEwxz/PZYmEZlxllhIEmlWIm4Rm0XhNZC3zR01ef4SSvFSGa\nyU7MdeC/i1t8mhQF207TVQ1oVDOxsGJa/XtfAMMbqMBrIUJG0wPRZSZXsvgU\nRylE/5zg1nX7igXzXSGyUqjMQo3NFpOv+hm2JvcEOa/NdfIf4ZZ/ESaEsKKC\n1cr22qRXzrRJgQodlLMpx0ZVv4tiScNv80rsaDcQJTnjE3n7e2IVWI28J041\nD8nllZ7AOBazSm7UIDqVBuUIE6gPhS1EaGmrd5hdVtiZW0Zs+H+/9eGukofD\nid6hUzyGaGewssqFzRA7A74/EHDVimvZYrXIfMysbkNG0QOQOUMS7sDxVMx7\nuvkC155JLxJhZ6Rjg2ghOaIp5/BPEc8rdtl/K37pvNbtJF6nSFa9ISkCkklL\nq8UBu5ZkSeT6N0/XLSMH4+G1DzTR8GpI2bdJSXYZwMskcqSkJeHLQ2UQSzJQ\nb39nIA0IcVjx51itI7jFM16jtx6ERq2yZcPxCK7rUS39u9Uy9oBxBg+gww1o\nskF7\r\n=1+9w\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDm6UFVFvlKtaXkaRAXsMrXzChDKouQrHl1bbQsNtVhagIhAPfgjlWu6ato6zTIwjgj2Zsbiky3ODumtoZZ3V43zEis"}]},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.4.0-beta.9_1601446372672_0.6830654565301022"},"_hasShrinkwrap":false},"2.4.0":{"name":"better-docs","version":"2.4.0","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.16.8","@babel/core":"^7.16.7","@babel/preset-env":"^7.16.8","@babel/preset-react":"^7.16.7","@commitlint/cli":"^16.0.2","@commitlint/config-conventional":"^16.0.0","@semantic-release/git":"^10.0.1","@vue/component-compiler-utils":"^3.3.0","browser-sync":"^2.27.7","bulma":"^0.9.3","chai":"^4.3.4","eslint":"^8.7.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-base":"^15.0.0","eslint-plugin-import":"^2.25.4","eslint-plugin-jsx-a11y":"^6.5.1","eslint-plugin-react":"^7.28.0","eslint-plugin-vue":"^8.3.0","gulp":"^4.0.2","gulp-autoprefixer":"^8.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-sass":"^5.1.0","gulp-uglify":"^3.0.2","husky":"^7.0.4","jsdoc":"^3.6.7","mocha":"^9.1.4","sass":"^1.48.0","semantic-release":"^18.0.1"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","typescript":"^4.5.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"engines":{"node":">=12"},"gitHead":"dde45e531b28021efa25354cc326532b7e1f17f8","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.4.0","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-u6c/CHubCdV+PCZSr5Qgvf+StimUP7qiQYLnVMDwVFNqKmQnEwMLyH9q02h3mVxNwM28hP0ZGhdOuowHB+VNfA==","shasum":"7d65a897c7c5b1083c97aca6ce8940a3861cbbfe","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.4.0.tgz","fileCount":111,"unpackedSize":835437,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5rY/CRA9TVsSAnZWagAAgmoP/1ieISAYsr0UZjnL2XnZ\nUqkM1S8Ez6Cu1zqYQ7Ux1Zktx47x5QnrqIrV0P2mTSrRJQ852YZr7EMFuqOe\nONPTm0rnYfvmCvax4ysEisbdgN/0U5foazeGtFT8j6FMy8rO76bfOaFDtjS+\nxbGBqgR+ufgOhfXy42ubRN6WByXSO6+VVtHDbt42CJYPQW3zpFgx+/tmpiSx\nYXJOArqNSyZDk6Y9rG+KSyQt+iIBDlgVlooJ002ijjV0R+vHBZhh3EZtR611\nW6a9NWJJSyHWzDqo3dLkHy27yVKtAPjpmWXEiB21Hv/LiG+WnyIS4NDrnEdv\n7jNIuAjhad0aJQG12aKQpKCpAojVu+e1Kj9tFxSbt2BG2HrezIJcU+yS7O9p\n/d1TB6JRTzNOZVlBPWsow6PUm39+Tnazm43Tiq3DGhMabZZmAjgYdfncHWmR\n33MHoSt51w3q2y1KdJuV0YvzPehH8qc26SSb7Xe/Wde6D3Fl7QfphRGNZ3iW\nexrIBa23XtNZfTSk6PAgfJN8gF7iOzGh6CykL9zhA1B957PqHf7Uo5NjJZJX\nnBCnO3PT5Ooga3GR5Fam8GNQpjtOrPwgaAd0klaIUTzIh9jBEtNP6uDIlpqG\nF5dBxWATGbXTdqDK7skA4HOPFrPDfhHEVdX3AMoZCUjUXK1Aak1WPIQwpGoO\n2rRa\r\n=21md\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD4fjcGVmyVi+x9kLeWBGlK29NgzBmhIFZVVOO35JmXJQIgCrKh5JEfllGX8TQ5f4aK5eOEVOW/ZqEIUPJC1k4yf2Q="}]},"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.4.0_1642509886811_0.2638742810586021"},"_hasShrinkwrap":false},"2.4.1":{"name":"better-docs","version":"2.4.1","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.16.8","@babel/core":"^7.16.7","@babel/preset-env":"^7.16.8","@babel/preset-react":"^7.16.7","@commitlint/cli":"^16.0.2","@commitlint/config-conventional":"^16.0.0","@semantic-release/git":"^10.0.1","@vue/component-compiler-utils":"^3.3.0","browser-sync":"^2.27.7","bulma":"^0.9.3","chai":"^4.3.4","eslint":"^8.7.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-base":"^15.0.0","eslint-plugin-import":"^2.25.4","eslint-plugin-jsx-a11y":"^6.5.1","eslint-plugin-react":"^7.28.0","eslint-plugin-vue":"^8.3.0","gulp":"^4.0.2","gulp-autoprefixer":"^8.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-sass":"^5.1.0","gulp-uglify":"^3.0.2","husky":"^7.0.4","jsdoc":"^3.6.7","mocha":"^9.1.4","sass":"^1.48.0","semantic-release":"^18.0.1"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","typescript":"^4.5.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^6.5.0","react-docgen":"^5.3.0","react-frame-component":"^4.1.1","typescript":"^3.7.5","underscore":"^1.9.1","vue-docgen-api":"^3.22.0","vue2-ace-editor":"^0.0.13"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"engines":{"node":">=12"},"gitHead":"095fc8cd5a6958a675a260abd9fcc594e4346188","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.4.1","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-wkalDFl9NbmO4kzxSH4ulFWNTDu75uq5DAj3wPH4K7HwxSjaho4UhEO3v/VQ9OgIYKUeeESP/b69KJqYRc6Z7g==","shasum":"a005cf772d62e3fc17f028b32aab785ecbcea2ef","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.4.1.tgz","fileCount":111,"unpackedSize":835438,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5rffCRA9TVsSAnZWagAAK5EQAIksPCo9m4tLOrzmWULM\nsHLi25bV7Y69AgGJ8GhRyxKBMggeCFK049egSL2mOhTw0pbg/PlQyaKfSGmC\nzHzKxvGq+JuYQ4EFW4otGTK1+b1nRe6a4S8aBxEVClVq/GcrrmsLAoaZU+1I\ncpE+tcufZ5H00jZfj2Fl7Jb4CYfAtYWnQhk5KbNoRuVp+Crte1533hml1uoc\nQMoHzdm0PSes9cY2kIMaXAwh/mohKYNVv7kYkNgIjrILHFtUfjB5aqb4jEGh\nbJsl2GgGRosEUZ51rcgp7Xm+SIb5NmxDu4up/4qB67K+/0aTWauqc7BNB0mM\n4wnUZQrUZwNeDgszeH41ppMGCjkfMbJO/cDm1mrYIp5CiVt9/6r+ZUkO1Gkj\ny5rcbdg/LzSIbs94fTxypN+unS8RNic3Lcpzf6H0AtNZAmdLONRPakmPw3Ic\nizepT68Up4hs7+CpcdlGT+ZIxFgTc3SsUNQiag/sL6inS7qS71Fk/8nZGQq5\nzxL2/2W7YM68XWPQPHj447s/waVBbSUA7y2wkU67YxXYi35JpMhZImyserXr\nk7lvO2NAULXzQzjOVXQQVcatpdwioWODIUhvDw2AoF1Rf9Z0AbwIsoDbP5yK\n8qBnIxXZXNHfqPHS9xqVirZtn7j5hbA+IHh4QT5lhPlKqP56AhGM5HUfAiEN\n9oft\r\n=2XXO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEdKRAlc4rqsfc2dVRGWtxLDU+E60kAUv7ZweUtM6qapAiEAqoWCLPuwK8YsWqXze86ZX2a75Kboumaw9h2u07SS7TE="}]},"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.4.1_1642510303028_0.8320658844310731"},"_hasShrinkwrap":false},"2.5.0":{"name":"better-docs","version":"2.5.0","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.16.8","@babel/core":"^7.16.7","@babel/preset-env":"^7.16.8","@babel/preset-react":"^7.16.7","@commitlint/cli":"^16.0.2","@commitlint/config-conventional":"^16.0.0","@semantic-release/git":"^10.0.1","@vue/component-compiler-utils":"^3.3.0","browser-sync":"^2.27.7","bulma":"^0.9.3","chai":"^4.3.4","eslint":"^8.7.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-base":"^15.0.0","eslint-plugin-import":"^2.25.4","eslint-plugin-jsx-a11y":"^6.5.1","eslint-plugin-react":"^7.28.0","eslint-plugin-vue":"^8.3.0","gulp":"^4.0.2","gulp-autoprefixer":"^8.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-sass":"^5.1.0","gulp-uglify":"^3.0.2","husky":"^7.0.4","jsdoc":"^3.6.7","mocha":"^9.1.4","sass":"^1.48.0","semantic-release":"^18.0.1"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","typescript":"^4.5.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^9.5.0","react-docgen":"^5.4.0","react-frame-component":"^5.2.1","typescript":"^4.5.4","underscore":"^1.13.2","vue-docgen-api":"^3.26.0","vue2-ace-editor":"^0.0.15"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"engines":{"node":">=12"},"gitHead":"9929ce02493838e26f06f1ef8fb23fd0610fbf7b","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.5.0","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-4Pbl+KFAJ6kUL0MlQSIkXSVY+82NtXnoVenqDpMn1hvKBWSTpA1qsNw/+1cw2zDELLKJmGzxv2mUiZ0rOnO/RQ==","shasum":"77e8848a17eabfbb501737ee1d92c86f937117a2","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.5.0.tgz","fileCount":112,"unpackedSize":836314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6RvdCRA9TVsSAnZWagAAuZIP/234XBY0z36hmIy5FDh8\nIF22y+NmqOQcTLV5q/FcanxIripTwQvsbULRYsy2f/yd8TSHsiC4VZwXOfPv\njBdfAVn+W7lCGg3YQgw5vDNzTy2Y5gzPlPNAGHYsL4fBqQ0oEZWN8M5hDDsV\nBgh+mplpibjgXTiVNIn0qKioks/TQrOqFrfW+6HfVrMX6hnqheb/duknI6Gk\nduw7tlN1Fm7TCA1CEjGmEHSj0lc7xjWptrpL+D9oOJmh0Tfk+kQclYojHwg6\naoqFC0Y5XLhHO8ew3v17JXXediIw2tW9dElIi15+dUClXNRmbBS67D6PmpKE\nbf/t234FY0qt0xMXG88k0VOt6/As5DI+JTLuewDqdzxFO3ocpdfrImlW42qk\nA484nAnGxsHb3e+nY8BdGNmcFSJeNg1E/5mG5lVaAglJceOsjpwUq1/tfyV+\n4dl+K3hP4k0mW0vKud5JRSt1BXn2g49vzVpceN/At95wWhE4ZWp18SQs5WFZ\n2iShL5c54f2syG92TkBZMQfaIduJEW/pHlr9e4XCn02CbzXHyhfv1U0aiVws\nQqIABR/jsr9I4/QFGcskO4cigrvP5N9UPnuS2kUicBI6FL+MkKepcL5sY8mo\nI5lAu0ZsWIFYF2EZoQA/0y5+SRgtoN/hUnwOIJmr9+z5e72UJ7InKbRKHMn0\nPwWJ\r\n=YIXv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFcLD7aX3s5mp0H11UpSO3lZZM3d79sKQYLZg0E8jaPZAiBj20U7P/7gt01GVHE/51/je8q1i/CgEYJbqnIlMmbzvQ=="}]},"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.5.0_1642666973722_0.793486983087291"},"_hasShrinkwrap":false},"2.6.0":{"name":"better-docs","version":"2.6.0","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.16.8","@babel/core":"^7.16.7","@babel/preset-env":"^7.16.8","@babel/preset-react":"^7.16.7","@commitlint/cli":"^16.0.2","@commitlint/config-conventional":"^16.0.0","@semantic-release/git":"^10.0.1","@vue/component-compiler-utils":"^3.3.0","browser-sync":"^2.27.7","bulma":"^0.9.3","chai":"^4.3.4","eslint":"^8.7.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-base":"^15.0.0","eslint-plugin-import":"^2.25.4","eslint-plugin-jsx-a11y":"^6.5.1","eslint-plugin-react":"^7.28.0","eslint-plugin-vue":"^8.3.0","gulp":"^4.0.2","gulp-autoprefixer":"^8.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-sass":"^5.1.0","gulp-uglify":"^3.0.2","husky":"^7.0.4","jsdoc":"^3.6.7","mocha":"^9.1.4","sass":"^1.48.0","semantic-release":"^18.0.1"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","typescript":"^4.5.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^9.5.0","react-docgen":"^5.4.0","react-frame-component":"^5.2.1","typescript":"^4.5.4","underscore":"^1.13.2","vue-docgen-api":"^3.26.0","vue2-ace-editor":"^0.0.15"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"engines":{"node":">=12"},"gitHead":"eac1043d685c27a5492c1b0237105354d5ea7e5e","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.6.0","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-tsFKDRJaEk9+h1iRf/fg7SQfhquhgSSr5HjScEldMkvPr6FG7R9GXNwYFlBCNJJeOTMDwV+mly2+AbHc01bHcg==","shasum":"152d683db4b30f5e9f6ddd02903e379fb2124a70","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.6.0.tgz","fileCount":113,"unpackedSize":836871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6SpnCRA9TVsSAnZWagAA3NAQAI+eVaFZaXVdYIAjeSTJ\nM5I2NSOf7cSQjBteTVyR7tn7h+A8NJqBj5MIJyI5SI5KbGZBeSQGwSxnQCoR\nzrWug9GkZpt/jFjmZyGp37fUs8g3/TCHeQ3eLVyCXUll7vFTll6Nt6w8/DD6\nkVSvytA8XVdxgkyNztvFkT0ma/Y7ssBjuDU1i9Bavhn7GEkzARPzipiL6E27\n5FoXRQOuqsuK2NM6OCa9CweHG7NwzLtxqAfnW6yp2EwCxU/9DU2sU+KT58VO\nsEKitWRSPHdAsreRZv4qWKkS8MaK7/ZIMu01Mg0b1LJ8a71xny7yloORsogA\n1d0PsWjUvpLc397L+t3J1QElLEcVR3in9b9aLwNcOhyhgn7xFQorRBckn5Za\niaTPhIfLBEFeseK1w9bvxkfOc8Bbxsj4PoGUdBgLFcH1ExZ+zEu5jMWBMgBe\nmA9g2gFkDmFKkm7u+/drSYWwbjvZjC7SGNh0oG7RBkPbnFGiIDDEKJ4QkXtN\nDyfPuc3tc6owlyr6iXZOuA2Ja/ybi3MprYnRPr2kAibNXBZTd3gj46DXx4gN\nd66Icx18HIKJ5BRKZs+ZJ5816HeN9SIk+WjG0kxqLWIQEmLfx+jE8HEosQaK\nctoDgrNZPZGXjuEjM+7VIfL8AULgpmvAAZuY59HDty8vA8fPMLIrx+lLIQLp\nqcr5\r\n=Bn5d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPpP/7j2WrKVGIfz2Uo7/UpsP3CIxSoVMTNdYU3VGLuwIhANRapFudZBSZZ44wdNhtSKsmSn0wCx4BcQRqwf3OfE1J"}]},"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.6.0_1642670695579_0.34700912724212674"},"_hasShrinkwrap":false},"2.6.1":{"name":"better-docs","version":"2.6.1","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","devDependencies":{"@babel/cli":"^7.16.8","@babel/core":"^7.16.7","@babel/preset-env":"^7.16.8","@babel/preset-react":"^7.16.7","@commitlint/cli":"^16.0.2","@commitlint/config-conventional":"^16.0.0","@semantic-release/git":"^10.0.1","@vue/component-compiler-utils":"^3.3.0","browser-sync":"^2.27.7","bulma":"^0.9.3","chai":"^4.3.4","eslint":"^8.7.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-base":"^15.0.0","eslint-plugin-import":"^2.25.4","eslint-plugin-jsx-a11y":"^6.5.1","eslint-plugin-react":"^7.28.0","eslint-plugin-vue":"^8.3.0","gulp":"^4.0.2","gulp-autoprefixer":"^8.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-sass":"^5.1.0","gulp-uglify":"^3.0.2","husky":"^7.0.4","jsdoc":"^3.6.7","mocha":"^9.1.4","sass":"^1.48.0","semantic-release":"^18.0.1"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2","typescript":"^4.5.4"},"dependencies":{"brace":"^0.11.1","react-ace":"^9.5.0","react-docgen":"^5.4.0","react-frame-component":"^5.2.1","typescript":"^4.5.4","underscore":"^1.13.2","vue-docgen-api":"^3.26.0","vue2-ace-editor":"^0.0.15"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"engines":{"node":">=12"},"gitHead":"332fedbca006fed21367cff938047654dbcca50a","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.6.1","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-snpaBdrAzsC2r7qCKKHYgbq8CQN2ih7oQakRO1Gnuse6vd9LSiotQdaG2RPMBR315GEyyT1iIuCFv/XFF79cnw==","shasum":"195b998096557f50bd4b81c6edacc6e0c60c3d2e","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.6.1.tgz","fileCount":113,"unpackedSize":836895,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6mTyCRA9TVsSAnZWagAA1woP+QDTg4OefCeZ4Fw6IeOB\n4DrZRqZbr+cZQsmfoKn8RtS2E8Tds76HUPloos1gl6f8VZJAhweCevDELDyU\nYNiclIHu9fUX1sOXZz7huLVt7e2Zv++5lbQom2qEJVRGsR6Jgkt9ZYFJzeeL\nEm/qSJdbB5/HM8wcdvMXlDzt/NXXlTlwekui+2CEGP2xKRYtcCheLfeAc3pS\nrt35YdqrAt2KW41tAcyUqqQtXJmjMDGiIkKCNGnWaJlDmwK3/QM6u715uPe7\nFeff4DUp3E0a6xxTxev70V7QN1cyKZRIayyx85XyxoLMFfb7wn9J6TBJI7Xm\ngfZvOd6bCCNAiXl6z8fC+37xKlylUDva+S8Tz2sZowCRAaCcQCwSgE6pKKeM\nvjqdWncxzthue2ftKIEq1LcIYe6o+TI3Notang1hthE/2CcMSFNxG9ADPipV\n6+hNwZ67yi7HBa7KOGfnauxlPoGlnV+uz+KL9cvA/z5Er8nbm2mOiywYs5jQ\nCo74bnYR6mDWpGxHWEpVWMIewIPNRe1VNLIzIjJodZY9KjtWBtHdRvdhraOL\nPxpo3P7ZhAYwfKprrllsig4mQYjLGY3GvFAeKk+s9kSHbdMaJS1+ICIJH9Lz\nBh7Iz1cUmu9Az+VXhmt/3pcOZ7c3COt42YYdwVXy2+DoxIRSk8zjiCp3P19D\nDwx3\r\n=7nND\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCSRxoBaCZ1fMN7b8MsCFnLU3BMf1aUnW+TEejgfDvMoAIhAIWmavZSvjC7HmKcmTw+aGlg1g9Spyr9GieNjwWzWVFQ"}]},"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.6.1_1642751218476_0.7663443067337496"},"_hasShrinkwrap":false},"2.6.2":{"name":"better-docs","version":"2.6.2","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","dependencies":{"brace":"^0.11.1","react-ace":"^9.5.0","react-docgen":"^5.4.0","react-frame-component":"^5.2.1","typescript":"^4.5.4","underscore":"^1.13.2","vue-docgen-api":"^3.26.0","vue2-ace-editor":"^0.0.15"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2"},"devDependencies":{"@babel/cli":"^7.16.8","@babel/core":"^7.16.7","@babel/preset-env":"^7.16.8","@babel/preset-react":"^7.16.7","@commitlint/cli":"^16.0.2","@commitlint/config-conventional":"^16.0.0","@semantic-release/git":"^10.0.1","@vue/component-compiler-utils":"^3.3.0","browser-sync":"^2.27.7","bulma":"^0.9.3","chai":"^4.3.4","eslint":"^8.7.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-base":"^15.0.0","eslint-plugin-import":"^2.25.4","eslint-plugin-jsx-a11y":"^6.5.1","eslint-plugin-react":"^7.28.0","eslint-plugin-vue":"^8.3.0","gulp":"^4.0.2","gulp-autoprefixer":"^8.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-sass":"^5.1.0","gulp-uglify":"^3.0.2","husky":"^7.0.4","jsdoc":"^3.6.7","mocha":"^9.1.4","sass":"^1.48.0","semantic-release":"^18.0.1"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"engines":{"node":">=12"},"gitHead":"56d9a06ab5d3409e960ccf9fa56c55074ded9010","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.6.2","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-MN1XaHtWRXuoNUKsuY6voRVhh2IRI20mRXtcJh6lRZWiJoQbs+59OakDVq0VddEj0ZwJzL33WDqess9zAkPSMg==","shasum":"46251d755be24c4f10447ec02ccf70748c3c9f33","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.6.2.tgz","fileCount":113,"unpackedSize":837543,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6ocUCRA9TVsSAnZWagAAZGMQAJ0wuuCg4ohbWeVU7Buk\nAVj02wy1dJaQgzEl1e8T1IujjfpD9nY1L98krYqqHKrjsCyuyuV3KP4X/Bbj\nYlsRryBijqwASXo0iJu4YGUUN3mnfS6XN/RxZnDd8sp2FPTq8IoybmKAUcUv\nHzYxhfjEQhjYCqz5erF0ujePHvZYi+en0vCdAZ/TQ7RMXQWmj32yRLXtR7C0\nnpajEYwPEbzp075RDzZVt6g5u34gdreggaCAGQ1BZ3MvvT5sOEr5bTQUiqHn\nj5eyfwxnJzVZyP10srdGxOC+BFYwn3YcO5aobx7zsegVvQui2ijHJwAdE3+U\nTFB3D34i0tZ8Uji9/VhfXNQu96x4hswfQvZDEDTcDvQdAmipxy82soJ2ssgE\nsspFVmJwO/gB3ljKWaYiDqdvYIS+GQ92zj71lh1dAaKUth4EWnYl4tzaBcYx\nEpEYhbjmk9C+hSYU3W48z6ImANxqowmPLIPcV6gi+r2P4a5mwG0aEqYn2ihI\nlWEF/z3UPHOywirViuf2NgfPAXY5l+80Ddv4i0ua3iOTP8XBs0bE8gcun8HH\nbfAiW1WwvhMybR6lBs4VzGIi8D3nc5b0QFI2hSxxkWQcTkuSODmLO92o75Eb\nS0WqCKHuuKdZvEr5eGHuXiP26zse3P7DESHsqlEw3jYyiUUDw+iHtIszJz/y\niU4f\r\n=xsbI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGHVQSfxmyuK2CjYEFKmEqX4SiJddu7ZxXTY8+NPdUOxAiBZvo5LR8+M76da1w+2f/tB/RKD8AXzkYsCJ2xGpubfEA=="}]},"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.6.2_1642759956576_0.9636053290522915"},"_hasShrinkwrap":false},"2.7.0":{"name":"better-docs","version":"2.7.0","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","dependencies":{"brace":"^0.11.1","react-ace":"^9.5.0","react-docgen":"^5.4.0","react-frame-component":"^5.2.1","typescript":"^4.5.4","underscore":"^1.13.2","vue-docgen-api":"^3.26.0","vue2-ace-editor":"^0.0.15"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2"},"devDependencies":{"@babel/cli":"^7.16.8","@babel/core":"^7.16.7","@babel/preset-env":"^7.16.8","@babel/preset-react":"^7.16.7","@commitlint/cli":"^16.0.2","@commitlint/config-conventional":"^16.0.0","@semantic-release/git":"^10.0.1","@vue/component-compiler-utils":"^3.3.0","browser-sync":"^2.27.7","bulma":"^0.9.3","chai":"^4.3.4","eslint":"^8.7.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-base":"^15.0.0","eslint-plugin-import":"^2.25.4","eslint-plugin-jsx-a11y":"^6.5.1","eslint-plugin-react":"^7.28.0","eslint-plugin-vue":"^8.3.0","gulp":"^4.0.2","gulp-autoprefixer":"^8.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-sass":"^5.1.0","gulp-uglify":"^3.0.2","husky":"^7.0.4","jsdoc":"^3.6.7","mocha":"^9.1.4","sass":"^1.48.0","semantic-release":"^18.0.1"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"engines":{"node":">=12"},"gitHead":"913698a7c51ad0e2e6e48492efd8d53e8fcb99a8","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.7.0","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-zAK8xk9NM8Q7Z3l0lAm9kUaWlDnf/qgIvJz4WPsPdguID/E4CaX9NNhggTggyfr2UDQR7rY+6YNOZlRnTWGr1A==","shasum":"54c0a300480313e345fea5beb30bf52d0cbe634d","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.7.0.tgz","fileCount":114,"unpackedSize":838389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6okHCRA9TVsSAnZWagAAdeAQAJdYIWjwMVPwFSYf25xI\ngKy0KUQih+v7E4mil2gSxjul3vfE7AKl/Kjh4ezLe240nF3lHdvrLEyOIIaD\n9Xih2yYBVUWwyloU2jTvtqIZR27Rg3lFn+K0J7/v9ypD4I62cPKY1UUA7aec\nGJycaI0Cl71H6KbN4VkBWCAJQ4LkkYNSdQzZzCyE0AKMiJuYUcuoms8T/Ix7\njozXAMcboGdNVazzCHGKrlxsFC46Iz+HjCVS7wb+zvx/8hgzPT1Uq45Rx0P6\nTGX+S6DW9B1d6D33bvpR4v5guvR0s5J7kfhnZnA3kXkmDXSgUzjGWG0dGX/Z\n/wD9NA12zd+8xIVModej7lsGYj+3RL5D23uJU/SlXWfCJlbj5q/lGtiff8au\nZ/TuyF6NY7wuFNLpH0DxlAOZ5lOqOs3VRwWzkYrPw9txcLF0Zz9jpz9zUfYM\nUsuG+YUjKxrv3JTb6IgSiTzoDg/kJ3TWBwcBixArcBbuXQI3LUyLlOcHFQUj\nha1RQenj+wxVFT8UFMInjONRl/mVbPhmrI2zuqQpp2qupSJ7ZZSa9qQC3fj2\nparBTYTApZeBuRDXdsXkyw+qgEZDj1tKJ2G5/2e+xIZy4sJiwKNJwEiqkTqd\nC8rfEsw1zI2CXqeJHQV8V729sB/4aLT/7oS4Iv442VhC+dxK/oH9CMO3m/w8\nxZlX\r\n=H2iY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGqSFFIAiuR9V7bt0ymVoluIRplvqJlVxU92ES3+BnbuAiEAnMM+KGVXHD2cOf1tjIBqesMsaVZDWdETPDlWlpr00zo="}]},"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.7.0_1642760455199_0.5621608211441884"},"_hasShrinkwrap":false},"2.7.1":{"name":"better-docs","version":"2.7.1","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","dependencies":{"brace":"^0.11.1","react-ace":"^9.5.0","react-docgen":"^5.4.0","react-frame-component":"^5.2.1","typescript":"^4.5.4","underscore":"^1.13.2","vue-docgen-api":"^3.26.0","vue2-ace-editor":"^0.0.15"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2"},"devDependencies":{"@babel/cli":"^7.16.8","@babel/core":"^7.16.7","@babel/preset-env":"^7.16.8","@babel/preset-react":"^7.16.7","@commitlint/cli":"^16.0.2","@commitlint/config-conventional":"^16.0.0","@semantic-release/git":"^10.0.1","@vue/component-compiler-utils":"^3.3.0","browser-sync":"^2.27.7","bulma":"^0.9.3","chai":"^4.3.4","eslint":"^8.7.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-base":"^15.0.0","eslint-plugin-import":"^2.25.4","eslint-plugin-jsx-a11y":"^6.5.1","eslint-plugin-react":"^7.28.0","eslint-plugin-vue":"^8.3.0","gulp":"^4.0.2","gulp-autoprefixer":"^8.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-sass":"^5.1.0","gulp-uglify":"^3.0.2","husky":"^7.0.4","jsdoc":"^3.6.7","mocha":"^9.1.4","sass":"^1.48.0","semantic-release":"^18.0.1"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"engines":{"node":">=12"},"gitHead":"09912a31056480a76008d969bf7a0dc03cf8a0de","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.7.1","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-LLfz+WIm9u46VrE1XhNK/FfynzEpoDWu2TP8aeN7KuNvRTd6MLJisOFFIHyQGT7TNuhFqca4oAYuy9JFoBJFhA==","shasum":"e3b9a08d7249f9161a015a6300b239f6593d7c37","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.7.1.tgz","fileCount":114,"unpackedSize":838615,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6opDCRA9TVsSAnZWagAA04YP/3ScojUo7hoSzU0G+whf\n56fbhWvH+74xNXTTu2cTd9nss0aKUlFN+fTTL08pkNfVUsZ2GBx37jpiNKSj\nCz9gamXWMk+oGuiUHSc+owiBXHdFjrFhC3Ah3E7FDAaZOlDWVh/+zckm5rA5\n9PsPtlpK9p84dJ5+Vgq2IB+E8TKwoaoJ9UWXwqfpIQ4CZjORL0J6iUkJ9vMB\n2cVzbS5Ha8AuMZj56n7DQ1ek4VWFmuvb+k9zugkLy5Hx286FD7Y0GYS+qwhu\nu39Mm4Wm9DiEI+3ym3koj/GQ7RSsXfZguPQJyKwv8ueVKUQBQH0SVR/OThrD\nNirR4EgrMp9qvGZFEvVJHkaN2hxHrvFeDlLzCXcvFXZHPFTRz/AgZXWJBc3p\nWniMdv1af5d2oQ0ZpQNv8vmahXpVbiDQnpuY0hTiUp9N9GDnPkGAUuboH7oP\n0cBAiXVEVNiB2nJlUliwqI2Tt7dWCMzzHfEQj3Us2JBQJHUTTSC6W59NIbhQ\nG9c4GZdeC0GLzYclPgdC+TXLmu+9cQMruX1z6ok+HPiDuyp+nACYrQQdPwwB\nBjTtvpSFZdWOhbqVub2yBEXeugLvKjykd2PhvbLPvoq2OkHk+XBnlRZdvvkE\nMXarDcpTmT5Q+XOGYTgDG85Qy9QT/dnRL9CxrI4WviYTA+gn+OeAJnGB/ZAS\nNYm4\r\n=kybp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBm/4Va6NKiY55E956HKYbJjr2kAw1ZsXFSoRrcT/LfrAiB+pOvWuMhevGyRiX++LAVMKzIXxCs1XjJ/Ya6LwJl5aw=="}]},"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.7.1_1642760768684_0.9790910058818503"},"_hasShrinkwrap":false},"2.7.2":{"name":"better-docs","version":"2.7.2","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","dependencies":{"brace":"^0.11.1","react-ace":"^9.5.0","react-docgen":"^5.4.0","react-frame-component":"^5.2.1","typescript":"^4.5.4","underscore":"^1.13.2","vue-docgen-api":"^3.26.0","vue2-ace-editor":"^0.0.15"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2"},"devDependencies":{"@babel/cli":"^7.16.8","@babel/core":"^7.16.7","@babel/preset-env":"^7.16.8","@babel/preset-react":"^7.16.7","@commitlint/cli":"^16.0.2","@commitlint/config-conventional":"^16.0.0","@semantic-release/git":"^10.0.1","@vue/component-compiler-utils":"^3.3.0","browser-sync":"^2.27.7","bulma":"^0.9.3","chai":"^4.3.4","eslint":"^8.7.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-base":"^15.0.0","eslint-plugin-import":"^2.25.4","eslint-plugin-jsx-a11y":"^6.5.1","eslint-plugin-react":"^7.28.0","eslint-plugin-vue":"^8.3.0","gulp":"^4.0.2","gulp-autoprefixer":"^8.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-sass":"^5.1.0","gulp-uglify":"^3.0.2","husky":"^7.0.4","jsdoc":"^3.6.7","mocha":"^9.1.4","sass":"^1.48.0","semantic-release":"^18.0.1"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"engines":{"node":">=12"},"gitHead":"d5cfbdf7eb4f1efa622b6d1bc5eca9b40789b4a5","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.7.2","_nodeVersion":"16.13.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-aIOsGhhcTIDAJfBTABIPDs3q98dfNF85yUwmKShXb3ZG6e7s+ojBePiDqvFwy/MpnjYwuSbuzkbEv4iPWcSuTQ==","shasum":"fe0b54fca8a904fe050586aa819263195e5eb948","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.7.2.tgz","fileCount":114,"unpackedSize":839259,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBNqbCRA9TVsSAnZWagAAG2EQAJJCNnIwzY1O0GsoHL9e\napVtcnbBcuvqbbay1eq4iCtP6ARkfrkZ8oZEu+Et50/sfvd7lQ2y7c+FLLIS\nj1tVNVWxxU4rYIMLvm8yPMkxNvNdPY567WFX5o9webyYqEHe0fzj4Ip5afF9\nf+Ai03N2ULf72vfwNcZaDQWdlAUzBh5N915miqmLZDxGGz/N/7ca9Z8oWbIp\nxu/MJqzax50OsGOiMVyC/fmTXMSTF/ryyJm/6Nd2wNJTMwBYRY+vIF3K1AyT\nWcTHDyyLEL8bFIpOX16urNRF9lsCk0bFcSSBveoMbtV/6BiYQg8swboyIIyZ\npiZSDYrBHSS7IyHTp/MHD+eiKKoLbYLmuA3arxScZVImh/ScF9P2NkFtw4g5\n+lNIK2Z3DA8uEGZr5g9g3c8RhMomQCCHo6XfsHygAu7oy36SWwZLsrAY4Dgm\n/75PYkx9AFDtJZVlvikndIlYEwuU1U09VgZREZvPF7/YrsxHiXYf5ec6Y6cQ\n0ZRdNfc89MYy7MiFeoc/x0doCA5AGGMTWh3eUDDxPmilO3cqTdcpbxPcXwbQ\nbnr6JR5Mb5bW4Dz5fx8V7V++iZhvvTmJ6LWpzGvM2YbRheYSw7gINaJ3IAsE\nYVCVBvmD4WAVYmyAWVbo4dbp5J4kdaOppK24ltzbPKToC+rUNuo9kpOGlQLl\ntWD5\r\n=oxbv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD7BVMyW4N5TcI8chNkqaqL+EW83e0zcqzDJtl83fcGqwIgG0aWhZtAul4EkOdB2Byc0OQXN5PQT1zGyJ2Qq+/vI28="}]},"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.7.2_1644485275273_0.7097831677718047"},"_hasShrinkwrap":false},"2.7.3":{"name":"better-docs","version":"2.7.3","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","dependencies":{"brace":"^0.11.1","react-ace":"^9.5.0","react-docgen":"^5.4.0","react-frame-component":"^5.2.1","typescript":"^4.5.4","underscore":"^1.13.2","vue-docgen-api":"^3.26.0","vue2-ace-editor":"^0.0.15"},"peerDependencies":{"react":"^17.0.2","react-dom":"^17.0.2"},"devDependencies":{"@babel/cli":"^7.16.8","@babel/core":"^7.16.7","@babel/preset-env":"^7.16.8","@babel/preset-react":"^7.16.7","@commitlint/cli":"^16.0.2","@commitlint/config-conventional":"^16.0.0","@semantic-release/git":"^10.0.1","@vue/component-compiler-utils":"^3.3.0","browser-sync":"^2.27.7","bulma":"^0.9.3","chai":"^4.3.4","eslint":"^8.7.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-base":"^15.0.0","eslint-plugin-import":"^2.25.4","eslint-plugin-jsx-a11y":"^6.5.1","eslint-plugin-react":"^7.28.0","eslint-plugin-vue":"^8.3.0","gulp":"^4.0.2","gulp-autoprefixer":"^8.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-sass":"^5.1.0","gulp-uglify":"^3.0.2","husky":"^7.0.4","jsdoc":"^3.6.7","mocha":"^9.1.4","sass":"^1.48.0","semantic-release":"^18.0.1"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"engines":{"node":">=12"},"gitHead":"dda4412c3f1d7873a6110a237e48d8ed83687854","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.7.3","_nodeVersion":"16.20.2","_npmVersion":"7.24.2","dist":{"integrity":"sha512-OEk9e7RQUQbo1DmVo0mdsALZ+mT0SwIen7/DGnN4xKNktXKgz1j7+KQ2pObNHHVSFGu8YMQW/Ig1v6eiTkdnbw==","shasum":"bdeec1b24514bc22562af2a277c2cf527abbe726","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.7.3.tgz","fileCount":120,"unpackedSize":842892,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGbG866UHpHinMUJj3PbzAEELaJwjoprTUMSzYBx9+3wIhAOquS+gex5LwlnSU4dlLhU781e5qdfrOyHwTDjhfcE2h"}]},"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.7.3_1701969676662_0.8157562068794362"},"_hasShrinkwrap":false},"2.7.4-dev.1":{"name":"better-docs","version":"2.7.4-dev.1","description":"JSdoc theme","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"main":"publish.js","scripts":{"gulp":"gulp","test":"mocha --recursive './*spec.js' './typescript/*spec.js'","build":"babel src --out-dir lib","docs":"jsdoc -c jsdoc.json","release":"semantic-release"},"author":{"name":"Wojciech Krysiak"},"license":"MIT","dependencies":{"brace":"^0.11.1","react-ace":"^10.1.0","react-docgen":"^5.4.3","react-frame-component":"^5.2.6","typescript":"^4.9.5","underscore":"^1.13.6","vue-docgen-api":"^4.56.4","vue2-ace-editor":"^0.0.15"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0"},"devDependencies":{"@babel/cli":"^7.21.0","@babel/core":"^7.21.0","@babel/preset-env":"^7.20.2","@babel/preset-react":"^7.18.6","@commitlint/cli":"^17.4.4","@commitlint/config-conventional":"^17.4.4","@semantic-release/git":"^10.0.1","@vue/component-compiler-utils":"^3.3.0","browser-sync":"^2.27.12","bulma":"^0.9.4","chai":"^4.3.7","eslint":"^8.34.0","eslint-config-airbnb":"^19.0.4","eslint-config-airbnb-base":"^15.0.0","eslint-plugin-import":"^2.27.5","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-react":"^7.32.2","eslint-plugin-vue":"^9.9.0","gulp":"^4.0.2","gulp-autoprefixer":"^8.0.0","gulp-babel":"^8.0.0","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-sass":"^5.1.0","gulp-uglify":"^3.0.2","husky":"^8.0.3","jsdoc":"^4.0.2","mocha":"^10.2.0","sass":"^1.58.3","semantic-release":"^19.0.5"},"husky":{"hooks":{"commit-msg":"commitlint -E HUSKY_GIT_PARAMS"}},"engines":{"node":">=12"},"readme":"<img src=\"./readme/logo.png\" />\n\nDocumentation toolbox for your **javascript** / **typescript** projects based on JSDoc4 with **@category**, **@component** and **@optional** plugins.\n\nThis is how it looks:\n\n<table>\n  <tr>\n    <td>\n      <a href='./readme/class.png'><img src=\"./readme/class.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/with-mermaid.png'><img src=\"./readme/with-mermaid.png\" style=\"width: 300px\"/></a>\n    </td>\n    <td>\n      <a href='./readme/component.png'><img src=\"./readme/component.png\" style=\"width: 300px\"/></a>\n    </td>\n  </tr>\n</table>\n\n# Example\n\nExample documentation can be found here: https://softwarebrothers.github.io/example-design-system/index.html\n\n# OpenSource SoftwareBrothers community\n\n- [Join the community](https://join.slack.com/t/adminbro/shared_invite/zt-czfb79t1-0U7pn_KCqd5Ts~lbJK0_RA) to get help and be inspired.\n- subscribe to our [newsletter](http://opensource.softwarebrothers.co)\n\n# Installation\n\n```sh\nnpm install --save-dev better-docs\n```\n\n# Theme Usage\n\n## With command line\n\nAssuming that you have [jsdoc](https://github.com/jsdoc/jsdoc) installed globally:\n\n```\njsdoc your-documented-file.js -t ./node_modules/better-docs\n```\n\n## With npm and configuration file\n\nIn your projects package.json file - add a new script:\n\n```\n\"script\": {\n  \"docs\": \"jsdoc -c jsdoc.json\"\n}\n```\n\nin your `jsdoc.json` file, set the template:\n\n```json\n\"opts\": {\n  \"template\": \"node_modules/better-docs\"\n}\n```\n\n# TypeScript support\n\nbetter-docs has a plugin which allows you to generate documentation from your TypeScript codebase.\n\n## Usage\n\nTo use it update your `jsdoc.json` file\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"optional\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/typescript\"\n],\n\"source\": {\n    \"includePattern\": \"\\\\.(jsx|js|ts|tsx)$\",\n},\n...\n```\n\nAnd now you can run your `jsdoc` command and parse TypeScript files.\n\n## How it works?\n\nIt performs 4 operations:\n\n* First of all it transpiles all .ts and .tsx files to .js, so that all comments used by you are treated\nas a regular JSDoc comments.\n\nFurthermore it:\n\n* Converts all your commented `type` aliases to `@typedef`\n* Converts all your commented `interface` definitions to `@interface`,\n* Converts descriptions for your public, protected, static class members\n\nso they can be printed by JSDoc automatically.\n\n## Examples\n\n```\n/**\n * ActionRequest\n * @memberof Action\n * @alias ActionRequest\n */\nexport type ActionRequest = {\n  /**\n   * parameters passed in an URL\n   */\n  params: {\n    /**\n     * Id of current resource\n     */\n    resourceId: string;\n    /**\n     * Id of current record\n     */\n    recordId?: string;\n    /**\n     * Name of an action\n     */\n    action: string;\n\n    [key: string]: any;\n  };\n}\n```\n\nis converted to:\n\n```\n/**\n * ActionRequest'\n * @memberof Action'\n * @alias ActionRequest'\n * @typedef {object} ActionRequest'\n * @property {object} params   parameters passed in an URL'\n * @property {string} params.resourceId   Id of current resource'\n * @property {string} [params.recordId]   Id of current record'\n * @property {string} params.action   Name of an action'\n * @property {any} params.{...}'\n */\n```\n\nAlso you can comment the interface in a similar fashion:\n\n```\n/**\n * JSON representation of an {@link Action}\n * @see Action\n */\nexport default interface ActionJSON {\n  /**\n   * Unique action name\n   */\n  name: string;\n  /**\n   * Type of an action\n   */\n  actionType: 'record' | 'resource' | Array<'record' | 'resource'>;\n  /**\n   * Action icon\n   */\n  icon?: string;\n  /**\n   * Action label - visible on the frontend\n   */\n  label: string;\n  /**\n   * Guarding message\n   */\n  guard?: string;\n  /**\n   * If action should have a filter (for resource actions)\n   */\n  showFilter: boolean;\n  /**\n   * Action component. When set to false action will be invoked immediately after clicking it,\n   * to put in another words: there wont be an action view\n   */\n  component?: string | false | null;\n}\n```\n\nor describe your class properties like that:\n\n```\n/**\n * Class name\n */\nclass ClassName {\n  /**\n   * Some private member which WONT be in jsdoc (because it is private)\n   */\n  private name: string\n\n  /**\n   * Some protected member which will go to the docs\n   */\n  protected somethingIsA: number\n\n  /**\n   * And static member which will goes to the docs.\n   */\n  static someStaticMember: number\n\n  public notCommentedWontBeInJSDoc: string\n\n  constructor(color: string) {}\n}\n```\n\n# @category plugin\n\nbetter-docs also allows you to nest your documentation into categories and subcategories in the sidebar menu.\n\n## Usage\n\nTo add a plugin - update `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"category\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/category\"\n],\n...\n```\n\nand then you can use `@category` and/or `@subcategory` tag in your code:\n\n```\n/**\n * Class description\n * @category Category\n * @subcategory All\n */\nclass YourClass {\n  ....\n}\n```\n\n# @component plugin [BETA]\n\nBetter-docs also allows you to document your [React](https://reactjs.org/) and [Vue](https://vuejs.org/) components automatically. The only thing you have to do is to add a `@component` tag. It will take all props from your components and along with an `@example` tag - will generate a __live preview__.\n\n## Installation instructions\n\nSimilar as before to add a plugin - you have to update the `plugins` section in your `jsdoc.json` file:\n\n```\n...\n\"tags\": {\n    \"allowUnknownTags\": [\"component\"] //or true\n},\n\"plugins\": [\n    \"node_modules/better-docs/component\"\n],\n...\n```\n\nSince __component__ plugin uses [parcel](https://parceljs.org) as a bundler you have to install it globally. To do this run:\n\n```\n# if you use npm\nnpm install -g parcel\n\n# or yarn\nyarn global add parcel\n```\n\n## Usage\n\nTo document components simply add `@component` in your JSDoc documentation:\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n */\nconst Documented = (props) => {\n  const { text } = props\n  return (\n    <div>{text}</div>\n  )\n}\n\nDocumented.propTypes = {\n  /**\n   * Text is a text\n   */\n  text: PropTypes.string.isRequired,\n}\n\nexport default Documented\n```\n\nThe plugin will take the information from your [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) and put them into an array.\n\nFor Vue it looks similar:\n\n```vue\n<script>\n/**\n * @component\n */\nexport default {\n  name: 'ExampleComponent',\n  props: {\n    spent: {\n      type: Number,\n      default: 30,\n    },\n    remaining: {\n      type: Number,\n      default: 40,\n    }\n  },\n}\n</script>\n```\n\nIn this case, props will be taken from `props` property.\n\n## Preview\n\n`@component` plugin also modifies the behaviour of `@example` tag in a way that it can generate an actual __component preview__. What you have to do is to add an `@example` tag and return component from it:\n\n**React example:**\n\n```jsx\n/**\n * Some documented component\n *\n * @component\n * @example\n * const text = 'some example text'\n * return (\n *   <Documented text={text} />\n * )\n */\nconst Documented = (props) => {\n  ///...\n}\n```\n\n**Vue example 1:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * <ExampleComponent :spent=\"100\" :remaining=\"50\"></ExampleComponent>\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\n**Vue example 2:**\n\n```vue\n<script>\n/**\n * @component\n * @example\n * {\n *   template: `<Box>\n *     <ProgressBar :spent=\"spent\" :remaining=\"50\"></ProgressBar>\n *     <ProgressBar :spent=\"50\" :remaining=\"50\" style=\"margin-top: 20px\"></ProgressBar>\n *   </Box>`,\n *   data: function() {\n *     return {spent: 223};\n *   }\n * }\n */\nexport default {\n  name: 'ExampleComponent',\n  //...\n}\n</script>\n```\n\nYou can put as many `@example` tags as you like in one component and \"caption\" each of them like this:\n\n```javascript\n/**\n * @component\n * @example <caption>Example usage of method1.</caption>\n * // your example here\n */\n```\n\n## Mixing components in preview\n\nAlso you can use multiple components which are documented with `@component` tag together. So lets say you have 2 components and in the second component you want to use the first one as a wrapper like this:\n\n```javascript\n// component-1.js\n/**\n * Component 1\n * @component\n *\n */\nconst Component1 = (props) => {...}\n\n// component-2.js\n/**\n * Component 2\n * @component\n * @example\n * return (\n *   <Component1>\n *     <Component2 prop1={'some value'}/>\n *     <Component2 prop1={'some other value'}/>\n *   </Component1>\n * )\n */\nconst Component2 = (props) => {...}\n```\n\n## Wrapper component [only React]\n\nMost probably your components will have to be run within a particular context, like within redux store provider or with custom CSS libraries.\nYou can simulate this by passing a `component.wrapper` in your `jsdoc.json`:\n_(To read more about passing options - scroll down to __Customization__ section)_\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"Sample Documentation\",\n            \"component\": {\n              \"wrapper\": \"./path/to/your/wrapper-component.js\",\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\nWrapper component can look like this:\n\n```javascript\n// wrapper-component.js\nimport React from 'react'\nimport { BrowserRouter } from 'react-router-dom'\nimport { createStore } from 'redux'\nimport { Provider } from 'react-redux'\n\nconst store = createStore(() => ({}), {})\n\nconst Component = (props) => {\n  return (\n    <React.Fragment>\n      <head>\n        <link type=\"text/css\" rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.css\" />\n      </head>\n      <Provider store={store}>\n        <BrowserRouter>\n          {props.children}\n        </BrowserRouter>\n      </Provider>\n    </React.Fragment>\n  )\n}\n\nexport default Component\n```\n\n## Styling React examples\n\nBetter-docs inserts all examples within an `iframe`. This results in the following styling options:\n\n1. If you pass styles inline - they will work right away.\n\n2. For `css modules` to work with `parcel` bundler - you have to install `postcss-modules` package:\n\n```\nyarn add postcss-modules\n```\n\nand create a `.postcssrc` file:\n\n\n```json\n// .postcssrc\n{\n\t\"modules\": true\n}\n```\n\n3. For [styled-components](https://www.styled-components.com/) you have to use wrapper component which looks like this:\n\n```jsx\nimport React from 'react'\nimport { StyleSheetManager } from 'styled-components'\n\nconst Component = (props) => {\n  const { frameContext } = props\n  return (\n    <StyleSheetManager target={frameContext.document.head}>\n      {props.children}\n    </StyleSheetManager>\n  )\n}\n\nexport default Component\n```\n\n## Adding commands to bundle entry file\n\n`@component` plugin creates an entry file: `.entry.js` in your _docs_ output folder. Sometimes you might want to add something to it. You can do this by passing: `component.entry` option, which is an array of strings.\n\nSo let's say you want to add `babel-polyfill` and 'bulma.css' framework to your bundle. You can do it like this:\n\n```json\n// jsdoc.json\n{\n    \"opts\": {...},\n    \"templates\": {\n        \"better-docs\": {\n            \"name\": \"Sample Documentation\",\n            \"component\": {\n                \"entry\": [\n                    \"import 'babel-polyfill';\",\n                    \"import 'bulma/css/bulma.css';\"\n                ]\n            },\n            \"...\": \"...\",\n        }\n    }\n}\n```\n\n# Customization\n\nFirst of all, let me state that better-docs extends the `default` template. That is why default template parameters are also handled.\n\n[BETA]: You must explicitly set the `search` option of the `default` template to `true` to enable search\n\nTo customize the better-docs pass `options` to `templates['better-docs']`. section in your `jsdoc configuration file`.\n\nExample configuration file with settings for both `default` and `better-docs` templates:\n\n```json\n{\n    \"tags\": {\n        \"allowUnknownTags\": [\"category\"]\n    },\n    \"source\": {\n        \"include\": [\"./src\"],\n        \"includePattern\": \".js$\",\n        \"excludePattern\": \"(node_modules/|docs)\"\n    },\n    \"plugins\": [\n        \"plugins/markdown\",\n        \"jsdoc-mermaid\",\n        \"node_modules/better-docs/category\"\n    ],\n    \"opts\": {\n        \"encoding\": \"utf8\",\n        \"destination\": \"docs/\",\n        \"readme\": \"readme.md\",\n        \"recurse\": true,\n        \"verbose\": true,\n        \"tutorials\": \"./docs-src/tutorials\",\n        \"template\": \"better-docs\"\n    },\n    \"templates\": {\n        \"cleverLinks\": false,\n        \"monospaceLinks\": false,\n        \"search\": true,\n        \"default\": {\n            \"staticFiles\": {\n              \"include\": [\n                  \"./docs-src/statics\"\n              ]\n            }\n        },\n        \"better-docs\": {\n            \"name\": \"Sample Documentation\",\n            \"logo\": \"images/logo.png\",\n            \"title\": \"\", // HTML title\n            \"css\": \"style.css\",\n            \"trackingCode\": \"tracking-code-which-will-go-to-the-HEAD\",\n\t    \"hideGenerator\": false,\n            \"navLinks\": [\n                {\n                    \"label\": \"Github\",\n                    \"href\": \"https://github.com/SoftwareBrothers/admin-bro\"\n                },\n                {\n                    \"label\": \"Example Application\",\n                    \"href\": \"https://admin-bro-example-app-staging.herokuapp.com/admin\"\n                }\n            ]\n        }\n    }\n}\n```\n\n## Extras\n\n### typedef(import(...))\n\nbetter-docs also has one extra plugin for handling typescript'like types imports like (it has to be one-liner):\n\n```\n/** @typedef {import('./some-other-file').ExportedType} ExportedType */\n```\n\nIt simply removes that from the code so JSDoc wont throw an error. In order to use it add this plugin to your plugins section:\n\n```\n  \"plugins\": [\n        \"node_modules/better-docs/typedef-import\"\n    ],\n```\n\n# Setting up for the development\n\nIf you want to change the theme locally follow the steps:\n\n1. Clone the repo to the folder where you have the project:\n\n```\ncd your-project\ngit clone git@github.com:SoftwareBrothers/better-docs.git\n```\n\nor add it as a git submodule:\n\n```\ngit submodule add git@github.com:SoftwareBrothers/better-docs.git\n```\n\n2. Install the packages\n\n```\ncd better-docs\n\nnpm install\n\n# or\n\nyarn\n```\n\n3. Within the better-docs folder run the gulp script. It will regenerate documentation every time you change something.\n\nIt supports following ENV variables:\n\n* `DOCS_COMMAND` - a command in your root repo which you use to generate documentation: i.e. `DOCS_COMMAND='jsdoc -c jsdoc.json'` or `npm run docs` if you have `docs` command defined in `package.json` file\n* `DOCS_OUTPUT` - where your documentation is generated. It should point to the same folder your jsdoc `--destination` conf. But make sure that it is relative to the path where you cloned `better-docs`.\n* `DOCS` - list of folders from your original repo what you want to watch for changes. Separated by comma.\n\n```\ncd better-docs\nDOCS_COMMAND='npm run docs' DOCS=../src/**/*,../config/**/* DOCS_OUTPUT=../docs cd better-docs && gulp\n```\n\nThe script should launch the browser and refresh it whenever you change something in the template or in `DOCS`.\n\n# Setting up the jsdoc in your project\n\nIf you want to see how to setup jsdoc in your project - take a look at these brief tutorials:\n\n- JSDoc - https://www.youtube.com/watch?v=Yl6WARA3IhQ\n- better-docs and Mermaid: https://www.youtube.com/watch?v=UBMYogTzsBk\n\n# License\n\nbetter-docs is Copyright © 2019 SoftwareBrothers.co. It is free software and may be redistributed under the terms specified in the [LICENSE](LICENSE) file - MIT.\n\n# About SoftwareBrothers.co\n\n<img src=\"https://softwarebrothers.co/assets/images/software-brothers-logo-full.svg\" width=240>\n\n\nWe're an open, friendly team that helps clients from all over the world to transform their businesses and create astonishing products.\n\n* We are available for [hire](https://softwarebrothers.co/contact).\n* If you want to work for us - check out the [career page](https://softwarebrothers.co/career).\n","readmeFilename":"README.md","gitHead":"6a201500fd2e9f0a2edfb51af8e6bbd7aedffa99","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","_id":"better-docs@2.7.4-dev.1","_nodeVersion":"18.18.2","_npmVersion":"8.19.4","dist":{"integrity":"sha512-GUCtZIcHk+hRyGVJ45RTzGs0TQXvrkACJHg6tQTY5F0ZqY71Tzg1qKcexWp0K4mr2boiT5Mt0/gkO9IcgI4UuA==","shasum":"91d8b59d664bb5d6bad7684f06895148d487be71","tarball":"https://registry.npmjs.org/better-docs/-/better-docs-2.7.4-dev.1.tgz","fileCount":120,"unpackedSize":846361,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG5E+ROx5tXUDFpLQXqYGgneD+1LSJbT9sWBobLgFPTiAiEAvYwoJ9zoA79B7zayDtsY1YmPxvuwi4M/5HGwmsH79Bg="}]},"_npmUser":{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"},"directories":{},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/better-docs_2.7.4-dev.1_1701981294565_0.13383512164324785"},"_hasShrinkwrap":false}},"time":{"created":"2019-01-19T18:54:28.219Z","1.0.0":"2019-01-19T18:54:28.460Z","modified":"2023-12-07T20:34:55.174Z","1.0.2":"2019-01-22T14:02:23.769Z","1.1.0":"2019-01-29T11:02:11.435Z","1.1.2":"2019-01-29T11:02:25.161Z","1.1.3":"2019-02-01T11:11:40.720Z","1.1.4":"2019-02-04T10:35:45.959Z","1.1.5":"2019-02-25T18:13:26.798Z","1.1.6":"2019-03-28T11:57:58.410Z","1.2.0":"2019-09-03T19:40:08.943Z","1.2.1":"2019-09-03T21:06:55.358Z","1.2.2":"2019-09-03T21:55:11.532Z","1.3.0-beta.1":"2019-09-08T19:02:51.304Z","1.3.0-beta.2":"2019-09-09T09:17:57.898Z","1.3.0":"2019-09-13T17:54:42.270Z","1.3.1":"2019-09-25T11:19:03.529Z","1.3.2":"2019-09-25T12:16:10.024Z","1.3.3":"2019-09-25T12:44:31.632Z","1.4.0":"2019-11-03T10:16:44.305Z","1.4.1":"2019-11-03T11:02:17.031Z","1.4.2":"2019-11-03T11:07:39.653Z","1.4.3":"2019-11-11T21:32:25.670Z","1.4.5":"2019-11-16T16:41:10.570Z","1.4.4":"2019-11-16T16:42:09.093Z","1.4.6":"2019-11-17T10:37:30.245Z","1.4.7":"2019-11-18T08:00:48.396Z","1.4.8":"2020-04-28T20:57:15.374Z","1.4.10":"2020-04-28T21:12:26.523Z","1.4.11":"2020-04-28T21:14:13.626Z","1.4.12":"2020-04-28T21:24:44.028Z","1.4.13":"2020-04-28T21:26:28.940Z","2.0.0":"2020-04-28T22:58:44.647Z","2.0.1":"2020-05-03T17:04:27.593Z","2.0.2":"2020-07-02T11:53:56.227Z","2.0.3":"2020-07-02T11:59:57.259Z","2.1.0":"2020-07-02T12:06:56.216Z","2.2.0":"2020-07-02T12:56:17.641Z","2.3.0":"2020-07-02T17:39:35.450Z","2.3.1":"2020-08-24T14:33:07.828Z","2.3.2":"2020-08-31T16:27:54.091Z","2.4.0-beta.1":"2020-09-07T07:28:20.517Z","2.4.0-beta.2":"2020-09-07T08:16:01.753Z","2.4.0-beta.3":"2020-09-07T08:40:03.363Z","2.4.0-beta.4":"2020-09-07T08:52:14.194Z","2.4.0-beta.5":"2020-09-07T09:22:32.066Z","2.4.0-beta.6":"2020-09-21T07:46:28.166Z","2.4.0-beta.7":"2020-09-21T09:55:06.652Z","2.4.0-beta.8":"2020-09-23T17:21:55.618Z","2.4.0-beta.9":"2020-09-30T06:12:52.903Z","2.4.0":"2022-01-18T12:44:47.021Z","2.4.1":"2022-01-18T12:51:43.243Z","2.5.0":"2022-01-20T08:22:53.953Z","2.6.0":"2022-01-20T09:24:55.764Z","2.6.1":"2022-01-21T07:46:58.720Z","2.6.2":"2022-01-21T10:12:36.851Z","2.7.0":"2022-01-21T10:20:55.373Z","2.7.1":"2022-01-21T10:26:11.484Z","2.7.2":"2022-02-10T09:27:55.453Z","2.7.3":"2023-12-07T17:21:16.995Z","2.7.4-dev.1":"2023-12-07T20:34:55.004Z"},"maintainers":[{"name":"hotcto","email":"wojciech.g.krysiak@gmail.com"}],"description":"JSdoc theme","author":{"name":"Wojciech Krysiak"},"license":"MIT","readme":"","readmeFilename":"","repository":{"type":"git","url":"git+https://github.com/SoftwareBrothers/better-docs.git"},"homepage":"https://github.com/SoftwareBrothers/better-docs#readme","bugs":{"url":"https://github.com/SoftwareBrothers/better-docs/issues"},"users":{"flumpus-dev":true}}